@teambit/host-initializer 0.0.664 → 0.0.666
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/agents-template.md +304 -0
- package/dist/agents-template.md +304 -0
- package/dist/host-initializer.main.runtime.d.ts +31 -2
- package/dist/host-initializer.main.runtime.js +87 -4
- package/dist/host-initializer.main.runtime.js.map +1 -1
- package/dist/init-cmd.js +10 -5
- package/dist/init-cmd.js.map +1 -1
- package/package.json +3 -3
- /package/dist/{preview-1776432715724.js → preview-1776590287251.js} +0 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# Bit Workspace — AI Agent Instructions
|
|
2
|
+
|
|
3
|
+
This file teaches AI agents how to work correctly inside a **Bit workspace**. Read it fully before touching any code.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What is Bit?
|
|
8
|
+
|
|
9
|
+
Bit is a composable development platform where every piece of functionality is an independent, versioned, composed **component**. Components live in **scopes** (remote registries of business domains) and are managed through the `bit` CLI.
|
|
10
|
+
|
|
11
|
+
### Component Types
|
|
12
|
+
|
|
13
|
+
Not all components are UI widgets. In Bit, a "component" can be any of these:
|
|
14
|
+
|
|
15
|
+
| Type | What it is | Example |
|
|
16
|
+
| -------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------ |
|
|
17
|
+
| **Entity** | Plain domain object — defines the shape and behavior of a domain model. No React, no side effects. | `entities/user`, `entities/order` |
|
|
18
|
+
| **Hook** | Encapsulates data fetching, mutations, or stateful logic for a domain. Consumed by UI components and pages. | `hooks/use-user`, `hooks/use-orders` |
|
|
19
|
+
| **UI component** | Reusable visual element, typically stateless or lightly stateful. | `ui/button`, `ui/card` |
|
|
20
|
+
| **Feature / Aspect** | Self-contained domain slice — owns its entities, hooks, pages, and backend logic. | `customers`, `billing` |
|
|
21
|
+
| **App** | A standard deployable application — a React frontend, Node.js server, etc. | `my-react-app`, `my-node-server` |
|
|
22
|
+
|
|
23
|
+
Understanding which type you're working with matters because it shapes the dependency chain. A typical app looks like this:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
App → Page → Hook (optional) → Entity (optional)
|
|
27
|
+
↘ UI component
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Entities and hooks sit at the bottom of the chain — they have no dependents of their own, so changes to them propagate upward. Everything above that consumes them must be local for your changes to take effect.
|
|
31
|
+
|
|
32
|
+
The workspace is defined by `workspace.jsonc`. The owner and default scope are set there — always read them first.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Project Orientation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cat workspace.jsonc # find owner, scope, envs
|
|
40
|
+
bit list # see what's already local
|
|
41
|
+
bit status # check for pending changes
|
|
42
|
+
bit templates # see what generators are available
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Understanding Component APIs
|
|
48
|
+
|
|
49
|
+
When you need to understand how to **use** a component (its props, function signatures, return types), prefer structured API data over reading source files:
|
|
50
|
+
|
|
51
|
+
- **Local workspace components:** run `bit schema <component-id>` — returns exported types, function signatures, and class methods.
|
|
52
|
+
- **Remote components:** run `bit show <owner>.<scope>/<name>` to inspect metadata and dependencies.
|
|
53
|
+
|
|
54
|
+
For understanding implementation details (how something works internally), read the source directly.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Common Commands
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
bit status # workspace health + pending changes
|
|
62
|
+
bit start # dev server (default port 3000)
|
|
63
|
+
bit run [app_name] # run the app
|
|
64
|
+
bit list # all locally tracked components (do not pass args)
|
|
65
|
+
bit search <query> # search components locally and on remote scopes
|
|
66
|
+
bit show <owner>.<scope>/<name> # inspect a specific component
|
|
67
|
+
bit schema <component-id> # structured API of a local component
|
|
68
|
+
bit import "<owner>.<scope>/**" # import all components from a remote scope
|
|
69
|
+
bit templates # list available generator templates
|
|
70
|
+
bit create <template> <name> # scaffold a new component
|
|
71
|
+
bit install [pkg1] [pkg2] ... # install package dependencies
|
|
72
|
+
bit compile # manual compile (usually auto — use for troubleshooting)
|
|
73
|
+
bit test # run tests
|
|
74
|
+
bit lint # run linter
|
|
75
|
+
bit check-types # TypeScript type checker
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
> **Always use `bit install`** to install packages. Never use `npm install`, `yarn`, or `pnpm` directly — unless the workspace is configured with `externalPackageManager` mode in `workspace.jsonc`, in which case use your configured package manager.
|
|
79
|
+
>
|
|
80
|
+
> **Use Bit for type checking and testing.** Never use `tsc` or `npx tsc` directly. Scope to specific components when useful:
|
|
81
|
+
>
|
|
82
|
+
> ```bash
|
|
83
|
+
> bit check-types "[component-id1, component-id2]"
|
|
84
|
+
> bit test "[component-id1, component-id2]"
|
|
85
|
+
> ```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Discovering Apps
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
bit app list
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Use `bit import` to fetch remote apps and run them locally.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## The Golden Rule: One Component at a Time
|
|
100
|
+
|
|
101
|
+
Never scaffold multiple components upfront. Bit development is an **iterative loop**:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
render → identify gap → create ONE component → render again
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step-by-step
|
|
108
|
+
|
|
109
|
+
1. **Look before you create.** Search the workspace and remote scopes first:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
bit search <keyword>
|
|
113
|
+
bit show <owner>.<scope>/<name>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
A component may already exist locally or remotely. Don't duplicate.
|
|
117
|
+
|
|
118
|
+
2. **Identify the entry point.** Depending on what you're building, the entry point could be an app or a feature. List what exists in the scope before creating anything new.
|
|
119
|
+
|
|
120
|
+
3. **Create one component.** Scaffold it, wire it in, verify it compiles and renders.
|
|
121
|
+
|
|
122
|
+
4. **Validate before moving on:**
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
bit status
|
|
126
|
+
bit check-types
|
|
127
|
+
bit test
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
5. **Identify the next gap.** Only then decide what the next component should be.
|
|
131
|
+
|
|
132
|
+
6. **Repeat.** Never pre-plan a list of components and create them all at once.
|
|
133
|
+
|
|
134
|
+
#### Example
|
|
135
|
+
|
|
136
|
+
Create a UI component:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
bit create react pages/login --scope acme.people
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Create a data entity:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
bit create entity entities/user --scope acme.people
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Importing Components for Modification
|
|
151
|
+
|
|
152
|
+
Bit resolves **local workspace components** over their installed package versions. If you want to modify a component, it must be imported into the workspace — otherwise the app will use the published version and ignore your changes.
|
|
153
|
+
|
|
154
|
+
### The full dependency chain must be local
|
|
155
|
+
|
|
156
|
+
When modifying any component, import every component in the chain from the top down to your target:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
App → Feature/Aspect → Page → UI component
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
You don't always need the full chain — only the layers in the dependency path of your change. But every layer between the entry point and your target must be local. If any layer in between is still installed as a package (not local), the app will ignore your changes to the layers below it.
|
|
163
|
+
|
|
164
|
+
**Examples:**
|
|
165
|
+
|
|
166
|
+
- Changing a UI component used by a feature page → import the feature, the page, and the UI component.
|
|
167
|
+
- Changing a feature's backend logic → import the app and the feature/aspect.
|
|
168
|
+
|
|
169
|
+
### Finding the component ID
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
cat node_modules/@<org>/<package-name>/package.json | grep -A3 '"componentId"'
|
|
173
|
+
# "scope": "myorg.myfeature"
|
|
174
|
+
# "name": "pages/my-page"
|
|
175
|
+
# → component ID: myorg.myfeature/pages/my-page
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Importing
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
bit import <scope>/<name>
|
|
182
|
+
# e.g.
|
|
183
|
+
bit import myorg.myfeature/pages/my-page myorg.myfeature/pages/lobby-page
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Imported components land at `<scope-short-name>/<name>/` in the workspace.
|
|
187
|
+
|
|
188
|
+
#### Importing whole scopes
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
bit import "<owner>.<scope>/**"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Saving and Publishing Changes
|
|
197
|
+
|
|
198
|
+
**Never push directly to the main lane.** Always create a lane and submit a change request.
|
|
199
|
+
|
|
200
|
+
Git does not manage component versions in a Bit workspace — use Bit for version control of components.
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
bit lane create <your-lane-name> # create a new lane
|
|
204
|
+
bit status # confirm no pending issues
|
|
205
|
+
bit snap --message "describe change" # persist component versions
|
|
206
|
+
bit export # push lane to remote
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
> Always run `bit lane create` first. If you're already on a non-main lane, continue using it — don't create a new one.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Component Structure
|
|
214
|
+
|
|
215
|
+
Each component directory follows this convention:
|
|
216
|
+
|
|
217
|
+
| File | Purpose |
|
|
218
|
+
| ------------------------ | ------------------------------------ |
|
|
219
|
+
| `<name>.tsx` | Main implementation |
|
|
220
|
+
| `index.ts` | Public barrel export |
|
|
221
|
+
| `<name>.spec.tsx` | Tests |
|
|
222
|
+
| `<name>.composition.tsx` | Live previews (shown in `bit start`) |
|
|
223
|
+
| `<name>.docs.mdx` | Documentation |
|
|
224
|
+
| `<name>.mock.ts` | Mock data / fixtures |
|
|
225
|
+
| `*-type.ts` | Standalone type definitions |
|
|
226
|
+
|
|
227
|
+
> Add JSDocs to exported APIs, include two to three usage examples in the `.docs.mdx`, and two to three compositions for the live preview.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Import Path Convention
|
|
232
|
+
|
|
233
|
+
Components import each other using Bit's package notation:
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
import { Something } from '@<org>/<scope>.<namespace>.<name>';
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Never use relative paths across component boundaries. Always use the package notation.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Environment Setup
|
|
244
|
+
|
|
245
|
+
Generator environments (React, Vue, Node, Angular, etc.) are configured in `workspace.jsonc`. Some may be commented out. Enable the relevant environment before creating components for a specific framework.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Key Files
|
|
250
|
+
|
|
251
|
+
| File | Purpose |
|
|
252
|
+
| ----------------- | ------------------------------------------------------------------- |
|
|
253
|
+
| `workspace.jsonc` | Workspace config — scopes, envs, component patterns |
|
|
254
|
+
| `.bitmap` | Auto-generated — tracks component locations. **Must be committed.** |
|
|
255
|
+
| `package.json` | Usually `"type": "module"` for ES Modules |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Runtime Code Crossing Environment Boundaries
|
|
260
|
+
|
|
261
|
+
Importing frontend modules into Node.js runtime files or Node.js modules into browser runtime files causes app initialization failures. This typically happens when `index.ts` or runtime files import/export cross-environment modules by value instead of by type.
|
|
262
|
+
|
|
263
|
+
**Rules for aspect `index.ts` files:**
|
|
264
|
+
|
|
265
|
+
- The Aspect manifest (from `*.aspect.ts`) is the **only** allowed value export. Everything else must use `export type`.
|
|
266
|
+
- Runtime modules (`*.node.runtime.ts`, `*.browser.runtime.ts`) must **always** be exported as types.
|
|
267
|
+
|
|
268
|
+
```ts
|
|
269
|
+
// ✅ Correct
|
|
270
|
+
export type { MyBrowser } from './my.browser.runtime.js';
|
|
271
|
+
export type { MyNode } from './my.node.runtime.js';
|
|
272
|
+
export type { User } from './user.js';
|
|
273
|
+
export default MyAspect;
|
|
274
|
+
export { MyAspect };
|
|
275
|
+
|
|
276
|
+
// ❌ Wrong — pulls frontend/backend code into the wrong runtime
|
|
277
|
+
export { MyBrowser } from './my.browser.runtime.js';
|
|
278
|
+
export { User } from './user.js';
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Rules for `*.node.runtime.ts` files:**
|
|
282
|
+
|
|
283
|
+
- Must not import frontend modules (React components, SCSS, browser-only libraries) by value. Use `import type` if only the type is needed.
|
|
284
|
+
|
|
285
|
+
**Rules for `*.browser.runtime.tsx` files:**
|
|
286
|
+
|
|
287
|
+
- Must not import Node.js modules (`fs`, `path`, server-only libraries) by value. Use `import type` if only the type is needed.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Common Mistakes to Avoid
|
|
292
|
+
|
|
293
|
+
| Mistake | Correct approach |
|
|
294
|
+
| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
295
|
+
| Creating multiple components upfront | Create one, validate, then decide what's next |
|
|
296
|
+
| Modifying an installed (node_modules) component | Import it with `bit import` first |
|
|
297
|
+
| Importing only the target component but not its dependents | Import the full chain top-down: app → feature → page → component |
|
|
298
|
+
| Treating all components as UI widgets | Understand the type first — app, feature/aspect, hook, entity, or UI component — it determines the chain |
|
|
299
|
+
| Pushing to the main lane | Always create a lane, snap, then export |
|
|
300
|
+
| Using git to version components | Bit manages component versions — use `bit snap` / `bit export` |
|
|
301
|
+
| Guessing a component ID | Check `package.json` under `componentId` or use `bit list` |
|
|
302
|
+
| Creating a component that already exists | Always run `bit search` first |
|
|
303
|
+
| Using `npm install`, `yarn`, or `pnpm` | Use `bit install` |
|
|
304
|
+
| Using `tsc` or `npx tsc` to check types | Use `bit check-types` or `bit test` |
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# Bit Workspace — AI Agent Instructions
|
|
2
|
+
|
|
3
|
+
This file teaches AI agents how to work correctly inside a **Bit workspace**. Read it fully before touching any code.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What is Bit?
|
|
8
|
+
|
|
9
|
+
Bit is a composable development platform where every piece of functionality is an independent, versioned, composed **component**. Components live in **scopes** (remote registries of business domains) and are managed through the `bit` CLI.
|
|
10
|
+
|
|
11
|
+
### Component Types
|
|
12
|
+
|
|
13
|
+
Not all components are UI widgets. In Bit, a "component" can be any of these:
|
|
14
|
+
|
|
15
|
+
| Type | What it is | Example |
|
|
16
|
+
| -------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------ |
|
|
17
|
+
| **Entity** | Plain domain object — defines the shape and behavior of a domain model. No React, no side effects. | `entities/user`, `entities/order` |
|
|
18
|
+
| **Hook** | Encapsulates data fetching, mutations, or stateful logic for a domain. Consumed by UI components and pages. | `hooks/use-user`, `hooks/use-orders` |
|
|
19
|
+
| **UI component** | Reusable visual element, typically stateless or lightly stateful. | `ui/button`, `ui/card` |
|
|
20
|
+
| **Feature / Aspect** | Self-contained domain slice — owns its entities, hooks, pages, and backend logic. | `customers`, `billing` |
|
|
21
|
+
| **App** | A standard deployable application — a React frontend, Node.js server, etc. | `my-react-app`, `my-node-server` |
|
|
22
|
+
|
|
23
|
+
Understanding which type you're working with matters because it shapes the dependency chain. A typical app looks like this:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
App → Page → Hook (optional) → Entity (optional)
|
|
27
|
+
↘ UI component
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Entities and hooks sit at the bottom of the chain — they have no dependents of their own, so changes to them propagate upward. Everything above that consumes them must be local for your changes to take effect.
|
|
31
|
+
|
|
32
|
+
The workspace is defined by `workspace.jsonc`. The owner and default scope are set there — always read them first.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Project Orientation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cat workspace.jsonc # find owner, scope, envs
|
|
40
|
+
bit list # see what's already local
|
|
41
|
+
bit status # check for pending changes
|
|
42
|
+
bit templates # see what generators are available
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Understanding Component APIs
|
|
48
|
+
|
|
49
|
+
When you need to understand how to **use** a component (its props, function signatures, return types), prefer structured API data over reading source files:
|
|
50
|
+
|
|
51
|
+
- **Local workspace components:** run `bit schema <component-id>` — returns exported types, function signatures, and class methods.
|
|
52
|
+
- **Remote components:** run `bit show <owner>.<scope>/<name>` to inspect metadata and dependencies.
|
|
53
|
+
|
|
54
|
+
For understanding implementation details (how something works internally), read the source directly.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Common Commands
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
bit status # workspace health + pending changes
|
|
62
|
+
bit start # dev server (default port 3000)
|
|
63
|
+
bit run [app_name] # run the app
|
|
64
|
+
bit list # all locally tracked components (do not pass args)
|
|
65
|
+
bit search <query> # search components locally and on remote scopes
|
|
66
|
+
bit show <owner>.<scope>/<name> # inspect a specific component
|
|
67
|
+
bit schema <component-id> # structured API of a local component
|
|
68
|
+
bit import "<owner>.<scope>/**" # import all components from a remote scope
|
|
69
|
+
bit templates # list available generator templates
|
|
70
|
+
bit create <template> <name> # scaffold a new component
|
|
71
|
+
bit install [pkg1] [pkg2] ... # install package dependencies
|
|
72
|
+
bit compile # manual compile (usually auto — use for troubleshooting)
|
|
73
|
+
bit test # run tests
|
|
74
|
+
bit lint # run linter
|
|
75
|
+
bit check-types # TypeScript type checker
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
> **Always use `bit install`** to install packages. Never use `npm install`, `yarn`, or `pnpm` directly — unless the workspace is configured with `externalPackageManager` mode in `workspace.jsonc`, in which case use your configured package manager.
|
|
79
|
+
>
|
|
80
|
+
> **Use Bit for type checking and testing.** Never use `tsc` or `npx tsc` directly. Scope to specific components when useful:
|
|
81
|
+
>
|
|
82
|
+
> ```bash
|
|
83
|
+
> bit check-types "[component-id1, component-id2]"
|
|
84
|
+
> bit test "[component-id1, component-id2]"
|
|
85
|
+
> ```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Discovering Apps
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
bit app list
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Use `bit import` to fetch remote apps and run them locally.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## The Golden Rule: One Component at a Time
|
|
100
|
+
|
|
101
|
+
Never scaffold multiple components upfront. Bit development is an **iterative loop**:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
render → identify gap → create ONE component → render again
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step-by-step
|
|
108
|
+
|
|
109
|
+
1. **Look before you create.** Search the workspace and remote scopes first:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
bit search <keyword>
|
|
113
|
+
bit show <owner>.<scope>/<name>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
A component may already exist locally or remotely. Don't duplicate.
|
|
117
|
+
|
|
118
|
+
2. **Identify the entry point.** Depending on what you're building, the entry point could be an app or a feature. List what exists in the scope before creating anything new.
|
|
119
|
+
|
|
120
|
+
3. **Create one component.** Scaffold it, wire it in, verify it compiles and renders.
|
|
121
|
+
|
|
122
|
+
4. **Validate before moving on:**
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
bit status
|
|
126
|
+
bit check-types
|
|
127
|
+
bit test
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
5. **Identify the next gap.** Only then decide what the next component should be.
|
|
131
|
+
|
|
132
|
+
6. **Repeat.** Never pre-plan a list of components and create them all at once.
|
|
133
|
+
|
|
134
|
+
#### Example
|
|
135
|
+
|
|
136
|
+
Create a UI component:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
bit create react pages/login --scope acme.people
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Create a data entity:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
bit create entity entities/user --scope acme.people
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Importing Components for Modification
|
|
151
|
+
|
|
152
|
+
Bit resolves **local workspace components** over their installed package versions. If you want to modify a component, it must be imported into the workspace — otherwise the app will use the published version and ignore your changes.
|
|
153
|
+
|
|
154
|
+
### The full dependency chain must be local
|
|
155
|
+
|
|
156
|
+
When modifying any component, import every component in the chain from the top down to your target:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
App → Feature/Aspect → Page → UI component
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
You don't always need the full chain — only the layers in the dependency path of your change. But every layer between the entry point and your target must be local. If any layer in between is still installed as a package (not local), the app will ignore your changes to the layers below it.
|
|
163
|
+
|
|
164
|
+
**Examples:**
|
|
165
|
+
|
|
166
|
+
- Changing a UI component used by a feature page → import the feature, the page, and the UI component.
|
|
167
|
+
- Changing a feature's backend logic → import the app and the feature/aspect.
|
|
168
|
+
|
|
169
|
+
### Finding the component ID
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
cat node_modules/@<org>/<package-name>/package.json | grep -A3 '"componentId"'
|
|
173
|
+
# "scope": "myorg.myfeature"
|
|
174
|
+
# "name": "pages/my-page"
|
|
175
|
+
# → component ID: myorg.myfeature/pages/my-page
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Importing
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
bit import <scope>/<name>
|
|
182
|
+
# e.g.
|
|
183
|
+
bit import myorg.myfeature/pages/my-page myorg.myfeature/pages/lobby-page
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Imported components land at `<scope-short-name>/<name>/` in the workspace.
|
|
187
|
+
|
|
188
|
+
#### Importing whole scopes
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
bit import "<owner>.<scope>/**"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Saving and Publishing Changes
|
|
197
|
+
|
|
198
|
+
**Never push directly to the main lane.** Always create a lane and submit a change request.
|
|
199
|
+
|
|
200
|
+
Git does not manage component versions in a Bit workspace — use Bit for version control of components.
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
bit lane create <your-lane-name> # create a new lane
|
|
204
|
+
bit status # confirm no pending issues
|
|
205
|
+
bit snap --message "describe change" # persist component versions
|
|
206
|
+
bit export # push lane to remote
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
> Always run `bit lane create` first. If you're already on a non-main lane, continue using it — don't create a new one.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Component Structure
|
|
214
|
+
|
|
215
|
+
Each component directory follows this convention:
|
|
216
|
+
|
|
217
|
+
| File | Purpose |
|
|
218
|
+
| ------------------------ | ------------------------------------ |
|
|
219
|
+
| `<name>.tsx` | Main implementation |
|
|
220
|
+
| `index.ts` | Public barrel export |
|
|
221
|
+
| `<name>.spec.tsx` | Tests |
|
|
222
|
+
| `<name>.composition.tsx` | Live previews (shown in `bit start`) |
|
|
223
|
+
| `<name>.docs.mdx` | Documentation |
|
|
224
|
+
| `<name>.mock.ts` | Mock data / fixtures |
|
|
225
|
+
| `*-type.ts` | Standalone type definitions |
|
|
226
|
+
|
|
227
|
+
> Add JSDocs to exported APIs, include two to three usage examples in the `.docs.mdx`, and two to three compositions for the live preview.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Import Path Convention
|
|
232
|
+
|
|
233
|
+
Components import each other using Bit's package notation:
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
import { Something } from '@<org>/<scope>.<namespace>.<name>';
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Never use relative paths across component boundaries. Always use the package notation.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Environment Setup
|
|
244
|
+
|
|
245
|
+
Generator environments (React, Vue, Node, Angular, etc.) are configured in `workspace.jsonc`. Some may be commented out. Enable the relevant environment before creating components for a specific framework.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Key Files
|
|
250
|
+
|
|
251
|
+
| File | Purpose |
|
|
252
|
+
| ----------------- | ------------------------------------------------------------------- |
|
|
253
|
+
| `workspace.jsonc` | Workspace config — scopes, envs, component patterns |
|
|
254
|
+
| `.bitmap` | Auto-generated — tracks component locations. **Must be committed.** |
|
|
255
|
+
| `package.json` | Usually `"type": "module"` for ES Modules |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Runtime Code Crossing Environment Boundaries
|
|
260
|
+
|
|
261
|
+
Importing frontend modules into Node.js runtime files or Node.js modules into browser runtime files causes app initialization failures. This typically happens when `index.ts` or runtime files import/export cross-environment modules by value instead of by type.
|
|
262
|
+
|
|
263
|
+
**Rules for aspect `index.ts` files:**
|
|
264
|
+
|
|
265
|
+
- The Aspect manifest (from `*.aspect.ts`) is the **only** allowed value export. Everything else must use `export type`.
|
|
266
|
+
- Runtime modules (`*.node.runtime.ts`, `*.browser.runtime.ts`) must **always** be exported as types.
|
|
267
|
+
|
|
268
|
+
```ts
|
|
269
|
+
// ✅ Correct
|
|
270
|
+
export type { MyBrowser } from './my.browser.runtime.js';
|
|
271
|
+
export type { MyNode } from './my.node.runtime.js';
|
|
272
|
+
export type { User } from './user.js';
|
|
273
|
+
export default MyAspect;
|
|
274
|
+
export { MyAspect };
|
|
275
|
+
|
|
276
|
+
// ❌ Wrong — pulls frontend/backend code into the wrong runtime
|
|
277
|
+
export { MyBrowser } from './my.browser.runtime.js';
|
|
278
|
+
export { User } from './user.js';
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Rules for `*.node.runtime.ts` files:**
|
|
282
|
+
|
|
283
|
+
- Must not import frontend modules (React components, SCSS, browser-only libraries) by value. Use `import type` if only the type is needed.
|
|
284
|
+
|
|
285
|
+
**Rules for `*.browser.runtime.tsx` files:**
|
|
286
|
+
|
|
287
|
+
- Must not import Node.js modules (`fs`, `path`, server-only libraries) by value. Use `import type` if only the type is needed.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Common Mistakes to Avoid
|
|
292
|
+
|
|
293
|
+
| Mistake | Correct approach |
|
|
294
|
+
| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
295
|
+
| Creating multiple components upfront | Create one, validate, then decide what's next |
|
|
296
|
+
| Modifying an installed (node_modules) component | Import it with `bit import` first |
|
|
297
|
+
| Importing only the target component but not its dependents | Import the full chain top-down: app → feature → page → component |
|
|
298
|
+
| Treating all components as UI widgets | Understand the type first — app, feature/aspect, hook, entity, or UI component — it determines the chain |
|
|
299
|
+
| Pushing to the main lane | Always create a lane, snap, then export |
|
|
300
|
+
| Using git to version components | Bit manages component versions — use `bit snap` / `bit export` |
|
|
301
|
+
| Guessing a component ID | Check `package.json` under `componentId` or use `bit list` |
|
|
302
|
+
| Creating a component that already exists | Always run `bit search` first |
|
|
303
|
+
| Using `npm install`, `yarn`, or `pnpm` | Use `bit install` |
|
|
304
|
+
| Using `tsc` or `npx tsc` to check types | Use `bit check-types` or `bit test` |
|
|
@@ -9,10 +9,39 @@ export interface InteractiveConfig {
|
|
|
9
9
|
mcpEditor?: string;
|
|
10
10
|
}
|
|
11
11
|
export declare class HostInitializerMain {
|
|
12
|
-
static init(absPath?: string, noGit?: boolean, noPackageJson?: boolean, reset?: boolean, resetNew?: boolean, resetLaneNew?: boolean, resetHard?: boolean, resetScope?: boolean, force?: boolean, workspaceConfigProps?: WorkspaceExtensionProps, generator?: string): Promise<{
|
|
12
|
+
static init(absPath?: string, noGit?: boolean, noPackageJson?: boolean, reset?: boolean, resetNew?: boolean, resetLaneNew?: boolean, resetHard?: boolean, resetScope?: boolean, force?: boolean, workspaceConfigProps?: WorkspaceExtensionProps, generator?: string, agent?: string): Promise<{
|
|
13
13
|
created: boolean;
|
|
14
14
|
consumer: Consumer;
|
|
15
|
+
agentFileWritten?: string;
|
|
15
16
|
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Supported agent targets and their output file paths (relative to workspace root).
|
|
19
|
+
*/
|
|
20
|
+
static readonly AGENT_FILE_MAP: Record<string, string>;
|
|
21
|
+
/**
|
|
22
|
+
* All known agent instruction file paths. Used to detect whether a workspace
|
|
23
|
+
* already contains any agent configuration.
|
|
24
|
+
*/
|
|
25
|
+
static readonly ALL_AGENT_FILES: string[];
|
|
26
|
+
/**
|
|
27
|
+
* Write AI agent instructions into the workspace.
|
|
28
|
+
*
|
|
29
|
+
* - Skips if .git exists (git repos use the interactive init flow).
|
|
30
|
+
* - Skips if any known agent instruction file already exists.
|
|
31
|
+
* - When `agent` is provided, writes to the tool-specific path (e.g. CLAUDE.md).
|
|
32
|
+
* - When `agent` is omitted, writes the universal AGENTS.md.
|
|
33
|
+
*
|
|
34
|
+
* Returns the relative path of the file written, or undefined if skipped.
|
|
35
|
+
*/
|
|
36
|
+
static writeAgentInstructions(projectPath: string, agent?: string, skipGitCheck?: boolean): Promise<string | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if any known agent instruction file or directory already exists.
|
|
39
|
+
*/
|
|
40
|
+
static hasExistingAgentFile(projectPath: string): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Wrap template content with tool-specific frontmatter where required.
|
|
43
|
+
*/
|
|
44
|
+
static wrapWithFrontmatter(targetFile: string, content: string): string;
|
|
16
45
|
/**
|
|
17
46
|
* Check if the directory contains a .git folder
|
|
18
47
|
*/
|
|
@@ -48,7 +77,7 @@ export declare class HostInitializerMain {
|
|
|
48
77
|
/**
|
|
49
78
|
* Generate the final initialization message
|
|
50
79
|
*/
|
|
51
|
-
static generateInitMessage(created: boolean, reset: boolean, resetHard: boolean, resetScope: boolean, interactiveConfig: InteractiveConfig | null): string;
|
|
80
|
+
static generateInitMessage(created: boolean, reset: boolean, resetHard: boolean, resetScope: boolean, interactiveConfig: InteractiveConfig | null, agentFileWritten?: string): string;
|
|
52
81
|
static slots: never[];
|
|
53
82
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
54
83
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
@@ -152,7 +152,7 @@ const handlePromptError = err => {
|
|
|
152
152
|
throw err;
|
|
153
153
|
};
|
|
154
154
|
class HostInitializerMain {
|
|
155
|
-
static async init(absPath, noGit = false, noPackageJson = false, reset = false, resetNew = false, resetLaneNew = false, resetHard = false, resetScope = false, force = false, workspaceConfigProps = {}, generator) {
|
|
155
|
+
static async init(absPath, noGit = false, noPackageJson = false, reset = false, resetNew = false, resetLaneNew = false, resetHard = false, resetScope = false, force = false, workspaceConfigProps = {}, generator, agent) {
|
|
156
156
|
const consumerInfo = await (0, _workspaceModules().getWorkspaceInfo)(absPath || process.cwd());
|
|
157
157
|
// if "bit init" was running without any flags, the user is probably trying to init a new workspace but wasn't aware
|
|
158
158
|
// that he's already in a workspace.
|
|
@@ -190,12 +190,82 @@ class HostInitializerMain {
|
|
|
190
190
|
await consumer.resetLaneNew();
|
|
191
191
|
}
|
|
192
192
|
const writtenConsumer = await consumer.write();
|
|
193
|
+
const created = !consumerInfo?.path;
|
|
194
|
+
let agentFileWritten;
|
|
195
|
+
if (created) {
|
|
196
|
+
agentFileWritten = await HostInitializerMain.writeAgentInstructions(consumerPath, agent);
|
|
197
|
+
}
|
|
193
198
|
return {
|
|
194
|
-
created
|
|
195
|
-
consumer: writtenConsumer
|
|
199
|
+
created,
|
|
200
|
+
consumer: writtenConsumer,
|
|
201
|
+
agentFileWritten
|
|
196
202
|
};
|
|
197
203
|
}
|
|
198
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Supported agent targets and their output file paths (relative to workspace root).
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Write AI agent instructions into the workspace.
|
|
211
|
+
*
|
|
212
|
+
* - Skips if .git exists (git repos use the interactive init flow).
|
|
213
|
+
* - Skips if any known agent instruction file already exists.
|
|
214
|
+
* - When `agent` is provided, writes to the tool-specific path (e.g. CLAUDE.md).
|
|
215
|
+
* - When `agent` is omitted, writes the universal AGENTS.md.
|
|
216
|
+
*
|
|
217
|
+
* Returns the relative path of the file written, or undefined if skipped.
|
|
218
|
+
*/
|
|
219
|
+
static async writeAgentInstructions(projectPath, agent, skipGitCheck = false) {
|
|
220
|
+
if (agent && !HostInitializerMain.AGENT_FILE_MAP[agent]) {
|
|
221
|
+
const supported = Object.keys(HostInitializerMain.AGENT_FILE_MAP).join(', ');
|
|
222
|
+
throw new Error(`unknown --agent value "${agent}". supported values: ${supported}`);
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
// Don't write in git repos — they use the interactive flow.
|
|
226
|
+
// Callers like `bit new` set skipGitCheck because they always create a fresh workspace.
|
|
227
|
+
if (!skipGitCheck && (await HostInitializerMain.hasGitDirectory(projectPath))) return undefined;
|
|
228
|
+
|
|
229
|
+
// Don't write if any agent file already exists.
|
|
230
|
+
if (await HostInitializerMain.hasExistingAgentFile(projectPath)) return undefined;
|
|
231
|
+
const targetFile = agent ? HostInitializerMain.AGENT_FILE_MAP[agent] : 'AGENTS.md';
|
|
232
|
+
const targetPath = path().join(projectPath, targetFile);
|
|
233
|
+
|
|
234
|
+
// Read the shared template content.
|
|
235
|
+
const templatePath = path().join(__dirname, 'agents-template.md');
|
|
236
|
+
const content = await _fsExtra().default.readFile(templatePath, 'utf8');
|
|
237
|
+
|
|
238
|
+
// Some formats require frontmatter.
|
|
239
|
+
const finalContent = HostInitializerMain.wrapWithFrontmatter(targetFile, content);
|
|
240
|
+
await _fsExtra().default.ensureDir(path().dirname(targetPath));
|
|
241
|
+
await _fsExtra().default.writeFile(targetPath, finalContent);
|
|
242
|
+
return targetFile;
|
|
243
|
+
} catch {
|
|
244
|
+
// Don't fail initialization if the agent file cannot be written.
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Check if any known agent instruction file or directory already exists.
|
|
251
|
+
*/
|
|
252
|
+
static async hasExistingAgentFile(projectPath) {
|
|
253
|
+
for (const rel of HostInitializerMain.ALL_AGENT_FILES) {
|
|
254
|
+
if (await _fsExtra().default.pathExists(path().join(projectPath, rel))) return true;
|
|
255
|
+
}
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Wrap template content with tool-specific frontmatter where required.
|
|
261
|
+
*/
|
|
262
|
+
static wrapWithFrontmatter(targetFile, content) {
|
|
263
|
+
if (targetFile === '.cursor/rules/bit.mdc') {
|
|
264
|
+
return ['---', 'description: Bit workspace instructions', 'alwaysApply: true', '---', '', content].join('\n');
|
|
265
|
+
}
|
|
266
|
+
return content;
|
|
267
|
+
}
|
|
268
|
+
|
|
199
269
|
/**
|
|
200
270
|
* Check if the directory contains a .git folder
|
|
201
271
|
*/
|
|
@@ -407,12 +477,15 @@ node_modules
|
|
|
407
477
|
/**
|
|
408
478
|
* Generate the final initialization message
|
|
409
479
|
*/
|
|
410
|
-
static generateInitMessage(created, reset, resetHard, resetScope, interactiveConfig) {
|
|
480
|
+
static generateInitMessage(created, reset, resetHard, resetScope, interactiveConfig, agentFileWritten) {
|
|
411
481
|
let initMessage = (0, _cli().formatSuccessSummary)('initialized a bit workspace.');
|
|
412
482
|
if (!created) initMessage = (0, _cli().formatHint)('successfully re-initialized a bit workspace.');
|
|
413
483
|
if (reset) initMessage = (0, _cli().formatHint)('your bit workspace has been reset successfully.');
|
|
414
484
|
if (resetHard) initMessage = (0, _cli().formatHint)('your bit workspace has been hard-reset successfully.');
|
|
415
485
|
if (resetScope) initMessage = (0, _cli().formatHint)('your local scope has been reset successfully.');
|
|
486
|
+
if (agentFileWritten) {
|
|
487
|
+
initMessage += (0, _cli().formatHint)(`\n Created ${_chalk().default.cyan(agentFileWritten)} — instructions for AI agents working in this workspace`);
|
|
488
|
+
}
|
|
416
489
|
|
|
417
490
|
// Add additional information for interactive mode
|
|
418
491
|
if (interactiveConfig) {
|
|
@@ -444,6 +517,16 @@ node_modules
|
|
|
444
517
|
}
|
|
445
518
|
}
|
|
446
519
|
exports.HostInitializerMain = HostInitializerMain;
|
|
520
|
+
_defineProperty(HostInitializerMain, "AGENT_FILE_MAP", {
|
|
521
|
+
claude: 'CLAUDE.md',
|
|
522
|
+
cursor: '.cursor/rules/bit.mdc',
|
|
523
|
+
copilot: '.github/copilot-instructions.md'
|
|
524
|
+
});
|
|
525
|
+
/**
|
|
526
|
+
* All known agent instruction file paths. Used to detect whether a workspace
|
|
527
|
+
* already contains any agent configuration.
|
|
528
|
+
*/
|
|
529
|
+
_defineProperty(HostInitializerMain, "ALL_AGENT_FILES", ['AGENTS.md', 'CLAUDE.md', '.cursorrules', '.cursor/rules', '.github/copilot-instructions.md']);
|
|
447
530
|
_defineProperty(HostInitializerMain, "slots", []);
|
|
448
531
|
_defineProperty(HostInitializerMain, "dependencies", [_cli().CLIAspect, _logger().LoggerAspect]);
|
|
449
532
|
_defineProperty(HostInitializerMain, "runtime", _cli().MainRuntime);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","path","_interopRequireWildcard","_chalk","_enquirer","_scopeModules","_workspaceModules","_legacy","_objects","_toolboxFs","_config","_mcp","_cli","_objectsWithoutConsumer","_hostInitializer","_initCmd","_createConsumer","_logger","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","promptCancel","handlePromptError","err","Error","HostInitializerMain","init","absPath","noGit","noPackageJson","reset","resetNew","resetLaneNew","resetHard","resetScope","force","workspaceConfigProps","generator","consumerInfo","getWorkspaceInfo","process","cwd","consumerPath","name","basename","resetConsumer","consumer","createConsumer","scopePath","findScopePath","Scope","throwForOutOfSyncScope","writtenConsumer","write","created","hasGitDirectory","projectPath","gitPath","join","stat","fs","isDirectory","hasWorkspaceInitialized","isExist","WorkspaceConfig","Boolean","promptForEnvironment","envChoices","message","response","prompt","type","choices","initial","cancel","environment","promptForPackageManager","enabled","disabled","useExternalPackageManager","promptForMcpServer","setupMcp","editorChoices","editorResponse","editor","updateGitignore","gitignorePath","bitGitignoreSection","exists","pathExists","content","readFile","includes","appendFile","writeFile","trim","setupMcpServer","setupOptions","isGlobal","workspaceDir","consumerProject","McpConfigWriter","setupEditor","rulesOptions","writeRulesFile","runInteractiveMode","selectedEnv","mcpEditor","undefined","externalPackageManager","defaultDirectory","generateInitMessage","interactiveConfig","initMessage","formatSuccessSummary","formatHint","formatTitle","chalk","cyan","provider","cli","loggerMain","logger","createLogger","HostInitializerAspect","id","hostInitializerMain","initCmd","InitCmd","register","exports","CLIAspect","LoggerAspect","MainRuntime","addRuntime","_default","bitMap","isEmpty","scope","getPath","objectsPath","Repository","getPathByScopePath","dirExist","hasObjects","isDirEmpty","ObjectsWithoutConsumer"],"sources":["host-initializer.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport * as path from 'path';\nimport chalk from 'chalk';\nimport { prompt } from 'enquirer';\nimport { findScopePath } from '@teambit/scope.modules.find-scope-path';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { getWorkspaceInfo } from '@teambit/workspace.modules.workspace-locator';\nimport { Scope } from '@teambit/legacy.scope';\nimport { Repository } from '@teambit/objects';\nimport { isDirEmpty } from '@teambit/toolbox.fs.is-dir-empty';\nimport type { WorkspaceExtensionProps } from '@teambit/config';\nimport { WorkspaceConfig } from '@teambit/config';\nimport type { SetupOptions, RulesOptions } from '@teambit/mcp.mcp-config-writer';\nimport { McpConfigWriter } from '@teambit/mcp.mcp-config-writer';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime, formatSuccessSummary, formatHint, formatTitle } from '@teambit/cli';\nimport { ObjectsWithoutConsumer } from './objects-without-consumer';\nimport { HostInitializerAspect } from './host-initializer.aspect';\nimport { InitCmd } from './init-cmd';\nimport { createConsumer, resetConsumer } from './create-consumer';\nimport type { LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\n\nexport interface InteractiveConfig {\n generator?: string;\n externalPackageManager: boolean;\n defaultDirectory: string;\n mcpEditor?: string;\n}\n\n/**\n * Reusable cancel function for prompts\n * By default, canceling the prompt via Ctrl+c throws an empty string.\n * The custom cancel function prevents that behavior.\n * Otherwise, Bit CLI would print an error and confuse users.\n * See related issue: https://github.com/enquirer/enquirer/issues/225\n */\nconst promptCancel = () => {\n // Empty function to prevent default behavior\n};\n\n/**\n * Handle prompt errors consistently\n */\nconst handlePromptError = (err: any): never => {\n if (!err || err === '') {\n // for some reason, when the user clicks Ctrl+C, the error is an empty string\n throw new Error('The prompt has been canceled');\n }\n throw err;\n};\n\nexport class HostInitializerMain {\n static async init(\n absPath?: string,\n noGit = false,\n noPackageJson = false,\n reset = false,\n resetNew = false,\n resetLaneNew = false,\n resetHard = false,\n resetScope = false,\n force = false,\n workspaceConfigProps: WorkspaceExtensionProps = {},\n generator?: string\n ): Promise<{ created: boolean; consumer: Consumer }> {\n const consumerInfo = await getWorkspaceInfo(absPath || process.cwd());\n // if \"bit init\" was running without any flags, the user is probably trying to init a new workspace but wasn't aware\n // that he's already in a workspace.\n if (\n !absPath &&\n consumerInfo?.path &&\n consumerInfo.path !== process.cwd() &&\n !reset &&\n !resetHard &&\n !resetScope &&\n !resetNew &&\n !resetLaneNew\n ) {\n throw new Error(\n `error: unable to init a new workspace in an inner directory of an existing workspace at \"${consumerInfo.path}\"`\n );\n }\n const consumerPath = consumerInfo?.path || absPath || process.cwd();\n\n workspaceConfigProps = {\n ...workspaceConfigProps,\n name: workspaceConfigProps.name || path.basename(consumerPath),\n };\n\n if (reset || resetHard) {\n await resetConsumer(consumerPath, resetHard, noGit);\n }\n let consumer: Consumer | undefined;\n try {\n consumer = await createConsumer(consumerPath, noGit, noPackageJson, workspaceConfigProps, generator);\n } catch {\n // it's possible that at this stage the consumer fails to load due to scope issues.\n // still we want to load it to include its instance of \"scope.json\", so then later when \"consumer.write()\", we\n // don't lose some scope metadata\n }\n if (resetScope) {\n const scopePath = findScopePath(consumerPath);\n if (!scopePath) throw new Error(`fatal: scope not found in the path: ${consumerPath}`);\n await Scope.reset(scopePath, true);\n }\n if (!consumer) consumer = await createConsumer(consumerPath, noGit, noPackageJson, workspaceConfigProps);\n if (!force && !resetScope) {\n await throwForOutOfSyncScope(consumer);\n }\n if (resetNew) {\n await consumer.resetNew();\n }\n if (resetLaneNew) {\n await consumer.resetLaneNew();\n }\n const writtenConsumer = await consumer.write();\n return { created: !consumerInfo?.path, consumer: writtenConsumer };\n }\n\n /**\n * Check if the directory contains a .git folder\n */\n static async hasGitDirectory(projectPath: string): Promise<boolean> {\n try {\n const gitPath = path.join(projectPath, '.git');\n const stat = await fs.stat(gitPath);\n return stat.isDirectory();\n } catch {\n return false;\n }\n }\n\n /**\n * Check if the directory already has a bit workspace initialized\n */\n static async hasWorkspaceInitialized(projectPath: string): Promise<boolean> {\n try {\n const isExist = await WorkspaceConfig.isExist(projectPath);\n return Boolean(isExist);\n } catch {\n return false;\n }\n }\n\n /**\n * Prompt user for environment selection\n */\n static async promptForEnvironment(): Promise<string | null> {\n const envChoices = [\n { name: 'none', message: 'None (default)' },\n { name: 'bitdev.node/node-env', message: 'Node.js environment' },\n { name: 'bitdev.react/react-env', message: 'React environment' },\n { name: 'bitdev.vue/vue-env', message: 'Vue environment' },\n { name: 'bitdev.angular/angular-env', message: 'Angular environment' },\n { name: 'bitdev.symphony/envs/symphony-env', message: 'Symphony environment' },\n ];\n\n try {\n const response = (await prompt({\n type: 'select',\n name: 'environment',\n message: 'Which environment would you like to use?',\n choices: envChoices,\n initial: 0, // Default to 'none'\n cancel: promptCancel,\n } as any)) as { environment: string };\n\n return response.environment === 'none' ? null : response.environment;\n } catch (err: any) {\n return handlePromptError(err);\n }\n }\n\n /**\n * Prompt user for package manager preference\n */\n static async promptForPackageManager(): Promise<boolean> {\n try {\n const response = (await prompt({\n type: 'toggle',\n name: 'useExternalPackageManager',\n message: 'Would you like to use your own package manager (npm/yarn/pnpm) instead of Bit?',\n enabled: 'Yes',\n disabled: 'No',\n cancel: promptCancel,\n } as any)) as { useExternalPackageManager: boolean };\n\n return response.useExternalPackageManager;\n } catch (err: any) {\n return handlePromptError(err);\n }\n }\n\n /**\n * Prompt user for MCP server configuration\n */\n static async promptForMcpServer(): Promise<string | null> {\n try {\n const setupMcp = (await prompt({\n type: 'toggle',\n name: 'setupMcp',\n message: 'Would you like to set up the MCP server for AI-powered development?',\n enabled: 'Yes',\n disabled: 'No',\n cancel: promptCancel,\n } as any)) as { setupMcp: boolean };\n\n if (!setupMcp.setupMcp) {\n return null;\n }\n\n const editorChoices = [\n { name: 'vscode', message: 'VS Code' },\n { name: 'cursor', message: 'Cursor' },\n { name: 'windsurf', message: 'Windsurf' },\n { name: 'roo', message: 'Roo Code' },\n { name: 'cline', message: 'Cline' },\n { name: 'claude-code', message: 'Claude Code' },\n ];\n\n const editorResponse = (await prompt({\n type: 'select',\n name: 'editor',\n message: 'Which editor would you like to configure?',\n choices: editorChoices,\n initial: 0, // Default to VS Code\n cancel: promptCancel,\n } as any)) as { editor: string };\n\n return editorResponse.editor;\n } catch (err: any) {\n return handlePromptError(err);\n }\n }\n\n /**\n * Create or update .gitignore file with Bit-specific entries\n */\n static async updateGitignore(projectPath: string): Promise<void> {\n const gitignorePath = path.join(projectPath, '.gitignore');\n const bitGitignoreSection = `\n# Bit\n.bit\npublic\n# Bit files - generated during bit ws-config write command\ntsconfig.json\n.eslintrc.json\n.prettierrc.cjs\n# allow tsconfig from the env's config dir to be tracked\n!**/config/tsconfig.json\nnode_modules\n`;\n try {\n const exists = await fs.pathExists(gitignorePath);\n if (exists) {\n const content = await fs.readFile(gitignorePath, 'utf8');\n if (!content.includes('# Bit')) {\n await fs.appendFile(gitignorePath, bitGitignoreSection);\n }\n } else {\n await fs.writeFile(gitignorePath, bitGitignoreSection.trim());\n }\n } catch {\n // Don't fail the initialization if gitignore update fails\n // Note: Console logging is handled by the caller\n }\n }\n\n /**\n * Set up MCP server configuration for the selected editor\n */\n static async setupMcpServer(editor: string, projectPath: string): Promise<void> {\n // Set up MCP server configuration\n const setupOptions: SetupOptions = {\n isGlobal: false,\n workspaceDir: projectPath,\n consumerProject: false,\n };\n\n await McpConfigWriter.setupEditor(editor, setupOptions);\n\n // Write rules file for the editor\n const rulesOptions: RulesOptions = {\n isGlobal: false,\n workspaceDir: projectPath,\n consumerProject: false,\n };\n\n await McpConfigWriter.writeRulesFile(editor, rulesOptions);\n }\n\n /**\n * Run interactive mode for Git repositories\n */\n static async runInteractiveMode(projectPath: string): Promise<InteractiveConfig> {\n const selectedEnv = await HostInitializerMain.promptForEnvironment();\n const useExternalPackageManager = await HostInitializerMain.promptForPackageManager();\n const mcpEditor = await HostInitializerMain.promptForMcpServer();\n\n // Set up MCP server if user selected an editor\n if (mcpEditor) {\n await HostInitializerMain.setupMcpServer(mcpEditor, projectPath);\n }\n\n await HostInitializerMain.updateGitignore(projectPath);\n\n return {\n generator: selectedEnv || undefined,\n externalPackageManager: useExternalPackageManager,\n defaultDirectory: 'bit-components/{scope}/{name}',\n mcpEditor: mcpEditor || undefined,\n };\n }\n\n /**\n * Generate the final initialization message\n */\n static generateInitMessage(\n created: boolean,\n reset: boolean,\n resetHard: boolean,\n resetScope: boolean,\n interactiveConfig: InteractiveConfig | null\n ): string {\n let initMessage = formatSuccessSummary('initialized a bit workspace.');\n\n if (!created) initMessage = formatHint('successfully re-initialized a bit workspace.');\n if (reset) initMessage = formatHint('your bit workspace has been reset successfully.');\n if (resetHard) initMessage = formatHint('your bit workspace has been hard-reset successfully.');\n if (resetScope) initMessage = formatHint('your local scope has been reset successfully.');\n\n // Add additional information for interactive mode\n if (interactiveConfig) {\n initMessage += `\\n\\n${formatTitle('Additional Information')}`;\n const defaultDirectory = interactiveConfig?.defaultDirectory || 'bit-components/{scope}/{name}';\n initMessage += `\\n Components will be created in: ${chalk.cyan(defaultDirectory)}`;\n initMessage += `\\n For CI/CD setup, visit: https://bit.dev/docs/getting-started/collaborate/exporting-components#custom-ci/cd-setup`;\n\n if (interactiveConfig.generator) {\n initMessage += `\\n Environment: ${chalk.cyan(interactiveConfig.generator)}`;\n }\n\n if (interactiveConfig.mcpEditor) {\n initMessage += `\\n MCP server configured for: ${chalk.cyan(interactiveConfig.mcpEditor)}`;\n }\n\n if (interactiveConfig.externalPackageManager) {\n initMessage += `\\n External package manager mode enabled`;\n initMessage += formatHint(\n `\\n Run ${chalk.cyan('pnpm install')} (or ${chalk.cyan('yarn install')}/${chalk.cyan('npm install')}) to install dependencies`\n );\n } else if (interactiveConfig.generator) {\n initMessage += formatHint(`\\n Run ${chalk.cyan('bit install')} to install dependencies`);\n }\n }\n\n return initMessage;\n }\n\n static slots = [];\n static dependencies = [CLIAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([cli, loggerMain]: [CLIMain, LoggerMain]) {\n const logger = loggerMain.createLogger(HostInitializerAspect.id);\n const hostInitializerMain = new HostInitializerMain();\n const initCmd = new InitCmd(hostInitializerMain, logger);\n cli.register(initCmd);\n return hostInitializerMain;\n }\n}\n\nHostInitializerAspect.addRuntime(HostInitializerMain);\n\nexport default HostInitializerMain;\n\n/**\n * throw an error when .bitmap is empty but a scope has objects.\n * a user may got into this state for reasons such as:\n * 1. deleting manually .bitmap hoping to re-start Bit from scratch. (probably unaware of `--reset-hard` flag).\n * 2. switching to a branch where Bit wasn't initialized\n * in which case, it's better to stop and show an error describing what needs to be done.\n * it can always be ignored by entering `--force` flag.\n */\nasync function throwForOutOfSyncScope(consumer: Consumer): Promise<void> {\n if (!consumer.bitMap.isEmpty()) return;\n const scopePath = consumer.scope.getPath();\n const objectsPath = Repository.getPathByScopePath(scopePath);\n const dirExist = await fs.pathExists(objectsPath);\n if (!dirExist) return;\n const hasObjects = !(await isDirEmpty(objectsPath));\n if (hasObjects) {\n throw new ObjectsWithoutConsumer(scopePath);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","path","_interopRequireWildcard","_chalk","_enquirer","_scopeModules","_workspaceModules","_legacy","_objects","_toolboxFs","_config","_mcp","_cli","_objectsWithoutConsumer","_hostInitializer","_initCmd","_createConsumer","_logger","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","promptCancel","handlePromptError","err","Error","HostInitializerMain","init","absPath","noGit","noPackageJson","reset","resetNew","resetLaneNew","resetHard","resetScope","force","workspaceConfigProps","generator","agent","consumerInfo","getWorkspaceInfo","process","cwd","consumerPath","name","basename","resetConsumer","consumer","createConsumer","scopePath","findScopePath","Scope","throwForOutOfSyncScope","writtenConsumer","write","created","agentFileWritten","writeAgentInstructions","projectPath","skipGitCheck","AGENT_FILE_MAP","supported","join","hasGitDirectory","undefined","hasExistingAgentFile","targetFile","targetPath","templatePath","__dirname","content","fs","readFile","finalContent","wrapWithFrontmatter","ensureDir","dirname","writeFile","rel","ALL_AGENT_FILES","pathExists","gitPath","stat","isDirectory","hasWorkspaceInitialized","isExist","WorkspaceConfig","Boolean","promptForEnvironment","envChoices","message","response","prompt","type","choices","initial","cancel","environment","promptForPackageManager","enabled","disabled","useExternalPackageManager","promptForMcpServer","setupMcp","editorChoices","editorResponse","editor","updateGitignore","gitignorePath","bitGitignoreSection","exists","includes","appendFile","trim","setupMcpServer","setupOptions","isGlobal","workspaceDir","consumerProject","McpConfigWriter","setupEditor","rulesOptions","writeRulesFile","runInteractiveMode","selectedEnv","mcpEditor","externalPackageManager","defaultDirectory","generateInitMessage","interactiveConfig","initMessage","formatSuccessSummary","formatHint","chalk","cyan","formatTitle","provider","cli","loggerMain","logger","createLogger","HostInitializerAspect","id","hostInitializerMain","initCmd","InitCmd","register","exports","claude","cursor","copilot","CLIAspect","LoggerAspect","MainRuntime","addRuntime","_default","bitMap","isEmpty","scope","getPath","objectsPath","Repository","getPathByScopePath","dirExist","hasObjects","isDirEmpty","ObjectsWithoutConsumer"],"sources":["host-initializer.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport * as path from 'path';\nimport chalk from 'chalk';\nimport { prompt } from 'enquirer';\nimport { findScopePath } from '@teambit/scope.modules.find-scope-path';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { getWorkspaceInfo } from '@teambit/workspace.modules.workspace-locator';\nimport { Scope } from '@teambit/legacy.scope';\nimport { Repository } from '@teambit/objects';\nimport { isDirEmpty } from '@teambit/toolbox.fs.is-dir-empty';\nimport type { WorkspaceExtensionProps } from '@teambit/config';\nimport { WorkspaceConfig } from '@teambit/config';\nimport type { SetupOptions, RulesOptions } from '@teambit/mcp.mcp-config-writer';\nimport { McpConfigWriter } from '@teambit/mcp.mcp-config-writer';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime, formatSuccessSummary, formatHint, formatTitle } from '@teambit/cli';\nimport { ObjectsWithoutConsumer } from './objects-without-consumer';\nimport { HostInitializerAspect } from './host-initializer.aspect';\nimport { InitCmd } from './init-cmd';\nimport { createConsumer, resetConsumer } from './create-consumer';\nimport type { LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\n\nexport interface InteractiveConfig {\n generator?: string;\n externalPackageManager: boolean;\n defaultDirectory: string;\n mcpEditor?: string;\n}\n\n/**\n * Reusable cancel function for prompts\n * By default, canceling the prompt via Ctrl+c throws an empty string.\n * The custom cancel function prevents that behavior.\n * Otherwise, Bit CLI would print an error and confuse users.\n * See related issue: https://github.com/enquirer/enquirer/issues/225\n */\nconst promptCancel = () => {\n // Empty function to prevent default behavior\n};\n\n/**\n * Handle prompt errors consistently\n */\nconst handlePromptError = (err: any): never => {\n if (!err || err === '') {\n // for some reason, when the user clicks Ctrl+C, the error is an empty string\n throw new Error('The prompt has been canceled');\n }\n throw err;\n};\n\nexport class HostInitializerMain {\n static async init(\n absPath?: string,\n noGit = false,\n noPackageJson = false,\n reset = false,\n resetNew = false,\n resetLaneNew = false,\n resetHard = false,\n resetScope = false,\n force = false,\n workspaceConfigProps: WorkspaceExtensionProps = {},\n generator?: string,\n agent?: string\n ): Promise<{ created: boolean; consumer: Consumer; agentFileWritten?: string }> {\n const consumerInfo = await getWorkspaceInfo(absPath || process.cwd());\n // if \"bit init\" was running without any flags, the user is probably trying to init a new workspace but wasn't aware\n // that he's already in a workspace.\n if (\n !absPath &&\n consumerInfo?.path &&\n consumerInfo.path !== process.cwd() &&\n !reset &&\n !resetHard &&\n !resetScope &&\n !resetNew &&\n !resetLaneNew\n ) {\n throw new Error(\n `error: unable to init a new workspace in an inner directory of an existing workspace at \"${consumerInfo.path}\"`\n );\n }\n const consumerPath = consumerInfo?.path || absPath || process.cwd();\n\n workspaceConfigProps = {\n ...workspaceConfigProps,\n name: workspaceConfigProps.name || path.basename(consumerPath),\n };\n\n if (reset || resetHard) {\n await resetConsumer(consumerPath, resetHard, noGit);\n }\n let consumer: Consumer | undefined;\n try {\n consumer = await createConsumer(consumerPath, noGit, noPackageJson, workspaceConfigProps, generator);\n } catch {\n // it's possible that at this stage the consumer fails to load due to scope issues.\n // still we want to load it to include its instance of \"scope.json\", so then later when \"consumer.write()\", we\n // don't lose some scope metadata\n }\n if (resetScope) {\n const scopePath = findScopePath(consumerPath);\n if (!scopePath) throw new Error(`fatal: scope not found in the path: ${consumerPath}`);\n await Scope.reset(scopePath, true);\n }\n if (!consumer) consumer = await createConsumer(consumerPath, noGit, noPackageJson, workspaceConfigProps);\n if (!force && !resetScope) {\n await throwForOutOfSyncScope(consumer);\n }\n if (resetNew) {\n await consumer.resetNew();\n }\n if (resetLaneNew) {\n await consumer.resetLaneNew();\n }\n const writtenConsumer = await consumer.write();\n const created = !consumerInfo?.path;\n let agentFileWritten: string | undefined;\n if (created) {\n agentFileWritten = await HostInitializerMain.writeAgentInstructions(consumerPath, agent);\n }\n return { created, consumer: writtenConsumer, agentFileWritten };\n }\n\n /**\n * Supported agent targets and their output file paths (relative to workspace root).\n */\n static readonly AGENT_FILE_MAP: Record<string, string> = {\n claude: 'CLAUDE.md',\n cursor: '.cursor/rules/bit.mdc',\n copilot: '.github/copilot-instructions.md',\n };\n\n /**\n * All known agent instruction file paths. Used to detect whether a workspace\n * already contains any agent configuration.\n */\n static readonly ALL_AGENT_FILES = [\n 'AGENTS.md',\n 'CLAUDE.md',\n '.cursorrules',\n '.cursor/rules',\n '.github/copilot-instructions.md',\n ];\n\n /**\n * Write AI agent instructions into the workspace.\n *\n * - Skips if .git exists (git repos use the interactive init flow).\n * - Skips if any known agent instruction file already exists.\n * - When `agent` is provided, writes to the tool-specific path (e.g. CLAUDE.md).\n * - When `agent` is omitted, writes the universal AGENTS.md.\n *\n * Returns the relative path of the file written, or undefined if skipped.\n */\n static async writeAgentInstructions(\n projectPath: string,\n agent?: string,\n skipGitCheck = false\n ): Promise<string | undefined> {\n if (agent && !HostInitializerMain.AGENT_FILE_MAP[agent]) {\n const supported = Object.keys(HostInitializerMain.AGENT_FILE_MAP).join(', ');\n throw new Error(`unknown --agent value \"${agent}\". supported values: ${supported}`);\n }\n try {\n // Don't write in git repos — they use the interactive flow.\n // Callers like `bit new` set skipGitCheck because they always create a fresh workspace.\n if (!skipGitCheck && (await HostInitializerMain.hasGitDirectory(projectPath))) return undefined;\n\n // Don't write if any agent file already exists.\n if (await HostInitializerMain.hasExistingAgentFile(projectPath)) return undefined;\n\n const targetFile = agent ? HostInitializerMain.AGENT_FILE_MAP[agent] : 'AGENTS.md';\n const targetPath = path.join(projectPath, targetFile);\n\n // Read the shared template content.\n const templatePath = path.join(__dirname, 'agents-template.md');\n const content = await fs.readFile(templatePath, 'utf8');\n\n // Some formats require frontmatter.\n const finalContent = HostInitializerMain.wrapWithFrontmatter(targetFile, content);\n\n await fs.ensureDir(path.dirname(targetPath));\n await fs.writeFile(targetPath, finalContent);\n return targetFile;\n } catch {\n // Don't fail initialization if the agent file cannot be written.\n return undefined;\n }\n }\n\n /**\n * Check if any known agent instruction file or directory already exists.\n */\n static async hasExistingAgentFile(projectPath: string): Promise<boolean> {\n for (const rel of HostInitializerMain.ALL_AGENT_FILES) {\n if (await fs.pathExists(path.join(projectPath, rel))) return true;\n }\n return false;\n }\n\n /**\n * Wrap template content with tool-specific frontmatter where required.\n */\n static wrapWithFrontmatter(targetFile: string, content: string): string {\n if (targetFile === '.cursor/rules/bit.mdc') {\n return ['---', 'description: Bit workspace instructions', 'alwaysApply: true', '---', '', content].join('\\n');\n }\n return content;\n }\n\n /**\n * Check if the directory contains a .git folder\n */\n static async hasGitDirectory(projectPath: string): Promise<boolean> {\n try {\n const gitPath = path.join(projectPath, '.git');\n const stat = await fs.stat(gitPath);\n return stat.isDirectory();\n } catch {\n return false;\n }\n }\n\n /**\n * Check if the directory already has a bit workspace initialized\n */\n static async hasWorkspaceInitialized(projectPath: string): Promise<boolean> {\n try {\n const isExist = await WorkspaceConfig.isExist(projectPath);\n return Boolean(isExist);\n } catch {\n return false;\n }\n }\n\n /**\n * Prompt user for environment selection\n */\n static async promptForEnvironment(): Promise<string | null> {\n const envChoices = [\n { name: 'none', message: 'None (default)' },\n { name: 'bitdev.node/node-env', message: 'Node.js environment' },\n { name: 'bitdev.react/react-env', message: 'React environment' },\n { name: 'bitdev.vue/vue-env', message: 'Vue environment' },\n { name: 'bitdev.angular/angular-env', message: 'Angular environment' },\n { name: 'bitdev.symphony/envs/symphony-env', message: 'Symphony environment' },\n ];\n\n try {\n const response = (await prompt({\n type: 'select',\n name: 'environment',\n message: 'Which environment would you like to use?',\n choices: envChoices,\n initial: 0, // Default to 'none'\n cancel: promptCancel,\n } as any)) as { environment: string };\n\n return response.environment === 'none' ? null : response.environment;\n } catch (err: any) {\n return handlePromptError(err);\n }\n }\n\n /**\n * Prompt user for package manager preference\n */\n static async promptForPackageManager(): Promise<boolean> {\n try {\n const response = (await prompt({\n type: 'toggle',\n name: 'useExternalPackageManager',\n message: 'Would you like to use your own package manager (npm/yarn/pnpm) instead of Bit?',\n enabled: 'Yes',\n disabled: 'No',\n cancel: promptCancel,\n } as any)) as { useExternalPackageManager: boolean };\n\n return response.useExternalPackageManager;\n } catch (err: any) {\n return handlePromptError(err);\n }\n }\n\n /**\n * Prompt user for MCP server configuration\n */\n static async promptForMcpServer(): Promise<string | null> {\n try {\n const setupMcp = (await prompt({\n type: 'toggle',\n name: 'setupMcp',\n message: 'Would you like to set up the MCP server for AI-powered development?',\n enabled: 'Yes',\n disabled: 'No',\n cancel: promptCancel,\n } as any)) as { setupMcp: boolean };\n\n if (!setupMcp.setupMcp) {\n return null;\n }\n\n const editorChoices = [\n { name: 'vscode', message: 'VS Code' },\n { name: 'cursor', message: 'Cursor' },\n { name: 'windsurf', message: 'Windsurf' },\n { name: 'roo', message: 'Roo Code' },\n { name: 'cline', message: 'Cline' },\n { name: 'claude-code', message: 'Claude Code' },\n ];\n\n const editorResponse = (await prompt({\n type: 'select',\n name: 'editor',\n message: 'Which editor would you like to configure?',\n choices: editorChoices,\n initial: 0, // Default to VS Code\n cancel: promptCancel,\n } as any)) as { editor: string };\n\n return editorResponse.editor;\n } catch (err: any) {\n return handlePromptError(err);\n }\n }\n\n /**\n * Create or update .gitignore file with Bit-specific entries\n */\n static async updateGitignore(projectPath: string): Promise<void> {\n const gitignorePath = path.join(projectPath, '.gitignore');\n const bitGitignoreSection = `\n# Bit\n.bit\npublic\n# Bit files - generated during bit ws-config write command\ntsconfig.json\n.eslintrc.json\n.prettierrc.cjs\n# allow tsconfig from the env's config dir to be tracked\n!**/config/tsconfig.json\nnode_modules\n`;\n try {\n const exists = await fs.pathExists(gitignorePath);\n if (exists) {\n const content = await fs.readFile(gitignorePath, 'utf8');\n if (!content.includes('# Bit')) {\n await fs.appendFile(gitignorePath, bitGitignoreSection);\n }\n } else {\n await fs.writeFile(gitignorePath, bitGitignoreSection.trim());\n }\n } catch {\n // Don't fail the initialization if gitignore update fails\n // Note: Console logging is handled by the caller\n }\n }\n\n /**\n * Set up MCP server configuration for the selected editor\n */\n static async setupMcpServer(editor: string, projectPath: string): Promise<void> {\n // Set up MCP server configuration\n const setupOptions: SetupOptions = {\n isGlobal: false,\n workspaceDir: projectPath,\n consumerProject: false,\n };\n\n await McpConfigWriter.setupEditor(editor, setupOptions);\n\n // Write rules file for the editor\n const rulesOptions: RulesOptions = {\n isGlobal: false,\n workspaceDir: projectPath,\n consumerProject: false,\n };\n\n await McpConfigWriter.writeRulesFile(editor, rulesOptions);\n }\n\n /**\n * Run interactive mode for Git repositories\n */\n static async runInteractiveMode(projectPath: string): Promise<InteractiveConfig> {\n const selectedEnv = await HostInitializerMain.promptForEnvironment();\n const useExternalPackageManager = await HostInitializerMain.promptForPackageManager();\n const mcpEditor = await HostInitializerMain.promptForMcpServer();\n\n // Set up MCP server if user selected an editor\n if (mcpEditor) {\n await HostInitializerMain.setupMcpServer(mcpEditor, projectPath);\n }\n\n await HostInitializerMain.updateGitignore(projectPath);\n\n return {\n generator: selectedEnv || undefined,\n externalPackageManager: useExternalPackageManager,\n defaultDirectory: 'bit-components/{scope}/{name}',\n mcpEditor: mcpEditor || undefined,\n };\n }\n\n /**\n * Generate the final initialization message\n */\n static generateInitMessage(\n created: boolean,\n reset: boolean,\n resetHard: boolean,\n resetScope: boolean,\n interactiveConfig: InteractiveConfig | null,\n agentFileWritten?: string\n ): string {\n let initMessage = formatSuccessSummary('initialized a bit workspace.');\n\n if (!created) initMessage = formatHint('successfully re-initialized a bit workspace.');\n if (reset) initMessage = formatHint('your bit workspace has been reset successfully.');\n if (resetHard) initMessage = formatHint('your bit workspace has been hard-reset successfully.');\n if (resetScope) initMessage = formatHint('your local scope has been reset successfully.');\n\n if (agentFileWritten) {\n initMessage += formatHint(\n `\\n Created ${chalk.cyan(agentFileWritten)} — instructions for AI agents working in this workspace`\n );\n }\n\n // Add additional information for interactive mode\n if (interactiveConfig) {\n initMessage += `\\n\\n${formatTitle('Additional Information')}`;\n const defaultDirectory = interactiveConfig?.defaultDirectory || 'bit-components/{scope}/{name}';\n initMessage += `\\n Components will be created in: ${chalk.cyan(defaultDirectory)}`;\n initMessage += `\\n For CI/CD setup, visit: https://bit.dev/docs/getting-started/collaborate/exporting-components#custom-ci/cd-setup`;\n\n if (interactiveConfig.generator) {\n initMessage += `\\n Environment: ${chalk.cyan(interactiveConfig.generator)}`;\n }\n\n if (interactiveConfig.mcpEditor) {\n initMessage += `\\n MCP server configured for: ${chalk.cyan(interactiveConfig.mcpEditor)}`;\n }\n\n if (interactiveConfig.externalPackageManager) {\n initMessage += `\\n External package manager mode enabled`;\n initMessage += formatHint(\n `\\n Run ${chalk.cyan('pnpm install')} (or ${chalk.cyan('yarn install')}/${chalk.cyan('npm install')}) to install dependencies`\n );\n } else if (interactiveConfig.generator) {\n initMessage += formatHint(`\\n Run ${chalk.cyan('bit install')} to install dependencies`);\n }\n }\n\n return initMessage;\n }\n\n static slots = [];\n static dependencies = [CLIAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([cli, loggerMain]: [CLIMain, LoggerMain]) {\n const logger = loggerMain.createLogger(HostInitializerAspect.id);\n const hostInitializerMain = new HostInitializerMain();\n const initCmd = new InitCmd(hostInitializerMain, logger);\n cli.register(initCmd);\n return hostInitializerMain;\n }\n}\n\nHostInitializerAspect.addRuntime(HostInitializerMain);\n\nexport default HostInitializerMain;\n\n/**\n * throw an error when .bitmap is empty but a scope has objects.\n * a user may got into this state for reasons such as:\n * 1. deleting manually .bitmap hoping to re-start Bit from scratch. (probably unaware of `--reset-hard` flag).\n * 2. switching to a branch where Bit wasn't initialized\n * in which case, it's better to stop and show an error describing what needs to be done.\n * it can always be ignored by entering `--force` flag.\n */\nasync function throwForOutOfSyncScope(consumer: Consumer): Promise<void> {\n if (!consumer.bitMap.isEmpty()) return;\n const scopePath = consumer.scope.getPath();\n const objectsPath = Repository.getPathByScopePath(scopePath);\n const dirExist = await fs.pathExists(objectsPath);\n if (!dirExist) return;\n const hasObjects = !(await isDirEmpty(objectsPath));\n if (hasObjects) {\n throw new ObjectsWithoutConsumer(scopePath);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/init-cmd.js
CHANGED
|
@@ -79,7 +79,7 @@ if already a workspace, validates and repairs Bit files as needed.
|
|
|
79
79
|
supports various reset options to recover from corrupted state or restart from scratch.`);
|
|
80
80
|
_defineProperty(this, "alias", '');
|
|
81
81
|
_defineProperty(this, "loadAspects", false);
|
|
82
|
-
_defineProperty(this, "options", [['n', 'name <workspace-name>', 'name of the workspace'], ['', 'generator <env-id>', 'for multiple, separate by a comma. add env-ids into the generators field in the workspace config for future "bit create" templates'], ['T', 'standalone', 'do not nest component store within .git directory and do not write config data inside package.json'], ['', 'no-package-json', 'do not generate package.json'], ['r', 'reset', 'write missing or damaged Bit files'], ['', 'reset-new', 'reset .bitmap file as if the components were newly added and remove all model data (objects)'], ['', 'reset-lane-new', 'same as reset-new, but it only resets components belong to lanes. main components are left intact'], ['', 'reset-hard', 'delete all Bit files and directories, including Bit configuration, tracking and model data. Useful for re-starting workspace from scratch'], ['', 'reset-scope', 'removes local scope (.bit or .git/bit). tags/snaps that have not been exported will be lost. workspace is left intact'], ['d', 'default-directory <default-directory>', 'set the default directory pattern to import/create components into'], ['', 'default-scope <default-scope>', 'set the default scope for components in the workspace'], ['f', 'force', 'force workspace initialization without clearing local objects'], ['b', 'bare [name]', 'initialize an empty bit bare scope'], ['s', 'shared <groupname>', 'add group write permissions to a scope properly'], ['', 'external-package-manager', 'enable external package manager mode (npm/yarn/pnpm)'], ['', 'skip-interactive', 'skip interactive mode for Git repositories']]);
|
|
82
|
+
_defineProperty(this, "options", [['n', 'name <workspace-name>', 'name of the workspace'], ['', 'generator <env-id>', 'for multiple, separate by a comma. add env-ids into the generators field in the workspace config for future "bit create" templates'], ['T', 'standalone', 'do not nest component store within .git directory and do not write config data inside package.json'], ['', 'no-package-json', 'do not generate package.json'], ['r', 'reset', 'write missing or damaged Bit files'], ['', 'reset-new', 'reset .bitmap file as if the components were newly added and remove all model data (objects)'], ['', 'reset-lane-new', 'same as reset-new, but it only resets components belong to lanes. main components are left intact'], ['', 'reset-hard', 'delete all Bit files and directories, including Bit configuration, tracking and model data. Useful for re-starting workspace from scratch'], ['', 'reset-scope', 'removes local scope (.bit or .git/bit). tags/snaps that have not been exported will be lost. workspace is left intact'], ['d', 'default-directory <default-directory>', 'set the default directory pattern to import/create components into'], ['', 'default-scope <default-scope>', 'set the default scope for components in the workspace'], ['f', 'force', 'force workspace initialization without clearing local objects'], ['b', 'bare [name]', 'initialize an empty bit bare scope'], ['s', 'shared <groupname>', 'add group write permissions to a scope properly'], ['', 'external-package-manager', 'enable external package manager mode (npm/yarn/pnpm)'], ['', 'skip-interactive', 'skip interactive mode for Git repositories'], ['', 'agent [type]', 'create an AI agent instructions file. options: claude, cursor, copilot (default: AGENTS.md)']]);
|
|
83
83
|
}
|
|
84
84
|
async handleInteractiveMode(projectPath, flags) {
|
|
85
85
|
const {
|
|
@@ -130,7 +130,8 @@ supports various reset options to recover from corrupted state or restart from s
|
|
|
130
130
|
force,
|
|
131
131
|
defaultDirectory,
|
|
132
132
|
defaultScope,
|
|
133
|
-
externalPackageManager
|
|
133
|
+
externalPackageManager,
|
|
134
|
+
agent
|
|
134
135
|
} = flags;
|
|
135
136
|
if (path) path = pathlib().resolve(path);
|
|
136
137
|
if (bare) {
|
|
@@ -151,10 +152,14 @@ supports various reset options to recover from corrupted state or restart from s
|
|
|
151
152
|
name,
|
|
152
153
|
externalPackageManager: interactiveConfig?.externalPackageManager || externalPackageManager
|
|
153
154
|
};
|
|
155
|
+
|
|
156
|
+
// Resolve agent flag: true means no specific type (use default AGENTS.md), string means a specific tool.
|
|
157
|
+
const agentType = agent === true ? undefined : agent || undefined;
|
|
154
158
|
const {
|
|
155
|
-
created
|
|
156
|
-
|
|
157
|
-
|
|
159
|
+
created,
|
|
160
|
+
agentFileWritten
|
|
161
|
+
} = await _hostInitializerMain().HostInitializerMain.init(path, standalone, noPackageJson, reset, resetNew, resetLaneNew, resetHard, resetScope, force, workspaceExtensionProps, interactiveConfig?.generator || generator, agentType);
|
|
162
|
+
return _hostInitializerMain().HostInitializerMain.generateInitMessage(created, reset, resetHard, resetScope, interactiveConfig, agentFileWritten);
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
165
|
exports.InitCmd = InitCmd;
|
package/dist/init-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","pathlib","_interopRequireWildcard","_bitError","_configStore","_legacy","_legacy2","_cli","_hostInitializerMain","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","InitCmd","constructor","hostInitializer","logger","handleInteractiveMode","projectPath","flags","reset","resetNew","resetLaneNew","resetHard","resetScope","standalone","skipInteractive","externalPackageManager","HostInitializerMain","hasGitDirectory","hasWorkspaceInitialized","off","console","chalk","cyan","interactiveConfig","runInteractiveMode","mcpEditor","setupMcpServer","green","error","consoleWarning","message","report","path","name","generator","bare","shared","noPackageJson","force","defaultDirectory","defaultScope","resolve","BitError","bareVal","initScope","formatSuccessSummary","process","cwd","workspaceExtensionProps","getConfig","CFG_INIT_DEFAULT_DIRECTORY","CFG_INIT_DEFAULT_SCOPE","created","init","generateInitMessage","exports"],"sources":["init-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport * as pathlib from 'path';\nimport { BitError } from '@teambit/bit-error';\nimport { getConfig } from '@teambit/config-store';\nimport { initScope } from '@teambit/legacy.scope-api';\nimport { CFG_INIT_DEFAULT_SCOPE, CFG_INIT_DEFAULT_DIRECTORY } from '@teambit/legacy.constants';\nimport type { WorkspaceExtensionProps } from '@teambit/config';\nimport type { Command, CommandOptions } from '@teambit/cli';\nimport { formatSuccessSummary } from '@teambit/cli';\nimport type { InteractiveConfig } from './host-initializer.main.runtime';\nimport { HostInitializerMain } from './host-initializer.main.runtime';\nimport type { Logger } from '@teambit/logger';\n\nexport class InitCmd implements Command {\n name = 'init [path]';\n skipWorkspace = true;\n description = 'initialize a Bit workspace in an existing project';\n helpUrl = 'reference/workspace/creating-workspaces/?new_existing_project=1';\n group = 'workspace-setup';\n extendedDescription = `creates Bit configuration files in an existing project directory to start tracking components.\nif already a workspace, validates and repairs Bit files as needed.\nsupports various reset options to recover from corrupted state or restart from scratch.`;\n alias = '';\n loadAspects = false;\n options = [\n ['n', 'name <workspace-name>', 'name of the workspace'],\n [\n '',\n 'generator <env-id>',\n 'for multiple, separate by a comma. add env-ids into the generators field in the workspace config for future \"bit create\" templates',\n ],\n [\n 'T',\n 'standalone',\n 'do not nest component store within .git directory and do not write config data inside package.json',\n ],\n ['', 'no-package-json', 'do not generate package.json'],\n ['r', 'reset', 'write missing or damaged Bit files'],\n ['', 'reset-new', 'reset .bitmap file as if the components were newly added and remove all model data (objects)'],\n [\n '',\n 'reset-lane-new',\n 'same as reset-new, but it only resets components belong to lanes. main components are left intact',\n ],\n [\n '',\n 'reset-hard',\n 'delete all Bit files and directories, including Bit configuration, tracking and model data. Useful for re-starting workspace from scratch',\n ],\n [\n '',\n 'reset-scope',\n 'removes local scope (.bit or .git/bit). tags/snaps that have not been exported will be lost. workspace is left intact',\n ],\n [\n 'd',\n 'default-directory <default-directory>',\n 'set the default directory pattern to import/create components into',\n ],\n ['', 'default-scope <default-scope>', 'set the default scope for components in the workspace'],\n ['f', 'force', 'force workspace initialization without clearing local objects'],\n ['b', 'bare [name]', 'initialize an empty bit bare scope'],\n ['s', 'shared <groupname>', 'add group write permissions to a scope properly'],\n ['', 'external-package-manager', 'enable external package manager mode (npm/yarn/pnpm)'],\n ['', 'skip-interactive', 'skip interactive mode for Git repositories'],\n ] as CommandOptions;\n\n constructor(\n private hostInitializer: HostInitializerMain,\n private logger: Logger\n ) {}\n\n private async handleInteractiveMode(\n projectPath: string,\n flags: Record<string, any>\n ): Promise<InteractiveConfig | null> {\n const {\n reset,\n resetNew,\n resetLaneNew,\n resetHard,\n resetScope,\n standalone,\n skipInteractive,\n externalPackageManager,\n } = flags;\n\n // Check if we should run interactive mode\n if (\n reset ||\n resetNew ||\n resetLaneNew ||\n resetHard ||\n resetScope ||\n standalone ||\n skipInteractive ||\n externalPackageManager ||\n !(await HostInitializerMain.hasGitDirectory(projectPath)) ||\n (await HostInitializerMain.hasWorkspaceInitialized(projectPath))\n ) {\n return null;\n }\n\n this.logger.off();\n this.logger.console(chalk.cyan('🔧 Interactive setup for existing Git repository\\n'));\n\n try {\n const interactiveConfig = await HostInitializerMain.runInteractiveMode(projectPath);\n\n // Set up MCP server if user selected an editor\n if (interactiveConfig.mcpEditor) {\n this.logger.console(chalk.cyan(`\\n🔧 Setting up MCP server for ${interactiveConfig.mcpEditor}...`));\n await HostInitializerMain.setupMcpServer(interactiveConfig.mcpEditor, projectPath);\n this.logger.console(chalk.green(`✅ MCP server configured for ${interactiveConfig.mcpEditor}`));\n }\n\n return interactiveConfig;\n } catch (error: any) {\n this.logger.consoleWarning(`Warning: Interactive setup failed: ${error.message}`);\n return null;\n }\n }\n\n async report([path]: [string], flags: Record<string, any>) {\n const {\n name,\n generator,\n bare,\n shared,\n standalone,\n noPackageJson,\n reset,\n resetNew,\n resetLaneNew,\n resetHard,\n resetScope,\n force,\n defaultDirectory,\n defaultScope,\n externalPackageManager,\n } = flags;\n\n if (path) path = pathlib.resolve(path);\n\n if (bare) {\n if (reset || resetHard) throw new BitError('--reset and --reset-hard flags are not available for bare scope');\n // Handle both cases init --bare and init --bare [scopeName]\n const bareVal = bare === true ? '' : bare;\n await initScope(path, bareVal, shared);\n return formatSuccessSummary('initialized an empty bare bit scope.');\n }\n\n if (reset && resetHard) {\n throw new BitError('cannot use both --reset and --reset-hard, please use only one of them');\n }\n\n const projectPath = path || process.cwd();\n const interactiveConfig = await this.handleInteractiveMode(projectPath, flags);\n\n const workspaceExtensionProps: WorkspaceExtensionProps & { externalPackageManager?: boolean } = {\n defaultDirectory:\n interactiveConfig?.defaultDirectory ||\n (externalPackageManager ? 'bit-components/{scope}/{name}' : defaultDirectory) ||\n getConfig(CFG_INIT_DEFAULT_DIRECTORY),\n defaultScope: defaultScope || getConfig(CFG_INIT_DEFAULT_SCOPE),\n name,\n externalPackageManager: interactiveConfig?.externalPackageManager || externalPackageManager,\n };\n\n const { created } = await HostInitializerMain.init(\n path,\n standalone,\n noPackageJson,\n reset,\n resetNew,\n resetLaneNew,\n resetHard,\n resetScope,\n force,\n workspaceExtensionProps,\n interactiveConfig?.generator || generator\n );\n\n return HostInitializerMain.generateInitMessage(created, reset, resetHard, resetScope, interactiveConfig);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","pathlib","_interopRequireWildcard","_bitError","_configStore","_legacy","_legacy2","_cli","_hostInitializerMain","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","InitCmd","constructor","hostInitializer","logger","handleInteractiveMode","projectPath","flags","reset","resetNew","resetLaneNew","resetHard","resetScope","standalone","skipInteractive","externalPackageManager","HostInitializerMain","hasGitDirectory","hasWorkspaceInitialized","off","console","chalk","cyan","interactiveConfig","runInteractiveMode","mcpEditor","setupMcpServer","green","error","consoleWarning","message","report","path","name","generator","bare","shared","noPackageJson","force","defaultDirectory","defaultScope","agent","resolve","BitError","bareVal","initScope","formatSuccessSummary","process","cwd","workspaceExtensionProps","getConfig","CFG_INIT_DEFAULT_DIRECTORY","CFG_INIT_DEFAULT_SCOPE","agentType","undefined","created","agentFileWritten","init","generateInitMessage","exports"],"sources":["init-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport * as pathlib from 'path';\nimport { BitError } from '@teambit/bit-error';\nimport { getConfig } from '@teambit/config-store';\nimport { initScope } from '@teambit/legacy.scope-api';\nimport { CFG_INIT_DEFAULT_SCOPE, CFG_INIT_DEFAULT_DIRECTORY } from '@teambit/legacy.constants';\nimport type { WorkspaceExtensionProps } from '@teambit/config';\nimport type { Command, CommandOptions } from '@teambit/cli';\nimport { formatSuccessSummary } from '@teambit/cli';\nimport type { InteractiveConfig } from './host-initializer.main.runtime';\nimport { HostInitializerMain } from './host-initializer.main.runtime';\nimport type { Logger } from '@teambit/logger';\n\nexport class InitCmd implements Command {\n name = 'init [path]';\n skipWorkspace = true;\n description = 'initialize a Bit workspace in an existing project';\n helpUrl = 'reference/workspace/creating-workspaces/?new_existing_project=1';\n group = 'workspace-setup';\n extendedDescription = `creates Bit configuration files in an existing project directory to start tracking components.\nif already a workspace, validates and repairs Bit files as needed.\nsupports various reset options to recover from corrupted state or restart from scratch.`;\n alias = '';\n loadAspects = false;\n options = [\n ['n', 'name <workspace-name>', 'name of the workspace'],\n [\n '',\n 'generator <env-id>',\n 'for multiple, separate by a comma. add env-ids into the generators field in the workspace config for future \"bit create\" templates',\n ],\n [\n 'T',\n 'standalone',\n 'do not nest component store within .git directory and do not write config data inside package.json',\n ],\n ['', 'no-package-json', 'do not generate package.json'],\n ['r', 'reset', 'write missing or damaged Bit files'],\n ['', 'reset-new', 'reset .bitmap file as if the components were newly added and remove all model data (objects)'],\n [\n '',\n 'reset-lane-new',\n 'same as reset-new, but it only resets components belong to lanes. main components are left intact',\n ],\n [\n '',\n 'reset-hard',\n 'delete all Bit files and directories, including Bit configuration, tracking and model data. Useful for re-starting workspace from scratch',\n ],\n [\n '',\n 'reset-scope',\n 'removes local scope (.bit or .git/bit). tags/snaps that have not been exported will be lost. workspace is left intact',\n ],\n [\n 'd',\n 'default-directory <default-directory>',\n 'set the default directory pattern to import/create components into',\n ],\n ['', 'default-scope <default-scope>', 'set the default scope for components in the workspace'],\n ['f', 'force', 'force workspace initialization without clearing local objects'],\n ['b', 'bare [name]', 'initialize an empty bit bare scope'],\n ['s', 'shared <groupname>', 'add group write permissions to a scope properly'],\n ['', 'external-package-manager', 'enable external package manager mode (npm/yarn/pnpm)'],\n ['', 'skip-interactive', 'skip interactive mode for Git repositories'],\n ['', 'agent [type]', 'create an AI agent instructions file. options: claude, cursor, copilot (default: AGENTS.md)'],\n ] as CommandOptions;\n\n constructor(\n private hostInitializer: HostInitializerMain,\n private logger: Logger\n ) {}\n\n private async handleInteractiveMode(\n projectPath: string,\n flags: Record<string, any>\n ): Promise<InteractiveConfig | null> {\n const {\n reset,\n resetNew,\n resetLaneNew,\n resetHard,\n resetScope,\n standalone,\n skipInteractive,\n externalPackageManager,\n } = flags;\n\n // Check if we should run interactive mode\n if (\n reset ||\n resetNew ||\n resetLaneNew ||\n resetHard ||\n resetScope ||\n standalone ||\n skipInteractive ||\n externalPackageManager ||\n !(await HostInitializerMain.hasGitDirectory(projectPath)) ||\n (await HostInitializerMain.hasWorkspaceInitialized(projectPath))\n ) {\n return null;\n }\n\n this.logger.off();\n this.logger.console(chalk.cyan('🔧 Interactive setup for existing Git repository\\n'));\n\n try {\n const interactiveConfig = await HostInitializerMain.runInteractiveMode(projectPath);\n\n // Set up MCP server if user selected an editor\n if (interactiveConfig.mcpEditor) {\n this.logger.console(chalk.cyan(`\\n🔧 Setting up MCP server for ${interactiveConfig.mcpEditor}...`));\n await HostInitializerMain.setupMcpServer(interactiveConfig.mcpEditor, projectPath);\n this.logger.console(chalk.green(`✅ MCP server configured for ${interactiveConfig.mcpEditor}`));\n }\n\n return interactiveConfig;\n } catch (error: any) {\n this.logger.consoleWarning(`Warning: Interactive setup failed: ${error.message}`);\n return null;\n }\n }\n\n async report([path]: [string], flags: Record<string, any>) {\n const {\n name,\n generator,\n bare,\n shared,\n standalone,\n noPackageJson,\n reset,\n resetNew,\n resetLaneNew,\n resetHard,\n resetScope,\n force,\n defaultDirectory,\n defaultScope,\n externalPackageManager,\n agent,\n } = flags;\n\n if (path) path = pathlib.resolve(path);\n\n if (bare) {\n if (reset || resetHard) throw new BitError('--reset and --reset-hard flags are not available for bare scope');\n // Handle both cases init --bare and init --bare [scopeName]\n const bareVal = bare === true ? '' : bare;\n await initScope(path, bareVal, shared);\n return formatSuccessSummary('initialized an empty bare bit scope.');\n }\n\n if (reset && resetHard) {\n throw new BitError('cannot use both --reset and --reset-hard, please use only one of them');\n }\n\n const projectPath = path || process.cwd();\n const interactiveConfig = await this.handleInteractiveMode(projectPath, flags);\n\n const workspaceExtensionProps: WorkspaceExtensionProps & { externalPackageManager?: boolean } = {\n defaultDirectory:\n interactiveConfig?.defaultDirectory ||\n (externalPackageManager ? 'bit-components/{scope}/{name}' : defaultDirectory) ||\n getConfig(CFG_INIT_DEFAULT_DIRECTORY),\n defaultScope: defaultScope || getConfig(CFG_INIT_DEFAULT_SCOPE),\n name,\n externalPackageManager: interactiveConfig?.externalPackageManager || externalPackageManager,\n };\n\n // Resolve agent flag: true means no specific type (use default AGENTS.md), string means a specific tool.\n const agentType = agent === true ? undefined : agent || undefined;\n\n const { created, agentFileWritten } = await HostInitializerMain.init(\n path,\n standalone,\n noPackageJson,\n reset,\n resetNew,\n resetLaneNew,\n resetHard,\n resetScope,\n force,\n workspaceExtensionProps,\n interactiveConfig?.generator || generator,\n agentType\n );\n\n return HostInitializerMain.generateInitMessage(\n created,\n reset,\n resetHard,\n resetScope,\n interactiveConfig,\n agentFileWritten\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/host-initializer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.666",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/harmony/host-initializer",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.harmony",
|
|
8
8
|
"name": "host-initializer",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.666"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@teambit/config-store": "0.0.196",
|
|
32
32
|
"@teambit/legacy.constants": "0.0.26",
|
|
33
33
|
"@teambit/legacy.scope-api": "0.0.162",
|
|
34
|
-
"@teambit/objects": "0.0.
|
|
34
|
+
"@teambit/objects": "0.0.460"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/lodash": "4.14.165",
|
|
File without changes
|