@xdevops/issue-auto-finish 1.0.2 → 1.0.4

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 (135) hide show
  1. package/dist/KnowledgeAnalyzer-EZSJT2MJ.js +13 -0
  2. package/dist/KnowledgeAnalyzer-EZSJT2MJ.js.map +1 -0
  3. package/dist/KnowledgeStore-4ROC6F56.js +10 -0
  4. package/dist/KnowledgeStore-4ROC6F56.js.map +1 -0
  5. package/dist/ai-runner/AIRunner.d.ts +2 -0
  6. package/dist/ai-runner/AIRunner.d.ts.map +1 -1
  7. package/dist/ai-runner/BaseAIRunner.d.ts +9 -0
  8. package/dist/ai-runner/BaseAIRunner.d.ts.map +1 -1
  9. package/dist/ai-runner-RGAJPOOW.js +16 -0
  10. package/dist/ai-runner-RGAJPOOW.js.map +1 -0
  11. package/dist/analyze-ONQDTYCN.js +72 -0
  12. package/dist/analyze-ONQDTYCN.js.map +1 -0
  13. package/dist/chunk-3JUHZGX5.js +171 -0
  14. package/dist/chunk-3JUHZGX5.js.map +1 -0
  15. package/dist/chunk-5JYCGAU3.js +318 -0
  16. package/dist/chunk-5JYCGAU3.js.map +1 -0
  17. package/dist/chunk-5VUB3UUK.js +643 -0
  18. package/dist/chunk-5VUB3UUK.js.map +1 -0
  19. package/dist/{chunk-OWVT3Z34.js → chunk-JFYAXNNS.js} +121 -31
  20. package/dist/chunk-JFYAXNNS.js.map +1 -0
  21. package/dist/chunk-MH6LHFPB.js +188 -0
  22. package/dist/chunk-MH6LHFPB.js.map +1 -0
  23. package/dist/{chunk-TBIEB3JY.js → chunk-N5YK6YVI.js} +592 -767
  24. package/dist/chunk-N5YK6YVI.js.map +1 -0
  25. package/dist/{chunk-RIUI4ROA.js → chunk-PECYMYAK.js} +2 -2
  26. package/dist/{chunk-I3T573SU.js → chunk-PTIL5AY2.js} +65 -2
  27. package/dist/chunk-PTIL5AY2.js.map +1 -0
  28. package/dist/chunk-SWG2Y7YX.js +410 -0
  29. package/dist/chunk-SWG2Y7YX.js.map +1 -0
  30. package/dist/chunk-TZ6C7HL5.js +59 -0
  31. package/dist/chunk-TZ6C7HL5.js.map +1 -0
  32. package/dist/{chunk-IDUKWCC2.js → chunk-VFQYIC6L.js} +1151 -80
  33. package/dist/chunk-VFQYIC6L.js.map +1 -0
  34. package/dist/cli/commands/analyze.d.ts +8 -0
  35. package/dist/cli/commands/analyze.d.ts.map +1 -0
  36. package/dist/cli/commands/init.d.ts.map +1 -1
  37. package/dist/cli.js +67 -3
  38. package/dist/cli.js.map +1 -1
  39. package/dist/clients/GongfengClient.d.ts +5 -0
  40. package/dist/clients/GongfengClient.d.ts.map +1 -1
  41. package/dist/config-6GFBDMGD.js +7 -0
  42. package/dist/config-6GFBDMGD.js.map +1 -0
  43. package/dist/config.d.ts +19 -0
  44. package/dist/config.d.ts.map +1 -1
  45. package/dist/{doctor-B26Q6JWI.js → doctor-ZPGIBA5N.js} +3 -3
  46. package/dist/events/EventBus.d.ts +1 -1
  47. package/dist/events/EventBus.d.ts.map +1 -1
  48. package/dist/git/GitOperations.d.ts +12 -0
  49. package/dist/git/GitOperations.d.ts.map +1 -1
  50. package/dist/i18n/locales/en.d.ts.map +1 -1
  51. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +11 -5
  54. package/dist/{init-L3VIWCOV.js → init-QDTII4SP.js} +10 -5
  55. package/dist/init-QDTII4SP.js.map +1 -0
  56. package/dist/knowledge/KnowledgeAnalyzer.d.ts +31 -0
  57. package/dist/knowledge/KnowledgeAnalyzer.d.ts.map +1 -0
  58. package/dist/knowledge/KnowledgeDefaults.d.ts +7 -0
  59. package/dist/knowledge/KnowledgeDefaults.d.ts.map +1 -0
  60. package/dist/knowledge/KnowledgeEntry.d.ts +30 -0
  61. package/dist/knowledge/KnowledgeEntry.d.ts.map +1 -0
  62. package/dist/knowledge/KnowledgeLoader.d.ts +18 -0
  63. package/dist/knowledge/KnowledgeLoader.d.ts.map +1 -0
  64. package/dist/knowledge/KnowledgeStore.d.ts +35 -0
  65. package/dist/knowledge/KnowledgeStore.d.ts.map +1 -0
  66. package/dist/knowledge/ProjectKnowledge.d.ts +79 -0
  67. package/dist/knowledge/ProjectKnowledge.d.ts.map +1 -0
  68. package/dist/knowledge/analyze-prompt.d.ts +2 -0
  69. package/dist/knowledge/analyze-prompt.d.ts.map +1 -0
  70. package/dist/knowledge/importers/GongfengExtractor.d.ts +27 -0
  71. package/dist/knowledge/importers/GongfengExtractor.d.ts.map +1 -0
  72. package/dist/knowledge/importers/IwikiImporter.d.ts +21 -0
  73. package/dist/knowledge/importers/IwikiImporter.d.ts.map +1 -0
  74. package/dist/knowledge/index.d.ts +12 -0
  75. package/dist/knowledge/index.d.ts.map +1 -0
  76. package/dist/lib.js +19 -10
  77. package/dist/orchestrator/PipelineOrchestrator.d.ts +5 -1
  78. package/dist/orchestrator/PipelineOrchestrator.d.ts.map +1 -1
  79. package/dist/phases/BasePhase.d.ts.map +1 -1
  80. package/dist/poller/IssuePoller.d.ts +5 -0
  81. package/dist/poller/IssuePoller.d.ts.map +1 -1
  82. package/dist/prompts/chat-templates.d.ts +4 -0
  83. package/dist/prompts/chat-templates.d.ts.map +1 -0
  84. package/dist/prompts/templates.d.ts +11 -0
  85. package/dist/prompts/templates.d.ts.map +1 -1
  86. package/dist/rules/RuleResolver.d.ts +4 -0
  87. package/dist/rules/RuleResolver.d.ts.map +1 -1
  88. package/dist/run.js +11 -5
  89. package/dist/run.js.map +1 -1
  90. package/dist/services/ChatService.d.ts +39 -0
  91. package/dist/services/ChatService.d.ts.map +1 -0
  92. package/dist/shutdown/ShutdownSignal.d.ts +3 -0
  93. package/dist/shutdown/ShutdownSignal.d.ts.map +1 -0
  94. package/dist/{start-TVN4SS6E.js → start-EDOZC5WL.js} +1 -1
  95. package/dist/tracker/IssueState.d.ts +1 -0
  96. package/dist/tracker/IssueState.d.ts.map +1 -1
  97. package/dist/tracker/IssueTracker.d.ts +2 -0
  98. package/dist/tracker/IssueTracker.d.ts.map +1 -1
  99. package/dist/updater/AutoUpdater.d.ts +33 -0
  100. package/dist/updater/AutoUpdater.d.ts.map +1 -0
  101. package/dist/updater/UpdateExecutor.d.ts +7 -0
  102. package/dist/updater/UpdateExecutor.d.ts.map +1 -0
  103. package/dist/updater/VersionChecker.d.ts +22 -0
  104. package/dist/updater/VersionChecker.d.ts.map +1 -0
  105. package/dist/web/WebServer.d.ts +4 -0
  106. package/dist/web/WebServer.d.ts.map +1 -1
  107. package/dist/web/routes/api.d.ts +4 -0
  108. package/dist/web/routes/api.d.ts.map +1 -1
  109. package/dist/web/routes/chat.d.ts +7 -0
  110. package/dist/web/routes/chat.d.ts.map +1 -0
  111. package/dist/web/routes/knowledge.d.ts +13 -0
  112. package/dist/web/routes/knowledge.d.ts.map +1 -0
  113. package/dist/web/routes/setup.d.ts.map +1 -1
  114. package/dist/webhook/CommandExecutor.d.ts +4 -0
  115. package/dist/webhook/CommandExecutor.d.ts.map +1 -1
  116. package/dist/webhook/CommandParser.d.ts +2 -2
  117. package/dist/webhook/CommandParser.d.ts.map +1 -1
  118. package/dist/webhook/WebhookHandler.d.ts +8 -0
  119. package/dist/webhook/WebhookHandler.d.ts.map +1 -1
  120. package/dist/webhook/WebhookServer.d.ts +2 -0
  121. package/dist/webhook/WebhookServer.d.ts.map +1 -1
  122. package/package.json +4 -2
  123. package/src/web/frontend/dist/assets/index-AcJ0lPIv.js +67 -0
  124. package/src/web/frontend/dist/assets/index-BbRt5BAr.css +1 -0
  125. package/src/web/frontend/dist/index.html +2 -2
  126. package/dist/chunk-I3T573SU.js.map +0 -1
  127. package/dist/chunk-IDUKWCC2.js.map +0 -1
  128. package/dist/chunk-OWVT3Z34.js.map +0 -1
  129. package/dist/chunk-TBIEB3JY.js.map +0 -1
  130. package/dist/init-L3VIWCOV.js.map +0 -1
  131. package/src/web/frontend/dist/assets/index-CQdlU9PE.js +0 -65
  132. package/src/web/frontend/dist/assets/index-CgMEkyZJ.css +0 -1
  133. /package/dist/{chunk-RIUI4ROA.js.map → chunk-PECYMYAK.js.map} +0 -0
  134. /package/dist/{doctor-B26Q6JWI.js.map → doctor-ZPGIBA5N.js.map} +0 -0
  135. /package/dist/{start-TVN4SS6E.js.map → start-EDOZC5WL.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- export type CommandIntent = 'retry' | 'retry-from' | 'supplement' | 'approve' | 'reject' | 'status' | 'restart' | 'preview' | 'stop-preview' | 'clean-notes';
1
+ export type CommandIntent = 'retry' | 'retry-from' | 'supplement' | 'approve' | 'reject' | 'status' | 'restart' | 'preview' | 'stop-preview' | 'clean-notes' | 'fix-conflict';
2
2
  export interface ParsedCommand {
3
3
  intent: CommandIntent;
4
4
  phase?: string;
@@ -7,7 +7,7 @@ export interface ParsedCommand {
7
7
  }
8
8
  export declare function containsTrigger(text: string): boolean;
9
9
  /**
10
- * Extract the portion of text after the @issue-auto trigger.
10
+ * Extract the portion of text after the trigger (@issue-auto or @IAF).
11
11
  * Returns null if trigger is not found.
12
12
  */
13
13
  export declare function extractCommandText(text: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandParser.d.ts","sourceRoot":"","sources":["../../src/webhook/CommandParser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,cAAc,GACd,aAAa,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI9D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAMpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAInE"}
1
+ {"version":3,"file":"CommandParser.d.ts","sourceRoot":"","sources":["../../src/webhook/CommandParser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,cAAc,GACd,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+GD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAMpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAInE"}
@@ -21,6 +21,14 @@ export interface NoteEvent {
21
21
  iid: number;
22
22
  title: string;
23
23
  };
24
+ merge_request?: {
25
+ id: number;
26
+ iid: number;
27
+ title: string;
28
+ source_branch: string;
29
+ target_branch: string;
30
+ state: string;
31
+ };
24
32
  }
25
33
  export interface WebhookHandlerDeps extends CommandExecutorDeps {
26
34
  config: Config;
@@ -1 +1 @@
1
- {"version":3,"file":"WebhookHandler.d.ts","sourceRoot":"","sources":["../../src/webhook/WebhookHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAmB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,iBAAiB,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAqEpE"}
1
+ {"version":3,"file":"WebhookHandler.d.ts","sourceRoot":"","sources":["../../src/webhook/WebhookHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAmB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,iBAAiB,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,aAAa,CAAC,EAAE;QACd,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA2EpE"}
@@ -3,12 +3,14 @@ import type { PipelineOrchestrator } from '../orchestrator/PipelineOrchestrator.
3
3
  import type { SupplementStore } from '../supplement/SupplementStore.js';
4
4
  import type { GongfengClient } from '../clients/GongfengClient.js';
5
5
  import type { Config } from '../config.js';
6
+ import type { IssuePoller } from '../poller/IssuePoller.js';
6
7
  export interface WebhookServerDeps {
7
8
  tracker: IssueTracker;
8
9
  orchestrator: PipelineOrchestrator;
9
10
  supplementStore: SupplementStore;
10
11
  gongfeng: GongfengClient;
11
12
  config: Config;
13
+ poller?: IssuePoller;
12
14
  }
13
15
  export declare class WebhookServer {
14
16
  private app;
@@ -1 +1 @@
1
- {"version":3,"file":"WebhookServer.d.ts","sourceRoot":"","sources":["../../src/webhook/WebhookServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,oBAAoB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,iBAAiB;IAgCnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,IAAI,IAAI;CAOb"}
1
+ {"version":3,"file":"WebhookServer.d.ts","sourceRoot":"","sources":["../../src/webhook/WebhookServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,oBAAoB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,iBAAiB;IAiCnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,IAAI,IAAI;CAOb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xdevops/issue-auto-finish",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Issue Auto-Finish: AI-powered issue resolution daemon",
5
5
  "type": "module",
6
6
  "main": "./dist/lib.js",
@@ -37,7 +37,7 @@
37
37
  "build": "tsup && tsc --emitDeclarationOnly --outDir dist",
38
38
  "build:cli": "tsup",
39
39
  "prepublishOnly": "pnpm build && pnpm web:build",
40
- "reload": "pnpm prepublishOnly && npx pm2 reload issue-auto-finish",
40
+ "reload": "tsup & pnpm web:build & wait && pm2 startOrRestart ecosystem.config.cjs --update-env",
41
41
  "pm2:start": "pm2 start ecosystem.config.cjs",
42
42
  "pm2:stop": "pm2 stop issue-auto-finish",
43
43
  "pm2:restart": "pm2 restart issue-auto-finish",
@@ -60,12 +60,14 @@
60
60
  "express": "^5.2.1",
61
61
  "marked": "^17.0.3",
62
62
  "open": "^11.0.0",
63
+ "turndown": "^7.2.2",
63
64
  "vue": "^3.5.29"
64
65
  },
65
66
  "devDependencies": {
66
67
  "@tailwindcss/vite": "^4.2.1",
67
68
  "@types/express": "^4.17.6",
68
69
  "@types/node": "^20.11.0",
70
+ "@types/turndown": "^5.0.6",
69
71
  "@vitejs/plugin-vue": "^6.0.4",
70
72
  "pm2": "^6.0.14",
71
73
  "tailwindcss": "^4.2.1",