MCPcopy Index your code
hub / github.com/anomalyco/opencode / bootstrap

Function bootstrap

packages/tui/src/context/sync.tsx:445–546  ·  view source on GitHub ↗
(input: { fatal?: boolean } = {})

Source from the content-addressed store, hash-verified

443 const args = useArgs()
444
445 async function bootstrap(input: { fatal?: boolean } = {}) {
446 const fatal = input.fatal ?? true
447 const workspace = project.workspace.current()
448 const projectPromise = project.sync()
449 const sessionListPromise = projectPromise.then(() => listSessions())
450
451 // blocking - include session.list when continuing a session
452 const providersPromise = sdk.client.config.providers({ workspace }, { throwOnError: true })
453 const providerListPromise = sdk.client.provider.list({ workspace }, { throwOnError: true })
454 const capabilitiesPromise = sdk.client.experimental.capabilities
455 .get({ workspace }, { throwOnError: true })
456 .then((x) => x.data)
457 .catch(() => undefined)
458 const consoleStatePromise = sdk.client.experimental.console
459 .get({ workspace }, { throwOnError: true })
460 .then((x) => x.data)
461 .catch(() => emptyConsoleState)
462 const agentsPromise = sdk.client.app.agents({ workspace }, { throwOnError: true })
463 const configPromise = sdk.client.config.get({ workspace }, { throwOnError: true })
464 await Promise.all([
465 providersPromise,
466 providerListPromise,
467 capabilitiesPromise,
468 agentsPromise,
469 configPromise,
470 projectPromise,
471 ...(args.continue ? [sessionListPromise] : []),
472 ])
473 .then(async () => {
474 const providersResponse = providersPromise.then((x) => x.data!)
475 const providerListResponse = providerListPromise.then((x) => x.data!)
476 const capabilitiesResponse = capabilitiesPromise
477 const consoleStateResponse = consoleStatePromise
478 const agentsResponse = agentsPromise.then((x) => x.data ?? [])
479 const configResponse = configPromise.then((x) => x.data!)
480 const sessionListResponse = args.continue ? sessionListPromise : undefined
481
482 return Promise.all([
483 providersResponse,
484 providerListResponse,
485 capabilitiesResponse,
486 consoleStateResponse,
487 agentsResponse,
488 configResponse,
489 ...(sessionListResponse ? [sessionListResponse] : []),
490 ]).then((responses) => {
491 const providers = responses[0]
492 const providerList = responses[1]
493 const capabilities = responses[2]
494 const consoleState = responses[3]
495 const agents = responses[4]
496 const config = responses[5]
497 const sessions = responses[6]
498
499 batch(() => {
500 setStore("provider", reconcile(providers.providers))
501 setStore("provider_default", reconcile(providers.default))
502 setStore("provider_next", reconcile(providerList))

Callers 1

sync.tsxFile · 0.70

Calls 13

listSessionsFunction · 0.85
batchFunction · 0.85
setStoreFunction · 0.85
syncMethod · 0.80
listMethod · 0.65
getMethod · 0.65
reconcileFunction · 0.50
currentMethod · 0.45
providersMethod · 0.45
agentsMethod · 0.45
allMethod · 0.45
statusMethod · 0.45

Tested by

no test coverage detected