@orchestrator-claude/cli 3.1.11 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client/OrchestratorAPIClient.d.ts +50 -1
- package/dist/api-client/OrchestratorAPIClient.d.ts.map +1 -1
- package/dist/api-client/OrchestratorAPIClient.js +73 -1
- package/dist/api-client/OrchestratorAPIClient.js.map +1 -1
- package/dist/api-client/types.d.ts +95 -2
- package/dist/api-client/types.d.ts.map +1 -1
- package/dist/commands/InitCommand.d.ts +22 -3
- package/dist/commands/InitCommand.d.ts.map +1 -1
- package/dist/commands/InitCommand.js +147 -13
- package/dist/commands/InitCommand.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/BootstrapService.d.ts +100 -0
- package/dist/services/BootstrapService.d.ts.map +1 -0
- package/dist/services/BootstrapService.js +231 -0
- package/dist/services/BootstrapService.js.map +1 -0
- package/dist/services/CleanupManager.d.ts +49 -0
- package/dist/services/CleanupManager.d.ts.map +1 -0
- package/dist/services/CleanupManager.js +87 -0
- package/dist/services/CleanupManager.js.map +1 -0
- package/dist/services/CredentialGenerator.d.ts +11 -0
- package/dist/services/CredentialGenerator.d.ts.map +1 -0
- package/dist/services/CredentialGenerator.js +25 -0
- package/dist/services/CredentialGenerator.js.map +1 -0
- package/dist/services/VerificationService.d.ts +103 -0
- package/dist/services/VerificationService.d.ts.map +1 -0
- package/dist/services/VerificationService.js +350 -0
- package/dist/services/VerificationService.js.map +1 -0
- package/dist/templates/base/claude/skills/release/SKILL.md +236 -0
- package/dist/templates/base/claude/skills/release/release.sh +460 -0
- package/dist/templates/base/docker-compose.yml.hbs +189 -8
- package/dist/templates/base/mcp.json.hbs +16 -9
- package/dist/templates/default/docker-compose.yml +190 -10
- package/package.json +1 -1
- package/templates/base/claude/skills/release/SKILL.md +236 -0
- package/templates/base/claude/skills/release/release.sh +460 -0
- package/templates/base/docker-compose.yml.hbs +189 -8
- package/templates/base/mcp.json.hbs +16 -9
- package/templates/default/docker-compose.yml +190 -10
- package/dist/templates/base/orchestrator-index.json.hbs +0 -37
- package/dist/templates/projects/api/files/index.ts.hbs +0 -30
- package/dist/templates/projects/api/files/server.ts.hbs +0 -63
- package/dist/templates/projects/api/files/tsconfig.json.hbs +0 -27
- package/dist/templates/projects/api/files/vitest.config.ts.hbs +0 -28
- package/dist/templates/projects/api/template.config.json +0 -238
- package/dist/templates/projects/api/template.config.ts +0 -149
- package/dist/templates/projects/cli/files/cli.ts.hbs +0 -50
- package/dist/templates/projects/cli/files/index.ts.hbs +0 -8
- package/dist/templates/projects/cli/files/tsconfig.json.hbs +0 -27
- package/dist/templates/projects/cli/files/vitest.config.ts.hbs +0 -28
- package/dist/templates/projects/cli/template.config.json +0 -213
- package/dist/templates/projects/cli/template.config.ts +0 -126
- package/dist/templates/projects/frontend/files/App.tsx.hbs +0 -31
- package/dist/templates/projects/frontend/files/index.html.hbs +0 -13
- package/dist/templates/projects/frontend/files/main.tsx.hbs +0 -22
- package/dist/templates/projects/frontend/files/tsconfig.json.hbs +0 -34
- package/dist/templates/projects/frontend/files/tsconfig.node.json.hbs +0 -10
- package/dist/templates/projects/frontend/files/vite.config.ts.hbs +0 -19
- package/dist/templates/projects/frontend/files/vitest.config.ts.hbs +0 -36
- package/dist/templates/projects/frontend/template.config.json +0 -241
- package/dist/templates/projects/frontend/template.config.ts +0 -153
- package/dist/templates/projects/minimal/files/claude-settings.json.hbs +0 -20
- package/dist/templates/projects/minimal/files/env.example.hbs +0 -17
- package/dist/templates/projects/minimal/files/gitignore.hbs +0 -41
- package/dist/templates/projects/minimal/files/index.ts.hbs +0 -13
- package/dist/templates/projects/minimal/files/tsconfig.json.hbs +0 -27
- package/dist/templates/projects/minimal/template.config.json +0 -185
- package/dist/templates/projects/minimal/template.config.ts +0 -88
- package/templates/base/orchestrator-index.json.hbs +0 -37
- package/templates/projects/api/files/index.ts.hbs +0 -30
- package/templates/projects/api/files/server.ts.hbs +0 -63
- package/templates/projects/api/files/tsconfig.json.hbs +0 -27
- package/templates/projects/api/files/vitest.config.ts.hbs +0 -28
- package/templates/projects/api/template.config.json +0 -238
- package/templates/projects/api/template.config.ts +0 -149
- package/templates/projects/cli/files/cli.ts.hbs +0 -50
- package/templates/projects/cli/files/index.ts.hbs +0 -8
- package/templates/projects/cli/files/tsconfig.json.hbs +0 -27
- package/templates/projects/cli/files/vitest.config.ts.hbs +0 -28
- package/templates/projects/cli/template.config.json +0 -213
- package/templates/projects/cli/template.config.ts +0 -126
- package/templates/projects/frontend/files/App.tsx.hbs +0 -31
- package/templates/projects/frontend/files/index.html.hbs +0 -13
- package/templates/projects/frontend/files/main.tsx.hbs +0 -22
- package/templates/projects/frontend/files/tsconfig.json.hbs +0 -34
- package/templates/projects/frontend/files/tsconfig.node.json.hbs +0 -10
- package/templates/projects/frontend/files/vite.config.ts.hbs +0 -19
- package/templates/projects/frontend/files/vitest.config.ts.hbs +0 -36
- package/templates/projects/frontend/template.config.json +0 -241
- package/templates/projects/frontend/template.config.ts +0 -153
- package/templates/projects/minimal/files/claude-settings.json.hbs +0 -20
- package/templates/projects/minimal/files/env.example.hbs +0 -17
- package/templates/projects/minimal/files/gitignore.hbs +0 -41
- package/templates/projects/minimal/files/index.ts.hbs +0 -13
- package/templates/projects/minimal/files/tsconfig.json.hbs +0 -27
- package/templates/projects/minimal/template.config.json +0 -185
- package/templates/projects/minimal/template.config.ts +0 -88
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module api-client
|
|
8
8
|
*/
|
|
9
|
-
import type { APIClientConfig, HealthResponse, CreateWorkflowRequest, WorkflowResponse, StatusResponse, ActionResponse, Agent, Artifact, DetectResponse, AdvancePhaseResponse, SeedProjectRequest, SeedProjectResponse, WorkflowSummary, WorkflowConfigsResponse } from './types.js';
|
|
9
|
+
import type { APIClientConfig, HealthResponse, CreateWorkflowRequest, WorkflowResponse, StatusResponse, ActionResponse, Agent, Artifact, DetectResponse, AdvancePhaseResponse, SeedProjectRequest, SeedProjectResponse, WorkflowSummary, WorkflowConfigsResponse, RegisterRequest, RegisterResponse, LoginRequest, LoginResponse, RegisterProjectRequest, RegisterProjectResponse } from './types.js';
|
|
10
10
|
/**
|
|
11
11
|
* Orchestrator API Client
|
|
12
12
|
*
|
|
@@ -115,6 +115,55 @@ export declare class OrchestratorAPIClient {
|
|
|
115
115
|
* @returns Seed result with files created
|
|
116
116
|
*/
|
|
117
117
|
seedProject(request: SeedProjectRequest): Promise<SeedProjectResponse>;
|
|
118
|
+
/**
|
|
119
|
+
* Set Authorization Bearer token on the axios instance defaults.
|
|
120
|
+
*
|
|
121
|
+
* After calling this, all subsequent requests from this client instance
|
|
122
|
+
* will include the Authorization header automatically.
|
|
123
|
+
*
|
|
124
|
+
* @param token - JWT access token
|
|
125
|
+
*/
|
|
126
|
+
setAuthToken(token: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Register a new user account.
|
|
129
|
+
*
|
|
130
|
+
* Does NOT use retry logic — auth endpoints should fail fast
|
|
131
|
+
* rather than retrying on credential errors.
|
|
132
|
+
*
|
|
133
|
+
* @param request - Registration request with email and password
|
|
134
|
+
* @returns Access and refresh tokens
|
|
135
|
+
*/
|
|
136
|
+
register(request: RegisterRequest): Promise<RegisterResponse>;
|
|
137
|
+
/**
|
|
138
|
+
* Login with existing user credentials.
|
|
139
|
+
*
|
|
140
|
+
* Automatically calls setAuthToken with the returned accessToken
|
|
141
|
+
* so subsequent requests are authenticated without manual token setting.
|
|
142
|
+
*
|
|
143
|
+
* Does NOT use retry logic — auth endpoints should fail fast.
|
|
144
|
+
*
|
|
145
|
+
* @param request - Login request with email and password
|
|
146
|
+
* @returns Access and refresh tokens
|
|
147
|
+
*/
|
|
148
|
+
login(request: LoginRequest): Promise<LoginResponse>;
|
|
149
|
+
/**
|
|
150
|
+
* Register a project with the Orchestrator API.
|
|
151
|
+
*
|
|
152
|
+
* Uses standard retry logic via the request wrapper.
|
|
153
|
+
*
|
|
154
|
+
* @param request - Project registration request with name and rootPath
|
|
155
|
+
* @returns Registered project details including assigned ID
|
|
156
|
+
*/
|
|
157
|
+
registerProject(request: RegisterProjectRequest): Promise<RegisterProjectResponse>;
|
|
158
|
+
/**
|
|
159
|
+
* Get a project by ID.
|
|
160
|
+
*
|
|
161
|
+
* Used by VerificationService to confirm a registered project exists.
|
|
162
|
+
*
|
|
163
|
+
* @param id - Project ID
|
|
164
|
+
* @returns Project details
|
|
165
|
+
*/
|
|
166
|
+
getProject(id: string): Promise<RegisterProjectResponse>;
|
|
118
167
|
/**
|
|
119
168
|
* Generic request wrapper with retry logic
|
|
120
169
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrchestratorAPIClient.d.ts","sourceRoot":"","sources":["../../src/api-client/OrchestratorAPIClient.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,KAAK,EACL,QAAQ,EAER,cAAc,EAEd,oBAAoB,EAEpB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAYpB;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD;;;;OAIG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAY7C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI/E;;;;;OAKG;IACG,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAKhE;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAI7D;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAIlD;;;;;OAKG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIxE;;;;;OAKG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMhE;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAIpC;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI1C;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAK7D;;;;;;OAMG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAOhC;;;;;OAKG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMvF;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM5E;;;;;;OAMG;YACW,OAAO;IAcrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAwBpB"}
|
|
1
|
+
{"version":3,"file":"OrchestratorAPIClient.d.ts","sourceRoot":"","sources":["../../src/api-client/OrchestratorAPIClient.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,KAAK,EACL,QAAQ,EAER,cAAc,EAEd,oBAAoB,EAEpB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAYpB;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD;;;;OAIG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAY7C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI/E;;;;;OAKG;IACG,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAKhE;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAI7D;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAIlD;;;;;OAKG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIxE;;;;;OAKG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMhE;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAIpC;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI1C;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAK7D;;;;;;OAMG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAOhC;;;;;OAKG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMvF;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM5E;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASnE;;;;;;;;;;OAUG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAU1D;;;;;;;OAOG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAMxF;;;;;;;OAOG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM9D;;;;;;OAMG;YACW,OAAO;IAcrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAwBpB"}
|
|
@@ -160,6 +160,78 @@ export class OrchestratorAPIClient {
|
|
|
160
160
|
async seedProject(request) {
|
|
161
161
|
return this.request(() => this.client.post('/projects/seed', request));
|
|
162
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Set Authorization Bearer token on the axios instance defaults.
|
|
165
|
+
*
|
|
166
|
+
* After calling this, all subsequent requests from this client instance
|
|
167
|
+
* will include the Authorization header automatically.
|
|
168
|
+
*
|
|
169
|
+
* @param token - JWT access token
|
|
170
|
+
*/
|
|
171
|
+
setAuthToken(token) {
|
|
172
|
+
this.client.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Register a new user account.
|
|
176
|
+
*
|
|
177
|
+
* Does NOT use retry logic — auth endpoints should fail fast
|
|
178
|
+
* rather than retrying on credential errors.
|
|
179
|
+
*
|
|
180
|
+
* @param request - Registration request with email and password
|
|
181
|
+
* @returns Access and refresh tokens
|
|
182
|
+
*/
|
|
183
|
+
async register(request) {
|
|
184
|
+
try {
|
|
185
|
+
const response = await this.client.post('/auth/register', request);
|
|
186
|
+
return response.data;
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
throw this.handleError(error);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Login with existing user credentials.
|
|
194
|
+
*
|
|
195
|
+
* Automatically calls setAuthToken with the returned accessToken
|
|
196
|
+
* so subsequent requests are authenticated without manual token setting.
|
|
197
|
+
*
|
|
198
|
+
* Does NOT use retry logic — auth endpoints should fail fast.
|
|
199
|
+
*
|
|
200
|
+
* @param request - Login request with email and password
|
|
201
|
+
* @returns Access and refresh tokens
|
|
202
|
+
*/
|
|
203
|
+
async login(request) {
|
|
204
|
+
try {
|
|
205
|
+
const response = await this.client.post('/auth/login', request);
|
|
206
|
+
this.setAuthToken(response.data.accessToken);
|
|
207
|
+
return response.data;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
throw this.handleError(error);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Register a project with the Orchestrator API.
|
|
215
|
+
*
|
|
216
|
+
* Uses standard retry logic via the request wrapper.
|
|
217
|
+
*
|
|
218
|
+
* @param request - Project registration request with name and rootPath
|
|
219
|
+
* @returns Registered project details including assigned ID
|
|
220
|
+
*/
|
|
221
|
+
async registerProject(request) {
|
|
222
|
+
return this.request(() => this.client.post('/projects', request));
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get a project by ID.
|
|
226
|
+
*
|
|
227
|
+
* Used by VerificationService to confirm a registered project exists.
|
|
228
|
+
*
|
|
229
|
+
* @param id - Project ID
|
|
230
|
+
* @returns Project details
|
|
231
|
+
*/
|
|
232
|
+
async getProject(id) {
|
|
233
|
+
return this.request(() => this.client.get(`/projects/${id}`));
|
|
234
|
+
}
|
|
163
235
|
/**
|
|
164
236
|
* Generic request wrapper with retry logic
|
|
165
237
|
*
|
|
@@ -188,7 +260,7 @@ export class OrchestratorAPIClient {
|
|
|
188
260
|
if (axiosError.response) {
|
|
189
261
|
// Server responded with error status
|
|
190
262
|
const { status, data } = axiosError.response;
|
|
191
|
-
const message = data?.message || axiosError.message;
|
|
263
|
+
const message = data?.detail || data?.message || axiosError.message;
|
|
192
264
|
return new Error(`API Error (${status}): ${message}`);
|
|
193
265
|
}
|
|
194
266
|
if (axiosError.request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrchestratorAPIClient.js","sourceRoot":"","sources":["../../src/api-client/OrchestratorAPIClient.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAA8C,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"OrchestratorAPIClient.js","sourceRoot":"","sources":["../../src/api-client/OrchestratorAPIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -135,11 +135,12 @@ export interface AdvancePhaseResponse {
|
|
|
135
135
|
message: string;
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
|
-
* Error response
|
|
138
|
+
* Error response (supports both legacy and RFC 7807 formats)
|
|
139
139
|
*/
|
|
140
140
|
export interface ErrorResponse {
|
|
141
141
|
error: string;
|
|
142
|
-
message
|
|
142
|
+
message?: string;
|
|
143
|
+
detail?: string;
|
|
143
144
|
statusCode?: number;
|
|
144
145
|
details?: unknown;
|
|
145
146
|
}
|
|
@@ -215,4 +216,96 @@ export interface WorkflowConfigsResponse {
|
|
|
215
216
|
workflows: WorkflowConfig[];
|
|
216
217
|
count: number;
|
|
217
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* User registration request
|
|
221
|
+
*/
|
|
222
|
+
export interface RegisterRequest {
|
|
223
|
+
email: string;
|
|
224
|
+
password: string;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* User registration response
|
|
228
|
+
*/
|
|
229
|
+
export interface RegisterResponse {
|
|
230
|
+
accessToken: string;
|
|
231
|
+
refreshToken: string;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Login request
|
|
235
|
+
*/
|
|
236
|
+
export interface LoginRequest {
|
|
237
|
+
email: string;
|
|
238
|
+
password: string;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Login response
|
|
242
|
+
*/
|
|
243
|
+
export interface LoginResponse {
|
|
244
|
+
accessToken: string;
|
|
245
|
+
refreshToken: string;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Project registration request
|
|
249
|
+
*/
|
|
250
|
+
export interface RegisterProjectRequest {
|
|
251
|
+
name: string;
|
|
252
|
+
rootPath: string;
|
|
253
|
+
type?: string;
|
|
254
|
+
gitUrl?: string;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Project registration response
|
|
258
|
+
*/
|
|
259
|
+
export interface RegisterProjectResponse {
|
|
260
|
+
id: string;
|
|
261
|
+
name: string;
|
|
262
|
+
paths: {
|
|
263
|
+
host: string;
|
|
264
|
+
container: string;
|
|
265
|
+
relative: string;
|
|
266
|
+
};
|
|
267
|
+
registeredAt: string;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Generated credentials from CredentialGenerator
|
|
271
|
+
*/
|
|
272
|
+
export interface GeneratedCredentials {
|
|
273
|
+
email: string;
|
|
274
|
+
password: string;
|
|
275
|
+
jwtSecret: string;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Bootstrap result after register + login + registerProject
|
|
279
|
+
*/
|
|
280
|
+
export interface BootstrapResult {
|
|
281
|
+
projectId: string;
|
|
282
|
+
email: string;
|
|
283
|
+
password: string;
|
|
284
|
+
jwtSecret: string;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Bootstrap options
|
|
288
|
+
*/
|
|
289
|
+
export interface BootstrapOptions {
|
|
290
|
+
projectName: string;
|
|
291
|
+
projectPath: string;
|
|
292
|
+
apiUrl?: string;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Individual verification check result (RFC-015 Phase 5)
|
|
296
|
+
*/
|
|
297
|
+
export interface VerificationCheck {
|
|
298
|
+
name: string;
|
|
299
|
+
passed: boolean;
|
|
300
|
+
message: string;
|
|
301
|
+
details?: string;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Aggregated verification result from VerificationService.verify()
|
|
305
|
+
*/
|
|
306
|
+
export interface VerificationResult {
|
|
307
|
+
allPassed: boolean;
|
|
308
|
+
checks: VerificationCheck[];
|
|
309
|
+
duration?: number;
|
|
310
|
+
}
|
|
218
311
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api-client/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api-client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,20 @@
|
|
|
4
4
|
* Initialize a new Orchestrator project using multi-step seed:
|
|
5
5
|
* 1. OFFLINE: Create minimal structure (docker-compose.yml)
|
|
6
6
|
* 2. AUTO: Start Docker containers
|
|
7
|
-
* 3. ONLINE:
|
|
8
|
-
* 4.
|
|
7
|
+
* 3. ONLINE: Wait for API health
|
|
8
|
+
* 4. ONLINE: Bootstrap project (register + login + registerProject)
|
|
9
|
+
* 5. ONLINE: Call API to seed full project files
|
|
10
|
+
* 6. ONLINE: Inject credentials into seeded files
|
|
11
|
+
* 7. CLEANUP: Git init, npm install
|
|
9
12
|
*
|
|
10
13
|
* @module commands
|
|
11
14
|
*/
|
|
12
15
|
import { OutputFormatter } from '../formatters/OutputFormatter.js';
|
|
13
16
|
import { OrchestratorAPIClient } from '../api-client/OrchestratorAPIClient.js';
|
|
17
|
+
import { BootstrapService } from '../services/BootstrapService.js';
|
|
18
|
+
import { CleanupManager } from '../services/CleanupManager.js';
|
|
19
|
+
import { VerificationService } from '../services/VerificationService.js';
|
|
20
|
+
import type { BootstrapResult, VerificationResult } from '../api-client/types.js';
|
|
14
21
|
/**
|
|
15
22
|
* Init command options
|
|
16
23
|
*/
|
|
@@ -22,8 +29,12 @@ export interface InitOptions {
|
|
|
22
29
|
outputPath?: string;
|
|
23
30
|
jsonOutput?: boolean;
|
|
24
31
|
skipDocker?: boolean;
|
|
32
|
+
skipBootstrap?: boolean;
|
|
25
33
|
skipGit?: boolean;
|
|
26
34
|
skipInstall?: boolean;
|
|
35
|
+
force?: boolean;
|
|
36
|
+
verify?: boolean;
|
|
37
|
+
skipVerify?: boolean;
|
|
27
38
|
}
|
|
28
39
|
/**
|
|
29
40
|
* Init command result
|
|
@@ -35,6 +46,8 @@ export interface InitResult {
|
|
|
35
46
|
filesCreated?: string[];
|
|
36
47
|
error?: string;
|
|
37
48
|
steps?: StepResult[];
|
|
49
|
+
credentials?: BootstrapResult;
|
|
50
|
+
verification?: VerificationResult;
|
|
38
51
|
}
|
|
39
52
|
/**
|
|
40
53
|
* Step result for detailed progress tracking
|
|
@@ -53,14 +66,20 @@ export interface StepResult {
|
|
|
53
66
|
export declare class InitCommand {
|
|
54
67
|
private readonly formatter;
|
|
55
68
|
private readonly apiClient;
|
|
69
|
+
private readonly bootstrapService;
|
|
70
|
+
private readonly cleanupManager;
|
|
71
|
+
private readonly verificationService;
|
|
56
72
|
private readonly templatesPath;
|
|
57
73
|
/**
|
|
58
74
|
* Create init command
|
|
59
75
|
*
|
|
60
76
|
* @param formatter - Output formatter instance
|
|
61
77
|
* @param apiClient - API client instance (optional, creates default)
|
|
78
|
+
* @param bootstrapService - Bootstrap service instance (optional, creates default)
|
|
79
|
+
* @param cleanupManager - Cleanup manager instance (optional, creates default)
|
|
80
|
+
* @param verificationService - Verification service instance (optional, creates default)
|
|
62
81
|
*/
|
|
63
|
-
constructor(formatter: OutputFormatter, apiClient?: OrchestratorAPIClient);
|
|
82
|
+
constructor(formatter: OutputFormatter, apiClient?: OrchestratorAPIClient, bootstrapService?: BootstrapService, cleanupManager?: CleanupManager, verificationService?: VerificationService);
|
|
64
83
|
/**
|
|
65
84
|
* Execute init command
|
|
66
85
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitCommand.d.ts","sourceRoot":"","sources":["../../src/commands/InitCommand.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"InitCommand.d.ts","sourceRoot":"","sources":["../../src/commands/InitCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAqB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAErG;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;;;;;;OAQG;gBAED,SAAS,EAAE,eAAe,EAC1B,SAAS,CAAC,EAAE,qBAAqB,EACjC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,cAAc,CAAC,EAAE,cAAc,EAC/B,mBAAmB,CAAC,EAAE,mBAAmB;IAa3C;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAuPxD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAmC9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;;;OAIG;YACW,WAAW;IA4CzB;;OAEG;YACW,kBAAkB;IA6BhC;;;;;OAKG;YACW,WAAW;IAwCzB;;OAEG;IACH,OAAO,CAAC,OAAO;IAqBf;;OAEG;YACW,mBAAmB;IAkCjC;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM;CA0D/D"}
|
|
@@ -4,16 +4,23 @@
|
|
|
4
4
|
* Initialize a new Orchestrator project using multi-step seed:
|
|
5
5
|
* 1. OFFLINE: Create minimal structure (docker-compose.yml)
|
|
6
6
|
* 2. AUTO: Start Docker containers
|
|
7
|
-
* 3. ONLINE:
|
|
8
|
-
* 4.
|
|
7
|
+
* 3. ONLINE: Wait for API health
|
|
8
|
+
* 4. ONLINE: Bootstrap project (register + login + registerProject)
|
|
9
|
+
* 5. ONLINE: Call API to seed full project files
|
|
10
|
+
* 6. ONLINE: Inject credentials into seeded files
|
|
11
|
+
* 7. CLEANUP: Git init, npm install
|
|
9
12
|
*
|
|
10
13
|
* @module commands
|
|
11
14
|
*/
|
|
12
|
-
import { writeFileSync, mkdirSync, existsSync, readFileSync } from 'fs';
|
|
15
|
+
import { writeFileSync, mkdirSync, existsSync, readFileSync, copyFileSync } from 'fs';
|
|
13
16
|
import { join, resolve, dirname } from 'path';
|
|
14
17
|
import { execSync, spawn } from 'child_process';
|
|
15
18
|
import { fileURLToPath } from 'url';
|
|
16
19
|
import { OrchestratorAPIClient } from '../api-client/OrchestratorAPIClient.js';
|
|
20
|
+
import { BootstrapService } from '../services/BootstrapService.js';
|
|
21
|
+
import { CredentialGenerator } from '../services/CredentialGenerator.js';
|
|
22
|
+
import { CleanupManager } from '../services/CleanupManager.js';
|
|
23
|
+
import { VerificationService } from '../services/VerificationService.js';
|
|
17
24
|
/**
|
|
18
25
|
* Init Command
|
|
19
26
|
*
|
|
@@ -22,16 +29,25 @@ import { OrchestratorAPIClient } from '../api-client/OrchestratorAPIClient.js';
|
|
|
22
29
|
export class InitCommand {
|
|
23
30
|
formatter;
|
|
24
31
|
apiClient;
|
|
32
|
+
bootstrapService;
|
|
33
|
+
cleanupManager;
|
|
34
|
+
verificationService;
|
|
25
35
|
templatesPath;
|
|
26
36
|
/**
|
|
27
37
|
* Create init command
|
|
28
38
|
*
|
|
29
39
|
* @param formatter - Output formatter instance
|
|
30
40
|
* @param apiClient - API client instance (optional, creates default)
|
|
41
|
+
* @param bootstrapService - Bootstrap service instance (optional, creates default)
|
|
42
|
+
* @param cleanupManager - Cleanup manager instance (optional, creates default)
|
|
43
|
+
* @param verificationService - Verification service instance (optional, creates default)
|
|
31
44
|
*/
|
|
32
|
-
constructor(formatter, apiClient) {
|
|
45
|
+
constructor(formatter, apiClient, bootstrapService, cleanupManager, verificationService) {
|
|
33
46
|
this.formatter = formatter;
|
|
34
47
|
this.apiClient = apiClient ?? new OrchestratorAPIClient();
|
|
48
|
+
this.bootstrapService = bootstrapService ?? new BootstrapService(this.apiClient, new CredentialGenerator());
|
|
49
|
+
this.cleanupManager = cleanupManager ?? new CleanupManager();
|
|
50
|
+
this.verificationService = verificationService ?? new VerificationService(this.apiClient);
|
|
35
51
|
// Resolve templates path relative to this file
|
|
36
52
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
37
53
|
this.templatesPath = resolve(__dirname, '../../templates/base');
|
|
@@ -45,6 +61,9 @@ export class InitCommand {
|
|
|
45
61
|
async execute(options) {
|
|
46
62
|
const steps = [];
|
|
47
63
|
const startTime = Date.now();
|
|
64
|
+
let bootstrapResult;
|
|
65
|
+
// Register SIGINT handler early so Ctrl-C triggers cleanup
|
|
66
|
+
this.cleanupManager.registerSignalHandler();
|
|
48
67
|
try {
|
|
49
68
|
// Validate options
|
|
50
69
|
const validation = this.validateOptions(options);
|
|
@@ -58,14 +77,48 @@ export class InitCommand {
|
|
|
58
77
|
const projectName = options.projectName ?? 'my-orchestrator-project';
|
|
59
78
|
const outputPath = options.outputPath ?? process.cwd();
|
|
60
79
|
const projectPath = join(outputPath, projectName);
|
|
61
|
-
//
|
|
62
|
-
if (
|
|
80
|
+
// --verify: early return — run verification only, no re-init
|
|
81
|
+
if (options.verify) {
|
|
82
|
+
if (!existsSync(projectPath)) {
|
|
83
|
+
return {
|
|
84
|
+
success: false,
|
|
85
|
+
message: `Directory "${projectPath}" does not exist. Cannot verify.`,
|
|
86
|
+
error: 'Directory not found',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const verification = await this.verificationService.verify({
|
|
90
|
+
projectPath,
|
|
91
|
+
email: undefined,
|
|
92
|
+
password: undefined,
|
|
93
|
+
});
|
|
63
94
|
return {
|
|
64
|
-
success:
|
|
65
|
-
message:
|
|
66
|
-
|
|
95
|
+
success: verification.allPassed,
|
|
96
|
+
message: verification.allPassed ? 'All checks passed' : 'Some checks failed',
|
|
97
|
+
projectPath,
|
|
98
|
+
verification,
|
|
67
99
|
};
|
|
68
100
|
}
|
|
101
|
+
// Check if project directory already exists
|
|
102
|
+
if (existsSync(projectPath)) {
|
|
103
|
+
if (options.force) {
|
|
104
|
+
// Backup existing files before overwriting
|
|
105
|
+
const envPath = join(projectPath, '.env');
|
|
106
|
+
if (existsSync(envPath)) {
|
|
107
|
+
copyFileSync(envPath, join(projectPath, '.env.backup'));
|
|
108
|
+
}
|
|
109
|
+
const mcpPath = join(projectPath, '.mcp.json');
|
|
110
|
+
if (existsSync(mcpPath)) {
|
|
111
|
+
copyFileSync(mcpPath, join(projectPath, '.mcp.json.backup'));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
message: `Project directory already exists: ${projectPath}`,
|
|
118
|
+
error: `Directory "${projectPath}" already exists. Use --force to overwrite or choose a different project name.`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
69
122
|
// Step 1: Create minimal structure (OFFLINE)
|
|
70
123
|
const step1Start = Date.now();
|
|
71
124
|
const minimalResult = this.createMinimalStructure(projectPath, {
|
|
@@ -81,6 +134,8 @@ export class InitCommand {
|
|
|
81
134
|
if (!minimalResult.success) {
|
|
82
135
|
return { success: false, message: minimalResult.message, error: minimalResult.error, steps };
|
|
83
136
|
}
|
|
137
|
+
// Mark directory as created so SIGINT cleanup can remove it
|
|
138
|
+
this.cleanupManager.mark('createdDirectory', { path: projectPath });
|
|
84
139
|
// Step 2: Start Docker (AUTO) - skip if requested
|
|
85
140
|
if (!options.skipDocker) {
|
|
86
141
|
const step2Start = Date.now();
|
|
@@ -94,6 +149,8 @@ export class InitCommand {
|
|
|
94
149
|
if (!dockerResult.success) {
|
|
95
150
|
return { success: false, message: dockerResult.message, error: dockerResult.error, steps };
|
|
96
151
|
}
|
|
152
|
+
// Mark Docker as started so SIGINT cleanup can stop containers
|
|
153
|
+
this.cleanupManager.mark('dockerStarted', { path: projectPath });
|
|
97
154
|
// Step 3: Wait for health check
|
|
98
155
|
const step3Start = Date.now();
|
|
99
156
|
const healthResult = await this.waitForHealthcheck();
|
|
@@ -106,8 +163,34 @@ export class InitCommand {
|
|
|
106
163
|
if (!healthResult.success) {
|
|
107
164
|
return { success: false, message: healthResult.message, error: healthResult.error, steps };
|
|
108
165
|
}
|
|
109
|
-
// Step 4:
|
|
110
|
-
|
|
166
|
+
// Step 4: Bootstrap project (register + login + registerProject)
|
|
167
|
+
if (!options.skipBootstrap) {
|
|
168
|
+
const step4Start = Date.now();
|
|
169
|
+
try {
|
|
170
|
+
bootstrapResult = await this.bootstrapService.bootstrap({
|
|
171
|
+
projectName,
|
|
172
|
+
projectPath,
|
|
173
|
+
});
|
|
174
|
+
steps.push({
|
|
175
|
+
step: 'Bootstrap project',
|
|
176
|
+
success: true,
|
|
177
|
+
message: 'Credentials generated, user registered, project registered',
|
|
178
|
+
duration: Date.now() - step4Start,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
183
|
+
steps.push({
|
|
184
|
+
step: 'Bootstrap project',
|
|
185
|
+
success: false,
|
|
186
|
+
message: `Bootstrap failed: ${errorMessage}`,
|
|
187
|
+
duration: Date.now() - step4Start,
|
|
188
|
+
});
|
|
189
|
+
return { success: false, message: `Bootstrap failed: ${errorMessage}`, error: errorMessage, steps };
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Step 5: Seed project via API (ONLINE)
|
|
193
|
+
const step5Start = Date.now();
|
|
111
194
|
const seedResult = await this.seedProject(projectPath, {
|
|
112
195
|
template: options.template ?? 'minimal',
|
|
113
196
|
preset: options.preset ?? 'moderate',
|
|
@@ -116,11 +199,37 @@ export class InitCommand {
|
|
|
116
199
|
step: 'Seed project via API',
|
|
117
200
|
success: seedResult.success,
|
|
118
201
|
message: seedResult.message,
|
|
119
|
-
duration: Date.now() -
|
|
202
|
+
duration: Date.now() - step5Start,
|
|
120
203
|
});
|
|
121
204
|
if (!seedResult.success) {
|
|
122
205
|
return { success: false, message: seedResult.message, error: seedResult.error, steps };
|
|
123
206
|
}
|
|
207
|
+
// Step 6: Inject credentials (AFTER seed, because seed overwrites files)
|
|
208
|
+
if (bootstrapResult) {
|
|
209
|
+
const step6Start = Date.now();
|
|
210
|
+
try {
|
|
211
|
+
await this.bootstrapService.injectCredentials({
|
|
212
|
+
files: [join(projectPath, '.mcp.json'), join(projectPath, '.env')],
|
|
213
|
+
credentials: bootstrapResult,
|
|
214
|
+
});
|
|
215
|
+
steps.push({
|
|
216
|
+
step: 'Inject credentials',
|
|
217
|
+
success: true,
|
|
218
|
+
message: 'Credentials injected into .mcp.json and .env',
|
|
219
|
+
duration: Date.now() - step6Start,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
224
|
+
steps.push({
|
|
225
|
+
step: 'Inject credentials',
|
|
226
|
+
success: false,
|
|
227
|
+
message: `Failed to inject credentials: ${errorMessage}`,
|
|
228
|
+
duration: Date.now() - step6Start,
|
|
229
|
+
});
|
|
230
|
+
// Non-fatal: continue even if injection fails
|
|
231
|
+
}
|
|
232
|
+
}
|
|
124
233
|
}
|
|
125
234
|
// Step 5: Git init (CLEANUP)
|
|
126
235
|
if (!options.skipGit) {
|
|
@@ -148,13 +257,30 @@ export class InitCommand {
|
|
|
148
257
|
}
|
|
149
258
|
// Collect all created files
|
|
150
259
|
const filesCreated = minimalResult.filesCreated ?? [];
|
|
151
|
-
|
|
260
|
+
const result = {
|
|
152
261
|
success: true,
|
|
153
262
|
message: `Project "${projectName}" initialized successfully`,
|
|
154
263
|
projectPath,
|
|
155
264
|
filesCreated,
|
|
156
265
|
steps,
|
|
266
|
+
credentials: bootstrapResult,
|
|
157
267
|
};
|
|
268
|
+
// Auto-verify after successful init (non-fatal)
|
|
269
|
+
if (!options.skipVerify) {
|
|
270
|
+
try {
|
|
271
|
+
const verification = await this.verificationService.verify({
|
|
272
|
+
projectPath,
|
|
273
|
+
email: bootstrapResult?.email,
|
|
274
|
+
password: bootstrapResult?.password,
|
|
275
|
+
projectId: bootstrapResult?.projectId,
|
|
276
|
+
});
|
|
277
|
+
result.verification = verification;
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
// Non-fatal: verification failure never fails the overall init
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return result;
|
|
158
284
|
}
|
|
159
285
|
catch (error) {
|
|
160
286
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
@@ -489,6 +615,14 @@ export class InitCommand {
|
|
|
489
615
|
}
|
|
490
616
|
lines.push('');
|
|
491
617
|
}
|
|
618
|
+
if (result.credentials) {
|
|
619
|
+
lines.push('Credentials (saved in .env - shown only once):');
|
|
620
|
+
lines.push(` Admin email: ${result.credentials.email}`);
|
|
621
|
+
lines.push(` Admin password: ${result.credentials.password}`);
|
|
622
|
+
lines.push(` Project ID: ${result.credentials.projectId}`);
|
|
623
|
+
lines.push(` JWT Secret: <stored in .env, not shown>`);
|
|
624
|
+
lines.push('');
|
|
625
|
+
}
|
|
492
626
|
lines.push('Next steps:');
|
|
493
627
|
lines.push(` cd ${result.projectPath?.split('/').pop() ?? 'project'}`);
|
|
494
628
|
lines.push(' orchestrator status');
|