@cat-factory/server 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/config/types.d.ts +1 -15
  2. package/dist/config/types.d.ts.map +1 -1
  3. package/dist/http/errorHandler.d.ts.map +1 -1
  4. package/dist/http/errorHandler.js +20 -0
  5. package/dist/http/errorHandler.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +0 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/modules/accounts/AccountController.d.ts +4 -0
  11. package/dist/modules/accounts/AccountController.d.ts.map +1 -1
  12. package/dist/modules/accounts/AccountController.js +78 -58
  13. package/dist/modules/accounts/AccountController.js.map +1 -1
  14. package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
  15. package/dist/modules/agentRuns/AgentRunController.js +8 -6
  16. package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
  17. package/dist/modules/auth/AuthController.d.ts.map +1 -1
  18. package/dist/modules/auth/AuthController.js +23 -23
  19. package/dist/modules/auth/AuthController.js.map +1 -1
  20. package/dist/modules/board/BoardController.d.ts.map +1 -1
  21. package/dist/modules/board/BoardController.js +26 -26
  22. package/dist/modules/board/BoardController.js.map +1 -1
  23. package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
  24. package/dist/modules/bootstrap/BootstrapController.js +15 -15
  25. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  26. package/dist/modules/brainstorm/BrainstormController.d.ts +3 -2
  27. package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
  28. package/dist/modules/brainstorm/BrainstormController.js +36 -52
  29. package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
  30. package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
  31. package/dist/modules/clarity/ClarityReviewController.js +27 -25
  32. package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
  33. package/dist/modules/consensus/ConsensusController.d.ts.map +1 -1
  34. package/dist/modules/consensus/ConsensusController.js +6 -4
  35. package/dist/modules/consensus/ConsensusController.js.map +1 -1
  36. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  37. package/dist/modules/documents/DocumentSourceController.js +17 -17
  38. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  39. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  40. package/dist/modules/environments/EnvironmentController.js +24 -24
  41. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  42. package/dist/modules/execution/ExecutionController.d.ts.map +1 -1
  43. package/dist/modules/execution/ExecutionController.js +57 -45
  44. package/dist/modules/execution/ExecutionController.js.map +1 -1
  45. package/dist/modules/followUp/FollowUpController.d.ts.map +1 -1
  46. package/dist/modules/followUp/FollowUpController.js +21 -17
  47. package/dist/modules/followUp/FollowUpController.js.map +1 -1
  48. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  49. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +26 -26
  50. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  51. package/dist/modules/github/GitHubController.d.ts.map +1 -1
  52. package/dist/modules/github/GitHubController.js +44 -44
  53. package/dist/modules/github/GitHubController.js.map +1 -1
  54. package/dist/modules/humanReview/HumanReviewController.d.ts.map +1 -1
  55. package/dist/modules/humanReview/HumanReviewController.js +5 -5
  56. package/dist/modules/humanReview/HumanReviewController.js.map +1 -1
  57. package/dist/modules/humanTest/HumanTestController.d.ts.map +1 -1
  58. package/dist/modules/humanTest/HumanTestController.js +17 -17
  59. package/dist/modules/humanTest/HumanTestController.js.map +1 -1
  60. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
  61. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -7
  62. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  63. package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
  64. package/dist/modules/kaizen/KaizenController.js +7 -5
  65. package/dist/modules/kaizen/KaizenController.js.map +1 -1
  66. package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
  67. package/dist/modules/localModels/LocalModelEndpointController.js +10 -11
  68. package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
  69. package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
  70. package/dist/modules/localSettings/LocalSettingsController.js +6 -6
  71. package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
  72. package/dist/modules/merge/MergePresetController.d.ts.map +1 -1
  73. package/dist/modules/merge/MergePresetController.js +10 -10
  74. package/dist/modules/merge/MergePresetController.js.map +1 -1
  75. package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
  76. package/dist/modules/modelPresets/ModelPresetController.js +10 -10
  77. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  78. package/dist/modules/models/ModelController.d.ts.map +1 -1
  79. package/dist/modules/models/ModelController.js +6 -4
  80. package/dist/modules/models/ModelController.js.map +1 -1
  81. package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
  82. package/dist/modules/notifications/NotificationController.js +11 -9
  83. package/dist/modules/notifications/NotificationController.js.map +1 -1
  84. package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
  85. package/dist/modules/openrouter/OpenRouterCatalogController.js +9 -10
  86. package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
  87. package/dist/modules/pipelines/PipelineController.d.ts.map +1 -1
  88. package/dist/modules/pipelines/PipelineController.js +17 -15
  89. package/dist/modules/pipelines/PipelineController.js.map +1 -1
  90. package/dist/modules/promptFragments/PromptFragmentController.d.ts.map +1 -1
  91. package/dist/modules/promptFragments/PromptFragmentController.js +4 -2
  92. package/dist/modules/promptFragments/PromptFragmentController.js.map +1 -1
  93. package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
  94. package/dist/modules/providers/ApiKeyController.js +12 -12
  95. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  96. package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
  97. package/dist/modules/providers/PersonalSubscriptionController.js +7 -8
  98. package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
  99. package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
  100. package/dist/modules/providers/UserSecretController.js +14 -15
  101. package/dist/modules/providers/UserSecretController.js.map +1 -1
  102. package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
  103. package/dist/modules/providers/VendorCredentialController.js +7 -7
  104. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  105. package/dist/modules/providers/personalCredentialGate.d.ts +2 -2
  106. package/dist/modules/providers/personalCredentialGate.d.ts.map +1 -1
  107. package/dist/modules/providers/personalCredentialGate.js.map +1 -1
  108. package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
  109. package/dist/modules/provisioningLogs/ProvisioningLogController.js +4 -3
  110. package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
  111. package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
  112. package/dist/modules/recurring/RecurringPipelineController.js +15 -15
  113. package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
  114. package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
  115. package/dist/modules/recurring/TrackerSettingsController.js +6 -6
  116. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  117. package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
  118. package/dist/modules/releaseHealth/ReleaseHealthController.js +14 -14
  119. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  120. package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
  121. package/dist/modules/requirements/RequirementReviewController.js +43 -38
  122. package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
  123. package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
  124. package/dist/modules/runners/RunnerPoolController.js +12 -12
  125. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  126. package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
  127. package/dist/modules/sandbox/SandboxController.js +35 -26
  128. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  129. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
  130. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -6
  131. package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
  132. package/dist/modules/serviceSpec/ServiceSpecController.d.ts.map +1 -1
  133. package/dist/modules/serviceSpec/ServiceSpecController.js +9 -8
  134. package/dist/modules/serviceSpec/ServiceSpecController.js.map +1 -1
  135. package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
  136. package/dist/modules/services/ServiceMountController.js +14 -14
  137. package/dist/modules/services/ServiceMountController.js.map +1 -1
  138. package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
  139. package/dist/modules/settings/WorkspaceSettingsController.js +6 -6
  140. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  141. package/dist/modules/slack/SlackController.d.ts.map +1 -1
  142. package/dist/modules/slack/SlackController.js +18 -18
  143. package/dist/modules/slack/SlackController.js.map +1 -1
  144. package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
  145. package/dist/modules/tasks/TaskSourceController.js +19 -19
  146. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  147. package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
  148. package/dist/modules/workspaces/WorkspaceController.js +11 -11
  149. package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
  150. package/package.json +11 -9
  151. package/dist/http/validation.d.ts +0 -21
  152. package/dist/http/validation.d.ts.map +0 -1
  153. package/dist/http/validation.js +0 -21
  154. package/dist/http/validation.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { provisionEnvironmentSchema, registerEnvironmentProviderSchema, testEnvironmentConnectionSchema, updateEnvironmentSecretsSchema, } from '@cat-factory/contracts';
1
+ import { describeEnvironmentProviderContract, getEnvironmentAccessContract, getEnvironmentConnectionContract, getEnvironmentContract, listEnvironmentsContract, provisionEnvironmentContract, registerEnvironmentProviderContract, teardownEnvironmentContract, testEnvironmentConnectionContract, unregisterEnvironmentProviderContract, updateEnvironmentSecretsContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /** Resolve the environment module or send a 503, returning null when unconfigured. */
6
6
  function requireEnvironments(c) {
7
7
  return c.get('container').environments ?? null;
@@ -17,14 +17,14 @@ const notFound = (c) => c.json({ error: { code: 'not_found', message: 'Environme
17
17
  export function environmentController() {
18
18
  const app = new Hono();
19
19
  // ---- provider connection ------------------------------------------------
20
- app.get('/environments/connection', async (c) => {
20
+ buildHonoRoute(app, getEnvironmentConnectionContract, async (c) => {
21
21
  const env = requireEnvironments(c);
22
22
  if (!env)
23
23
  return unavailable(c);
24
24
  const connection = await env.connectionService.getConnection(param(c, 'workspaceId'));
25
- return c.json({ connection });
25
+ return c.json({ connection }, 200);
26
26
  });
27
- app.post('/environments/connection', jsonBody(registerEnvironmentProviderSchema), async (c) => {
27
+ buildHonoRoute(app, registerEnvironmentProviderContract, async (c) => {
28
28
  const env = requireEnvironments(c);
29
29
  if (!env)
30
30
  return unavailable(c);
@@ -35,14 +35,14 @@ export function environmentController() {
35
35
  });
36
36
  return c.json(connection, 201);
37
37
  });
38
- app.put('/environments/connection/secrets', jsonBody(updateEnvironmentSecretsSchema), async (c) => {
38
+ buildHonoRoute(app, updateEnvironmentSecretsContract, async (c) => {
39
39
  const env = requireEnvironments(c);
40
40
  if (!env)
41
41
  return unavailable(c);
42
42
  const connection = await env.connectionService.updateSecrets(param(c, 'workspaceId'), c.req.valid('json').secrets);
43
- return c.json(connection);
43
+ return c.json(connection, 200);
44
44
  });
45
- app.delete('/environments/connection', async (c) => {
45
+ buildHonoRoute(app, unregisterEnvironmentProviderContract, async (c) => {
46
46
  const env = requireEnvironments(c);
47
47
  if (!env)
48
48
  return unavailable(c);
@@ -51,42 +51,42 @@ export function environmentController() {
51
51
  });
52
52
  // What the provider needs configured (native fields or the manifest's secret keys),
53
53
  // so the UI can render a connect form generically.
54
- app.get('/environments/provider', async (c) => {
54
+ buildHonoRoute(app, describeEnvironmentProviderContract, async (c) => {
55
55
  const env = requireEnvironments(c);
56
56
  if (!env)
57
57
  return unavailable(c);
58
- return c.json(await env.connectionService.describeProvider(param(c, 'workspaceId')));
58
+ return c.json(await env.connectionService.describeProvider(param(c, 'workspaceId')), 200);
59
59
  });
60
60
  // Probe a candidate connection before saving (nothing persisted).
61
- app.post('/environments/connection/test', jsonBody(testEnvironmentConnectionSchema), async (c) => {
61
+ buildHonoRoute(app, testEnvironmentConnectionContract, async (c) => {
62
62
  const env = requireEnvironments(c);
63
63
  if (!env)
64
64
  return unavailable(c);
65
- return c.json(await env.connectionService.testConnection(param(c, 'workspaceId'), c.req.valid('json')));
65
+ return c.json(await env.connectionService.testConnection(param(c, 'workspaceId'), c.req.valid('json')), 200);
66
66
  });
67
67
  // ---- environment registry ----------------------------------------------
68
- app.get('/environments', async (c) => {
68
+ buildHonoRoute(app, listEnvironmentsContract, async (c) => {
69
69
  const env = requireEnvironments(c);
70
70
  if (!env)
71
71
  return unavailable(c);
72
- return c.json(await env.provisioningService.listHandles(param(c, 'workspaceId')));
72
+ return c.json(await env.provisioningService.listHandles(param(c, 'workspaceId')), 200);
73
73
  });
74
- app.get('/environments/:environmentId', async (c) => {
74
+ buildHonoRoute(app, getEnvironmentContract, async (c) => {
75
75
  const env = requireEnvironments(c);
76
76
  if (!env)
77
77
  return unavailable(c);
78
- const handle = await env.provisioningService.getHandle(param(c, 'workspaceId'), param(c, 'environmentId'));
79
- return handle ? c.json(handle) : notFound(c);
78
+ const handle = await env.provisioningService.getHandle(param(c, 'workspaceId'), c.req.valid('param').environmentId);
79
+ return handle ? c.json(handle, 200) : notFound(c);
80
80
  });
81
81
  // The only endpoint that returns decrypted access credentials (over TLS).
82
- app.get('/environments/:environmentId/access', async (c) => {
82
+ buildHonoRoute(app, getEnvironmentAccessContract, async (c) => {
83
83
  const env = requireEnvironments(c);
84
84
  if (!env)
85
85
  return unavailable(c);
86
- const handle = await env.provisioningService.getHandleWithAccess(param(c, 'workspaceId'), param(c, 'environmentId'));
87
- return handle ? c.json(handle) : notFound(c);
86
+ const handle = await env.provisioningService.getHandleWithAccess(param(c, 'workspaceId'), c.req.valid('param').environmentId);
87
+ return handle ? c.json(handle, 200) : notFound(c);
88
88
  });
89
- app.post('/environments/provision', jsonBody(provisionEnvironmentSchema), async (c) => {
89
+ buildHonoRoute(app, provisionEnvironmentContract, async (c) => {
90
90
  const env = requireEnvironments(c);
91
91
  if (!env)
92
92
  return unavailable(c);
@@ -98,12 +98,12 @@ export function environmentController() {
98
98
  });
99
99
  return c.json(handle, 201);
100
100
  });
101
- app.post('/environments/:environmentId/teardown', async (c) => {
101
+ buildHonoRoute(app, teardownEnvironmentContract, async (c) => {
102
102
  const env = requireEnvironments(c);
103
103
  if (!env)
104
104
  return unavailable(c);
105
- const handle = await env.teardownService.teardown(param(c, 'workspaceId'), param(c, 'environmentId'));
106
- return c.json(handle);
105
+ const handle = await env.teardownService.teardown(param(c, 'workspaceId'), c.req.valid('param').environmentId);
106
+ return c.json(handle, 200);
107
107
  });
108
108
  return app;
109
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentController.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentController.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAU/C;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,CAkPlD"}
1
+ {"version":3,"file":"ExecutionController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionController.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS/C;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,CAgOlD"}
@@ -1,8 +1,8 @@
1
- import { approveStepSchema, rejectStepSchema, requestStepChangesSchema, resolveDecisionSchema, resolveIterationCapSchema, restartFromStepSchema, startExecutionSchema, } from '@cat-factory/contracts';
1
+ import { approveStepContract, cancelExecutionContract, exportExecutionLlmMetricsContract, getExecutionAgentContextContract, getExecutionLlmMetricsContract, getSpendStatusContract, mergeBlockContract, rejectStepContract, requestStepChangesContract, resolveDecisionContract, restartExecutionContract, resumeSpendContract, startExecutionContract, resolveStepExceededContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { runWithInitiator } from '../../github/runInitiatorContext.js';
4
5
  import { param } from '../../http/params.js';
5
- import { jsonBody } from '../../http/validation.js';
6
6
  import { personalGateForBlock, personalGateForRun, readPersonalPassword, remintActivations, } from '../providers/personalCredentialGate.js';
7
7
  /**
8
8
  * The execution engine endpoints — starting/cancelling runs, resolving decisions
@@ -12,10 +12,10 @@ import { personalGateForBlock, personalGateForRun, readPersonalPassword, remintA
12
12
  */
13
13
  export function executionController() {
14
14
  const app = new Hono();
15
- app.post('/blocks/:blockId/executions', jsonBody(startExecutionSchema), async (c) => {
15
+ buildHonoRoute(app, startExecutionContract, async (c) => {
16
16
  const container = c.get('container');
17
17
  const workspaceId = param(c, 'workspaceId');
18
- const blockId = param(c, 'blockId');
18
+ const blockId = c.req.valid('param').blockId;
19
19
  const { pipelineId } = c.req.valid('json');
20
20
  // Individual-usage models (Claude/GLM/Codex) require the initiator's personal
21
21
  // subscription: resolve the initiator + an activation closure (throws 428 when a
@@ -25,50 +25,52 @@ export function executionController() {
25
25
  const instance = await container.executionService.start(workspaceId, blockId, pipelineId, initiatedBy, activate);
26
26
  return c.json(instance, 201);
27
27
  });
28
- app.delete('/blocks/:blockId/executions', async (c) => {
28
+ buildHonoRoute(app, cancelExecutionContract, async (c) => {
29
29
  const block = await c
30
30
  .get('container')
31
- .executionService.cancel(param(c, 'workspaceId'), param(c, 'blockId'));
32
- return c.json(block);
31
+ .executionService.cancel(param(c, 'workspaceId'), c.req.valid('param').blockId);
32
+ return c.json(block, 200);
33
33
  });
34
- app.post('/blocks/:blockId/merge', async (c) => {
34
+ buildHonoRoute(app, mergeBlockContract, async (c) => {
35
35
  // Manual confirm-merge runs the engine GitHub client under the acting user's
36
36
  // ambient context, so their per-user PAT (when set) authors the merge.
37
- const block = await runWithInitiator(c.get('user')?.id, () => c.get('container').executionService.mergePr(param(c, 'workspaceId'), param(c, 'blockId')));
38
- return c.json(block);
37
+ const block = await runWithInitiator(c.get('user')?.id, () => c
38
+ .get('container')
39
+ .executionService.mergePr(param(c, 'workspaceId'), c.req.valid('param').blockId));
40
+ return c.json(block, 200);
39
41
  });
40
42
  // Current spend-safeguard status (token usage vs budget for this period).
41
- app.get('/spend', async (c) => {
42
- return c.json(await c.get('container').spendService.status(param(c, 'workspaceId')));
43
+ buildHonoRoute(app, getSpendStatusContract, async (c) => {
44
+ return c.json(await c.get('container').spendService.status(param(c, 'workspaceId')), 200);
43
45
  });
44
46
  // LLM observability for a run: the full per-call detail (prompts, responses,
45
47
  // token usage, output-limit headroom, transport-vs-execution latency) behind the
46
48
  // board's step rollups. Empty when the observability sink is not wired.
47
- app.get('/executions/:executionId/llm-metrics', async (c) => {
48
- const executionId = param(c, 'executionId');
49
+ buildHonoRoute(app, getExecutionLlmMetricsContract, async (c) => {
50
+ const executionId = c.req.valid('param').executionId;
49
51
  const observability = c.get('container').llmObservability;
50
52
  const calls = observability
51
53
  ? await observability.listByExecution(param(c, 'workspaceId'), executionId)
52
54
  : [];
53
- return c.json({ executionId, calls });
55
+ return c.json({ executionId, calls }, 200);
54
56
  });
55
57
  // The complete context provided to each container agent in a run: the composed
56
58
  // system + user prompts, the best-practice fragment bodies folded in, and the full
57
59
  // content of the files injected into the container. Empty when the agent-context
58
60
  // sink is not wired or the workspace disabled storing it.
59
- app.get('/executions/:executionId/agent-context', async (c) => {
60
- const executionId = param(c, 'executionId');
61
+ buildHonoRoute(app, getExecutionAgentContextContract, async (c) => {
62
+ const executionId = c.req.valid('param').executionId;
61
63
  const observability = c.get('container').agentContextObservability;
62
64
  const snapshots = observability
63
65
  ? await observability.listByExecution(param(c, 'workspaceId'), executionId)
64
66
  : [];
65
- return c.json({ executionId, snapshots });
67
+ return c.json({ executionId, snapshots }, 200);
66
68
  });
67
69
  // LLM-friendly export of a run's model activity: a self-describing JSON bundle
68
70
  // (totals + per-agent insights + every call, with derived ratios) meant to be
69
71
  // handed straight to a model for analysis. Sets a download filename.
70
- app.get('/executions/:executionId/llm-metrics/export', async (c) => {
71
- const executionId = param(c, 'executionId');
72
+ buildHonoRoute(app, exportExecutionLlmMetricsContract, async (c) => {
73
+ const executionId = c.req.valid('param').executionId;
72
74
  const observability = c.get('container').llmObservability;
73
75
  const exported = observability
74
76
  ? await observability.exportForExecution(param(c, 'workspaceId'), executionId)
@@ -92,55 +94,64 @@ export function executionController() {
92
94
  calls: [],
93
95
  };
94
96
  c.header('content-disposition', `attachment; filename="llm-metrics-${executionId}.json"`);
95
- return c.json(exported);
97
+ return c.json(exported, 200);
96
98
  });
97
99
  // Resume runs paused by the spend safeguard in this workspace.
98
- app.post('/spend/resume', async (c) => {
100
+ buildHonoRoute(app, resumeSpendContract, async (c) => {
99
101
  const instances = await c
100
102
  .get('container')
101
103
  .executionService.resumePaused(param(c, 'workspaceId'));
102
- return c.json(instances);
104
+ return c.json(instances, 200);
103
105
  });
104
- app.post('/executions/:executionId/decisions/:decisionId', jsonBody(resolveDecisionSchema), async (c) => {
106
+ buildHonoRoute(app, resolveDecisionContract, async (c) => {
107
+ const { executionId, decisionId } = c.req.valid('param');
105
108
  // Re-mint the run's activation BEFORE the engine advances + dispatches the next step.
106
- await remintActivations(c, param(c, 'workspaceId'), param(c, 'executionId'));
109
+ await remintActivations(c, param(c, 'workspaceId'), executionId);
107
110
  const instance = await c
108
111
  .get('container')
109
- .executionService.resolveDecision(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'decisionId'), c.req.valid('json').choice);
110
- return c.json(instance);
112
+ .executionService.resolveDecision(param(c, 'workspaceId'), executionId, decisionId, c.req.valid('json').choice);
113
+ return c.json(instance, 200);
111
114
  });
112
115
  // Approve a step's gated proposal (optionally with a human-edited proposal);
113
116
  // the run advances to the next step carrying it forward as context.
114
- app.post('/executions/:executionId/steps/:approvalId/approve', jsonBody(approveStepSchema), async (c) => {
117
+ buildHonoRoute(app, approveStepContract, async (c) => {
118
+ const { executionId, approvalId } = c.req.valid('param');
115
119
  // Re-mint the run's activation BEFORE the engine advances + dispatches the next step.
116
- await remintActivations(c, param(c, 'workspaceId'), param(c, 'executionId'));
120
+ await remintActivations(c, param(c, 'workspaceId'), executionId);
117
121
  const instance = await c
118
122
  .get('container')
119
- .executionService.approveStep(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'approvalId'), { proposal: c.req.valid('json').proposal });
120
- return c.json(instance);
123
+ .executionService.approveStep(param(c, 'workspaceId'), executionId, approvalId, {
124
+ proposal: c.req.valid('json').proposal,
125
+ });
126
+ return c.json(instance, 200);
121
127
  });
122
128
  // Request changes on a gated proposal: the step re-runs with the reviewer's
123
129
  // freeform feedback and/or per-block comments.
124
- app.post('/executions/:executionId/steps/:approvalId/request-changes', jsonBody(requestStepChangesSchema), async (c) => {
130
+ buildHonoRoute(app, requestStepChangesContract, async (c) => {
131
+ const { executionId, approvalId } = c.req.valid('param');
125
132
  const { feedback, comments } = c.req.valid('json');
126
133
  // The step re-runs (dispatches) — re-mint the run's activation first.
127
- await remintActivations(c, param(c, 'workspaceId'), param(c, 'executionId'));
134
+ await remintActivations(c, param(c, 'workspaceId'), executionId);
128
135
  const instance = await c
129
136
  .get('container')
130
- .executionService.requestStepChanges(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'approvalId'), { feedback, comments });
131
- return c.json(instance);
137
+ .executionService.requestStepChanges(param(c, 'workspaceId'), executionId, approvalId, {
138
+ feedback,
139
+ comments,
140
+ });
141
+ return c.json(instance, 200);
132
142
  });
133
143
  // Resolve a companion step parked at its automatic-rework cap: one more round /
134
144
  // proceed accepting the current output / stop and reset the task to phase zero. The
135
145
  // companion analogue of the requirements gate's resolve-exceeded; guarded so the
136
146
  // generic approve/reject can't short-circuit it.
137
- app.post('/executions/:executionId/steps/:approvalId/resolve-exceeded', jsonBody(resolveIterationCapSchema), async (c) => {
147
+ buildHonoRoute(app, resolveStepExceededContract, async (c) => {
148
+ const { executionId, approvalId } = c.req.valid('param');
138
149
  // extra-round / proceed re-dispatch the next agent step — re-mint first.
139
- await remintActivations(c, param(c, 'workspaceId'), param(c, 'executionId'));
150
+ await remintActivations(c, param(c, 'workspaceId'), executionId);
140
151
  const instance = await c
141
152
  .get('container')
142
- .executionService.resolveCompanionExceeded(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'approvalId'), c.req.valid('json').choice);
143
- return c.json(instance);
153
+ .executionService.resolveCompanionExceeded(param(c, 'workspaceId'), executionId, approvalId, c.req.valid('json').choice);
154
+ return c.json(instance, 200);
144
155
  });
145
156
  // Restart a run from a chosen step: re-run from `fromStepIndex` onward (resetting
146
157
  // that step + every later step's iteration counters) while keeping the earlier
@@ -148,21 +159,22 @@ export function executionController() {
148
159
  // down a still-running driver/container first. Mints a fresh run id, so it re-drives
149
160
  // like a retry. Individual-usage models (Claude/GLM/Codex) need the initiator's
150
161
  // personal subscription, resolved + activated here (428 when a password is needed).
151
- app.post('/executions/:executionId/restart', jsonBody(restartFromStepSchema), async (c) => {
162
+ buildHonoRoute(app, restartExecutionContract, async (c) => {
152
163
  const container = c.get('container');
153
164
  const workspaceId = param(c, 'workspaceId');
154
- const executionId = param(c, 'executionId');
165
+ const executionId = c.req.valid('param').executionId;
155
166
  const { fromStepIndex } = c.req.valid('json');
156
167
  const { initiatedBy, activate } = await personalGateForRun(container, workspaceId, executionId, c.get('user'), readPersonalPassword(c));
157
168
  const instance = await container.executionService.restartFromStep(workspaceId, executionId, fromStepIndex, initiatedBy, activate);
158
- return c.json(instance);
169
+ return c.json(instance, 200);
159
170
  });
160
171
  // Reject a gated proposal: the run stops entirely (a terminal, retryable failure).
161
- app.post('/executions/:executionId/steps/:approvalId/reject', jsonBody(rejectStepSchema), async (c) => {
172
+ buildHonoRoute(app, rejectStepContract, async (c) => {
173
+ const { executionId, approvalId } = c.req.valid('param');
162
174
  const instance = await c
163
175
  .get('container')
164
- .executionService.rejectStep(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'approvalId'), c.req.valid('json').reason);
165
- return c.json(instance);
176
+ .executionService.rejectStep(param(c, 'workspaceId'), executionId, approvalId, c.req.valid('json').reason);
177
+ return c.json(instance, 200);
166
178
  });
167
179
  return app;
168
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionController.js","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionController.js","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FollowUpController.d.ts","sourceRoot":"","sources":["../../../src/modules/followUp/FollowUpController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,CAkEjD"}
1
+ {"version":3,"file":"FollowUpController.d.ts","sourceRoot":"","sources":["../../../src/modules/followUp/FollowUpController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,CAiDjD"}
@@ -1,7 +1,7 @@
1
- import { answerFollowUpSchema } from '@cat-factory/contracts';
1
+ import { answerFollowUpContract, dismissFollowUpContract, fileFollowUpContract, getFollowUpsContract, queueFollowUpContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
2
3
  import { Hono } from 'hono';
3
4
  import { param } from '../../http/params.js';
4
- import { jsonBody } from '../../http/validation.js';
5
5
  /**
6
6
  * Workspace-scoped Follow-up companion endpoints. The Coder surfaces forward-looking items
7
7
  * (loose ends / side-tasks / questions) live on its run step; these endpoints let a human
@@ -14,40 +14,44 @@ import { jsonBody } from '../../http/validation.js';
14
14
  export function followUpController() {
15
15
  const app = new Hono();
16
16
  // The live follow-up state for a run (null when the companion is off / nothing surfaced).
17
- app.get('/executions/:executionId/follow-ups', async (c) => {
17
+ buildHonoRoute(app, getFollowUpsContract, async (c) => {
18
18
  const state = await c
19
19
  .get('container')
20
- .executionService.getFollowUps(param(c, 'workspaceId'), param(c, 'executionId'));
21
- return c.json(state);
20
+ .executionService.getFollowUps(param(c, 'workspaceId'), c.req.valid('param').executionId);
21
+ return c.json(state, 200);
22
22
  });
23
23
  // File a follow-up item as a tracker issue (GitHub Issues / Jira).
24
- app.post('/executions/:executionId/follow-ups/:itemId/file', async (c) => {
24
+ buildHonoRoute(app, fileFollowUpContract, async (c) => {
25
+ const { executionId, itemId } = c.req.valid('param');
25
26
  const state = await c
26
27
  .get('container')
27
- .executionService.fileFollowUp(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'itemId'));
28
- return c.json(state);
28
+ .executionService.fileFollowUp(param(c, 'workspaceId'), executionId, itemId);
29
+ return c.json(state, 200);
29
30
  });
30
31
  // Send a follow-up item back to the Coder (queued for its next pass).
31
- app.post('/executions/:executionId/follow-ups/:itemId/queue', async (c) => {
32
+ buildHonoRoute(app, queueFollowUpContract, async (c) => {
33
+ const { executionId, itemId } = c.req.valid('param');
32
34
  const state = await c
33
35
  .get('container')
34
- .executionService.queueFollowUp(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'itemId'));
35
- return c.json(state);
36
+ .executionService.queueFollowUp(param(c, 'workspaceId'), executionId, itemId);
37
+ return c.json(state, 200);
36
38
  });
37
39
  // Answer a question item (the answer folds into the Coder's next pass).
38
- app.post('/executions/:executionId/follow-ups/:itemId/answer', jsonBody(answerFollowUpSchema), async (c) => {
40
+ buildHonoRoute(app, answerFollowUpContract, async (c) => {
41
+ const { executionId, itemId } = c.req.valid('param');
39
42
  const { answer } = c.req.valid('json');
40
43
  const state = await c
41
44
  .get('container')
42
- .executionService.answerFollowUp(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'itemId'), answer);
43
- return c.json(state);
45
+ .executionService.answerFollowUp(param(c, 'workspaceId'), executionId, itemId, answer);
46
+ return c.json(state, 200);
44
47
  });
45
48
  // Dismiss a follow-up / question item without acting on it.
46
- app.post('/executions/:executionId/follow-ups/:itemId/dismiss', async (c) => {
49
+ buildHonoRoute(app, dismissFollowUpContract, async (c) => {
50
+ const { executionId, itemId } = c.req.valid('param');
47
51
  const state = await c
48
52
  .get('container')
49
- .executionService.dismissFollowUp(param(c, 'workspaceId'), param(c, 'executionId'), param(c, 'itemId'));
50
- return c.json(state);
53
+ .executionService.dismissFollowUp(param(c, 'workspaceId'), executionId, itemId);
54
+ return c.json(state, 200);
51
55
  });
52
56
  return app;
53
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FollowUpController.js","sourceRoot":"","sources":["../../../src/modules/followUp/FollowUpController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FollowUpController.js","sourceRoot":"","sources":["../../../src/modules/followUp/FollowUpController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FragmentLibraryController.d.ts","sourceRoot":"","sources":["../../../src/modules/fragmentLibrary/FragmentLibraryController.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C,KAAK,KAAK,GAAG,SAAS,GAAG,WAAW,CAAA;AAoCpC;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAyJpE"}
1
+ {"version":3,"file":"FragmentLibraryController.d.ts","sourceRoot":"","sources":["../../../src/modules/fragmentLibrary/FragmentLibraryController.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C,KAAK,KAAK,GAAG,SAAS,GAAG,WAAW,CAAA;AAoCpC;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAqJpE"}