MCPcopy
hub / github.com/simstudioai/sim / run

Function run

packages/db/scripts/migrate-block-api-keys-to-byok.ts:601–746  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

599
600// ---------- Main ----------
601async function run() {
602 console.log(`Mode: ${DRY_RUN ? 'DRY RUN (audit + preview)' : 'LIVE'}`)
603 console.log(
604 `Mappings: ${Object.entries(BLOCK_TYPE_TO_PROVIDER)
605 .map(([b, p]) => `${b}=${p}`)
606 .join(', ')}`
607 )
608 console.log(`Users: ${USER_FILTER.length > 0 ? USER_FILTER.join(', ') : 'all'}`)
609 if (FROM_FILE) console.log(`From file: ${FROM_FILE}`)
610 console.log('---\n')
611
612 const stats = createEmptyStats()
613 let workspaceIdsWritten = 0
614
615 try {
616 // 1. Get distinct workspace IDs that have matching blocks
617 const mappedBlockTypes = Object.keys(BLOCK_TYPE_TO_PROVIDER)
618 const agentTypes = Object.keys(TOOL_INPUT_SUBBLOCK_IDS)
619 const allBlockTypes = [...new Set([...mappedBlockTypes, ...agentTypes])]
620
621 const userFilter =
622 USER_FILTER.length > 0
623 ? sql` AND ${workflow.userId} IN (${sql.join(
624 USER_FILTER.map((id) => sql`${id}`),
625 sql`, `
626 )})`
627 : sql``
628
629 let workspaceIds: string[]
630
631 if (DRY_RUN) {
632 const workspaceIdRows = await db
633 .selectDistinct({ workspaceId: workflow.workspaceId })
634 .from(workflowBlocks)
635 .innerJoin(workflow, eq(workflowBlocks.workflowId, workflow.id))
636 .where(
637 sql`${workflow.workspaceId} IS NOT NULL AND ${workflowBlocks.type} IN (${sql.join(
638 allBlockTypes.map((t) => sql`${t}`),
639 sql`, `
640 )})${userFilter}`
641 )
642
643 workspaceIds = workspaceIdRows
644 .map((r) => r.workspaceId)
645 .filter((id): id is string => id !== null)
646
647 console.log(`Found ${workspaceIds.length} workspaces with candidate blocks\n`)
648
649 const outPath = resolve('migrate-byok-workspace-ids.txt')
650 writeFileSync(outPath, '')
651 console.log(`[DRY RUN] Will write workspace IDs with keys to ${outPath}\n`)
652 } else {
653 const raw = readFileSync(resolve(FROM_FILE!), 'utf-8')
654 workspaceIds = raw
655 .split('\n')
656 .map((l) => l.trim())
657 .filter(Boolean)
658 console.log(`Loaded ${workspaceIds.length} workspace IDs from ${FROM_FILE}\n`)

Calls 9

resolveFunction · 0.90
sleepFunction · 0.90
createEmptyStatsFunction · 0.85
processWorkspaceFunction · 0.85
mergeStatsFunction · 0.85
logMethod · 0.80
joinMethod · 0.80
errorMethod · 0.80
eqFunction · 0.50

Tested by

no test coverage detected