@wix/web50-cli 0.1.0 → 0.1.1
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/cjs/auth/deviceFlow.js +99 -13
- package/dist/cjs/auth/deviceFlow.js.map +1 -1
- package/dist/cjs/auth/index.js +65 -12
- package/dist/cjs/auth/index.js.map +1 -1
- package/dist/cjs/auth/secretStore.js.map +1 -1
- package/dist/cjs/cli.js +29 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/commands/bundle.js +95 -0
- package/dist/cjs/commands/bundle.js.map +1 -0
- package/dist/cjs/commands/conversation.js +50 -0
- package/dist/cjs/commands/conversation.js.map +1 -0
- package/dist/cjs/commands/conversationWizard.js +526 -0
- package/dist/cjs/commands/conversationWizard.js.map +1 -0
- package/dist/cjs/commands/deploy.js +192 -0
- package/dist/cjs/commands/deploy.js.map +1 -0
- package/dist/cjs/commands/embed.js +118 -0
- package/dist/cjs/commands/embed.js.map +1 -0
- package/dist/cjs/commands/getClientId.js +60 -0
- package/dist/cjs/commands/getClientId.js.map +1 -0
- package/dist/cjs/commands/init.js +31 -26
- package/dist/cjs/commands/init.js.map +1 -1
- package/dist/cjs/commands/instructions.js +360 -0
- package/dist/cjs/commands/instructions.js.map +1 -0
- package/dist/cjs/commands/login.js +59 -4
- package/dist/cjs/commands/login.js.map +1 -1
- package/dist/cjs/commands/logout.js +16 -0
- package/dist/cjs/commands/logout.js.map +1 -0
- package/dist/cjs/commands/serve.js +122 -0
- package/dist/cjs/commands/serve.js.map +1 -0
- package/dist/cjs/commands/storybook.js +102 -0
- package/dist/cjs/commands/storybook.js.map +1 -0
- package/dist/cjs/commands/validate.js +266 -18
- package/dist/cjs/commands/validate.js.map +1 -1
- package/dist/cjs/commands/whoami.js +48 -0
- package/dist/cjs/commands/whoami.js.map +1 -0
- package/dist/cjs/utils/print.js +12 -0
- package/dist/cjs/utils/print.js.map +1 -1
- package/dist/cjs/utils/project.js +11 -0
- package/dist/cjs/utils/project.js.map +1 -1
- package/dist/cjs/utils/wixApi.js +55 -0
- package/dist/cjs/utils/wixApi.js.map +1 -0
- package/dist/esm/auth/deviceFlow.js +106 -13
- package/dist/esm/auth/deviceFlow.js.map +1 -1
- package/dist/esm/auth/index.js +71 -13
- package/dist/esm/auth/index.js.map +1 -1
- package/dist/esm/auth/secretStore.js.map +1 -1
- package/dist/esm/cli.js +29 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/commands/bundle.js +92 -0
- package/dist/esm/commands/bundle.js.map +1 -0
- package/dist/esm/commands/conversation.js +44 -0
- package/dist/esm/commands/conversation.js.map +1 -0
- package/dist/esm/commands/conversationWizard.js +527 -0
- package/dist/esm/commands/conversationWizard.js.map +1 -0
- package/dist/esm/commands/deploy.js +194 -0
- package/dist/esm/commands/deploy.js.map +1 -0
- package/dist/esm/commands/embed.js +112 -0
- package/dist/esm/commands/embed.js.map +1 -0
- package/dist/esm/commands/getClientId.js +56 -0
- package/dist/esm/commands/getClientId.js.map +1 -0
- package/dist/esm/commands/init.js +32 -27
- package/dist/esm/commands/init.js.map +1 -1
- package/dist/esm/commands/instructions.js +360 -0
- package/dist/esm/commands/instructions.js.map +1 -0
- package/dist/esm/commands/login.js +62 -6
- package/dist/esm/commands/login.js.map +1 -1
- package/dist/esm/commands/logout.js +12 -0
- package/dist/esm/commands/logout.js.map +1 -0
- package/dist/esm/commands/serve.js +117 -0
- package/dist/esm/commands/serve.js.map +1 -0
- package/dist/esm/commands/storybook.js +97 -0
- package/dist/esm/commands/storybook.js.map +1 -0
- package/dist/esm/commands/validate.js +269 -19
- package/dist/esm/commands/validate.js.map +1 -1
- package/dist/esm/commands/whoami.js +44 -0
- package/dist/esm/commands/whoami.js.map +1 -0
- package/dist/esm/utils/print.js +10 -0
- package/dist/esm/utils/print.js.map +1 -1
- package/dist/esm/utils/project.js +8 -0
- package/dist/esm/utils/project.js.map +1 -1
- package/dist/esm/utils/wixApi.js +51 -0
- package/dist/esm/utils/wixApi.js.map +1 -0
- package/dist/types/auth/deviceFlow.d.ts +3 -1
- package/dist/types/auth/deviceFlow.d.ts.map +1 -1
- package/dist/types/auth/index.d.ts +5 -1
- package/dist/types/auth/index.d.ts.map +1 -1
- package/dist/types/auth/secretStore.d.ts +2 -0
- package/dist/types/auth/secretStore.d.ts.map +1 -1
- package/dist/types/commands/bundle.d.ts +10 -0
- package/dist/types/commands/bundle.d.ts.map +1 -0
- package/dist/types/commands/conversation.d.ts +3 -0
- package/dist/types/commands/conversation.d.ts.map +1 -0
- package/dist/types/commands/conversationWizard.d.ts +3 -0
- package/dist/types/commands/conversationWizard.d.ts.map +1 -0
- package/dist/types/commands/deploy.d.ts +3 -0
- package/dist/types/commands/deploy.d.ts.map +1 -0
- package/dist/types/commands/embed.d.ts +3 -0
- package/dist/types/commands/embed.d.ts.map +1 -0
- package/dist/types/commands/getClientId.d.ts +3 -0
- package/dist/types/commands/getClientId.d.ts.map +1 -0
- package/dist/types/commands/init.d.ts.map +1 -1
- package/dist/types/commands/instructions.d.ts +3 -0
- package/dist/types/commands/instructions.d.ts.map +1 -0
- package/dist/types/commands/login.d.ts.map +1 -1
- package/dist/types/commands/logout.d.ts +3 -0
- package/dist/types/commands/logout.d.ts.map +1 -0
- package/dist/types/commands/serve.d.ts +3 -0
- package/dist/types/commands/serve.d.ts.map +1 -0
- package/dist/types/commands/storybook.d.ts +3 -0
- package/dist/types/commands/storybook.d.ts.map +1 -0
- package/dist/types/commands/validate.d.ts +5 -0
- package/dist/types/commands/validate.d.ts.map +1 -1
- package/dist/types/commands/whoami.d.ts +3 -0
- package/dist/types/commands/whoami.d.ts.map +1 -0
- package/dist/types/utils/print.d.ts +3 -0
- package/dist/types/utils/print.d.ts.map +1 -1
- package/dist/types/utils/project.d.ts +10 -0
- package/dist/types/utils/project.d.ts.map +1 -1
- package/dist/types/utils/wixApi.d.ts +9 -0
- package/dist/types/utils/wixApi.d.ts.map +1 -0
- package/package.json +5 -5
- package/defaults/package.json +0 -42
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_commander","require","readline","_interopRequireWildcard","fs","path","_inquirer","_interopRequireDefault","_chalk","_ora","_open","_wixApi","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","verbose","BOX_W","printHeader","breadcrumb","pad","repeat","Math","max","length","console","log","chalk","cyan","bold","printFooterHints","hints","line","dim","timeAgo","iso","diff","Date","now","getTime","mins","floor","hours","days","formatTime","toLocaleTimeString","hour","minute","truncate","text","clean","replace","trim","slice","renderMarkdownLine","h3","match","underline","h2","h1","_","yellow","renderMarkdown","split","map","join","pressEnterToContinue","rl","createInterface","input","process","stdin","output","stdout","Promise","resolve","question","close","buildRow","createdDate","label","time","ago","divider","white","showRootsScreen","spinner","ora","start","roots","data","wixRequest","method","body","stop","messages","err","fail","error","red","message","type","clear","choices","name","triggerIdContent","content","value","inquirer","Separator","rootIndex","prompt","pageSize","selected","messageId","id","userQuery","conversationId","showMessagesScreen","convLabel","msg","push","msgIndex","index","showMessageDetailScreen","isUser","role","icon","tid","triggerId","browserUrl","action","open","runWizard","verboseFlag","on","exit","screen","running","s","printMessages","format","view","JSON","stringify","green","getCmd","Command","description","option","opts","answer","listCmd","sp","since","isNaN","filter","limit","parseInt","toLocaleString","exportCmd","requiredOption","outPath","ext","extname","toLowerCase","lines","writeFileSync","openCmd","wizardCmd","logs","includes","conversationsCommand","exports","outputHelp","addCommand"],"sources":["../../../src/commands/conversationWizard.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as readline from 'readline';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport open from 'open';\nimport { wixRequest } from '../utils/wixApi';\n\n// ── API response shapes ────────────────────────────────────────────────────\n\ninterface ConversationRoot {\n id?: string;\n triggerId?: string;\n conversationId?: string;\n content?: string;\n text?: string;\n triggerIdContent?: string;\n createdDate?: string;\n}\n\ninterface QueryRootsResponse {\n messages?: ConversationRoot[];\n}\n\ninterface ConversationMessage {\n id?: string;\n triggerId?: string;\n role?: 'user' | 'assistant' | string;\n content?: string;\n triggerIdContent?: string;\n createdDate?: string;\n}\n\ninterface GetConversationResponse {\n messages?: ConversationMessage[];\n}\n\n// ── Verbose flag ───────────────────────────────────────────────────────────\n\nlet verbose = false;\n\n// ── Wizard state ───────────────────────────────────────────────────────────\n\ntype WizardScreen =\n | { type: 'roots' }\n | {\n type: 'messages';\n messageId: string;\n userQuery: string;\n conversationId: string;\n }\n | {\n type: 'message-detail';\n messages: ConversationMessage[];\n messageId: string;\n userQuery: string;\n conversationId: string;\n index: number;\n }\n | { type: 'exit' };\n\n// ── UI primitives ──────────────────────────────────────────────────────────\n\nconst BOX_W = 66;\n\n/** Double-border header box — visually distinct section for breadcrumbs */\nfunction printHeader(breadcrumb: string): void {\n const pad = ' '.repeat(Math.max(0, BOX_W - breadcrumb.length - 1));\n console.log(chalk.cyan('╔' + '═'.repeat(BOX_W) + '╗'));\n console.log(\n `${chalk.cyan('║')} ${chalk.bold(breadcrumb)}${pad}${chalk.cyan('║')}`,\n );\n console.log(chalk.cyan('╚' + '═'.repeat(BOX_W) + '╝'));\n console.log();\n}\n\n/** Thin separator line with inline hint text */\nfunction printFooterHints(hints: string): void {\n const line = '─'.repeat(BOX_W + 2);\n console.log(chalk.dim(line));\n console.log(chalk.dim(` ${hints}`));\n console.log();\n}\n\n// ── Time helpers ───────────────────────────────────────────────────────────\n\nfunction timeAgo(iso: string | undefined): string {\n if (!iso) {\n return 'unknown';\n }\n const diff = Date.now() - new Date(iso).getTime();\n const mins = Math.floor(diff / 60_000);\n const hours = Math.floor(diff / 3_600_000);\n const days = Math.floor(diff / 86_400_000);\n if (mins < 1) {\n return 'just now';\n }\n if (mins < 60) {\n return `${mins}m ago`;\n }\n if (hours < 24) {\n return `${hours}h ago`;\n }\n return `${days}d ago`;\n}\n\nfunction formatTime(iso: string | undefined): string {\n if (!iso) {\n return '??:??';\n }\n try {\n return new Date(iso).toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n });\n } catch {\n return iso;\n }\n}\n\nfunction truncate(text: string, max = 50): string {\n const clean = text\n .replace(/\\n/g, ' ')\n .replace(/<!--.*?-->/g, '')\n .trim();\n return clean.length > max ? `${clean.slice(0, max - 1)}…` : clean;\n}\n\n// ── Markdown renderer ──────────────────────────────────────────────────────\n\nfunction renderMarkdownLine(line: string): string {\n const h3 = line.match(/^### (.+)/);\n if (h3) {\n return chalk.bold.underline(h3[1]);\n }\n const h2 = line.match(/^## (.+)/);\n if (h2) {\n return chalk.bold.underline(h2[1]);\n }\n const h1 = line.match(/^# (.+)/);\n if (h1) {\n return chalk.bold.underline(h1[1]);\n }\n return line\n .replace(/\\*\\*(.+?)\\*\\*/g, (_, t: string) => chalk.bold(t))\n .replace(/`([^`]+)`/g, (_, t: string) => chalk.yellow(t));\n}\n\nfunction renderMarkdown(text: string): string {\n return text.split('\\n').map(renderMarkdownLine).join('\\n');\n}\n\nfunction pressEnterToContinue(): Promise<void> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) => {\n rl.question(chalk.dim('\\nPress Enter to go back…'), () => {\n rl.close();\n resolve();\n });\n });\n}\n\n// ── Row builder ────────────────────────────────────────────────────────────\n\n/** Builds a single list row: 🕒 HH:MM (Nm ago) │ message text */\nfunction buildRow(createdDate: string | undefined, label: string): string {\n const time = chalk.dim(`🕒 ${formatTime(createdDate)}`);\n const ago = chalk.dim(`(${timeAgo(createdDate)})`);\n const divider = chalk.dim(' │ ');\n const text = chalk.white(truncate(label, 42));\n return ` ${time} ${ago}${divider}${text}`;\n}\n\n// ── Screens ────────────────────────────────────────────────────────────────\n\nasync function showRootsScreen(): Promise<WizardScreen> {\n const spinner = ora('Fetching conversations…').start();\n\n let roots: ConversationRoot[] = [];\n try {\n const data = await wixRequest<QueryRootsResponse>({\n path: '/web5/conversations/cli/roots/query',\n method: 'POST',\n body: {},\n verbose,\n });\n spinner.stop();\n roots = data.messages ?? [];\n } catch (err) {\n spinner.fail('Failed to fetch conversations');\n console.error(chalk.red((err as Error).message));\n await pressEnterToContinue();\n return { type: 'roots' };\n }\n\n if (roots.length === 0) {\n console.clear();\n console.log(chalk.yellow('No conversations found.'));\n await pressEnterToContinue();\n return { type: 'exit' };\n }\n\n console.clear();\n printHeader(`📁 Conversations ${chalk.dim(`${roots.length} total`)}`);\n printFooterHints('[↑↓] Navigate [Enter] Select [Ctrl+C] Quit');\n\n const choices = [\n ...roots.map((r, i) => ({\n name: buildRow(\n r.createdDate,\n r.triggerIdContent ?? r.text ?? r.content ?? '(no content)',\n ),\n value: i,\n })),\n new inquirer.Separator('─'.repeat(BOX_W)),\n { name: ` ${chalk.red('✕ Exit')}`, value: -1 },\n ];\n\n const { rootIndex } = await inquirer.prompt<{ rootIndex: number }>([\n {\n type: 'list',\n name: 'rootIndex',\n message: chalk.bold('Select a conversation'),\n choices,\n pageSize: 12,\n },\n ]);\n\n if (rootIndex === -1) {\n return { type: 'exit' };\n }\n\n const selected = roots[rootIndex];\n return {\n type: 'messages',\n messageId: selected.id ?? '',\n userQuery: selected.triggerIdContent ?? '',\n conversationId: selected.conversationId ?? '',\n };\n}\n\nasync function showMessagesScreen(\n messageId: string,\n userQuery: string,\n conversationId: string,\n): Promise<WizardScreen> {\n if (!messageId) {\n console.error(chalk.red('No message ID — returning to root list.'));\n await pressEnterToContinue();\n return { type: 'roots' };\n }\n\n const spinner = ora('Loading conversation…').start();\n\n let messages: ConversationMessage[] = [];\n try {\n const data = await wixRequest<GetConversationResponse>({\n path: `/web5/conversations/cli/by-message/${messageId}`,\n verbose,\n });\n spinner.stop();\n messages = data.messages ?? [];\n } catch (err) {\n spinner.fail('Failed to load conversation');\n console.error(chalk.red((err as Error).message));\n await pressEnterToContinue();\n return { type: 'roots' };\n }\n\n if (messages.length === 0) {\n console.clear();\n console.log(chalk.yellow('No messages in this conversation.'));\n await pressEnterToContinue();\n return { type: 'roots' };\n }\n\n console.clear();\n const convLabel = conversationId || messageId.slice(0, 12) + '…';\n printHeader(\n `📁 Conversations ❯ 💬 ${convLabel} ${chalk.dim(\n `${messages.length} messages`,\n )}`,\n );\n printFooterHints('[↑↓] Navigate [Enter] Expand [Ctrl+C] Quit');\n\n const choices: (\n | { name: string; value: number }\n | InstanceType<typeof inquirer.Separator>\n )[] = messages.map((msg, i) => ({\n name: buildRow(\n msg.createdDate,\n msg.triggerIdContent ?? msg.content ?? '(no query)',\n ),\n value: i,\n }));\n\n choices.push(new inquirer.Separator('─'.repeat(BOX_W)));\n choices.push({ name: ` ${chalk.dim('← Back')}`, value: -1 });\n choices.push({ name: ` ${chalk.red('✕ Exit')}`, value: -2 });\n\n const { msgIndex } = await inquirer.prompt<{ msgIndex: number }>([\n {\n type: 'list',\n name: 'msgIndex',\n message: chalk.bold('Select a message to expand'),\n choices,\n pageSize: 12,\n },\n ]);\n\n if (msgIndex === -2) {\n return { type: 'exit' };\n }\n if (msgIndex === -1) {\n return { type: 'roots' };\n }\n return {\n type: 'message-detail',\n messages,\n messageId,\n userQuery,\n conversationId,\n index: msgIndex,\n };\n}\n\nasync function showMessageDetailScreen(\n messages: ConversationMessage[],\n index: number,\n conversationId: string,\n): Promise<void> {\n console.clear();\n\n const msg = messages[index];\n if (!msg) {\n console.error(chalk.red('Message not found.'));\n return;\n }\n\n const isUser = msg.role === 'user';\n const icon = isUser ? '👤' : '🤖';\n const label = isUser ? 'User Query' : 'AI Response';\n const convLabel = conversationId || 'message';\n\n printHeader(`📁 Conversations ❯ 💬 ${convLabel} ❯ ${icon} ${label}`);\n\n // Metadata row\n console.log(\n chalk.dim(\n ` 🕒 ${formatTime(msg.createdDate)} (${timeAgo(msg.createdDate)})\\n`,\n ),\n );\n\n // Content\n const content = msg.content ?? '(empty)';\n console.log(isUser ? chalk.cyan(content) : renderMarkdown(content));\n console.log();\n\n // Action section\n console.log(chalk.cyan('╔' + '═'.repeat(BOX_W) + '╗'));\n console.log(\n `${chalk.cyan('║')} ${chalk.bold('Actions')}${' '.repeat(\n BOX_W - 9,\n )}${chalk.cyan('║')}`,\n );\n console.log(chalk.cyan('╚' + '═'.repeat(BOX_W) + '╝'));\n console.log();\n\n const tid = msg.triggerId ?? '';\n const browserUrl = `https://www.copyofcircanafordemo.com/web5#tid=${tid}`;\n\n const { action } = await inquirer.prompt<{ action: string }>([\n {\n type: 'list',\n name: 'action',\n message: chalk.bold('What would you like to do?'),\n choices: [\n { name: ` ${chalk.dim('← Back')}`, value: 'back' },\n { name: ` 🌐 Open in browser`, value: 'browser' },\n ],\n },\n ]);\n\n if (action === 'browser') {\n await open(browserUrl);\n }\n}\n\n// ── Main loop ──────────────────────────────────────────────────────────────\n\nasync function runWizard(verboseFlag: boolean): Promise<void> {\n verbose = verboseFlag;\n process.on('SIGINT', () => {\n console.log(chalk.dim('\\nBye.\\n'));\n process.exit(0);\n });\n\n let screen: WizardScreen = { type: 'roots' };\n let running = true;\n\n while (running) {\n switch (screen.type) {\n case 'roots':\n screen = await showRootsScreen();\n break;\n\n case 'messages':\n screen = await showMessagesScreen(\n screen.messageId,\n screen.userQuery,\n screen.conversationId,\n );\n break;\n\n case 'message-detail': {\n const s: {\n type: 'message-detail';\n messages: ConversationMessage[];\n messageId: string;\n userQuery: string;\n conversationId: string;\n index: number;\n } = screen;\n await showMessageDetailScreen(s.messages, s.index, s.conversationId);\n screen = {\n type: 'messages',\n messageId: s.messageId,\n userQuery: s.userQuery,\n conversationId: s.conversationId,\n };\n break;\n }\n\n case 'exit':\n console.clear();\n console.log(chalk.dim('Bye.\\n'));\n running = false;\n break;\n }\n }\n process.exit(0);\n}\n\n// ── Subcommands ────────────────────────────────────────────────────────────\n\ninterface ConversationDetail {\n id?: string;\n triggerId?: string;\n active?: boolean;\n messages?: ConversationMessage[];\n [key: string]: unknown;\n}\n\n// ── get ────────────────────────────────────────────────────────────────────\n\nfunction printMessages(messages: ConversationMessage[], format: string): void {\n if (messages.length === 0) {\n console.log('(no messages)');\n return;\n }\n if (format === 'json') {\n const view = messages.map(({ role, content, createdDate }) => ({ role, content, createdDate }));\n console.log(JSON.stringify(view, null, 2));\n return;\n }\n for (const msg of messages) {\n const isUser = msg.role === 'user';\n const role = isUser ? chalk.cyan('user: ') : chalk.green('assistant:');\n const time = msg.createdDate ? chalk.dim(` [${formatTime(msg.createdDate)}]`) : '';\n const text = (isUser ? (msg.triggerIdContent ?? msg.content) : msg.content) ?? '(empty)';\n console.log(`${role}${time}`);\n console.log(text);\n console.log();\n }\n}\n\nconst getCmd = new Command('get')\n .description('Get a conversation by message ID (--id) or trigger ID (--tid)')\n .option('--id <id>', 'Message ID — from conversations list')\n .option('--tid <tid>', 'Trigger ID (TID)')\n .option('--format <format>', 'Output format: text (default) or json', 'text')\n .action(async (opts: { id?: string; tid?: string; format?: string }) => {\n try {\n if (opts.id) {\n const data = await wixRequest<GetConversationResponse>({\n path: `/web5/conversations/cli/by-message/${opts.id}`,\n verbose,\n });\n printMessages(data.messages ?? [], opts.format ?? 'text');\n return;\n }\n\n let tid: string = opts.tid ?? '';\n if (!tid) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n tid = await new Promise<string>((resolve) => {\n rl.question('Enter trigger ID (TID): ', (answer) => { rl.close(); resolve(answer.trim()); });\n });\n }\n if (!tid) {\n console.error('Error: provide --id <message-id> or --tid <trigger-id>');\n process.exit(1);\n }\n\n const data = await wixRequest<ConversationDetail>({\n path: `/_api/conversation-history/v1/conversations/by-trigger/${tid}`,\n });\n printMessages(data.messages ?? [], opts.format ?? 'text');\n } catch (err) {\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n });\n\n// ── list ───────────────────────────────────────────────────────────────────\n\nconst listCmd = new Command('list')\n .description('List conversations (non-interactive)')\n .option('--limit <n>', 'Maximum number of conversations to show', '50')\n .option('--since <date>', 'Only show conversations created after this ISO date')\n .action(async (opts: { limit?: string; since?: string }) => {\n const sp = ora('Fetching conversations…').start();\n try {\n const data = await wixRequest<QueryRootsResponse>({\n path: '/web5/conversations/cli/roots/query',\n method: 'POST',\n body: {},\n verbose,\n });\n sp.stop();\n\n let roots = data.messages ?? [];\n\n if (opts.since) {\n const since = new Date(opts.since).getTime();\n if (isNaN(since)) {\n console.error('Error: --since must be a valid ISO date string');\n process.exit(1);\n }\n roots = roots.filter((r) => {\n if (!r.createdDate) return true;\n return new Date(r.createdDate).getTime() >= since;\n });\n }\n\n const limit = parseInt(opts.limit ?? '50', 10);\n roots = roots.slice(0, limit);\n\n if (roots.length === 0) {\n console.log(chalk.yellow('No conversations found.'));\n return;\n }\n for (const r of roots) {\n const label = truncate(r.triggerIdContent ?? r.text ?? r.content ?? '(no content)', 80);\n const time = r.createdDate\n ? chalk.dim(`[${new Date(r.createdDate).toLocaleString()}] `)\n : '';\n const id = r.id ? chalk.dim(` --id ${r.id}`) : '';\n console.log(`${time}${label}${id}`);\n }\n } catch (err) {\n sp.stop();\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n });\n\n// ── export ─────────────────────────────────────────────────────────────────\n\nconst exportCmd = new Command('export')\n .description('Export a conversation to a file')\n .requiredOption('--id <tid>', 'Trigger ID (TID) of the conversation')\n .requiredOption('--output <file>', 'Output file path (.json or .md)')\n .action(async (opts: { id: string; output: string }) => {\n const sp = ora(`Fetching conversation ${opts.id}…`).start();\n try {\n const data = await wixRequest<ConversationDetail>({\n path: `/_api/conversation-history/v1/conversations/by-trigger/${opts.id}`,\n });\n sp.stop();\n\n const outPath = path.resolve(opts.output);\n const ext = path.extname(outPath).toLowerCase();\n\n if (ext === '.md') {\n const messages = data.messages ?? [];\n const lines: string[] = [`# Conversation ${opts.id}`, ''];\n for (const msg of messages) {\n const role = msg.role === 'user' ? '**User**' : '**Assistant**';\n const time = msg.createdDate ? ` _(${msg.createdDate})_` : '';\n lines.push(`### ${role}${time}`, '', msg.content ?? '(empty)', '');\n }\n fs.writeFileSync(outPath, lines.join('\\n'), 'utf8');\n } else {\n fs.writeFileSync(outPath, JSON.stringify(data, null, 2), 'utf8');\n }\n\n console.log(`Exported conversation to ${outPath}`);\n } catch (err) {\n sp.stop();\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n });\n\n// ── open ───────────────────────────────────────────────────────────────────\n\nconst openCmd = new Command('open')\n .description('Open a conversation in the browser')\n .requiredOption('--id <tid>', 'Trigger ID (TID) of the conversation')\n .action(async (opts: { id: string }) => {\n const browserUrl = `https://www.copyofcircanafordemo.com/web5#tid=${opts.id}`;\n console.log(`Opening ${browserUrl}`);\n await open(browserUrl);\n });\n\n// ── Command export ─────────────────────────────────────────────────────────\n\nconst wizardCmd = new Command('wizard')\n .description('Open the interactive TUI to browse conversation history')\n .option('--logs', 'Print raw API requests and responses for debugging')\n .action(async (opts) => {\n try {\n await runWizard(opts.logs ?? false);\n } catch (err) {\n const msg = (err as Error).message ?? '';\n if (msg.includes('force closed') || msg.includes('User force')) {\n console.log(chalk.dim('\\nBye.'));\n process.exit(0);\n }\n console.error(chalk.red('Unexpected error: ' + msg));\n process.exit(1);\n }\n });\n\nexport const conversationsCommand = new Command('conversations')\n .description('Conversation history')\n .action(function (this: Command) {\n this.outputHelp();\n })\n .addCommand(wizardCmd)\n .addCommand(getCmd)\n .addCommand(listCmd)\n .addCommand(exportCmd)\n .addCommand(openCmd);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.deployCommand = void 0;
|
|
5
|
+
var _commander = require("commander");
|
|
6
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
7
|
+
var path = _interopRequireWildcard(require("path"));
|
|
8
|
+
var _project = require("../utils/project");
|
|
9
|
+
var _wixApi = require("../utils/wixApi");
|
|
10
|
+
var _print = require("../utils/print");
|
|
11
|
+
var _child_process = require("child_process");
|
|
12
|
+
var _validate = require("./validate");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
function getProjectRoot() {
|
|
15
|
+
const root = (0, _project.findProjectRoot)(process.cwd());
|
|
16
|
+
if (!root) {
|
|
17
|
+
(0, _print.error)('Not inside a web5 project. Run this command from your project directory.');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
return root;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// ── Sub-deployers ─────────────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
async function deployAiInstructions(root, opts = {}) {
|
|
26
|
+
const yamlPath = path.join(root, 'src', 'configuration', 'ai', 'prompt-instructions.yaml');
|
|
27
|
+
if (!fs.existsSync(yamlPath)) {
|
|
28
|
+
(0, _print.error)(`AI instructions file not found: ${yamlPath}`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
const content = fs.readFileSync(yamlPath, 'utf8');
|
|
32
|
+
const sp = (0, _print.spinner)('Deploying AI instructions...');
|
|
33
|
+
try {
|
|
34
|
+
const data = await (0, _wixApi.wixRequest)({
|
|
35
|
+
path: '/web5/instruction/cli',
|
|
36
|
+
method: 'POST',
|
|
37
|
+
body: {
|
|
38
|
+
instruction: content
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
sp.stop();
|
|
42
|
+
(0, _print.success)(`AI instructions deployed (version ${data.instruction.version})`);
|
|
43
|
+
if (opts.activate) {
|
|
44
|
+
const version = data.instruction.version;
|
|
45
|
+
const sp2 = (0, _print.spinner)(`Activating version ${version}...`);
|
|
46
|
+
try {
|
|
47
|
+
await (0, _wixApi.wixRequest)({
|
|
48
|
+
path: `/web5/instructions/cli/activate/${version}`,
|
|
49
|
+
method: 'POST'
|
|
50
|
+
});
|
|
51
|
+
sp2.stop();
|
|
52
|
+
(0, _print.success)(`Activated version ${version}`);
|
|
53
|
+
} catch (err_) {
|
|
54
|
+
sp2.stop();
|
|
55
|
+
(0, _print.error)(err_.message);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
} catch (err_) {
|
|
60
|
+
sp.stop();
|
|
61
|
+
(0, _print.error)(err_.message);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function deployComponents() {
|
|
66
|
+
(0, _print.warn)('Components deploy: to be developed');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ── Rollback ──────────────────────────────────────────────────────────────────
|
|
70
|
+
|
|
71
|
+
async function rollbackInstructions() {
|
|
72
|
+
const sp = (0, _print.spinner)('Fetching instructions for rollback...');
|
|
73
|
+
try {
|
|
74
|
+
const data = await (0, _wixApi.wixRequest)({
|
|
75
|
+
path: '/web5/instructions/cli/query',
|
|
76
|
+
method: 'POST',
|
|
77
|
+
body: {
|
|
78
|
+
query: {}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
sp.stop();
|
|
82
|
+
const instructions = data.instructions ?? [];
|
|
83
|
+
const active = instructions.find(i => i.active);
|
|
84
|
+
if (!active) {
|
|
85
|
+
(0, _print.error)('No active instruction found — nothing to roll back from.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const previous = instructions.filter(i => !i.active && i.version < active.version).sort((a, b) => b.version - a.version)[0];
|
|
89
|
+
if (!previous) {
|
|
90
|
+
(0, _print.error)(`No previous version found before v${active.version}.`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
const sp2 = (0, _print.spinner)(`Rolling back to version ${previous.version}...`);
|
|
94
|
+
await (0, _wixApi.wixRequest)({
|
|
95
|
+
path: `/web5/instructions/cli/activate/${previous.version}`,
|
|
96
|
+
method: 'POST'
|
|
97
|
+
});
|
|
98
|
+
sp2.stop();
|
|
99
|
+
(0, _print.success)(`Rolled back to version ${previous.version} (was v${active.version})`);
|
|
100
|
+
} catch (err_) {
|
|
101
|
+
sp.stop();
|
|
102
|
+
(0, _print.error)(err_.message);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ── Stepped runner ────────────────────────────────────────────────────────────
|
|
108
|
+
|
|
109
|
+
async function runWithSteps(root, targets, opts = {}) {
|
|
110
|
+
const needsBundle = targets.includes('components');
|
|
111
|
+
|
|
112
|
+
// Calculate total steps
|
|
113
|
+
let totalSteps = 0;
|
|
114
|
+
if (!opts.skipValidate) totalSteps++;
|
|
115
|
+
if (needsBundle && !opts.skipBundle) totalSteps++;
|
|
116
|
+
totalSteps++; // deploy
|
|
117
|
+
|
|
118
|
+
let currentStep = 0;
|
|
119
|
+
if (!opts.skipValidate) {
|
|
120
|
+
(0, _print.step)(++currentStep, totalSteps, 'Verification');
|
|
121
|
+
const valid = (0, _validate.runValidation)(root);
|
|
122
|
+
if (!valid) {
|
|
123
|
+
(0, _print.error)('Verification failed. Fix errors before deploying.');
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (needsBundle && !opts.skipBundle) {
|
|
128
|
+
(0, _print.step)(++currentStep, totalSteps, 'Bundle');
|
|
129
|
+
try {
|
|
130
|
+
(0, _child_process.execSync)('npm run bundle', {
|
|
131
|
+
cwd: root,
|
|
132
|
+
stdio: 'inherit'
|
|
133
|
+
});
|
|
134
|
+
} catch {
|
|
135
|
+
(0, _print.error)('Bundle failed. Fix errors before deploying.');
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
(0, _print.step)(++currentStep, totalSteps, 'Deploy');
|
|
140
|
+
for (const target of targets) {
|
|
141
|
+
if (target === 'components') await deployComponents();
|
|
142
|
+
if (target === 'instructions') await deployAiInstructions(root, {
|
|
143
|
+
activate: opts.activate
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
console.log('');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// ── Subcommands ───────────────────────────────────────────────────────────────
|
|
150
|
+
|
|
151
|
+
const instructionsCmd = new _commander.Command('instructions').description('Deploy AI instructions from src/configuration/ai/prompt-instructions.yaml').option('--skip-validate', 'Skip the pre-deploy validation step').option('--activate', 'Automatically activate the deployed version').action(async opts => {
|
|
152
|
+
const root = getProjectRoot();
|
|
153
|
+
await runWithSteps(root, ['instructions'], {
|
|
154
|
+
skipValidate: opts.skipValidate,
|
|
155
|
+
activate: opts.activate
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
const componentsCmd = new _commander.Command('components').description('Deploy components').option('--skip-validate', 'Skip the pre-deploy validation step').option('--skip-bundle', 'Skip the bundle step (reuse existing build artifact)').action(async opts => {
|
|
159
|
+
const root = getProjectRoot();
|
|
160
|
+
await runWithSteps(root, ['components'], {
|
|
161
|
+
skipValidate: opts.skipValidate,
|
|
162
|
+
skipBundle: opts.skipBundle
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// ── Root deploy command ───────────────────────────────────────────────────────
|
|
167
|
+
|
|
168
|
+
const deployCommand = exports.deployCommand = new _commander.Command('deploy').description('Deploy project resources to the Web5 platform').option('--target <target>', 'What to deploy: instructions, components, or all').option('--skip-validate', 'Skip the pre-deploy validation step').option('--skip-bundle', 'Skip the bundle step (reuse existing build artifact)').option('--rollback', 'Re-activate the previous instruction version').action(async opts => {
|
|
169
|
+
const root = getProjectRoot();
|
|
170
|
+
if (opts.rollback) {
|
|
171
|
+
await rollbackInstructions();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
let targets;
|
|
175
|
+
if (!opts.target || opts.target === 'all') {
|
|
176
|
+
targets = ['components', 'instructions'];
|
|
177
|
+
} else if (opts.target === 'instructions' || opts.target === 'components') {
|
|
178
|
+
targets = [opts.target];
|
|
179
|
+
} else {
|
|
180
|
+
(0, _print.error)(`Unknown target: '${opts.target}'. Valid values: instructions, components, all`);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
await runWithSteps(root, targets, {
|
|
184
|
+
skipValidate: opts.skipValidate,
|
|
185
|
+
skipBundle: opts.skipBundle
|
|
186
|
+
});
|
|
187
|
+
}).addCommand(instructionsCmd).addCommand(componentsCmd);
|
|
188
|
+
deployCommand.on('command:*', ([cmd]) => {
|
|
189
|
+
(0, _print.error)(`Unknown deploy target: '${cmd}'. Valid targets: components, instructions`);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_commander","require","fs","_interopRequireWildcard","path","_project","_wixApi","_print","_child_process","_validate","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getProjectRoot","root","findProjectRoot","process","cwd","error","exit","deployAiInstructions","opts","yamlPath","join","existsSync","content","readFileSync","sp","spinner","data","wixRequest","method","body","instruction","stop","success","version","activate","sp2","err_","message","deployComponents","warn","rollbackInstructions","query","instructions","active","find","previous","filter","sort","a","b","runWithSteps","targets","needsBundle","includes","totalSteps","skipValidate","skipBundle","currentStep","step","valid","runValidation","execSync","stdio","target","console","log","instructionsCmd","Command","description","option","action","componentsCmd","deployCommand","exports","rollback","addCommand","on","cmd"],"sources":["../../../src/commands/deploy.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { findProjectRoot } from '../utils/project';\nimport { wixRequest } from '../utils/wixApi';\nimport { success, error, warn, spinner, step } from '../utils/print';\nimport { execSync } from 'child_process';\nimport { runValidation } from './validate';\n\nfunction getProjectRoot(): string {\n const root = findProjectRoot(process.cwd());\n if (!root) {\n error(\n 'Not inside a web5 project. Run this command from your project directory.',\n );\n process.exit(1);\n }\n return root;\n}\n\n// ── Sub-deployers ─────────────────────────────────────────────────────────────\n\ninterface Instruction {\n id: string;\n version: number;\n content: string;\n active?: boolean;\n}\n\nasync function deployAiInstructions(\n root: string,\n opts: { activate?: boolean } = {},\n): Promise<void> {\n const yamlPath = path.join(\n root,\n 'src',\n 'configuration',\n 'ai',\n 'prompt-instructions.yaml',\n );\n\n if (!fs.existsSync(yamlPath)) {\n error(`AI instructions file not found: ${yamlPath}`);\n process.exit(1);\n }\n\n const content = fs.readFileSync(yamlPath, 'utf8');\n const sp = spinner('Deploying AI instructions...');\n\n try {\n const data = await wixRequest<{ instruction: Instruction }>({\n path: '/web5/instruction/cli',\n method: 'POST',\n body: { instruction: content },\n });\n sp.stop();\n success(`AI instructions deployed (version ${data.instruction.version})`);\n\n if (opts.activate) {\n const version = data.instruction.version;\n const sp2 = spinner(`Activating version ${version}...`);\n try {\n await wixRequest({\n path: `/web5/instructions/cli/activate/${version}`,\n method: 'POST',\n });\n sp2.stop();\n success(`Activated version ${version}`);\n } catch (err_) {\n sp2.stop();\n error((err_ as Error).message);\n process.exit(1);\n }\n }\n } catch (err_) {\n sp.stop();\n error((err_ as Error).message);\n process.exit(1);\n }\n}\n\nasync function deployComponents(): Promise<void> {\n warn('Components deploy: to be developed');\n}\n\n// ── Rollback ──────────────────────────────────────────────────────────────────\n\nasync function rollbackInstructions(): Promise<void> {\n const sp = spinner('Fetching instructions for rollback...');\n try {\n const data = await wixRequest<{ instructions: Instruction[] }>({\n path: '/web5/instructions/cli/query',\n method: 'POST',\n body: { query: {} },\n });\n sp.stop();\n\n const instructions = data.instructions ?? [];\n const active = instructions.find((i) => i.active);\n if (!active) {\n error('No active instruction found — nothing to roll back from.');\n process.exit(1);\n }\n\n const previous = instructions\n .filter((i) => !i.active && i.version < active.version)\n .sort((a, b) => b.version - a.version)[0];\n\n if (!previous) {\n error(`No previous version found before v${active.version}.`);\n process.exit(1);\n }\n\n const sp2 = spinner(`Rolling back to version ${previous.version}...`);\n await wixRequest({\n path: `/web5/instructions/cli/activate/${previous.version}`,\n method: 'POST',\n });\n sp2.stop();\n success(`Rolled back to version ${previous.version} (was v${active.version})`);\n } catch (err_) {\n sp.stop();\n error((err_ as Error).message);\n process.exit(1);\n }\n}\n\n// ── Stepped runner ────────────────────────────────────────────────────────────\n\nasync function runWithSteps(\n root: string,\n targets: ('components' | 'instructions')[],\n opts: { skipValidate?: boolean; skipBundle?: boolean; activate?: boolean } = {},\n): Promise<void> {\n const needsBundle = targets.includes('components');\n\n // Calculate total steps\n let totalSteps = 0;\n if (!opts.skipValidate) totalSteps++;\n if (needsBundle && !opts.skipBundle) totalSteps++;\n totalSteps++; // deploy\n\n let currentStep = 0;\n\n if (!opts.skipValidate) {\n step(++currentStep, totalSteps, 'Verification');\n const valid = runValidation(root);\n if (!valid) {\n error('Verification failed. Fix errors before deploying.');\n process.exit(1);\n }\n }\n\n if (needsBundle && !opts.skipBundle) {\n step(++currentStep, totalSteps, 'Bundle');\n try {\n execSync('npm run bundle', { cwd: root, stdio: 'inherit' });\n } catch {\n error('Bundle failed. Fix errors before deploying.');\n process.exit(1);\n }\n }\n\n step(++currentStep, totalSteps, 'Deploy');\n for (const target of targets) {\n if (target === 'components') await deployComponents();\n if (target === 'instructions') await deployAiInstructions(root, { activate: opts.activate });\n }\n\n console.log('');\n}\n\n// ── Subcommands ───────────────────────────────────────────────────────────────\n\nconst instructionsCmd = new Command('instructions')\n .description(\n 'Deploy AI instructions from src/configuration/ai/prompt-instructions.yaml',\n )\n .option('--skip-validate', 'Skip the pre-deploy validation step')\n .option('--activate', 'Automatically activate the deployed version')\n .action(async (opts: { skipValidate?: boolean; activate?: boolean }) => {\n const root = getProjectRoot();\n await runWithSteps(root, ['instructions'], {\n skipValidate: opts.skipValidate,\n activate: opts.activate,\n });\n });\n\nconst componentsCmd = new Command('components')\n .description('Deploy components')\n .option('--skip-validate', 'Skip the pre-deploy validation step')\n .option('--skip-bundle', 'Skip the bundle step (reuse existing build artifact)')\n .action(async (opts: { skipValidate?: boolean; skipBundle?: boolean }) => {\n const root = getProjectRoot();\n await runWithSteps(root, ['components'], {\n skipValidate: opts.skipValidate,\n skipBundle: opts.skipBundle,\n });\n });\n\n// ── Root deploy command ───────────────────────────────────────────────────────\n\nexport const deployCommand = new Command('deploy')\n .description('Deploy project resources to the Web5 platform')\n .option('--target <target>', 'What to deploy: instructions, components, or all')\n .option('--skip-validate', 'Skip the pre-deploy validation step')\n .option('--skip-bundle', 'Skip the bundle step (reuse existing build artifact)')\n .option('--rollback', 'Re-activate the previous instruction version')\n .action(async (opts: {\n target?: string;\n skipValidate?: boolean;\n skipBundle?: boolean;\n rollback?: boolean;\n }) => {\n const root = getProjectRoot();\n\n if (opts.rollback) {\n await rollbackInstructions();\n return;\n }\n\n type DeployTarget = 'components' | 'instructions';\n let targets: DeployTarget[];\n\n if (!opts.target || opts.target === 'all') {\n targets = ['components', 'instructions'];\n } else if (opts.target === 'instructions' || opts.target === 'components') {\n targets = [opts.target as DeployTarget];\n } else {\n error(`Unknown target: '${opts.target}'. Valid values: instructions, components, all`);\n process.exit(1);\n }\n\n await runWithSteps(root, targets, {\n skipValidate: opts.skipValidate,\n skipBundle: opts.skipBundle,\n });\n })\n .addCommand(instructionsCmd)\n .addCommand(componentsCmd);\n\ndeployCommand.on('command:*', ([cmd]: string[]) => {\n error(\n `Unknown deploy target: '${cmd}'. Valid targets: components, instructions`,\n );\n process.exit(1);\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.embedCommand = void 0;
|
|
6
|
+
var _commander = require("commander");
|
|
7
|
+
var readline = _interopRequireWildcard(require("readline"));
|
|
8
|
+
var _child_process = require("child_process");
|
|
9
|
+
var _inquirer = _interopRequireDefault(require("inquirer"));
|
|
10
|
+
var _wixApi = require("../utils/wixApi");
|
|
11
|
+
var _print = require("../utils/print");
|
|
12
|
+
var _project = require("../utils/project");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
function copyToClipboard(text) {
|
|
15
|
+
const cmd = process.platform === 'win32' ? `echo ${text} | clip` : process.platform === 'darwin' ? 'pbcopy' : 'xclip -selection clipboard';
|
|
16
|
+
(0, _child_process.execSync)(process.platform === 'win32' ? `echo ${text} | clip` : cmd, process.platform === 'win32' ? undefined : {
|
|
17
|
+
input: text
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async function promptCopyToClipboard(text) {
|
|
21
|
+
const rl = readline.createInterface({
|
|
22
|
+
input: process.stdin,
|
|
23
|
+
output: process.stdout
|
|
24
|
+
});
|
|
25
|
+
return new Promise(resolve => {
|
|
26
|
+
rl.question('\nPress Enter to copy to clipboard...', () => {
|
|
27
|
+
rl.close();
|
|
28
|
+
copyToClipboard(text);
|
|
29
|
+
console.log('Copied to clipboard.');
|
|
30
|
+
resolve();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async function promptForType() {
|
|
35
|
+
const {
|
|
36
|
+
type
|
|
37
|
+
} = await _inquirer.default.prompt([{
|
|
38
|
+
type: 'list',
|
|
39
|
+
name: 'type',
|
|
40
|
+
message: 'Select embed type:',
|
|
41
|
+
choices: [{
|
|
42
|
+
name: 'Script tag',
|
|
43
|
+
value: 'script'
|
|
44
|
+
}, {
|
|
45
|
+
name: 'React component',
|
|
46
|
+
value: 'react'
|
|
47
|
+
}]
|
|
48
|
+
}]);
|
|
49
|
+
return type;
|
|
50
|
+
}
|
|
51
|
+
async function getOrCreateClientId() {
|
|
52
|
+
var _createData$oAuthApp;
|
|
53
|
+
console.log('Searching for client ID...');
|
|
54
|
+
const queryData = await (0, _wixApi.wixRequest)({
|
|
55
|
+
path: '/oauth-app/v1/oauth-apps/query',
|
|
56
|
+
method: 'POST',
|
|
57
|
+
body: {}
|
|
58
|
+
});
|
|
59
|
+
const apps = queryData.oAuthApps ?? [];
|
|
60
|
+
const existing = apps.find(app => app.name === 'web5');
|
|
61
|
+
if (existing) {
|
|
62
|
+
console.log(`Found client ID: ${existing.id}`);
|
|
63
|
+
return existing.id;
|
|
64
|
+
}
|
|
65
|
+
console.log('Client ID not found, creating...');
|
|
66
|
+
const createData = await (0, _wixApi.wixRequest)({
|
|
67
|
+
path: '/oauth-app/v1/oauth-apps',
|
|
68
|
+
method: 'POST',
|
|
69
|
+
body: {
|
|
70
|
+
oAuthApp: {
|
|
71
|
+
name: 'web5',
|
|
72
|
+
application_type: 'WEB_APP'
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
const id = (_createData$oAuthApp = createData.oAuthApp) == null ? void 0 : _createData$oAuthApp.id;
|
|
77
|
+
if (!id) {
|
|
78
|
+
throw new Error('Failed to create OAuth app — no ID returned');
|
|
79
|
+
}
|
|
80
|
+
console.log(`Client ID created: ${id}`);
|
|
81
|
+
return id;
|
|
82
|
+
}
|
|
83
|
+
const embedCommand = exports.embedCommand = new _commander.Command('embed').description('Generate embed code for a Web5 component').option('--type <type>', 'Embed type: script or react').option('--client-id <id>', 'Use this client ID instead of fetching from the API').option('--no-clipboard', 'Print to stdout only — skip the clipboard prompt').action(async opts => {
|
|
84
|
+
try {
|
|
85
|
+
const type = opts.type ?? (await promptForType());
|
|
86
|
+
if (type === 'react') {
|
|
87
|
+
console.log('no react for now');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const root = (0, _project.findProjectRoot)(process.cwd());
|
|
91
|
+
const config = root ? (0, _project.readConfig)(root) : null;
|
|
92
|
+
const clientId = opts.clientId ?? ((config == null ? void 0 : config.clientId) || undefined) ?? (await getOrCreateClientId());
|
|
93
|
+
if (root && config && config.clientId !== clientId) {
|
|
94
|
+
(0, _project.writeConfig)(root, {
|
|
95
|
+
...config,
|
|
96
|
+
clientId
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const embedScript = `<script src="https://www.wix.com/embed/v1/component.js" data-client-id="${clientId}"></script>`;
|
|
100
|
+
if ((0, _print.isJsonMode)()) {
|
|
101
|
+
console.log(JSON.stringify({
|
|
102
|
+
type,
|
|
103
|
+
clientId,
|
|
104
|
+
embedCode: embedScript
|
|
105
|
+
}));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
console.log('\nEmbed script:\n');
|
|
109
|
+
console.log(embedScript);
|
|
110
|
+
if (opts.clipboard !== false && process.stdout.isTTY) {
|
|
111
|
+
await promptCopyToClipboard(embedScript);
|
|
112
|
+
}
|
|
113
|
+
} catch (err) {
|
|
114
|
+
console.error('Error:', err.message);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_commander","require","readline","_interopRequireWildcard","_child_process","_inquirer","_interopRequireDefault","_wixApi","_print","_project","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","copyToClipboard","text","cmd","process","platform","execSync","undefined","input","promptCopyToClipboard","rl","createInterface","stdin","output","stdout","Promise","resolve","question","close","console","log","promptForType","type","inquirer","prompt","name","message","choices","value","getOrCreateClientId","_createData$oAuthApp","queryData","wixRequest","path","method","body","apps","oAuthApps","existing","find","app","id","createData","oAuthApp","application_type","Error","embedCommand","exports","Command","description","option","action","opts","root","findProjectRoot","cwd","config","readConfig","clientId","writeConfig","embedScript","isJsonMode","JSON","stringify","embedCode","clipboard","isTTY","err","error","exit"],"sources":["../../../src/commands/embed.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as readline from 'readline';\nimport { execSync } from 'child_process';\nimport inquirer from 'inquirer';\nimport { wixRequest } from '../utils/wixApi';\nimport { isJsonMode } from '../utils/print';\nimport { findProjectRoot, readConfig, writeConfig } from '../utils/project';\n\nfunction copyToClipboard(text: string): void {\n const cmd =\n process.platform === 'win32'\n ? `echo ${text} | clip`\n : process.platform === 'darwin'\n ? 'pbcopy'\n : 'xclip -selection clipboard';\n\n execSync(\n process.platform === 'win32' ? `echo ${text} | clip` : cmd,\n process.platform === 'win32' ? undefined : { input: text },\n );\n}\n\nasync function promptCopyToClipboard(text: string): Promise<void> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) => {\n rl.question('\\nPress Enter to copy to clipboard...', () => {\n rl.close();\n copyToClipboard(text);\n console.log('Copied to clipboard.');\n resolve();\n });\n });\n}\n\ntype EmbedType = 'script' | 'react';\n\ninterface OAuthApp {\n id: string;\n name: string;\n}\n\ninterface QueryResponse {\n oAuthApps?: OAuthApp[];\n}\n\ninterface CreateResponse {\n oAuthApp?: OAuthApp;\n}\n\nasync function promptForType(): Promise<EmbedType> {\n const { type } = await inquirer.prompt<{ type: EmbedType }>([\n {\n type: 'list',\n name: 'type',\n message: 'Select embed type:',\n choices: [\n { name: 'Script tag', value: 'script' },\n { name: 'React component', value: 'react' },\n ],\n },\n ]);\n return type;\n}\n\nasync function getOrCreateClientId(): Promise<string> {\n console.log('Searching for client ID...');\n\n const queryData = await wixRequest<QueryResponse>({\n path: '/oauth-app/v1/oauth-apps/query',\n method: 'POST',\n body: {},\n });\n\n const apps = queryData.oAuthApps ?? [];\n const existing = apps.find((app) => app.name === 'web5');\n\n if (existing) {\n console.log(`Found client ID: ${existing.id}`);\n return existing.id;\n }\n\n console.log('Client ID not found, creating...');\n\n const createData = await wixRequest<CreateResponse>({\n path: '/oauth-app/v1/oauth-apps',\n method: 'POST',\n body: { oAuthApp: { name: 'web5', application_type: 'WEB_APP' } },\n });\n\n const id = createData.oAuthApp?.id;\n if (!id) {\n throw new Error('Failed to create OAuth app — no ID returned');\n }\n\n console.log(`Client ID created: ${id}`);\n return id;\n}\n\nexport const embedCommand = new Command('embed')\n .description('Generate embed code for a Web5 component')\n .option('--type <type>', 'Embed type: script or react')\n .option('--client-id <id>', 'Use this client ID instead of fetching from the API')\n .option('--no-clipboard', 'Print to stdout only — skip the clipboard prompt')\n .action(async (opts: { type?: string; clientId?: string; clipboard: boolean }) => {\n try {\n const type: EmbedType = opts.type as EmbedType ?? (await promptForType());\n\n if (type === 'react') {\n console.log('no react for now');\n return;\n }\n\n const root = findProjectRoot(process.cwd());\n const config = root ? readConfig(root) : null;\n\n const clientId =\n opts.clientId ??\n (config?.clientId || undefined) ??\n (await getOrCreateClientId());\n\n if (root && config && config.clientId !== clientId) {\n writeConfig(root, { ...config, clientId });\n }\n\n const embedScript = `<script src=\"https://www.wix.com/embed/v1/component.js\" data-client-id=\"${clientId}\"></script>`;\n\n if (isJsonMode()) {\n console.log(JSON.stringify({ type, clientId, embedCode: embedScript }));\n return;\n }\n\n console.log('\\nEmbed script:\\n');\n console.log(embedScript);\n\n if (opts.clipboard !== false && process.stdout.isTTY) {\n await promptCopyToClipboard(embedScript);\n }\n } catch (err) {\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n });\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.getClientIdCommand = void 0;
|
|
5
|
+
var _commander = require("commander");
|
|
6
|
+
var _wixApi = require("../utils/wixApi");
|
|
7
|
+
var _print = require("../utils/print");
|
|
8
|
+
const getClientIdCommand = exports.getClientIdCommand = new _commander.Command('get-client-id').description('Get the client ID of the web5 OAuth app').option('--name <app-name>', 'Filter by OAuth app name', 'web5').option('--create-if-missing', 'Create the OAuth app if it does not exist').action(async opts => {
|
|
9
|
+
try {
|
|
10
|
+
const data = await (0, _wixApi.wixRequest)({
|
|
11
|
+
path: '/oauth-app/v1/oauth-apps/query',
|
|
12
|
+
method: 'POST',
|
|
13
|
+
body: {}
|
|
14
|
+
});
|
|
15
|
+
const apps = data.oAuthApps ?? [];
|
|
16
|
+
const filtered = apps.filter(a => a.name === opts.name);
|
|
17
|
+
const existing = filtered[0];
|
|
18
|
+
if (!existing && opts.createIfMissing) {
|
|
19
|
+
const createData = await (0, _wixApi.wixRequest)({
|
|
20
|
+
path: '/oauth-app/v1/oauth-apps',
|
|
21
|
+
method: 'POST',
|
|
22
|
+
body: {
|
|
23
|
+
oAuthApp: {
|
|
24
|
+
name: opts.name,
|
|
25
|
+
application_type: 'WEB_APP'
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const created = createData.oAuthApp;
|
|
30
|
+
if (!created) {
|
|
31
|
+
console.error('Error: Failed to create OAuth app — no ID returned');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if ((0, _print.isJsonMode)()) {
|
|
35
|
+
console.log(JSON.stringify({
|
|
36
|
+
id: created.id,
|
|
37
|
+
name: created.name,
|
|
38
|
+
created: true
|
|
39
|
+
}));
|
|
40
|
+
} else {
|
|
41
|
+
(0, _print.success)(`Created OAuth app '${created.name}': ${created.id}`);
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if ((0, _print.isJsonMode)()) {
|
|
46
|
+
console.log(JSON.stringify(filtered));
|
|
47
|
+
} else if (existing) {
|
|
48
|
+
(0, _print.success)(`${existing.name}: ${existing.id}`);
|
|
49
|
+
} else {
|
|
50
|
+
console.log(`No OAuth app named '${opts.name}' found.`);
|
|
51
|
+
if (!opts.createIfMissing) {
|
|
52
|
+
console.log('Tip: use --create-if-missing to create it automatically.');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
} catch (err) {
|
|
56
|
+
console.error('Error:', err.message);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=getClientId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_commander","require","_wixApi","_print","getClientIdCommand","exports","Command","description","option","action","opts","data","wixRequest","path","method","body","apps","oAuthApps","filtered","filter","a","name","existing","createIfMissing","createData","oAuthApp","application_type","created","console","error","process","exit","isJsonMode","log","JSON","stringify","id","success","err","message"],"sources":["../../../src/commands/getClientId.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { wixRequest } from '../utils/wixApi';\nimport { success, isJsonMode } from '../utils/print';\n\ninterface OAuthApp {\n id: string;\n name: string;\n}\n\ninterface QueryResponse {\n oAuthApps?: OAuthApp[];\n}\n\ninterface CreateResponse {\n oAuthApp?: OAuthApp;\n}\n\nexport const getClientIdCommand = new Command('get-client-id')\n .description('Get the client ID of the web5 OAuth app')\n .option('--name <app-name>', 'Filter by OAuth app name', 'web5')\n .option('--create-if-missing', 'Create the OAuth app if it does not exist')\n .action(async (opts: { name: string; createIfMissing?: boolean }) => {\n try {\n const data = await wixRequest<QueryResponse>({\n path: '/oauth-app/v1/oauth-apps/query',\n method: 'POST',\n body: {},\n });\n\n const apps = data.oAuthApps ?? [];\n const filtered = apps.filter((a) => a.name === opts.name);\n const existing = filtered[0];\n\n if (!existing && opts.createIfMissing) {\n const createData = await wixRequest<CreateResponse>({\n path: '/oauth-app/v1/oauth-apps',\n method: 'POST',\n body: { oAuthApp: { name: opts.name, application_type: 'WEB_APP' } },\n });\n const created = createData.oAuthApp;\n if (!created) {\n console.error('Error: Failed to create OAuth app — no ID returned');\n process.exit(1);\n }\n if (isJsonMode()) {\n console.log(JSON.stringify({ id: created.id, name: created.name, created: true }));\n } else {\n success(`Created OAuth app '${created.name}': ${created.id}`);\n }\n return;\n }\n\n if (isJsonMode()) {\n console.log(JSON.stringify(filtered));\n } else if (existing) {\n success(`${existing.name}: ${existing.id}`);\n } else {\n console.log(`No OAuth app named '${opts.name}' found.`);\n if (!opts.createIfMissing) {\n console.log('Tip: use --create-if-missing to create it automatically.');\n }\n }\n } catch (err) {\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n });\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAeO,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAIE,kBAAO,CAAC,eAAe,CAAC,CAC3DC,WAAW,CAAC,yCAAyC,CAAC,CACtDC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAC/DA,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAC1EC,MAAM,CAAC,MAAOC,IAAiD,IAAK;EACnE,IAAI;IACF,MAAMC,IAAI,GAAG,MAAM,IAAAC,kBAAU,EAAgB;MAC3CC,IAAI,EAAE,gCAAgC;MACtCC,MAAM,EAAE,MAAM;MACdC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,MAAMC,IAAI,GAAGL,IAAI,CAACM,SAAS,IAAI,EAAE;IACjC,MAAMC,QAAQ,GAAGF,IAAI,CAACG,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAKX,IAAI,CAACW,IAAI,CAAC;IACzD,MAAMC,QAAQ,GAAGJ,QAAQ,CAAC,CAAC,CAAC;IAE5B,IAAI,CAACI,QAAQ,IAAIZ,IAAI,CAACa,eAAe,EAAE;MACrC,MAAMC,UAAU,GAAG,MAAM,IAAAZ,kBAAU,EAAiB;QAClDC,IAAI,EAAE,0BAA0B;QAChCC,MAAM,EAAE,MAAM;QACdC,IAAI,EAAE;UAAEU,QAAQ,EAAE;YAAEJ,IAAI,EAAEX,IAAI,CAACW,IAAI;YAAEK,gBAAgB,EAAE;UAAU;QAAE;MACrE,CAAC,CAAC;MACF,MAAMC,OAAO,GAAGH,UAAU,CAACC,QAAQ;MACnC,IAAI,CAACE,OAAO,EAAE;QACZC,OAAO,CAACC,KAAK,CAAC,oDAAoD,CAAC;QACnEC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;MACjB;MACA,IAAI,IAAAC,iBAAU,EAAC,CAAC,EAAE;QAChBJ,OAAO,CAACK,GAAG,CAACC,IAAI,CAACC,SAAS,CAAC;UAAEC,EAAE,EAAET,OAAO,CAACS,EAAE;UAAEf,IAAI,EAAEM,OAAO,CAACN,IAAI;UAAEM,OAAO,EAAE;QAAK,CAAC,CAAC,CAAC;MACpF,CAAC,MAAM;QACL,IAAAU,cAAO,EAAC,sBAAsBV,OAAO,CAACN,IAAI,MAAMM,OAAO,CAACS,EAAE,EAAE,CAAC;MAC/D;MACA;IACF;IAEA,IAAI,IAAAJ,iBAAU,EAAC,CAAC,EAAE;MAChBJ,OAAO,CAACK,GAAG,CAACC,IAAI,CAACC,SAAS,CAACjB,QAAQ,CAAC,CAAC;IACvC,CAAC,MAAM,IAAII,QAAQ,EAAE;MACnB,IAAAe,cAAO,EAAC,GAAGf,QAAQ,CAACD,IAAI,KAAKC,QAAQ,CAACc,EAAE,EAAE,CAAC;IAC7C,CAAC,MAAM;MACLR,OAAO,CAACK,GAAG,CAAC,uBAAuBvB,IAAI,CAACW,IAAI,UAAU,CAAC;MACvD,IAAI,CAACX,IAAI,CAACa,eAAe,EAAE;QACzBK,OAAO,CAACK,GAAG,CAAC,0DAA0D,CAAC;MACzE;IACF;EACF,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZV,OAAO,CAACC,KAAK,CAAC,QAAQ,EAAGS,GAAG,CAAWC,OAAO,CAAC;IAC/CT,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|