@purpleschool/gptbot 0.7.39 → 0.7.40-texteditor

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 (95) hide show
  1. package/api/controllers/http/index.ts +1 -0
  2. package/api/controllers/http/subscription.ts +2 -0
  3. package/api/controllers/http/writer.ts +20 -0
  4. package/api/routes.ts +4 -0
  5. package/build/api/controllers/http/index.js +1 -0
  6. package/build/api/controllers/http/subscription.js +2 -0
  7. package/build/api/controllers/http/writer.js +22 -0
  8. package/build/api/routes.js +2 -0
  9. package/build/commands/subscription/downgrade-subscription.command.js +44 -0
  10. package/build/commands/subscription/index.js +1 -0
  11. package/build/commands/tools/index.js +1 -0
  12. package/build/commands/tools/writer/create-writer-document.command.js +16 -0
  13. package/build/commands/tools/writer/delete-all-writer-documents.command.js +8 -0
  14. package/build/commands/tools/writer/delete-writer-document-by-uuid.command.js +11 -0
  15. package/build/commands/tools/writer/export-writer-document-as-docx.command.js +15 -0
  16. package/build/commands/tools/writer/find-writer-document-by-uuid.command.js +14 -0
  17. package/build/commands/tools/writer/find-writer-documents.command.js +18 -0
  18. package/build/commands/tools/writer/generate-writer-document-contents.command.js +14 -0
  19. package/build/commands/tools/writer/get-writer-tool-config.command.js +11 -0
  20. package/build/commands/tools/writer/index.js +31 -0
  21. package/build/commands/tools/writer/update-writer-document-contents.command.js +18 -0
  22. package/build/commands/tools/writer/update-writer-document-outline.command.js +17 -0
  23. package/build/commands/tools/writer/writer-extend-text.command.js +18 -0
  24. package/build/commands/tools/writer/writer-fix-errors.command.js +18 -0
  25. package/build/commands/tools/writer/writer-generate-text.command.js +21 -0
  26. package/build/commands/tools/writer/writer-paraphrase.command.js +18 -0
  27. package/build/commands/tools/writer/writer-shorten-text.command.js +18 -0
  28. package/build/constants/errors/errors.js +117 -27
  29. package/build/constants/index.js +1 -0
  30. package/build/constants/order/enums/order-type.enum.js +1 -0
  31. package/build/constants/subscription/enums/subscription-action.enum.js +1 -0
  32. package/build/constants/subscription/enums/subscription-status.enum.js +3 -0
  33. package/build/constants/writer/enums/index.js +20 -0
  34. package/build/constants/writer/enums/writer-ai-action-pricing-type.enum.js +8 -0
  35. package/build/constants/writer/enums/writer-ai-action-type.enum.js +11 -0
  36. package/build/constants/writer/enums/writer-document-section-type.enum.js +9 -0
  37. package/build/constants/writer/enums/writer-document-stage.enum.js +14 -0
  38. package/build/constants/writer/index.js +17 -0
  39. package/build/helpers/index.js +1 -0
  40. package/build/helpers/writer/calculate-page-count.util.js +37 -0
  41. package/build/helpers/writer/calculate-writer-ai-action-price.util.js +16 -0
  42. package/build/helpers/writer/calculate-writer-content-generation-price.util.js +6 -0
  43. package/build/helpers/writer/index.js +19 -0
  44. package/build/models/tools/index.js +1 -0
  45. package/build/models/tools/writer/index.js +21 -0
  46. package/build/models/tools/writer/writer-ai-action.schema.js +26 -0
  47. package/build/models/tools/writer/writer-config.schema.js +11 -0
  48. package/build/models/tools/writer/writer-document-outline.schema.js +21 -0
  49. package/build/models/tools/writer/writer-document-type.schema.js +16 -0
  50. package/build/models/tools/writer/writer-document.schema.js +22 -0
  51. package/build/models/user-to-subscription.schema.js +1 -0
  52. package/commands/subscription/downgrade-subscription.command.ts +50 -0
  53. package/commands/subscription/index.ts +1 -0
  54. package/commands/tools/index.ts +1 -0
  55. package/commands/tools/writer/create-writer-document.command.ts +16 -0
  56. package/commands/tools/writer/delete-all-writer-documents.command.ts +6 -0
  57. package/commands/tools/writer/delete-writer-document-by-uuid.command.ts +11 -0
  58. package/commands/tools/writer/export-writer-document-as-docx.command.ts +15 -0
  59. package/commands/tools/writer/find-writer-document-by-uuid.command.ts +14 -0
  60. package/commands/tools/writer/find-writer-documents.command.ts +18 -0
  61. package/commands/tools/writer/generate-writer-document-contents.command.ts +14 -0
  62. package/commands/tools/writer/get-writer-tool-config.command.ts +10 -0
  63. package/commands/tools/writer/index.ts +15 -0
  64. package/commands/tools/writer/update-writer-document-contents.command.ts +20 -0
  65. package/commands/tools/writer/update-writer-document-outline.command.ts +19 -0
  66. package/commands/tools/writer/writer-extend-text.command.ts +20 -0
  67. package/commands/tools/writer/writer-fix-errors.command.ts +20 -0
  68. package/commands/tools/writer/writer-generate-text.command.ts +23 -0
  69. package/commands/tools/writer/writer-paraphrase.command.ts +20 -0
  70. package/commands/tools/writer/writer-shorten-text.command.ts +20 -0
  71. package/constants/errors/errors.ts +117 -27
  72. package/constants/index.ts +1 -0
  73. package/constants/order/enums/order-type.enum.ts +1 -0
  74. package/constants/subscription/enums/subscription-action.enum.ts +1 -0
  75. package/constants/subscription/enums/subscription-status.enum.ts +3 -0
  76. package/constants/writer/enums/index.ts +4 -0
  77. package/constants/writer/enums/writer-ai-action-pricing-type.enum.ts +4 -0
  78. package/constants/writer/enums/writer-ai-action-type.enum.ts +7 -0
  79. package/constants/writer/enums/writer-document-section-type.enum.ts +5 -0
  80. package/constants/writer/enums/writer-document-stage.enum.ts +13 -0
  81. package/constants/writer/index.ts +1 -0
  82. package/helpers/index.ts +1 -0
  83. package/helpers/writer/calculate-page-count.util.ts +46 -0
  84. package/helpers/writer/calculate-writer-ai-action-price.util.ts +20 -0
  85. package/helpers/writer/calculate-writer-content-generation-price.util.ts +3 -0
  86. package/helpers/writer/index.ts +3 -0
  87. package/models/tools/index.ts +1 -0
  88. package/models/tools/writer/index.ts +5 -0
  89. package/models/tools/writer/writer-ai-action.schema.ts +27 -0
  90. package/models/tools/writer/writer-config.schema.ts +10 -0
  91. package/models/tools/writer/writer-document-outline.schema.ts +28 -0
  92. package/models/tools/writer/writer-document-type.schema.ts +15 -0
  93. package/models/tools/writer/writer-document.schema.ts +21 -0
  94. package/models/user-to-subscription.schema.ts +1 -0
  95. package/package.json +1 -1
@@ -1707,118 +1707,208 @@ exports.ERRORS = {
1707
1707
  httpCode: 500,
1708
1708
  },
1709
1709
  DAILY_REWARD_COLLECT_ERROR: {
1710
- code: 'A353',
1710
+ code: 'A362',
1711
1711
  message: 'Ошибка при получении ежедневной награды',
1712
1712
  httpCode: 500,
1713
1713
  },
1714
1714
  DAILY_STREAK_CREATE_ERROR: {
1715
- code: 'A354',
1715
+ code: 'A363',
1716
1716
  message: 'Ошибка при создании ежедневного стрика',
1717
1717
  httpCode: 500,
1718
1718
  },
1719
1719
  DAILY_STREAK_FIND_ERROR: {
1720
- code: 'A355',
1720
+ code: 'A364',
1721
1721
  message: 'Ошибка при поиске ежедневного стрика',
1722
1722
  httpCode: 500,
1723
1723
  },
1724
1724
  DAILY_STREAK_PROMOCODE_ALREADY_EXISTS_ERROR: {
1725
- code: 'A356',
1725
+ code: 'A365',
1726
1726
  message: 'Промокод для ежедневного стрика уже существует',
1727
1727
  httpCode: 409,
1728
1728
  },
1729
1729
  DAILY_REWARD_NOT_READY_ERROR: {
1730
- code: 'A357',
1730
+ code: 'A366',
1731
1731
  message: 'Запрашиваемая награда ещё недоступна для получения',
1732
1732
  httpCode: 429,
1733
1733
  },
1734
1734
  DAILY_REWARD_ALREADY_COLLECTED_ERROR: {
1735
- code: 'A358',
1735
+ code: 'A367',
1736
1736
  message: 'Запрашиваемая награда уже получена',
1737
1737
  httpCode: 429,
1738
1738
  },
1739
1739
  DAILY_STREAK_UPDATE_ERROR: {
1740
- code: 'A359',
1740
+ code: 'A368',
1741
1741
  message: 'Ошибка при обновлении ежедневного стрика',
1742
1742
  httpCode: 500,
1743
1743
  },
1744
+ WRITER_CONFIG_ERROR: {
1745
+ code: 'A369',
1746
+ message: 'Произошла ошибка при получении конфигурации Writer',
1747
+ httpCode: 500,
1748
+ },
1749
+ WRITER_CREATE_DOCUMENT_ERROR: {
1750
+ code: 'A370',
1751
+ message: 'Произошла ошибка при создании документа',
1752
+ httpCode: 500,
1753
+ },
1754
+ WRITER_DOCUMENT_FIND_ERROR: {
1755
+ code: 'A371',
1756
+ message: 'Произошла ошибка при поиске документа',
1757
+ httpCode: 500,
1758
+ },
1759
+ WRITER_DOCUMENTS_FIND_ERROR: {
1760
+ code: 'A372',
1761
+ message: 'Произошла ошибка при поиске документов',
1762
+ httpCode: 500,
1763
+ },
1764
+ WRITER_DELETE_DOCUMENT_ERROR: {
1765
+ code: 'A373',
1766
+ message: 'Произошла ошибка при удалении документа',
1767
+ httpCode: 500,
1768
+ },
1769
+ WRITER_DELETE_ALL_DOCUMENTS_ERROR: {
1770
+ code: 'A374',
1771
+ message: 'Произошла ошибка при удалении всех документов пользователя',
1772
+ httpCode: 500,
1773
+ },
1774
+ WRITER_UPDATE_DOCUMENT_OUTLINE_ERROR: {
1775
+ code: 'A375',
1776
+ message: 'Произошла ошибка при обновлении структуры документа',
1777
+ httpCode: 500,
1778
+ },
1779
+ WRITER_GENERATE_DOCUMENT_CONTENTS_ERROR: {
1780
+ code: 'A376',
1781
+ message: 'Произошла ошибка при генерации содержимого документа',
1782
+ httpCode: 500,
1783
+ },
1744
1784
  ACCOUNT_DELETE_ERROR: {
1745
- code: 'A360',
1785
+ code: 'A377',
1746
1786
  message: 'Аккаунт не был удалён',
1747
1787
  httpCode: 500,
1748
1788
  },
1749
1789
  ACCOUNT_DELETED: {
1750
- code: 'A361',
1790
+ code: 'A378',
1751
1791
  message: 'Операция невозможна, аккаунт был удалён',
1752
1792
  httpCode: 400,
1753
1793
  },
1754
- TELEGRAM_PROFILE_DELETE_ERROR: {
1755
- code: 'A362',
1756
- message: 'Произошла ошибка при удалении Telegram профиля',
1757
- httpCode: 500,
1758
- },
1759
1794
  TOOL_NOT_FOUND_ERROR: {
1760
- code: 'A363',
1795
+ code: 'A379',
1761
1796
  message: 'Инструмент не найден',
1762
1797
  httpCode: 404,
1763
1798
  },
1799
+ TELEGRAM_PROFILE_DELETE_ERROR: {
1800
+ code: 'A380',
1801
+ message: 'Произошла ошибка при удалении Telegram профиля',
1802
+ httpCode: 500,
1803
+ },
1764
1804
  ORDER_CHECK_FIRST_PURCHASE_ERROR: {
1765
- code: 'A364',
1805
+ code: 'A381',
1766
1806
  message: 'Произошла ошибка при проверке первой покупки',
1767
1807
  httpCode: 500,
1768
1808
  },
1769
1809
  ORDER_CURRENT_ORDER_NOT_FOUND_ERROR: {
1770
- code: 'A365',
1810
+ code: 'A382',
1771
1811
  message: 'Текущий заказ не найден',
1772
1812
  httpCode: 404,
1773
1813
  },
1774
1814
  ORDER_GET_USER_ORDERS_ERROR: {
1775
- code: 'A366',
1815
+ code: 'A383',
1776
1816
  message: 'Произошла ошибка при получении заказов пользователя',
1777
1817
  httpCode: 500,
1778
1818
  },
1779
1819
  ORDER_NO_SUBSCRIPTION_ID_OR_PRODUCT_ID_PROVIDED_ERROR: {
1780
- code: 'A367',
1820
+ code: 'A384',
1781
1821
  message: 'Не указан subscriptionId или productId',
1782
1822
  httpCode: 400,
1783
1823
  },
1784
1824
  FILE_TO_MD_FORMAT_ERROR: {
1785
- code: 'A368',
1825
+ code: 'A385',
1786
1826
  message: 'Неверный формат файла, варианты: .xlsx, .docx, .pdf',
1787
1827
  httpCode: 400,
1788
1828
  },
1789
1829
  FILE_TO_MD_ERROR: {
1790
- code: 'A369',
1830
+ code: 'A386',
1791
1831
  message: 'Произошла ошибка при конвертации файла в markdown',
1792
1832
  httpCode: 500,
1793
1833
  },
1794
1834
  FILE_TO_MD_CONVERT_ERROR: {
1795
- code: 'A370',
1835
+ code: 'A387',
1796
1836
  message: 'Не получилось конвертировать файл в markdown, возможно файл пуст, поврежден или невалиден',
1797
1837
  httpCode: 400,
1798
1838
  },
1799
1839
  IMAGE_EDITOR_MODEL_INACTIVE: {
1800
- code: 'A371',
1840
+ code: 'A388',
1801
1841
  message: 'Модель редактирования картинок архивирована и недоступна для пользования',
1802
1842
  httpCode: 403,
1803
1843
  },
1804
1844
  TTS_MODEL_INACTIVE: {
1805
- code: 'A372',
1845
+ code: 'A389',
1806
1846
  message: 'Модель генерации текста в голос архивирована и недоступна для пользования',
1807
1847
  httpCode: 403,
1808
1848
  },
1809
1849
  STT_MODEL_INACTIVE: {
1810
- code: 'A373',
1850
+ code: 'A390',
1811
1851
  message: 'Модель генерации голоса в текст архивирована и недоступна для пользования',
1812
1852
  httpCode: 403,
1813
1853
  },
1814
1854
  VIDEO_MODEL_INACTIVE: {
1815
- code: 'A374',
1855
+ code: 'A391',
1816
1856
  message: 'Модель генерации видео архивирована и недоступна для пользования',
1817
1857
  httpCode: 403,
1818
1858
  },
1819
1859
  PDF_TO_MD_CONVERT_ERROR: {
1820
- code: 'A375',
1860
+ code: 'A392',
1821
1861
  message: 'Не получилось конвертировать pdf в markdown, возможно вы прикрепили скан или картинку, не имеющую текста',
1822
1862
  httpCode: 400,
1823
1863
  },
1864
+ SUBSCRIPTION_DOWNGRADE_INVALID: {
1865
+ code: 'A393',
1866
+ message: 'Невозможно понизить подписку до указанного уровня',
1867
+ httpCode: 400,
1868
+ },
1869
+ SUBSCRIPTION_DOWNGRADE_ERROR: {
1870
+ code: 'A394',
1871
+ message: 'Не удалось понизить подписку',
1872
+ httpCode: 500,
1873
+ },
1874
+ SUBSCRIPTIONS_GET_DOWNGRADE_ERROR: {
1875
+ code: 'A395',
1876
+ message: 'Не удалось получить список возможных понижений для подписок',
1877
+ httpCode: 500,
1878
+ },
1879
+ WRITER_PARAPHRASE_ERROR: {
1880
+ code: 'A396',
1881
+ message: 'Произошла ошибка при перефразировании текста',
1882
+ httpCode: 500,
1883
+ },
1884
+ WRITER_EXTEND_TEXT_ERROR: {
1885
+ code: 'A397',
1886
+ message: 'Произошла ошибка при расширении текста',
1887
+ httpCode: 500,
1888
+ },
1889
+ WRITER_SHORTEN_TEXT_ERROR: {
1890
+ code: 'A398',
1891
+ message: 'Произошла ошибка при сокращении текста',
1892
+ httpCode: 500,
1893
+ },
1894
+ WRITER_FIX_ERRORS_ERROR: {
1895
+ code: 'A399',
1896
+ message: 'Произошла ошибка при исправлении ошибок в тексте',
1897
+ httpCode: 500,
1898
+ },
1899
+ WRITER_UPDATE_DOCUMENT_CONTENTS_ERROR: {
1900
+ code: 'A400',
1901
+ message: 'Произошла ошибка при обновлении содержимого документа',
1902
+ httpCode: 500,
1903
+ },
1904
+ WRITER_GENERATE_TEXT_ERROR: {
1905
+ code: 'A401',
1906
+ message: 'Произошла ошибка при генерации текста',
1907
+ httpCode: 500,
1908
+ },
1909
+ WRITER_EXPORT_DOCX_ERROR: {
1910
+ code: 'A402',
1911
+ message: 'Произошла ошибка при экспорте документа в DOCX',
1912
+ httpCode: 500,
1913
+ },
1824
1914
  };
@@ -47,6 +47,7 @@ __exportStar(require("./promocode"), exports);
47
47
  __exportStar(require("./ui-notification"), exports);
48
48
  __exportStar(require("./review"), exports);
49
49
  __exportStar(require("./tool-video"), exports);
50
+ __exportStar(require("./writer"), exports);
50
51
  __exportStar(require("./tool-image-editor"), exports);
51
52
  __exportStar(require("./feedback"), exports);
52
53
  __exportStar(require("./daily-streak"), exports);
@@ -5,4 +5,5 @@ var ORDER_TYPE;
5
5
  (function (ORDER_TYPE) {
6
6
  ORDER_TYPE["purchase"] = "purchase";
7
7
  ORDER_TYPE["upgrade"] = "upgrade";
8
+ ORDER_TYPE["downgrade"] = "downgrade";
8
9
  })(ORDER_TYPE || (exports.ORDER_TYPE = ORDER_TYPE = {}));
@@ -7,4 +7,5 @@ var SUBSCRIPTION_ACTION;
7
7
  SUBSCRIPTION_ACTION["buy"] = "buy";
8
8
  SUBSCRIPTION_ACTION["upgrade"] = "upgrade";
9
9
  SUBSCRIPTION_ACTION["possible_upgrade"] = "possible_upgrade";
10
+ SUBSCRIPTION_ACTION["downgrade"] = "downgrade";
10
11
  })(SUBSCRIPTION_ACTION || (exports.SUBSCRIPTION_ACTION = SUBSCRIPTION_ACTION = {}));
@@ -9,4 +9,7 @@ var SUBSCRIPTION_STATUS;
9
9
  SUBSCRIPTION_STATUS["upgraded"] = "upgraded";
10
10
  SUBSCRIPTION_STATUS["rejected"] = "rejected";
11
11
  SUBSCRIPTION_STATUS["past_due"] = "past_due";
12
+ SUBSCRIPTION_STATUS["downgraded"] = "downgraded";
13
+ SUBSCRIPTION_STATUS["awaiting_activation"] = "awaiting_activation";
14
+ SUBSCRIPTION_STATUS["awaiting_downgrade"] = "awaiting_downgrade";
12
15
  })(SUBSCRIPTION_STATUS || (exports.SUBSCRIPTION_STATUS = SUBSCRIPTION_STATUS = {}));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./writer-document-section-type.enum"), exports);
18
+ __exportStar(require("./writer-document-stage.enum"), exports);
19
+ __exportStar(require("./writer-ai-action-pricing-type.enum"), exports);
20
+ __exportStar(require("./writer-ai-action-type.enum"), exports);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WRITER_AI_ACTION_PRICING_TYPE = void 0;
4
+ var WRITER_AI_ACTION_PRICING_TYPE;
5
+ (function (WRITER_AI_ACTION_PRICING_TYPE) {
6
+ WRITER_AI_ACTION_PRICING_TYPE["PER_CHARACTER"] = "PER_CHARACTER";
7
+ WRITER_AI_ACTION_PRICING_TYPE["FLAT"] = "FLAT";
8
+ })(WRITER_AI_ACTION_PRICING_TYPE || (exports.WRITER_AI_ACTION_PRICING_TYPE = WRITER_AI_ACTION_PRICING_TYPE = {}));
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WRITER_AI_ACTION_TYPE = void 0;
4
+ var WRITER_AI_ACTION_TYPE;
5
+ (function (WRITER_AI_ACTION_TYPE) {
6
+ WRITER_AI_ACTION_TYPE["PARAPHRASE"] = "PARAPHRASE";
7
+ WRITER_AI_ACTION_TYPE["EXTEND_TEXT"] = "EXTEND_TEXT";
8
+ WRITER_AI_ACTION_TYPE["SHORTEN_TEXT"] = "SHORTEN_TEXT";
9
+ WRITER_AI_ACTION_TYPE["GENERATE_TEXT"] = "GENERATE_TEXT";
10
+ WRITER_AI_ACTION_TYPE["FIX_ERRORS"] = "FIX_ERRORS";
11
+ })(WRITER_AI_ACTION_TYPE || (exports.WRITER_AI_ACTION_TYPE = WRITER_AI_ACTION_TYPE = {}));
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WRITER_DOCUMENT_SECTION_TYPE = void 0;
4
+ var WRITER_DOCUMENT_SECTION_TYPE;
5
+ (function (WRITER_DOCUMENT_SECTION_TYPE) {
6
+ WRITER_DOCUMENT_SECTION_TYPE["INTRODUCTION"] = "introduction";
7
+ WRITER_DOCUMENT_SECTION_TYPE["CONCLUSION"] = "conclusion";
8
+ WRITER_DOCUMENT_SECTION_TYPE["SECTION"] = "section";
9
+ })(WRITER_DOCUMENT_SECTION_TYPE || (exports.WRITER_DOCUMENT_SECTION_TYPE = WRITER_DOCUMENT_SECTION_TYPE = {}));
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WRITER_DOCUMENT_STAGE = void 0;
4
+ var WRITER_DOCUMENT_STAGE;
5
+ (function (WRITER_DOCUMENT_STAGE) {
6
+ WRITER_DOCUMENT_STAGE["CREATED"] = "CREATED";
7
+ WRITER_DOCUMENT_STAGE["GENERATING_OUTLINE"] = "GENERATING_OUTLINE";
8
+ WRITER_DOCUMENT_STAGE["OUTLINE_GENERATED"] = "OUTLINE_GENERATED";
9
+ WRITER_DOCUMENT_STAGE["OUTLINE_GENERATION_FAILED"] = "OUTLINE_GENERATION_FAILED";
10
+ WRITER_DOCUMENT_STAGE["GENERATING_CONTENT"] = "GENERATING_CONTENT";
11
+ WRITER_DOCUMENT_STAGE["CONTENT_GENERATED"] = "CONTENT_GENERATED";
12
+ WRITER_DOCUMENT_STAGE["CONTENT_GENERATION_FAILED"] = "CONTENT_GENERATION_FAILED";
13
+ WRITER_DOCUMENT_STAGE["DELETED"] = "DELETED";
14
+ })(WRITER_DOCUMENT_STAGE || (exports.WRITER_DOCUMENT_STAGE = WRITER_DOCUMENT_STAGE = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./enums"), exports);
@@ -19,3 +19,4 @@ __exportStar(require("./stt"), exports);
19
19
  __exportStar(require("./subscription"), exports);
20
20
  __exportStar(require("./tts"), exports);
21
21
  __exportStar(require("./video"), exports);
22
+ __exportStar(require("./writer"), exports);
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHARACTERS_PER_PAGE = void 0;
4
+ exports.pagesToCharacters = pagesToCharacters;
5
+ exports.charactersToPages = charactersToPages;
6
+ const WORD_FONT_SIZE_PT = 14;
7
+ const WORD_LINE_SPACING = 1.5;
8
+ const A4_WIDTH_MM = 210;
9
+ const A4_HEIGHT_MM = 297;
10
+ const MARGIN_TOP_MM = 20;
11
+ const MARGIN_BOTTOM_MM = 20;
12
+ const MARGIN_LEFT_MM = 30;
13
+ const MARGIN_RIGHT_MM = 10;
14
+ const FIRST_LINE_INDENT_MM = 12.5;
15
+ const MM_PER_POINT = 0.3527777778;
16
+ const TEXT_WIDTH_MM = A4_WIDTH_MM - MARGIN_LEFT_MM - MARGIN_RIGHT_MM;
17
+ const TEXT_HEIGHT_MM = A4_HEIGHT_MM - MARGIN_TOP_MM - MARGIN_BOTTOM_MM;
18
+ const LINE_HEIGHT_MM = WORD_FONT_SIZE_PT * WORD_LINE_SPACING * MM_PER_POINT;
19
+ const LINES_PER_PAGE = Math.floor(TEXT_HEIGHT_MM / LINE_HEIGHT_MM);
20
+ const AVG_CHAR_WIDTH_EM = 0.58;
21
+ const AVG_CHAR_WIDTH_MM = WORD_FONT_SIZE_PT * AVG_CHAR_WIDTH_EM * MM_PER_POINT;
22
+ const CHARS_PER_LINE = Math.floor(TEXT_WIDTH_MM / AVG_CHAR_WIDTH_MM);
23
+ const AVG_PARAGRAPHS_PER_PAGE = 4; // average paragraph count across typical student papers
24
+ const INDENT_CHARS_LOSS = Math.round((FIRST_LINE_INDENT_MM / AVG_CHAR_WIDTH_MM) * AVG_PARAGRAPHS_PER_PAGE);
25
+ const LAYOUT_FUDGE_FACTOR = 0.96;
26
+ exports.CHARACTERS_PER_PAGE = Math.round((LINES_PER_PAGE * CHARS_PER_LINE - INDENT_CHARS_LOSS) * LAYOUT_FUDGE_FACTOR);
27
+ function pagesToCharacters(pages) {
28
+ if (!Number.isFinite(pages) || pages <= 0)
29
+ return 0;
30
+ return Math.max(0, Math.round(pages * exports.CHARACTERS_PER_PAGE));
31
+ }
32
+ function charactersToPages(characters) {
33
+ if (!Number.isFinite(characters) || characters <= 0)
34
+ return 0;
35
+ const raw = characters / exports.CHARACTERS_PER_PAGE;
36
+ return Math.max(0, Math.ceil(raw));
37
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateWriterAiActionPrice = calculateWriterAiActionPrice;
4
+ const constants_1 = require("../../constants");
5
+ function calculateWriterAiActionPrice(pricingRules, selectionText) {
6
+ switch (pricingRules.type) {
7
+ case constants_1.WRITER_AI_ACTION_PRICING_TYPE.PER_CHARACTER:
8
+ const characterCount = selectionText.length;
9
+ const price = characterCount * pricingRules.price;
10
+ return Math.max(1, Math.ceil(price));
11
+ case constants_1.WRITER_AI_ACTION_PRICING_TYPE.FLAT:
12
+ return Math.max(1, Math.ceil(pricingRules.price));
13
+ default:
14
+ throw new Error(`Unknown pricing type`);
15
+ }
16
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateWriterContentGenerationPrice = calculateWriterContentGenerationPrice;
4
+ function calculateWriterContentGenerationPrice(pages) {
5
+ return Math.max(1, pages);
6
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./calculate-writer-ai-action-price.util"), exports);
18
+ __exportStar(require("./calculate-writer-content-generation-price.util"), exports);
19
+ __exportStar(require("./calculate-page-count.util"), exports);
@@ -19,4 +19,5 @@ __exportStar(require("./paraphrase"), exports);
19
19
  __exportStar(require("./stt"), exports);
20
20
  __exportStar(require("./tts"), exports);
21
21
  __exportStar(require("./video"), exports);
22
+ __exportStar(require("./writer"), exports);
22
23
  __exportStar(require("./image-editor"), exports);
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./writer-config.schema"), exports);
18
+ __exportStar(require("./writer-ai-action.schema"), exports);
19
+ __exportStar(require("./writer-document-outline.schema"), exports);
20
+ __exportStar(require("./writer-document.schema"), exports);
21
+ __exportStar(require("./writer-document-type.schema"), exports);
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WriterAiActionSchema = exports.WriterAiActionPricingRulesSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../../constants");
6
+ exports.WriterAiActionPricingRulesSchema = zod_1.z.discriminatedUnion('type', [
7
+ zod_1.z.object({
8
+ type: zod_1.z.literal(constants_1.WRITER_AI_ACTION_PRICING_TYPE.PER_CHARACTER),
9
+ price: zod_1.z.number(),
10
+ }),
11
+ zod_1.z.object({
12
+ type: zod_1.z.literal(constants_1.WRITER_AI_ACTION_PRICING_TYPE.FLAT),
13
+ price: zod_1.z.number(),
14
+ }),
15
+ ]);
16
+ exports.WriterAiActionSchema = zod_1.z.object({
17
+ uuid: zod_1.z.string(),
18
+ type: zod_1.z.nativeEnum(constants_1.WRITER_AI_ACTION_TYPE),
19
+ pricingRules: exports.WriterAiActionPricingRulesSchema,
20
+ maxPromptLength: zod_1.z.number(),
21
+ title: zod_1.z.string(),
22
+ icon: zod_1.z.string(),
23
+ order: zod_1.z.number(),
24
+ createdAt: zod_1.z.date(),
25
+ updatedAt: zod_1.z.date(),
26
+ });
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WriterConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const writer_document_type_schema_1 = require("./writer-document-type.schema");
6
+ const writer_ai_action_schema_1 = require("./writer-ai-action.schema");
7
+ exports.WriterConfigSchema = zod_1.z.object({
8
+ maxPromptLength: zod_1.z.number(),
9
+ documentTypes: zod_1.z.array(writer_document_type_schema_1.WriterDocumentTypeSchema),
10
+ aiActions: zod_1.z.array(writer_ai_action_schema_1.WriterAiActionSchema),
11
+ });
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WriterDocumentOutlineSchema = exports.WriterDocumentOutlineSectionSchema = exports.WriterDocumentOutlineSubsectionSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../../constants");
6
+ exports.WriterDocumentOutlineSubsectionSchema = zod_1.z.object({
7
+ title: zod_1.z
8
+ .string()
9
+ .min(3)
10
+ .max(120)
11
+ .describe(`Concise title of the subsection. Meant to elaborate on its parent section's title.`),
12
+ });
13
+ exports.WriterDocumentOutlineSectionSchema = zod_1.z.object({
14
+ title: zod_1.z.string().min(3).max(120).describe(`Concise title of the paper section.`),
15
+ type: zod_1.z.nativeEnum(constants_1.WRITER_DOCUMENT_SECTION_TYPE),
16
+ subsections: zod_1.z
17
+ .array(exports.WriterDocumentOutlineSubsectionSchema)
18
+ .optional()
19
+ .describe(`Subsections of the paper section. Each subsection is a single idea that is a part of the parent section.`),
20
+ });
21
+ exports.WriterDocumentOutlineSchema = zod_1.z.array(exports.WriterDocumentOutlineSectionSchema);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WriterDocumentTypeSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const icon_variants_schema_1 = require("../../icon-variants.schema");
6
+ exports.WriterDocumentTypeSchema = zod_1.z.object({
7
+ uuid: zod_1.z.string().uuid(),
8
+ title: zod_1.z.string(),
9
+ icons: icon_variants_schema_1.IconVariantsSchema,
10
+ order: zod_1.z.number(),
11
+ minPages: zod_1.z.number(),
12
+ maxPages: zod_1.z.number(),
13
+ pageRange: zod_1.z.array(zod_1.z.number()),
14
+ createdAt: zod_1.z.date(),
15
+ updatedAt: zod_1.z.date(),
16
+ });
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WriterDocumentSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const writer_document_outline_schema_1 = require("./writer-document-outline.schema");
6
+ const constants_1 = require("../../../constants");
7
+ exports.WriterDocumentSchema = zod_1.z.object({
8
+ uuid: zod_1.z.string().uuid(),
9
+ prompt: zod_1.z.string(),
10
+ topic: zod_1.z.string(),
11
+ typeId: zod_1.z.string(),
12
+ stage: zod_1.z.nativeEnum(constants_1.WRITER_DOCUMENT_STAGE),
13
+ outline: writer_document_outline_schema_1.WriterDocumentOutlineSchema,
14
+ sourceMd: zod_1.z.string().nullable(),
15
+ finalMd: zod_1.z.string().nullable(),
16
+ userId: zod_1.z.string().nullable(),
17
+ unregisteredUserId: zod_1.z.string().nullable(),
18
+ pages: zod_1.z.number(),
19
+ createdAt: zod_1.z.date(),
20
+ updatedAt: zod_1.z.date(),
21
+ completedAt: zod_1.z.date().nullable(),
22
+ });
@@ -11,6 +11,7 @@ exports.UserToSubscriptionSchema = zod_1.z.object({
11
11
  active: zod_1.z.boolean(),
12
12
  tokenBalance: zod_1.z.number(),
13
13
  status: zod_1.z.string(),
14
+ startDate: zod_1.z.date().nullable(),
14
15
  endDate: zod_1.z.date().nullable(),
15
16
  marks: zod_1.z.array(zod_1.z.string()),
16
17
  intervalEndDate: zod_1.z.date().nullable(),
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import { UserToSubscriptionSchema } from '../../models';
3
+
4
+ export namespace DowngradeSubscriptionCommand {
5
+ export const RequestSchema = z.object({
6
+ downgradeSubscriptionId: z.string().uuid(),
7
+ });
8
+
9
+ export const RequestParamSchema = UserToSubscriptionSchema.pick({
10
+ uuid: true,
11
+ });
12
+
13
+ export type Request = z.infer<typeof RequestSchema>;
14
+
15
+ const IReceiptOrderSchema = z.object({
16
+ items: z.array(
17
+ z.object({
18
+ label: z.string(),
19
+ price: z.number(),
20
+ quantity: z.number(),
21
+ amount: z.number(),
22
+ vat: z.number(),
23
+ }),
24
+ ),
25
+ email: z.string(),
26
+ isBso: z.boolean(),
27
+ amounts: z.object({
28
+ electronic: z.number(),
29
+ }),
30
+ });
31
+
32
+ export const ResponseSchema = z.object({
33
+ publicId: z.string(),
34
+ amount: z.number(),
35
+ currency: z.string(),
36
+ accountId: z.string(),
37
+ description: z.string(),
38
+ invoiceId: z.string(),
39
+ email: z.string(),
40
+ skin: z.string(),
41
+ autoClose: z.number(),
42
+ data: z.object({
43
+ CloudPayments: z.object({
44
+ CustomerReceipt: IReceiptOrderSchema,
45
+ }),
46
+ }),
47
+ });
48
+
49
+ export type Response = z.infer<typeof ResponseSchema>;
50
+ }
@@ -11,3 +11,4 @@ export * from './recover-past-due-subscription.command';
11
11
  export * from './recover-subscription.command';
12
12
  export * from './update-subscription.command';
13
13
  export * from './upgrade-subscription.command';
14
+ export * from './downgrade-subscription.command';
@@ -4,4 +4,5 @@ export * from './stt';
4
4
  export * from './tool';
5
5
  export * from './tts';
6
6
  export * from './video';
7
+ export * from './writer';
7
8
  export * from './image-editor';