voc-problem-deep-dive-run.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/env node
  2. const { buildDeepDive } = require('../features/voc-problem-deep-dive/deep-dive');
  3. function parseArgs(argv) {
  4. const args = {};
  5. const setArg = (key, value) => {
  6. args[key] = value;
  7. if (key.includes('-')) {
  8. args[key.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())] = value;
  9. }
  10. };
  11. for (let i = 0; i < argv.length; i++) {
  12. const token = argv[i];
  13. if (!token.startsWith('--')) continue;
  14. const eq = token.indexOf('=');
  15. if (eq >= 0) {
  16. setArg(token.slice(2, eq), token.slice(eq + 1));
  17. continue;
  18. }
  19. const key = token.slice(2);
  20. const next = argv[i + 1];
  21. if (next && !next.startsWith('--')) {
  22. setArg(key, next);
  23. i++;
  24. } else {
  25. setArg(key, true);
  26. }
  27. }
  28. return args;
  29. }
  30. async function runVocProblemDeepDive(input = {}) {
  31. return buildDeepDive(input);
  32. }
  33. async function main() {
  34. const args = parseArgs(process.argv.slice(2));
  35. const result = await runVocProblemDeepDive(args);
  36. if (args.assistantMessageOnly || args['assistant-message-only']) {
  37. console.log(result.assistantMessage || JSON.stringify(result, null, 2));
  38. } else {
  39. console.log(JSON.stringify(result, null, 2));
  40. }
  41. if (!args.assistantMessageOnly && !args['assistant-message-only'] && (args.resultPrefix || args['result-prefix'])) {
  42. const prefix = args.resultPrefix || args['result-prefix'];
  43. console.log(`${prefix}=${JSON.stringify(result)}`);
  44. }
  45. }
  46. if (require.main === module) {
  47. main().catch(error => {
  48. console.error(JSON.stringify({ status: 'error', message: error.message }, null, 2));
  49. process.exit(1);
  50. });
  51. }
  52. module.exports = {
  53. runVocProblemDeepDive
  54. };