@cat-factory/server 0.30.0 → 0.32.0

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 (166) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +2 -0
  3. package/dist/app.js.map +1 -1
  4. package/dist/config/types.d.ts +1 -15
  5. package/dist/config/types.d.ts.map +1 -1
  6. package/dist/github/FetchGitHubClient.d.ts +15 -1
  7. package/dist/github/FetchGitHubClient.d.ts.map +1 -1
  8. package/dist/github/FetchGitHubClient.js +128 -7
  9. package/dist/github/FetchGitHubClient.js.map +1 -1
  10. package/dist/github/GitHubPullRequestReviewProvider.d.ts +25 -0
  11. package/dist/github/GitHubPullRequestReviewProvider.d.ts.map +1 -0
  12. package/dist/github/GitHubPullRequestReviewProvider.js +170 -0
  13. package/dist/github/GitHubPullRequestReviewProvider.js.map +1 -0
  14. package/dist/http/errorHandler.d.ts.map +1 -1
  15. package/dist/http/errorHandler.js +20 -0
  16. package/dist/http/errorHandler.js.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/modules/accounts/AccountController.d.ts +4 -0
  22. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  23. package/dist/modules/accounts/AccountController.js +78 -58
  24. package/dist/modules/accounts/AccountController.js.map +1 -1
  25. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  26. package/dist/modules/agentRuns/AgentRunController.js +8 -6
  27. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  28. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  29. package/dist/modules/auth/AuthController.js +23 -23
  30. package/dist/modules/auth/AuthController.js.map +1 -1
  31. package/dist/modules/board/BoardController.d.ts.map +1 -1
  32. package/dist/modules/board/BoardController.js +26 -26
  33. package/dist/modules/board/BoardController.js.map +1 -1
  34. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  35. package/dist/modules/bootstrap/BootstrapController.js +15 -15
  36. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  37. package/dist/modules/brainstorm/BrainstormController.d.ts +3 -2
  38. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  39. package/dist/modules/brainstorm/BrainstormController.js +36 -52
  40. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  41. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  42. package/dist/modules/clarity/ClarityReviewController.js +27 -25
  43. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  44. package/dist/modules/consensus/ConsensusController.d.ts.map +1 -1
  45. package/dist/modules/consensus/ConsensusController.js +6 -4
  46. package/dist/modules/consensus/ConsensusController.js.map +1 -1
  47. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  48. package/dist/modules/documents/DocumentSourceController.js +17 -17
  49. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  50. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  51. package/dist/modules/environments/EnvironmentController.js +24 -24
  52. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  53. package/dist/modules/execution/ExecutionController.d.ts.map +1 -1
  54. package/dist/modules/execution/ExecutionController.js +57 -45
  55. package/dist/modules/execution/ExecutionController.js.map +1 -1
  56. package/dist/modules/followUp/FollowUpController.d.ts.map +1 -1
  57. package/dist/modules/followUp/FollowUpController.js +21 -17
  58. package/dist/modules/followUp/FollowUpController.js.map +1 -1
  59. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  60. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +26 -26
  61. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  62. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  63. package/dist/modules/github/GitHubController.js +44 -44
  64. package/dist/modules/github/GitHubController.js.map +1 -1
  65. package/dist/modules/humanReview/HumanReviewController.d.ts +11 -0
  66. package/dist/modules/humanReview/HumanReviewController.d.ts.map +1 -0
  67. package/dist/modules/humanReview/HumanReviewController.js +22 -0
  68. package/dist/modules/humanReview/HumanReviewController.js.map +1 -0
  69. package/dist/modules/humanTest/HumanTestController.d.ts.map +1 -1
  70. package/dist/modules/humanTest/HumanTestController.js +17 -17
  71. package/dist/modules/humanTest/HumanTestController.js.map +1 -1
  72. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  73. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -7
  74. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  75. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  76. package/dist/modules/kaizen/KaizenController.js +7 -5
  77. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  78. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  79. package/dist/modules/localModels/LocalModelEndpointController.js +10 -11
  80. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  81. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  82. package/dist/modules/localSettings/LocalSettingsController.js +6 -6
  83. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  84. package/dist/modules/merge/MergePresetController.d.ts.map +1 -1
  85. package/dist/modules/merge/MergePresetController.js +10 -10
  86. package/dist/modules/merge/MergePresetController.js.map +1 -1
  87. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  88. package/dist/modules/modelPresets/ModelPresetController.js +10 -10
  89. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  90. package/dist/modules/models/ModelController.d.ts.map +1 -1
  91. package/dist/modules/models/ModelController.js +6 -4
  92. package/dist/modules/models/ModelController.js.map +1 -1
  93. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  94. package/dist/modules/notifications/NotificationController.js +11 -9
  95. package/dist/modules/notifications/NotificationController.js.map +1 -1
  96. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  97. package/dist/modules/openrouter/OpenRouterCatalogController.js +9 -10
  98. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  99. package/dist/modules/pipelines/PipelineController.d.ts.map +1 -1
  100. package/dist/modules/pipelines/PipelineController.js +17 -15
  101. package/dist/modules/pipelines/PipelineController.js.map +1 -1
  102. package/dist/modules/promptFragments/PromptFragmentController.d.ts.map +1 -1
  103. package/dist/modules/promptFragments/PromptFragmentController.js +4 -2
  104. package/dist/modules/promptFragments/PromptFragmentController.js.map +1 -1
  105. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  106. package/dist/modules/providers/ApiKeyController.js +12 -12
  107. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  108. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  109. package/dist/modules/providers/PersonalSubscriptionController.js +7 -8
  110. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  111. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  112. package/dist/modules/providers/UserSecretController.js +14 -15
  113. package/dist/modules/providers/UserSecretController.js.map +1 -1
  114. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  115. package/dist/modules/providers/VendorCredentialController.js +7 -7
  116. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  117. package/dist/modules/providers/personalCredentialGate.d.ts +2 -2
  118. package/dist/modules/providers/personalCredentialGate.d.ts.map +1 -1
  119. package/dist/modules/providers/personalCredentialGate.js.map +1 -1
  120. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  121. package/dist/modules/provisioningLogs/ProvisioningLogController.js +4 -3
  122. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  123. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  124. package/dist/modules/recurring/RecurringPipelineController.js +15 -15
  125. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  126. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  127. package/dist/modules/recurring/TrackerSettingsController.js +6 -6
  128. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  129. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  130. package/dist/modules/releaseHealth/ReleaseHealthController.js +14 -14
  131. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  132. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  133. package/dist/modules/requirements/RequirementReviewController.js +43 -38
  134. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  135. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  136. package/dist/modules/runners/RunnerPoolController.js +12 -12
  137. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  138. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  139. package/dist/modules/sandbox/SandboxController.js +35 -26
  140. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  141. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  142. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -6
  143. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  144. package/dist/modules/serviceSpec/ServiceSpecController.d.ts.map +1 -1
  145. package/dist/modules/serviceSpec/ServiceSpecController.js +9 -8
  146. package/dist/modules/serviceSpec/ServiceSpecController.js.map +1 -1
  147. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  148. package/dist/modules/services/ServiceMountController.js +14 -14
  149. package/dist/modules/services/ServiceMountController.js.map +1 -1
  150. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  151. package/dist/modules/settings/WorkspaceSettingsController.js +6 -6
  152. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  153. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  154. package/dist/modules/slack/SlackController.js +18 -18
  155. package/dist/modules/slack/SlackController.js.map +1 -1
  156. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  157. package/dist/modules/tasks/TaskSourceController.js +19 -19
  158. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  159. package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
  160. package/dist/modules/workspaces/WorkspaceController.js +11 -11
  161. package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
  162. package/package.json +11 -9
  163. package/dist/http/validation.d.ts +0 -21
  164. package/dist/http/validation.d.ts.map +0 -1
  165. package/dist/http/validation.js +0 -21
  166. package/dist/http/validation.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { createScheduleSchema, updateScheduleSchema } from '@cat-factory/contracts';
1
+ import { createScheduleContract, deleteScheduleContract, listScheduleRunsContract, listSchedulesContract, runScheduleNowContract, updateScheduleContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /** Resolve the recurring-pipeline module or send a 503, returning null when unconfigured. */
6
6
  function requireRecurring(c) {
7
7
  return c.get('container').recurring ?? null;
@@ -13,45 +13,45 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Recu
13
13
  */
14
14
  export function recurringPipelineController() {
15
15
  const app = new Hono();
16
- app.get('/recurring-pipelines', async (c) => {
16
+ buildHonoRoute(app, listSchedulesContract, async (c) => {
17
17
  const recurring = requireRecurring(c);
18
18
  if (!recurring)
19
19
  return unavailable(c);
20
- return c.json(await recurring.service.list(param(c, 'workspaceId')));
20
+ return c.json(await recurring.service.list(param(c, 'workspaceId')), 200);
21
21
  });
22
- app.post('/recurring-pipelines', jsonBody(createScheduleSchema), async (c) => {
22
+ buildHonoRoute(app, createScheduleContract, async (c) => {
23
23
  const recurring = requireRecurring(c);
24
24
  if (!recurring)
25
25
  return unavailable(c);
26
26
  const schedule = await recurring.service.create(param(c, 'workspaceId'), c.req.valid('json'));
27
27
  return c.json(schedule, 201);
28
28
  });
29
- app.patch('/recurring-pipelines/:scheduleId', jsonBody(updateScheduleSchema), async (c) => {
29
+ buildHonoRoute(app, updateScheduleContract, async (c) => {
30
30
  const recurring = requireRecurring(c);
31
31
  if (!recurring)
32
32
  return unavailable(c);
33
- const schedule = await recurring.service.update(param(c, 'workspaceId'), param(c, 'scheduleId'), c.req.valid('json'));
34
- return c.json(schedule);
33
+ const schedule = await recurring.service.update(param(c, 'workspaceId'), c.req.valid('param').scheduleId, c.req.valid('json'));
34
+ return c.json(schedule, 200);
35
35
  });
36
- app.delete('/recurring-pipelines/:scheduleId', async (c) => {
36
+ buildHonoRoute(app, deleteScheduleContract, async (c) => {
37
37
  const recurring = requireRecurring(c);
38
38
  if (!recurring)
39
39
  return unavailable(c);
40
- await recurring.service.remove(param(c, 'workspaceId'), param(c, 'scheduleId'));
40
+ await recurring.service.remove(param(c, 'workspaceId'), c.req.valid('param').scheduleId);
41
41
  return c.body(null, 204);
42
42
  });
43
- app.get('/recurring-pipelines/:scheduleId/runs', async (c) => {
43
+ buildHonoRoute(app, listScheduleRunsContract, async (c) => {
44
44
  const recurring = requireRecurring(c);
45
45
  if (!recurring)
46
46
  return unavailable(c);
47
- return c.json(await recurring.service.listRuns(param(c, 'workspaceId'), param(c, 'scheduleId')));
47
+ return c.json(await recurring.service.listRuns(param(c, 'workspaceId'), c.req.valid('param').scheduleId), 200);
48
48
  });
49
- app.post('/recurring-pipelines/:scheduleId/run-now', async (c) => {
49
+ buildHonoRoute(app, runScheduleNowContract, async (c) => {
50
50
  const recurring = requireRecurring(c);
51
51
  if (!recurring)
52
52
  return unavailable(c);
53
- const schedule = await recurring.service.runNow(param(c, 'workspaceId'), param(c, 'scheduleId'));
54
- return c.json(schedule);
53
+ const schedule = await recurring.service.runNow(param(c, 'workspaceId'), c.req.valid('param').scheduleId);
54
+ return c.json(schedule, 200);
55
55
  });
56
56
  return app;
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RecurringPipelineController.js","sourceRoot":"","sources":["../../../src/modules/recurring/RecurringPipelineController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RecurringPipelineController.js","sourceRoot":"","sources":["../../../src/modules/recurring/RecurringPipelineController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TrackerSettingsController.d.ts","sourceRoot":"","sources":["../../../src/modules/recurring/TrackerSettingsController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAgBxD"}
1
+ {"version":3,"file":"TrackerSettingsController.d.ts","sourceRoot":"","sources":["../../../src/modules/recurring/TrackerSettingsController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAgBxD"}
@@ -1,7 +1,7 @@
1
- import { putTrackerSettingsSchema } from '@cat-factory/contracts';
1
+ import { getTrackerSettingsContract, putTrackerSettingsContract } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /** Resolve the tracker-settings module or send a 503, returning null when unconfigured. */
6
6
  function requireTracker(c) {
7
7
  return c.get('container').tracker ?? null;
@@ -13,17 +13,17 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Issu
13
13
  */
14
14
  export function trackerSettingsController() {
15
15
  const app = new Hono();
16
- app.get('/tracker-settings', async (c) => {
16
+ buildHonoRoute(app, getTrackerSettingsContract, async (c) => {
17
17
  const tracker = requireTracker(c);
18
18
  if (!tracker)
19
19
  return unavailable(c);
20
- return c.json(await tracker.service.get(param(c, 'workspaceId')));
20
+ return c.json(await tracker.service.get(param(c, 'workspaceId')), 200);
21
21
  });
22
- app.put('/tracker-settings', jsonBody(putTrackerSettingsSchema), async (c) => {
22
+ buildHonoRoute(app, putTrackerSettingsContract, async (c) => {
23
23
  const tracker = requireTracker(c);
24
24
  if (!tracker)
25
25
  return unavailable(c);
26
- return c.json(await tracker.service.put(param(c, 'workspaceId'), c.req.valid('json')));
26
+ return c.json(await tracker.service.put(param(c, 'workspaceId'), c.req.valid('json')), 200);
27
27
  });
28
28
  return app;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TrackerSettingsController.js","sourceRoot":"","sources":["../../../src/modules/recurring/TrackerSettingsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,2FAA2F;AAC3F,SAAS,cAAc,CAAC,CAAkB;IACxC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,IAAI,IAAI,CAAA;AAC3C,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,CAAkB,EAAE,EAAE,CACzC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAE7F;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3E,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"TrackerSettingsController.js","sourceRoot":"","sources":["../../../src/modules/recurring/TrackerSettingsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,2FAA2F;AAC3F,SAAS,cAAc,CAAmB,CAAa;IACrD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,IAAI,IAAI,CAAA;AAC3C,CAAC;AAED,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAE7F;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseHealthController.d.ts","sourceRoot":"","sources":["../../../src/modules/releaseHealth/ReleaseHealthController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAe/C;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,CAmDtD"}
1
+ {"version":3,"file":"ReleaseHealthController.d.ts","sourceRoot":"","sources":["../../../src/modules/releaseHealth/ReleaseHealthController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAc/C;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,CA+CtD"}
@@ -1,7 +1,7 @@
1
- import { upsertObservabilityConnectionSchema, upsertReleaseHealthConfigSchema, } from '@cat-factory/contracts';
1
+ import { deleteObservabilityConnectionContract, deleteReleaseHealthConfigContract, getObservabilityConnectionContract, listReleaseHealthConfigsContract, setObservabilityConnectionContract, upsertReleaseHealthConfigContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /** Resolve the release-health module or send a 503, returning null when unconfigured. */
6
6
  function requireReleaseHealth(c) {
7
7
  return c.get('container').releaseHealth ?? null;
@@ -14,43 +14,43 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'The
14
14
  */
15
15
  export function releaseHealthController() {
16
16
  const app = new Hono();
17
- app.get('/observability/connection', async (c) => {
17
+ buildHonoRoute(app, getObservabilityConnectionContract, async (c) => {
18
18
  const rh = requireReleaseHealth(c);
19
19
  if (!rh)
20
20
  return unavailable(c);
21
- return c.json(await rh.service.getConnection(param(c, 'workspaceId')));
21
+ return c.json(await rh.service.getConnection(param(c, 'workspaceId')), 200);
22
22
  });
23
- app.put('/observability/connection', jsonBody(upsertObservabilityConnectionSchema), async (c) => {
23
+ buildHonoRoute(app, setObservabilityConnectionContract, async (c) => {
24
24
  const rh = requireReleaseHealth(c);
25
25
  if (!rh)
26
26
  return unavailable(c);
27
- return c.json(await rh.service.setConnection(param(c, 'workspaceId'), c.req.valid('json')));
27
+ return c.json(await rh.service.setConnection(param(c, 'workspaceId'), c.req.valid('json')), 200);
28
28
  });
29
- app.delete('/observability/connection', async (c) => {
29
+ buildHonoRoute(app, deleteObservabilityConnectionContract, async (c) => {
30
30
  const rh = requireReleaseHealth(c);
31
31
  if (!rh)
32
32
  return unavailable(c);
33
33
  await rh.service.deleteConnection(param(c, 'workspaceId'));
34
34
  return c.body(null, 204);
35
35
  });
36
- app.get('/release-health-configs', async (c) => {
36
+ buildHonoRoute(app, listReleaseHealthConfigsContract, async (c) => {
37
37
  const rh = requireReleaseHealth(c);
38
38
  if (!rh)
39
39
  return unavailable(c);
40
- return c.json(await rh.service.listConfigs(param(c, 'workspaceId')));
40
+ return c.json(await rh.service.listConfigs(param(c, 'workspaceId')), 200);
41
41
  });
42
- app.put('/release-health-configs/:blockId', jsonBody(upsertReleaseHealthConfigSchema), async (c) => {
42
+ buildHonoRoute(app, upsertReleaseHealthConfigContract, async (c) => {
43
43
  const rh = requireReleaseHealth(c);
44
44
  if (!rh)
45
45
  return unavailable(c);
46
- const config = await rh.service.upsertConfig(param(c, 'workspaceId'), param(c, 'blockId'), c.req.valid('json'));
47
- return c.json(config);
46
+ const config = await rh.service.upsertConfig(param(c, 'workspaceId'), c.req.valid('param').blockId, c.req.valid('json'));
47
+ return c.json(config, 200);
48
48
  });
49
- app.delete('/release-health-configs/:blockId', async (c) => {
49
+ buildHonoRoute(app, deleteReleaseHealthConfigContract, async (c) => {
50
50
  const rh = requireReleaseHealth(c);
51
51
  if (!rh)
52
52
  return unavailable(c);
53
- await rh.service.deleteConfig(param(c, 'workspaceId'), param(c, 'blockId'));
53
+ await rh.service.deleteConfig(param(c, 'workspaceId'), c.req.valid('param').blockId);
54
54
  return c.body(null, 204);
55
55
  });
56
56
  return app;
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseHealthController.js","sourceRoot":"","sources":["../../../src/modules/releaseHealth/ReleaseHealthController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReleaseHealthController.js","sourceRoot":"","sources":["../../../src/modules/releaseHealth/ReleaseHealthController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RequirementReviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/requirements/RequirementReviewController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAmM1D"}
1
+ {"version":3,"file":"RequirementReviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/requirements/RequirementReviewController.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAgL1D"}
@@ -1,7 +1,7 @@
1
- import { incorporateRequirementsSchema, reRequestRecommendationSchema, replyReviewItemSchema, requestRecommendationsSchema, resolveRequirementsExceededSchema, updateReviewItemStatusSchema, } from '@cat-factory/contracts';
1
+ import { acceptRequirementRecommendationContract, getRequirementReviewContract, incorporateRequirementsContract, proceedRequirementsContract, reRequestRequirementRecommendationContract, reReviewRequirementsContract, rejectRequirementRecommendationContract, replyRequirementItemContract, requestRequirementRecommendationsContract, resolveRequirementsExceededContract, reviewRequirementsContract, updateRequirementItemStatusContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /** Resolve the requirements module or send a 503, returning null when unconfigured. */
6
6
  function requireRequirements(c) {
7
7
  return c.get('container').requirements ?? null;
@@ -18,40 +18,42 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Requ
18
18
  export function requirementReviewController() {
19
19
  const app = new Hono();
20
20
  // The current review for a block (null when none has been run yet).
21
- app.get('/blocks/:blockId/requirement-review', async (c) => {
21
+ buildHonoRoute(app, getRequirementReviewContract, async (c) => {
22
22
  const requirements = requireRequirements(c);
23
23
  if (!requirements)
24
24
  return unavailable(c);
25
- const review = await requirements.service.getForBlock(param(c, 'workspaceId'), param(c, 'blockId'));
26
- return c.json(review);
25
+ const review = await requirements.service.getForBlock(param(c, 'workspaceId'), c.req.valid('param').blockId);
26
+ return c.json(review, 200);
27
27
  });
28
28
  // Run a fresh review of the block's collected requirements (replaces any prior).
29
29
  // Routed through the execution service so the off-path surface honours the task's
30
30
  // merge-preset knobs (iteration budget + tolerated severity) exactly like the gate.
31
- app.post('/blocks/:blockId/requirement-review', async (c) => {
31
+ buildHonoRoute(app, reviewRequirementsContract, async (c) => {
32
32
  const requirements = requireRequirements(c);
33
33
  if (!requirements)
34
34
  return unavailable(c);
35
35
  const review = await c
36
36
  .get('container')
37
- .executionService.reviewRequirements(param(c, 'workspaceId'), param(c, 'blockId'));
37
+ .executionService.reviewRequirements(param(c, 'workspaceId'), c.req.valid('param').blockId);
38
38
  return c.json(review, 201);
39
39
  });
40
40
  // Answer a single review item.
41
- app.post('/requirement-reviews/:reviewId/items/:itemId/reply', jsonBody(replyReviewItemSchema), async (c) => {
41
+ buildHonoRoute(app, replyRequirementItemContract, async (c) => {
42
42
  const requirements = requireRequirements(c);
43
43
  if (!requirements)
44
44
  return unavailable(c);
45
- const review = await requirements.service.replyToItem(param(c, 'workspaceId'), param(c, 'reviewId'), param(c, 'itemId'), c.req.valid('json').reply);
46
- return c.json(review);
45
+ const { reviewId, itemId } = c.req.valid('param');
46
+ const review = await requirements.service.replyToItem(param(c, 'workspaceId'), reviewId, itemId, c.req.valid('json').reply);
47
+ return c.json(review, 200);
47
48
  });
48
49
  // Set a review item's status (resolve / dismiss / reopen).
49
- app.patch('/requirement-reviews/:reviewId/items/:itemId', jsonBody(updateReviewItemStatusSchema), async (c) => {
50
+ buildHonoRoute(app, updateRequirementItemStatusContract, async (c) => {
50
51
  const requirements = requireRequirements(c);
51
52
  if (!requirements)
52
53
  return unavailable(c);
53
- const review = await requirements.service.setItemStatus(param(c, 'workspaceId'), param(c, 'reviewId'), param(c, 'itemId'), c.req.valid('json').status);
54
- return c.json(review);
54
+ const { reviewId, itemId } = c.req.valid('param');
55
+ const review = await requirements.service.setItemStatus(param(c, 'workspaceId'), reviewId, itemId, c.req.valid('json').status);
56
+ return c.json(review, 200);
55
57
  });
56
58
  // Incorporate the answers ASYNCHRONOUSLY: the durable driver folds them into one
57
59
  // standard-format document and re-reviews it in the background. Optional `feedback` is the
@@ -59,37 +61,37 @@ export function requirementReviewController() {
59
61
  // once (no LLM in the request) so the SPA returns the user to the board; a notification
60
62
  // calls them back only if the re-review needs input. Blocks scoped (the review is resolved
61
63
  // from the block) to match the other run-driving endpoints.
62
- app.post('/blocks/:blockId/requirement-review/incorporate', jsonBody(incorporateRequirementsSchema), async (c) => {
64
+ buildHonoRoute(app, incorporateRequirementsContract, async (c) => {
63
65
  const requirements = requireRequirements(c);
64
66
  if (!requirements)
65
67
  return unavailable(c);
66
68
  const review = await c
67
69
  .get('container')
68
- .executionService.incorporateRequirements(param(c, 'workspaceId'), param(c, 'blockId'), c.req.valid('json').feedback);
69
- return c.json(review);
70
+ .executionService.incorporateRequirements(param(c, 'workspaceId'), c.req.valid('param').blockId, c.req.valid('json').feedback);
71
+ return c.json(review, 200);
70
72
  });
71
73
  // Re-review the incorporated document (one more reviewer pass). On convergence the
72
74
  // parked run advances; otherwise the response carries the next cycle's findings (or the
73
75
  // iteration-cap state). Returns the updated review.
74
- app.post('/blocks/:blockId/requirement-review/re-review', async (c) => {
76
+ buildHonoRoute(app, reReviewRequirementsContract, async (c) => {
75
77
  const requirements = requireRequirements(c);
76
78
  if (!requirements)
77
79
  return unavailable(c);
78
80
  const review = await c
79
81
  .get('container')
80
- .executionService.reReviewRequirements(param(c, 'workspaceId'), param(c, 'blockId'));
81
- return c.json(review);
82
+ .executionService.reReviewRequirements(param(c, 'workspaceId'), c.req.valid('param').blockId);
83
+ return c.json(review, 200);
82
84
  });
83
85
  // Proceed: settle the requirements (last incorporated doc wins downstream) and advance
84
86
  // the parked run. Used when every finding is dismissed.
85
- app.post('/blocks/:blockId/requirement-review/proceed', async (c) => {
87
+ buildHonoRoute(app, proceedRequirementsContract, async (c) => {
86
88
  const requirements = requireRequirements(c);
87
89
  if (!requirements)
88
90
  return unavailable(c);
89
91
  const review = await c
90
92
  .get('container')
91
- .executionService.proceedRequirements(param(c, 'workspaceId'), param(c, 'blockId'));
92
- return c.json(review);
93
+ .executionService.proceedRequirements(param(c, 'workspaceId'), c.req.valid('param').blockId);
94
+ return c.json(review, 200);
93
95
  });
94
96
  // Ask the Requirement Writer to recommend grounded answers for a batch of findings the human
95
97
  // marked "recommend something". ASYNCHRONOUS: appends `pending` placeholder recommendations
@@ -98,58 +100,61 @@ export function requirementReviewController() {
98
100
  // placeholders so the user goes back to the board; a notification calls them back when the
99
101
  // batch is ready. Block-scoped (the live review is resolved from the block); a no-op when no
100
102
  // review exists.
101
- app.post('/blocks/:blockId/requirement-review/recommend', jsonBody(requestRecommendationsSchema), async (c) => {
103
+ buildHonoRoute(app, requestRequirementRecommendationsContract, async (c) => {
102
104
  const requirements = requireRequirements(c);
103
105
  if (!requirements)
104
106
  return unavailable(c);
105
107
  const workspaceId = param(c, 'workspaceId');
106
- const blockId = param(c, 'blockId');
108
+ const blockId = c.req.valid('param').blockId;
107
109
  const review = await requirements.service.getForBlock(workspaceId, blockId);
108
110
  if (!review)
109
- return c.json(null);
111
+ return c.json(null, 200);
110
112
  const body = c.req.valid('json');
111
113
  const updated = await c
112
114
  .get('container')
113
115
  .executionService.requestRecommendations(workspaceId, blockId, body.itemIds, body.note);
114
- return c.json(updated);
116
+ return c.json(updated, 200);
115
117
  });
116
118
  // Accept a recommendation (it becomes the finding's answer, folded into the next
117
119
  // incorporation), reject it, or re-request it with a "do it differently" note.
118
- app.post('/requirement-reviews/:reviewId/recommendations/:recId/accept', async (c) => {
120
+ buildHonoRoute(app, acceptRequirementRecommendationContract, async (c) => {
119
121
  const requirements = requireRequirements(c);
120
122
  if (!requirements)
121
123
  return unavailable(c);
122
- const review = await requirements.service.acceptRecommendation(param(c, 'workspaceId'), param(c, 'reviewId'), param(c, 'recId'));
123
- return c.json(review);
124
+ const { reviewId, recId } = c.req.valid('param');
125
+ const review = await requirements.service.acceptRecommendation(param(c, 'workspaceId'), reviewId, recId);
126
+ return c.json(review, 200);
124
127
  });
125
- app.post('/requirement-reviews/:reviewId/recommendations/:recId/reject', async (c) => {
128
+ buildHonoRoute(app, rejectRequirementRecommendationContract, async (c) => {
126
129
  const requirements = requireRequirements(c);
127
130
  if (!requirements)
128
131
  return unavailable(c);
129
- const review = await requirements.service.rejectRecommendation(param(c, 'workspaceId'), param(c, 'reviewId'), param(c, 'recId'));
130
- return c.json(review);
132
+ const { reviewId, recId } = c.req.valid('param');
133
+ const review = await requirements.service.rejectRecommendation(param(c, 'workspaceId'), reviewId, recId);
134
+ return c.json(review, 200);
131
135
  });
132
136
  // Re-request a recommendation with a "do it differently" note. ASYNCHRONOUS like the batch:
133
137
  // resets the recommendation to `pending` and signals the driver to re-run the Writer.
134
- app.post('/requirement-reviews/:reviewId/recommendations/:recId/re-request', jsonBody(reRequestRecommendationSchema), async (c) => {
138
+ buildHonoRoute(app, reRequestRequirementRecommendationContract, async (c) => {
135
139
  const requirements = requireRequirements(c);
136
140
  if (!requirements)
137
141
  return unavailable(c);
142
+ const { reviewId, recId } = c.req.valid('param');
138
143
  const review = await c
139
144
  .get('container')
140
- .executionService.reRequestRecommendation(param(c, 'workspaceId'), param(c, 'reviewId'), param(c, 'recId'), c.req.valid('json').note);
141
- return c.json(review);
145
+ .executionService.reRequestRecommendation(param(c, 'workspaceId'), reviewId, recId, c.req.valid('json').note);
146
+ return c.json(review, 200);
142
147
  });
143
148
  // Resolve a review that hit its iteration cap: one more round / proceed anyway / stop
144
149
  // and reset the task to phase zero. Returns the updated review.
145
- app.post('/blocks/:blockId/requirement-review/resolve-exceeded', jsonBody(resolveRequirementsExceededSchema), async (c) => {
150
+ buildHonoRoute(app, resolveRequirementsExceededContract, async (c) => {
146
151
  const requirements = requireRequirements(c);
147
152
  if (!requirements)
148
153
  return unavailable(c);
149
154
  const review = await c
150
155
  .get('container')
151
- .executionService.resolveRequirementsExceeded(param(c, 'workspaceId'), param(c, 'blockId'), c.req.valid('json').choice);
152
- return c.json(review);
156
+ .executionService.resolveRequirementsExceeded(param(c, 'workspaceId'), c.req.valid('param').blockId, c.req.valid('json').choice);
157
+ return c.json(review, 200);
153
158
  });
154
159
  return app;
155
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RequirementReviewController.js","sourceRoot":"","sources":["../../../src/modules/requirements/RequirementReviewController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,uFAAuF;AACvF,SAAS,mBAAmB,CAAC,CAAkB;IAC7C,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,IAAI,IAAI,CAAA;AAChD,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,CAAkB,EAAE,EAAE,CACzC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uCAAuC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAEnG;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,oEAAoE;IACpE,GAAG,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,WAAW,CACnD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CACpB,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,iFAAiF;IACjF,kFAAkF;IAClF,oFAAoF;IACpF,GAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC;aACnB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QACpF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CACN,oDAAoD,EACpD,QAAQ,CAAC,qBAAqB,CAAC,EAC/B,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,WAAW,CACnD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EACpB,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAClB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAC1B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CACF,CAAA;IAED,2DAA2D;IAC3D,GAAG,CAAC,KAAK,CACP,8CAA8C,EAC9C,QAAQ,CAAC,4BAA4B,CAAC,EACtC,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,aAAa,CACrD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EACpB,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAClB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CACF,CAAA;IAED,iFAAiF;IACjF,2FAA2F;IAC3F,wFAAwF;IACxF,wFAAwF;IACxF,2FAA2F;IAC3F,4DAA4D;IAC5D,GAAG,CAAC,IAAI,CACN,iDAAiD,EACjD,QAAQ,CAAC,6BAA6B,CAAC,EACvC,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC;aACnB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,uBAAuB,CACvC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EACnB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAC7B,CAAA;QACH,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CACF,CAAA;IAED,mFAAmF;IACnF,wFAAwF;IACxF,oDAAoD;IACpD,GAAG,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpE,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC;aACnB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QACtF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,uFAAuF;IACvF,wDAAwD;IACxD,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC;aACnB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QACrF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,6FAA6F;IAC7F,4FAA4F;IAC5F,8FAA8F;IAC9F,qFAAqF;IACrF,2FAA2F;IAC3F,6FAA6F;IAC7F,iBAAiB;IACjB,GAAG,CAAC,IAAI,CACN,+CAA+C,EAC/C,QAAQ,CAAC,4BAA4B,CAAC,EACtC,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC3E,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC;aACpB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACzF,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC,CACF,CAAA;IAED,iFAAiF;IACjF,+EAA+E;IAC/E,GAAG,CAAC,IAAI,CAAC,8DAA8D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAC5D,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EACpB,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAClB,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,8DAA8D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAC5D,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EACpB,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAClB,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,4FAA4F;IAC5F,sFAAsF;IACtF,GAAG,CAAC,IAAI,CACN,kEAAkE,EAClE,QAAQ,CAAC,6BAA6B,CAAC,EACvC,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC;aACnB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,uBAAuB,CACvC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EACpB,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CACzB,CAAA;QACH,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CACF,CAAA;IAED,sFAAsF;IACtF,gEAAgE;IAChE,GAAG,CAAC,IAAI,CACN,sDAAsD,EACtD,QAAQ,CAAC,iCAAiC,CAAC,EAC3C,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC;aACnB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,2BAA2B,CAC3C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EACnB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAA;QACH,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CACF,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"RequirementReviewController.js","sourceRoot":"","sources":["../../../src/modules/requirements/RequirementReviewController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RunnerPoolController.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolController.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAe/C;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqDnD"}
1
+ {"version":3,"file":"RunnerPoolController.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAc/C;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAsDnD"}
@@ -1,7 +1,7 @@
1
- import { registerRunnerPoolSchema, testRunnerPoolConnectionSchema, updateRunnerPoolSecretsSchema, } from '@cat-factory/contracts';
1
+ import { describeRunnerPoolProviderContract, getRunnerPoolConnectionContract, registerRunnerPoolContract, testRunnerPoolConnectionContract, unregisterRunnerPoolContract, updateRunnerPoolSecretsContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /** Resolve the runners module or send a 503, returning null when unconfigured. */
6
6
  function requireRunners(c) {
7
7
  return c.get('container').runners ?? null;
@@ -15,14 +15,14 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Runn
15
15
  */
16
16
  export function runnerPoolController() {
17
17
  const app = new Hono();
18
- app.get('/runner-pool/connection', async (c) => {
18
+ buildHonoRoute(app, getRunnerPoolConnectionContract, async (c) => {
19
19
  const runners = requireRunners(c);
20
20
  if (!runners)
21
21
  return unavailable(c);
22
22
  const connection = await runners.connectionService.getConnection(param(c, 'workspaceId'));
23
- return c.json({ connection });
23
+ return c.json({ connection }, 200);
24
24
  });
25
- app.post('/runner-pool/connection', jsonBody(registerRunnerPoolSchema), async (c) => {
25
+ buildHonoRoute(app, registerRunnerPoolContract, async (c) => {
26
26
  const runners = requireRunners(c);
27
27
  if (!runners)
28
28
  return unavailable(c);
@@ -33,31 +33,31 @@ export function runnerPoolController() {
33
33
  });
34
34
  return c.json(connection, 201);
35
35
  });
36
- app.put('/runner-pool/connection/secrets', jsonBody(updateRunnerPoolSecretsSchema), async (c) => {
36
+ buildHonoRoute(app, updateRunnerPoolSecretsContract, async (c) => {
37
37
  const runners = requireRunners(c);
38
38
  if (!runners)
39
39
  return unavailable(c);
40
40
  const connection = await runners.connectionService.updateSecrets(param(c, 'workspaceId'), c.req.valid('json').secrets);
41
- return c.json(connection);
41
+ return c.json(connection, 200);
42
42
  });
43
- app.delete('/runner-pool/connection', async (c) => {
43
+ buildHonoRoute(app, unregisterRunnerPoolContract, async (c) => {
44
44
  const runners = requireRunners(c);
45
45
  if (!runners)
46
46
  return unavailable(c);
47
47
  await runners.connectionService.unregister(param(c, 'workspaceId'));
48
48
  return c.body(null, 204);
49
49
  });
50
- app.get('/runner-pool/provider', async (c) => {
50
+ buildHonoRoute(app, describeRunnerPoolProviderContract, async (c) => {
51
51
  const runners = requireRunners(c);
52
52
  if (!runners)
53
53
  return unavailable(c);
54
- return c.json(await runners.connectionService.describeProvider(param(c, 'workspaceId')));
54
+ return c.json(await runners.connectionService.describeProvider(param(c, 'workspaceId')), 200);
55
55
  });
56
- app.post('/runner-pool/connection/test', jsonBody(testRunnerPoolConnectionSchema), async (c) => {
56
+ buildHonoRoute(app, testRunnerPoolConnectionContract, async (c) => {
57
57
  const runners = requireRunners(c);
58
58
  if (!runners)
59
59
  return unavailable(c);
60
- return c.json(await runners.connectionService.testConnection(param(c, 'workspaceId'), c.req.valid('json')));
60
+ return c.json(await runners.connectionService.testConnection(param(c, 'workspaceId'), c.req.valid('json')), 200);
61
61
  });
62
62
  return app;
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RunnerPoolController.js","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunnerPoolController.js","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SandboxController.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,CA6GhD"}
1
+ {"version":3,"file":"SandboxController.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,CA8HhD"}