@wix/web50-cli 0.1.1 → 0.1.2

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.
Files changed (100) hide show
  1. package/bin/web5.js +1 -2
  2. package/dist/cjs/auth/deviceFlow.js +90 -17
  3. package/dist/cjs/auth/deviceFlow.js.map +1 -1
  4. package/dist/cjs/auth/index.js +40 -10
  5. package/dist/cjs/auth/index.js.map +1 -1
  6. package/dist/cjs/cli.js +3 -3
  7. package/dist/cjs/cli.js.map +1 -1
  8. package/dist/cjs/commands/bundle.js +12 -4
  9. package/dist/cjs/commands/bundle.js.map +1 -1
  10. package/dist/cjs/commands/conversation.js.map +1 -1
  11. package/dist/cjs/commands/conversationWizard.js +3 -1
  12. package/dist/cjs/commands/conversationWizard.js.map +1 -1
  13. package/dist/cjs/commands/deploy.js +55 -10
  14. package/dist/cjs/commands/deploy.js.map +1 -1
  15. package/dist/cjs/commands/ecom.js +239 -0
  16. package/dist/cjs/commands/ecom.js.map +1 -0
  17. package/dist/cjs/commands/embed.js.map +1 -1
  18. package/dist/cjs/commands/init.js +34 -3
  19. package/dist/cjs/commands/init.js.map +1 -1
  20. package/dist/cjs/commands/instructions.js +147 -51
  21. package/dist/cjs/commands/instructions.js.map +1 -1
  22. package/dist/cjs/commands/login.js +8 -4
  23. package/dist/cjs/commands/login.js.map +1 -1
  24. package/dist/cjs/commands/serve.js.map +1 -1
  25. package/dist/cjs/commands/validate.js +368 -16
  26. package/dist/cjs/commands/validate.js.map +1 -1
  27. package/dist/cjs/commands/whoami.js.map +1 -1
  28. package/dist/cjs/templates/aiInstructionsSchema.js +5 -1
  29. package/dist/cjs/templates/aiInstructionsSchema.js.map +1 -1
  30. package/dist/cjs/templates/cmsMappingSchema.js +132 -0
  31. package/dist/cjs/templates/cmsMappingSchema.js.map +1 -0
  32. package/dist/cjs/utils/project.js +13 -0
  33. package/dist/cjs/utils/project.js.map +1 -1
  34. package/dist/cjs/utils/wixApi.js +3 -1
  35. package/dist/cjs/utils/wixApi.js.map +1 -1
  36. package/dist/esm/auth/deviceFlow.js +89 -17
  37. package/dist/esm/auth/deviceFlow.js.map +1 -1
  38. package/dist/esm/auth/index.js +40 -11
  39. package/dist/esm/auth/index.js.map +1 -1
  40. package/dist/esm/cli.js +3 -3
  41. package/dist/esm/cli.js.map +1 -1
  42. package/dist/esm/commands/bundle.js +12 -4
  43. package/dist/esm/commands/bundle.js.map +1 -1
  44. package/dist/esm/commands/conversation.js.map +1 -1
  45. package/dist/esm/commands/conversationWizard.js +3 -1
  46. package/dist/esm/commands/conversationWizard.js.map +1 -1
  47. package/dist/esm/commands/deploy.js +55 -10
  48. package/dist/esm/commands/deploy.js.map +1 -1
  49. package/dist/esm/commands/ecom.js +234 -0
  50. package/dist/esm/commands/ecom.js.map +1 -0
  51. package/dist/esm/commands/embed.js.map +1 -1
  52. package/dist/esm/commands/init.js +34 -3
  53. package/dist/esm/commands/init.js.map +1 -1
  54. package/dist/esm/commands/instructions.js +152 -53
  55. package/dist/esm/commands/instructions.js.map +1 -1
  56. package/dist/esm/commands/login.js +8 -4
  57. package/dist/esm/commands/login.js.map +1 -1
  58. package/dist/esm/commands/serve.js.map +1 -1
  59. package/dist/esm/commands/validate.js +373 -19
  60. package/dist/esm/commands/validate.js.map +1 -1
  61. package/dist/esm/commands/whoami.js.map +1 -1
  62. package/dist/esm/templates/aiInstructionsSchema.js +5 -1
  63. package/dist/esm/templates/aiInstructionsSchema.js.map +1 -1
  64. package/dist/esm/templates/cmsMappingSchema.js +128 -0
  65. package/dist/esm/templates/cmsMappingSchema.js.map +1 -0
  66. package/dist/esm/utils/project.js +15 -0
  67. package/dist/esm/utils/project.js.map +1 -1
  68. package/dist/esm/utils/wixApi.js +4 -2
  69. package/dist/esm/utils/wixApi.js.map +1 -1
  70. package/dist/types/auth/deviceFlow.d.ts +1 -1
  71. package/dist/types/auth/deviceFlow.d.ts.map +1 -1
  72. package/dist/types/auth/index.d.ts +2 -1
  73. package/dist/types/auth/index.d.ts.map +1 -1
  74. package/dist/types/commands/bundle.d.ts.map +1 -1
  75. package/dist/types/commands/conversation.d.ts.map +1 -1
  76. package/dist/types/commands/conversationWizard.d.ts.map +1 -1
  77. package/dist/types/commands/deploy.d.ts.map +1 -1
  78. package/dist/types/commands/ecom.d.ts +3 -0
  79. package/dist/types/commands/ecom.d.ts.map +1 -0
  80. package/dist/types/commands/embed.d.ts.map +1 -1
  81. package/dist/types/commands/init.d.ts.map +1 -1
  82. package/dist/types/commands/instructions.d.ts.map +1 -1
  83. package/dist/types/commands/login.d.ts.map +1 -1
  84. package/dist/types/commands/serve.d.ts.map +1 -1
  85. package/dist/types/commands/validate.d.ts +4 -2
  86. package/dist/types/commands/validate.d.ts.map +1 -1
  87. package/dist/types/commands/whoami.d.ts.map +1 -1
  88. package/dist/types/templates/aiInstructionsSchema.d.ts.map +1 -1
  89. package/dist/types/templates/cmsMappingSchema.d.ts +2 -0
  90. package/dist/types/templates/cmsMappingSchema.d.ts.map +1 -0
  91. package/dist/types/utils/project.d.ts +2 -0
  92. package/dist/types/utils/project.d.ts.map +1 -1
  93. package/dist/types/utils/wixApi.d.ts.map +1 -1
  94. package/package.json +2 -2
  95. package/dist/cjs/commands/getClientId.js +0 -60
  96. package/dist/cjs/commands/getClientId.js.map +0 -1
  97. package/dist/esm/commands/getClientId.js +0 -56
  98. package/dist/esm/commands/getClientId.js.map +0 -1
  99. package/dist/types/commands/getClientId.d.ts +0 -3
  100. package/dist/types/commands/getClientId.d.ts.map +0 -1
@@ -1 +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":[]}
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 }) => ({\n role,\n content,\n createdDate,\n }));\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\n ? chalk.dim(` [${formatTime(msg.createdDate)}]`)\n : '';\n const text =\n (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({\n input: process.stdin,\n output: process.stdout,\n });\n tid = await new Promise<string>((resolve) => {\n rl.question('Enter trigger ID (TID): ', (answer) => {\n rl.close();\n resolve(answer.trim());\n });\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(\n '--since <date>',\n 'Only show conversations created after this ISO date',\n )\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) {\n return true;\n }\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(\n r.triggerIdContent ?? r.text ?? r.content ?? '(no content)',\n 80,\n );\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":[]}
@@ -5,6 +5,7 @@ exports.deployCommand = void 0;
5
5
  var _commander = require("commander");
6
6
  var fs = _interopRequireWildcard(require("fs"));
7
7
  var path = _interopRequireWildcard(require("path"));
8
+ var _jsYaml = require("js-yaml");
8
9
  var _project = require("../utils/project");
9
10
  var _wixApi = require("../utils/wixApi");
10
11
  var _print = require("../utils/print");
@@ -29,14 +30,32 @@ async function deployAiInstructions(root, opts = {}) {
29
30
  process.exit(1);
30
31
  }
31
32
  const content = fs.readFileSync(yamlPath, 'utf8');
33
+ const parsed = (0, _jsYaml.load)(content);
34
+
35
+ // Load action definitions from src/actions/*.yaml
36
+ const actionsDir = path.join(root, 'src', 'actions');
37
+ const actionInstruction = [];
38
+ if (fs.existsSync(actionsDir)) {
39
+ const files = fs.readdirSync(actionsDir).filter(f => f.endsWith('.yaml'));
40
+ for (const file of files) {
41
+ const action = (0, _jsYaml.load)(fs.readFileSync(path.join(actionsDir, file), 'utf8'));
42
+ if (action) {
43
+ actionInstruction.push(action);
44
+ }
45
+ }
46
+ }
47
+ const body = {
48
+ intents: parsed.intent ?? {},
49
+ semantics: parsed.semantics ?? {},
50
+ actions: actionInstruction,
51
+ content: parsed.instructions ?? ''
52
+ };
32
53
  const sp = (0, _print.spinner)('Deploying AI instructions...');
33
54
  try {
34
55
  const data = await (0, _wixApi.wixRequest)({
35
56
  path: '/web5/instruction/cli',
36
57
  method: 'POST',
37
- body: {
38
- instruction: content
39
- }
58
+ body
40
59
  });
41
60
  sp.stop();
42
61
  (0, _print.success)(`AI instructions deployed (version ${data.instruction.version})`);
@@ -104,6 +123,23 @@ async function rollbackInstructions() {
104
123
  }
105
124
  }
106
125
 
126
+ // ── Helpers ───────────────────────────────────────────────────────────────────
127
+
128
+ function deriveValidationFilters(targets) {
129
+ const hasInstructions = targets.includes('instructions');
130
+ const hasComponents = targets.includes('components');
131
+ if (hasInstructions && hasComponents) {
132
+ return undefined; // validate everything
133
+ }
134
+ if (hasInstructions) {
135
+ return ['ai', 'actions'];
136
+ }
137
+ if (hasComponents) {
138
+ return ['cms', 'scripts', 'sections'];
139
+ }
140
+ return undefined;
141
+ }
142
+
107
143
  // ── Stepped runner ────────────────────────────────────────────────────────────
108
144
 
109
145
  async function runWithSteps(root, targets, opts = {}) {
@@ -111,14 +147,19 @@ async function runWithSteps(root, targets, opts = {}) {
111
147
 
112
148
  // Calculate total steps
113
149
  let totalSteps = 0;
114
- if (!opts.skipValidate) totalSteps++;
115
- if (needsBundle && !opts.skipBundle) totalSteps++;
150
+ if (!opts.skipValidate) {
151
+ totalSteps++;
152
+ }
153
+ if (needsBundle && !opts.skipBundle) {
154
+ totalSteps++;
155
+ }
116
156
  totalSteps++; // deploy
117
157
 
118
158
  let currentStep = 0;
119
159
  if (!opts.skipValidate) {
120
160
  (0, _print.step)(++currentStep, totalSteps, 'Verification');
121
- const valid = (0, _validate.runValidation)(root);
161
+ const filters = deriveValidationFilters(targets);
162
+ const valid = (0, _validate.runValidation)(root, filters);
122
163
  if (!valid) {
123
164
  (0, _print.error)('Verification failed. Fix errors before deploying.');
124
165
  process.exit(1);
@@ -138,10 +179,14 @@ async function runWithSteps(root, targets, opts = {}) {
138
179
  }
139
180
  (0, _print.step)(++currentStep, totalSteps, 'Deploy');
140
181
  for (const target of targets) {
141
- if (target === 'components') await deployComponents();
142
- if (target === 'instructions') await deployAiInstructions(root, {
143
- activate: opts.activate
144
- });
182
+ if (target === 'components') {
183
+ await deployComponents();
184
+ }
185
+ if (target === 'instructions') {
186
+ await deployAiInstructions(root, {
187
+ activate: opts.activate
188
+ });
189
+ }
145
190
  }
146
191
  console.log('');
147
192
  }
@@ -1 +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":[]}
1
+ {"version":3,"names":["_commander","require","fs","_interopRequireWildcard","path","_jsYaml","_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","parsed","yamlLoad","actionsDir","actionInstruction","files","readdirSync","filter","endsWith","file","action","push","body","intents","intent","semantics","actions","instructions","sp","spinner","data","wixRequest","method","stop","success","instruction","version","activate","sp2","err_","message","deployComponents","warn","rollbackInstructions","query","active","find","previous","sort","a","b","deriveValidationFilters","targets","hasInstructions","includes","hasComponents","undefined","runWithSteps","needsBundle","totalSteps","skipValidate","skipBundle","currentStep","step","filters","valid","runValidation","execSync","stdio","target","console","log","instructionsCmd","Command","description","option","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 { load as yamlLoad } from 'js-yaml';\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, DomainFilter } 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 parsed = yamlLoad(content) as {\n intent?: Record<string, string>;\n semantics?: Record<string, string>;\n instructions?: string;\n [key: string]: unknown;\n };\n\n // Load action definitions from src/actions/*.yaml\n const actionsDir = path.join(root, 'src', 'actions');\n const actionInstruction: unknown[] = [];\n if (fs.existsSync(actionsDir)) {\n const files = fs.readdirSync(actionsDir).filter((f) => f.endsWith('.yaml'));\n for (const file of files) {\n const action = yamlLoad(\n fs.readFileSync(path.join(actionsDir, file), 'utf8'),\n );\n if (action) {\n actionInstruction.push(action);\n }\n }\n }\n\n const body = {\n intents: parsed.intent ?? {},\n semantics: parsed.semantics ?? {},\n actions: actionInstruction,\n content: parsed.instructions ?? '',\n };\n\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,\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(\n `Rolled back to version ${previous.version} (was v${active.version})`,\n );\n } catch (err_) {\n sp.stop();\n error((err_ as Error).message);\n process.exit(1);\n }\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction deriveValidationFilters(\n targets: ('components' | 'instructions')[],\n): DomainFilter[] | undefined {\n const hasInstructions = targets.includes('instructions');\n const hasComponents = targets.includes('components');\n if (hasInstructions && hasComponents) {\n return undefined; // validate everything\n }\n if (hasInstructions) {\n return ['ai', 'actions'];\n }\n if (hasComponents) {\n return ['cms', 'scripts', 'sections'];\n }\n return undefined;\n}\n\n// ── Stepped runner ────────────────────────────────────────────────────────────\n\nasync function runWithSteps(\n root: string,\n targets: ('components' | 'instructions')[],\n opts: {\n skipValidate?: boolean;\n skipBundle?: boolean;\n activate?: boolean;\n } = {},\n): Promise<void> {\n const needsBundle = targets.includes('components');\n\n // Calculate total steps\n let totalSteps = 0;\n if (!opts.skipValidate) {\n totalSteps++;\n }\n if (needsBundle && !opts.skipBundle) {\n totalSteps++;\n }\n totalSteps++; // deploy\n\n let currentStep = 0;\n\n if (!opts.skipValidate) {\n step(++currentStep, totalSteps, 'Verification');\n const filters = deriveValidationFilters(targets);\n const valid = runValidation(root, filters);\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') {\n await deployComponents();\n }\n if (target === 'instructions') {\n await deployAiInstructions(root, { activate: opts.activate });\n }\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(\n '--skip-bundle',\n 'Skip the bundle step (reuse existing build artifact)',\n )\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(\n '--target <target>',\n 'What to deploy: instructions, components, or all',\n )\n .option('--skip-validate', 'Skip the pre-deploy validation step')\n .option(\n '--skip-bundle',\n 'Skip the bundle step (reuse existing build artifact)',\n )\n .option('--rollback', 'Re-activate the previous instruction version')\n .action(\n 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 (\n opts.target === 'instructions' ||\n opts.target === 'components'\n ) {\n targets = [opts.target as DeployTarget];\n } else {\n error(\n `Unknown target: '${opts.target}'. Valid values: instructions, components, all`,\n );\n process.exit(1);\n }\n\n await runWithSteps(root, targets, {\n skipValidate: opts.skipValidate,\n skipBundle: opts.skipBundle,\n });\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":[]}