@cat-factory/server 0.31.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 (154) hide show
  1. package/dist/config/types.d.ts +1 -15
  2. package/dist/config/types.d.ts.map +1 -1
  3. package/dist/http/errorHandler.d.ts.map +1 -1
  4. package/dist/http/errorHandler.js +20 -0
  5. package/dist/http/errorHandler.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +0 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/modules/accounts/AccountController.d.ts +4 -0
  11. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  12. package/dist/modules/accounts/AccountController.js +78 -58
  13. package/dist/modules/accounts/AccountController.js.map +1 -1
  14. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  15. package/dist/modules/agentRuns/AgentRunController.js +8 -6
  16. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  17. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  18. package/dist/modules/auth/AuthController.js +23 -23
  19. package/dist/modules/auth/AuthController.js.map +1 -1
  20. package/dist/modules/board/BoardController.d.ts.map +1 -1
  21. package/dist/modules/board/BoardController.js +26 -26
  22. package/dist/modules/board/BoardController.js.map +1 -1
  23. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  24. package/dist/modules/bootstrap/BootstrapController.js +15 -15
  25. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  26. package/dist/modules/brainstorm/BrainstormController.d.ts +3 -2
  27. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  28. package/dist/modules/brainstorm/BrainstormController.js +36 -52
  29. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  30. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  31. package/dist/modules/clarity/ClarityReviewController.js +27 -25
  32. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  33. package/dist/modules/consensus/ConsensusController.d.ts.map +1 -1
  34. package/dist/modules/consensus/ConsensusController.js +6 -4
  35. package/dist/modules/consensus/ConsensusController.js.map +1 -1
  36. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  37. package/dist/modules/documents/DocumentSourceController.js +17 -17
  38. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  39. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  40. package/dist/modules/environments/EnvironmentController.js +24 -24
  41. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  42. package/dist/modules/execution/ExecutionController.d.ts.map +1 -1
  43. package/dist/modules/execution/ExecutionController.js +57 -45
  44. package/dist/modules/execution/ExecutionController.js.map +1 -1
  45. package/dist/modules/followUp/FollowUpController.d.ts.map +1 -1
  46. package/dist/modules/followUp/FollowUpController.js +21 -17
  47. package/dist/modules/followUp/FollowUpController.js.map +1 -1
  48. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  49. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +26 -26
  50. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  51. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  52. package/dist/modules/github/GitHubController.js +44 -44
  53. package/dist/modules/github/GitHubController.js.map +1 -1
  54. package/dist/modules/humanReview/HumanReviewController.d.ts.map +1 -1
  55. package/dist/modules/humanReview/HumanReviewController.js +5 -5
  56. package/dist/modules/humanReview/HumanReviewController.js.map +1 -1
  57. package/dist/modules/humanTest/HumanTestController.d.ts.map +1 -1
  58. package/dist/modules/humanTest/HumanTestController.js +17 -17
  59. package/dist/modules/humanTest/HumanTestController.js.map +1 -1
  60. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  61. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -7
  62. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  63. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  64. package/dist/modules/kaizen/KaizenController.js +7 -5
  65. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  66. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  67. package/dist/modules/localModels/LocalModelEndpointController.js +10 -11
  68. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  69. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  70. package/dist/modules/localSettings/LocalSettingsController.js +6 -6
  71. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  72. package/dist/modules/merge/MergePresetController.d.ts.map +1 -1
  73. package/dist/modules/merge/MergePresetController.js +10 -10
  74. package/dist/modules/merge/MergePresetController.js.map +1 -1
  75. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  76. package/dist/modules/modelPresets/ModelPresetController.js +10 -10
  77. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  78. package/dist/modules/models/ModelController.d.ts.map +1 -1
  79. package/dist/modules/models/ModelController.js +6 -4
  80. package/dist/modules/models/ModelController.js.map +1 -1
  81. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  82. package/dist/modules/notifications/NotificationController.js +11 -9
  83. package/dist/modules/notifications/NotificationController.js.map +1 -1
  84. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  85. package/dist/modules/openrouter/OpenRouterCatalogController.js +9 -10
  86. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  87. package/dist/modules/pipelines/PipelineController.d.ts.map +1 -1
  88. package/dist/modules/pipelines/PipelineController.js +17 -15
  89. package/dist/modules/pipelines/PipelineController.js.map +1 -1
  90. package/dist/modules/promptFragments/PromptFragmentController.d.ts.map +1 -1
  91. package/dist/modules/promptFragments/PromptFragmentController.js +4 -2
  92. package/dist/modules/promptFragments/PromptFragmentController.js.map +1 -1
  93. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  94. package/dist/modules/providers/ApiKeyController.js +12 -12
  95. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  96. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  97. package/dist/modules/providers/PersonalSubscriptionController.js +7 -8
  98. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  99. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  100. package/dist/modules/providers/UserSecretController.js +14 -15
  101. package/dist/modules/providers/UserSecretController.js.map +1 -1
  102. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  103. package/dist/modules/providers/VendorCredentialController.js +7 -7
  104. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  105. package/dist/modules/providers/personalCredentialGate.d.ts +2 -2
  106. package/dist/modules/providers/personalCredentialGate.d.ts.map +1 -1
  107. package/dist/modules/providers/personalCredentialGate.js.map +1 -1
  108. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  109. package/dist/modules/provisioningLogs/ProvisioningLogController.js +4 -3
  110. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  111. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  112. package/dist/modules/recurring/RecurringPipelineController.js +15 -15
  113. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  114. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  115. package/dist/modules/recurring/TrackerSettingsController.js +6 -6
  116. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  117. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  118. package/dist/modules/releaseHealth/ReleaseHealthController.js +14 -14
  119. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  120. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  121. package/dist/modules/requirements/RequirementReviewController.js +43 -38
  122. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  123. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  124. package/dist/modules/runners/RunnerPoolController.js +12 -12
  125. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  126. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  127. package/dist/modules/sandbox/SandboxController.js +35 -26
  128. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  129. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  130. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -6
  131. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  132. package/dist/modules/serviceSpec/ServiceSpecController.d.ts.map +1 -1
  133. package/dist/modules/serviceSpec/ServiceSpecController.js +9 -8
  134. package/dist/modules/serviceSpec/ServiceSpecController.js.map +1 -1
  135. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  136. package/dist/modules/services/ServiceMountController.js +14 -14
  137. package/dist/modules/services/ServiceMountController.js.map +1 -1
  138. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  139. package/dist/modules/settings/WorkspaceSettingsController.js +6 -6
  140. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  141. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  142. package/dist/modules/slack/SlackController.js +18 -18
  143. package/dist/modules/slack/SlackController.js.map +1 -1
  144. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  145. package/dist/modules/tasks/TaskSourceController.js +19 -19
  146. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  147. package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
  148. package/dist/modules/workspaces/WorkspaceController.js +11 -11
  149. package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
  150. package/package.json +11 -9
  151. package/dist/http/validation.d.ts +0 -21
  152. package/dist/http/validation.d.ts.map +0 -1
  153. package/dist/http/validation.js +0 -21
  154. package/dist/http/validation.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineController.d.ts","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,CAkDjD"}
1
+ {"version":3,"file":"PipelineController.d.ts","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,CA4DjD"}
@@ -1,44 +1,46 @@
1
- import { clonePipelineSchema, createPipelineSchema, organizePipelineSchema, updatePipelineSchema, } from '@cat-factory/contracts';
1
+ import { clonePipelineContract, createPipelineContract, deletePipelineContract, listPipelinesContract, organizePipelineContract, updatePipelineContract, } 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
  /** Pipeline palette CRUD. Mounted under `/workspaces/:workspaceId`. */
6
6
  export function pipelineController() {
7
7
  const app = new Hono();
8
- app.get('/pipelines', async (c) => {
9
- return c.json(await c.get('container').pipelineService.list(param(c, 'workspaceId')));
8
+ buildHonoRoute(app, listPipelinesContract, async (c) => {
9
+ return c.json(await c.get('container').pipelineService.list(param(c, 'workspaceId')), 200);
10
10
  });
11
- app.post('/pipelines', jsonBody(createPipelineSchema), async (c) => {
11
+ buildHonoRoute(app, createPipelineContract, async (c) => {
12
12
  const pipeline = await c
13
13
  .get('container')
14
14
  .pipelineService.create(param(c, 'workspaceId'), c.req.valid('json'));
15
15
  return c.json(pipeline, 201);
16
16
  });
17
17
  // Clone any pipeline (built-in or custom) into a new, editable copy.
18
- app.post('/pipelines/:pipelineId/clone', jsonBody(clonePipelineSchema), async (c) => {
18
+ buildHonoRoute(app, clonePipelineContract, async (c) => {
19
19
  const pipeline = await c
20
20
  .get('container')
21
- .pipelineService.clone(param(c, 'workspaceId'), param(c, 'pipelineId'), c.req.valid('json'));
21
+ .pipelineService.clone(param(c, 'workspaceId'), c.req.valid('param').pipelineId, c.req.valid('json'));
22
22
  return c.json(pipeline, 201);
23
23
  });
24
24
  // Edit a custom pipeline in place. Built-in pipelines reject this (clone first).
25
- app.patch('/pipelines/:pipelineId', jsonBody(updatePipelineSchema), async (c) => {
25
+ buildHonoRoute(app, updatePipelineContract, async (c) => {
26
26
  const pipeline = await c
27
27
  .get('container')
28
- .pipelineService.update(param(c, 'workspaceId'), param(c, 'pipelineId'), c.req.valid('json'));
29
- return c.json(pipeline);
28
+ .pipelineService.update(param(c, 'workspaceId'), c.req.valid('param').pipelineId, c.req.valid('json'));
29
+ return c.json(pipeline, 200);
30
30
  });
31
31
  // Organize a pipeline in the library: set labels / archive state. The only mutation
32
32
  // allowed on a built-in pipeline (view metadata, not structure), so built-ins reject
33
33
  // `update`/`delete` but accept this.
34
- app.patch('/pipelines/:pipelineId/organize', jsonBody(organizePipelineSchema), async (c) => {
34
+ buildHonoRoute(app, organizePipelineContract, async (c) => {
35
35
  const pipeline = await c
36
36
  .get('container')
37
- .pipelineService.organize(param(c, 'workspaceId'), param(c, 'pipelineId'), c.req.valid('json'));
38
- return c.json(pipeline);
37
+ .pipelineService.organize(param(c, 'workspaceId'), c.req.valid('param').pipelineId, c.req.valid('json'));
38
+ return c.json(pipeline, 200);
39
39
  });
40
- app.delete('/pipelines/:pipelineId', async (c) => {
41
- await c.get('container').pipelineService.remove(param(c, 'workspaceId'), param(c, 'pipelineId'));
40
+ buildHonoRoute(app, deletePipelineContract, async (c) => {
41
+ await c
42
+ .get('container')
43
+ .pipelineService.remove(param(c, 'workspaceId'), c.req.valid('param').pipelineId);
42
44
  return c.body(null, 204);
43
45
  });
44
46
  return app;
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineController.js","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineController.js","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PromptFragmentController.d.ts","sourceRoot":"","sources":["../../../src/modules/promptFragments/PromptFragmentController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,CASvD"}
1
+ {"version":3,"file":"PromptFragmentController.d.ts","sourceRoot":"","sources":["../../../src/modules/promptFragments/PromptFragmentController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,CASvD"}
@@ -1,4 +1,6 @@
1
+ import { listFragmentCatalogContract } from '@cat-factory/contracts';
1
2
  import { universalFragments } from '@cat-factory/prompt-fragments';
3
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
4
  import { Hono } from 'hono';
3
5
  /**
4
6
  * Serves the universal best-practice prompt fragment pool read-only — the
@@ -9,9 +11,9 @@ import { Hono } from 'hono';
9
11
  */
10
12
  export function promptFragmentController() {
11
13
  const app = new Hono();
12
- app.get('/prompt-fragments', (c) => {
14
+ buildHonoRoute(app, listFragmentCatalogContract, (c) => {
13
15
  c.header('Cache-Control', 'public, max-age=3600');
14
- return c.json(universalFragments());
16
+ return c.json(universalFragments(), 200);
15
17
  });
16
18
  return app;
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PromptFragmentController.js","sourceRoot":"","sources":["../../../src/modules/promptFragments/PromptFragmentController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;QACjC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAA;QACjD,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"PromptFragmentController.js","sourceRoot":"","sources":["../../../src/modules/promptFragments/PromptFragmentController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,CAAC,CAAC,EAAE,EAAE;QACrD,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAA;QACjD,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKeyController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAkB/C,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAa3D;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAyBxD;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CA+BnD;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,oGAI5D"}
1
+ {"version":3,"file":"ApiKeyController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,MAAM,EACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAG9D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAiB/C,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAa3D;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAyBxD;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CA+BnD;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,oGAI5D"}
@@ -1,8 +1,8 @@
1
- import { addApiKeySchema, apiKeyProviderSchema } from '@cat-factory/contracts';
1
+ import { addUserApiKeyContract, addWorkspaceApiKeyContract, apiKeyProviderSchema, listUserApiKeysContract, listWorkspaceApiKeysContract, removeUserApiKeyContract, removeWorkspaceApiKeyContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import * as v from 'valibot';
3
4
  import { Hono } from 'hono';
4
5
  import { param } from '../../http/params.js';
5
- import { jsonBody } from '../../http/validation.js';
6
6
  // Direct-provider API-key endpoints. Keys (OpenAI/Anthropic/Qwen/DeepSeek/Moonshot)
7
7
  // are onboarded here and stored encrypted, replacing deployment-env onboarding. The
8
8
  // raw key is write-only — only metadata + rolling-window usage is ever returned.
@@ -30,25 +30,25 @@ export function apiKeyToWire(summary) {
30
30
  /** Workspace-scoped API-key routes, mounted under `/workspaces/:workspaceId`. */
31
31
  export function workspaceApiKeyController() {
32
32
  const app = new Hono();
33
- app.get('/api-keys', async (c) => {
33
+ buildHonoRoute(app, listWorkspaceApiKeysContract, async (c) => {
34
34
  const apiKeys = c.get('container').apiKeys;
35
35
  if (!apiKeys)
36
36
  return unavailable(c);
37
37
  const keys = await apiKeys.listKeys('workspace', param(c, 'workspaceId'));
38
- return c.json({ keys: keys.map(apiKeyToWire) });
38
+ return c.json({ keys: keys.map(apiKeyToWire) }, 200);
39
39
  });
40
- app.post('/api-keys', jsonBody(addApiKeySchema), async (c) => {
40
+ buildHonoRoute(app, addWorkspaceApiKeyContract, async (c) => {
41
41
  const apiKeys = c.get('container').apiKeys;
42
42
  if (!apiKeys)
43
43
  return unavailable(c);
44
44
  const summary = await apiKeys.addKey('workspace', param(c, 'workspaceId'), c.req.valid('json'));
45
45
  return c.json(apiKeyToWire(summary), 201);
46
46
  });
47
- app.delete('/api-keys/:id', async (c) => {
47
+ buildHonoRoute(app, removeWorkspaceApiKeyContract, async (c) => {
48
48
  const apiKeys = c.get('container').apiKeys;
49
49
  if (!apiKeys)
50
50
  return unavailable(c);
51
- await apiKeys.removeKey('workspace', param(c, 'workspaceId'), param(c, 'id'));
51
+ await apiKeys.removeKey('workspace', param(c, 'workspaceId'), c.req.valid('param').id);
52
52
  return c.body(null, 204);
53
53
  });
54
54
  return app;
@@ -56,7 +56,7 @@ export function workspaceApiKeyController() {
56
56
  /** User-scoped API-key routes (the caller's own pool), mounted at the root. */
57
57
  export function userApiKeyController() {
58
58
  const app = new Hono();
59
- app.get('/me/api-keys', async (c) => {
59
+ buildHonoRoute(app, listUserApiKeysContract, async (c) => {
60
60
  const apiKeys = c.get('container').apiKeys;
61
61
  if (!apiKeys)
62
62
  return unavailable(c);
@@ -64,9 +64,9 @@ export function userApiKeyController() {
64
64
  if (!user)
65
65
  return signInRequired(c);
66
66
  const keys = await apiKeys.listKeys('user', user.id);
67
- return c.json({ keys: keys.map(apiKeyToWire) });
67
+ return c.json({ keys: keys.map(apiKeyToWire) }, 200);
68
68
  });
69
- app.post('/me/api-keys', jsonBody(addApiKeySchema), async (c) => {
69
+ buildHonoRoute(app, addUserApiKeyContract, async (c) => {
70
70
  const apiKeys = c.get('container').apiKeys;
71
71
  if (!apiKeys)
72
72
  return unavailable(c);
@@ -76,14 +76,14 @@ export function userApiKeyController() {
76
76
  const summary = await apiKeys.addKey('user', user.id, c.req.valid('json'));
77
77
  return c.json(apiKeyToWire(summary), 201);
78
78
  });
79
- app.delete('/me/api-keys/:id', async (c) => {
79
+ buildHonoRoute(app, removeUserApiKeyContract, async (c) => {
80
80
  const apiKeys = c.get('container').apiKeys;
81
81
  if (!apiKeys)
82
82
  return unavailable(c);
83
83
  const user = c.get('user');
84
84
  if (!user)
85
85
  return signInRequired(c);
86
- await apiKeys.removeKey('user', user.id, param(c, 'id'));
86
+ await apiKeys.removeKey('user', user.id, c.req.valid('param').id);
87
87
  return c.body(null, 204);
88
88
  });
89
89
  return app;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKeyController.js","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiKeyController.js","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,GAE9B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,oFAAoF;AACpF,oFAAoF;AACpF,iFAAiF;AACjF,EAAE;AACF,wFAAwF;AACxF,qFAAqF;AACrF,qEAAqE;AAErE,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,mCAAmC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAE/F,MAAM,cAAc,GAAG,CAAmB,CAAa,EAAE,EAAE,CACzD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAE9F,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;QACzE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/F,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;QACtF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1E,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;QACjE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;IACvD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PersonalSubscriptionController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAuB/C,wBAAgB,8BAA8B,IAAI,IAAI,CAAC,MAAM,CAAC,CA+B7D"}
1
+ {"version":3,"file":"PersonalSubscriptionController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB/C,wBAAgB,8BAA8B,IAAI,IAAI,CAAC,MAAM,CAAC,CA+B7D"}
@@ -1,8 +1,7 @@
1
- import { storePersonalSubscriptionSchema, subscriptionVendorSchema } from '@cat-factory/contracts';
1
+ import { listPersonalSubscriptionsContract, removePersonalSubscriptionContract, storePersonalSubscriptionContract, subscriptionVendorSchema, } from '@cat-factory/contracts';
2
2
  import * as v from 'valibot';
3
+ import { buildHonoRoute } from '@toad-contracts/hono';
3
4
  import { Hono } from 'hono';
4
- import { param } from '../../http/params.js';
5
- import { jsonBody } from '../../http/validation.js';
6
5
  // Per-USER individual-usage subscription endpoints (Claude). Unlike the workspace
7
6
  // vendor-credential pool, these are scoped to the signed-in user: a personal
8
7
  // subscription is licensed for that individual only, stored DOUBLE-encrypted (a
@@ -13,16 +12,16 @@ const signInRequired = (c) => c.json({ error: { code: 'unauthorized', message: '
13
12
  const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Personal subscription storage is not configured' } }, 503);
14
13
  export function personalSubscriptionController() {
15
14
  const app = new Hono();
16
- app.get('/personal-subscriptions', async (c) => {
15
+ buildHonoRoute(app, listPersonalSubscriptionsContract, async (c) => {
17
16
  const personal = c.get('container').personalSubscriptions;
18
17
  if (!personal)
19
18
  return unavailable(c);
20
19
  const user = c.get('user');
21
20
  if (!user)
22
21
  return signInRequired(c);
23
- return c.json({ subscriptions: await personal.list(user.id) });
22
+ return c.json({ subscriptions: await personal.list(user.id) }, 200);
24
23
  });
25
- app.post('/personal-subscriptions', jsonBody(storePersonalSubscriptionSchema), async (c) => {
24
+ buildHonoRoute(app, storePersonalSubscriptionContract, async (c) => {
26
25
  const personal = c.get('container').personalSubscriptions;
27
26
  if (!personal)
28
27
  return unavailable(c);
@@ -32,14 +31,14 @@ export function personalSubscriptionController() {
32
31
  const status = await personal.store(user.id, c.req.valid('json'));
33
32
  return c.json(status, 201);
34
33
  });
35
- app.delete('/personal-subscriptions/:vendor', async (c) => {
34
+ buildHonoRoute(app, removePersonalSubscriptionContract, async (c) => {
36
35
  const personal = c.get('container').personalSubscriptions;
37
36
  if (!personal)
38
37
  return unavailable(c);
39
38
  const user = c.get('user');
40
39
  if (!user)
41
40
  return signInRequired(c);
42
- const vendor = v.parse(subscriptionVendorSchema, param(c, 'vendor'));
41
+ const vendor = v.parse(subscriptionVendorSchema, c.req.valid('param').vendor);
43
42
  await personal.remove(user.id, vendor);
44
43
  return c.body(null, 204);
45
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PersonalSubscriptionController.js","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PersonalSubscriptionController.js","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserSecretController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAe/C,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqDnD"}
1
+ {"version":3,"file":"UserSecretController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAa/C,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqDnD"}
@@ -1,8 +1,7 @@
1
- import { storeUserSecretSchema, testUserSecretSchema, userSecretKindSchema, } from '@cat-factory/contracts';
1
+ import { getUserSecretDescriptorContract, listUserSecretsContract, removeUserSecretContract, storeUserSecretContract, testUserSecretContract, userSecretKindSchema, } from '@cat-factory/contracts';
2
2
  import * as v from 'valibot';
3
+ import { buildHonoRoute } from '@toad-contracts/hono';
3
4
  import { Hono } from 'hono';
4
- import { param } from '../../http/params.js';
5
- import { jsonBody } from '../../http/validation.js';
6
5
  // Per-USER generic secrets (a GitHub PAT today; future repository/provider tokens as
7
6
  // new kinds). Scoped to the signed-in user — mounted at the root (not under a
8
7
  // workspace) and require a signed-in user, like personal subscriptions / local model
@@ -11,59 +10,59 @@ const signInRequired = (c) => c.json({ error: { code: 'unauthorized', message: '
11
10
  const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'User secret storage is not configured' } }, 503);
12
11
  export function userSecretController() {
13
12
  const app = new Hono();
14
- app.get('/user-secrets', async (c) => {
13
+ buildHonoRoute(app, listUserSecretsContract, async (c) => {
15
14
  const store = c.get('container').userSecrets;
16
15
  if (!store)
17
16
  return unavailable(c);
18
17
  const user = c.get('user');
19
18
  if (!user)
20
19
  return signInRequired(c);
21
- return c.json({ secrets: await store.list(user.id), descriptors: store.describeAll() });
20
+ return c.json({ secrets: await store.list(user.id), descriptors: store.describeAll() }, 200);
22
21
  });
23
- app.get('/user-secrets/:kind/descriptor', async (c) => {
22
+ buildHonoRoute(app, getUserSecretDescriptorContract, async (c) => {
24
23
  const store = c.get('container').userSecrets;
25
24
  if (!store)
26
25
  return unavailable(c);
27
26
  const user = c.get('user');
28
27
  if (!user)
29
28
  return signInRequired(c);
30
- const kind = v.parse(userSecretKindSchema, param(c, 'kind'));
29
+ const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
31
30
  const descriptor = store.describe(kind);
32
31
  if (!descriptor)
33
32
  return c.json({ error: { code: 'not_found', message: 'Unknown secret kind' } }, 404);
34
- return c.json(descriptor);
33
+ return c.json(descriptor, 200);
35
34
  });
36
- app.post('/user-secrets/:kind', jsonBody(storeUserSecretSchema), async (c) => {
35
+ buildHonoRoute(app, storeUserSecretContract, async (c) => {
37
36
  const store = c.get('container').userSecrets;
38
37
  if (!store)
39
38
  return unavailable(c);
40
39
  const user = c.get('user');
41
40
  if (!user)
42
41
  return signInRequired(c);
43
- const kind = v.parse(userSecretKindSchema, param(c, 'kind'));
42
+ const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
44
43
  return c.json(await store.store(user.id, kind, c.req.valid('json')), 201);
45
44
  });
46
- app.delete('/user-secrets/:kind', async (c) => {
45
+ buildHonoRoute(app, removeUserSecretContract, async (c) => {
47
46
  const store = c.get('container').userSecrets;
48
47
  if (!store)
49
48
  return unavailable(c);
50
49
  const user = c.get('user');
51
50
  if (!user)
52
51
  return signInRequired(c);
53
- const kind = v.parse(userSecretKindSchema, param(c, 'kind'));
52
+ const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
54
53
  await store.remove(user.id, kind);
55
54
  return c.body(null, 204);
56
55
  });
57
56
  // Probe a (not-yet-saved) secret server-side so the UI can validate before save.
58
- app.post('/user-secrets/:kind/test', jsonBody(testUserSecretSchema), async (c) => {
57
+ buildHonoRoute(app, testUserSecretContract, async (c) => {
59
58
  const store = c.get('container').userSecrets;
60
59
  if (!store)
61
60
  return unavailable(c);
62
61
  const user = c.get('user');
63
62
  if (!user)
64
63
  return signInRequired(c);
65
- const kind = v.parse(userSecretKindSchema, param(c, 'kind'));
66
- return c.json(await store.testConnection(kind, c.req.valid('json')));
64
+ const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
65
+ return c.json(await store.testConnection(kind, c.req.valid('json')), 200);
67
66
  });
68
67
  return app;
69
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserSecretController.js","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserSecretController.js","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VendorCredentialController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/VendorCredentialController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAmC/C,wBAAgB,0BAA0B,IAAI,IAAI,CAAC,MAAM,CAAC,CA0BzD"}
1
+ {"version":3,"file":"VendorCredentialController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/VendorCredentialController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAkC/C,wBAAgB,0BAA0B,IAAI,IAAI,CAAC,MAAM,CAAC,CA0BzD"}
@@ -1,7 +1,7 @@
1
- import { addVendorCredentialSchema } from '@cat-factory/contracts';
1
+ import { addVendorCredentialContract, listVendorCredentialsContract, removeVendorCredentialContract, } 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
  // Workspace-scoped vendor-credential (subscription token pool) endpoints. A user
6
6
  // connects one or more Claude Pro/Max OAuth tokens or ChatGPT auth.json bundles;
7
7
  // the Claude Code / Codex harnesses lease them with usage-aware rotation. Tokens
@@ -28,14 +28,14 @@ function toWire(summary) {
28
28
  }
29
29
  export function vendorCredentialController() {
30
30
  const app = new Hono();
31
- app.get('/vendor-credentials', async (c) => {
31
+ buildHonoRoute(app, listVendorCredentialsContract, async (c) => {
32
32
  const subscriptions = c.get('container').subscriptions;
33
33
  if (!subscriptions)
34
34
  return unavailable(c);
35
35
  const tokens = await subscriptions.listTokens(param(c, 'workspaceId'));
36
- return c.json({ credentials: tokens.map(toWire) });
36
+ return c.json({ credentials: tokens.map(toWire) }, 200);
37
37
  });
38
- app.post('/vendor-credentials', jsonBody(addVendorCredentialSchema), async (c) => {
38
+ buildHonoRoute(app, addVendorCredentialContract, async (c) => {
39
39
  const subscriptions = c.get('container').subscriptions;
40
40
  if (!subscriptions)
41
41
  return unavailable(c);
@@ -43,11 +43,11 @@ export function vendorCredentialController() {
43
43
  const summary = await subscriptions.addToken(param(c, 'workspaceId'), input);
44
44
  return c.json(toWire(summary), 201);
45
45
  });
46
- app.delete('/vendor-credentials/:id', async (c) => {
46
+ buildHonoRoute(app, removeVendorCredentialContract, async (c) => {
47
47
  const subscriptions = c.get('container').subscriptions;
48
48
  if (!subscriptions)
49
49
  return unavailable(c);
50
- await subscriptions.removeToken(param(c, 'workspaceId'), param(c, 'id'));
50
+ await subscriptions.removeToken(param(c, 'workspaceId'), c.req.valid('param').id);
51
51
  return c.body(null, 204);
52
52
  });
53
53
  return app;
@@ -1 +1 @@
1
- {"version":3,"file":"VendorCredentialController.js","sourceRoot":"","sources":["../../../src/modules/providers/VendorCredentialController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VendorCredentialController.js","sourceRoot":"","sources":["../../../src/modules/providers/VendorCredentialController.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { SessionPayload } from '../../auth/signing.js';
6
6
  * `PERSONAL_PASSWORD_HEADER`). The client attaches it on the gated run calls the way it
7
7
  * attaches the bearer token, so it never lives in a request body. Absent ⇒ undefined.
8
8
  */
9
- export declare function readPersonalPassword(c: Context<AppEnv>): string | undefined;
9
+ export declare function readPersonalPassword<E extends AppEnv>(c: Context<E>): string | undefined;
10
10
  /**
11
11
  * Best-effort, transparent re-mint of a run's individual-usage activation(s) when a user
12
12
  * interacts with it (resolve decision / approve / request changes). Runs BEFORE the engine
@@ -16,7 +16,7 @@ export declare function readPersonalPassword(c: Context<AppEnv>): string | undef
16
16
  * (the next dispatch then 428s and the client re-prompts on retry). Never throws, and skips
17
17
  * entirely for non-individual runs (no password work on the common path).
18
18
  */
19
- export declare function remintActivations(c: Context<AppEnv>, workspaceId: string, executionId: string): Promise<void>;
19
+ export declare function remintActivations<E extends AppEnv>(c: Context<E>, workspaceId: string, executionId: string): Promise<void>;
20
20
  export interface PersonalCredentialGate {
21
21
  /** Recorded on the run (individual-usage credential ownership). */
22
22
  initiatedBy: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"personalCredentialGate.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/personalCredentialGate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAE3E;AAmBD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAyBf;AASD,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD;AA6DD,gEAAgE;AAChE,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAiBjC;AAED,sCAAsC;AACtC,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAcjC"}
1
+ {"version":3,"file":"personalCredentialGate.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/personalCredentialGate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAExF;AAmBD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EACtD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAyBf;AASD,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD;AA6DD,gEAAgE;AAChE,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAiBjC;AAED,sCAAsC;AACtC,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAcjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"personalCredentialGate.js","sourceRoot":"","sources":["../../../src/modules/providers/personalCredentialGate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personalCredentialGate.js","sourceRoot":"","sources":["../../../src/modules/providers/personalCredentialGate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProvisioningLogController.d.ts","sourceRoot":"","sources":["../../../src/modules/provisioningLogs/ProvisioningLogController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB/C;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAexD"}
1
+ {"version":3,"file":"ProvisioningLogController.d.ts","sourceRoot":"","sources":["../../../src/modules/provisioningLogs/ProvisioningLogController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB/C;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAexD"}
@@ -1,5 +1,6 @@
1
- import { provisioningLogQuerySchema } from '@cat-factory/contracts';
1
+ import { listProvisioningLogsContract, provisioningLogQuerySchema } from '@cat-factory/contracts';
2
2
  import * as v from 'valibot';
3
+ import { buildHonoRoute } from '@toad-contracts/hono';
3
4
  import { Hono } from 'hono';
4
5
  import { param } from '../../http/params.js';
5
6
  /** Resolve the provisioning-log module or send a 503, returning null when unconfigured. */
@@ -25,7 +26,7 @@ function presentQuery(c) {
25
26
  */
26
27
  export function provisioningLogController() {
27
28
  const app = new Hono();
28
- app.get('/provisioning-logs', async (c) => {
29
+ buildHonoRoute(app, listProvisioningLogsContract, async (c) => {
29
30
  const logs = requireProvisioningLogs(c);
30
31
  if (!logs)
31
32
  return unavailable(c);
@@ -34,7 +35,7 @@ export function provisioningLogController() {
34
35
  return c.json({ error: { code: 'invalid_query', message: 'Invalid query parameters' } }, 400);
35
36
  }
36
37
  const entries = await logs.service.list(param(c, 'workspaceId'), parsed.output);
37
- return c.json({ entries });
38
+ return c.json({ entries }, 200);
38
39
  });
39
40
  return app;
40
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProvisioningLogController.js","sourceRoot":"","sources":["../../../src/modules/provisioningLogs/ProvisioningLogController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,2FAA2F;AAC3F,SAAS,uBAAuB,CAAC,CAAkB;IACjD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAA;AACpD,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,CAAkB,EAAE,EAAE,CACzC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,oCAAoC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAEhG,kFAAkF;AAClF,SAAS,YAAY,CAAC,CAAkB;IACtC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAC3D,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAC/F,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"ProvisioningLogController.js","sourceRoot":"","sources":["../../../src/modules/provisioningLogs/ProvisioningLogController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AACjG,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,2FAA2F;AAC3F,SAAS,uBAAuB,CAAmB,CAAa;IAC9D,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAA;AACpD,CAAC;AAED,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,oCAAoC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAEhG,kFAAkF;AAClF,SAAS,YAAY,CAAmB,CAAa;IACnD,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAC3D,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAC/F,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecurringPipelineController.d.ts","sourceRoot":"","sources":["../../../src/modules/recurring/RecurringPipelineController.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,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAgD1D"}
1
+ {"version":3,"file":"RecurringPipelineController.d.ts","sourceRoot":"","sources":["../../../src/modules/recurring/RecurringPipelineController.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAsD1D"}