@cat-factory/server 0.166.2 → 0.169.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 (232) hide show
  1. package/dist/agents/ContainerAgentExecutor.d.ts.map +1 -1
  2. package/dist/agents/ContainerAgentExecutor.js +15 -1
  3. package/dist/agents/ContainerAgentExecutor.js.map +1 -1
  4. package/dist/agents/ContainerEnvConfigRepairer.d.ts.map +1 -1
  5. package/dist/agents/ContainerEnvConfigRepairer.js +3 -0
  6. package/dist/agents/ContainerEnvConfigRepairer.js.map +1 -1
  7. package/dist/agents/ContainerRepoBootstrapper.d.ts.map +1 -1
  8. package/dist/agents/ContainerRepoBootstrapper.js +3 -0
  9. package/dist/agents/ContainerRepoBootstrapper.js.map +1 -1
  10. package/dist/agents/modelProviderResolver.d.ts +9 -1
  11. package/dist/agents/modelProviderResolver.d.ts.map +1 -1
  12. package/dist/agents/modelProviderResolver.js +1 -0
  13. package/dist/agents/modelProviderResolver.js.map +1 -1
  14. package/dist/agents/storeAgentContextGate.d.ts +36 -0
  15. package/dist/agents/storeAgentContextGate.d.ts.map +1 -0
  16. package/dist/agents/storeAgentContextGate.js +36 -0
  17. package/dist/agents/storeAgentContextGate.js.map +1 -0
  18. package/dist/auth/middleware.d.ts.map +1 -1
  19. package/dist/auth/middleware.js +2 -1
  20. package/dist/auth/middleware.js.map +1 -1
  21. package/dist/http/errorHandler.d.ts.map +1 -1
  22. package/dist/http/errorHandler.js +6 -0
  23. package/dist/http/errorHandler.js.map +1 -1
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +5 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  29. package/dist/modules/accounts/AccountController.js +37 -31
  30. package/dist/modules/accounts/AccountController.js.map +1 -1
  31. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  32. package/dist/modules/agentRuns/AgentRunController.js +9 -6
  33. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  34. package/dist/modules/artifacts/ArtifactController.d.ts.map +1 -1
  35. package/dist/modules/artifacts/ArtifactController.js +8 -5
  36. package/dist/modules/artifacts/ArtifactController.js.map +1 -1
  37. package/dist/modules/artifacts/HarnessArtifactController.d.ts.map +1 -1
  38. package/dist/modules/artifacts/HarnessArtifactController.js +5 -4
  39. package/dist/modules/artifacts/HarnessArtifactController.js.map +1 -1
  40. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  41. package/dist/modules/auth/AuthController.js +48 -50
  42. package/dist/modules/auth/AuthController.js.map +1 -1
  43. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  44. package/dist/modules/bootstrap/BootstrapController.js +12 -9
  45. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  46. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  47. package/dist/modules/brainstorm/BrainstormController.js +12 -9
  48. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  49. package/dist/modules/bugHunt/BugHuntController.d.ts.map +1 -1
  50. package/dist/modules/bugHunt/BugHuntController.js +7 -5
  51. package/dist/modules/bugHunt/BugHuntController.js.map +1 -1
  52. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  53. package/dist/modules/clarity/ClarityReviewController.js +12 -9
  54. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  55. package/dist/modules/docInterview/DocInterviewController.d.ts.map +1 -1
  56. package/dist/modules/docInterview/DocInterviewController.js +8 -5
  57. package/dist/modules/docInterview/DocInterviewController.js.map +1 -1
  58. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  59. package/dist/modules/documents/DocumentSourceController.js +17 -15
  60. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  61. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  62. package/dist/modules/environments/EnvironmentController.js +33 -33
  63. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  64. package/dist/modules/environments/EnvironmentUserHandlerController.d.ts.map +1 -1
  65. package/dist/modules/environments/EnvironmentUserHandlerController.js +13 -9
  66. package/dist/modules/environments/EnvironmentUserHandlerController.js.map +1 -1
  67. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  68. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +32 -41
  69. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  70. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  71. package/dist/modules/github/GitHubController.js +26 -23
  72. package/dist/modules/github/GitHubController.js.map +1 -1
  73. package/dist/modules/github/GitHubWebhookController.d.ts.map +1 -1
  74. package/dist/modules/github/GitHubWebhookController.js +5 -4
  75. package/dist/modules/github/GitHubWebhookController.js.map +1 -1
  76. package/dist/modules/gitlab/GitLabController.d.ts.map +1 -1
  77. package/dist/modules/gitlab/GitLabController.js +7 -4
  78. package/dist/modules/gitlab/GitLabController.js.map +1 -1
  79. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  80. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -9
  81. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  82. package/dist/modules/initiatives/InitiativeController.d.ts.map +1 -1
  83. package/dist/modules/initiatives/InitiativeController.js +20 -17
  84. package/dist/modules/initiatives/InitiativeController.js.map +1 -1
  85. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  86. package/dist/modules/kaizen/KaizenController.js +6 -3
  87. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  88. package/dist/modules/llmProxy/LlmProxyController.d.ts.map +1 -1
  89. package/dist/modules/llmProxy/LlmProxyController.js +309 -222
  90. package/dist/modules/llmProxy/LlmProxyController.js.map +1 -1
  91. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  92. package/dist/modules/localModels/LocalModelEndpointController.js +15 -10
  93. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  94. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  95. package/dist/modules/localSettings/LocalSettingsController.js +6 -8
  96. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  97. package/dist/modules/localSettings/MothershipConnectController.d.ts.map +1 -1
  98. package/dist/modules/localSettings/MothershipConnectController.js +2 -6
  99. package/dist/modules/localSettings/MothershipConnectController.js.map +1 -1
  100. package/dist/modules/merge/MergeTrackRecordController.d.ts.map +1 -1
  101. package/dist/modules/merge/MergeTrackRecordController.js +6 -3
  102. package/dist/modules/merge/MergeTrackRecordController.js.map +1 -1
  103. package/dist/modules/merge/RiskPolicyController.d.ts.map +1 -1
  104. package/dist/modules/merge/RiskPolicyController.js +9 -6
  105. package/dist/modules/merge/RiskPolicyController.js.map +1 -1
  106. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  107. package/dist/modules/modelPresets/ModelPresetController.js +9 -6
  108. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  109. package/dist/modules/notificationWebhook/NotificationWebhookController.d.ts.map +1 -1
  110. package/dist/modules/notificationWebhook/NotificationWebhookController.js +7 -4
  111. package/dist/modules/notificationWebhook/NotificationWebhookController.js.map +1 -1
  112. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  113. package/dist/modules/notifications/NotificationController.js +7 -4
  114. package/dist/modules/notifications/NotificationController.js.map +1 -1
  115. package/dist/modules/observability/PlatformObservabilityController.d.ts.map +1 -1
  116. package/dist/modules/observability/PlatformObservabilityController.js +6 -8
  117. package/dist/modules/observability/PlatformObservabilityController.js.map +1 -1
  118. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  119. package/dist/modules/openrouter/OpenRouterCatalogController.js +13 -8
  120. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  121. package/dist/modules/packageRegistries/PackageRegistriesController.d.ts.map +1 -1
  122. package/dist/modules/packageRegistries/PackageRegistriesController.js +7 -9
  123. package/dist/modules/packageRegistries/PackageRegistriesController.js.map +1 -1
  124. package/dist/modules/persistence/GitHubDelegationController.d.ts.map +1 -1
  125. package/dist/modules/persistence/GitHubDelegationController.js +3 -7
  126. package/dist/modules/persistence/GitHubDelegationController.js.map +1 -1
  127. package/dist/modules/preflight/PreflightController.d.ts.map +1 -1
  128. package/dist/modules/preflight/PreflightController.js +5 -7
  129. package/dist/modules/preflight/PreflightController.js.map +1 -1
  130. package/dist/modules/preview/PreviewController.d.ts.map +1 -1
  131. package/dist/modules/preview/PreviewController.js +7 -9
  132. package/dist/modules/preview/PreviewController.js.map +1 -1
  133. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  134. package/dist/modules/providers/ApiKeyController.js +19 -14
  135. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  136. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  137. package/dist/modules/providers/PersonalSubscriptionController.js +13 -8
  138. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  139. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  140. package/dist/modules/providers/UserSecretController.js +17 -12
  141. package/dist/modules/providers/UserSecretController.js.map +1 -1
  142. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  143. package/dist/modules/providers/VendorCredentialController.js +8 -10
  144. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  145. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  146. package/dist/modules/provisioningLogs/ProvisioningLogController.js +5 -2
  147. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  148. package/dist/modules/publicApi/PublicApiController.js +4 -4
  149. package/dist/modules/publicApi/PublicApiController.js.map +1 -1
  150. package/dist/modules/publicApi/PublicApiKeyController.d.ts.map +1 -1
  151. package/dist/modules/publicApi/PublicApiKeyController.js +7 -4
  152. package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -1
  153. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  154. package/dist/modules/recurring/RecurringPipelineController.js +10 -7
  155. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  156. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  157. package/dist/modules/recurring/TrackerSettingsController.js +6 -3
  158. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  159. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  160. package/dist/modules/releaseHealth/ReleaseHealthController.js +10 -7
  161. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  162. package/dist/modules/reports/ReportsController.d.ts.map +1 -1
  163. package/dist/modules/reports/ReportsController.js +6 -3
  164. package/dist/modules/reports/ReportsController.js.map +1 -1
  165. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  166. package/dist/modules/requirements/RequirementReviewController.js +16 -13
  167. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  168. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  169. package/dist/modules/runners/RunnerPoolController.js +10 -7
  170. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  171. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  172. package/dist/modules/sandbox/SandboxController.js +17 -14
  173. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  174. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  175. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -3
  176. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  177. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  178. package/dist/modules/services/ServiceMountController.js +9 -6
  179. package/dist/modules/services/ServiceMountController.js.map +1 -1
  180. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  181. package/dist/modules/settings/WorkspaceSettingsController.js +6 -3
  182. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  183. package/dist/modules/sharedStack/SharedStackController.d.ts.map +1 -1
  184. package/dist/modules/sharedStack/SharedStackController.js +11 -8
  185. package/dist/modules/sharedStack/SharedStackController.js.map +1 -1
  186. package/dist/modules/skillLibrary/SkillLibraryController.d.ts.map +1 -1
  187. package/dist/modules/skillLibrary/SkillLibraryController.js +19 -19
  188. package/dist/modules/skillLibrary/SkillLibraryController.js.map +1 -1
  189. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  190. package/dist/modules/slack/SlackController.js +16 -13
  191. package/dist/modules/slack/SlackController.js.map +1 -1
  192. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  193. package/dist/modules/tasks/TaskSourceController.js +26 -24
  194. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  195. package/dist/modules/tasks/TaskWebhookController.d.ts.map +1 -1
  196. package/dist/modules/tasks/TaskWebhookController.js +4 -4
  197. package/dist/modules/tasks/TaskWebhookController.js.map +1 -1
  198. package/dist/modules/testSecrets/TestSecretsController.d.ts.map +1 -1
  199. package/dist/modules/testSecrets/TestSecretsController.js +7 -9
  200. package/dist/modules/testSecrets/TestSecretsController.js.map +1 -1
  201. package/dist/modules/userSettings/UserSettingsController.d.ts.map +1 -1
  202. package/dist/modules/userSettings/UserSettingsController.js +11 -6
  203. package/dist/modules/userSettings/UserSettingsController.js.map +1 -1
  204. package/dist/modules/validation/ValidationConfigController.d.ts.map +1 -1
  205. package/dist/modules/validation/ValidationConfigController.js +52 -11
  206. package/dist/modules/validation/ValidationConfigController.js.map +1 -1
  207. package/dist/modules/vcs/VcsWebhookController.d.ts.map +1 -1
  208. package/dist/modules/vcs/VcsWebhookController.js +5 -5
  209. package/dist/modules/vcs/VcsWebhookController.js.map +1 -1
  210. package/dist/modules/webSearch/WebSearchProxyController.d.ts.map +1 -1
  211. package/dist/modules/webSearch/WebSearchProxyController.js +3 -3
  212. package/dist/modules/webSearch/WebSearchProxyController.js.map +1 -1
  213. package/dist/modules/workspaces/WorkspaceMemberController.d.ts.map +1 -1
  214. package/dist/modules/workspaces/WorkspaceMemberController.js +9 -6
  215. package/dist/modules/workspaces/WorkspaceMemberController.js.map +1 -1
  216. package/dist/persistence/remoteRepositories.d.ts +9 -1
  217. package/dist/persistence/remoteRepositories.d.ts.map +1 -1
  218. package/dist/persistence/remoteRepositories.js +13 -1
  219. package/dist/persistence/remoteRepositories.js.map +1 -1
  220. package/dist/persistence/rpc-allowlist.d.ts +23 -0
  221. package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
  222. package/dist/persistence/rpc-allowlist.js +56 -10
  223. package/dist/persistence/rpc-allowlist.js.map +1 -1
  224. package/dist/persistence/rpc-scope.logic.d.ts +15 -0
  225. package/dist/persistence/rpc-scope.logic.d.ts.map +1 -1
  226. package/dist/persistence/rpc-scope.logic.js +29 -0
  227. package/dist/persistence/rpc-scope.logic.js.map +1 -1
  228. package/dist/persistence/rpc.d.ts +11 -0
  229. package/dist/persistence/rpc.d.ts.map +1 -1
  230. package/dist/persistence/rpc.js +10 -1
  231. package/dist/persistence/rpc.js.map +1 -1
  232. package/package.json +8 -8
@@ -2,11 +2,14 @@ import { getServiceFragmentDefaultsContract, setServiceFragmentDefaultsContract,
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
6
  /** Resolve the service-fragment-defaults module or send a 503, returning null when unconfigured. */
6
7
  function requireDefaults(c) {
7
8
  return c.get('container').serviceFragmentDefaults ?? null;
8
9
  }
9
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Service fragment defaults are not configured' } }, 503);
10
+ const unavailable = () => {
11
+ throw new UnavailableError('Service fragment defaults are not configured');
12
+ };
10
13
  /**
11
14
  * Read/replace a workspace's default service-fragment selection (the best-practice
12
15
  * fragment ids new services inherit). PUT replaces the whole list wholesale. Mounted
@@ -17,13 +20,13 @@ export function serviceFragmentDefaultsController() {
17
20
  buildHonoRoute(app, getServiceFragmentDefaultsContract, async (c) => {
18
21
  const defaults = requireDefaults(c);
19
22
  if (!defaults)
20
- return unavailable(c);
23
+ return unavailable();
21
24
  return c.json(await defaults.service.get(param(c, 'workspaceId')), 200);
22
25
  });
23
26
  buildHonoRoute(app, setServiceFragmentDefaultsContract, async (c) => {
24
27
  const defaults = requireDefaults(c);
25
28
  if (!defaults)
26
- return unavailable(c);
29
+ return unavailable();
27
30
  const stored = await defaults.service.set(param(c, 'workspaceId'), c.req.valid('json'));
28
31
  return c.json(stored, 200);
29
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceFragmentDefaultsController.js","sourceRoot":"","sources":["../../../src/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,oGAAoG;AACpG,SAAS,eAAe,CAAmB,CAAa;IACtD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,uBAAuB,IAAI,IAAI,CAAA;AAC3D,CAAC;AAED,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CACJ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,8CAA8C,EAAE,EAAE,EAC3F,GAAG,CACJ,CAAA;AAEH;;;;GAIG;AACH,MAAM,UAAU,iCAAiC;IAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACvF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"ServiceFragmentDefaultsController.js","sourceRoot":"","sources":["../../../src/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,wBAAwB,CAAA;AAE/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,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,oGAAoG;AACpG,SAAS,eAAe,CAAmB,CAAa;IACtD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,uBAAuB,IAAI,IAAI,CAAA;AAC3D,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,8CAA8C,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC;IAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACvF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceMountController.d.ts","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAsDrD"}
1
+ {"version":3,"file":"ServiceMountController.d.ts","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAa/C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAsDrD"}
@@ -2,11 +2,14 @@ import { listServiceCatalogContract, listServiceMountsContract, mountServiceCont
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
6
  /** Resolve the in-org services module or send a 503, returning null when unconfigured. */
6
7
  function requireServices(c) {
7
8
  return c.get('container').services ?? null;
8
9
  }
9
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Shared services are not configured' } }, 503);
10
+ const unavailable = () => {
11
+ throw new UnavailableError('Shared services are not configured');
12
+ };
10
13
  /**
11
14
  * In-org service sharing: list/mount/unmount the account's services on a workspace board
12
15
  * and re-lay-out a mounted frame. Mounted under `/workspaces/:workspaceId`. The org
@@ -20,14 +23,14 @@ export function serviceMountController() {
20
23
  buildHonoRoute(app, listServiceMountsContract, async (c) => {
21
24
  const services = requireServices(c);
22
25
  if (!services)
23
- return unavailable(c);
26
+ return unavailable();
24
27
  return c.json(await services.service.listMounts(param(c, 'workspaceId')), 200);
25
28
  });
26
29
  // The org catalog: services owned by this workspace's account (mountable here).
27
30
  buildHonoRoute(app, listServiceCatalogContract, async (c) => {
28
31
  const services = requireServices(c);
29
32
  if (!services)
30
- return unavailable(c);
33
+ return unavailable();
31
34
  // `accountOf` is `undefined` for an unknown board, `null` for the legacy/unscoped
32
35
  // org, or the account id. The org catalog includes the null-account org.
33
36
  const accountId = await c.get('container').workspaceService.accountOf(param(c, 'workspaceId'));
@@ -39,7 +42,7 @@ export function serviceMountController() {
39
42
  buildHonoRoute(app, mountServiceContract, async (c) => {
40
43
  const services = requireServices(c);
41
44
  if (!services)
42
- return unavailable(c);
45
+ return unavailable();
43
46
  const mount = await services.service.mount(param(c, 'workspaceId'), c.req.valid('param').serviceId, c.req.valid('json'));
44
47
  return c.json(mount, 201);
45
48
  });
@@ -47,7 +50,7 @@ export function serviceMountController() {
47
50
  buildHonoRoute(app, updateServiceMountLayoutContract, async (c) => {
48
51
  const services = requireServices(c);
49
52
  if (!services)
50
- return unavailable(c);
53
+ return unavailable();
51
54
  const mount = await services.service.updateLayout(param(c, 'workspaceId'), c.req.valid('param').serviceId, c.req.valid('json'));
52
55
  return c.json(mount, 200);
53
56
  });
@@ -55,7 +58,7 @@ export function serviceMountController() {
55
58
  buildHonoRoute(app, unmountServiceContract, async (c) => {
56
59
  const services = requireServices(c);
57
60
  if (!services)
58
- return unavailable(c);
61
+ return unavailable();
59
62
  await services.service.unmount(param(c, 'workspaceId'), c.req.valid('param').serviceId);
60
63
  return c.body(null, 204);
61
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceMountController.js","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceMountController.js","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceSettingsController.d.ts","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAsB1D"}
1
+ {"version":3,"file":"WorkspaceSettingsController.d.ts","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAc/C;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAsB1D"}
@@ -3,11 +3,14 @@ import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
4
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
5
5
  import { param } from '../../http/params.js';
6
+ import { UnavailableError } from '@cat-factory/kernel';
6
7
  /** Resolve the workspace-settings module or send a 503, returning null when unconfigured. */
7
8
  function requireSettings(c) {
8
9
  return c.get('container').settings ?? null;
9
10
  }
10
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Workspace settings are not configured' } }, 503);
11
+ const unavailable = () => {
12
+ throw new UnavailableError('Workspace settings are not configured');
13
+ };
11
14
  /**
12
15
  * Read/update a workspace's runtime settings (the human-wait escalation threshold +
13
16
  * the per-service running-task limit policy). `GET` lazily falls back to the built-in
@@ -19,13 +22,13 @@ export function workspaceSettingsController() {
19
22
  buildHonoRoute(app, getWorkspaceSettingsContract, async (c) => {
20
23
  const settings = requireSettings(c);
21
24
  if (!settings)
22
- return unavailable(c);
25
+ return unavailable();
23
26
  return c.json(await settings.service.get(param(c, 'workspaceId')), 200);
24
27
  });
25
28
  buildHonoRoute(app, updateWorkspaceSettingsContract, async (c) => {
26
29
  const settings = requireSettings(c);
27
30
  if (!settings)
28
- return unavailable(c);
31
+ return unavailable();
29
32
  const workspaceId = param(c, 'workspaceId');
30
33
  // `update` invalidates the shared `workspaceSettings` cache slice after it commits, so a
31
34
  // budget edit takes effect immediately for SpendService's pricing overlay (which reads
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceSettingsController.js","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,6FAA6F;AAC7F,SAAS,eAAe,CAAmB,CAAa;IACtD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAA;AAC5C,CAAC;AAED,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uCAAuC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAEnG;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAE3D,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC3C,yFAAyF;QACzF,uFAAuF;QACvF,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"WorkspaceSettingsController.js","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,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,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,6FAA6F;AAC7F,SAAS,eAAe,CAAmB,CAAa;IACtD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAA;AAC5C,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAA;AACrE,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAE3D,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC3C,yFAAyF;QACzF,uFAAuF;QACvF,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SharedStackController.d.ts","sourceRoot":"","sources":["../../../src/modules/sharedStack/SharedStackController.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CA+DpD"}
1
+ {"version":3,"file":"SharedStackController.d.ts","sourceRoot":"","sources":["../../../src/modules/sharedStack/SharedStackController.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAc/C;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CA+DpD"}
@@ -3,11 +3,14 @@ import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
4
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
5
5
  import { param } from '../../http/params.js';
6
+ import { UnavailableError } from '@cat-factory/kernel';
6
7
  /** Resolve the shared-stacks module or send a 503, returning null when unconfigured. */
7
8
  function requireSharedStacks(c) {
8
9
  return c.get('container').sharedStacks ?? null;
9
10
  }
10
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Shared stacks are not configured' } }, 503);
11
+ const unavailable = () => {
12
+ throw new UnavailableError('Shared stacks are not configured');
13
+ };
11
14
  /**
12
15
  * CRUD + lifecycle for a workspace's shared stacks (long-lived compose infra a consumer
13
16
  * environment attaches to over an external network). CRUD works on every facade; the
@@ -21,48 +24,48 @@ export function sharedStackController() {
21
24
  buildHonoRoute(app, listSharedStacksContract, async (c) => {
22
25
  const stacks = requireSharedStacks(c);
23
26
  if (!stacks)
24
- return unavailable(c);
27
+ return unavailable();
25
28
  return c.json(await stacks.service.list(param(c, 'workspaceId')), 200);
26
29
  });
27
30
  buildHonoRoute(app, createSharedStackContract, async (c) => {
28
31
  const stacks = requireSharedStacks(c);
29
32
  if (!stacks)
30
- return unavailable(c);
33
+ return unavailable();
31
34
  const stack = await stacks.service.create(param(c, 'workspaceId'), c.req.valid('json'));
32
35
  return c.json(stack, 201);
33
36
  });
34
37
  buildHonoRoute(app, detectSharedStackContract, async (c) => {
35
38
  const stacks = requireSharedStacks(c);
36
39
  if (!stacks)
37
- return unavailable(c);
40
+ return unavailable();
38
41
  const recommendation = await stacks.service.detect(param(c, 'workspaceId'), c.req.valid('json'));
39
42
  return c.json(recommendation, 200);
40
43
  });
41
44
  buildHonoRoute(app, updateSharedStackContract, async (c) => {
42
45
  const stacks = requireSharedStacks(c);
43
46
  if (!stacks)
44
- return unavailable(c);
47
+ return unavailable();
45
48
  const stack = await stacks.service.update(param(c, 'workspaceId'), c.req.valid('param').stackId, c.req.valid('json'));
46
49
  return c.json(stack, 200);
47
50
  });
48
51
  buildHonoRoute(app, deleteSharedStackContract, async (c) => {
49
52
  const stacks = requireSharedStacks(c);
50
53
  if (!stacks)
51
- return unavailable(c);
54
+ return unavailable();
52
55
  await stacks.service.remove(param(c, 'workspaceId'), c.req.valid('param').stackId);
53
56
  return c.body(null, 204);
54
57
  });
55
58
  buildHonoRoute(app, ensureSharedStackUpContract, async (c) => {
56
59
  const stacks = requireSharedStacks(c);
57
60
  if (!stacks)
58
- return unavailable(c);
61
+ return unavailable();
59
62
  const stack = await stacks.service.ensureUp(param(c, 'workspaceId'), c.req.valid('param').stackId);
60
63
  return c.json(stack, 200);
61
64
  });
62
65
  buildHonoRoute(app, teardownSharedStackContract, async (c) => {
63
66
  const stacks = requireSharedStacks(c);
64
67
  if (!stacks)
65
- return unavailable(c);
68
+ return unavailable();
66
69
  const stack = await stacks.service.teardown(param(c, 'workspaceId'), c.req.valid('param').stackId);
67
70
  return c.json(stack, 200);
68
71
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SharedStackController.js","sourceRoot":"","sources":["../../../src/modules/sharedStack/SharedStackController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SharedStackController.js","sourceRoot":"","sources":["../../../src/modules/sharedStack/SharedStackController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkillLibraryController.d.ts","sourceRoot":"","sources":["../../../src/modules/skillLibrary/SkillLibraryController.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAyB/C;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwDrD"}
1
+ {"version":3,"file":"SkillLibraryController.d.ts","sourceRoot":"","sources":["../../../src/modules/skillLibrary/SkillLibraryController.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAiB/C;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwDrD"}
@@ -2,17 +2,17 @@ import { linkSkillSourceContract, listAccountSkillsContract, listSkillSourcesCon
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, UnauthorizedError } from '@cat-factory/kernel';
5
6
  /** Resolve the skill-library module or send a 503 when unconfigured. */
6
7
  function requireLibrary(c) {
7
8
  return c.get('container').skillLibrary ?? null;
8
9
  }
9
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'The Claude Skills library is not configured' } }, 503);
10
- const sourcesUnavailable = (c) => c.json({
11
- error: {
12
- code: 'unavailable',
13
- message: 'Repo-sourced skills require the GitHub integration to be configured',
14
- },
15
- }, 503);
10
+ const unavailable = () => {
11
+ throw new UnavailableError('The Claude Skills library is not configured');
12
+ };
13
+ const sourcesUnavailable = () => {
14
+ throw new UnavailableError('Repo-sourced skills require the GitHub integration to be configured');
15
+ };
16
16
  /**
17
17
  * The repo-sourced Claude Skills library API (docs/initiatives/repo-skills.md).
18
18
  * Skills live in ONE tier (the account, shared across its workspaces), so — unlike
@@ -31,50 +31,50 @@ export function skillLibraryController() {
31
31
  buildHonoRoute(app, listAccountSkillsContract, async (c) => {
32
32
  const lib = requireLibrary(c);
33
33
  if (!lib)
34
- return unavailable(c);
34
+ return unavailable();
35
35
  return c.json(await lib.catalogService.list(accountId(c)), 200);
36
36
  });
37
37
  // ---- repo sources -------------------------------------------------------
38
38
  buildHonoRoute(app, listSkillSourcesContract, async (c) => {
39
39
  const lib = requireLibrary(c);
40
40
  if (!lib)
41
- return unavailable(c);
41
+ return unavailable();
42
42
  if (!lib.sourceService)
43
- return sourcesUnavailable(c);
43
+ return sourcesUnavailable();
44
44
  return c.json(await lib.sourceService.list(accountId(c)), 200);
45
45
  });
46
46
  buildHonoRoute(app, linkSkillSourceContract, async (c) => {
47
47
  const lib = requireLibrary(c);
48
48
  if (!lib)
49
- return unavailable(c);
49
+ return unavailable();
50
50
  if (!lib.sourceService)
51
- return sourcesUnavailable(c);
51
+ return sourcesUnavailable();
52
52
  const source = await lib.sourceService.link(accountId(c), c.req.valid('json'));
53
53
  return c.json(source, 201);
54
54
  });
55
55
  buildHonoRoute(app, unlinkSkillSourceContract, async (c) => {
56
56
  const lib = requireLibrary(c);
57
57
  if (!lib)
58
- return unavailable(c);
58
+ return unavailable();
59
59
  if (!lib.sourceService)
60
- return sourcesUnavailable(c);
60
+ return sourcesUnavailable();
61
61
  await lib.sourceService.unlink(accountId(c), c.req.valid('param').id);
62
62
  return c.body(null, 204);
63
63
  });
64
64
  buildHonoRoute(app, skillSourceStatusContract, async (c) => {
65
65
  const lib = requireLibrary(c);
66
66
  if (!lib)
67
- return unavailable(c);
67
+ return unavailable();
68
68
  if (!lib.sourceService)
69
- return sourcesUnavailable(c);
69
+ return sourcesUnavailable();
70
70
  return c.json(await lib.sourceService.status(accountId(c), c.req.valid('param').id), 200);
71
71
  });
72
72
  buildHonoRoute(app, syncSkillSourceContract, async (c) => {
73
73
  const lib = requireLibrary(c);
74
74
  if (!lib)
75
- return unavailable(c);
75
+ return unavailable();
76
76
  if (!lib.sourceService)
77
- return sourcesUnavailable(c);
77
+ return sourcesUnavailable();
78
78
  return c.json(await lib.sourceService.sync(accountId(c), c.req.valid('param').id), 200);
79
79
  });
80
80
  return app;
@@ -83,7 +83,7 @@ export function skillLibraryController() {
83
83
  async function accountGuard(c, next) {
84
84
  const user = c.get('user');
85
85
  if (!user) {
86
- return c.json({ error: { code: 'unauthorized', message: 'Sign in to manage the skill library' } }, 401);
86
+ throw new UnauthorizedError('Sign in to manage the skill library');
87
87
  }
88
88
  // requireMember throws NotFoundError (→ 404) when the user isn't a member.
89
89
  await c.get('container').accountService.requireMember(param(c, 'accountId'), user.id);
@@ -1 +1 @@
1
- {"version":3,"file":"SkillLibraryController.js","sourceRoot":"","sources":["../../../src/modules/skillLibrary/SkillLibraryController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SkillLibraryController.js","sourceRoot":"","sources":["../../../src/modules/skillLibrary/SkillLibraryController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlackController.d.ts","sourceRoot":"","sources":["../../../src/modules/slack/SlackController.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAmB/C;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,CAsG9C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwBnD"}
1
+ {"version":3,"file":"SlackController.d.ts","sourceRoot":"","sources":["../../../src/modules/slack/SlackController.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB/C;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,CAmG9C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwBnD"}
@@ -4,6 +4,7 @@ import { Hono } from 'hono';
4
4
  import { StateSigner } from '../../github/state.js';
5
5
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
6
6
  import { param } from '../../http/params.js';
7
+ import { UnavailableError, UnauthorizedError } from '@cat-factory/kernel';
7
8
  // The bot scopes the "Add to Slack" flow requests: post messages + read channels
8
9
  // (public + private) so the routing picker can list them. `chat:write.public` lets
9
10
  // the bot post to PUBLIC channels it hasn't been explicitly invited to — without it
@@ -14,7 +15,9 @@ const SLACK_BOT_SCOPES = ['chat:write', 'chat:write.public', 'channels:read', 'g
14
15
  function requireSlack(c) {
15
16
  return c.get('container').slack ?? null;
16
17
  }
17
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Slack integration is not configured' } }, 503);
18
+ const unavailable = () => {
19
+ throw new UnavailableError('Slack integration is not configured');
20
+ };
18
21
  /**
19
22
  * Workspace-scoped Slack endpoints: per-account connection management (manual
20
23
  * bot-token paste + the OAuth "Add to Slack" URL), per-workspace notification
@@ -29,7 +32,7 @@ export function slackController() {
29
32
  buildHonoRoute(app, getSlackConnectionContract, async (c) => {
30
33
  const slack = requireSlack(c);
31
34
  if (!slack)
32
- return unavailable(c);
35
+ return unavailable();
33
36
  const connection = await slack.connectionService.getConnection(param(c, 'workspaceId'));
34
37
  const oauthEnabled = await slack.connectionService.oauthEnabled(param(c, 'workspaceId'));
35
38
  return c.json({ connection, oauthEnabled }, 200);
@@ -40,10 +43,10 @@ export function slackController() {
40
43
  buildHonoRoute(app, getSlackInstallUrlContract, async (c) => {
41
44
  const slack = requireSlack(c);
42
45
  if (!slack)
43
- return unavailable(c);
46
+ return unavailable();
44
47
  const workspaceId = param(c, 'workspaceId');
45
48
  if (!(await slack.connectionService.oauthEnabled(workspaceId))) {
46
- return c.json({ error: { code: 'unavailable', message: 'Slack OAuth is not configured' } }, 503);
49
+ throw new UnavailableError('Slack OAuth is not configured');
47
50
  }
48
51
  const signer = new StateSigner(c.get('container').config.auth.sessionSecret);
49
52
  const state = await signer.sign({
@@ -58,14 +61,14 @@ export function slackController() {
58
61
  buildHonoRoute(app, connectSlackContract, async (c) => {
59
62
  const slack = requireSlack(c);
60
63
  if (!slack)
61
- return unavailable(c);
64
+ return unavailable();
62
65
  const connection = await slack.connectionService.connectWithToken(param(c, 'workspaceId'), c.req.valid('json').token);
63
66
  return c.json(connection, 201);
64
67
  });
65
68
  buildHonoRoute(app, disconnectSlackContract, async (c) => {
66
69
  const slack = requireSlack(c);
67
70
  if (!slack)
68
- return unavailable(c);
71
+ return unavailable();
69
72
  await slack.connectionService.disconnect(param(c, 'workspaceId'));
70
73
  return c.body(null, 204);
71
74
  });
@@ -73,7 +76,7 @@ export function slackController() {
73
76
  buildHonoRoute(app, listSlackChannelsContract, async (c) => {
74
77
  const slack = requireSlack(c);
75
78
  if (!slack)
76
- return unavailable(c);
79
+ return unavailable();
77
80
  const channels = await slack.connectionService.listChannels(param(c, 'workspaceId'));
78
81
  return c.json({ channels }, 200);
79
82
  });
@@ -81,14 +84,14 @@ export function slackController() {
81
84
  buildHonoRoute(app, getSlackSettingsContract, async (c) => {
82
85
  const slack = requireSlack(c);
83
86
  if (!slack)
84
- return unavailable(c);
87
+ return unavailable();
85
88
  const settings = await slack.settingsService.get(param(c, 'workspaceId'));
86
89
  return c.json(settings, 200);
87
90
  });
88
91
  buildHonoRoute(app, updateSlackSettingsContract, async (c) => {
89
92
  const slack = requireSlack(c);
90
93
  if (!slack)
91
- return unavailable(c);
94
+ return unavailable();
92
95
  const settings = await slack.settingsService.update(param(c, 'workspaceId'), c.req.valid('json'));
93
96
  return c.json(settings, 200);
94
97
  });
@@ -96,14 +99,14 @@ export function slackController() {
96
99
  buildHonoRoute(app, getSlackMemberMappingContract, async (c) => {
97
100
  const slack = requireSlack(c);
98
101
  if (!slack)
99
- return unavailable(c);
102
+ return unavailable();
100
103
  const entries = await slack.memberMappingService.get(param(c, 'workspaceId'));
101
104
  return c.json({ entries }, 200);
102
105
  });
103
106
  buildHonoRoute(app, updateSlackMemberMappingContract, async (c) => {
104
107
  const slack = requireSlack(c);
105
108
  if (!slack)
106
- return unavailable(c);
109
+ return unavailable();
107
110
  const entries = await slack.memberMappingService.update(param(c, 'workspaceId'), c.req.valid('json').entries);
108
111
  return c.json({ entries }, 200);
109
112
  });
@@ -120,7 +123,7 @@ export function slackOAuthController() {
120
123
  const container = c.get('container');
121
124
  const slack = container.slack;
122
125
  if (!slack)
123
- return unavailable(c);
126
+ return unavailable();
124
127
  const code = c.req.query('code');
125
128
  if (!code) {
126
129
  return c.json({ error: { code: 'validation', message: 'Missing code' } }, 400);
@@ -128,7 +131,7 @@ export function slackOAuthController() {
128
131
  const signer = new StateSigner(container.config.auth.sessionSecret);
129
132
  const state = await signer.verify(c.req.query('state') ?? null);
130
133
  if (!state) {
131
- return c.json({ error: { code: 'unauthorized', message: 'Invalid or expired state' } }, 401);
134
+ throw new UnauthorizedError('Invalid or expired state');
132
135
  }
133
136
  await slack.connectionService.connectViaOAuth(state.workspaceId, code);
134
137
  // Land back on the app (reuse the GitHub setup redirect target as the app URL).
@@ -1 +1 @@
1
- {"version":3,"file":"SlackController.js","sourceRoot":"","sources":["../../../src/modules/slack/SlackController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlackController.js","sourceRoot":"","sources":["../../../src/modules/slack/SlackController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/TaskSourceController.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAM3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAyF/C;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwPnD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CAgCpD"}
1
+ {"version":3,"file":"TaskSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/TaskSourceController.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAW3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAuF/C;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqPnD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CAgCpD"}