@wix/web50-cli 0.1.0 → 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 (134) hide show
  1. package/bin/web5.js +1 -2
  2. package/dist/cjs/auth/deviceFlow.js +175 -16
  3. package/dist/cjs/auth/deviceFlow.js.map +1 -1
  4. package/dist/cjs/auth/index.js +93 -10
  5. package/dist/cjs/auth/index.js.map +1 -1
  6. package/dist/cjs/auth/secretStore.js.map +1 -1
  7. package/dist/cjs/cli.js +29 -1
  8. package/dist/cjs/cli.js.map +1 -1
  9. package/dist/cjs/commands/bundle.js +103 -0
  10. package/dist/cjs/commands/bundle.js.map +1 -0
  11. package/dist/cjs/commands/conversation.js +50 -0
  12. package/dist/cjs/commands/conversation.js.map +1 -0
  13. package/dist/cjs/commands/conversationWizard.js +528 -0
  14. package/dist/cjs/commands/conversationWizard.js.map +1 -0
  15. package/dist/cjs/commands/deploy.js +237 -0
  16. package/dist/cjs/commands/deploy.js.map +1 -0
  17. package/dist/cjs/commands/ecom.js +239 -0
  18. package/dist/cjs/commands/ecom.js.map +1 -0
  19. package/dist/cjs/commands/embed.js +118 -0
  20. package/dist/cjs/commands/embed.js.map +1 -0
  21. package/dist/cjs/commands/init.js +65 -29
  22. package/dist/cjs/commands/init.js.map +1 -1
  23. package/dist/cjs/commands/instructions.js +456 -0
  24. package/dist/cjs/commands/instructions.js.map +1 -0
  25. package/dist/cjs/commands/login.js +63 -4
  26. package/dist/cjs/commands/login.js.map +1 -1
  27. package/dist/cjs/commands/logout.js +16 -0
  28. package/dist/cjs/commands/logout.js.map +1 -0
  29. package/dist/cjs/commands/serve.js +122 -0
  30. package/dist/cjs/commands/serve.js.map +1 -0
  31. package/dist/cjs/commands/storybook.js +102 -0
  32. package/dist/cjs/commands/storybook.js.map +1 -0
  33. package/dist/cjs/commands/validate.js +617 -17
  34. package/dist/cjs/commands/validate.js.map +1 -1
  35. package/dist/cjs/commands/whoami.js +48 -0
  36. package/dist/cjs/commands/whoami.js.map +1 -0
  37. package/dist/cjs/templates/aiInstructionsSchema.js +5 -1
  38. package/dist/cjs/templates/aiInstructionsSchema.js.map +1 -1
  39. package/dist/cjs/templates/cmsMappingSchema.js +132 -0
  40. package/dist/cjs/templates/cmsMappingSchema.js.map +1 -0
  41. package/dist/cjs/utils/print.js +12 -0
  42. package/dist/cjs/utils/print.js.map +1 -1
  43. package/dist/cjs/utils/project.js +24 -0
  44. package/dist/cjs/utils/project.js.map +1 -1
  45. package/dist/cjs/utils/wixApi.js +57 -0
  46. package/dist/cjs/utils/wixApi.js.map +1 -0
  47. package/dist/esm/auth/deviceFlow.js +182 -17
  48. package/dist/esm/auth/deviceFlow.js.map +1 -1
  49. package/dist/esm/auth/index.js +98 -11
  50. package/dist/esm/auth/index.js.map +1 -1
  51. package/dist/esm/auth/secretStore.js.map +1 -1
  52. package/dist/esm/cli.js +29 -1
  53. package/dist/esm/cli.js.map +1 -1
  54. package/dist/esm/commands/bundle.js +100 -0
  55. package/dist/esm/commands/bundle.js.map +1 -0
  56. package/dist/esm/commands/conversation.js +44 -0
  57. package/dist/esm/commands/conversation.js.map +1 -0
  58. package/dist/esm/commands/conversationWizard.js +529 -0
  59. package/dist/esm/commands/conversationWizard.js.map +1 -0
  60. package/dist/esm/commands/deploy.js +239 -0
  61. package/dist/esm/commands/deploy.js.map +1 -0
  62. package/dist/esm/commands/ecom.js +234 -0
  63. package/dist/esm/commands/ecom.js.map +1 -0
  64. package/dist/esm/commands/embed.js +112 -0
  65. package/dist/esm/commands/embed.js.map +1 -0
  66. package/dist/esm/commands/init.js +66 -30
  67. package/dist/esm/commands/init.js.map +1 -1
  68. package/dist/esm/commands/instructions.js +459 -0
  69. package/dist/esm/commands/instructions.js.map +1 -0
  70. package/dist/esm/commands/login.js +66 -6
  71. package/dist/esm/commands/login.js.map +1 -1
  72. package/dist/esm/commands/logout.js +12 -0
  73. package/dist/esm/commands/logout.js.map +1 -0
  74. package/dist/esm/commands/serve.js +117 -0
  75. package/dist/esm/commands/serve.js.map +1 -0
  76. package/dist/esm/commands/storybook.js +97 -0
  77. package/dist/esm/commands/storybook.js.map +1 -0
  78. package/dist/esm/commands/validate.js +623 -19
  79. package/dist/esm/commands/validate.js.map +1 -1
  80. package/dist/esm/commands/whoami.js +44 -0
  81. package/dist/esm/commands/whoami.js.map +1 -0
  82. package/dist/esm/templates/aiInstructionsSchema.js +5 -1
  83. package/dist/esm/templates/aiInstructionsSchema.js.map +1 -1
  84. package/dist/esm/templates/cmsMappingSchema.js +128 -0
  85. package/dist/esm/templates/cmsMappingSchema.js.map +1 -0
  86. package/dist/esm/utils/print.js +10 -0
  87. package/dist/esm/utils/print.js.map +1 -1
  88. package/dist/esm/utils/project.js +23 -0
  89. package/dist/esm/utils/project.js.map +1 -1
  90. package/dist/esm/utils/wixApi.js +53 -0
  91. package/dist/esm/utils/wixApi.js.map +1 -0
  92. package/dist/types/auth/deviceFlow.d.ts +3 -1
  93. package/dist/types/auth/deviceFlow.d.ts.map +1 -1
  94. package/dist/types/auth/index.d.ts +6 -1
  95. package/dist/types/auth/index.d.ts.map +1 -1
  96. package/dist/types/auth/secretStore.d.ts +2 -0
  97. package/dist/types/auth/secretStore.d.ts.map +1 -1
  98. package/dist/types/commands/bundle.d.ts +10 -0
  99. package/dist/types/commands/bundle.d.ts.map +1 -0
  100. package/dist/types/commands/conversation.d.ts +3 -0
  101. package/dist/types/commands/conversation.d.ts.map +1 -0
  102. package/dist/types/commands/conversationWizard.d.ts +3 -0
  103. package/dist/types/commands/conversationWizard.d.ts.map +1 -0
  104. package/dist/types/commands/deploy.d.ts +3 -0
  105. package/dist/types/commands/deploy.d.ts.map +1 -0
  106. package/dist/types/commands/ecom.d.ts +3 -0
  107. package/dist/types/commands/ecom.d.ts.map +1 -0
  108. package/dist/types/commands/embed.d.ts +3 -0
  109. package/dist/types/commands/embed.d.ts.map +1 -0
  110. package/dist/types/commands/init.d.ts.map +1 -1
  111. package/dist/types/commands/instructions.d.ts +3 -0
  112. package/dist/types/commands/instructions.d.ts.map +1 -0
  113. package/dist/types/commands/login.d.ts.map +1 -1
  114. package/dist/types/commands/logout.d.ts +3 -0
  115. package/dist/types/commands/logout.d.ts.map +1 -0
  116. package/dist/types/commands/serve.d.ts +3 -0
  117. package/dist/types/commands/serve.d.ts.map +1 -0
  118. package/dist/types/commands/storybook.d.ts +3 -0
  119. package/dist/types/commands/storybook.d.ts.map +1 -0
  120. package/dist/types/commands/validate.d.ts +7 -0
  121. package/dist/types/commands/validate.d.ts.map +1 -1
  122. package/dist/types/commands/whoami.d.ts +3 -0
  123. package/dist/types/commands/whoami.d.ts.map +1 -0
  124. package/dist/types/templates/aiInstructionsSchema.d.ts.map +1 -1
  125. package/dist/types/templates/cmsMappingSchema.d.ts +2 -0
  126. package/dist/types/templates/cmsMappingSchema.d.ts.map +1 -0
  127. package/dist/types/utils/print.d.ts +3 -0
  128. package/dist/types/utils/print.d.ts.map +1 -1
  129. package/dist/types/utils/project.d.ts +12 -0
  130. package/dist/types/utils/project.d.ts.map +1 -1
  131. package/dist/types/utils/wixApi.d.ts +9 -0
  132. package/dist/types/utils/wixApi.d.ts.map +1 -0
  133. package/package.json +5 -5
  134. package/defaults/package.json +0 -42
package/dist/esm/cli.js CHANGED
@@ -2,15 +2,43 @@ import { Command } from 'commander';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
4
  import { loginCommand } from './commands/login';
5
+ import { logoutCommand } from './commands/logout';
5
6
  import { initCommand } from './commands/init';
6
7
  import { validateCommand } from './commands/validate';
8
+ import { serveCommand } from './commands/serve';
9
+ import { embedCommand } from './commands/embed';
10
+ import { conversationsCommand } from './commands/conversationWizard';
11
+ import { instructionsCommand } from './commands/instructions';
12
+ import { deployCommand } from './commands/deploy';
13
+ import { whoamiCommand } from './commands/whoami';
14
+ import { ecomCommand } from './commands/ecom';
7
15
 
8
16
  // Read version from package.json at runtime (works from dist/cjs/ via ../../)
9
17
  const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, '../../package.json'), 'utf8'));
10
18
  const program = new Command();
11
- program.name('web5').description('Developer CLI for the Web5 platform').version(pkg.version);
19
+ program.name('web5').description('Developer CLI for the Web5 platform').version(pkg.version).addHelpCommand(false).option('--json', 'Output as machine-readable JSON (suppresses decorations)');
20
+
21
+ // Propagate --json to child processes via environment variable so that
22
+ // every command's action can call isJsonMode() without reading parent opts.
23
+ program.hook('preAction', () => {
24
+ if (program.opts().json) {
25
+ process.env.WEB5_JSON_MODE = '1';
26
+ }
27
+ });
28
+
29
+ // ── Commands ──────────────────────────────────────────────────────────────
12
30
  program.addCommand(loginCommand);
31
+ program.addCommand(logoutCommand);
32
+ program.addCommand(whoamiCommand);
13
33
  program.addCommand(initCommand);
14
34
  program.addCommand(validateCommand);
35
+ program.addCommand(deployCommand);
36
+ program.addCommand(serveCommand);
37
+ program.addCommand(embedCommand);
38
+ program.addCommand(ecomCommand);
39
+
40
+ // ── Wizards ───────────────────────────────────────────────────────────────
41
+ program.addCommand(instructionsCommand);
42
+ program.addCommand(conversationsCommand);
15
43
  program.parseAsync(process.argv);
16
44
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Command","fs","path","loginCommand","initCommand","validateCommand","pkg","JSON","parse","readFileSync","join","__dirname","program","name","description","version","addCommand","parseAsync","process","argv"],"sources":["../../src/cli.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { loginCommand } from './commands/login';\nimport { initCommand } from './commands/init';\nimport { validateCommand } from './commands/validate';\n\n// Read version from package.json at runtime (works from dist/cjs/ via ../../)\nconst pkg = JSON.parse(\n fs.readFileSync(path.join(__dirname, '../../package.json'), 'utf8'),\n) as { version: string };\n\nconst program = new Command();\n\nprogram\n .name('web5')\n .description('Developer CLI for the Web5 platform')\n .version(pkg.version);\n\nprogram.addCommand(loginCommand);\nprogram.addCommand(initCommand);\nprogram.addCommand(validateCommand);\n\nprogram.parseAsync(process.argv);\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,OAAO,KAAKC,EAAE,MAAM,IAAI;AACxB,OAAO,KAAKC,IAAI,MAAM,MAAM;AAC5B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,eAAe,QAAQ,qBAAqB;;AAErD;AACA,MAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CACpBP,EAAE,CAACQ,YAAY,CAACP,IAAI,CAACQ,IAAI,CAACC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CACpE,CAAwB;AAExB,MAAMC,OAAO,GAAG,IAAIZ,OAAO,CAAC,CAAC;AAE7BY,OAAO,CACJC,IAAI,CAAC,MAAM,CAAC,CACZC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,OAAO,CAACT,GAAG,CAACS,OAAO,CAAC;AAEvBH,OAAO,CAACI,UAAU,CAACb,YAAY,CAAC;AAChCS,OAAO,CAACI,UAAU,CAACZ,WAAW,CAAC;AAC/BQ,OAAO,CAACI,UAAU,CAACX,eAAe,CAAC;AAEnCO,OAAO,CAACK,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Command","fs","path","loginCommand","logoutCommand","initCommand","validateCommand","serveCommand","embedCommand","conversationsCommand","instructionsCommand","deployCommand","whoamiCommand","ecomCommand","pkg","JSON","parse","readFileSync","join","__dirname","program","name","description","version","addHelpCommand","option","hook","opts","json","process","env","WEB5_JSON_MODE","addCommand","parseAsync","argv"],"sources":["../../src/cli.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { loginCommand } from './commands/login';\nimport { logoutCommand } from './commands/logout';\nimport { initCommand } from './commands/init';\nimport { validateCommand } from './commands/validate';\nimport { serveCommand } from './commands/serve';\nimport { embedCommand } from './commands/embed';\nimport { conversationsCommand } from './commands/conversationWizard';\nimport { instructionsCommand } from './commands/instructions';\nimport { deployCommand } from './commands/deploy';\nimport { whoamiCommand } from './commands/whoami';\nimport { ecomCommand } from './commands/ecom';\n\n// Read version from package.json at runtime (works from dist/cjs/ via ../../)\nconst pkg = JSON.parse(\n fs.readFileSync(path.join(__dirname, '../../package.json'), 'utf8'),\n) as { version: string };\n\nconst program = new Command();\n\nprogram\n .name('web5')\n .description('Developer CLI for the Web5 platform')\n .version(pkg.version)\n .addHelpCommand(false)\n .option('--json', 'Output as machine-readable JSON (suppresses decorations)');\n\n// Propagate --json to child processes via environment variable so that\n// every command's action can call isJsonMode() without reading parent opts.\nprogram.hook('preAction', () => {\n if (program.opts().json) {\n process.env.WEB5_JSON_MODE = '1';\n }\n});\n\n// ── Commands ──────────────────────────────────────────────────────────────\nprogram.addCommand(loginCommand);\nprogram.addCommand(logoutCommand);\nprogram.addCommand(whoamiCommand);\nprogram.addCommand(initCommand);\nprogram.addCommand(validateCommand);\nprogram.addCommand(deployCommand);\nprogram.addCommand(serveCommand);\nprogram.addCommand(embedCommand);\nprogram.addCommand(ecomCommand);\n\n// ── Wizards ───────────────────────────────────────────────────────────────\nprogram.addCommand(instructionsCommand);\nprogram.addCommand(conversationsCommand);\n\nprogram.parseAsync(process.argv);\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,OAAO,KAAKC,EAAE,MAAM,IAAI;AACxB,OAAO,KAAKC,IAAI,MAAM,MAAM;AAC5B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,oBAAoB,QAAQ,+BAA+B;AACpE,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,WAAW,QAAQ,iBAAiB;;AAE7C;AACA,MAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CACpBf,EAAE,CAACgB,YAAY,CAACf,IAAI,CAACgB,IAAI,CAACC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CACpE,CAAwB;AAExB,MAAMC,OAAO,GAAG,IAAIpB,OAAO,CAAC,CAAC;AAE7BoB,OAAO,CACJC,IAAI,CAAC,MAAM,CAAC,CACZC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,OAAO,CAACT,GAAG,CAACS,OAAO,CAAC,CACpBC,cAAc,CAAC,KAAK,CAAC,CACrBC,MAAM,CAAC,QAAQ,EAAE,0DAA0D,CAAC;;AAE/E;AACA;AACAL,OAAO,CAACM,IAAI,CAAC,WAAW,EAAE,MAAM;EAC9B,IAAIN,OAAO,CAACO,IAAI,CAAC,CAAC,CAACC,IAAI,EAAE;IACvBC,OAAO,CAACC,GAAG,CAACC,cAAc,GAAG,GAAG;EAClC;AACF,CAAC,CAAC;;AAEF;AACAX,OAAO,CAACY,UAAU,CAAC7B,YAAY,CAAC;AAChCiB,OAAO,CAACY,UAAU,CAAC5B,aAAa,CAAC;AACjCgB,OAAO,CAACY,UAAU,CAACpB,aAAa,CAAC;AACjCQ,OAAO,CAACY,UAAU,CAAC3B,WAAW,CAAC;AAC/Be,OAAO,CAACY,UAAU,CAAC1B,eAAe,CAAC;AACnCc,OAAO,CAACY,UAAU,CAACrB,aAAa,CAAC;AACjCS,OAAO,CAACY,UAAU,CAACzB,YAAY,CAAC;AAChCa,OAAO,CAACY,UAAU,CAACxB,YAAY,CAAC;AAChCY,OAAO,CAACY,UAAU,CAACnB,WAAW,CAAC;;AAE/B;AACAO,OAAO,CAACY,UAAU,CAACtB,mBAAmB,CAAC;AACvCU,OAAO,CAACY,UAAU,CAACvB,oBAAoB,CAAC;AAExCW,OAAO,CAACa,UAAU,CAACJ,OAAO,CAACK,IAAI,CAAC","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ import { Command } from 'commander';
2
+ import { execSync, spawn } from 'child_process';
3
+ import { existsSync, readdirSync, statSync } from 'fs';
4
+ import * as path from 'path';
5
+ import { findProjectRoot } from '../utils/project';
6
+ import { success, error, spinner, isJsonMode } from '../utils/print';
7
+ export async function runBundle(root, opts) {
8
+ if (opts === void 0) {
9
+ opts = {};
10
+ }
11
+ const {
12
+ watch,
13
+ minify = true,
14
+ outDir,
15
+ sourcemap
16
+ } = opts;
17
+ const viteBin = path.join(root, 'node_modules', '.bin', 'vite');
18
+ if (!existsSync(viteBin)) {
19
+ error('vite not found. Run `npm install` in your project first.');
20
+ process.exit(1);
21
+ }
22
+ const args = ['build', '--config', 'src/vite.cdn.config.ts'];
23
+ if (!minify) {
24
+ args.push('--minify', 'false');
25
+ }
26
+ if (outDir) {
27
+ args.push('--outDir', outDir);
28
+ }
29
+ if (sourcemap) {
30
+ args.push('--sourcemap');
31
+ }
32
+ if (watch) {
33
+ // Non-blocking watch mode — let vite output flow through
34
+ args.push('--watch');
35
+ success('Starting bundle watch mode (press Ctrl+C to stop)...');
36
+ const child = spawn(`"${viteBin}"`, args, {
37
+ cwd: root,
38
+ shell: true,
39
+ stdio: 'inherit'
40
+ });
41
+ child.on('error', err_ => {
42
+ error(err_.message);
43
+ process.exit(1);
44
+ });
45
+ await new Promise((_, reject) => {
46
+ child.on('exit', code => {
47
+ if (code !== 0) {
48
+ reject(new Error(`vite exited with code ${code}`));
49
+ }
50
+ });
51
+ });
52
+ return;
53
+ }
54
+ const sp = isJsonMode() ? null : spinner('Bundling actions and components...');
55
+ try {
56
+ execSync(`"${viteBin}" ${args.join(' ')}`, {
57
+ cwd: root,
58
+ stdio: 'pipe'
59
+ });
60
+ sp == null || sp.stop();
61
+ const resolvedOutDir = outDir ? path.resolve(outDir) : path.join(root, 'dist', 'cdn');
62
+ if (isJsonMode()) {
63
+ const files = existsSync(resolvedOutDir) ? readdirSync(resolvedOutDir).map(f => {
64
+ const full = path.join(resolvedOutDir, f);
65
+ return {
66
+ file: f,
67
+ size: statSync(full).size
68
+ };
69
+ }) : [];
70
+ console.log(JSON.stringify({
71
+ ok: true,
72
+ outDir: resolvedOutDir,
73
+ files
74
+ }));
75
+ } else {
76
+ sp == null || sp.stop();
77
+ success('Bundle complete');
78
+ }
79
+ } catch (err_) {
80
+ var _stderr;
81
+ sp == null || sp.stop();
82
+ const msg = err_ instanceof Error ? ((_stderr = err_.stderr) == null ? void 0 : _stderr.toString().trim()) || err_.message : String(err_);
83
+ error(msg);
84
+ process.exit(1);
85
+ }
86
+ }
87
+ export const bundleCommand = new Command('bundle').description('Bundle actions and components into dist/cdn/').option('--watch', 'Re-bundle on source file changes').option('--no-minify', 'Disable minification (useful for debugging)').option('--outdir <path>', 'Override output directory (default: dist/cdn/)').option('--sourcemap', 'Generate source maps').action(async opts => {
88
+ const root = findProjectRoot(process.cwd());
89
+ if (!root) {
90
+ error('No web5.config.json found. Run this command from within a Web5 project.');
91
+ process.exit(1);
92
+ }
93
+ await runBundle(root, {
94
+ watch: opts.watch,
95
+ minify: opts.minify,
96
+ outDir: opts.outdir,
97
+ sourcemap: opts.sourcemap
98
+ });
99
+ });
100
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Command","execSync","spawn","existsSync","readdirSync","statSync","path","findProjectRoot","success","error","spinner","isJsonMode","runBundle","root","opts","watch","minify","outDir","sourcemap","viteBin","join","process","exit","args","push","child","cwd","shell","stdio","on","err_","message","Promise","_","reject","code","Error","sp","stop","resolvedOutDir","resolve","files","map","f","full","file","size","console","log","JSON","stringify","ok","_stderr","msg","stderr","toString","trim","String","bundleCommand","description","option","action","outdir"],"sources":["../../../src/commands/bundle.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { execSync, spawn } from 'child_process';\nimport { existsSync, readdirSync, statSync } from 'fs';\nimport * as path from 'path';\nimport { findProjectRoot } from '../utils/project';\nimport { success, error, spinner, isJsonMode } from '../utils/print';\n\nexport interface BundleOptions {\n watch?: boolean;\n minify?: boolean;\n outDir?: string;\n sourcemap?: boolean;\n}\n\nexport async function runBundle(\n root: string,\n opts: BundleOptions = {},\n): Promise<void> {\n const { watch, minify = true, outDir, sourcemap } = opts;\n\n const viteBin = path.join(root, 'node_modules', '.bin', 'vite');\n if (!existsSync(viteBin)) {\n error('vite not found. Run `npm install` in your project first.');\n process.exit(1);\n }\n\n const args = ['build', '--config', 'src/vite.cdn.config.ts'];\n if (!minify) {\n args.push('--minify', 'false');\n }\n if (outDir) {\n args.push('--outDir', outDir);\n }\n if (sourcemap) {\n args.push('--sourcemap');\n }\n\n if (watch) {\n // Non-blocking watch mode — let vite output flow through\n args.push('--watch');\n success('Starting bundle watch mode (press Ctrl+C to stop)...');\n const child = spawn(`\"${viteBin}\"`, args, {\n cwd: root,\n shell: true,\n stdio: 'inherit',\n });\n child.on('error', (err_) => {\n error(err_.message);\n process.exit(1);\n });\n await new Promise<void>((_, reject) => {\n child.on('exit', (code) => {\n if (code !== 0) {\n reject(new Error(`vite exited with code ${code}`));\n }\n });\n });\n return;\n }\n\n const sp = isJsonMode()\n ? null\n : spinner('Bundling actions and components...');\n try {\n execSync(`\"${viteBin}\" ${args.join(' ')}`, { cwd: root, stdio: 'pipe' });\n sp?.stop();\n\n const resolvedOutDir = outDir\n ? path.resolve(outDir)\n : path.join(root, 'dist', 'cdn');\n\n if (isJsonMode()) {\n const files = existsSync(resolvedOutDir)\n ? readdirSync(resolvedOutDir).map((f) => {\n const full = path.join(resolvedOutDir, f);\n return { file: f, size: statSync(full).size };\n })\n : [];\n console.log(JSON.stringify({ ok: true, outDir: resolvedOutDir, files }));\n } else {\n sp?.stop();\n success('Bundle complete');\n }\n } catch (err_) {\n sp?.stop();\n const msg =\n err_ instanceof Error\n ? (err_ as Error & { stderr?: Buffer }).stderr?.toString().trim() ||\n err_.message\n : String(err_);\n error(msg);\n process.exit(1);\n }\n}\n\nexport const bundleCommand = new Command('bundle')\n .description('Bundle actions and components into dist/cdn/')\n .option('--watch', 'Re-bundle on source file changes')\n .option('--no-minify', 'Disable minification (useful for debugging)')\n .option('--outdir <path>', 'Override output directory (default: dist/cdn/)')\n .option('--sourcemap', 'Generate source maps')\n .action(\n async (opts: {\n watch?: boolean;\n minify: boolean;\n outdir?: string;\n sourcemap?: boolean;\n }) => {\n const root = findProjectRoot(process.cwd());\n if (!root) {\n error(\n 'No web5.config.json found. Run this command from within a Web5 project.',\n );\n process.exit(1);\n }\n await runBundle(root, {\n watch: opts.watch,\n minify: opts.minify,\n outDir: opts.outdir,\n sourcemap: opts.sourcemap,\n });\n },\n );\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ import { Command } from 'commander';
2
+ import * as readline from 'readline';
3
+ import chalk from 'chalk';
4
+ import { wixRequest } from '../utils/wixApi';
5
+ async function promptForTid() {
6
+ const rl = readline.createInterface({
7
+ input: process.stdin,
8
+ output: process.stdout
9
+ });
10
+ return new Promise(resolve => {
11
+ rl.question('Enter trigger ID (TID): ', answer => {
12
+ rl.close();
13
+ resolve(answer.trim());
14
+ });
15
+ });
16
+ }
17
+ const getCmd = new Command('get').description('Get a conversation by trigger ID').option('--id <uuid>', 'Trigger ID (TID)').action(async opts => {
18
+ try {
19
+ const tid = opts.id || (await promptForTid());
20
+ if (!tid) {
21
+ console.error('Error: trigger ID is required');
22
+ process.exit(1);
23
+ }
24
+ const data = await wixRequest({
25
+ path: `/_api/conversation-history/v1/conversations/by-trigger/${tid}`
26
+ });
27
+ const messages = data.messages ?? [];
28
+ if (messages.length === 0) {
29
+ console.log('(no messages)');
30
+ return;
31
+ }
32
+ for (const msg of messages) {
33
+ const role = msg.role === 'user' ? chalk.cyan('user: ') : chalk.green('assistant:');
34
+ console.log(role);
35
+ console.log(msg.content ?? '(empty)');
36
+ console.log();
37
+ }
38
+ } catch (err) {
39
+ console.error('Error:', err.message);
40
+ process.exit(1);
41
+ }
42
+ });
43
+ export const conversationCommand = new Command('conversation').description('Conversation history commands').addCommand(getCmd);
44
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Command","readline","chalk","wixRequest","promptForTid","rl","createInterface","input","process","stdin","output","stdout","Promise","resolve","question","answer","close","trim","getCmd","description","option","action","opts","tid","id","console","error","exit","data","path","messages","length","log","msg","role","cyan","green","content","err","message","conversationCommand","addCommand"],"sources":["../../../src/commands/conversation.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as readline from 'readline';\nimport chalk from 'chalk';\nimport { wixRequest } from '../utils/wixApi';\n\ninterface ConversationMessage {\n role?: string;\n content?: string;\n createdDate?: string;\n}\n\ninterface ConversationDetail {\n messages?: ConversationMessage[];\n [key: string]: unknown;\n}\n\nasync function promptForTid(): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) => {\n rl.question('Enter trigger ID (TID): ', (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nconst getCmd = new Command('get')\n .description('Get a conversation by trigger ID')\n .option('--id <uuid>', 'Trigger ID (TID)')\n .action(async (opts) => {\n try {\n const tid: string = opts.id || (await promptForTid());\n if (!tid) {\n console.error('Error: trigger ID is required');\n process.exit(1);\n }\n\n const data = await wixRequest<ConversationDetail>({\n path: `/_api/conversation-history/v1/conversations/by-trigger/${tid}`,\n });\n\n const messages = data.messages ?? [];\n if (messages.length === 0) {\n console.log('(no messages)');\n return;\n }\n for (const msg of messages) {\n const role =\n msg.role === 'user'\n ? chalk.cyan('user: ')\n : chalk.green('assistant:');\n console.log(role);\n console.log(msg.content ?? '(empty)');\n console.log();\n }\n } catch (err) {\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n });\n\nexport const conversationCommand = new Command('conversation')\n .description('Conversation history commands')\n .addCommand(getCmd);\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,OAAO,KAAKC,QAAQ,MAAM,UAAU;AACpC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,iBAAiB;AAa5C,eAAeC,YAAYA,CAAA,EAAoB;EAC7C,MAAMC,EAAE,GAAGJ,QAAQ,CAACK,eAAe,CAAC;IAClCC,KAAK,EAAEC,OAAO,CAACC,KAAK;IACpBC,MAAM,EAAEF,OAAO,CAACG;EAClB,CAAC,CAAC;EACF,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;IAC9BR,EAAE,CAACS,QAAQ,CAAC,0BAA0B,EAAGC,MAAM,IAAK;MAClDV,EAAE,CAACW,KAAK,CAAC,CAAC;MACVH,OAAO,CAACE,MAAM,CAACE,IAAI,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,MAAMC,MAAM,GAAG,IAAIlB,OAAO,CAAC,KAAK,CAAC,CAC9BmB,WAAW,CAAC,kCAAkC,CAAC,CAC/CC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CACzCC,MAAM,CAAC,MAAOC,IAAI,IAAK;EACtB,IAAI;IACF,MAAMC,GAAW,GAAGD,IAAI,CAACE,EAAE,KAAK,MAAMpB,YAAY,CAAC,CAAC,CAAC;IACrD,IAAI,CAACmB,GAAG,EAAE;MACRE,OAAO,CAACC,KAAK,CAAC,+BAA+B,CAAC;MAC9ClB,OAAO,CAACmB,IAAI,CAAC,CAAC,CAAC;IACjB;IAEA,MAAMC,IAAI,GAAG,MAAMzB,UAAU,CAAqB;MAChD0B,IAAI,EAAE,0DAA0DN,GAAG;IACrE,CAAC,CAAC;IAEF,MAAMO,QAAQ,GAAGF,IAAI,CAACE,QAAQ,IAAI,EAAE;IACpC,IAAIA,QAAQ,CAACC,MAAM,KAAK,CAAC,EAAE;MACzBN,OAAO,CAACO,GAAG,CAAC,eAAe,CAAC;MAC5B;IACF;IACA,KAAK,MAAMC,GAAG,IAAIH,QAAQ,EAAE;MAC1B,MAAMI,IAAI,GACRD,GAAG,CAACC,IAAI,KAAK,MAAM,GACfhC,KAAK,CAACiC,IAAI,CAAC,YAAY,CAAC,GACxBjC,KAAK,CAACkC,KAAK,CAAC,YAAY,CAAC;MAC/BX,OAAO,CAACO,GAAG,CAACE,IAAI,CAAC;MACjBT,OAAO,CAACO,GAAG,CAACC,GAAG,CAACI,OAAO,IAAI,SAAS,CAAC;MACrCZ,OAAO,CAACO,GAAG,CAAC,CAAC;IACf;EACF,CAAC,CAAC,OAAOM,GAAG,EAAE;IACZb,OAAO,CAACC,KAAK,CAAC,QAAQ,EAAGY,GAAG,CAAWC,OAAO,CAAC;IAC/C/B,OAAO,CAACmB,IAAI,CAAC,CAAC,CAAC;EACjB;AACF,CAAC,CAAC;AAEJ,OAAO,MAAMa,mBAAmB,GAAG,IAAIxC,OAAO,CAAC,cAAc,CAAC,CAC3DmB,WAAW,CAAC,+BAA+B,CAAC,CAC5CsB,UAAU,CAACvB,MAAM,CAAC","ignoreList":[]}