crewx 0.8.7-rc.21 → 0.8.7-rc.22

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 (222) hide show
  1. package/dist/assets/{MarketPage-aY16UW1_.js → MarketPage-lLBtAENs.js} +10 -15
  2. package/dist/assets/{PromptTab-C3aTJS6u.js → PromptTab-Daq54dMi.js} +1 -1
  3. package/dist/assets/_baseUniq-BJDqmZBO.js +1 -0
  4. package/dist/assets/{arc-BCQAokB1.js → arc-ByjRIa5p.js} +1 -1
  5. package/dist/assets/{architectureDiagram-UYN6MBPD-Bc87ujv2.js → architectureDiagram-UYN6MBPD-DcKpqSFb.js} +1 -1
  6. package/dist/assets/{blockDiagram-ZHA2E4KO-wC9uH8Lb.js → blockDiagram-ZHA2E4KO-YvUeULT5.js} +1 -1
  7. package/dist/assets/{c4Diagram-6F5ED5ID-CqB7lqni.js → c4Diagram-6F5ED5ID-vggzH2N5.js} +1 -1
  8. package/dist/assets/channel-1Y6YooBb.js +1 -0
  9. package/dist/assets/{chunk-5HRBRIJM-Cc1L17Eh.js → chunk-5HRBRIJM-BbaQwJkn.js} +1 -1
  10. package/dist/assets/{chunk-7U56Z5CX-Df3nu_7G.js → chunk-7U56Z5CX-DVYVpFaa.js} +1 -1
  11. package/dist/assets/{chunk-ASOPGD6M-DIXslLG-.js → chunk-ASOPGD6M-CXEvWb-8.js} +1 -1
  12. package/dist/assets/{chunk-KFBOBJHC-FytVljyP.js → chunk-KFBOBJHC-CadVXFV3.js} +1 -1
  13. package/dist/assets/{chunk-T2TOU4HS-CU5z-cXq.js → chunk-T2TOU4HS-lDZr1sVF.js} +1 -1
  14. package/dist/assets/{chunk-TMUBEWPD-CWo1AFyn.js → chunk-TMUBEWPD-D5A0MrFD.js} +1 -1
  15. package/dist/assets/classDiagram-LNE6IOMH-CDxkV2JV.js +1 -0
  16. package/dist/assets/classDiagram-v2-MQ7JQ4JX-CDxkV2JV.js +1 -0
  17. package/dist/assets/clone-6xznz_9G.js +1 -0
  18. package/dist/assets/{dagre-4EVJKHTY-CgZW5tg4.js → dagre-4EVJKHTY-Bncx7Ijq.js} +1 -1
  19. package/dist/assets/{diagram-QW4FP2JN-CJAng8RC.js → diagram-QW4FP2JN-RkxVNs99.js} +1 -1
  20. package/dist/assets/{erDiagram-6RL3IURR-C1uHztHX.js → erDiagram-6RL3IURR-DIiKqQdx.js} +1 -1
  21. package/dist/assets/{flowDiagram-7ASYPVHJ-Yiu2odO-.js → flowDiagram-7ASYPVHJ-DQ5PN7v6.js} +1 -1
  22. package/dist/assets/{ganttDiagram-NTVNEXSI-tutc0dJP.js → ganttDiagram-NTVNEXSI-BeNWGpB6.js} +1 -1
  23. package/dist/assets/{gitGraph-YCYPL57B-C3jM6T4G.js → gitGraph-YCYPL57B-CdMe059q.js} +1 -1
  24. package/dist/assets/{gitGraphDiagram-NRZ2UAAF-0aqHEKzz.js → gitGraphDiagram-NRZ2UAAF-BEke5TyK.js} +1 -1
  25. package/dist/assets/{graph-DC224ILV.js → graph-DyQIwWJd.js} +1 -1
  26. package/dist/assets/{infoDiagram-A4XQUW5V-Do7Mpzkx.js → infoDiagram-A4XQUW5V-CUcC8I_5.js} +1 -1
  27. package/dist/assets/{journeyDiagram-G5WM74LC-DAruEJc7.js → journeyDiagram-G5WM74LC-CQ5DqAH5.js} +1 -1
  28. package/dist/assets/{kanban-definition-QRCXZQQD-DB63vLR0.js → kanban-definition-QRCXZQQD-BBsgOii7.js} +1 -1
  29. package/dist/assets/{layout-BiYH5x6Q.js → layout-D7vBs_Wy.js} +1 -1
  30. package/dist/assets/{linear-CLyGW2s0.js → linear-CEOF9oJz.js} +1 -1
  31. package/dist/assets/{main-CEKkUqZb.js → main-Bx1nZ7_p.js} +278 -273
  32. package/dist/assets/main-C4ebvOIJ.css +10 -0
  33. package/dist/assets/{min-ChJMFU2N.js → min-RK9J5Utn.js} +1 -1
  34. package/dist/assets/{mindmap-definition-GWI6TPTV-CtADqQgd.js → mindmap-definition-GWI6TPTV-BXvEU7qC.js} +1 -1
  35. package/dist/assets/{pieDiagram-YF2LJOPJ-BSOfzo3O.js → pieDiagram-YF2LJOPJ-TrXqcpni.js} +1 -1
  36. package/dist/assets/{quadrantDiagram-OS5C2QUG-BLBQNFVb.js → quadrantDiagram-OS5C2QUG-B-chTEU4.js} +1 -1
  37. package/dist/assets/{requirementDiagram-MIRIMTAZ-DqorvuS6.js → requirementDiagram-MIRIMTAZ-BgJhNLp_.js} +1 -1
  38. package/dist/assets/{sankeyDiagram-Y46BX6SQ-4NDcrLkB.js → sankeyDiagram-Y46BX6SQ-BVsgYKK7.js} +1 -1
  39. package/dist/assets/{sequenceDiagram-G6AWOVSC-yha6BxK2.js → sequenceDiagram-G6AWOVSC-ByJOpkq3.js} +1 -1
  40. package/dist/assets/{stateDiagram-MAYHULR4-XJ_I41ez.js → stateDiagram-MAYHULR4-Dw7lUL1B.js} +1 -1
  41. package/dist/assets/stateDiagram-v2-4JROLMXI-DYJiM3bF.js +1 -0
  42. package/dist/assets/{timeline-definition-U7ZMHBDA-DCNrmvE7.js → timeline-definition-U7ZMHBDA-CSoEYs60.js} +1 -1
  43. package/dist/assets/{xychartDiagram-6QU3TZC5-9N-Ohhdp.js → xychartDiagram-6QU3TZC5-0_rG7p3L.js} +1 -1
  44. package/dist/index.html +2 -2
  45. package/package.json +8 -8
  46. package/packages/cli/package.json +1 -1
  47. package/dist/assets/_baseUniq-DxEFlwNt.js +0 -1
  48. package/dist/assets/channel-DNLHkiNp.js +0 -1
  49. package/dist/assets/classDiagram-LNE6IOMH-B430Onym.js +0 -1
  50. package/dist/assets/classDiagram-v2-MQ7JQ4JX-B430Onym.js +0 -1
  51. package/dist/assets/clone-B9O3E3P1.js +0 -1
  52. package/dist/assets/main-D3YeRndF.css +0 -10
  53. package/dist/assets/stateDiagram-v2-4JROLMXI-CxcyPJO2.js +0 -1
  54. package/dist-server/adapters/adapter.module.js +0 -35
  55. package/dist-server/adapters/adapter.service.js +0 -79
  56. package/dist-server/adapters/http-router.service.js +0 -91
  57. package/dist-server/app.module.js +0 -111
  58. package/dist-server/bootstrap/crewx-server.js +0 -80
  59. package/dist-server/bootstrap/tls.js +0 -138
  60. package/dist-server/common/analytics.client.js +0 -180
  61. package/dist-server/common/analytics.module.js +0 -21
  62. package/dist-server/common/cors.js +0 -15
  63. package/dist-server/common/decorators/project.decorator.js +0 -21
  64. package/dist-server/common/decorators/workspace.decorator.js +0 -24
  65. package/dist-server/common/device-id.js +0 -33
  66. package/dist-server/common/interceptor/api-id-header.interceptor.js +0 -53
  67. package/dist-server/common/interceptor/http-logging.interceptor.js +0 -124
  68. package/dist-server/common/limits/defaults.js +0 -13
  69. package/dist-server/common/limits/limits-provider.js +0 -6
  70. package/dist-server/common/limits/limits.controller.js +0 -38
  71. package/dist-server/common/limits/limits.module.js +0 -24
  72. package/dist-server/common/limits/local-limits.provider.js +0 -27
  73. package/dist-server/common/middleware/workspace.middleware.js +0 -210
  74. package/dist-server/common/repository.exception-filter.js +0 -48
  75. package/dist-server/common/workspace-context.store.js +0 -25
  76. package/dist-server/domain/agent/agent.controller.js +0 -96
  77. package/dist-server/domain/agent/agent.module.js +0 -27
  78. package/dist-server/domain/agent/agent.service.js +0 -335
  79. package/dist-server/domain/agent/agent.types.js +0 -3
  80. package/dist-server/domain/agent/dto/create-agent.dto.js +0 -80
  81. package/dist-server/domain/agent/dto/preview-prompt.dto.js +0 -77
  82. package/dist-server/domain/agent/dto/provider-meta.dto.js +0 -2
  83. package/dist-server/domain/agent/dto/update-agent.dto.js +0 -92
  84. package/dist-server/domain/agent/provider.controller.js +0 -38
  85. package/dist-server/domain/agent/template-processor.service.js +0 -71
  86. package/dist-server/domain/auth/auth.constants.js +0 -4
  87. package/dist-server/domain/auth/auth.controller.js +0 -123
  88. package/dist-server/domain/auth/auth.module.js +0 -47
  89. package/dist-server/domain/auth/decorators/public.decorator.js +0 -7
  90. package/dist-server/domain/auth/guards/base-auth.guard.js +0 -66
  91. package/dist-server/domain/auth/session-store.js +0 -26
  92. package/dist-server/domain/auth/utils/ip.utils.js +0 -31
  93. package/dist-server/domain/box/box.controller.js +0 -77
  94. package/dist-server/domain/box/box.module.js +0 -21
  95. package/dist-server/domain/box/box.service.js +0 -97
  96. package/dist-server/domain/box/dto/create-box.dto.js +0 -74
  97. package/dist-server/domain/cli/cli.controller.js +0 -136
  98. package/dist-server/domain/cli/cli.module.js +0 -21
  99. package/dist-server/domain/cli/cli.service.js +0 -598
  100. package/dist-server/domain/cli/dto/login-cli.dto.js +0 -25
  101. package/dist-server/domain/cli/dto/update-cli.dto.js +0 -31
  102. package/dist-server/domain/doc/doc.controller.js +0 -95
  103. package/dist-server/domain/doc/doc.module.js +0 -21
  104. package/dist-server/domain/doc/doc.service.js +0 -368
  105. package/dist-server/domain/doc/dto/doc.dto.js +0 -64
  106. package/dist-server/domain/document/document.controller.js +0 -57
  107. package/dist-server/domain/document/document.module.js +0 -22
  108. package/dist-server/domain/document/document.service.js +0 -274
  109. package/dist-server/domain/document/dto/register-document.dto.js +0 -24
  110. package/dist-server/domain/fs/dto/mkdir-request.dto.js +0 -47
  111. package/dist-server/domain/fs/dto/mkdir-response.dto.js +0 -2
  112. package/dist-server/domain/fs/dto/quick-access.dto.js +0 -2
  113. package/dist-server/domain/fs/dto/tree-node.dto.js +0 -2
  114. package/dist-server/domain/fs/dto/tree-query.dto.js +0 -35
  115. package/dist-server/domain/fs/fs.controller.js +0 -63
  116. package/dist-server/domain/fs/fs.module.js +0 -22
  117. package/dist-server/domain/fs/fs.service.js +0 -303
  118. package/dist-server/domain/git/git.module.js +0 -20
  119. package/dist-server/domain/git/git.service.js +0 -222
  120. package/dist-server/domain/goal/dto/goal.dto.js +0 -49
  121. package/dist-server/domain/goal/goal.controller.js +0 -86
  122. package/dist-server/domain/goal/goal.module.js +0 -22
  123. package/dist-server/domain/goal/goal.service.js +0 -197
  124. package/dist-server/domain/goal/parser/goal-md-parser.js +0 -166
  125. package/dist-server/domain/goal/parser/goal-md-serializer.js +0 -110
  126. package/dist-server/domain/health/health.controller.js +0 -57
  127. package/dist-server/domain/health/health.module.js +0 -19
  128. package/dist-server/domain/knowledge/dto/graph-knowledge.dto.js +0 -27
  129. package/dist-server/domain/knowledge/dto/knowledge.dto.js +0 -71
  130. package/dist-server/domain/knowledge/knowledge.controller.js +0 -122
  131. package/dist-server/domain/knowledge/knowledge.module.js +0 -21
  132. package/dist-server/domain/knowledge/knowledge.service.js +0 -538
  133. package/dist-server/domain/market/dto/add-registry.dto.js +0 -32
  134. package/dist-server/domain/market/dto/install-market.dto.js +0 -30
  135. package/dist-server/domain/market/market.controller.js +0 -163
  136. package/dist-server/domain/market/market.module.js +0 -22
  137. package/dist-server/domain/market/market.service.js +0 -1447
  138. package/dist-server/domain/mcp/browser-session.store.js +0 -247
  139. package/dist-server/domain/mcp/crewx-tool.factory.js +0 -119
  140. package/dist-server/domain/mcp/mcp-auth.guard.js +0 -61
  141. package/dist-server/domain/mcp/mcp.constants.js +0 -4
  142. package/dist-server/domain/mcp/mcp.controller.js +0 -125
  143. package/dist-server/domain/mcp/mcp.dto.js +0 -12
  144. package/dist-server/domain/mcp/mcp.module.js +0 -49
  145. package/dist-server/domain/mcp/mcp.service.js +0 -684
  146. package/dist-server/domain/mcp/tool-router.service.js +0 -120
  147. package/dist-server/domain/message/dto/list-messages.dto.js +0 -57
  148. package/dist-server/domain/message/dto/send-message.dto.js +0 -45
  149. package/dist-server/domain/message/message.controller.js +0 -73
  150. package/dist-server/domain/message/message.module.js +0 -25
  151. package/dist-server/domain/message/message.service.js +0 -160
  152. package/dist-server/domain/onboarding/onboarding.controller.js +0 -97
  153. package/dist-server/domain/onboarding/onboarding.module.js +0 -23
  154. package/dist-server/domain/onboarding/onboarding.service.js +0 -106
  155. package/dist-server/domain/onboarding/onboarding.types.js +0 -2
  156. package/dist-server/domain/onboarding/presets/custom.js +0 -10
  157. package/dist-server/domain/onboarding/presets/dev-team.js +0 -41
  158. package/dist-server/domain/onboarding/presets/index.js +0 -15
  159. package/dist-server/domain/onboarding/presets/marketing-team.js +0 -29
  160. package/dist-server/domain/onboarding/presets/planning-team.js +0 -29
  161. package/dist-server/domain/onboarding/presets/solo.js +0 -17
  162. package/dist-server/domain/planner/dto/planner.dto.js +0 -58
  163. package/dist-server/domain/planner/planner.controller.js +0 -74
  164. package/dist-server/domain/planner/planner.module.js +0 -22
  165. package/dist-server/domain/planner/planner.service.js +0 -269
  166. package/dist-server/domain/project/dto/create-project.dto.js +0 -46
  167. package/dist-server/domain/project/dto/update-project.dto.js +0 -60
  168. package/dist-server/domain/project/project.controller.js +0 -129
  169. package/dist-server/domain/project/project.module.js +0 -22
  170. package/dist-server/domain/project/project.service.js +0 -173
  171. package/dist-server/domain/settings/settings.controller.js +0 -52
  172. package/dist-server/domain/settings/settings.module.js +0 -22
  173. package/dist-server/domain/settings/settings.service.js +0 -105
  174. package/dist-server/domain/task/dto/all-tasks.dto.js +0 -55
  175. package/dist-server/domain/task/dto/list-tasks.dto.js +0 -69
  176. package/dist-server/domain/task/dto/search-tasks.dto.js +0 -66
  177. package/dist-server/domain/task/dto/send-message.dto.js +0 -31
  178. package/dist-server/domain/task/dto/task-status.dto.js +0 -34
  179. package/dist-server/domain/task/dto/workspace-usage.dto.js +0 -38
  180. package/dist-server/domain/task/task.constants.js +0 -5
  181. package/dist-server/domain/task/task.controller.js +0 -169
  182. package/dist-server/domain/task/task.module.js +0 -23
  183. package/dist-server/domain/task/task.service.js +0 -775
  184. package/dist-server/domain/thread/dto/build-context.dto.js +0 -42
  185. package/dist-server/domain/thread/dto/list-messages.dto.js +0 -49
  186. package/dist-server/domain/thread/dto/list-threads.dto.js +0 -70
  187. package/dist-server/domain/thread/dto/search-threads.dto.js +0 -13
  188. package/dist-server/domain/thread/dto/update-thread.dto.js +0 -23
  189. package/dist-server/domain/thread/thread.controller.js +0 -160
  190. package/dist-server/domain/thread/thread.module.js +0 -23
  191. package/dist-server/domain/thread/thread.service.js +0 -419
  192. package/dist-server/domain/usage/usage.controller.js +0 -118
  193. package/dist-server/domain/usage/usage.module.js +0 -21
  194. package/dist-server/domain/usage/usage.service.js +0 -358
  195. package/dist-server/domain/usage/usage.types.js +0 -4
  196. package/dist-server/domain/wbs/wbs.controller.js +0 -51
  197. package/dist-server/domain/wbs/wbs.module.js +0 -21
  198. package/dist-server/domain/wbs/wbs.service.js +0 -94
  199. package/dist-server/domain/workflow/workflow.controller.js +0 -53
  200. package/dist-server/domain/workflow/workflow.module.js +0 -21
  201. package/dist-server/domain/workflow/workflow.service.js +0 -209
  202. package/dist-server/domain/workspace/dto/create-workspace.dto.js +0 -45
  203. package/dist-server/domain/workspace/dto/switch-workspace.dto.js +0 -32
  204. package/dist-server/domain/workspace/dto/workspace-info.dto.js +0 -2
  205. package/dist-server/domain/workspace/workspace.controller.js +0 -98
  206. package/dist-server/domain/workspace/workspace.module.js +0 -22
  207. package/dist-server/domain/workspace/workspace.service.js +0 -198
  208. package/dist-server/main.js +0 -204
  209. package/dist-server/modules/crewx-pool.service.js +0 -75
  210. package/dist-server/modules/crewx.module.js +0 -47
  211. package/dist-server/repository/base-sqlite.repository.js +0 -18
  212. package/dist-server/repository/box.repository.js +0 -99
  213. package/dist-server/repository/message.repository.js +0 -22
  214. package/dist-server/repository/project.repository.js +0 -51
  215. package/dist-server/repository/repository.module.js +0 -34
  216. package/dist-server/repository/request-log.repository.js +0 -96
  217. package/dist-server/repository/task.repository.js +0 -105
  218. package/dist-server/repository/thread.repository.js +0 -165
  219. package/dist-server/shared/crewx-home.js +0 -58
  220. package/dist-server/shared/crewx-state.js +0 -66
  221. package/dist-server/test-utils/compat-database.js +0 -30
  222. package/dist-server/utils/tokenizer.js +0 -8
@@ -1,71 +0,0 @@
1
- "use strict";
2
- /**
3
- * TemplateProcessorService
4
- *
5
- * Server-side equivalent of CLI's processDocumentTemplate function.
6
- * Provides Handlebars template rendering with the same helpers and
7
- * document context as the CLI, ensuring preview results match
8
- * `crewx agent prompt @agent_id` output.
9
- *
10
- * Registers identical helpers to CLI's registerHandlebarsHelpers():
11
- * eq, ne, contains, and, or, not, json
12
- */
13
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
14
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
- return c > 3 && r && Object.defineProperty(target, key, r), r;
18
- };
19
- var __importDefault = (this && this.__importDefault) || function (mod) {
20
- return (mod && mod.__esModule) ? mod : { "default": mod };
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.TemplateProcessorService = void 0;
24
- const common_1 = require("@nestjs/common");
25
- const handlebars_1 = __importDefault(require("handlebars"));
26
- let TemplateProcessorService = class TemplateProcessorService {
27
- /**
28
- * Process a Handlebars template with document variables and context.
29
- *
30
- * Equivalent to CLI's processDocumentTemplate — registers the same helpers
31
- * and builds the same context shape so preview output matches CLI output.
32
- *
33
- * @param template - Handlebars template string
34
- * @param documents - Pre-loaded document context (content, toc, path)
35
- * @param additionalContext - Optional agent/vars/env/mode context
36
- * @returns Rendered template string
37
- * @throws Error on Handlebars compilation failure (caller wraps with 422)
38
- */
39
- processTemplate(template, documents, additionalContext) {
40
- const context = {
41
- documents,
42
- agent: additionalContext?.agent ?? {},
43
- vars: additionalContext?.vars ?? {},
44
- env: additionalContext?.env ?? {},
45
- mode: additionalContext?.mode,
46
- platform: additionalContext?.platform,
47
- };
48
- // Create isolated Handlebars instance (same pattern as CLI)
49
- const hbs = handlebars_1.default.create();
50
- this.registerHelpers(hbs);
51
- const compiled = hbs.compile(template, { noEscape: true });
52
- return compiled(context);
53
- }
54
- /**
55
- * Register CLI-equivalent Handlebars helpers.
56
- * Matches registerHandlebarsHelpers() in packages/cli/src/utils/template-processor.ts
57
- */
58
- registerHelpers(hbs) {
59
- hbs.registerHelper('eq', (a, b) => a === b);
60
- hbs.registerHelper('ne', (a, b) => a !== b);
61
- hbs.registerHelper('contains', (array, value) => Array.isArray(array) && array.includes(value));
62
- hbs.registerHelper('and', (a, b) => Boolean(a && b));
63
- hbs.registerHelper('or', (a, b) => Boolean(a || b));
64
- hbs.registerHelper('not', (a) => !a);
65
- hbs.registerHelper('json', (ctx) => JSON.stringify(ctx, null, 2));
66
- }
67
- };
68
- exports.TemplateProcessorService = TemplateProcessorService;
69
- exports.TemplateProcessorService = TemplateProcessorService = __decorate([
70
- (0, common_1.Injectable)()
71
- ], TemplateProcessorService);
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AUTH_CREDENTIALS = void 0;
4
- exports.AUTH_CREDENTIALS = 'AUTH_CREDENTIALS';
@@ -1,123 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var AuthController_1;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.AuthController = void 0;
17
- const common_1 = require("@nestjs/common");
18
- const swagger_1 = require("@nestjs/swagger");
19
- const class_validator_1 = require("class-validator");
20
- const throttler_1 = require("@nestjs/throttler");
21
- const auth_constants_js_1 = require("./auth.constants.js");
22
- const public_decorator_js_1 = require("./decorators/public.decorator.js");
23
- const ip_utils_js_1 = require("./utils/ip.utils.js");
24
- const session_store_js_1 = require("./session-store.js");
25
- class LoginDto {
26
- username;
27
- password;
28
- }
29
- __decorate([
30
- (0, class_validator_1.IsString)(),
31
- (0, class_validator_1.IsNotEmpty)(),
32
- __metadata("design:type", String)
33
- ], LoginDto.prototype, "username", void 0);
34
- __decorate([
35
- (0, class_validator_1.IsString)(),
36
- (0, class_validator_1.IsNotEmpty)(),
37
- __metadata("design:type", String)
38
- ], LoginDto.prototype, "password", void 0);
39
- const COOKIE_NAME = 'crewx_token';
40
- let AuthController = AuthController_1 = class AuthController {
41
- credentials;
42
- logger = new common_1.Logger(AuthController_1.name);
43
- constructor(credentials) {
44
- this.credentials = credentials;
45
- }
46
- // AUTH.CHECK: Guard already passed at this point — always returns 200
47
- check(req) {
48
- const ip = req.ip || req.socket?.remoteAddress;
49
- const isLocal = (0, ip_utils_js_1.isLoopback)(ip);
50
- let method = 'local';
51
- if (!isLocal) {
52
- method = req.cookies?.[COOKIE_NAME] ? 'cookie' : 'token';
53
- }
54
- return { success: true, data: { authenticated: true, method } };
55
- }
56
- // AUTH.LOGIN: brute-force protected, @Public() skips BaseAuthGuard
57
- login(body, req, res) {
58
- const usernameOk = (0, ip_utils_js_1.safeCompare)(body.username, this.credentials.username);
59
- const passwordOk = (0, ip_utils_js_1.safeCompare)(body.password, this.credentials.password);
60
- if (!usernameOk || !passwordOk) {
61
- this.logger.warn('Failed login attempt');
62
- throw new common_1.UnauthorizedException({
63
- success: false,
64
- error: { code: 'INVALID_CREDENTIALS', message: 'Invalid username or password' },
65
- });
66
- }
67
- const sessionId = (0, session_store_js_1.createSession)();
68
- res.cookie(COOKIE_NAME, sessionId, {
69
- httpOnly: true,
70
- sameSite: 'strict',
71
- secure: req.secure,
72
- maxAge: 7 * 24 * 60 * 60 * 1000,
73
- path: '/',
74
- });
75
- return { success: true, data: { authenticated: true } };
76
- }
77
- // AUTH.LOGOUT: clear session cookie (BaseAuthGuard applied — not @Public)
78
- logout(req, res) {
79
- const cookieSessionId = req.cookies?.[COOKIE_NAME];
80
- if (cookieSessionId)
81
- (0, session_store_js_1.destroySession)(cookieSessionId);
82
- res.cookie(COOKIE_NAME, '', { httpOnly: true, maxAge: 0, path: '/' });
83
- return { success: true, data: { authenticated: false } };
84
- }
85
- };
86
- exports.AuthController = AuthController;
87
- __decorate([
88
- (0, swagger_1.ApiOperation)({ operationId: 'AUTH.CHECK', summary: 'Check auth status' }),
89
- (0, common_1.Get)('check'),
90
- __param(0, (0, common_1.Req)()),
91
- __metadata("design:type", Function),
92
- __metadata("design:paramtypes", [Object]),
93
- __metadata("design:returntype", Object)
94
- ], AuthController.prototype, "check", null);
95
- __decorate([
96
- (0, swagger_1.ApiOperation)({ operationId: 'AUTH.LOGIN', summary: 'Login with username and password' }),
97
- (0, public_decorator_js_1.Public)(),
98
- (0, common_1.Post)('login'),
99
- (0, common_1.HttpCode)(200),
100
- (0, throttler_1.Throttle)({ default: { limit: 5, ttl: 60000 } }),
101
- __param(0, (0, common_1.Body)()),
102
- __param(1, (0, common_1.Req)()),
103
- __param(2, (0, common_1.Res)({ passthrough: true })),
104
- __metadata("design:type", Function),
105
- __metadata("design:paramtypes", [LoginDto, Object, Object]),
106
- __metadata("design:returntype", Object)
107
- ], AuthController.prototype, "login", null);
108
- __decorate([
109
- (0, swagger_1.ApiOperation)({ operationId: 'AUTH.LOGOUT', summary: 'Logout and clear session cookie' }),
110
- (0, common_1.Post)('logout'),
111
- (0, common_1.HttpCode)(200),
112
- __param(0, (0, common_1.Req)()),
113
- __param(1, (0, common_1.Res)({ passthrough: true })),
114
- __metadata("design:type", Function),
115
- __metadata("design:paramtypes", [Object, Object]),
116
- __metadata("design:returntype", Object)
117
- ], AuthController.prototype, "logout", null);
118
- exports.AuthController = AuthController = AuthController_1 = __decorate([
119
- (0, swagger_1.ApiTags)('auth'),
120
- (0, common_1.Controller)('auth'),
121
- __param(0, (0, common_1.Inject)(auth_constants_js_1.AUTH_CREDENTIALS)),
122
- __metadata("design:paramtypes", [Object])
123
- ], AuthController);
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AuthModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const core_1 = require("@nestjs/core");
12
- const config_1 = require("@nestjs/config");
13
- const mcp_module_js_1 = require("../mcp/mcp.module.js");
14
- const mcp_constants_js_1 = require("../mcp/mcp.constants.js");
15
- const auth_constants_js_1 = require("./auth.constants.js");
16
- const auth_controller_js_1 = require("./auth.controller.js");
17
- const base_auth_guard_js_1 = require("./guards/base-auth.guard.js");
18
- let AuthModule = class AuthModule {
19
- };
20
- exports.AuthModule = AuthModule;
21
- exports.AuthModule = AuthModule = __decorate([
22
- (0, common_1.Module)({
23
- imports: [mcp_module_js_1.McpModule],
24
- controllers: [auth_controller_js_1.AuthController],
25
- providers: [
26
- {
27
- provide: auth_constants_js_1.AUTH_CREDENTIALS,
28
- useFactory: (config, mcpToken) => {
29
- const username = config.get('AUTH_USERNAME') || 'admin';
30
- const envPassword = config.get('AUTH_PASSWORD');
31
- if (envPassword) {
32
- return { username, password: envPassword, source: 'env' };
33
- }
34
- // Fallback to MCP token (env-set or auto-generated)
35
- const source = mcpToken.source === 'env' ? 'mcp-fallback' : 'auto-generated';
36
- return { username, password: mcpToken.token, source };
37
- },
38
- inject: [config_1.ConfigService, mcp_constants_js_1.MCP_TOKEN],
39
- },
40
- {
41
- provide: core_1.APP_GUARD,
42
- useClass: base_auth_guard_js_1.BaseAuthGuard,
43
- },
44
- ],
45
- exports: [auth_constants_js_1.AUTH_CREDENTIALS],
46
- })
47
- ], AuthModule);
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Public = exports.IS_PUBLIC_KEY = void 0;
4
- const common_1 = require("@nestjs/common");
5
- exports.IS_PUBLIC_KEY = 'isPublic';
6
- const Public = () => (0, common_1.SetMetadata)(exports.IS_PUBLIC_KEY, true);
7
- exports.Public = Public;
@@ -1,66 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.BaseAuthGuard = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const core_1 = require("@nestjs/core");
18
- const mcp_constants_js_1 = require("../../mcp/mcp.constants.js");
19
- const public_decorator_js_1 = require("../decorators/public.decorator.js");
20
- const ip_utils_js_1 = require("../utils/ip.utils.js");
21
- const session_store_js_1 = require("../session-store.js");
22
- let BaseAuthGuard = class BaseAuthGuard {
23
- reflector;
24
- mcpToken;
25
- constructor(reflector, mcpToken) {
26
- this.reflector = reflector;
27
- this.mcpToken = mcpToken;
28
- }
29
- canActivate(context) {
30
- const isPublic = this.reflector.getAllAndOverride(public_decorator_js_1.IS_PUBLIC_KEY, [
31
- context.getHandler(),
32
- context.getClass(),
33
- ]);
34
- if (isPublic)
35
- return true;
36
- const req = context.switchToHttp().getRequest();
37
- if (this.isLocalRequest(req))
38
- return true;
39
- return this.validateToken(req);
40
- }
41
- isLocalRequest(req) {
42
- const ip = req.socket?.remoteAddress;
43
- if (!(0, ip_utils_js_1.isLoopback)(ip))
44
- return false;
45
- // DNS rebinding defense: Host header must also be local
46
- const host = (req.headers['host'] ?? '').split(':')[0];
47
- return host === 'localhost' || host === '127.0.0.1' || host === '[::1]';
48
- }
49
- validateToken(req) {
50
- const cookieSessionId = req.cookies?.['crewx_token'];
51
- const bearerToken = (0, ip_utils_js_1.extractBearerToken)(req);
52
- if (cookieSessionId && (0, session_store_js_1.validateSession)(cookieSessionId)) {
53
- return true;
54
- }
55
- if (bearerToken && (0, ip_utils_js_1.safeCompare)(bearerToken, this.mcpToken.token)) {
56
- return true;
57
- }
58
- throw new common_1.UnauthorizedException('Authentication required');
59
- }
60
- };
61
- exports.BaseAuthGuard = BaseAuthGuard;
62
- exports.BaseAuthGuard = BaseAuthGuard = __decorate([
63
- (0, common_1.Injectable)(),
64
- __param(1, (0, common_1.Inject)(mcp_constants_js_1.MCP_TOKEN)),
65
- __metadata("design:paramtypes", [core_1.Reflector, Object])
66
- ], BaseAuthGuard);
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSession = createSession;
4
- exports.validateSession = validateSession;
5
- exports.destroySession = destroySession;
6
- const crypto_1 = require("crypto");
7
- const sessions = new Map();
8
- const SESSION_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days (matches cookie maxAge)
9
- function createSession() {
10
- const sessionId = (0, crypto_1.randomBytes)(32).toString('hex');
11
- sessions.set(sessionId, { createdAt: Date.now() });
12
- return sessionId;
13
- }
14
- function validateSession(sessionId) {
15
- const session = sessions.get(sessionId);
16
- if (!session)
17
- return false;
18
- if (Date.now() - session.createdAt > SESSION_MAX_AGE_MS) {
19
- sessions.delete(sessionId);
20
- return false;
21
- }
22
- return true;
23
- }
24
- function destroySession(sessionId) {
25
- sessions.delete(sessionId);
26
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isLoopback = isLoopback;
4
- exports.safeCompare = safeCompare;
5
- exports.extractBearerToken = extractBearerToken;
6
- exports.maskPassword = maskPassword;
7
- const crypto_1 = require("crypto");
8
- function isLoopback(ip) {
9
- if (!ip)
10
- return false;
11
- return ip === '127.0.0.1' || ip === '::1' || ip === '::ffff:127.0.0.1';
12
- }
13
- function safeCompare(a, b) {
14
- if (a.length !== b.length)
15
- return false;
16
- return (0, crypto_1.timingSafeEqual)(new Uint8Array(Buffer.from(a)), new Uint8Array(Buffer.from(b)));
17
- }
18
- function extractBearerToken(req) {
19
- const authHeader = req.headers['authorization'];
20
- if (!authHeader || typeof authHeader !== 'string')
21
- return null;
22
- if (!authHeader.startsWith('Bearer '))
23
- return null;
24
- const token = authHeader.slice(7).trim();
25
- return token || null;
26
- }
27
- function maskPassword(pw) {
28
- if (pw.length <= 4)
29
- return '****';
30
- return pw.slice(0, 4) + '****' + pw.slice(-4);
31
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.BoxController = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const swagger_1 = require("@nestjs/swagger");
18
- const box_service_js_1 = require("./box.service.js");
19
- const create_box_dto_js_1 = require("./dto/create-box.dto.js");
20
- const workspace_decorator_js_1 = require("../../common/decorators/workspace.decorator.js");
21
- let BoxController = class BoxController {
22
- boxService;
23
- constructor(boxService) {
24
- this.boxService = boxService;
25
- }
26
- // BOX.LIST: List boxes for a thread (seq ASC)
27
- listBoxes(threadId, ws) {
28
- const data = this.boxService.listBoxes(threadId, ws.id);
29
- return { success: true, data };
30
- }
31
- // BOX.GET: Get box detail with previews
32
- getBox(threadId, boxId, ws) {
33
- const data = this.boxService.getBox(threadId, boxId, ws.id);
34
- return { success: true, data };
35
- }
36
- // BOX.CREATE: Create an immutable box (INSERT only)
37
- createBox(threadId, body, ws) {
38
- const data = this.boxService.createBox(threadId, body, ws.id);
39
- return { success: true, data };
40
- }
41
- };
42
- exports.BoxController = BoxController;
43
- __decorate([
44
- (0, swagger_1.ApiOperation)({ operationId: 'BOX.LIST', summary: 'List boxes for a thread' }),
45
- (0, common_1.Get)(),
46
- __param(0, (0, common_1.Param)('threadId')),
47
- __param(1, (0, workspace_decorator_js_1.Workspace)()),
48
- __metadata("design:type", Function),
49
- __metadata("design:paramtypes", [String, Object]),
50
- __metadata("design:returntype", void 0)
51
- ], BoxController.prototype, "listBoxes", null);
52
- __decorate([
53
- (0, swagger_1.ApiOperation)({ operationId: 'BOX.GET', summary: 'Get box detail with previews' }),
54
- (0, common_1.Get)(':boxId'),
55
- __param(0, (0, common_1.Param)('threadId')),
56
- __param(1, (0, common_1.Param)('boxId')),
57
- __param(2, (0, workspace_decorator_js_1.Workspace)()),
58
- __metadata("design:type", Function),
59
- __metadata("design:paramtypes", [String, String, Object]),
60
- __metadata("design:returntype", void 0)
61
- ], BoxController.prototype, "getBox", null);
62
- __decorate([
63
- (0, swagger_1.ApiOperation)({ operationId: 'BOX.CREATE', summary: 'Create an immutable box' }),
64
- (0, common_1.Post)(),
65
- (0, common_1.HttpCode)(201),
66
- __param(0, (0, common_1.Param)('threadId')),
67
- __param(1, (0, common_1.Body)()),
68
- __param(2, (0, workspace_decorator_js_1.Workspace)()),
69
- __metadata("design:type", Function),
70
- __metadata("design:paramtypes", [String, create_box_dto_js_1.CreateBoxDto, Object]),
71
- __metadata("design:returntype", void 0)
72
- ], BoxController.prototype, "createBox", null);
73
- exports.BoxController = BoxController = __decorate([
74
- (0, swagger_1.ApiTags)('boxes'),
75
- (0, common_1.Controller)('threads/:threadId/boxes'),
76
- __metadata("design:paramtypes", [box_service_js_1.BoxService])
77
- ], BoxController);
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.BoxModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const box_controller_js_1 = require("./box.controller.js");
12
- const box_service_js_1 = require("./box.service.js");
13
- let BoxModule = class BoxModule {
14
- };
15
- exports.BoxModule = BoxModule;
16
- exports.BoxModule = BoxModule = __decorate([
17
- (0, common_1.Module)({
18
- controllers: [box_controller_js_1.BoxController],
19
- providers: [box_service_js_1.BoxService],
20
- })
21
- ], BoxModule);
@@ -1,97 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.BoxService = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const box_repository_js_1 = require("../../repository/box.repository.js");
15
- const sdk_1 = require("@crewx/sdk");
16
- let BoxService = class BoxService {
17
- boxRepo;
18
- constructor(boxRepo) {
19
- this.boxRepo = boxRepo;
20
- }
21
- // BOX.LIST: List boxes for a thread (seq ASC)
22
- listBoxes(threadId, workspaceId) {
23
- const sdk = this.createSdkService(workspaceId);
24
- return this.wrapSdkCall(() => sdk.listBoxes(threadId));
25
- }
26
- // BOX.GET: Get single box detail with previews
27
- getBox(threadId, boxId, workspaceId) {
28
- const sdk = this.createSdkService(workspaceId);
29
- const result = this.wrapSdkCall(() => sdk.getBox(threadId, boxId));
30
- if (!result) {
31
- throw new common_1.NotFoundException(`Box not found: ${boxId} in thread: ${threadId}`);
32
- }
33
- return result;
34
- }
35
- // BOX.CREATE: Insert an immutable box (no UPDATE allowed)
36
- createBox(threadId, dto, workspaceId) {
37
- const sdk = this.createSdkService(workspaceId);
38
- return this.wrapSdkCall(() => sdk.createBox(threadId, {
39
- seq: dto.seq,
40
- firstTaskId: dto.firstTaskId,
41
- midTaskId: dto.midTaskId,
42
- lastTaskId: dto.lastTaskId,
43
- taskCount: dto.taskCount,
44
- summary: dto.summary ?? null,
45
- sourceTokens: dto.sourceTokens,
46
- summaryTokens: dto.summaryTokens ?? null,
47
- }));
48
- }
49
- // --- Private helpers ---
50
- /** Convert SDK validation errors to NestJS BadRequestException */
51
- wrapSdkCall(fn) {
52
- try {
53
- return fn();
54
- }
55
- catch (error) {
56
- if (error instanceof Error && error.message.startsWith('Invalid ID format:')) {
57
- throw new common_1.BadRequestException(error.message);
58
- }
59
- throw error;
60
- }
61
- }
62
- /** Create SDK service with workspace-scoped storage adapter */
63
- createSdkService(workspaceId) {
64
- return new sdk_1.SdkBoxService(this.createStorageAdapter(workspaceId));
65
- }
66
- /** Adapt BoxRepository to IBoxStorage, handling workspace scope internally */
67
- createStorageAdapter(workspaceId) {
68
- const repo = this.boxRepo;
69
- return {
70
- listBoxes(threadId) {
71
- return repo.findBoxesByThread(threadId, workspaceId);
72
- },
73
- findBox(threadId, boxId) {
74
- try {
75
- return repo.findBoxById(threadId, boxId, workspaceId);
76
- }
77
- catch (error) {
78
- if (error instanceof common_1.NotFoundException)
79
- return null;
80
- throw error;
81
- }
82
- },
83
- insertBox(threadId, data) {
84
- return repo.insertBox(threadId, data, workspaceId);
85
- },
86
- getTaskPreview(taskId, maxLen) {
87
- const dbPath = repo.resolveDbPath();
88
- return repo.getTaskPromptPreview(dbPath, taskId, maxLen, workspaceId);
89
- },
90
- };
91
- }
92
- };
93
- exports.BoxService = BoxService;
94
- exports.BoxService = BoxService = __decorate([
95
- (0, common_1.Injectable)(),
96
- __metadata("design:paramtypes", [box_repository_js_1.BoxRepository])
97
- ], BoxService);
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CreateBoxDto = void 0;
13
- const swagger_1 = require("@nestjs/swagger");
14
- const class_validator_1 = require("class-validator");
15
- // BOX.CREATE: Body for creating an immutable box
16
- class CreateBoxDto {
17
- firstTaskId;
18
- midTaskId;
19
- lastTaskId;
20
- seq;
21
- taskCount;
22
- sourceTokens;
23
- summaryTokens;
24
- summary;
25
- }
26
- exports.CreateBoxDto = CreateBoxDto;
27
- __decorate([
28
- (0, swagger_1.ApiProperty)({ description: 'First task ID in the box range' }),
29
- (0, class_validator_1.IsString)(),
30
- (0, class_validator_1.IsNotEmpty)(),
31
- __metadata("design:type", String)
32
- ], CreateBoxDto.prototype, "firstTaskId", void 0);
33
- __decorate([
34
- (0, swagger_1.ApiProperty)({ description: 'Middle task ID for preview (Math.floor(taskCount/2))' }),
35
- (0, class_validator_1.IsString)(),
36
- (0, class_validator_1.IsNotEmpty)(),
37
- __metadata("design:type", String)
38
- ], CreateBoxDto.prototype, "midTaskId", void 0);
39
- __decorate([
40
- (0, swagger_1.ApiProperty)({ description: 'Last task ID in the box range' }),
41
- (0, class_validator_1.IsString)(),
42
- (0, class_validator_1.IsNotEmpty)(),
43
- __metadata("design:type", String)
44
- ], CreateBoxDto.prototype, "lastTaskId", void 0);
45
- __decorate([
46
- (0, swagger_1.ApiProperty)({ description: 'Sequence number within the thread (1-based)' }),
47
- (0, class_validator_1.IsNumber)(),
48
- (0, class_validator_1.IsNotEmpty)(),
49
- __metadata("design:type", Number)
50
- ], CreateBoxDto.prototype, "seq", void 0);
51
- __decorate([
52
- (0, swagger_1.ApiProperty)({ description: 'Number of tasks in the box' }),
53
- (0, class_validator_1.IsNumber)(),
54
- (0, class_validator_1.IsNotEmpty)(),
55
- __metadata("design:type", Number)
56
- ], CreateBoxDto.prototype, "taskCount", void 0);
57
- __decorate([
58
- (0, swagger_1.ApiProperty)({ description: 'Sum of rendering tokens for all tasks' }),
59
- (0, class_validator_1.IsNumber)(),
60
- (0, class_validator_1.IsNotEmpty)(),
61
- __metadata("design:type", Number)
62
- ], CreateBoxDto.prototype, "sourceTokens", void 0);
63
- __decorate([
64
- (0, swagger_1.ApiPropertyOptional)({ description: 'Summary tokens (null if no summary)' }),
65
- (0, class_validator_1.IsOptional)(),
66
- (0, class_validator_1.IsNumber)(),
67
- __metadata("design:type", Object)
68
- ], CreateBoxDto.prototype, "summaryTokens", void 0);
69
- __decorate([
70
- (0, swagger_1.ApiPropertyOptional)({ description: 'AI-generated summary (null in Phase 1)' }),
71
- (0, class_validator_1.IsOptional)(),
72
- (0, class_validator_1.IsString)(),
73
- __metadata("design:type", Object)
74
- ], CreateBoxDto.prototype, "summary", void 0);