@cat-factory/server 0.170.1 → 0.172.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 (222) hide show
  1. package/dist/agents/ContainerAgentExecutor.d.ts +0 -8
  2. package/dist/agents/ContainerAgentExecutor.d.ts.map +1 -1
  3. package/dist/agents/ContainerAgentExecutor.js +51 -129
  4. package/dist/agents/ContainerAgentExecutor.js.map +1 -1
  5. package/dist/agents/ContainerEnvConfigRepairer.d.ts.map +1 -1
  6. package/dist/agents/ContainerEnvConfigRepairer.js +6 -0
  7. package/dist/agents/ContainerEnvConfigRepairer.js.map +1 -1
  8. package/dist/agents/ContainerRepoBootstrapper.d.ts.map +1 -1
  9. package/dist/agents/ContainerRepoBootstrapper.js +8 -0
  10. package/dist/agents/ContainerRepoBootstrapper.js.map +1 -1
  11. package/dist/agents/agentContextRecord.d.ts +31 -0
  12. package/dist/agents/agentContextRecord.d.ts.map +1 -0
  13. package/dist/agents/agentContextRecord.js +113 -0
  14. package/dist/agents/agentContextRecord.js.map +1 -0
  15. package/dist/agents/containerAgentBody.d.ts.map +1 -1
  16. package/dist/agents/containerAgentBody.js +8 -0
  17. package/dist/agents/containerAgentBody.js.map +1 -1
  18. package/dist/agents/containerAgentLogging.d.ts +44 -0
  19. package/dist/agents/containerAgentLogging.d.ts.map +1 -0
  20. package/dist/agents/containerAgentLogging.js +28 -0
  21. package/dist/agents/containerAgentLogging.js.map +1 -0
  22. package/dist/config/misconfiguredApp.d.ts +2 -1
  23. package/dist/config/misconfiguredApp.d.ts.map +1 -1
  24. package/dist/config/misconfiguredApp.js +11 -2
  25. package/dist/config/misconfiguredApp.js.map +1 -1
  26. package/dist/http/cors.d.ts +10 -0
  27. package/dist/http/cors.d.ts.map +1 -1
  28. package/dist/http/cors.js +11 -0
  29. package/dist/http/cors.js.map +1 -1
  30. package/dist/http/env.d.ts +19 -1
  31. package/dist/http/env.d.ts.map +1 -1
  32. package/dist/http/errorHandler.d.ts +10 -2
  33. package/dist/http/errorHandler.d.ts.map +1 -1
  34. package/dist/http/errorHandler.js +28 -12
  35. package/dist/http/errorHandler.js.map +1 -1
  36. package/dist/http/guards.d.ts +46 -0
  37. package/dist/http/guards.d.ts.map +1 -0
  38. package/dist/http/guards.js +57 -0
  39. package/dist/http/guards.js.map +1 -0
  40. package/dist/http/requestLogging.d.ts +32 -0
  41. package/dist/http/requestLogging.d.ts.map +1 -0
  42. package/dist/http/requestLogging.js +117 -0
  43. package/dist/http/requestLogging.js.map +1 -0
  44. package/dist/index.d.ts +3 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/modules/accounts/AccountController.d.ts +0 -10
  49. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  50. package/dist/modules/accounts/AccountController.js +56 -101
  51. package/dist/modules/accounts/AccountController.js.map +1 -1
  52. package/dist/modules/agentRuns/AgentRunController.d.ts +0 -6
  53. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  54. package/dist/modules/agentRuns/AgentRunController.js +19 -16
  55. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  56. package/dist/modules/artifacts/ArtifactController.d.ts.map +1 -1
  57. package/dist/modules/artifacts/ArtifactController.js +4 -15
  58. package/dist/modules/artifacts/ArtifactController.js.map +1 -1
  59. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  60. package/dist/modules/auth/AuthController.js +14 -9
  61. package/dist/modules/auth/AuthController.js.map +1 -1
  62. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  63. package/dist/modules/bootstrap/BootstrapController.js +6 -20
  64. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  65. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  66. package/dist/modules/brainstorm/BrainstormController.js +17 -27
  67. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  68. package/dist/modules/bugHunt/BugHuntController.d.ts.map +1 -1
  69. package/dist/modules/bugHunt/BugHuntController.js +4 -12
  70. package/dist/modules/bugHunt/BugHuntController.js.map +1 -1
  71. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  72. package/dist/modules/clarity/ClarityReviewController.js +18 -27
  73. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  74. package/dist/modules/docInterview/DocInterviewController.d.ts.map +1 -1
  75. package/dist/modules/docInterview/DocInterviewController.js +6 -17
  76. package/dist/modules/docInterview/DocInterviewController.js.map +1 -1
  77. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  78. package/dist/modules/documents/DocumentSourceController.js +4 -32
  79. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  80. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  81. package/dist/modules/environments/EnvironmentController.js +10 -63
  82. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  83. package/dist/modules/environments/EnvironmentUserHandlerController.d.ts.map +1 -1
  84. package/dist/modules/environments/EnvironmentUserHandlerController.js +16 -25
  85. package/dist/modules/environments/EnvironmentUserHandlerController.js.map +1 -1
  86. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  87. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +26 -60
  88. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  89. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  90. package/dist/modules/github/GitHubController.js +14 -48
  91. package/dist/modules/github/GitHubController.js.map +1 -1
  92. package/dist/modules/gitlab/GitLabController.d.ts.map +1 -1
  93. package/dist/modules/gitlab/GitLabController.js +3 -12
  94. package/dist/modules/gitlab/GitLabController.js.map +1 -1
  95. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  96. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +3 -12
  97. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  98. package/dist/modules/initiatives/InitiativeController.d.ts.map +1 -1
  99. package/dist/modules/initiatives/InitiativeController.js +4 -39
  100. package/dist/modules/initiatives/InitiativeController.js.map +1 -1
  101. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  102. package/dist/modules/kaizen/KaizenController.js +3 -10
  103. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  104. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  105. package/dist/modules/localModels/LocalModelEndpointController.js +21 -31
  106. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  107. package/dist/modules/localSettings/LocalSettingsController.d.ts +0 -9
  108. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  109. package/dist/modules/localSettings/LocalSettingsController.js +9 -12
  110. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  111. package/dist/modules/merge/MergeTrackRecordController.d.ts.map +1 -1
  112. package/dist/modules/merge/MergeTrackRecordController.js +3 -10
  113. package/dist/modules/merge/MergeTrackRecordController.js.map +1 -1
  114. package/dist/modules/merge/RiskPolicyController.d.ts.map +1 -1
  115. package/dist/modules/merge/RiskPolicyController.js +3 -16
  116. package/dist/modules/merge/RiskPolicyController.js.map +1 -1
  117. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  118. package/dist/modules/modelPresets/ModelPresetController.js +3 -16
  119. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  120. package/dist/modules/notificationWebhook/NotificationWebhookController.d.ts.map +1 -1
  121. package/dist/modules/notificationWebhook/NotificationWebhookController.js +3 -12
  122. package/dist/modules/notificationWebhook/NotificationWebhookController.js.map +1 -1
  123. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  124. package/dist/modules/notifications/NotificationController.js +3 -12
  125. package/dist/modules/notifications/NotificationController.js.map +1 -1
  126. package/dist/modules/observability/PlatformObservabilityController.d.ts.map +1 -1
  127. package/dist/modules/observability/PlatformObservabilityController.js +7 -11
  128. package/dist/modules/observability/PlatformObservabilityController.js.map +1 -1
  129. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  130. package/dist/modules/openrouter/OpenRouterCatalogController.js +19 -23
  131. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  132. package/dist/modules/packageRegistries/PackageRegistriesController.d.ts.map +1 -1
  133. package/dist/modules/packageRegistries/PackageRegistriesController.js +3 -12
  134. package/dist/modules/packageRegistries/PackageRegistriesController.js.map +1 -1
  135. package/dist/modules/preflight/PreflightController.d.ts.map +1 -1
  136. package/dist/modules/preflight/PreflightController.js +3 -8
  137. package/dist/modules/preflight/PreflightController.js.map +1 -1
  138. package/dist/modules/preview/PreviewController.d.ts.map +1 -1
  139. package/dist/modules/preview/PreviewController.js +4 -14
  140. package/dist/modules/preview/PreviewController.js.map +1 -1
  141. package/dist/modules/providers/ApiKeyController.d.ts +0 -1
  142. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  143. package/dist/modules/providers/ApiKeyController.js +21 -43
  144. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  145. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  146. package/dist/modules/providers/PersonalSubscriptionController.js +15 -25
  147. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  148. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  149. package/dist/modules/providers/UserSecretController.js +23 -37
  150. package/dist/modules/providers/UserSecretController.js.map +1 -1
  151. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  152. package/dist/modules/providers/VendorCredentialController.js +9 -16
  153. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  154. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  155. package/dist/modules/provisioningLogs/ProvisioningLogController.js +3 -8
  156. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  157. package/dist/modules/publicApi/PublicApiKeyController.d.ts +0 -1
  158. package/dist/modules/publicApi/PublicApiKeyController.d.ts.map +1 -1
  159. package/dist/modules/publicApi/PublicApiKeyController.js +8 -13
  160. package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -1
  161. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  162. package/dist/modules/recurring/RecurringPipelineController.js +3 -18
  163. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  164. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  165. package/dist/modules/recurring/TrackerSettingsController.js +3 -10
  166. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  167. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  168. package/dist/modules/releaseHealth/ReleaseHealthController.js +3 -18
  169. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  170. package/dist/modules/reports/ReportsController.d.ts.map +1 -1
  171. package/dist/modules/reports/ReportsController.js +7 -11
  172. package/dist/modules/reports/ReportsController.js.map +1 -1
  173. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  174. package/dist/modules/requirements/RequirementReviewController.js +18 -36
  175. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  176. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  177. package/dist/modules/runners/RunnerPoolController.js +3 -18
  178. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  179. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  180. package/dist/modules/sandbox/SandboxController.js +3 -32
  181. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  182. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  183. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +3 -10
  184. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  185. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  186. package/dist/modules/services/ServiceMountController.js +3 -16
  187. package/dist/modules/services/ServiceMountController.js.map +1 -1
  188. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  189. package/dist/modules/settings/WorkspaceSettingsController.js +3 -10
  190. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  191. package/dist/modules/sharedStack/SharedStackController.d.ts.map +1 -1
  192. package/dist/modules/sharedStack/SharedStackController.js +3 -20
  193. package/dist/modules/sharedStack/SharedStackController.js.map +1 -1
  194. package/dist/modules/skillLibrary/SkillLibraryController.d.ts.map +1 -1
  195. package/dist/modules/skillLibrary/SkillLibraryController.js +21 -44
  196. package/dist/modules/skillLibrary/SkillLibraryController.js.map +1 -1
  197. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  198. package/dist/modules/slack/SlackController.js +4 -26
  199. package/dist/modules/slack/SlackController.js.map +1 -1
  200. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  201. package/dist/modules/tasks/TaskSourceController.js +5 -47
  202. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  203. package/dist/modules/testSecrets/TestSecretsController.d.ts.map +1 -1
  204. package/dist/modules/testSecrets/TestSecretsController.js +3 -12
  205. package/dist/modules/testSecrets/TestSecretsController.js.map +1 -1
  206. package/dist/modules/userSettings/UserSettingsController.d.ts.map +1 -1
  207. package/dist/modules/userSettings/UserSettingsController.js +13 -19
  208. package/dist/modules/userSettings/UserSettingsController.js.map +1 -1
  209. package/dist/modules/validation/ValidationConfigController.d.ts.map +1 -1
  210. package/dist/modules/validation/ValidationConfigController.js +3 -14
  211. package/dist/modules/validation/ValidationConfigController.js.map +1 -1
  212. package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
  213. package/dist/modules/workspaces/WorkspaceController.js +9 -4
  214. package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
  215. package/dist/modules/workspaces/WorkspaceMemberController.d.ts.map +1 -1
  216. package/dist/modules/workspaces/WorkspaceMemberController.js +10 -19
  217. package/dist/modules/workspaces/WorkspaceMemberController.js.map +1 -1
  218. package/package.json +6 -6
  219. package/dist/agents/storeAgentContextGate.d.ts +0 -36
  220. package/dist/agents/storeAgentContextGate.d.ts.map +0 -1
  221. package/dist/agents/storeAgentContextGate.js +0 -36
  222. package/dist/agents/storeAgentContextGate.js.map +0 -1
@@ -2,7 +2,7 @@ import { answerDocInterviewContract, continueDocInterviewContract, getDocIntervi
2
2
  import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
4
  import { param } from '../../http/params.js';
5
- import { UnavailableError } from '@cat-factory/kernel';
5
+ import { requireCapability } from '../../http/guards.js';
6
6
  // ---------------------------------------------------------------------------
7
7
  // Interactive document-interview endpoints (WS5). Drive the parked `doc-interviewer` gate
8
8
  // from the interview window: `get` loads the current session; `answer` records one answer
@@ -11,38 +11,27 @@ import { UnavailableError } from '@cat-factory/kernel';
11
11
  // interviewer isn't wired → 503), and return the updated session. Mounted under
12
12
  // `/workspaces/:workspaceId`.
13
13
  // ---------------------------------------------------------------------------
14
- const unavailable = () => {
15
- throw new UnavailableError('The document interviewer is not configured');
16
- };
17
14
  export function docInterviewController() {
18
15
  const app = new Hono();
19
- const require = (c) => c.get('container').executionService.docInterview ?? null;
16
+ const requireDocInterview = (c) => requireCapability(c.get('container').executionService.docInterview, 'The document interviewer is not configured');
20
17
  buildHonoRoute(app, getDocInterviewContract, async (c) => {
21
- const interview = require(c);
22
- if (!interview)
23
- return unavailable();
18
+ const interview = requireDocInterview(c);
24
19
  const { blockId } = c.req.valid('param');
25
20
  return c.json(await interview.getByBlock(param(c, 'workspaceId'), blockId), 200);
26
21
  });
27
22
  buildHonoRoute(app, answerDocInterviewContract, async (c) => {
28
- const interview = require(c);
29
- if (!interview)
30
- return unavailable();
23
+ const interview = requireDocInterview(c);
31
24
  const { blockId } = c.req.valid('param');
32
25
  const { questionId, answer } = c.req.valid('json');
33
26
  return c.json(await interview.answer(param(c, 'workspaceId'), blockId, questionId, answer), 200);
34
27
  });
35
28
  buildHonoRoute(app, continueDocInterviewContract, async (c) => {
36
- const interview = require(c);
37
- if (!interview)
38
- return unavailable();
29
+ const interview = requireDocInterview(c);
39
30
  const { blockId } = c.req.valid('param');
40
31
  return c.json(await interview.continue(param(c, 'workspaceId'), blockId), 200);
41
32
  });
42
33
  buildHonoRoute(app, proceedDocInterviewContract, async (c) => {
43
- const interview = require(c);
44
- if (!interview)
45
- return unavailable();
34
+ const interview = requireDocInterview(c);
46
35
  const { blockId } = c.req.valid('param');
47
36
  return c.json(await interview.proceed(param(c, 'workspaceId'), blockId), 200);
48
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DocInterviewController.js","sourceRoot":"","sources":["../../../src/modules/docInterview/DocInterviewController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocInterviewController.js","sourceRoot":"","sources":["../../../src/modules/docInterview/DocInterviewController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,8EAA8E;AAC9E,0FAA0F;AAC1F,0FAA0F;AAC1F,8FAA8F;AAC9F,gGAAgG;AAChG,gFAAgF;AAChF,8BAA8B;AAC9B,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,MAAM,mBAAmB,GAAG,CAAmB,CAAa,EAAE,EAAE,CAC9D,iBAAiB,CACf,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAChD,4CAA4C,CAC7C,CAAA;IAEH,cAAc,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAClD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceController.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAsB/C;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0JvD"}
1
+ {"version":3,"file":"DocumentSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceController.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAsB/C;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,CA6IvD"}
@@ -2,16 +2,14 @@ import { connectDocumentSourceContract, disconnectDocumentSourceContract, docume
2
2
  import * as v from 'valibot';
3
3
  import { buildHonoRoute } from '@toad-contracts/hono';
4
4
  import { Hono } from 'hono';
5
- import { ValidationError, UnavailableError } from '@cat-factory/kernel';
5
+ import { ValidationError } from '@cat-factory/kernel';
6
6
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
7
7
  import { param } from '../../http/params.js';
8
- /** Resolve the documents module or send a 503, returning null when unconfigured. */
8
+ import { requireCapability } from '../../http/guards.js';
9
+ /** Resolve the documents module, or refuse with a 503 naming what isn't wired. */
9
10
  function requireDocuments(c) {
10
- return c.get('container').documents ?? null;
11
+ return requireCapability(c.get('container').documents, 'Document-source integration is not configured');
11
12
  }
12
- const unavailable = () => {
13
- throw new UnavailableError('Document-source integration is not configured');
14
- };
15
13
  /** Read + validate the `:source` path param as a known source kind. */
16
14
  function sourceParam(c) {
17
15
  const source = param(c, 'source');
@@ -34,43 +32,31 @@ export function documentSourceController() {
34
32
  // 503 here is how the frontend learns the integration is off.
35
33
  buildHonoRoute(app, listDocumentSourcesContract, async (c) => {
36
34
  const documents = requireDocuments(c);
37
- if (!documents)
38
- return unavailable();
39
35
  return c.json({ sources: documents.connectionService.listSources() }, 200);
40
36
  });
41
37
  // ---- connections --------------------------------------------------------
42
38
  buildHonoRoute(app, listDocumentConnectionsContract, async (c) => {
43
39
  const documents = requireDocuments(c);
44
- if (!documents)
45
- return unavailable();
46
40
  const connections = await documents.connectionService.listConnections(param(c, 'workspaceId'));
47
41
  return c.json({ connections }, 200);
48
42
  });
49
43
  buildHonoRoute(app, connectDocumentSourceContract, async (c) => {
50
44
  const documents = requireDocuments(c);
51
- if (!documents)
52
- return unavailable();
53
45
  const connection = await documents.connectionService.connect(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').credentials);
54
46
  return c.json(connection, 201);
55
47
  });
56
48
  buildHonoRoute(app, disconnectDocumentSourceContract, async (c) => {
57
49
  const documents = requireDocuments(c);
58
- if (!documents)
59
- return unavailable();
60
50
  await documents.connectionService.disconnect(param(c, 'workspaceId'), sourceParam(c));
61
51
  return c.body(null, 204);
62
52
  });
63
53
  // ---- documents ----------------------------------------------------------
64
54
  buildHonoRoute(app, listDocumentsContract, async (c) => {
65
55
  const documents = requireDocuments(c);
66
- if (!documents)
67
- return unavailable();
68
56
  return c.json(await documents.importService.listDocuments(param(c, 'workspaceId')), 200);
69
57
  });
70
58
  buildHonoRoute(app, importDocumentContract, async (c) => {
71
59
  const documents = requireDocuments(c);
72
- if (!documents)
73
- return unavailable();
74
60
  const document = await documents.importService.import(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').ref);
75
61
  return c.json(document, 201);
76
62
  });
@@ -78,8 +64,6 @@ export function documentSourceController() {
78
64
  // the picker can import + link on selection.
79
65
  buildHonoRoute(app, searchDocumentsContract, async (c) => {
80
66
  const documents = requireDocuments(c);
81
- if (!documents)
82
- return unavailable();
83
67
  const results = await documents.importService.search(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').query);
84
68
  return c.json({ results }, 200);
85
69
  });
@@ -87,8 +71,6 @@ export function documentSourceController() {
87
71
  // Preview the board structure a page would expand into (no writes).
88
72
  buildHonoRoute(app, planDocumentContract, async (c) => {
89
73
  const documents = requireDocuments(c);
90
- if (!documents)
91
- return unavailable();
92
74
  const workspaceId = param(c, 'workspaceId');
93
75
  const record = await documents.importService.requireDocument(workspaceId, sourceParam(c), c.req.valid('json').externalId);
94
76
  return c.json(await documents.plannerService.plan(record), 200);
@@ -96,8 +78,6 @@ export function documentSourceController() {
96
78
  // Apply a page's structure to the board (new frames, or into an existing one).
97
79
  buildHonoRoute(app, spawnDocumentContract, async (c) => {
98
80
  const documents = requireDocuments(c);
99
- if (!documents)
100
- return unavailable();
101
81
  const workspaceId = param(c, 'workspaceId');
102
82
  const { externalId, frameId } = c.req.valid('json');
103
83
  const record = await documents.importService.requireDocument(workspaceId, sourceParam(c), externalId);
@@ -109,8 +89,6 @@ export function documentSourceController() {
109
89
  // Attach an imported page to a block as extra agent context.
110
90
  buildHonoRoute(app, linkDocumentContract, async (c) => {
111
91
  const documents = requireDocuments(c);
112
- if (!documents)
113
- return unavailable();
114
92
  const { source, externalId, blockId } = c.req.valid('json');
115
93
  const document = await documents.linkService.linkToBlock(param(c, 'workspaceId'), blockId, source, externalId);
116
94
  return c.json(document, 201);
@@ -119,15 +97,11 @@ export function documentSourceController() {
119
97
  // Every role-tagged document in the workspace (drives the template/exemplar management panel).
120
98
  buildHonoRoute(app, listDocumentRoleLinksContract, async (c) => {
121
99
  const documents = requireDocuments(c);
122
- if (!documents)
123
- return unavailable();
124
100
  return c.json(await documents.linkService.listRoleLinks(param(c, 'workspaceId')), 200);
125
101
  });
126
102
  // Tag an imported page as the workspace's template (singular per kind) or exemplar for a kind.
127
103
  buildHonoRoute(app, linkDocumentForKindContract, async (c) => {
128
104
  const documents = requireDocuments(c);
129
- if (!documents)
130
- return unavailable();
131
105
  const { source, externalId, role, docKind } = c.req.valid('json');
132
106
  const document = await documents.linkService.linkForKind(param(c, 'workspaceId'), source, externalId, role, docKind);
133
107
  return c.json(document, 201);
@@ -135,8 +109,6 @@ export function documentSourceController() {
135
109
  // Clear a document's role tag (built-in template resumes for the kind / exemplar drops).
136
110
  buildHonoRoute(app, unlinkDocumentForKindContract, async (c) => {
137
111
  const documents = requireDocuments(c);
138
- if (!documents)
139
- return unavailable();
140
112
  const { source, externalId } = c.req.valid('json');
141
113
  await documents.linkService.unlinkForKind(param(c, 'workspaceId'), source, externalId);
142
114
  return c.body(null, 204);
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentSourceController.js","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,EAChC,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,GAE9B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,oFAAoF;AACpF,SAAS,gBAAgB,CAAmB,CAAa;IACvD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,IAAI,IAAI,CAAA;AAC7C,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,+CAA+C,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,uEAAuE;AACvE,SAAS,WAAW,CAAmB,CAAa;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,4BAA4B,MAAM,GAAG,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAE/D,4EAA4E;IAE5E,4EAA4E;IAC5E,8DAA8D;IAC9D,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;QAC9F,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAC1D,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,WAAW,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,CAChC,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QACrF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1F,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CACnD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,WAAW,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CACxB,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,gFAAgF;IAChF,6CAA6C;IAC7C,cAAc,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CAClD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,WAAW,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAC1B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,oEAAoE;IACpE,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,eAAe,CAC1D,WAAW,EACX,WAAW,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAC/B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,+EAA+E;IAC/E,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC3C,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,eAAe,CAC1D,WAAW,EACX,WAAW,CAAC,CAAC,CAAC,EACd,UAAU,CACX,CAAA;QACD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAC5E,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,6DAA6D;IAC7D,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CACtD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,OAAO,EACP,MAAM,EACN,UAAU,CACX,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,+FAA+F;IAC/F,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,+FAA+F;IAC/F,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACjE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CACtD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,MAAM,EACN,UAAU,EACV,IAAI,EACJ,OAAO,CACR,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,yFAAyF;IACzF,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;QACtF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"DocumentSourceController.js","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentController.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentController.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA4B/C;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CAoSpD"}
1
+ {"version":3,"file":"EnvironmentController.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentController.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA6B/C;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0QpD"}
@@ -4,21 +4,20 @@ import * as v from 'valibot';
4
4
  import { Hono } from 'hono';
5
5
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
6
6
  import { param } from '../../http/params.js';
7
- import { UnavailableError } from '@cat-factory/kernel';
8
- /** Resolve the environment module or send a 503, returning null when unconfigured. */
7
+ import { requireCapability } from '../../http/guards.js';
8
+ /** Resolve the environment module, or refuse with a 503 naming what isn't wired. */
9
9
  function requireEnvironments(c) {
10
- return c.get('container').environments ?? null;
10
+ return requireCapability(c.get('container').environments, 'Environment integration is not configured');
11
11
  }
12
- const unavailable = () => {
13
- throw new UnavailableError('Environment integration is not configured');
14
- };
15
- /** The self-test service, present only when its run store + a git provider are wired. */
12
+ /**
13
+ * The self-test service, present only when its run store + a git provider are wired. It keeps
14
+ * its OWN refusal message rather than borrowing `requireEnvironments`': a deployment can have
15
+ * the environment integration fully wired and still not host the self-test, so naming the
16
+ * module here would tell the operator to fix something that is already configured.
17
+ */
16
18
  function requireEnvironmentTest(c) {
17
- return c.get('container').environments?.environmentTest ?? null;
19
+ return requireCapability(c.get('container').environments?.environmentTest, 'Ephemeral-environment self-testing is not configured for this deployment');
18
20
  }
19
- const testUnavailable = () => {
20
- throw new UnavailableError('Ephemeral-environment self-testing is not configured for this deployment');
21
- };
22
21
  const notFound = (c) => c.json({ error: { code: 'not_found', message: 'Environment not found' } }, 404);
23
22
  /**
24
23
  * Workspace-scoped environment endpoints: provider registration (manifest +
@@ -32,15 +31,11 @@ export function environmentController() {
32
31
  // ---- provider connection ------------------------------------------------
33
32
  buildHonoRoute(app, getEnvironmentConnectionContract, async (c) => {
34
33
  const env = requireEnvironments(c);
35
- if (!env)
36
- return unavailable();
37
34
  const connection = await env.connectionService.getConnection(param(c, 'workspaceId'));
38
35
  return c.json({ connection }, 200);
39
36
  });
40
37
  buildHonoRoute(app, registerEnvironmentProviderContract, async (c) => {
41
38
  const env = requireEnvironments(c);
42
- if (!env)
43
- return unavailable();
44
39
  const { config, secrets } = c.req.valid('json');
45
40
  const connection = await env.connectionService.register(param(c, 'workspaceId'), {
46
41
  config,
@@ -50,15 +45,11 @@ export function environmentController() {
50
45
  });
51
46
  buildHonoRoute(app, updateEnvironmentSecretsContract, async (c) => {
52
47
  const env = requireEnvironments(c);
53
- if (!env)
54
- return unavailable();
55
48
  const connection = await env.connectionService.updateSecrets(param(c, 'workspaceId'), c.req.valid('json').secrets);
56
49
  return c.json(connection, 200);
57
50
  });
58
51
  buildHonoRoute(app, unregisterEnvironmentProviderContract, async (c) => {
59
52
  const env = requireEnvironments(c);
60
- if (!env)
61
- return unavailable();
62
53
  await env.connectionService.unregister(param(c, 'workspaceId'));
63
54
  return c.body(null, 204);
64
55
  });
@@ -66,55 +57,41 @@ export function environmentController() {
66
57
  // so the UI can render a connect form generically.
67
58
  buildHonoRoute(app, describeEnvironmentProviderContract, async (c) => {
68
59
  const env = requireEnvironments(c);
69
- if (!env)
70
- return unavailable();
71
60
  return c.json(await env.connectionService.describeProvider(param(c, 'workspaceId'), c.req.query('kind')), 200);
72
61
  });
73
62
  // Probe a candidate connection before saving (nothing persisted).
74
63
  buildHonoRoute(app, testEnvironmentConnectionContract, async (c) => {
75
64
  const env = requireEnvironments(c);
76
- if (!env)
77
- return unavailable();
78
65
  return c.json(await env.connectionService.testConnection(param(c, 'workspaceId'), c.req.valid('json')), 200);
79
66
  });
80
67
  // Validate that a target repo satisfies the provider's config expectations (e.g. a
81
68
  // provider's `.deploy.yml` is present + well-formed). Nothing persisted.
82
69
  buildHonoRoute(app, validateEnvironmentRepoContract, async (c) => {
83
70
  const env = requireEnvironments(c);
84
- if (!env)
85
- return unavailable();
86
71
  return c.json(await env.connectionService.validateRepo(param(c, 'workspaceId'), c.req.valid('json')), 200);
87
72
  });
88
73
  // Mechanically bootstrap (and optionally agent-repair) the provider's config file
89
74
  // in a target repo from UI-collected variables.
90
75
  buildHonoRoute(app, bootstrapEnvironmentRepoContract, async (c) => {
91
76
  const env = requireEnvironments(c);
92
- if (!env)
93
- return unavailable();
94
77
  return c.json(await env.connectionService.bootstrapRepo(param(c, 'workspaceId'), c.req.valid('json')), 200);
95
78
  });
96
79
  // Auto-detect a non-binding recommended provisioning config from a service's repo (read
97
80
  // checkout-free over RepoFiles). Nothing persisted — the SPA prefills the confirm form.
98
81
  buildHonoRoute(app, detectServiceProvisioningContract, async (c) => {
99
82
  const env = requireEnvironments(c);
100
- if (!env)
101
- return unavailable();
102
83
  return c.json(await env.connectionService.detectServiceProvisioning(param(c, 'workspaceId'), c.req.valid('json')), 200);
103
84
  });
104
85
  // Auto-detect a non-binding recommended frontend config from a frontend repo (read checkout-free
105
86
  // over RepoFiles). Nothing persisted — the SPA prefills a preview the user applies.
106
87
  buildHonoRoute(app, detectFrontendConfigContract, async (c) => {
107
88
  const env = requireEnvironments(c);
108
- if (!env)
109
- return unavailable();
110
89
  return c.json(await env.connectionService.detectFrontendConfig(param(c, 'workspaceId'), c.req.valid('json')), 200);
111
90
  });
112
91
  // Generate (or fix) a service's custom manifest via the fixer coding agent — dispatches a
113
92
  // durable env-config-repair run tracked exactly like the provider-config repair fallback.
114
93
  buildHonoRoute(app, repairCustomManifestContract, async (c) => {
115
94
  const env = requireEnvironments(c);
116
- if (!env)
117
- return unavailable();
118
95
  return c.json(await env.connectionService.repairCustomManifest(param(c, 'workspaceId'), c.req.valid('json')), 200);
119
96
  });
120
97
  // ---- per-type infra handlers (the workspace "how") + custom-type catalog ----
@@ -122,8 +99,6 @@ export function environmentController() {
122
99
  // custom-manifest-type catalog (registered code types merged with workspace rows).
123
100
  buildHonoRoute(app, listEnvironmentHandlersContract, async (c) => {
124
101
  const env = requireEnvironments(c);
125
- if (!env)
126
- return unavailable();
127
102
  const ws = param(c, 'workspaceId');
128
103
  const [handlers, customTypes] = await Promise.all([
129
104
  env.connectionService.listHandlers(ws),
@@ -133,8 +108,6 @@ export function environmentController() {
133
108
  });
134
109
  buildHonoRoute(app, registerEnvironmentHandlerContract, async (c) => {
135
110
  const env = requireEnvironments(c);
136
- if (!env)
137
- return unavailable();
138
111
  const body = c.req.valid('json');
139
112
  const view = await env.connectionService.registerHandler(param(c, 'workspaceId'), body);
140
113
  return c.json(view, 201);
@@ -143,14 +116,10 @@ export function environmentController() {
143
116
  // the Kubernetes engine form's "Test connection" reaches the apiserver with the supplied token.
144
117
  buildHonoRoute(app, testEnvironmentHandlerContract, async (c) => {
145
118
  const env = requireEnvironments(c);
146
- if (!env)
147
- return unavailable();
148
119
  return c.json(await env.connectionService.testHandler(param(c, 'workspaceId'), c.req.valid('json')), 200);
149
120
  });
150
121
  buildHonoRoute(app, updateEnvironmentHandlerSecretsContract, async (c) => {
151
122
  const env = requireEnvironments(c);
152
- if (!env)
153
- return unavailable();
154
123
  const provisionType = v.parse(provisionTypeSchema, c.req.valid('param').provisionType);
155
124
  const manifestId = c.req.valid('query').manifestId ?? null;
156
125
  const view = await env.connectionService.updateHandlerSecrets(param(c, 'workspaceId'), provisionType, manifestId, c.req.valid('json').secrets);
@@ -158,8 +127,6 @@ export function environmentController() {
158
127
  });
159
128
  buildHonoRoute(app, unregisterEnvironmentHandlerContract, async (c) => {
160
129
  const env = requireEnvironments(c);
161
- if (!env)
162
- return unavailable();
163
130
  const provisionType = v.parse(provisionTypeSchema, c.req.valid('param').provisionType);
164
131
  const manifestId = c.req.valid('query').manifestId ?? null;
165
132
  await env.connectionService.unregisterHandler(param(c, 'workspaceId'), provisionType, manifestId);
@@ -169,44 +136,32 @@ export function environmentController() {
169
136
  // `custom` provision-type catalog; the registered code providers are the other half).
170
137
  buildHonoRoute(app, upsertCustomManifestTypeContract, async (c) => {
171
138
  const env = requireEnvironments(c);
172
- if (!env)
173
- return unavailable();
174
139
  const type = await env.connectionService.upsertCustomType(param(c, 'workspaceId'), c.req.valid('param').manifestId, c.req.valid('json'));
175
140
  return c.json(type, 200);
176
141
  });
177
142
  buildHonoRoute(app, removeCustomManifestTypeContract, async (c) => {
178
143
  const env = requireEnvironments(c);
179
- if (!env)
180
- return unavailable();
181
144
  await env.connectionService.removeCustomType(param(c, 'workspaceId'), c.req.valid('param').manifestId);
182
145
  return c.body(null, 204);
183
146
  });
184
147
  // ---- environment registry ----------------------------------------------
185
148
  buildHonoRoute(app, listEnvironmentsContract, async (c) => {
186
149
  const env = requireEnvironments(c);
187
- if (!env)
188
- return unavailable();
189
150
  return c.json(await env.provisioningService.listHandles(param(c, 'workspaceId')), 200);
190
151
  });
191
152
  buildHonoRoute(app, getEnvironmentContract, async (c) => {
192
153
  const env = requireEnvironments(c);
193
- if (!env)
194
- return unavailable();
195
154
  const handle = await env.provisioningService.getHandle(param(c, 'workspaceId'), c.req.valid('param').environmentId);
196
155
  return handle ? c.json(handle, 200) : notFound(c);
197
156
  });
198
157
  // The only endpoint that returns decrypted access credentials (over TLS).
199
158
  buildHonoRoute(app, getEnvironmentAccessContract, async (c) => {
200
159
  const env = requireEnvironments(c);
201
- if (!env)
202
- return unavailable();
203
160
  const handle = await env.provisioningService.getHandleWithAccess(param(c, 'workspaceId'), c.req.valid('param').environmentId);
204
161
  return handle ? c.json(handle, 200) : notFound(c);
205
162
  });
206
163
  buildHonoRoute(app, provisionEnvironmentContract, async (c) => {
207
164
  const env = requireEnvironments(c);
208
- if (!env)
209
- return unavailable();
210
165
  const { blockId, inputs } = c.req.valid('json');
211
166
  const handle = await env.provisioningService.provision({
212
167
  workspaceId: param(c, 'workspaceId'),
@@ -217,8 +172,6 @@ export function environmentController() {
217
172
  });
218
173
  buildHonoRoute(app, teardownEnvironmentContract, async (c) => {
219
174
  const env = requireEnvironments(c);
220
- if (!env)
221
- return unavailable();
222
175
  const handle = await env.teardownService.teardown(param(c, 'workspaceId'), c.req.valid('param').environmentId);
223
176
  return c.json(handle, 200);
224
177
  });
@@ -228,22 +181,16 @@ export function environmentController() {
228
181
  // durable driver advances it and pushes live `envTest` stage events.
229
182
  buildHonoRoute(app, startEnvironmentTestContract, async (c) => {
230
183
  const service = requireEnvironmentTest(c);
231
- if (!service)
232
- return testUnavailable();
233
184
  const run = await service.startTest(param(c, 'workspaceId'), c.req.valid('param').blockId, c.get('user')?.id ?? null);
234
185
  return c.json(run, 201);
235
186
  });
236
187
  buildHonoRoute(app, getEnvironmentTestContract, async (c) => {
237
188
  const service = requireEnvironmentTest(c);
238
- if (!service)
239
- return testUnavailable();
240
189
  const run = await service.getRun(param(c, 'workspaceId'), c.req.valid('param').id);
241
190
  return c.json(run, 200);
242
191
  });
243
192
  buildHonoRoute(app, stopEnvironmentTestContract, async (c) => {
244
193
  const service = requireEnvironmentTest(c);
245
- if (!service)
246
- return testUnavailable();
247
194
  const run = await service.stop(param(c, 'workspaceId'), c.req.valid('param').id);
248
195
  return c.json(run, 200);
249
196
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentController.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentController.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,4BAA4B,EAC5B,mBAAmB,EACnB,kCAAkC,EAClC,mCAAmC,EACnC,gCAAgC,EAChC,4BAA4B,EAC5B,2BAA2B,EAC3B,iCAAiC,EACjC,8BAA8B,EAC9B,oCAAoC,EACpC,qCAAqC,EACrC,uCAAuC,EACvC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,oFAAoF;AACpF,SAAS,mBAAmB,CAAmB,CAAa;IAC1D,OAAO,iBAAiB,CACtB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,EAC/B,2CAA2C,CAC5C,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAmB,CAAa;IAC7D,OAAO,iBAAiB,CACtB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,eAAe,EAChD,0EAA0E,CAC3E,CAAA;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,CAAmB,CAAa,EAAE,EAAE,CACnD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAE/D,4EAA4E;IAE5E,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;QACrF,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,mCAAmC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC/C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE;YAC/E,MAAM;YACN,OAAO;SACR,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAC1D,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAC5B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,qCAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;QAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,oFAAoF;IACpF,mDAAmD;IACnD,cAAc,CAAC,GAAG,EAAE,mCAAmC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAC1F,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,kEAAkE;IAClE,cAAc,CAAC,GAAG,EAAE,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACxF,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,mFAAmF;IACnF,yEAAyE;IACzE,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACtF,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,kFAAkF;IAClF,gDAAgD;IAChD,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACvF,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,wFAAwF;IACxF,wFAAwF;IACxF,cAAc,CAAC,GAAG,EAAE,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,yBAAyB,CACnD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CACpB,EACD,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,iGAAiG;IACjG,oFAAoF;IACpF,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAC9C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CACpB,EACD,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,0FAA0F;IAC1F,0FAA0F;IAC1F,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAC9C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CACpB,EACD,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,gFAAgF;IAEhF,kFAAkF;IAClF,mFAAmF;IACnF,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAClC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;QACvF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,yFAAyF;IACzF,gGAAgG;IAChG,cAAc,CAAC,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CACX,MAAM,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACrF,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,uCAAuC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;QACtF,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,CAAA;QAC1D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAC3D,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,aAAa,EACb,UAAU,EACV,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAC5B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,oCAAoC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;QACtF,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,CAAA;QAC1D,MAAM,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,CAC3C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,aAAa,EACb,UAAU,CACX,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,mFAAmF;IACnF,sFAAsF;IACtF,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CACvD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAC/B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CACpB,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAC1C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,CAChC,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,2EAA2E;IAE3E,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,SAAS,CACpD,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CACnC,CAAA;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,0EAA0E;IAC1E,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,mBAAmB,CAC9D,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CACnC,CAAA;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;YACpC,OAAO;YACP,MAAM;SACP,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,QAAQ,CAC/C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CACnC,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,oFAAoF;IACpF,uFAAuF;IACvF,qEAAqE;IACrE,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,CACjC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAC5B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,IAAI,CAC1B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;QAChF,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentUserHandlerController.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentUserHandlerController.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA8C/C,wBAAgB,gCAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,CAgD/D"}
1
+ {"version":3,"file":"EnvironmentUserHandlerController.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentUserHandlerController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAoD/C,wBAAgB,gCAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,CA0C/D"}
@@ -1,9 +1,10 @@
1
1
  import { listEnvironmentUserHandlersContract, provisionTypeSchema, removeEnvironmentUserHandlerContract, upsertEnvironmentUserHandlerContract, } from '@cat-factory/contracts';
2
- import { ForbiddenError, NotFoundError, UnavailableError, UnauthorizedError, } from '@cat-factory/kernel';
2
+ import { ForbiddenError, NotFoundError } from '@cat-factory/kernel';
3
3
  import { buildHonoRoute } from '@toad-contracts/hono';
4
4
  import * as v from 'valibot';
5
5
  import { Hono } from 'hono';
6
6
  import { loadWorkspaceAccess } from '../../http/workspaceAccess.js';
7
+ import { requireCapability, requireUser } from '../../http/guards.js';
7
8
  // Per-USER infra handler overrides (local mode). A developer points a provision type at
8
9
  // their OWN engine (a personal Docker / k3s), and that override wins for the runs they
9
10
  // initiate. Mounted at the root (no `/workspaces` prefix) and scoped to the signed-in user,
@@ -11,12 +12,6 @@ import { loadWorkspaceAccess } from '../../http/workspaceAccess.js';
11
12
  // the local facade (it wires `environmentUserHandlerRepository`), so these endpoints 503 on
12
13
  // the Worker/Node facades — the local-only behaviour is enforced by container wiring, not a
13
14
  // runtime branch here. See docs/initiatives/per-service-provision-types.md.
14
- const signInRequired = () => {
15
- throw new UnauthorizedError('Sign in to manage environment handler overrides');
16
- };
17
- const unavailable = () => {
18
- throw new UnavailableError('Per-user environment handlers are not configured');
19
- };
20
15
  /**
21
16
  * Workspace-RBAC (workspace-rbac initiative, slice 7). These routes are mounted at `/`, OUTSIDE
22
17
  * the `/workspaces/:ws/*` gate, so they resolve access themselves through the SAME shared
@@ -39,32 +34,32 @@ async function requireRunsExecute(c, workspaceId, userId) {
39
34
  });
40
35
  }
41
36
  }
37
+ /** The signed-in caller, or a 401 wording the prompt for what this controller manages. */
38
+ function requireSignedIn(c) {
39
+ return requireUser(c, 'Sign in to manage environment handler overrides');
40
+ }
41
+ /** Resolve the per-user environment-handler service, or refuse with a 503. */
42
+ function requireUserHandlers(c) {
43
+ return requireCapability(c.get('container').environments?.userHandlerService, 'Per-user environment handlers are not configured');
44
+ }
42
45
  export function environmentUserHandlerController() {
43
46
  const app = new Hono();
44
47
  // Authorization runs BEFORE the service-availability (503) check on purpose: a caller who
45
48
  // cannot see the board must get the same 404 whether or not this (local-only) feature is
46
49
  // wired, so an unwired facade never reveals a board's existence to a non-member.
47
50
  buildHonoRoute(app, listEnvironmentUserHandlersContract, async (c) => {
48
- const user = c.get('user');
49
- if (!user)
50
- return signInRequired();
51
+ const user = requireSignedIn(c);
51
52
  const workspaceId = c.req.valid('param').workspaceId;
52
53
  await requireRunsExecute(c, workspaceId, user.id);
53
- const svc = c.get('container').environments?.userHandlerService;
54
- if (!svc)
55
- return unavailable();
54
+ const svc = requireUserHandlers(c);
56
55
  const handlers = await svc.list(user.id, workspaceId);
57
56
  return c.json({ handlers }, 200);
58
57
  });
59
58
  buildHonoRoute(app, upsertEnvironmentUserHandlerContract, async (c) => {
60
- const user = c.get('user');
61
- if (!user)
62
- return signInRequired();
59
+ const user = requireSignedIn(c);
63
60
  const { workspaceId, provisionType: rawType } = c.req.valid('param');
64
61
  await requireRunsExecute(c, workspaceId, user.id);
65
- const svc = c.get('container').environments?.userHandlerService;
66
- if (!svc)
67
- return unavailable();
62
+ const svc = requireUserHandlers(c);
68
63
  // The provision type comes from the path; the body's value is overridden by it.
69
64
  const provisionType = v.parse(provisionTypeSchema, rawType);
70
65
  const view = await svc.upsert(user.id, workspaceId, {
@@ -74,14 +69,10 @@ export function environmentUserHandlerController() {
74
69
  return c.json(view, 201);
75
70
  });
76
71
  buildHonoRoute(app, removeEnvironmentUserHandlerContract, async (c) => {
77
- const user = c.get('user');
78
- if (!user)
79
- return signInRequired();
72
+ const user = requireSignedIn(c);
80
73
  const { workspaceId, provisionType: rawType } = c.req.valid('param');
81
74
  await requireRunsExecute(c, workspaceId, user.id);
82
- const svc = c.get('container').environments?.userHandlerService;
83
- if (!svc)
84
- return unavailable();
75
+ const svc = requireUserHandlers(c);
85
76
  const provisionType = v.parse(provisionTypeSchema, rawType);
86
77
  const manifestId = c.req.valid('query').manifestId ?? null;
87
78
  await svc.remove(user.id, workspaceId, provisionType, manifestId);