MCPcopy
hub / github.com/Fission-AI/OpenSpec / create

Method create

src/commands/workset.ts:202–260  ·  view source on GitHub ↗
(
    name: string | undefined,
    options: WorksetCreateOptions = {}
  )

Source from the content-addressed store, hash-verified

200
201class WorksetCommand {
202 async create(
203 name: string | undefined,
204 options: WorksetCreateOptions = {}
205 ): Promise<void> {
206 try {
207 const interactive = !options.json && isInteractive();
208
209 let workset: Workset;
210 let table: OpenerDefinition[] | undefined;
211 if (interactive) {
212 table = readOpenerTable();
213 workset = await composeInteractively(
214 name,
215 { memberFlags: options.member ?? [], tool: options.tool },
216 table
217 );
218 } else {
219 workset = await this.composeFromFlags(name, options);
220 }
221
222 await updateWorksetsState((state) => withWorkset(state, workset));
223
224 if (options.json) {
225 printJson({ workset, status: [] });
226 return;
227 }
228
229 console.log('');
230 console.log(
231 `Saved workset '${workset.name}' (${workset.members.length} member${workset.members.length === 1 ? '' : 's'}) to your machine.`
232 );
233
234 if (interactive && workset.tool !== undefined && table !== undefined) {
235 const label = findOpener(table, workset.tool)?.label ?? workset.tool;
236 let openNow = false;
237 try {
238 openNow = await promptOpenNow(label);
239 } catch (error) {
240 // The workset is already durably saved: Ctrl-C here declines
241 // the offer, it does not cancel the create.
242 if (!isPromptCancellationError(error)) {
243 throw error;
244 }
245 }
246
247 if (openNow) {
248 console.log('');
249 await this.open(workset.name, {});
250 return;
251 }
252 }
253
254 console.log(
255 `Open it any time with: openspec workset open ${workset.name}`
256 );
257 } catch (error) {
258 emitFailure(options.json, { workset: null, status: [] }, error, 'workset_error');
259 }

Callers 1

registerWorksetCommandFunction · 0.95

Calls 12

composeFromFlagsMethod · 0.95
openMethod · 0.95
isInteractiveFunction · 0.85
readOpenerTableFunction · 0.85
composeInteractivelyFunction · 0.85
updateWorksetsStateFunction · 0.85
withWorksetFunction · 0.85
findOpenerFunction · 0.85
promptOpenNowFunction · 0.85
emitFailureFunction · 0.85
printJsonFunction · 0.70

Tested by

no test coverage detected