workspai 0.49.0 → 0.51.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.
Files changed (257) hide show
  1. package/README.md +123 -434
  2. package/contracts/analyze-last-run.v1.json +2 -2
  3. package/contracts/artifact-remediation-plan.v1.json +3 -9
  4. package/contracts/autopilot-release.v1.json +2 -0
  5. package/contracts/bootstrap-compliance.v1.json +2 -1
  6. package/contracts/cli-log-event.v1.json +1 -1
  7. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +80 -0
  8. package/contracts/compatibility-matrix.v1.json +2 -0
  9. package/contracts/create-planner-capabilities.v1.json +153 -32
  10. package/contracts/doctor-project-evidence.v1.json +191 -11
  11. package/contracts/doctor-project-scan.v2.json +2 -0
  12. package/contracts/doctor-remediation-plan.v1.json +2 -2
  13. package/contracts/doctor-remediation-plan.v2.json +2 -2
  14. package/contracts/doctor-workspace-cache.v2.json +2 -0
  15. package/contracts/doctor-workspace-evidence.v1.json +189 -10
  16. package/contracts/extension-cli-compatibility.v1.json +10 -1
  17. package/contracts/infra-plan.v1.json +2 -0
  18. package/contracts/ingestion-plan.v1.json +85 -0
  19. package/contracts/ingestion-result.v1.json +59 -0
  20. package/contracts/mirror-ops.v1.json +2 -1
  21. package/contracts/pipeline-last-run.v1.json +2 -2
  22. package/contracts/private-product-manifest.v1.json +2 -0
  23. package/contracts/product-factory-plan.v1.json +2 -0
  24. package/contracts/project-archive.v1.json +2 -0
  25. package/contracts/project-entry-capability.v1.json +2 -3
  26. package/contracts/project-test-coverage.v1.json +189 -0
  27. package/contracts/project-workspace-link.v1.json +66 -0
  28. package/contracts/project-workspace-resolution.v1.json +28 -0
  29. package/contracts/published-contract-catalog.v1.json +45 -0
  30. package/contracts/release-readiness.v1.json +2 -2
  31. package/contracts/runtime-command-surface.v1.json +1456 -139
  32. package/contracts/transparency-evidence.v1.json +2 -1
  33. package/contracts/workspace-archive-capabilities.v1.json +11 -5
  34. package/contracts/workspace-archive-manifest.v1.json +236 -0
  35. package/contracts/workspace-archive-operation-result.v1.json +236 -0
  36. package/contracts/workspace-contract.v1.json +1 -1
  37. package/contracts/workspace-intelligence/agent-action-outcome.v1.json +2 -2
  38. package/contracts/workspace-intelligence/agent-customization-pack-report.v1.json +1 -1
  39. package/contracts/workspace-intelligence/agent-hooks.v1.json +2 -0
  40. package/contracts/workspace-intelligence/agent-reports-index.v1.json +1 -1
  41. package/contracts/workspace-intelligence/blocker-resolution.v1.json +3 -9
  42. package/contracts/workspace-intelligence/doctor-fix-result.v1.json +2 -2
  43. package/contracts/workspace-intelligence/doctor-graph-diagnosis.v1.json +208 -0
  44. package/contracts/workspace-intelligence/fact-freshness.v1.json +2 -2
  45. package/contracts/workspace-intelligence/mcp-design.v1.json +2 -0
  46. package/contracts/workspace-intelligence/model-usage-event.v1.json +1 -1
  47. package/contracts/workspace-intelligence/project-context-agent.v1.json +360 -0
  48. package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +1 -1
  49. package/contracts/workspace-intelligence/workspace-context.v1.json +1 -1
  50. package/contracts/workspace-intelligence/workspace-contract-verify.v1.json +2 -2
  51. package/contracts/workspace-intelligence/workspace-dependency-graph.v1.json +1 -1
  52. package/contracts/workspace-intelligence/workspace-explain.v1.json +1 -1
  53. package/contracts/workspace-intelligence/workspace-graph-stream.v1.json +1 -1
  54. package/contracts/workspace-intelligence/workspace-graph-token-efficiency.v1.json +1 -1
  55. package/contracts/workspace-intelligence/workspace-impact.v1.json +1 -1
  56. package/contracts/workspace-intelligence/workspace-intelligence-evaluation-comparison.v1.json +1 -1
  57. package/contracts/workspace-intelligence/workspace-intelligence-evaluation.v1.json +1 -1
  58. package/contracts/workspace-intelligence/workspace-intelligence-history.v1.json +1 -1
  59. package/contracts/workspace-intelligence/workspace-intelligence-run.v1.json +2 -2
  60. package/contracts/workspace-intelligence/workspace-knowledge-graph-change-overlay.v1.json +1 -1
  61. package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +48 -5
  62. package/contracts/workspace-intelligence/workspace-knowledge-search.v1.json +1 -1
  63. package/contracts/workspace-intelligence/workspace-model-diff.v1.json +1 -1
  64. package/contracts/workspace-intelligence/workspace-model-snapshot.v1.json +1 -1
  65. package/contracts/workspace-intelligence/workspace-model.v1.json +97 -5
  66. package/contracts/workspace-intelligence/workspace-operational-skill.v1.json +1 -1
  67. package/contracts/workspace-intelligence/workspace-skills-index.v1.json +1 -1
  68. package/contracts/workspace-intelligence/workspace-verify.v1.json +1 -1
  69. package/contracts/workspace-intelligence-architecture.v1.json +33 -7
  70. package/contracts/workspace-intelligence-chain.v1.json +1 -1
  71. package/contracts/workspace-list.v1.json +2 -0
  72. package/contracts/workspace-model-cache.v1.json +2 -0
  73. package/contracts/workspace-registry.v1.json +1 -1
  74. package/contracts/workspace-run-last.v1.json +1 -1
  75. package/contracts/workspace-share-bundle.v1.json +2 -1
  76. package/contracts/workspace-snapshot.v1.json +2 -0
  77. package/contracts/workspace-snapshot.v2.json +2 -0
  78. package/contracts/workspace-sync.v1.json +2 -0
  79. package/contracts/workspace-watch-event.v1.json +2 -0
  80. package/dist/analyze-4H33PAUB.js +1 -0
  81. package/dist/{artifact-remediation-plan-SPOUHMK5.js → artifact-remediation-plan-TQ6KTTXD.js} +1 -1
  82. package/dist/autopilot-release-BHZYM5KX.js +1 -0
  83. package/dist/chunk-2D4UOYOJ.js +1 -0
  84. package/dist/chunk-2OIBHUVH.js +1 -0
  85. package/dist/chunk-3D2PAIRH.js +3 -0
  86. package/dist/chunk-3GRKUP5W.js +33 -0
  87. package/dist/{managed-agent-markers-AXUM75OE.js → chunk-3RBUSW7H.js} +1 -1
  88. package/dist/chunk-4WJC5QCD.js +2 -0
  89. package/dist/chunk-6HLPTJZ3.js +13 -0
  90. package/dist/{chunk-CV5HKU4P.js → chunk-7T4TSV5C.js} +1 -1
  91. package/dist/chunk-AFIFZTOY.js +2 -0
  92. package/dist/{chunk-BMWFQXGW.js → chunk-AHLMIL2T.js} +1 -1
  93. package/dist/chunk-AL237TSJ.js +7 -0
  94. package/dist/chunk-BBGNDMRU.js +2 -0
  95. package/dist/chunk-BG4FWJJ3.js +1 -0
  96. package/dist/{chunk-VU7NZHPM.js → chunk-BHYTI3RH.js} +1 -1
  97. package/dist/chunk-BYTFXQ6G.js +1 -0
  98. package/dist/chunk-CZC5P2MF.js +1 -0
  99. package/dist/chunk-DLM6C7FU.js +8 -0
  100. package/dist/{chunk-CRHYBQI3.js → chunk-DQ3PI7EP.js} +1 -1
  101. package/dist/chunk-E3CT7TYT.js +1 -0
  102. package/dist/chunk-EPVFKJF4.js +1 -0
  103. package/dist/chunk-EWZZUQBR.js +1 -0
  104. package/dist/chunk-FKWB66NQ.js +4 -0
  105. package/dist/{chunk-BGPXQQNY.js → chunk-FZ76CF2W.js} +1 -1
  106. package/dist/chunk-GBAO4GSW.js +2 -0
  107. package/dist/chunk-GQRWRHSR.js +86 -0
  108. package/dist/{chunk-ESLPI3XZ.js → chunk-HE4PUMU4.js} +1 -1
  109. package/dist/chunk-HMGPELXS.js +1 -0
  110. package/dist/chunk-HSZCINFX.js +2 -0
  111. package/dist/{chunk-3VFA7D5T.js → chunk-IND3TUVU.js} +1 -1
  112. package/dist/{chunk-NHN4QXPP.js → chunk-KVSYBHUR.js} +1 -1
  113. package/dist/chunk-L2E2Z4OE.js +5 -0
  114. package/dist/chunk-MAF3LLGK.js +691 -0
  115. package/dist/chunk-MOSXTVPU.js +1 -0
  116. package/dist/chunk-MVLIONQD.js +1 -0
  117. package/dist/chunk-PS5F4DCT.js +1 -0
  118. package/dist/{chunk-K4X3DM7R.js → chunk-Q6TKQVKQ.js} +1 -1
  119. package/dist/chunk-RJIYCDVC.js +1 -0
  120. package/dist/chunk-RVQLMTTI.js +2 -0
  121. package/dist/chunk-SHXJ2GDR.js +75 -0
  122. package/dist/chunk-TDTCMZK7.js +10 -0
  123. package/dist/chunk-TROHVI2V.js +2 -0
  124. package/dist/chunk-U2LR73E2.js +1 -0
  125. package/dist/chunk-U2QL5733.js +36 -0
  126. package/dist/{chunk-TIE2XMGH.js → chunk-VCW5HSPC.js} +12 -12
  127. package/dist/chunk-VRW6KXNK.js +6 -0
  128. package/dist/chunk-VU2BKKMB.js +1 -0
  129. package/dist/chunk-WJVB6SSD.js +16 -0
  130. package/dist/{chunk-32OJDBIG.js → chunk-XBM2P45G.js} +2 -2
  131. package/dist/chunk-Y5YAP4F3.js +2 -0
  132. package/dist/{create-S64IWHAP.js → create-SBFBFXKN.js} +1 -1
  133. package/dist/{demo-kit-DZ7TPG7K.js → demo-kit-KHH63TNA.js} +2 -2
  134. package/dist/{doctor-4NNUDNGZ.js → doctor-OPCMTBJB.js} +1 -1
  135. package/dist/{dotnet-webapi-clean-A6MVDYXX.js → dotnet-webapi-clean-VXEF4SHM.js} +5 -5
  136. package/dist/{gofiber-standard-I5YPQG5V.js → gofiber-standard-AQGSC7ON.js} +3 -3
  137. package/dist/{gogin-standard-VY2L4QT5.js → gogin-standard-7DU3OCBX.js} +3 -3
  138. package/dist/index.d.ts +38 -6
  139. package/dist/index.js +267 -355
  140. package/dist/managed-agent-markers-COE5DJ3W.js +1 -0
  141. package/dist/pipeline-7BUXAFS2.js +5 -0
  142. package/dist/platform-capabilities-PR6YL4KC.js +1 -0
  143. package/dist/project-intelligence-lens-BKKVPCLC.js +1 -0
  144. package/dist/project-test-coverage-BALEHHTT.js +1 -0
  145. package/dist/{pythonRapidkitExec-CVCIK225.js → pythonRapidkitExec-YR7P5LWG.js} +1 -1
  146. package/dist/rust-axum-4HXDICIB.js +140 -0
  147. package/dist/{springboot-standard-55XKCBIZ.js → springboot-standard-EK6GYN5T.js} +7 -7
  148. package/dist/workspace-U6ZQLELX.js +1 -0
  149. package/dist/{workspace-agent-sync-662QHXGF.js → workspace-agent-sync-L4SY7B4Q.js} +1 -1
  150. package/dist/workspace-archive-4JNT4S7N.js +1 -0
  151. package/dist/workspace-context-KOBSLZTI.js +1 -0
  152. package/dist/workspace-contract-SOD3OOVF.js +1 -0
  153. package/dist/workspace-explain-2CTMW2YW.js +1 -0
  154. package/dist/workspace-explain-contract-H7O26QJU.js +1 -0
  155. package/dist/{workspace-feedback-SUVH2LUJ.js → workspace-feedback-ZZ4HPW2T.js} +1 -1
  156. package/dist/{workspace-foundation-WPLD7OEO.js → workspace-foundation-PUIYBQUF.js} +1 -1
  157. package/dist/workspace-graph-stream-BLKIC7VN.js +1 -0
  158. package/dist/workspace-graph-token-efficiency-5FNH4JZ5.js +1 -0
  159. package/dist/{workspace-history-BANOJRQ2.js → workspace-history-SPKNRHIX.js} +1 -1
  160. package/dist/workspace-intelligence-I3ABOH2F.js +1 -0
  161. package/dist/{workspace-intelligence-evaluation-IPH7M3WV.js → workspace-intelligence-evaluation-7CABG5Y6.js} +1 -1
  162. package/dist/workspace-intelligence-runner-Q2XSR3ZL.js +1 -0
  163. package/dist/workspace-intelligence-runtime-registry-ZZ3GRAL2.js +1 -0
  164. package/dist/{workspace-knowledge-graph-ARDC6HHG.js → workspace-knowledge-graph-5MKEI4Z5.js} +1 -1
  165. package/dist/{workspace-knowledge-graph-query-VOSPPH4W.js → workspace-knowledge-graph-query-EKHIE3E2.js} +1 -1
  166. package/dist/{workspace-marker-SMBC3Z2Q.js → workspace-marker-7NHMDIRL.js} +1 -1
  167. package/dist/workspace-mcp-serve-ETNUA72W.js +3 -0
  168. package/dist/workspace-model-HHA37SNH.js +1 -0
  169. package/dist/workspace-model-hash-ZXYPIGCW.js +1 -0
  170. package/dist/workspace-onboarding-ELHZABJE.js +1 -0
  171. package/dist/{workspace-python-engine-state-2MLKJYQG.js → workspace-python-engine-state-J4QKW55K.js} +1 -1
  172. package/dist/workspace-readme-HGGZ4AZB.js +77 -0
  173. package/dist/{workspace-registry-summary-ORDK7A36.js → workspace-registry-summary-D2QM5JF6.js} +1 -1
  174. package/dist/workspace-run-DAAZBCN7.js +1 -0
  175. package/dist/{workspace-verify-EBVL7FWT.js → workspace-verify-4WJTLXRA.js} +1 -1
  176. package/dist/workspace-watch-2PIFTQ6B.js +1 -0
  177. package/docs/GLOSSARY.md +17 -16
  178. package/docs/OPEN_SOURCE_USER_SCENARIOS.md +8 -3
  179. package/docs/README.md +6 -3
  180. package/docs/README_CONTENT_CONTRACT.md +98 -115
  181. package/docs/ci-workflows.md +13 -4
  182. package/docs/commands-reference.md +43 -10
  183. package/docs/contracts/ARTIFACT_CATALOG.md +65 -26
  184. package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +2 -0
  185. package/docs/contracts/RUNTIME_SUPPORT_MATRIX.md +3 -3
  186. package/docs/contracts/rapidkit-cli-contracts.json +2 -2
  187. package/docs/create-planner-capabilities.md +36 -5
  188. package/docs/creating-workspaces-and-projects.md +59 -3
  189. package/docs/doctor-command.md +118 -11
  190. package/docs/from-code-to-shared-understanding.md +4 -1
  191. package/docs/graph-benchmark-methodology.md +2 -2
  192. package/docs/workspace-intelligence-evaluation.md +5 -0
  193. package/docs/workspace-knowledge-graph.md +141 -7
  194. package/docs/workspace-operations.md +149 -10
  195. package/package.json +7 -4
  196. package/scripts/enterprise-package-smoke.mjs +24 -1
  197. package/templates/kits/fastapi-ddd/README.md.j2 +1 -1
  198. package/templates/kits/fastapi-standard/README.md.j2 +1 -1
  199. package/templates/kits/nestjs-standard/Dockerfile.j2 +1 -1
  200. package/templates/kits/nestjs-standard/README.md.j2 +1 -1
  201. package/templates/kits/nestjs-standard/package.json.j2 +11 -2
  202. package/dist/analyze-EEEU3MIF.js +0 -1
  203. package/dist/autopilot-release-R4XRTWEM.js +0 -1
  204. package/dist/chunk-22DT744Z.js +0 -1
  205. package/dist/chunk-37CVKXBD.js +0 -1
  206. package/dist/chunk-3NU32T4A.js +0 -2
  207. package/dist/chunk-3ZK2GU7C.js +0 -1
  208. package/dist/chunk-4HDYADHT.js +0 -13
  209. package/dist/chunk-4KUIFXHM.js +0 -5
  210. package/dist/chunk-52PBRX7F.js +0 -1
  211. package/dist/chunk-54EP5CEV.js +0 -8
  212. package/dist/chunk-5XATWNME.js +0 -1
  213. package/dist/chunk-7YHK5NM3.js +0 -2
  214. package/dist/chunk-AFL3ACCR.js +0 -2
  215. package/dist/chunk-BFLJ2R4D.js +0 -80
  216. package/dist/chunk-E2KJ5QWY.js +0 -4
  217. package/dist/chunk-EKZLUMCS.js +0 -933
  218. package/dist/chunk-EYJ2CQSK.js +0 -1
  219. package/dist/chunk-FTY7GGXJ.js +0 -33
  220. package/dist/chunk-FXQJX34Z.js +0 -1
  221. package/dist/chunk-GSWPGELT.js +0 -2
  222. package/dist/chunk-GZTYAEWX.js +0 -1
  223. package/dist/chunk-HDXNIN4N.js +0 -1
  224. package/dist/chunk-HZDXO65G.js +0 -36
  225. package/dist/chunk-J5ENLXDF.js +0 -1
  226. package/dist/chunk-KB44JP4M.js +0 -2
  227. package/dist/chunk-LHOZXC2M.js +0 -2
  228. package/dist/chunk-MER6ZBN2.js +0 -13
  229. package/dist/chunk-NAJCUQ4X.js +0 -2
  230. package/dist/chunk-OA537ZQ5.js +0 -1
  231. package/dist/chunk-OW42TZFB.js +0 -1
  232. package/dist/chunk-P3D5YQB2.js +0 -1
  233. package/dist/chunk-PHXQR6PX.js +0 -2
  234. package/dist/chunk-PRTR2DQ2.js +0 -1
  235. package/dist/chunk-RHQW3DTP.js +0 -1
  236. package/dist/chunk-T4YR4RAI.js +0 -2
  237. package/dist/chunk-WDKNMTJQ.js +0 -1
  238. package/dist/chunk-Y45WZR5N.js +0 -5
  239. package/dist/chunk-YJZOMRAS.js +0 -1
  240. package/dist/pipeline-LHTPE3DR.js +0 -5
  241. package/dist/platform-capabilities-2B4QMZXE.js +0 -1
  242. package/dist/workspace-PJPRBUMQ.js +0 -1
  243. package/dist/workspace-archive-P76EDIUG.js +0 -10
  244. package/dist/workspace-context-23YYCUCP.js +0 -1
  245. package/dist/workspace-contract-TU2I7GC2.js +0 -1
  246. package/dist/workspace-dependency-graph-BP4EXYQ5.js +0 -1
  247. package/dist/workspace-explain-MWUEN643.js +0 -1
  248. package/dist/workspace-explain-contract-ZPI3JXJU.js +0 -1
  249. package/dist/workspace-graph-stream-KAGGQPJT.js +0 -1
  250. package/dist/workspace-graph-token-efficiency-CFGFCJ5V.js +0 -1
  251. package/dist/workspace-intelligence-MFJE7W67.js +0 -1
  252. package/dist/workspace-intelligence-runner-OTYTHV6B.js +0 -1
  253. package/dist/workspace-mcp-serve-EZR6O76D.js +0 -3
  254. package/dist/workspace-model-7OU2M3LE.js +0 -1
  255. package/dist/workspace-model-hash-MHXK5MEI.js +0 -1
  256. package/dist/workspace-run-QND2SIYA.js +0 -1
  257. package/dist/workspace-watch-7HWGA5TF.js +0 -1
@@ -91,6 +91,12 @@ The response is intentionally bounded. `totalMatches` tells the consumer more
91
91
  results exist, `truncated` prevents silent omission, and every returned claim can
92
92
  be traced through `proofIds`.
93
93
 
94
+ Search remains deterministic, local, and offline. Natural-language filler words
95
+ are removed before ranking, and the remaining terms are weighted by how rare
96
+ they are in the current graph. Exact labels and identities still win. This keeps
97
+ a common word such as `check` from outranking a rarer term such as `user` merely
98
+ because it appears in more files. No embedding service or model call is involved.
99
+
94
100
  ## Pick the command by question
95
101
 
96
102
  | You want to know… | Use |
@@ -123,6 +129,31 @@ provider, source artifact, optional pointer/line, content hash, freshness,
123
129
  derivation, trust, and confidence. Secret values and machine-local absolute
124
130
  paths are excluded from the portable graph contract.
125
131
 
132
+ ## Read graph quality correctly
133
+
134
+ Provider execution and graph completeness are separate signals:
135
+
136
+ | Provider status | Meaning |
137
+ | --------------- | --------------------------------------------------------------------------- |
138
+ | `passed` | A matching source surface was found and graph evidence was produced. |
139
+ | `partial` | The provider found applicable input but produced incomplete or no evidence. |
140
+ | `skipped` | No applicable source surface was present in this workspace. |
141
+ | `failed` | The provider could not complete its bounded scan. |
142
+
143
+ `quality.providerSuccessRatio` is an execution-health ratio, not a completeness
144
+ claim. A skipped provider is healthy but not applicable. Applicable providers
145
+ that emit no evidence become `partial` and add an explicit unknown diagnostic,
146
+ which contributes to `quality.unknownCount`. Bounded-scan limits and unresolved
147
+ source relationships also contribute unknowns instead of being presented as
148
+ complete coverage. Binding coverage remains the dimension-specific source for
149
+ API implementation, tests, deployment, and ownership gaps; its unknowns are
150
+ included in the aggregate count.
151
+
152
+ Profiles govern workspace policy and verification expectations; they do not hide
153
+ source providers. Running the same unchanged workspace with `minimal` and
154
+ `polyglot` can therefore produce identical graph content. Changing a profile
155
+ does update the canonical workspace manifest and contract identity.
156
+
126
157
  ## Model first, graph second
127
158
 
128
159
  The canonical direction is one-way:
@@ -138,13 +169,87 @@ CLI queries · Context · MCP · Agents · IDEs · CI
138
169
  ```
139
170
 
140
171
  The graph does not rewrite or replace the canonical Workspace Model. It is a
141
- derived representation bound to an exact model revision by SHA-256. Context and
142
- MCP consumers reject a graph whose source hash no longer matches the model.
172
+ derived representation bound to an exact model revision by the SHA-256 hash of
173
+ the model's stable structural projection. Volatile timestamps, run correlation,
174
+ live evidence references, and freshness fields are intentionally excluded from
175
+ that structural identity. Context, Doctor, MCP, and graph-stream consumers
176
+ reject a graph whose source binding no longer matches the current model.
177
+
178
+ ### Model and graph relationship
179
+
180
+ The current integrated CLI follows this order:
143
181
 
144
- The model also contains a smaller project dependency graph. That projection is
145
- used for impact, blast radius, verify, explain, watch, and affected fleet runs.
146
- The richer Knowledge Graph is used for proof-backed retrieval and cross-domain
147
- understanding.
182
+ ```text
183
+ workspace files + registered projects + contracts + selected evidence
184
+ |
185
+ v
186
+ canonical Workspace Model
187
+ | |
188
+ | +-- compact project dependency topology
189
+ |
190
+ v
191
+ provider scan + facts/proofs + identity reconciliation
192
+ |
193
+ v
194
+ Workspace Knowledge Graph
195
+ ```
196
+
197
+ The model owns the canonical workspace boundary: project identity, runtime and
198
+ framework observations, policies, contract state, evidence references, and the
199
+ compact project topology used by the intelligence loop. The Knowledge Graph
200
+ receives that project inventory and topology, then enriches it from bounded
201
+ source providers. It can add files, symbols, packages, APIs, infrastructure,
202
+ tests, owners, decisions, and proof-carrying relations, but it cannot mutate the
203
+ model that authorized the build.
204
+
205
+ The canonical project inventory reconciles filesystem discovery, imported and
206
+ adopted registries, and `workspace.contract.json` declarations. A project that
207
+ is still declared by the contract but missing on disk is preserved in the
208
+ model and reported as `project.path.missing`; it is never silently removed from
209
+ the graph boundary. A persisted Knowledge Graph is accepted only when its
210
+ workspace identity and project topology also match that model.
211
+
212
+ An adopted monorepo remains one canonical project unless its internal projects
213
+ are separately registered, discovered inside the workspace boundary, or
214
+ declared by contract. The model still records bounded nested runtime manifests
215
+ in `project.runtimeCandidates` and aggregates them into
216
+ `workspace.identity.runtimeFamilies`. Graph providers can then discover the
217
+ monorepo's internal services, contracts, delivery surfaces, and proofs without
218
+ pretending that the primary runtime describes the whole repository.
219
+
220
+ The two artifacts are published under one workspace lock using a
221
+ rollback-capable artifact transaction. Each file replacement is atomic; if any
222
+ write fails, Workspai restores both preimages. `graph.source.kind` is fixed to
223
+ `workspace-model`, `graph.source.artifact` is fixed to
224
+ `.workspai/reports/workspace-model.json`, and `graph.source.hash` contains the
225
+ stable structural hash of the persisted model. A current-state consumer must
226
+ reject the graph when that binding no longer matches `workspace-model.json`.
227
+
228
+ This is therefore not a circular source-of-truth relationship. In the current
229
+ CLI, the direction is **Model → Knowledge Graph**. Providers may use the same
230
+ workspace sources that informed the model, but their output enriches the
231
+ derived graph; it does not flow back into the model during that run. A future
232
+ fact-first package may make normalized facts the shared input to both
233
+ representations, but that is not the shipped contract today.
234
+
235
+ The model also contains a smaller project dependency graph under the canonical
236
+ `projectTopology` field. That projection is used for impact, blast radius,
237
+ verify, explain, watch, and affected fleet runs. The richer Knowledge Graph is
238
+ used for proof-backed retrieval and cross-domain understanding. The deprecated
239
+ `graph` field is emitted only as a v1 compatibility alias and must remain
240
+ structurally identical to `projectTopology`; new consumers must not depend on
241
+ the alias.
242
+
243
+ These rules are machine-owned, not Markdown conventions:
244
+
245
+ - `workspace-intelligence-architecture.v1.json` declares the one-way direction,
246
+ artifact authority, mutation rule, publication rule, and stale-consumer rule;
247
+ - `workspace-knowledge-graph.v1.json` permits only the canonical model source
248
+ kind and artifact path;
249
+ - `workspace-intelligence-chain.v1.json` requires the Model stage to produce
250
+ both artifacts;
251
+ - runtime source-binding guards enforce the structural hash before persisted
252
+ graph consumption.
148
253
 
149
254
  ## Sources and providers
150
255
 
@@ -161,9 +266,32 @@ deduplication, typed relations, reconciliation, quality metrics, diagnostics,
161
266
  and deterministic ordering. Regex-backed source observations are explicitly
162
267
  marked as observed/medium-confidence; authored contracts remain authoritative.
163
268
 
269
+ Local source imports are resolved to indexed file entities when the target can
270
+ be proven. External packages remain module entities, while unresolved relative
271
+ imports are labelled `unresolved-local` and produce a diagnostic. This prevents
272
+ an unknown local path from being silently presented as a third-party
273
+ dependency.
274
+
275
+ ### Binding quality, not just graph size
276
+
277
+ Entity and relation counts do not tell you whether a graph can answer useful
278
+ engineering questions. `graph.quality.bindingCoverage` therefore reports four
279
+ independent dimensions:
280
+
281
+ - authored or observed endpoints connected to implementation evidence;
282
+ - registered projects connected to test evidence;
283
+ - registered projects connected to deployment evidence;
284
+ - registered projects connected to ownership evidence.
285
+
286
+ Each dimension reports eligible, bound, and unknown counts plus a ratio. A
287
+ `null` ratio means the dimension was not applicable; zero means applicable
288
+ surfaces were found but none were bound. Consumers must not turn either state
289
+ into a false “complete” claim.
290
+
164
291
  ## Outputs and consumers
165
292
 
166
- `workspace model --write` publishes these two artifacts atomically:
293
+ `workspace model --write` publishes these two artifacts as one locked,
294
+ rollback-capable artifact set:
167
295
 
168
296
  ```text
169
297
  .workspai/reports/workspace-model.json
@@ -173,6 +301,12 @@ marked as observed/medium-confidence; authored contracts remain authoritative.
173
301
  The Knowledge Graph is consumed by:
174
302
 
175
303
  - `workspace graph search|entities|evidence|path|overlay`;
304
+ - `doctor workspace|project`, which maps unresolved probes to structural root
305
+ candidates, reachable affected surfaces, proof paths, and graph-connected
306
+ test/pipeline verification targets. When a runtime audit names affected
307
+ dependencies, Doctor binds those subjects to exact package/module entities
308
+ instead of selecting an arbitrary project package. Names that cannot be
309
+ resolved remain explicit unknowns;
176
310
  - `workspace context`, which validates the model hash and publishes graph
177
311
  availability and query commands;
178
312
  - `workspace agent-sync`, which places it in the evidence index and generated
@@ -6,12 +6,23 @@ operation changes before you run it.
6
6
 
7
7
  Command syntax: [commands-reference.md](./commands-reference.md).
8
8
 
9
- ## Import and adoption
9
+ ## Choose the operation by intent
10
10
 
11
- Use `import` to copy or clone an existing project into a Workspai workspace.
12
- Use `adopt` when the project must stay where it already lives but should become
13
- visible to Workspai. In both cases, the project becomes part of the shared
14
- system map, checks, and AI context.
11
+ Workspai keeps project onboarding and workspace portability separate. Choose
12
+ the operation by what should happen to the source:
13
+
14
+ | Resource | Source | Intent | Command | Source moved or copied? | Registered? |
15
+ | --------- | ---------------- | ---------------------------- | ---------------------------- | ----------------------- | ----------- |
16
+ | Project | Local folder | Keep the project where it is | `workspai adopt` | No | Yes |
17
+ | Project | Local folder | Copy it into a workspace | `workspai import` | Copied | Yes |
18
+ | Project | Git URL | Clone it into a workspace | `workspai import --git` | Cloned | Yes |
19
+ | Workspace | Existing folder | Use it where it is | `workspai workspace connect` | No | Yes |
20
+ | Workspace | Portable archive | Restore and start using it | `workspai workspace import` | Materialized | Yes |
21
+ | Workspace | Portable archive | Extract files only | `workspai workspace hydrate` | Materialized | No |
22
+
23
+ All registered routes reconcile the canonical registry, workspace contract,
24
+ and project entry surfaces. `hydrate` deliberately stops after safe extraction
25
+ so automation can inspect the materialized files before registration.
15
26
 
16
27
  RapidKit Core module commands remain available only when existing project
17
28
  metadata identifies a kit that supports modules.
@@ -22,6 +33,8 @@ npx workspai import https://github.com/acme/orders-api.git --git
22
33
  npx workspai import ../orders-api --workspace ./my-workspace --name orders-api --json
23
34
  npx workspai adopt ../marketing-web --workspace ./my-workspace
24
35
  npx workspai adopt --json
36
+ npx workspai workspace connect ../existing-workspace --json
37
+ npx workspai workspace import team.workspai-archive.zip --output ./team --json
25
38
  ```
26
39
 
27
40
  ### Import behavior
@@ -29,8 +42,9 @@ npx workspai adopt --json
29
42
  - Local folders are copied; git sources are cloned with shallow history.
30
43
  - Outside any workspace (no `--workspace`), Workspai creates or reuses the managed `workspai` workspace. New defaults use `~/.workspai/workspaces/workspai`; valid legacy candidates under `~/rapidkit/workspaces/workspai` and `~/Workspai/rapidkits/workspai` can still be reused.
31
44
  - Existing workspaces under legacy managed roots remain registered after upgrade.
32
- - CLI prints the exact next `cd ...` step. JSON mode returns the same value as
33
- `suggestedCdCommand`.
45
+ - Workspai writes a validated machine-local workspace binding into the
46
+ imported project. Workspace commands can then be launched from that project
47
+ without changing directories.
34
48
  - Failed workspace sync rolls back imported files and registry entries.
35
49
 
36
50
  ### Adopt behavior
@@ -39,14 +53,110 @@ npx workspai adopt --json
39
53
  - Default workspace resolution matches import, including canonical creation and valid legacy managed-default reuse.
40
54
  - Writes `.workspai/project.json`, `.workspai/adopt.json`, and `.workspai/adopt-readiness.json`.
41
55
  - Registry and contract sync include adopted projects for `workspace model`, `workspace context`, Dashboard, and agents.
56
+ - Managed grounding writes a portable project lens, project grounding, and a
57
+ bounded managed section in `AGENTS.md`. User-authored `AGENTS.md` content is
58
+ preserved.
42
59
  - `--dry-run --json` previews detection without writing metadata.
43
60
 
61
+ ### Existing workspace behavior
62
+
63
+ - `workspace connect` registers a valid local Workspai workspace in place. It
64
+ does not copy its projects.
65
+ - `workspace import` verifies an archive, materializes it atomically, removes
66
+ machine-local bindings from the source machine, registers the workspace, and
67
+ reconciles its portable contract snapshot and project entry links.
68
+ - Archive import never silently overwrites an explicit `--output` destination.
69
+ - External adopted projects are not copied into an archive. The manifest keeps
70
+ only their portable identity and reports that they must be relinked.
71
+ - `workspace hydrate` is the lower-level extraction primitive. Use it when a
72
+ deployment or migration process—not Workspai—owns registration.
73
+
74
+ Every registered onboarding route emits the same versioned ingestion plan in
75
+ JSON. The plan states the resource, source kind, materialization mode,
76
+ ownership, registration intent, destination, and grounding policy. Consumers
77
+ should use that contract instead of inferring behavior from command names.
78
+ `workspace hydrate` remains an unregistered archive primitive and emits the
79
+ versioned archive operation result instead.
80
+
81
+ ### Automatic consumer sync
82
+
83
+ Workspace creation publishes the initial contract, canonical model, Knowledge
84
+ Graph, structural baseline, context, report index, profile-aware `README.md`,
85
+ `AGENTS.md`, operational skills, and supported IDE/agent surfaces—even before
86
+ the first project exists. The README's Workspai-managed section shows the
87
+ current profile, project count, canonical intelligence loop, and consumer entry
88
+ points while preserving user-authored content. Successful project creation,
89
+ adoption, import, workspace connection, and workspace import refresh those same
90
+ projections in the background. The structural baseline is created once and
91
+ preserved; current model, graph, diff, impact, context, README, and project
92
+ grounding move forward with workspace membership.
93
+
94
+ Doctor, Analyze, Readiness, and Verify remain explicit checks because they may
95
+ run project tools or enforce release policy. Use `workspace intelligence run`
96
+ when you want that governed decision chain, rather than only lifecycle sync.
97
+
98
+ ### Work from the project directory
99
+
100
+ After `adopt`, `import`, or project creation, the project is a first-class
101
+ entry point into its canonical workspace:
102
+
103
+ ```bash
104
+ cd /absolute/path/to/project
105
+ npx workspai project workspace status --json
106
+ npx workspai doctor project --json
107
+ npx workspai workspace graph search "authentication endpoint" --limit 12 --json
108
+ npx workspai workspace intelligence run --for-agent generic --strict --json
109
+ ```
110
+
111
+ Workspace resolution has one stable precedence:
112
+ `--workspace` → parent workspace → validated local link → reverse registry.
113
+ Workspai returns a specific error for an invalid explicit workspace, malformed
114
+ or stale link, ambiguous registration, or an unlinked project. It never picks
115
+ one workspace silently when ownership is ambiguous.
116
+
117
+ The project receives four distinct surfaces:
118
+
119
+ | File | Purpose | Portable |
120
+ | ---------------------------------------------- | ----------------------------------------------------------------------------- | --------------------- |
121
+ | `.workspai/workspace-link.local.json` | Machine-local canonical workspace binding | No; always gitignored |
122
+ | `.workspai/reports/project-context-agent.json` | Bounded project view of model, graph, proofs, diagnostics, and safe commands | Yes |
123
+ | `.workspai/PROJECT-GROUNDING.md` | Human- and agent-readable project entry guide | Yes |
124
+ | `AGENTS.md` managed section | Tells compatible agents where to start and when to cross the project boundary | Yes |
125
+
126
+ The bounded context includes project identity and commands, dependencies and
127
+ dependents, related API/deployment/test surfaces, current project findings,
128
+ portable proof locators, and model/graph freshness. It deliberately references
129
+ rather than duplicates workspace-wide evidence.
130
+
131
+ Use `--project-grounding managed` (default) to publish all portable surfaces,
132
+ `local` to keep the project lens and grounding gitignored without managing
133
+ `AGENTS.md`, or `off` to disable project grounding for that operation. The
134
+ machine-local link remains enabled in every mode because it owns command
135
+ resolution; it is private to the current machine and never belongs in a commit.
136
+ Mode reconciliation is convergent: changing modes removes stale managed
137
+ sections, portable files, or ignore rules that the new mode no longer owns,
138
+ while preserving user-authored `AGENTS.md` and `.gitignore` content.
139
+
140
+ If a workspace moved, or a cloned project has no valid local link, reconcile
141
+ it explicitly:
142
+
143
+ ```bash
144
+ npx workspai project workspace relink --workspace /absolute/path/to/my-workspace --json
145
+ ```
146
+
147
+ Relink succeeds only when the project is already a member of the canonical
148
+ workspace contract.
149
+
44
150
  ### JSON output (`--json`)
45
151
 
46
- - Import returns `workspacePath`, `workspaceResolution`, `defaultWorkspaceCreated`, `suggestedCdCommand`, and `importedProject`. The imported project includes its `source`.
152
+ - Import returns `workspacePath`, `workspaceResolution`,
153
+ `defaultWorkspaceCreated`, `projectWorkspaceCommand`,
154
+ `commandsResolveWorkspaceFromProject`, and `importedProject`. The imported
155
+ project includes its `source`.
47
156
  - Adopt returns `workspacePath`, `workspaceResolution`,
48
157
  `defaultWorkspaceCreated`, `wouldCreateDefaultWorkspace`,
49
- `suggestedCdCommand`, `dryRun`, and `adoptedProject`.
158
+ `projectWorkspaceCommand`, `commandsResolveWorkspaceFromProject`, `dryRun`,
159
+ and `adoptedProject`.
50
160
  - Project results include detected `name`, `path`, `stack`, `runtime`, `framework`, `supportTier`, `moduleSupport`, and `confidence` where available.
51
161
 
52
162
  Imported projects receive `.workspai/import-readiness.json`. Adopted projects add frontend-aware detection for Next.js, React, Vite, Vue, Angular, SvelteKit, Nuxt, Astro, Remix, and Solid.
@@ -137,6 +247,20 @@ queryable through the read-mostly MCP server. This keeps CLI, CI, IDE and agent
137
247
  consumers on one contract revision without injecting the full graph into every
138
248
  agent prompt.
139
249
 
250
+ The relationship is one-way and contract-enforced: the Workspace Model owns the
251
+ canonical project boundary and compact dependency topology in
252
+ `workspace-model.json.projectTopology`; providers enrich
253
+ that inventory into the Knowledge Graph. The graph source kind and artifact
254
+ path are fixed to the model, its source hash identifies the stable structural
255
+ model projection, and persisted current-state consumers reject a mismatched
256
+ graph. `workspace contract graph` follows the same model-first build path; it
257
+ does not create a competing contract- or source-owned Knowledge Graph.
258
+
259
+ The deprecated `workspace-model.json.graph` field is a temporary v1
260
+ compatibility alias. It is emitted with the same value as `projectTopology`,
261
+ excluded as a duplicate from the canonical hash, and rejected when the two
262
+ fields diverge. New integrations must consume `projectTopology`.
263
+
140
264
  The overlay follows
141
265
  `workspace-knowledge-graph-change-overlay.v1`: graph revisions are identified
142
266
  by content-derived fingerprints (timestamps do not create false changes), and
@@ -168,9 +292,21 @@ npx workspai workspace archive inspect team-workspace.workspai-archive.zip
168
292
  npx workspai workspace archive verify team-workspace.workspai-archive.zip --strict
169
293
  npx workspai workspace archive doctor team-workspace.workspai-archive.zip
170
294
  npx workspai workspace hydrate team-workspace.workspai-archive.zip --output ./team-workspace
295
+ npx workspai workspace import team-workspace.workspai-archive.zip --output ./team-workspace
296
+ npx workspai workspace connect /path/to/existing-workspace
171
297
  ```
172
298
 
173
- Export excludes dependency folders, build output, git history, logs, `.env`, and private keys by default. Use `--include-env` only for trusted internal handoffs. Hydrate accepts legacy `.rapidkit-workspace` and `.rapidkit/*` archive entries, but restores them as canonical `.workspai-workspace` and `.workspai/*` paths.
299
+ Export excludes dependency folders, build output, git history, logs, `.env`,
300
+ private keys, machine-local project links, derived registries, and raw
301
+ absolute-path workspace contracts by default. The manifest carries a
302
+ path-neutral contract snapshot so manual ports, APIs, ownership, events, and
303
+ dependency declarations survive transfer. External projects and their absolute
304
+ paths are excluded and reported as explicit relink actions. Use `--include-env`
305
+ only for trusted internal handoffs. Hydrate accepts legacy
306
+ `.rapidkit-workspace` and `.rapidkit/*` archive entries, but restores them as
307
+ canonical `.workspai-workspace` and `.workspai/*` paths. Workspace import then
308
+ reconciles the portable snapshot with project metadata on the destination
309
+ machine and rebuilds machine-local bindings.
174
310
 
175
311
  Archive export, verification, and hydrate stream file payloads instead of loading the workspace into memory. Exports use ZIP64, so multi-gigabyte workspaces and archives with more than 65,535 files are supported. Stored ZIP entries are the default; use `--archive-compression deflate` when transfer size matters more than export CPU time.
176
312
 
@@ -228,6 +364,9 @@ Artifacts:
228
364
  | `autopilot release` | Wrapper orchestrator | End-to-end release gate evidence |
229
365
  | `import` | Workspace ingestion | Rollback-safe sync |
230
366
  | `adopt` | Workspace adoption | In-place linking + registry sync |
367
+ | `workspace connect` | Workspace ingestion | In-place workspace registration + reconciliation |
368
+ | `workspace import` | Workspace ingestion | Verified archive restore + registration |
369
+ | `workspace hydrate` | Archive primitive | Verified extraction without registration |
231
370
  | `workspace model/context/diff/impact/verify` | Workspace intelligence | Model, context packs, blast radius |
232
371
  | `workspace intelligence run` | Workspace intelligence | Canonical contract-backed chain and strict gate |
233
372
  | `snapshot` | Workspace recovery | Metadata or full snapshots |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workspai",
3
- "version": "0.49.0",
3
+ "version": "0.51.0",
4
4
  "type": "module",
5
5
  "description": "Open-source workspace intelligence CLI for software systems: create, adopt, govern, verify, and align polyglot workspaces for humans, CI, IDEs, and AI agents.",
6
6
  "keywords": [
@@ -95,7 +95,7 @@
95
95
  "validate:contracts": "corepack npm run check:shared-contracts && vitest run src/__tests__/contracts/",
96
96
  "test:parity-contract": "corepack npm run check:shared-contracts && vitest run src/__tests__/contracts/import-stack-parity.snapshot.test.ts",
97
97
  "test:watch": "vitest",
98
- "test:coverage": "vitest run --coverage --reporter=default --reporter=json --outputFile.json=test-results/vitest.json",
98
+ "test:coverage": "corepack npm run test:prebuild && vitest run --coverage --reporter=default --reporter=json --outputFile.json=test-results/vitest.json",
99
99
  "test:prepare-embeddings": "node scripts/prepare-mock-embeddings.mjs",
100
100
  "generate-embeddings": "npx tsx src/ai/generate-embeddings.ts",
101
101
  "verify:package-cli": "node scripts/verify-package-cli.mjs",
@@ -128,13 +128,16 @@
128
128
  "validate:docs": "corepack npm run check:markdown-links && corepack npm run check:docs-drift && corepack npm run validate:docs-examples && corepack npm run check:github-release-notes && corepack npm run smoke:readme",
129
129
  "smoke:frontend-generators": "tsup && node scripts/smoke-frontend-generators.mjs",
130
130
  "smoke:frontend-generators:network": "tsup && node scripts/smoke-frontend-generators.mjs --execute",
131
+ "smoke:official-generators": "tsup && node scripts/smoke-official-generators.mjs",
132
+ "smoke:official-generators:network": "tsup && node scripts/smoke-official-generators.mjs --execute",
133
+ "check:generator-smoke-coverage": "node scripts/check-generator-smoke-coverage.mjs",
131
134
  "sync:contracts": "node scripts/sync-contracts.mjs",
132
135
  "check:contracts": "node scripts/sync-contracts.mjs --check",
133
136
  "bundle-size": "corepack npm run build && node scripts/report-dist-size.mjs",
134
137
  "analyze": "corepack npm run build && node scripts/analyze-dist.mjs",
135
138
  "size-check": "corepack npm run build && size-limit",
136
139
  "bench": "npx tsx scripts/benchmarks.ts",
137
- "quality": "corepack npm run check:package-manager && corepack npm run typecheck && corepack npm run lint && corepack npm run format:check && corepack npm test && corepack npm run size-check && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial && corepack npm run security && corepack npm run validate:docs && corepack npm run smoke:frontend-generators && corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:parity-snapshot && corepack npm run check:agent-customization-drift",
140
+ "quality": "corepack npm run check:package-manager && corepack npm run typecheck && corepack npm run lint && corepack npm run format:check && corepack npm test && corepack npm run size-check && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial && corepack npm run security && corepack npm run validate:docs && corepack npm run check:generator-smoke-coverage && corepack npm run smoke:official-generators && corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:parity-snapshot && corepack npm run check:agent-customization-drift",
138
141
  "act-matrix": "act -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-22.04 -P macos-latest=ghcr.io/catthehacker/ubuntu:act-22.04 -P windows-latest=ghcr.io/catthehacker/ubuntu:act-22.04 --pull=false -j build-test-matrix",
139
142
  "release:dry": "bash scripts/release.sh --no-publish --yes --allow-dirty",
140
143
  "release:patch": "bash scripts/release.sh patch",
@@ -146,7 +149,7 @@
146
149
  "contracts:check": "corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:parity-snapshot && corepack npm run check:generated-contracts && corepack npm run check:agent-customization-drift",
147
150
  "contracts:validate": "corepack npm run contracts:check && corepack npm run validate:contracts && corepack npm run build && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial",
148
151
  "docs:validate": "corepack npm run validate:docs",
149
- "smoke": "corepack npm run smoke:enterprise-package && corepack npm run smoke:readme && corepack npm run smoke:frontend-generators",
152
+ "smoke": "corepack npm run smoke:enterprise-package && corepack npm run smoke:readme && corepack npm run check:generator-smoke-coverage && corepack npm run smoke:official-generators",
150
153
  "fix": "corepack npm run lint:fix && corepack npm run format && corepack npm run sync:contracts && corepack npm run sync:shared-contracts && corepack npm run sync-kits"
151
154
  },
152
155
  "dependencies": {
@@ -8,6 +8,11 @@ import process from 'node:process';
8
8
 
9
9
  const repoRoot = process.cwd();
10
10
  const cliPath = path.join(repoRoot, 'dist', 'index.js');
11
+ const isolatedHome = fs.mkdtempSync(path.join(os.tmpdir(), 'workspai-enterprise-home-'));
12
+
13
+ process.on('exit', () => {
14
+ fs.rmSync(isolatedHome, { recursive: true, force: true });
15
+ });
11
16
 
12
17
  function fail(message) {
13
18
  console.error(`[enterprise-package-smoke] ${message}`);
@@ -19,7 +24,14 @@ function log(message) {
19
24
  }
20
25
 
21
26
  function cliEnv(extraEnv = {}) {
22
- const env = { ...process.env, ...extraEnv };
27
+ const env = {
28
+ ...process.env,
29
+ HOME: isolatedHome,
30
+ USERPROFILE: isolatedHome,
31
+ XDG_CONFIG_HOME: path.join(isolatedHome, '.config'),
32
+ XDG_CACHE_HOME: path.join(isolatedHome, '.cache'),
33
+ ...extraEnv,
34
+ };
23
35
  delete env.NODE_ENV;
24
36
  delete env.NODE_OPTIONS;
25
37
  for (const key of Object.keys(env)) {
@@ -364,6 +376,17 @@ function smokeCreateNpmBackedKits() {
364
376
  'rapidkit',
365
377
  ],
366
378
  },
379
+ {
380
+ kit: 'rust.axum',
381
+ name: 'enterprise-rust-axum',
382
+ extraArgs: [],
383
+ expectedFiles: [
384
+ 'Cargo.toml',
385
+ 'src/main.rs',
386
+ '.workspai/project.json',
387
+ 'rapidkit',
388
+ ],
389
+ },
367
390
  ];
368
391
 
369
392
  try {
@@ -35,7 +35,7 @@ make audit
35
35
 
36
36
  > Re-run `rapidkit init` (or `make init`) when dependencies change. If you only need to refresh tooling/hooks, run `SKIP_INIT=1 make install` or rely on `./bootstrap.sh`.
37
37
 
38
- > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) before running `rapidkit create` if you want to skip the lockfile attempt.
38
+ > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) in the environment before scaffolding if you want to skip the lockfile attempt.
39
39
 
40
40
  > Need to see every project-local RapidKit Core command? Run `rapidkit --help`. If this project is part of a Workspai workspace, run `npx workspai --help` from the workspace root for workspace intelligence commands.
41
41
 
@@ -34,7 +34,7 @@ rapidkit start
34
34
 
35
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.
36
36
 
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.
37
+ > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) in the environment before scaffolding if you need to opt out.
38
38
 
39
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.
40
40
 
@@ -1,5 +1,5 @@
1
1
  # syntax=docker/dockerfile:1.6
2
- ARG NODE_VERSION=20.19.0-alpine
2
+ ARG NODE_VERSION=24.18.0-alpine
3
3
  FROM node:${NODE_VERSION} as builder
4
4
 
5
5
  WORKDIR /usr/src/app
@@ -34,7 +34,7 @@ rapidkit test
34
34
 
35
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.
36
36
 
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.
37
+ > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) in the environment before scaffolding if you need to skip this step.
38
38
 
39
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.
40
40
 
@@ -76,7 +76,7 @@
76
76
  "@types/compression": "^1.8.1",
77
77
  "@types/express": "^5.0.6",
78
78
  "@types/jest": "^30.0.0",
79
- "@types/node": "^18.19.130",
79
+ "@types/node": "^24.13.3",
80
80
  "@types/supertest": "^6.0.3",
81
81
  "@typescript-eslint/eslint-plugin": "^8.50.1",
82
82
  "@typescript-eslint/parser": "^8.50.1",
@@ -96,6 +96,15 @@
96
96
  },
97
97
  "overrides": {
98
98
  "cross-spawn": "7.0.5",
99
- "glob": "10.5.0"
99
+ "glob": "10.5.0",
100
+ "js-yaml": "5.2.2"
101
+ },
102
+ "resolutions": {
103
+ "js-yaml": "5.2.2"
104
+ },
105
+ "pnpm": {
106
+ "overrides": {
107
+ "js-yaml": "5.2.2"
108
+ }
100
109
  }
101
110
  }
@@ -1 +0,0 @@
1
- export{b as printAnalyzeReport,a as runAnalyze}from'./chunk-54EP5CEV.js';
@@ -1 +0,0 @@
1
- export{b as AUTOPILOT_RELEASE_ALIAS_FILENAME,a as AUTOPILOT_RELEASE_LAST_RUN_FILENAME,c as runAutopilotRelease}from'./chunk-K4X3DM7R.js';
@@ -1 +0,0 @@
1
- import {c,d,a,b}from'./chunk-5XATWNME.js';import s from'fs';import o from'path';function R(i){let n=o.resolve(i);for(;;){if(s.existsSync(o.join(n,c))||s.existsSync(o.join(n,d))||s.existsSync(o.join(n,a,"workspace.json"))||s.existsSync(o.join(n,b,"workspace.json")))return n;let r=o.dirname(n);if(r===n)return null;n=r;}}function l(i){let n=o.resolve(i),r=s.existsSync(o.join(n,c))||s.existsSync(o.join(n,d))||s.existsSync(o.join(n,a,"workspace.json"))||s.existsSync(o.join(n,b,"workspace.json")),p=s.existsSync(o.join(n,a,"project.json"))||s.existsSync(o.join(n,a,"context.json"))||s.existsSync(o.join(n,b,"project.json"))||s.existsSync(o.join(n,b,"context.json"));return r&&!p}export{R as a,l as b};