@cat-factory/server 0.167.0 → 0.170.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 (220) hide show
  1. package/dist/agents/modelProviderResolver.d.ts +9 -1
  2. package/dist/agents/modelProviderResolver.d.ts.map +1 -1
  3. package/dist/agents/modelProviderResolver.js +1 -0
  4. package/dist/agents/modelProviderResolver.js.map +1 -1
  5. package/dist/agents/storeAgentContextGate.d.ts +36 -0
  6. package/dist/agents/storeAgentContextGate.d.ts.map +1 -0
  7. package/dist/agents/storeAgentContextGate.js +36 -0
  8. package/dist/agents/storeAgentContextGate.js.map +1 -0
  9. package/dist/app.d.ts.map +1 -1
  10. package/dist/app.js +5 -0
  11. package/dist/app.js.map +1 -1
  12. package/dist/auth/middleware.d.ts.map +1 -1
  13. package/dist/auth/middleware.js +2 -1
  14. package/dist/auth/middleware.js.map +1 -1
  15. package/dist/http/errorHandler.d.ts.map +1 -1
  16. package/dist/http/errorHandler.js +6 -0
  17. package/dist/http/errorHandler.js.map +1 -1
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  23. package/dist/modules/accounts/AccountController.js +37 -31
  24. package/dist/modules/accounts/AccountController.js.map +1 -1
  25. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  26. package/dist/modules/agentRuns/AgentRunController.js +9 -6
  27. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  28. package/dist/modules/artifacts/ArtifactController.d.ts.map +1 -1
  29. package/dist/modules/artifacts/ArtifactController.js +8 -5
  30. package/dist/modules/artifacts/ArtifactController.js.map +1 -1
  31. package/dist/modules/artifacts/HarnessArtifactController.d.ts.map +1 -1
  32. package/dist/modules/artifacts/HarnessArtifactController.js +5 -4
  33. package/dist/modules/artifacts/HarnessArtifactController.js.map +1 -1
  34. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  35. package/dist/modules/auth/AuthController.js +48 -50
  36. package/dist/modules/auth/AuthController.js.map +1 -1
  37. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  38. package/dist/modules/bootstrap/BootstrapController.js +12 -9
  39. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  40. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  41. package/dist/modules/brainstorm/BrainstormController.js +12 -9
  42. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  43. package/dist/modules/bugHunt/BugHuntController.d.ts.map +1 -1
  44. package/dist/modules/bugHunt/BugHuntController.js +7 -5
  45. package/dist/modules/bugHunt/BugHuntController.js.map +1 -1
  46. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  47. package/dist/modules/clarity/ClarityReviewController.js +12 -9
  48. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  49. package/dist/modules/docInterview/DocInterviewController.d.ts.map +1 -1
  50. package/dist/modules/docInterview/DocInterviewController.js +8 -5
  51. package/dist/modules/docInterview/DocInterviewController.js.map +1 -1
  52. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  53. package/dist/modules/documents/DocumentSourceController.js +17 -15
  54. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  55. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  56. package/dist/modules/environments/EnvironmentController.js +33 -33
  57. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  58. package/dist/modules/environments/EnvironmentUserHandlerController.d.ts.map +1 -1
  59. package/dist/modules/environments/EnvironmentUserHandlerController.js +13 -9
  60. package/dist/modules/environments/EnvironmentUserHandlerController.js.map +1 -1
  61. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  62. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +32 -41
  63. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  64. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  65. package/dist/modules/github/GitHubController.js +26 -23
  66. package/dist/modules/github/GitHubController.js.map +1 -1
  67. package/dist/modules/github/GitHubWebhookController.d.ts.map +1 -1
  68. package/dist/modules/github/GitHubWebhookController.js +5 -4
  69. package/dist/modules/github/GitHubWebhookController.js.map +1 -1
  70. package/dist/modules/gitlab/GitLabController.d.ts.map +1 -1
  71. package/dist/modules/gitlab/GitLabController.js +7 -4
  72. package/dist/modules/gitlab/GitLabController.js.map +1 -1
  73. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  74. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -9
  75. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  76. package/dist/modules/initiatives/InitiativeController.d.ts.map +1 -1
  77. package/dist/modules/initiatives/InitiativeController.js +20 -17
  78. package/dist/modules/initiatives/InitiativeController.js.map +1 -1
  79. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  80. package/dist/modules/kaizen/KaizenController.js +6 -3
  81. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  82. package/dist/modules/llmProxy/LlmProxyController.d.ts.map +1 -1
  83. package/dist/modules/llmProxy/LlmProxyController.js +41 -12
  84. package/dist/modules/llmProxy/LlmProxyController.js.map +1 -1
  85. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  86. package/dist/modules/localModels/LocalModelEndpointController.js +15 -10
  87. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  88. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  89. package/dist/modules/localSettings/LocalSettingsController.js +6 -8
  90. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  91. package/dist/modules/localSettings/MothershipConnectController.d.ts.map +1 -1
  92. package/dist/modules/localSettings/MothershipConnectController.js +2 -6
  93. package/dist/modules/localSettings/MothershipConnectController.js.map +1 -1
  94. package/dist/modules/merge/MergeTrackRecordController.d.ts.map +1 -1
  95. package/dist/modules/merge/MergeTrackRecordController.js +6 -3
  96. package/dist/modules/merge/MergeTrackRecordController.js.map +1 -1
  97. package/dist/modules/merge/RiskPolicyController.d.ts.map +1 -1
  98. package/dist/modules/merge/RiskPolicyController.js +9 -6
  99. package/dist/modules/merge/RiskPolicyController.js.map +1 -1
  100. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  101. package/dist/modules/modelPresets/ModelPresetController.js +9 -6
  102. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  103. package/dist/modules/notificationWebhook/NotificationWebhookController.d.ts.map +1 -1
  104. package/dist/modules/notificationWebhook/NotificationWebhookController.js +7 -4
  105. package/dist/modules/notificationWebhook/NotificationWebhookController.js.map +1 -1
  106. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  107. package/dist/modules/notifications/NotificationController.js +7 -4
  108. package/dist/modules/notifications/NotificationController.js.map +1 -1
  109. package/dist/modules/observability/PlatformObservabilityController.d.ts.map +1 -1
  110. package/dist/modules/observability/PlatformObservabilityController.js +6 -8
  111. package/dist/modules/observability/PlatformObservabilityController.js.map +1 -1
  112. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  113. package/dist/modules/openrouter/OpenRouterCatalogController.js +13 -8
  114. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  115. package/dist/modules/packageRegistries/PackageRegistriesController.d.ts.map +1 -1
  116. package/dist/modules/packageRegistries/PackageRegistriesController.js +7 -9
  117. package/dist/modules/packageRegistries/PackageRegistriesController.js.map +1 -1
  118. package/dist/modules/persistence/GitHubDelegationController.d.ts.map +1 -1
  119. package/dist/modules/persistence/GitHubDelegationController.js +3 -7
  120. package/dist/modules/persistence/GitHubDelegationController.js.map +1 -1
  121. package/dist/modules/preflight/PreflightController.d.ts.map +1 -1
  122. package/dist/modules/preflight/PreflightController.js +5 -7
  123. package/dist/modules/preflight/PreflightController.js.map +1 -1
  124. package/dist/modules/preview/PreviewController.d.ts.map +1 -1
  125. package/dist/modules/preview/PreviewController.js +7 -9
  126. package/dist/modules/preview/PreviewController.js.map +1 -1
  127. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  128. package/dist/modules/providers/ApiKeyController.js +19 -14
  129. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  130. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  131. package/dist/modules/providers/PersonalSubscriptionController.js +13 -8
  132. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  133. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  134. package/dist/modules/providers/UserSecretController.js +17 -12
  135. package/dist/modules/providers/UserSecretController.js.map +1 -1
  136. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  137. package/dist/modules/providers/VendorCredentialController.js +8 -10
  138. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  139. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  140. package/dist/modules/provisioningLogs/ProvisioningLogController.js +6 -3
  141. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  142. package/dist/modules/publicApi/PublicApiController.js +4 -4
  143. package/dist/modules/publicApi/PublicApiController.js.map +1 -1
  144. package/dist/modules/publicApi/PublicApiKeyController.d.ts.map +1 -1
  145. package/dist/modules/publicApi/PublicApiKeyController.js +7 -4
  146. package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -1
  147. package/dist/modules/publicApi/PublicDebugController.d.ts +4 -0
  148. package/dist/modules/publicApi/PublicDebugController.d.ts.map +1 -0
  149. package/dist/modules/publicApi/PublicDebugController.js +241 -0
  150. package/dist/modules/publicApi/PublicDebugController.js.map +1 -0
  151. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  152. package/dist/modules/recurring/RecurringPipelineController.js +10 -7
  153. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  154. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  155. package/dist/modules/recurring/TrackerSettingsController.js +6 -3
  156. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  157. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  158. package/dist/modules/releaseHealth/ReleaseHealthController.js +10 -7
  159. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  160. package/dist/modules/reports/ReportsController.d.ts.map +1 -1
  161. package/dist/modules/reports/ReportsController.js +6 -3
  162. package/dist/modules/reports/ReportsController.js.map +1 -1
  163. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  164. package/dist/modules/requirements/RequirementReviewController.js +16 -13
  165. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  166. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  167. package/dist/modules/runners/RunnerPoolController.js +10 -7
  168. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  169. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  170. package/dist/modules/sandbox/SandboxController.js +17 -14
  171. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  172. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  173. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -3
  174. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  175. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  176. package/dist/modules/services/ServiceMountController.js +9 -6
  177. package/dist/modules/services/ServiceMountController.js.map +1 -1
  178. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  179. package/dist/modules/settings/WorkspaceSettingsController.js +6 -3
  180. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  181. package/dist/modules/sharedStack/SharedStackController.d.ts.map +1 -1
  182. package/dist/modules/sharedStack/SharedStackController.js +11 -8
  183. package/dist/modules/sharedStack/SharedStackController.js.map +1 -1
  184. package/dist/modules/skillLibrary/SkillLibraryController.d.ts.map +1 -1
  185. package/dist/modules/skillLibrary/SkillLibraryController.js +19 -19
  186. package/dist/modules/skillLibrary/SkillLibraryController.js.map +1 -1
  187. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  188. package/dist/modules/slack/SlackController.js +16 -13
  189. package/dist/modules/slack/SlackController.js.map +1 -1
  190. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  191. package/dist/modules/tasks/TaskSourceController.js +26 -24
  192. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  193. package/dist/modules/tasks/TaskWebhookController.d.ts.map +1 -1
  194. package/dist/modules/tasks/TaskWebhookController.js +4 -4
  195. package/dist/modules/tasks/TaskWebhookController.js.map +1 -1
  196. package/dist/modules/testSecrets/TestSecretsController.d.ts.map +1 -1
  197. package/dist/modules/testSecrets/TestSecretsController.js +7 -9
  198. package/dist/modules/testSecrets/TestSecretsController.js.map +1 -1
  199. package/dist/modules/userSettings/UserSettingsController.d.ts.map +1 -1
  200. package/dist/modules/userSettings/UserSettingsController.js +11 -6
  201. package/dist/modules/userSettings/UserSettingsController.js.map +1 -1
  202. package/dist/modules/validation/ValidationConfigController.d.ts.map +1 -1
  203. package/dist/modules/validation/ValidationConfigController.js +52 -11
  204. package/dist/modules/validation/ValidationConfigController.js.map +1 -1
  205. package/dist/modules/vcs/VcsWebhookController.d.ts.map +1 -1
  206. package/dist/modules/vcs/VcsWebhookController.js +5 -5
  207. package/dist/modules/vcs/VcsWebhookController.js.map +1 -1
  208. package/dist/modules/webSearch/WebSearchProxyController.d.ts.map +1 -1
  209. package/dist/modules/webSearch/WebSearchProxyController.js +3 -3
  210. package/dist/modules/webSearch/WebSearchProxyController.js.map +1 -1
  211. package/dist/modules/workspaces/WorkspaceMemberController.d.ts.map +1 -1
  212. package/dist/modules/workspaces/WorkspaceMemberController.js +9 -6
  213. package/dist/modules/workspaces/WorkspaceMemberController.js.map +1 -1
  214. package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
  215. package/dist/persistence/rpc-allowlist.js +16 -1
  216. package/dist/persistence/rpc-allowlist.js.map +1 -1
  217. package/dist/persistence/rpc.d.ts.map +1 -1
  218. package/dist/persistence/rpc.js +3 -0
  219. package/dist/persistence/rpc.js.map +1 -1
  220. package/package.json +8 -8
@@ -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"}
@@ -2,7 +2,7 @@ import { clearTaskSourceWebhookContract, configureTaskSourceWebhookContract, con
2
2
  import * as v from 'valibot';
3
3
  import { buildHonoRoute } from '@toad-contracts/hono';
4
4
  import { Hono } from 'hono';
5
- import { ValidationError } from '@cat-factory/kernel';
5
+ import { ValidationError, UnavailableError, UnauthorizedError, } from '@cat-factory/kernel';
6
6
  import { LinearOAuth } from '../../auth/LinearOAuth.js';
7
7
  import { StateSigner } from '../../github/state.js';
8
8
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
@@ -11,7 +11,9 @@ import { param } from '../../http/params.js';
11
11
  function requireTasks(c) {
12
12
  return c.get('container').tasks ?? null;
13
13
  }
14
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Task-source integration is not configured' } }, 503);
14
+ const unavailable = () => {
15
+ throw new UnavailableError('Task-source integration is not configured');
16
+ };
15
17
  /** Read + validate the `:source` path param as a known source kind. */
16
18
  function sourceParam(c) {
17
19
  const source = param(c, 'source');
@@ -95,7 +97,7 @@ export function taskSourceController() {
95
97
  buildHonoRoute(app, listTaskSourcesContract, async (c) => {
96
98
  const tasks = requireTasks(c);
97
99
  if (!tasks)
98
- return unavailable(c);
100
+ return unavailable();
99
101
  const sources = await tasks.connectionService.listSourceStates(param(c, 'workspaceId'));
100
102
  return c.json({ sources }, 200);
101
103
  });
@@ -106,7 +108,7 @@ export function taskSourceController() {
106
108
  buildHonoRoute(app, setTaskSourceEnabledContract, async (c) => {
107
109
  const tasks = requireTasks(c);
108
110
  if (!tasks)
109
- return unavailable(c);
111
+ return unavailable();
110
112
  await tasks.connectionService.setEnabled(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').enabled);
111
113
  return c.body(null, 204);
112
114
  });
@@ -114,21 +116,21 @@ export function taskSourceController() {
114
116
  buildHonoRoute(app, listTaskConnectionsContract, async (c) => {
115
117
  const tasks = requireTasks(c);
116
118
  if (!tasks)
117
- return unavailable(c);
119
+ return unavailable();
118
120
  const connections = await tasks.connectionService.listConnections(param(c, 'workspaceId'));
119
121
  return c.json({ connections }, 200);
120
122
  });
121
123
  buildHonoRoute(app, connectTaskSourceContract, async (c) => {
122
124
  const tasks = requireTasks(c);
123
125
  if (!tasks)
124
- return unavailable(c);
126
+ return unavailable();
125
127
  const connection = await tasks.connectionService.connect(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').credentials);
126
128
  return c.json(connection, 201);
127
129
  });
128
130
  buildHonoRoute(app, disconnectTaskSourceContract, async (c) => {
129
131
  const tasks = requireTasks(c);
130
132
  if (!tasks)
131
- return unavailable(c);
133
+ return unavailable();
132
134
  await tasks.connectionService.disconnect(param(c, 'workspaceId'), sourceParam(c));
133
135
  return c.body(null, 204);
134
136
  });
@@ -140,7 +142,7 @@ export function taskSourceController() {
140
142
  buildHonoRoute(app, diagnoseTaskSourceContract, async (c) => {
141
143
  const tasks = requireTasks(c);
142
144
  if (!tasks)
143
- return unavailable(c);
145
+ return unavailable();
144
146
  const diagnostic = await tasks.connectionService.diagnose(param(c, 'workspaceId'), sourceParam(c));
145
147
  return c.json(diagnostic, 200);
146
148
  });
@@ -153,7 +155,7 @@ export function taskSourceController() {
153
155
  buildHonoRoute(app, getTaskSourceWebhookContract, async (c) => {
154
156
  const tasks = requireTasks(c);
155
157
  if (!tasks)
156
- return unavailable(c);
158
+ return unavailable();
157
159
  const state = await tasks.connectionService.getWebhookState(param(c, 'workspaceId'), sourceParam(c));
158
160
  return c.json(state, 200);
159
161
  });
@@ -162,7 +164,7 @@ export function taskSourceController() {
162
164
  buildHonoRoute(app, configureTaskSourceWebhookContract, async (c) => {
163
165
  const tasks = requireTasks(c);
164
166
  if (!tasks)
165
- return unavailable(c);
167
+ return unavailable();
166
168
  const minted = await tasks.connectionService.mintWebhookSecret(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json'));
167
169
  return c.json(minted, 201);
168
170
  });
@@ -171,7 +173,7 @@ export function taskSourceController() {
171
173
  buildHonoRoute(app, updateTaskSourceWebhookContract, async (c) => {
172
174
  const tasks = requireTasks(c);
173
175
  if (!tasks)
174
- return unavailable(c);
176
+ return unavailable();
175
177
  const state = await tasks.connectionService.updateWebhookReplyAllow(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').replyAllow);
176
178
  return c.json(state, 200);
177
179
  });
@@ -180,7 +182,7 @@ export function taskSourceController() {
180
182
  buildHonoRoute(app, clearTaskSourceWebhookContract, async (c) => {
181
183
  const tasks = requireTasks(c);
182
184
  if (!tasks)
183
- return unavailable(c);
185
+ return unavailable();
184
186
  await tasks.connectionService.clearWebhookSecret(param(c, 'workspaceId'), sourceParam(c));
185
187
  return c.body(null, 204);
186
188
  });
@@ -190,7 +192,7 @@ export function taskSourceController() {
190
192
  buildHonoRoute(app, listLinearTeamsContract, async (c) => {
191
193
  const tasks = requireTasks(c);
192
194
  if (!tasks)
193
- return unavailable(c);
195
+ return unavailable();
194
196
  const teams = await tasks.connectionService.listLinearTeams(param(c, 'workspaceId'));
195
197
  return c.json({ teams }, 200);
196
198
  });
@@ -200,13 +202,13 @@ export function taskSourceController() {
200
202
  buildHonoRoute(app, getLinearInstallUrlContract, async (c) => {
201
203
  const tasks = requireTasks(c);
202
204
  if (!tasks)
203
- return unavailable(c);
205
+ return unavailable();
204
206
  const workspaceId = param(c, 'workspaceId');
205
207
  // OAuth app creds live in per-account deployment settings (sealed in the DB), resolved
206
208
  // dynamically — not env. Absent ⇒ OAuth isn't offered (manual API-key paste still works).
207
209
  const oauth = await tasks.connectionService.resolveLinearOAuthConfig(workspaceId);
208
210
  if (!oauth) {
209
- return c.json({ error: { code: 'unavailable', message: 'Linear OAuth is not configured' } }, 503);
211
+ throw new UnavailableError('Linear OAuth is not configured');
210
212
  }
211
213
  const signer = new StateSigner(c.get('container').config.auth.sessionSecret);
212
214
  const state = await signer.sign({
@@ -224,14 +226,14 @@ export function taskSourceController() {
224
226
  buildHonoRoute(app, listTasksContract, async (c) => {
225
227
  const tasks = requireTasks(c);
226
228
  if (!tasks)
227
- return unavailable(c);
229
+ return unavailable();
228
230
  const scope = await resolveListScope(c, c.req.valid('query').blockId);
229
231
  return c.json(await tasks.importService.listTasks(param(c, 'workspaceId'), scope), 200);
230
232
  });
231
233
  buildHonoRoute(app, importTaskContract, async (c) => {
232
234
  const tasks = requireTasks(c);
233
235
  if (!tasks)
234
- return unavailable(c);
236
+ return unavailable();
235
237
  const task = await tasks.importService.import(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').ref);
236
238
  return c.json(task, 201);
237
239
  });
@@ -240,7 +242,7 @@ export function taskSourceController() {
240
242
  buildHonoRoute(app, searchTasksContract, async (c) => {
241
243
  const tasks = requireTasks(c);
242
244
  if (!tasks)
243
- return unavailable(c);
245
+ return unavailable();
244
246
  const source = sourceParam(c);
245
247
  const { query, blockId } = c.req.valid('json');
246
248
  const scope = await resolveSearchScope(c, source, blockId);
@@ -252,7 +254,7 @@ export function taskSourceController() {
252
254
  buildHonoRoute(app, linkTaskContract, async (c) => {
253
255
  const tasks = requireTasks(c);
254
256
  if (!tasks)
255
- return unavailable(c);
257
+ return unavailable();
256
258
  const { source, externalId, blockId } = c.req.valid('json');
257
259
  const task = await tasks.linkService.linkToBlock(param(c, 'workspaceId'), blockId, source, externalId);
258
260
  return c.json(task, 201);
@@ -262,7 +264,7 @@ export function taskSourceController() {
262
264
  buildHonoRoute(app, createTaskFromIssueContract, async (c) => {
263
265
  const tasks = requireTasks(c);
264
266
  if (!tasks)
265
- return unavailable(c);
267
+ return unavailable();
266
268
  const { source, externalId, containerId } = c.req.valid('json');
267
269
  const result = await tasks.linkService.createTaskFromIssue(param(c, 'workspaceId'), containerId, source, externalId, c.get('user')?.id ?? null);
268
270
  return c.json(result, 201);
@@ -273,7 +275,7 @@ export function taskSourceController() {
273
275
  buildHonoRoute(app, spawnEpicContract, async (c) => {
274
276
  const tasks = requireTasks(c);
275
277
  if (!tasks)
276
- return unavailable(c);
278
+ return unavailable();
277
279
  const { ref, containerId, position } = c.req.valid('json');
278
280
  const result = await tasks.linkService.spawnEpic(param(c, 'workspaceId'), sourceParam(c), ref, containerId, c.get('user')?.id ?? null, position);
279
281
  return c.json(result, 201);
@@ -293,7 +295,7 @@ export function linearOAuthController() {
293
295
  const container = c.get('container');
294
296
  const tasks = container.tasks;
295
297
  if (!tasks)
296
- return unavailable(c);
298
+ return unavailable();
297
299
  const code = c.req.query('code');
298
300
  if (!code) {
299
301
  return c.json({ error: { code: 'validation', message: 'Missing code' } }, 400);
@@ -301,13 +303,13 @@ export function linearOAuthController() {
301
303
  const signer = new StateSigner(container.config.auth.sessionSecret);
302
304
  const state = await signer.verify(c.req.query('state') ?? null);
303
305
  if (!state) {
304
- return c.json({ error: { code: 'unauthorized', message: 'Invalid or expired state' } }, 401);
306
+ throw new UnauthorizedError('Invalid or expired state');
305
307
  }
306
308
  // Resolve the account's OAuth creds (per-account deployment settings, not env). The
307
309
  // redirect_uri must match the install-url + the registered app, so reuse the stored one.
308
310
  const oauth = await tasks.connectionService.resolveLinearOAuthConfig(state.workspaceId);
309
311
  if (!oauth)
310
- return unavailable(c);
312
+ return unavailable();
311
313
  const token = await new LinearOAuth({
312
314
  clientId: oauth.clientId,
313
315
  clientSecret: oauth.clientSecret,