@cat-factory/server 0.167.0 → 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 (213) 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/auth/middleware.d.ts.map +1 -1
  10. package/dist/auth/middleware.js +2 -1
  11. package/dist/auth/middleware.js.map +1 -1
  12. package/dist/http/errorHandler.d.ts.map +1 -1
  13. package/dist/http/errorHandler.js +6 -0
  14. package/dist/http/errorHandler.js.map +1 -1
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  20. package/dist/modules/accounts/AccountController.js +37 -31
  21. package/dist/modules/accounts/AccountController.js.map +1 -1
  22. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  23. package/dist/modules/agentRuns/AgentRunController.js +9 -6
  24. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  25. package/dist/modules/artifacts/ArtifactController.d.ts.map +1 -1
  26. package/dist/modules/artifacts/ArtifactController.js +8 -5
  27. package/dist/modules/artifacts/ArtifactController.js.map +1 -1
  28. package/dist/modules/artifacts/HarnessArtifactController.d.ts.map +1 -1
  29. package/dist/modules/artifacts/HarnessArtifactController.js +5 -4
  30. package/dist/modules/artifacts/HarnessArtifactController.js.map +1 -1
  31. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  32. package/dist/modules/auth/AuthController.js +48 -50
  33. package/dist/modules/auth/AuthController.js.map +1 -1
  34. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  35. package/dist/modules/bootstrap/BootstrapController.js +12 -9
  36. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  37. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  38. package/dist/modules/brainstorm/BrainstormController.js +12 -9
  39. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  40. package/dist/modules/bugHunt/BugHuntController.d.ts.map +1 -1
  41. package/dist/modules/bugHunt/BugHuntController.js +7 -5
  42. package/dist/modules/bugHunt/BugHuntController.js.map +1 -1
  43. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  44. package/dist/modules/clarity/ClarityReviewController.js +12 -9
  45. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  46. package/dist/modules/docInterview/DocInterviewController.d.ts.map +1 -1
  47. package/dist/modules/docInterview/DocInterviewController.js +8 -5
  48. package/dist/modules/docInterview/DocInterviewController.js.map +1 -1
  49. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  50. package/dist/modules/documents/DocumentSourceController.js +17 -15
  51. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  52. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  53. package/dist/modules/environments/EnvironmentController.js +33 -33
  54. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  55. package/dist/modules/environments/EnvironmentUserHandlerController.d.ts.map +1 -1
  56. package/dist/modules/environments/EnvironmentUserHandlerController.js +13 -9
  57. package/dist/modules/environments/EnvironmentUserHandlerController.js.map +1 -1
  58. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  59. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +32 -41
  60. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  61. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  62. package/dist/modules/github/GitHubController.js +26 -23
  63. package/dist/modules/github/GitHubController.js.map +1 -1
  64. package/dist/modules/github/GitHubWebhookController.d.ts.map +1 -1
  65. package/dist/modules/github/GitHubWebhookController.js +5 -4
  66. package/dist/modules/github/GitHubWebhookController.js.map +1 -1
  67. package/dist/modules/gitlab/GitLabController.d.ts.map +1 -1
  68. package/dist/modules/gitlab/GitLabController.js +7 -4
  69. package/dist/modules/gitlab/GitLabController.js.map +1 -1
  70. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  71. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -9
  72. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  73. package/dist/modules/initiatives/InitiativeController.d.ts.map +1 -1
  74. package/dist/modules/initiatives/InitiativeController.js +20 -17
  75. package/dist/modules/initiatives/InitiativeController.js.map +1 -1
  76. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  77. package/dist/modules/kaizen/KaizenController.js +6 -3
  78. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  79. package/dist/modules/llmProxy/LlmProxyController.d.ts.map +1 -1
  80. package/dist/modules/llmProxy/LlmProxyController.js +41 -12
  81. package/dist/modules/llmProxy/LlmProxyController.js.map +1 -1
  82. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  83. package/dist/modules/localModels/LocalModelEndpointController.js +15 -10
  84. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  85. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  86. package/dist/modules/localSettings/LocalSettingsController.js +6 -8
  87. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  88. package/dist/modules/localSettings/MothershipConnectController.d.ts.map +1 -1
  89. package/dist/modules/localSettings/MothershipConnectController.js +2 -6
  90. package/dist/modules/localSettings/MothershipConnectController.js.map +1 -1
  91. package/dist/modules/merge/MergeTrackRecordController.d.ts.map +1 -1
  92. package/dist/modules/merge/MergeTrackRecordController.js +6 -3
  93. package/dist/modules/merge/MergeTrackRecordController.js.map +1 -1
  94. package/dist/modules/merge/RiskPolicyController.d.ts.map +1 -1
  95. package/dist/modules/merge/RiskPolicyController.js +9 -6
  96. package/dist/modules/merge/RiskPolicyController.js.map +1 -1
  97. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  98. package/dist/modules/modelPresets/ModelPresetController.js +9 -6
  99. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  100. package/dist/modules/notificationWebhook/NotificationWebhookController.d.ts.map +1 -1
  101. package/dist/modules/notificationWebhook/NotificationWebhookController.js +7 -4
  102. package/dist/modules/notificationWebhook/NotificationWebhookController.js.map +1 -1
  103. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  104. package/dist/modules/notifications/NotificationController.js +7 -4
  105. package/dist/modules/notifications/NotificationController.js.map +1 -1
  106. package/dist/modules/observability/PlatformObservabilityController.d.ts.map +1 -1
  107. package/dist/modules/observability/PlatformObservabilityController.js +6 -8
  108. package/dist/modules/observability/PlatformObservabilityController.js.map +1 -1
  109. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  110. package/dist/modules/openrouter/OpenRouterCatalogController.js +13 -8
  111. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  112. package/dist/modules/packageRegistries/PackageRegistriesController.d.ts.map +1 -1
  113. package/dist/modules/packageRegistries/PackageRegistriesController.js +7 -9
  114. package/dist/modules/packageRegistries/PackageRegistriesController.js.map +1 -1
  115. package/dist/modules/persistence/GitHubDelegationController.d.ts.map +1 -1
  116. package/dist/modules/persistence/GitHubDelegationController.js +3 -7
  117. package/dist/modules/persistence/GitHubDelegationController.js.map +1 -1
  118. package/dist/modules/preflight/PreflightController.d.ts.map +1 -1
  119. package/dist/modules/preflight/PreflightController.js +5 -7
  120. package/dist/modules/preflight/PreflightController.js.map +1 -1
  121. package/dist/modules/preview/PreviewController.d.ts.map +1 -1
  122. package/dist/modules/preview/PreviewController.js +7 -9
  123. package/dist/modules/preview/PreviewController.js.map +1 -1
  124. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  125. package/dist/modules/providers/ApiKeyController.js +19 -14
  126. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  127. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  128. package/dist/modules/providers/PersonalSubscriptionController.js +13 -8
  129. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  130. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  131. package/dist/modules/providers/UserSecretController.js +17 -12
  132. package/dist/modules/providers/UserSecretController.js.map +1 -1
  133. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  134. package/dist/modules/providers/VendorCredentialController.js +8 -10
  135. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  136. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  137. package/dist/modules/provisioningLogs/ProvisioningLogController.js +5 -2
  138. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  139. package/dist/modules/publicApi/PublicApiController.js +4 -4
  140. package/dist/modules/publicApi/PublicApiController.js.map +1 -1
  141. package/dist/modules/publicApi/PublicApiKeyController.d.ts.map +1 -1
  142. package/dist/modules/publicApi/PublicApiKeyController.js +7 -4
  143. package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -1
  144. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  145. package/dist/modules/recurring/RecurringPipelineController.js +10 -7
  146. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  147. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  148. package/dist/modules/recurring/TrackerSettingsController.js +6 -3
  149. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  150. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  151. package/dist/modules/releaseHealth/ReleaseHealthController.js +10 -7
  152. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  153. package/dist/modules/reports/ReportsController.d.ts.map +1 -1
  154. package/dist/modules/reports/ReportsController.js +6 -3
  155. package/dist/modules/reports/ReportsController.js.map +1 -1
  156. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  157. package/dist/modules/requirements/RequirementReviewController.js +16 -13
  158. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  159. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  160. package/dist/modules/runners/RunnerPoolController.js +10 -7
  161. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  162. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  163. package/dist/modules/sandbox/SandboxController.js +17 -14
  164. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  165. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  166. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -3
  167. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  168. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  169. package/dist/modules/services/ServiceMountController.js +9 -6
  170. package/dist/modules/services/ServiceMountController.js.map +1 -1
  171. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  172. package/dist/modules/settings/WorkspaceSettingsController.js +6 -3
  173. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  174. package/dist/modules/sharedStack/SharedStackController.d.ts.map +1 -1
  175. package/dist/modules/sharedStack/SharedStackController.js +11 -8
  176. package/dist/modules/sharedStack/SharedStackController.js.map +1 -1
  177. package/dist/modules/skillLibrary/SkillLibraryController.d.ts.map +1 -1
  178. package/dist/modules/skillLibrary/SkillLibraryController.js +19 -19
  179. package/dist/modules/skillLibrary/SkillLibraryController.js.map +1 -1
  180. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  181. package/dist/modules/slack/SlackController.js +16 -13
  182. package/dist/modules/slack/SlackController.js.map +1 -1
  183. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  184. package/dist/modules/tasks/TaskSourceController.js +26 -24
  185. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  186. package/dist/modules/tasks/TaskWebhookController.d.ts.map +1 -1
  187. package/dist/modules/tasks/TaskWebhookController.js +4 -4
  188. package/dist/modules/tasks/TaskWebhookController.js.map +1 -1
  189. package/dist/modules/testSecrets/TestSecretsController.d.ts.map +1 -1
  190. package/dist/modules/testSecrets/TestSecretsController.js +7 -9
  191. package/dist/modules/testSecrets/TestSecretsController.js.map +1 -1
  192. package/dist/modules/userSettings/UserSettingsController.d.ts.map +1 -1
  193. package/dist/modules/userSettings/UserSettingsController.js +11 -6
  194. package/dist/modules/userSettings/UserSettingsController.js.map +1 -1
  195. package/dist/modules/validation/ValidationConfigController.d.ts.map +1 -1
  196. package/dist/modules/validation/ValidationConfigController.js +52 -11
  197. package/dist/modules/validation/ValidationConfigController.js.map +1 -1
  198. package/dist/modules/vcs/VcsWebhookController.d.ts.map +1 -1
  199. package/dist/modules/vcs/VcsWebhookController.js +5 -5
  200. package/dist/modules/vcs/VcsWebhookController.js.map +1 -1
  201. package/dist/modules/webSearch/WebSearchProxyController.d.ts.map +1 -1
  202. package/dist/modules/webSearch/WebSearchProxyController.js +3 -3
  203. package/dist/modules/webSearch/WebSearchProxyController.js.map +1 -1
  204. package/dist/modules/workspaces/WorkspaceMemberController.d.ts.map +1 -1
  205. package/dist/modules/workspaces/WorkspaceMemberController.js +9 -6
  206. package/dist/modules/workspaces/WorkspaceMemberController.js.map +1 -1
  207. package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
  208. package/dist/persistence/rpc-allowlist.js +6 -0
  209. package/dist/persistence/rpc-allowlist.js.map +1 -1
  210. package/dist/persistence/rpc.d.ts.map +1 -1
  211. package/dist/persistence/rpc.js +3 -0
  212. package/dist/persistence/rpc.js.map +1 -1
  213. 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 bootstrap module or send a 503, returning null when unconfigured. */
7
8
  function requireBootstrap(c) {
8
9
  return c.get('container').bootstrap ?? null;
9
10
  }
10
- const unavailable = (c, message) => c.json({ error: { code: 'unavailable', message } }, 503);
11
+ const unavailable = (message) => {
12
+ throw new UnavailableError(message);
13
+ };
11
14
  /**
12
15
  * Workspace-scoped repo-bootstrap endpoints: CRUD over the managed reference
13
16
  * architecture list, and the "bootstrap repo" task (create a new repo from a
@@ -21,27 +24,27 @@ export function bootstrapController() {
21
24
  buildHonoRoute(app, listReferenceArchitecturesContract, async (c) => {
22
25
  const bootstrap = requireBootstrap(c);
23
26
  if (!bootstrap)
24
- return unavailable(c, 'Repo bootstrap is not configured');
27
+ return unavailable('Repo bootstrap is not configured');
25
28
  return c.json(await bootstrap.service.listReferenceArchitectures(param(c, 'workspaceId')), 200);
26
29
  });
27
30
  buildHonoRoute(app, createReferenceArchitectureContract, async (c) => {
28
31
  const bootstrap = requireBootstrap(c);
29
32
  if (!bootstrap)
30
- return unavailable(c, 'Repo bootstrap is not configured');
33
+ return unavailable('Repo bootstrap is not configured');
31
34
  const created = await bootstrap.service.createReferenceArchitecture(param(c, 'workspaceId'), c.req.valid('json'));
32
35
  return c.json(created, 201);
33
36
  });
34
37
  buildHonoRoute(app, updateReferenceArchitectureContract, async (c) => {
35
38
  const bootstrap = requireBootstrap(c);
36
39
  if (!bootstrap)
37
- return unavailable(c, 'Repo bootstrap is not configured');
40
+ return unavailable('Repo bootstrap is not configured');
38
41
  const updated = await bootstrap.service.updateReferenceArchitecture(param(c, 'workspaceId'), c.req.valid('param').id, c.req.valid('json'));
39
42
  return c.json(updated, 200);
40
43
  });
41
44
  buildHonoRoute(app, deleteReferenceArchitectureContract, async (c) => {
42
45
  const bootstrap = requireBootstrap(c);
43
46
  if (!bootstrap)
44
- return unavailable(c, 'Repo bootstrap is not configured');
47
+ return unavailable('Repo bootstrap is not configured');
45
48
  await bootstrap.service.deleteReferenceArchitecture(param(c, 'workspaceId'), c.req.valid('param').id);
46
49
  return c.body(null, 204);
47
50
  });
@@ -49,13 +52,13 @@ export function bootstrapController() {
49
52
  buildHonoRoute(app, listBootstrapJobsContract, async (c) => {
50
53
  const bootstrap = requireBootstrap(c);
51
54
  if (!bootstrap)
52
- return unavailable(c, 'Repo bootstrap is not configured');
55
+ return unavailable('Repo bootstrap is not configured');
53
56
  return c.json(await bootstrap.service.listJobs(param(c, 'workspaceId')), 200);
54
57
  });
55
58
  buildHonoRoute(app, getBootstrapJobContract, async (c) => {
56
59
  const bootstrap = requireBootstrap(c);
57
60
  if (!bootstrap)
58
- return unavailable(c, 'Repo bootstrap is not configured');
61
+ return unavailable('Repo bootstrap is not configured');
59
62
  return c.json(await bootstrap.service.getJob(param(c, 'workspaceId'), c.req.valid('param').id), 200);
60
63
  });
61
64
  // Kick off a bootstrap run. Requires the GitHub + container machinery to be
@@ -63,9 +66,9 @@ export function bootstrapController() {
63
66
  buildHonoRoute(app, startBootstrapJobContract, async (c) => {
64
67
  const bootstrap = requireBootstrap(c);
65
68
  if (!bootstrap)
66
- return unavailable(c, 'Repo bootstrap is not configured');
69
+ return unavailable('Repo bootstrap is not configured');
67
70
  if (!bootstrap.service.canBootstrap) {
68
- return unavailable(c, 'Repo bootstrapping needs the GitHub App and the implementation container to be configured');
71
+ return unavailable('Repo bootstrapping needs the GitHub App and the implementation container to be configured');
69
72
  }
70
73
  const job = await bootstrap.service.bootstrap(param(c, 'workspaceId'), c.req.valid('json'));
71
74
  return c.json(job, 201);
@@ -1 +1 @@
1
- {"version":3,"file":"BootstrapController.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/BootstrapController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BootstrapController.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/BootstrapController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BrainstormController.d.ts","sourceRoot":"","sources":["../../../src/modules/brainstorm/BrainstormController.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CA4GnD"}
1
+ {"version":3,"file":"BrainstormController.d.ts","sourceRoot":"","sources":["../../../src/modules/brainstorm/BrainstormController.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAa/C;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CA4GnD"}
@@ -2,11 +2,14 @@ import { getBrainstormContract, incorporateBrainstormContract, proceedBrainstorm
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 brainstorm module or send a 503, returning null when unconfigured. */
6
7
  function requireBrainstorm(c) {
7
8
  return c.get('container').brainstorm ?? null;
8
9
  }
9
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Brainstorm is not configured' } }, 503);
10
+ const unavailable = () => {
11
+ throw new UnavailableError('Brainstorm is not configured');
12
+ };
10
13
  /**
11
14
  * Workspace-scoped brainstorm (structured-dialogue) endpoints, STAGE-scoped: a block may have
12
15
  * one live `requirements` session and one live `architecture` session at once. The brainstorm
@@ -23,7 +26,7 @@ export function brainstormController() {
23
26
  buildHonoRoute(app, getBrainstormContract, async (c) => {
24
27
  const brainstorm = requireBrainstorm(c);
25
28
  if (!brainstorm)
26
- return unavailable(c);
29
+ return unavailable();
27
30
  const { blockId, stage } = c.req.valid('param');
28
31
  const session = await brainstorm.services[stage].getForBlock(param(c, 'workspaceId'), blockId);
29
32
  return c.json(session, 200);
@@ -34,7 +37,7 @@ export function brainstormController() {
34
37
  buildHonoRoute(app, reviewBrainstormContract, async (c) => {
35
38
  const brainstorm = requireBrainstorm(c);
36
39
  if (!brainstorm)
37
- return unavailable(c);
40
+ return unavailable();
38
41
  const { blockId, stage } = c.req.valid('param');
39
42
  const session = await c
40
43
  .get('container')
@@ -45,7 +48,7 @@ export function brainstormController() {
45
48
  buildHonoRoute(app, replyBrainstormItemContract, async (c) => {
46
49
  const brainstorm = requireBrainstorm(c);
47
50
  if (!brainstorm)
48
- return unavailable(c);
51
+ return unavailable();
49
52
  const { sessionId, itemId } = c.req.valid('param');
50
53
  const session = await brainstorm.services.requirements.replyToItem(param(c, 'workspaceId'), sessionId, itemId, c.req.valid('json').reply);
51
54
  return c.json(session, 200);
@@ -54,7 +57,7 @@ export function brainstormController() {
54
57
  buildHonoRoute(app, updateBrainstormItemStatusContract, async (c) => {
55
58
  const brainstorm = requireBrainstorm(c);
56
59
  if (!brainstorm)
57
- return unavailable(c);
60
+ return unavailable();
58
61
  const { sessionId, itemId } = c.req.valid('param');
59
62
  const session = await brainstorm.services.requirements.setItemStatus(param(c, 'workspaceId'), sessionId, itemId, c.req.valid('json').status);
60
63
  return c.json(session, 200);
@@ -63,7 +66,7 @@ export function brainstormController() {
63
66
  buildHonoRoute(app, incorporateBrainstormContract, async (c) => {
64
67
  const brainstorm = requireBrainstorm(c);
65
68
  if (!brainstorm)
66
- return unavailable(c);
69
+ return unavailable();
67
70
  const { blockId, stage } = c.req.valid('param');
68
71
  const session = await c
69
72
  .get('container')
@@ -74,7 +77,7 @@ export function brainstormController() {
74
77
  buildHonoRoute(app, reReviewBrainstormContract, async (c) => {
75
78
  const brainstorm = requireBrainstorm(c);
76
79
  if (!brainstorm)
77
- return unavailable(c);
80
+ return unavailable();
78
81
  const { blockId, stage } = c.req.valid('param');
79
82
  const session = await c
80
83
  .get('container')
@@ -85,7 +88,7 @@ export function brainstormController() {
85
88
  buildHonoRoute(app, proceedBrainstormContract, async (c) => {
86
89
  const brainstorm = requireBrainstorm(c);
87
90
  if (!brainstorm)
88
- return unavailable(c);
91
+ return unavailable();
89
92
  const { blockId, stage } = c.req.valid('param');
90
93
  const session = await c
91
94
  .get('container')
@@ -96,7 +99,7 @@ export function brainstormController() {
96
99
  buildHonoRoute(app, resolveBrainstormExceededContract, async (c) => {
97
100
  const brainstorm = requireBrainstorm(c);
98
101
  if (!brainstorm)
99
- return unavailable(c);
102
+ return unavailable();
100
103
  const { blockId, stage } = c.req.valid('param');
101
104
  const session = await c
102
105
  .get('container')
@@ -1 +1 @@
1
- {"version":3,"file":"BrainstormController.js","sourceRoot":"","sources":["../../../src/modules/brainstorm/BrainstormController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrainstormController.js","sourceRoot":"","sources":["../../../src/modules/brainstorm/BrainstormController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BugHuntController.d.ts","sourceRoot":"","sources":["../../../src/modules/bugHunt/BugHuntController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAsC/C,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqEhD"}
1
+ {"version":3,"file":"BugHuntController.d.ts","sourceRoot":"","sources":["../../../src/modules/bugHunt/BugHuntController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAoC/C,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqEhD"}
@@ -2,7 +2,7 @@ import { adoptBugHuntCandidateContract, listTrackerBoardsContract, runBugHuntCon
2
2
  import * as v from 'valibot';
3
3
  import { buildHonoRoute } from '@toad-contracts/hono';
4
4
  import { Hono } from 'hono';
5
- import { BUGFIX_PIPELINE_ID, ValidationError } from '@cat-factory/kernel';
5
+ import { BUGFIX_PIPELINE_ID, ValidationError, UnavailableError } from '@cat-factory/kernel';
6
6
  import { param } from '../../http/params.js';
7
7
  import { personalGateForBlock, readPersonalPassword } from '../providers/personalCredentialGate.js';
8
8
  // ---------------------------------------------------------------------------
@@ -22,7 +22,9 @@ import { personalGateForBlock, readPersonalPassword } from '../providers/persona
22
22
  function requireTasks(c) {
23
23
  return c.get('container').tasks ?? null;
24
24
  }
25
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Task-source integration is not configured' } }, 503);
25
+ const unavailable = () => {
26
+ throw new UnavailableError('Task-source integration is not configured');
27
+ };
26
28
  /** Read + validate the `:source` path param as a known source kind. */
27
29
  function sourceParam(c) {
28
30
  const source = param(c, 'source');
@@ -39,7 +41,7 @@ export function bugHuntController() {
39
41
  buildHonoRoute(app, listTrackerBoardsContract, async (c) => {
40
42
  const tasks = requireTasks(c);
41
43
  if (!tasks)
42
- return unavailable(c);
44
+ return unavailable();
43
45
  const source = sourceParam(c);
44
46
  const boards = await tasks.bugHuntService.listBoards(param(c, 'workspaceId'), source);
45
47
  return c.json({ source, boards }, 200);
@@ -50,7 +52,7 @@ export function bugHuntController() {
50
52
  buildHonoRoute(app, runBugHuntContract, async (c) => {
51
53
  const tasks = requireTasks(c);
52
54
  if (!tasks)
53
- return unavailable(c);
55
+ return unavailable();
54
56
  const result = await tasks.bugHuntService.hunt(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json'));
55
57
  return c.json(result, 200);
56
58
  });
@@ -59,7 +61,7 @@ export function bugHuntController() {
59
61
  buildHonoRoute(app, adoptBugHuntCandidateContract, async (c) => {
60
62
  const tasks = requireTasks(c);
61
63
  if (!tasks)
62
- return unavailable(c);
64
+ return unavailable();
63
65
  const container = c.get('container');
64
66
  const workspaceId = param(c, 'workspaceId');
65
67
  const { externalId, containerId, pipelineId: requested } = c.req.valid('json');
@@ -1 +1 @@
1
- {"version":3,"file":"BugHuntController.js","sourceRoot":"","sources":["../../../src/modules/bugHunt/BugHuntController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BugHuntController.js","sourceRoot":"","sources":["../../../src/modules/bugHunt/BugHuntController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClarityReviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/clarity/ClarityReviewController.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0GtD"}
1
+ {"version":3,"file":"ClarityReviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/clarity/ClarityReviewController.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAa/C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0GtD"}
@@ -2,11 +2,14 @@ import { getClarityReviewContract, incorporateClarityContract, proceedClarityCon
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 clarity module or send a 503, returning null when unconfigured. */
6
7
  function requireClarity(c) {
7
8
  return c.get('container').clarity ?? null;
8
9
  }
9
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Clarity review is not configured' } }, 503);
10
+ const unavailable = () => {
11
+ throw new UnavailableError('Clarity review is not configured');
12
+ };
10
13
  /**
11
14
  * Workspace-scoped clarity-review (bug-report triage) endpoints. The clarity mirror of the
12
15
  * requirements-review controller: the initial review runs an LLM inline and returns the
@@ -20,7 +23,7 @@ export function clarityReviewController() {
20
23
  buildHonoRoute(app, getClarityReviewContract, async (c) => {
21
24
  const clarity = requireClarity(c);
22
25
  if (!clarity)
23
- return unavailable(c);
26
+ return unavailable();
24
27
  const review = await clarity.service.getForBlock(param(c, 'workspaceId'), c.req.valid('param').blockId);
25
28
  return c.json(review, 200);
26
29
  });
@@ -30,7 +33,7 @@ export function clarityReviewController() {
30
33
  buildHonoRoute(app, reviewClarityContract, async (c) => {
31
34
  const clarity = requireClarity(c);
32
35
  if (!clarity)
33
- return unavailable(c);
36
+ return unavailable();
34
37
  const review = await c
35
38
  .get('container')
36
39
  .executionService.clarityReview.review(param(c, 'workspaceId'), c.req.valid('param').blockId);
@@ -40,7 +43,7 @@ export function clarityReviewController() {
40
43
  buildHonoRoute(app, replyClarityItemContract, async (c) => {
41
44
  const clarity = requireClarity(c);
42
45
  if (!clarity)
43
- return unavailable(c);
46
+ return unavailable();
44
47
  const { reviewId, itemId } = c.req.valid('param');
45
48
  const review = await clarity.service.replyToItem(param(c, 'workspaceId'), reviewId, itemId, c.req.valid('json').reply);
46
49
  return c.json(review, 200);
@@ -49,7 +52,7 @@ export function clarityReviewController() {
49
52
  buildHonoRoute(app, updateClarityItemStatusContract, async (c) => {
50
53
  const clarity = requireClarity(c);
51
54
  if (!clarity)
52
- return unavailable(c);
55
+ return unavailable();
53
56
  const { reviewId, itemId } = c.req.valid('param');
54
57
  const review = await clarity.service.setItemStatus(param(c, 'workspaceId'), reviewId, itemId, c.req.valid('json').status);
55
58
  return c.json(review, 200);
@@ -58,7 +61,7 @@ export function clarityReviewController() {
58
61
  buildHonoRoute(app, incorporateClarityContract, async (c) => {
59
62
  const clarity = requireClarity(c);
60
63
  if (!clarity)
61
- return unavailable(c);
64
+ return unavailable();
62
65
  const review = await c
63
66
  .get('container')
64
67
  .executionService.clarityReview.incorporate(param(c, 'workspaceId'), c.req.valid('param').blockId, c.req.valid('json').feedback);
@@ -68,7 +71,7 @@ export function clarityReviewController() {
68
71
  buildHonoRoute(app, reReviewClarityContract, async (c) => {
69
72
  const clarity = requireClarity(c);
70
73
  if (!clarity)
71
- return unavailable(c);
74
+ return unavailable();
72
75
  const review = await c
73
76
  .get('container')
74
77
  .executionService.clarityReview.reReview(param(c, 'workspaceId'), c.req.valid('param').blockId);
@@ -78,7 +81,7 @@ export function clarityReviewController() {
78
81
  buildHonoRoute(app, proceedClarityContract, async (c) => {
79
82
  const clarity = requireClarity(c);
80
83
  if (!clarity)
81
- return unavailable(c);
84
+ return unavailable();
82
85
  const review = await c
83
86
  .get('container')
84
87
  .executionService.clarityReview.proceed(param(c, 'workspaceId'), c.req.valid('param').blockId);
@@ -88,7 +91,7 @@ export function clarityReviewController() {
88
91
  buildHonoRoute(app, resolveClarityExceededContract, async (c) => {
89
92
  const clarity = requireClarity(c);
90
93
  if (!clarity)
91
- return unavailable(c);
94
+ return unavailable();
92
95
  const review = await c
93
96
  .get('container')
94
97
  .executionService.clarityReview.resolveExceeded(param(c, 'workspaceId'), c.req.valid('param').blockId, c.req.valid('json').choice);
@@ -1 +1 @@
1
- {"version":3,"file":"ClarityReviewController.js","sourceRoot":"","sources":["../../../src/modules/clarity/ClarityReviewController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClarityReviewController.js","sourceRoot":"","sources":["../../../src/modules/clarity/ClarityReviewController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocInterviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/docInterview/DocInterviewController.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAkB/C,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAoCrD"}
1
+ {"version":3,"file":"DocInterviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/docInterview/DocInterviewController.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAiB/C,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAoCrD"}
@@ -2,6 +2,7 @@ import { answerDocInterviewContract, continueDocInterviewContract, getDocIntervi
2
2
  import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
4
  import { param } from '../../http/params.js';
5
+ import { UnavailableError } from '@cat-factory/kernel';
5
6
  // ---------------------------------------------------------------------------
6
7
  // Interactive document-interview endpoints (WS5). Drive the parked `doc-interviewer` gate
7
8
  // from the interview window: `get` loads the current session; `answer` records one answer
@@ -10,21 +11,23 @@ import { param } from '../../http/params.js';
10
11
  // interviewer isn't wired → 503), and return the updated session. Mounted under
11
12
  // `/workspaces/:workspaceId`.
12
13
  // ---------------------------------------------------------------------------
13
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'The document interviewer is not configured' } }, 503);
14
+ const unavailable = () => {
15
+ throw new UnavailableError('The document interviewer is not configured');
16
+ };
14
17
  export function docInterviewController() {
15
18
  const app = new Hono();
16
19
  const require = (c) => c.get('container').executionService.docInterview ?? null;
17
20
  buildHonoRoute(app, getDocInterviewContract, async (c) => {
18
21
  const interview = require(c);
19
22
  if (!interview)
20
- return unavailable(c);
23
+ return unavailable();
21
24
  const { blockId } = c.req.valid('param');
22
25
  return c.json(await interview.getByBlock(param(c, 'workspaceId'), blockId), 200);
23
26
  });
24
27
  buildHonoRoute(app, answerDocInterviewContract, async (c) => {
25
28
  const interview = require(c);
26
29
  if (!interview)
27
- return unavailable(c);
30
+ return unavailable();
28
31
  const { blockId } = c.req.valid('param');
29
32
  const { questionId, answer } = c.req.valid('json');
30
33
  return c.json(await interview.answer(param(c, 'workspaceId'), blockId, questionId, answer), 200);
@@ -32,14 +35,14 @@ export function docInterviewController() {
32
35
  buildHonoRoute(app, continueDocInterviewContract, async (c) => {
33
36
  const interview = require(c);
34
37
  if (!interview)
35
- return unavailable(c);
38
+ return unavailable();
36
39
  const { blockId } = c.req.valid('param');
37
40
  return c.json(await interview.continue(param(c, 'workspaceId'), blockId), 200);
38
41
  });
39
42
  buildHonoRoute(app, proceedDocInterviewContract, async (c) => {
40
43
  const interview = require(c);
41
44
  if (!interview)
42
- return unavailable(c);
45
+ return unavailable();
43
46
  const { blockId } = c.req.valid('param');
44
47
  return c.json(await interview.proceed(param(c, 'workspaceId'), blockId), 200);
45
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DocInterviewController.js","sourceRoot":"","sources":["../../../src/modules/docInterview/DocInterviewController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocInterviewController.js","sourceRoot":"","sources":["../../../src/modules/docInterview/DocInterviewController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceController.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAwB/C;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0JvD"}
1
+ {"version":3,"file":"DocumentSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceController.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAsB/C;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0JvD"}
@@ -2,14 +2,16 @@ import { connectDocumentSourceContract, disconnectDocumentSourceContract, docume
2
2
  import * as v from 'valibot';
3
3
  import { buildHonoRoute } from '@toad-contracts/hono';
4
4
  import { Hono } from 'hono';
5
- import { ValidationError } from '@cat-factory/kernel';
5
+ import { ValidationError, UnavailableError } from '@cat-factory/kernel';
6
6
  import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
7
7
  import { param } from '../../http/params.js';
8
8
  /** Resolve the documents module or send a 503, returning null when unconfigured. */
9
9
  function requireDocuments(c) {
10
10
  return c.get('container').documents ?? null;
11
11
  }
12
- const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Document-source integration is not configured' } }, 503);
12
+ const unavailable = () => {
13
+ throw new UnavailableError('Document-source integration is not configured');
14
+ };
13
15
  /** Read + validate the `:source` path param as a known source kind. */
14
16
  function sourceParam(c) {
15
17
  const source = param(c, 'source');
@@ -33,28 +35,28 @@ export function documentSourceController() {
33
35
  buildHonoRoute(app, listDocumentSourcesContract, async (c) => {
34
36
  const documents = requireDocuments(c);
35
37
  if (!documents)
36
- return unavailable(c);
38
+ return unavailable();
37
39
  return c.json({ sources: documents.connectionService.listSources() }, 200);
38
40
  });
39
41
  // ---- connections --------------------------------------------------------
40
42
  buildHonoRoute(app, listDocumentConnectionsContract, async (c) => {
41
43
  const documents = requireDocuments(c);
42
44
  if (!documents)
43
- return unavailable(c);
45
+ return unavailable();
44
46
  const connections = await documents.connectionService.listConnections(param(c, 'workspaceId'));
45
47
  return c.json({ connections }, 200);
46
48
  });
47
49
  buildHonoRoute(app, connectDocumentSourceContract, async (c) => {
48
50
  const documents = requireDocuments(c);
49
51
  if (!documents)
50
- return unavailable(c);
52
+ return unavailable();
51
53
  const connection = await documents.connectionService.connect(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').credentials);
52
54
  return c.json(connection, 201);
53
55
  });
54
56
  buildHonoRoute(app, disconnectDocumentSourceContract, async (c) => {
55
57
  const documents = requireDocuments(c);
56
58
  if (!documents)
57
- return unavailable(c);
59
+ return unavailable();
58
60
  await documents.connectionService.disconnect(param(c, 'workspaceId'), sourceParam(c));
59
61
  return c.body(null, 204);
60
62
  });
@@ -62,13 +64,13 @@ export function documentSourceController() {
62
64
  buildHonoRoute(app, listDocumentsContract, async (c) => {
63
65
  const documents = requireDocuments(c);
64
66
  if (!documents)
65
- return unavailable(c);
67
+ return unavailable();
66
68
  return c.json(await documents.importService.listDocuments(param(c, 'workspaceId')), 200);
67
69
  });
68
70
  buildHonoRoute(app, importDocumentContract, async (c) => {
69
71
  const documents = requireDocuments(c);
70
72
  if (!documents)
71
- return unavailable(c);
73
+ return unavailable();
72
74
  const document = await documents.importService.import(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').ref);
73
75
  return c.json(document, 201);
74
76
  });
@@ -77,7 +79,7 @@ export function documentSourceController() {
77
79
  buildHonoRoute(app, searchDocumentsContract, async (c) => {
78
80
  const documents = requireDocuments(c);
79
81
  if (!documents)
80
- return unavailable(c);
82
+ return unavailable();
81
83
  const results = await documents.importService.search(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').query);
82
84
  return c.json({ results }, 200);
83
85
  });
@@ -86,7 +88,7 @@ export function documentSourceController() {
86
88
  buildHonoRoute(app, planDocumentContract, async (c) => {
87
89
  const documents = requireDocuments(c);
88
90
  if (!documents)
89
- return unavailable(c);
91
+ return unavailable();
90
92
  const workspaceId = param(c, 'workspaceId');
91
93
  const record = await documents.importService.requireDocument(workspaceId, sourceParam(c), c.req.valid('json').externalId);
92
94
  return c.json(await documents.plannerService.plan(record), 200);
@@ -95,7 +97,7 @@ export function documentSourceController() {
95
97
  buildHonoRoute(app, spawnDocumentContract, async (c) => {
96
98
  const documents = requireDocuments(c);
97
99
  if (!documents)
98
- return unavailable(c);
100
+ return unavailable();
99
101
  const workspaceId = param(c, 'workspaceId');
100
102
  const { externalId, frameId } = c.req.valid('json');
101
103
  const record = await documents.importService.requireDocument(workspaceId, sourceParam(c), externalId);
@@ -108,7 +110,7 @@ export function documentSourceController() {
108
110
  buildHonoRoute(app, linkDocumentContract, async (c) => {
109
111
  const documents = requireDocuments(c);
110
112
  if (!documents)
111
- return unavailable(c);
113
+ return unavailable();
112
114
  const { source, externalId, blockId } = c.req.valid('json');
113
115
  const document = await documents.linkService.linkToBlock(param(c, 'workspaceId'), blockId, source, externalId);
114
116
  return c.json(document, 201);
@@ -118,14 +120,14 @@ export function documentSourceController() {
118
120
  buildHonoRoute(app, listDocumentRoleLinksContract, async (c) => {
119
121
  const documents = requireDocuments(c);
120
122
  if (!documents)
121
- return unavailable(c);
123
+ return unavailable();
122
124
  return c.json(await documents.linkService.listRoleLinks(param(c, 'workspaceId')), 200);
123
125
  });
124
126
  // Tag an imported page as the workspace's template (singular per kind) or exemplar for a kind.
125
127
  buildHonoRoute(app, linkDocumentForKindContract, async (c) => {
126
128
  const documents = requireDocuments(c);
127
129
  if (!documents)
128
- return unavailable(c);
130
+ return unavailable();
129
131
  const { source, externalId, role, docKind } = c.req.valid('json');
130
132
  const document = await documents.linkService.linkForKind(param(c, 'workspaceId'), source, externalId, role, docKind);
131
133
  return c.json(document, 201);
@@ -134,7 +136,7 @@ export function documentSourceController() {
134
136
  buildHonoRoute(app, unlinkDocumentForKindContract, async (c) => {
135
137
  const documents = requireDocuments(c);
136
138
  if (!documents)
137
- return unavailable(c);
139
+ return unavailable();
138
140
  const { source, externalId } = c.req.valid('json');
139
141
  await documents.linkService.unlinkForKind(param(c, 'workspaceId'), source, externalId);
140
142
  return c.body(null, 204);