@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.
- package/dist/config/types.d.ts +1 -15
- package/dist/config/types.d.ts.map +1 -1
- package/dist/http/errorHandler.d.ts.map +1 -1
- package/dist/http/errorHandler.js +20 -0
- package/dist/http/errorHandler.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/accounts/AccountController.d.ts +4 -0
- package/dist/modules/accounts/AccountController.d.ts.map +1 -1
- package/dist/modules/accounts/AccountController.js +78 -58
- package/dist/modules/accounts/AccountController.js.map +1 -1
- package/dist/modules/agentRuns/AgentRunController.d.ts.map +1 -1
- package/dist/modules/agentRuns/AgentRunController.js +8 -6
- package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
- package/dist/modules/auth/AuthController.d.ts.map +1 -1
- package/dist/modules/auth/AuthController.js +23 -23
- package/dist/modules/auth/AuthController.js.map +1 -1
- package/dist/modules/board/BoardController.d.ts.map +1 -1
- package/dist/modules/board/BoardController.js +26 -26
- package/dist/modules/board/BoardController.js.map +1 -1
- package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
- package/dist/modules/bootstrap/BootstrapController.js +15 -15
- package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
- package/dist/modules/brainstorm/BrainstormController.d.ts +3 -2
- package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
- package/dist/modules/brainstorm/BrainstormController.js +36 -52
- package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
- package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
- package/dist/modules/clarity/ClarityReviewController.js +27 -25
- package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
- package/dist/modules/consensus/ConsensusController.d.ts.map +1 -1
- package/dist/modules/consensus/ConsensusController.js +6 -4
- package/dist/modules/consensus/ConsensusController.js.map +1 -1
- package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
- package/dist/modules/documents/DocumentSourceController.js +17 -17
- package/dist/modules/documents/DocumentSourceController.js.map +1 -1
- package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentController.js +24 -24
- package/dist/modules/environments/EnvironmentController.js.map +1 -1
- package/dist/modules/execution/ExecutionController.d.ts.map +1 -1
- package/dist/modules/execution/ExecutionController.js +57 -45
- package/dist/modules/execution/ExecutionController.js.map +1 -1
- package/dist/modules/followUp/FollowUpController.d.ts.map +1 -1
- package/dist/modules/followUp/FollowUpController.js +21 -17
- package/dist/modules/followUp/FollowUpController.js.map +1 -1
- package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
- package/dist/modules/fragmentLibrary/FragmentLibraryController.js +26 -26
- package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
- package/dist/modules/github/GitHubController.d.ts.map +1 -1
- package/dist/modules/github/GitHubController.js +44 -44
- package/dist/modules/github/GitHubController.js.map +1 -1
- package/dist/modules/humanReview/HumanReviewController.d.ts.map +1 -1
- package/dist/modules/humanReview/HumanReviewController.js +5 -5
- package/dist/modules/humanReview/HumanReviewController.js.map +1 -1
- package/dist/modules/humanTest/HumanTestController.d.ts.map +1 -1
- package/dist/modules/humanTest/HumanTestController.js +17 -17
- package/dist/modules/humanTest/HumanTestController.js.map +1 -1
- package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
- package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -7
- package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
- package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
- package/dist/modules/kaizen/KaizenController.js +7 -5
- package/dist/modules/kaizen/KaizenController.js.map +1 -1
- package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
- package/dist/modules/localModels/LocalModelEndpointController.js +10 -11
- package/dist/modules/localModels/LocalModelEndpointController.js.map +1 -1
- package/dist/modules/localSettings/LocalSettingsController.d.ts.map +1 -1
- package/dist/modules/localSettings/LocalSettingsController.js +6 -6
- package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
- package/dist/modules/merge/MergePresetController.d.ts.map +1 -1
- package/dist/modules/merge/MergePresetController.js +10 -10
- package/dist/modules/merge/MergePresetController.js.map +1 -1
- package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
- package/dist/modules/modelPresets/ModelPresetController.js +10 -10
- package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
- package/dist/modules/models/ModelController.d.ts.map +1 -1
- package/dist/modules/models/ModelController.js +6 -4
- package/dist/modules/models/ModelController.js.map +1 -1
- package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
- package/dist/modules/notifications/NotificationController.js +11 -9
- package/dist/modules/notifications/NotificationController.js.map +1 -1
- package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
- package/dist/modules/openrouter/OpenRouterCatalogController.js +9 -10
- package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
- package/dist/modules/pipelines/PipelineController.d.ts.map +1 -1
- package/dist/modules/pipelines/PipelineController.js +17 -15
- package/dist/modules/pipelines/PipelineController.js.map +1 -1
- package/dist/modules/promptFragments/PromptFragmentController.d.ts.map +1 -1
- package/dist/modules/promptFragments/PromptFragmentController.js +4 -2
- package/dist/modules/promptFragments/PromptFragmentController.js.map +1 -1
- package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
- package/dist/modules/providers/ApiKeyController.js +12 -12
- package/dist/modules/providers/ApiKeyController.js.map +1 -1
- package/dist/modules/providers/PersonalSubscriptionController.d.ts.map +1 -1
- package/dist/modules/providers/PersonalSubscriptionController.js +7 -8
- package/dist/modules/providers/PersonalSubscriptionController.js.map +1 -1
- package/dist/modules/providers/UserSecretController.d.ts.map +1 -1
- package/dist/modules/providers/UserSecretController.js +14 -15
- package/dist/modules/providers/UserSecretController.js.map +1 -1
- package/dist/modules/providers/VendorCredentialController.d.ts.map +1 -1
- package/dist/modules/providers/VendorCredentialController.js +7 -7
- package/dist/modules/providers/VendorCredentialController.js.map +1 -1
- package/dist/modules/providers/personalCredentialGate.d.ts +2 -2
- package/dist/modules/providers/personalCredentialGate.d.ts.map +1 -1
- package/dist/modules/providers/personalCredentialGate.js.map +1 -1
- package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
- package/dist/modules/provisioningLogs/ProvisioningLogController.js +4 -3
- package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
- package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
- package/dist/modules/recurring/RecurringPipelineController.js +15 -15
- package/dist/modules/recurring/RecurringPipelineController.js.map +1 -1
- package/dist/modules/recurring/TrackerSettingsController.d.ts.map +1 -1
- package/dist/modules/recurring/TrackerSettingsController.js +6 -6
- package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
- package/dist/modules/releaseHealth/ReleaseHealthController.d.ts.map +1 -1
- package/dist/modules/releaseHealth/ReleaseHealthController.js +14 -14
- package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
- package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
- package/dist/modules/requirements/RequirementReviewController.js +43 -38
- package/dist/modules/requirements/RequirementReviewController.js.map +1 -1
- package/dist/modules/runners/RunnerPoolController.d.ts.map +1 -1
- package/dist/modules/runners/RunnerPoolController.js +12 -12
- package/dist/modules/runners/RunnerPoolController.js.map +1 -1
- package/dist/modules/sandbox/SandboxController.d.ts.map +1 -1
- package/dist/modules/sandbox/SandboxController.js +35 -26
- package/dist/modules/sandbox/SandboxController.js.map +1 -1
- package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.d.ts.map +1 -1
- package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js +6 -6
- package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
- package/dist/modules/serviceSpec/ServiceSpecController.d.ts.map +1 -1
- package/dist/modules/serviceSpec/ServiceSpecController.js +9 -8
- package/dist/modules/serviceSpec/ServiceSpecController.js.map +1 -1
- package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
- package/dist/modules/services/ServiceMountController.js +14 -14
- package/dist/modules/services/ServiceMountController.js.map +1 -1
- package/dist/modules/settings/WorkspaceSettingsController.d.ts.map +1 -1
- package/dist/modules/settings/WorkspaceSettingsController.js +6 -6
- package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
- package/dist/modules/slack/SlackController.d.ts.map +1 -1
- package/dist/modules/slack/SlackController.js +18 -18
- package/dist/modules/slack/SlackController.js.map +1 -1
- package/dist/modules/tasks/TaskSourceController.d.ts.map +1 -1
- package/dist/modules/tasks/TaskSourceController.js +19 -19
- package/dist/modules/tasks/TaskSourceController.js.map +1 -1
- package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
- package/dist/modules/workspaces/WorkspaceController.js +11 -11
- package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
- package/package.json +11 -9
- package/dist/http/validation.d.ts +0 -21
- package/dist/http/validation.d.ts.map +0 -1
- package/dist/http/validation.js +0 -21
- package/dist/http/validation.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { archiveSandboxPromptContract, cloneSandboxPromptContract, createSandboxExperimentContract, createSandboxFixtureContract, getSandboxExperimentContract, launchSandboxExperimentContract, listSandboxExperimentsContract, listSandboxFixturesContract, listSandboxPromptsContract, removeSandboxFixtureContract, sandboxOverviewContract, saveSandboxPromptContract, setSandboxPromptLabelsContract, } 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 Sandbox module or send a 503, returning null when unconfigured. */
|
|
6
6
|
function requireSandbox(c) {
|
|
7
7
|
return c.get('container').sandbox ?? null;
|
|
@@ -16,95 +16,104 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'The
|
|
|
16
16
|
export function sandboxController() {
|
|
17
17
|
const app = new Hono();
|
|
18
18
|
// ---- overview -------------------------------------------------------------
|
|
19
|
-
app
|
|
19
|
+
buildHonoRoute(app, sandboxOverviewContract, async (c) => {
|
|
20
20
|
const sandbox = requireSandbox(c);
|
|
21
21
|
if (!sandbox)
|
|
22
22
|
return unavailable(c);
|
|
23
|
-
|
|
23
|
+
const overview = await sandbox.service.overview(param(c, 'workspaceId'));
|
|
24
|
+
// The catalog is exposed as `readonly` arrays; clone into the mutable shape the
|
|
25
|
+
// contract response schema infers (the readonly-ness is a source-side detail only).
|
|
26
|
+
return c.json({
|
|
27
|
+
...overview,
|
|
28
|
+
agentKinds: overview.agentKinds.map((kind) => ({
|
|
29
|
+
...kind,
|
|
30
|
+
fixtureKinds: [...kind.fixtureKinds],
|
|
31
|
+
})),
|
|
32
|
+
}, 200);
|
|
24
33
|
});
|
|
25
34
|
// ---- prompt versions ------------------------------------------------------
|
|
26
|
-
app
|
|
35
|
+
buildHonoRoute(app, listSandboxPromptsContract, async (c) => {
|
|
27
36
|
const sandbox = requireSandbox(c);
|
|
28
37
|
if (!sandbox)
|
|
29
38
|
return unavailable(c);
|
|
30
|
-
const agentKind = c.req.
|
|
31
|
-
return c.json(await sandbox.service.listPrompts(param(c, 'workspaceId'), agentKind));
|
|
39
|
+
const agentKind = c.req.valid('query').agentKind;
|
|
40
|
+
return c.json(await sandbox.service.listPrompts(param(c, 'workspaceId'), agentKind), 200);
|
|
32
41
|
});
|
|
33
|
-
app
|
|
42
|
+
buildHonoRoute(app, cloneSandboxPromptContract, async (c) => {
|
|
34
43
|
const sandbox = requireSandbox(c);
|
|
35
44
|
if (!sandbox)
|
|
36
45
|
return unavailable(c);
|
|
37
46
|
const version = await sandbox.service.clonePrompt(param(c, 'workspaceId'), c.req.valid('json'));
|
|
38
47
|
return c.json(version, 201);
|
|
39
48
|
});
|
|
40
|
-
app
|
|
49
|
+
buildHonoRoute(app, saveSandboxPromptContract, async (c) => {
|
|
41
50
|
const sandbox = requireSandbox(c);
|
|
42
51
|
if (!sandbox)
|
|
43
52
|
return unavailable(c);
|
|
44
53
|
const version = await sandbox.service.saveVersion(param(c, 'workspaceId'), c.req.valid('json'));
|
|
45
54
|
return c.json(version, 201);
|
|
46
55
|
});
|
|
47
|
-
app
|
|
56
|
+
buildHonoRoute(app, setSandboxPromptLabelsContract, async (c) => {
|
|
48
57
|
const sandbox = requireSandbox(c);
|
|
49
58
|
if (!sandbox)
|
|
50
59
|
return unavailable(c);
|
|
51
|
-
const version = await sandbox.service.setLabels(param(c, 'workspaceId'),
|
|
52
|
-
return c.json(version);
|
|
60
|
+
const version = await sandbox.service.setLabels(param(c, 'workspaceId'), c.req.valid('param').promptId, c.req.valid('json'));
|
|
61
|
+
return c.json(version, 200);
|
|
53
62
|
});
|
|
54
|
-
app
|
|
63
|
+
buildHonoRoute(app, archiveSandboxPromptContract, async (c) => {
|
|
55
64
|
const sandbox = requireSandbox(c);
|
|
56
65
|
if (!sandbox)
|
|
57
66
|
return unavailable(c);
|
|
58
|
-
await sandbox.service.archivePrompt(param(c, 'workspaceId'),
|
|
67
|
+
await sandbox.service.archivePrompt(param(c, 'workspaceId'), c.req.valid('param').promptId);
|
|
59
68
|
return c.body(null, 204);
|
|
60
69
|
});
|
|
61
70
|
// ---- fixtures -------------------------------------------------------------
|
|
62
|
-
app
|
|
71
|
+
buildHonoRoute(app, listSandboxFixturesContract, async (c) => {
|
|
63
72
|
const sandbox = requireSandbox(c);
|
|
64
73
|
if (!sandbox)
|
|
65
74
|
return unavailable(c);
|
|
66
|
-
return c.json(await sandbox.service.listFixtures(param(c, 'workspaceId')));
|
|
75
|
+
return c.json(await sandbox.service.listFixtures(param(c, 'workspaceId')), 200);
|
|
67
76
|
});
|
|
68
|
-
app
|
|
77
|
+
buildHonoRoute(app, createSandboxFixtureContract, async (c) => {
|
|
69
78
|
const sandbox = requireSandbox(c);
|
|
70
79
|
if (!sandbox)
|
|
71
80
|
return unavailable(c);
|
|
72
81
|
const fixture = await sandbox.service.createFixture(param(c, 'workspaceId'), c.req.valid('json'));
|
|
73
82
|
return c.json(fixture, 201);
|
|
74
83
|
});
|
|
75
|
-
app
|
|
84
|
+
buildHonoRoute(app, removeSandboxFixtureContract, async (c) => {
|
|
76
85
|
const sandbox = requireSandbox(c);
|
|
77
86
|
if (!sandbox)
|
|
78
87
|
return unavailable(c);
|
|
79
|
-
await sandbox.service.removeFixture(param(c, 'workspaceId'),
|
|
88
|
+
await sandbox.service.removeFixture(param(c, 'workspaceId'), c.req.valid('param').fixtureId);
|
|
80
89
|
return c.body(null, 204);
|
|
81
90
|
});
|
|
82
91
|
// ---- experiments ----------------------------------------------------------
|
|
83
|
-
app
|
|
92
|
+
buildHonoRoute(app, listSandboxExperimentsContract, async (c) => {
|
|
84
93
|
const sandbox = requireSandbox(c);
|
|
85
94
|
if (!sandbox)
|
|
86
95
|
return unavailable(c);
|
|
87
|
-
return c.json(await sandbox.service.listExperiments(param(c, 'workspaceId')));
|
|
96
|
+
return c.json(await sandbox.service.listExperiments(param(c, 'workspaceId')), 200);
|
|
88
97
|
});
|
|
89
|
-
app
|
|
98
|
+
buildHonoRoute(app, createSandboxExperimentContract, async (c) => {
|
|
90
99
|
const sandbox = requireSandbox(c);
|
|
91
100
|
if (!sandbox)
|
|
92
101
|
return unavailable(c);
|
|
93
102
|
const experiment = await sandbox.service.createExperiment(param(c, 'workspaceId'), c.req.valid('json'));
|
|
94
103
|
return c.json(experiment, 201);
|
|
95
104
|
});
|
|
96
|
-
app
|
|
105
|
+
buildHonoRoute(app, getSandboxExperimentContract, async (c) => {
|
|
97
106
|
const sandbox = requireSandbox(c);
|
|
98
107
|
if (!sandbox)
|
|
99
108
|
return unavailable(c);
|
|
100
|
-
return c.json(await sandbox.service.getExperiment(param(c, 'workspaceId'),
|
|
109
|
+
return c.json(await sandbox.service.getExperiment(param(c, 'workspaceId'), c.req.valid('param').experimentId), 200);
|
|
101
110
|
});
|
|
102
111
|
// Run + grade every cell of the experiment, then return the full result grid.
|
|
103
|
-
app
|
|
112
|
+
buildHonoRoute(app, launchSandboxExperimentContract, async (c) => {
|
|
104
113
|
const sandbox = requireSandbox(c);
|
|
105
114
|
if (!sandbox)
|
|
106
115
|
return unavailable(c);
|
|
107
|
-
return c.json(await sandbox.runService.launch(param(c, 'workspaceId'),
|
|
116
|
+
return c.json(await sandbox.runService.launch(param(c, 'workspaceId'), c.req.valid('param').experimentId), 200);
|
|
108
117
|
});
|
|
109
118
|
return app;
|
|
110
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxController.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"SandboxController.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceFragmentDefaultsController.d.ts","sourceRoot":"","sources":["../../../src/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ServiceFragmentDefaultsController.d.ts","sourceRoot":"","sources":["../../../src/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAc/C;;;;GAIG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAAC,MAAM,CAAC,CAiBhE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getServiceFragmentDefaultsContract, setServiceFragmentDefaultsContract, } 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 service-fragment-defaults module or send a 503, returning null when unconfigured. */
|
|
6
6
|
function requireDefaults(c) {
|
|
7
7
|
return c.get('container').serviceFragmentDefaults ?? null;
|
|
@@ -14,18 +14,18 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Serv
|
|
|
14
14
|
*/
|
|
15
15
|
export function serviceFragmentDefaultsController() {
|
|
16
16
|
const app = new Hono();
|
|
17
|
-
app
|
|
17
|
+
buildHonoRoute(app, getServiceFragmentDefaultsContract, async (c) => {
|
|
18
18
|
const defaults = requireDefaults(c);
|
|
19
19
|
if (!defaults)
|
|
20
20
|
return unavailable(c);
|
|
21
|
-
return c.json(await defaults.service.get(param(c, 'workspaceId')));
|
|
21
|
+
return c.json(await defaults.service.get(param(c, 'workspaceId')), 200);
|
|
22
22
|
});
|
|
23
|
-
app
|
|
23
|
+
buildHonoRoute(app, setServiceFragmentDefaultsContract, async (c) => {
|
|
24
24
|
const defaults = requireDefaults(c);
|
|
25
25
|
if (!defaults)
|
|
26
26
|
return unavailable(c);
|
|
27
27
|
const stored = await defaults.service.set(param(c, 'workspaceId'), c.req.valid('json'));
|
|
28
|
-
return c.json(stored);
|
|
28
|
+
return c.json(stored, 200);
|
|
29
29
|
});
|
|
30
30
|
return app;
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceFragmentDefaultsController.js","sourceRoot":"","sources":["../../../src/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ServiceFragmentDefaultsController.js","sourceRoot":"","sources":["../../../src/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,oGAAoG;AACpG,SAAS,eAAe,CAAmB,CAAa;IACtD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,uBAAuB,IAAI,IAAI,CAAA;AAC3D,CAAC;AAED,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CACJ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,8CAA8C,EAAE,EAAE,EAC3F,GAAG,CACJ,CAAA;AAEH;;;;GAIG;AACH,MAAM,UAAU,iCAAiC;IAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACvF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceSpecController.d.ts","sourceRoot":"","sources":["../../../src/modules/serviceSpec/ServiceSpecController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ServiceSpecController.d.ts","sourceRoot":"","sources":["../../../src/modules/serviceSpec/ServiceSpecController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAM/C;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0BpD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { EMPTY_SERVICE_SPEC_VIEW } from '@cat-factory/contracts';
|
|
1
|
+
import { EMPTY_SERVICE_SPEC_VIEW, getServiceSpecContract } 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
5
|
import { readServiceSpec } from './readServiceSpec.js';
|
|
@@ -17,29 +18,29 @@ const EMPTY = EMPTY_SERVICE_SPEC_VIEW;
|
|
|
17
18
|
*/
|
|
18
19
|
export function serviceSpecController() {
|
|
19
20
|
const app = new Hono();
|
|
20
|
-
app
|
|
21
|
+
buildHonoRoute(app, getServiceSpecContract, async (c) => {
|
|
21
22
|
const container = c.get('container');
|
|
22
23
|
const resolve = container.resolveRunRepoContext;
|
|
23
24
|
if (!resolve)
|
|
24
|
-
return c.json(EMPTY);
|
|
25
|
+
return c.json(EMPTY, 200);
|
|
25
26
|
let ctx;
|
|
26
27
|
try {
|
|
27
|
-
ctx = await resolve(param(c, 'workspaceId'),
|
|
28
|
+
ctx = await resolve(param(c, 'workspaceId'), c.req.valid('param').blockId);
|
|
28
29
|
}
|
|
29
30
|
catch {
|
|
30
31
|
// A block under no linked service throws in the resolver; treat as "no spec" for the
|
|
31
32
|
// read path rather than surfacing the misconfiguration to the inspector.
|
|
32
|
-
return c.json(EMPTY);
|
|
33
|
+
return c.json(EMPTY, 200);
|
|
33
34
|
}
|
|
34
35
|
if (!ctx)
|
|
35
|
-
return c.json(EMPTY);
|
|
36
|
+
return c.json(EMPTY, 200);
|
|
36
37
|
// `readServiceSpec` is total (every repo read is guarded), but keep a defensive fallback
|
|
37
38
|
// so a transient GitHub failure can never 500 the inspector — it shows an empty state.
|
|
38
39
|
try {
|
|
39
|
-
return c.json(await readServiceSpec(ctx.repo, ctx.baseBranch));
|
|
40
|
+
return c.json(await readServiceSpec(ctx.repo, ctx.baseBranch), 200);
|
|
40
41
|
}
|
|
41
42
|
catch {
|
|
42
|
-
return c.json(EMPTY);
|
|
43
|
+
return c.json(EMPTY, 200);
|
|
43
44
|
}
|
|
44
45
|
});
|
|
45
46
|
return app;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceSpecController.js","sourceRoot":"","sources":["../../../src/modules/serviceSpec/ServiceSpecController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ServiceSpecController.js","sourceRoot":"","sources":["../../../src/modules/serviceSpec/ServiceSpecController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,KAAK,GAAG,uBAAuB,CAAA;AAErC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,qBAAqB,CAAA;QAC/C,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACvC,IAAI,GAAG,CAAA;QACP,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,qFAAqF;YACrF,yEAAyE;YACzE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC3B,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACnC,yFAAyF;QACzF,uFAAuF;QACvF,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAA;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceMountController.d.ts","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ServiceMountController.d.ts","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAsDrD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { listServiceCatalogContract, listServiceMountsContract, mountServiceContract, unmountServiceContract, updateServiceMountLayoutContract, } 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 in-org services module or send a 503, returning null when unconfigured. */
|
|
6
6
|
function requireServices(c) {
|
|
7
7
|
return c.get('container').services ?? null;
|
|
@@ -17,14 +17,14 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Shar
|
|
|
17
17
|
export function serviceMountController() {
|
|
18
18
|
const app = new Hono();
|
|
19
19
|
// Services currently mounted onto this board.
|
|
20
|
-
app
|
|
20
|
+
buildHonoRoute(app, listServiceMountsContract, async (c) => {
|
|
21
21
|
const services = requireServices(c);
|
|
22
22
|
if (!services)
|
|
23
23
|
return unavailable(c);
|
|
24
|
-
return c.json(await services.service.listMounts(param(c, 'workspaceId')));
|
|
24
|
+
return c.json(await services.service.listMounts(param(c, 'workspaceId')), 200);
|
|
25
25
|
});
|
|
26
26
|
// The org catalog: services owned by this workspace's account (mountable here).
|
|
27
|
-
app
|
|
27
|
+
buildHonoRoute(app, listServiceCatalogContract, async (c) => {
|
|
28
28
|
const services = requireServices(c);
|
|
29
29
|
if (!services)
|
|
30
30
|
return unavailable(c);
|
|
@@ -32,31 +32,31 @@ export function serviceMountController() {
|
|
|
32
32
|
// org, or the account id. The org catalog includes the null-account org.
|
|
33
33
|
const accountId = await c.get('container').workspaceService.accountOf(param(c, 'workspaceId'));
|
|
34
34
|
if (accountId === undefined)
|
|
35
|
-
return c.json([]);
|
|
36
|
-
return c.json(await services.service.listForAccount(accountId));
|
|
35
|
+
return c.json([], 200);
|
|
36
|
+
return c.json(await services.service.listForAccount(accountId), 200);
|
|
37
37
|
});
|
|
38
38
|
// Mount an existing org service onto this board.
|
|
39
|
-
app
|
|
39
|
+
buildHonoRoute(app, mountServiceContract, async (c) => {
|
|
40
40
|
const services = requireServices(c);
|
|
41
41
|
if (!services)
|
|
42
42
|
return unavailable(c);
|
|
43
|
-
const mount = await services.service.mount(param(c, 'workspaceId'),
|
|
43
|
+
const mount = await services.service.mount(param(c, 'workspaceId'), c.req.valid('param').serviceId, c.req.valid('json'));
|
|
44
44
|
return c.json(mount, 201);
|
|
45
45
|
});
|
|
46
46
|
// Update a mount's per-workspace layout override (frame position/size).
|
|
47
|
-
app
|
|
47
|
+
buildHonoRoute(app, updateServiceMountLayoutContract, async (c) => {
|
|
48
48
|
const services = requireServices(c);
|
|
49
49
|
if (!services)
|
|
50
50
|
return unavailable(c);
|
|
51
|
-
const mount = await services.service.updateLayout(param(c, 'workspaceId'),
|
|
52
|
-
return c.json(mount);
|
|
51
|
+
const mount = await services.service.updateLayout(param(c, 'workspaceId'), c.req.valid('param').serviceId, c.req.valid('json'));
|
|
52
|
+
return c.json(mount, 200);
|
|
53
53
|
});
|
|
54
54
|
// Remove a service from this board (does NOT delete the shared service).
|
|
55
|
-
app
|
|
55
|
+
buildHonoRoute(app, unmountServiceContract, async (c) => {
|
|
56
56
|
const services = requireServices(c);
|
|
57
57
|
if (!services)
|
|
58
58
|
return unavailable(c);
|
|
59
|
-
await services.service.unmount(param(c, 'workspaceId'),
|
|
59
|
+
await services.service.unmount(param(c, 'workspaceId'), c.req.valid('param').serviceId);
|
|
60
60
|
return c.body(null, 204);
|
|
61
61
|
});
|
|
62
62
|
return app;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceMountController.js","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ServiceMountController.js","sourceRoot":"","sources":["../../../src/modules/services/ServiceMountController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSettingsController.d.ts","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsController.d.ts","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAqB1D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getWorkspaceSettingsContract, updateWorkspaceSettingsContract, } 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 workspace-settings module or send a 503, returning null when unconfigured. */
|
|
6
6
|
function requireSettings(c) {
|
|
7
7
|
return c.get('container').settings ?? null;
|
|
@@ -14,13 +14,13 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Work
|
|
|
14
14
|
*/
|
|
15
15
|
export function workspaceSettingsController() {
|
|
16
16
|
const app = new Hono();
|
|
17
|
-
app
|
|
17
|
+
buildHonoRoute(app, getWorkspaceSettingsContract, async (c) => {
|
|
18
18
|
const settings = requireSettings(c);
|
|
19
19
|
if (!settings)
|
|
20
20
|
return unavailable(c);
|
|
21
|
-
return c.json(await settings.service.get(param(c, 'workspaceId')));
|
|
21
|
+
return c.json(await settings.service.get(param(c, 'workspaceId')), 200);
|
|
22
22
|
});
|
|
23
|
-
app
|
|
23
|
+
buildHonoRoute(app, updateWorkspaceSettingsContract, async (c) => {
|
|
24
24
|
const settings = requireSettings(c);
|
|
25
25
|
if (!settings)
|
|
26
26
|
return unavailable(c);
|
|
@@ -29,7 +29,7 @@ export function workspaceSettingsController() {
|
|
|
29
29
|
// A budget edit must take effect immediately, not after the spend service's
|
|
30
30
|
// short pricing cache TTL — drop the workspace's cached pricing now.
|
|
31
31
|
c.get('container').spendService.invalidatePricing(workspaceId);
|
|
32
|
-
return c.json(updated);
|
|
32
|
+
return c.json(updated, 200);
|
|
33
33
|
});
|
|
34
34
|
return app;
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSettingsController.js","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsController.js","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,6FAA6F;AAC7F,SAAS,eAAe,CAAmB,CAAa;IACtD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAA;AAC5C,CAAC;AAED,MAAM,WAAW,GAAG,CAAmB,CAAa,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uCAAuC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AAEnG;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/E,4EAA4E;QAC5E,qEAAqE;QACrE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackController.d.ts","sourceRoot":"","sources":["../../../src/modules/slack/SlackController.ts"],"names":[],"mappings":"
|
|
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;AAkB/C;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,CAqG9C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwBnD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { connectSlackContract, disconnectSlackContract, getSlackConnectionContract, getSlackInstallUrlContract, getSlackMemberMappingContract, getSlackSettingsContract, listSlackChannelsContract, updateSlackMemberMappingContract, updateSlackSettingsContract, } from '@cat-factory/contracts';
|
|
2
|
+
import { buildHonoRoute } from '@toad-contracts/hono';
|
|
2
3
|
import { Hono } from 'hono';
|
|
3
4
|
import { StateSigner } from '../../github/state.js';
|
|
4
5
|
import { param } from '../../http/params.js';
|
|
5
|
-
import { jsonBody } from '../../http/validation.js';
|
|
6
6
|
// The bot scopes the "Add to Slack" flow requests: post messages + read channels
|
|
7
7
|
// (public + private) so the routing picker can list them. `chat:write.public` lets
|
|
8
8
|
// the bot post to PUBLIC channels it hasn't been explicitly invited to — without it
|
|
@@ -24,18 +24,18 @@ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Slac
|
|
|
24
24
|
export function slackController() {
|
|
25
25
|
const app = new Hono();
|
|
26
26
|
// ---- connection (per-account) ------------------------------------------
|
|
27
|
-
app
|
|
27
|
+
buildHonoRoute(app, getSlackConnectionContract, async (c) => {
|
|
28
28
|
const slack = requireSlack(c);
|
|
29
29
|
if (!slack)
|
|
30
30
|
return unavailable(c);
|
|
31
31
|
const connection = await slack.connectionService.getConnection(param(c, 'workspaceId'));
|
|
32
32
|
const oauthEnabled = await slack.connectionService.oauthEnabled(param(c, 'workspaceId'));
|
|
33
|
-
return c.json({ connection, oauthEnabled });
|
|
33
|
+
return c.json({ connection, oauthEnabled }, 200);
|
|
34
34
|
});
|
|
35
35
|
// The "Add to Slack" URL, carrying an HMAC-signed `state` that binds the install
|
|
36
36
|
// to this workspace + user with a short expiry. 503 when OAuth isn't configured
|
|
37
37
|
// (the manual-token path below is then the way to connect).
|
|
38
|
-
app
|
|
38
|
+
buildHonoRoute(app, getSlackInstallUrlContract, async (c) => {
|
|
39
39
|
const slack = requireSlack(c);
|
|
40
40
|
if (!slack)
|
|
41
41
|
return unavailable(c);
|
|
@@ -50,17 +50,17 @@ export function slackController() {
|
|
|
50
50
|
exp: Date.now() + 10 * 60 * 1000,
|
|
51
51
|
});
|
|
52
52
|
const url = await slack.connectionService.buildInstallUrl(workspaceId, state, SLACK_BOT_SCOPES);
|
|
53
|
-
return c.json({ url });
|
|
53
|
+
return c.json({ url }, 200);
|
|
54
54
|
});
|
|
55
55
|
// Manual bot-token paste (the always-available fallback to OAuth).
|
|
56
|
-
app
|
|
56
|
+
buildHonoRoute(app, connectSlackContract, async (c) => {
|
|
57
57
|
const slack = requireSlack(c);
|
|
58
58
|
if (!slack)
|
|
59
59
|
return unavailable(c);
|
|
60
60
|
const connection = await slack.connectionService.connectWithToken(param(c, 'workspaceId'), c.req.valid('json').token);
|
|
61
61
|
return c.json(connection, 201);
|
|
62
62
|
});
|
|
63
|
-
app
|
|
63
|
+
buildHonoRoute(app, disconnectSlackContract, async (c) => {
|
|
64
64
|
const slack = requireSlack(c);
|
|
65
65
|
if (!slack)
|
|
66
66
|
return unavailable(c);
|
|
@@ -68,42 +68,42 @@ export function slackController() {
|
|
|
68
68
|
return c.body(null, 204);
|
|
69
69
|
});
|
|
70
70
|
// Channels the bot can post to, for the routing picker.
|
|
71
|
-
app
|
|
71
|
+
buildHonoRoute(app, listSlackChannelsContract, async (c) => {
|
|
72
72
|
const slack = requireSlack(c);
|
|
73
73
|
if (!slack)
|
|
74
74
|
return unavailable(c);
|
|
75
75
|
const channels = await slack.connectionService.listChannels(param(c, 'workspaceId'));
|
|
76
|
-
return c.json({ channels });
|
|
76
|
+
return c.json({ channels }, 200);
|
|
77
77
|
});
|
|
78
78
|
// ---- routing (per-workspace) -------------------------------------------
|
|
79
|
-
app
|
|
79
|
+
buildHonoRoute(app, getSlackSettingsContract, async (c) => {
|
|
80
80
|
const slack = requireSlack(c);
|
|
81
81
|
if (!slack)
|
|
82
82
|
return unavailable(c);
|
|
83
83
|
const settings = await slack.settingsService.get(param(c, 'workspaceId'));
|
|
84
|
-
return c.json(settings);
|
|
84
|
+
return c.json(settings, 200);
|
|
85
85
|
});
|
|
86
|
-
app
|
|
86
|
+
buildHonoRoute(app, updateSlackSettingsContract, async (c) => {
|
|
87
87
|
const slack = requireSlack(c);
|
|
88
88
|
if (!slack)
|
|
89
89
|
return unavailable(c);
|
|
90
90
|
const settings = await slack.settingsService.update(param(c, 'workspaceId'), c.req.valid('json'));
|
|
91
|
-
return c.json(settings);
|
|
91
|
+
return c.json(settings, 200);
|
|
92
92
|
});
|
|
93
93
|
// ---- member mapping (per-account) --------------------------------------
|
|
94
|
-
app
|
|
94
|
+
buildHonoRoute(app, getSlackMemberMappingContract, async (c) => {
|
|
95
95
|
const slack = requireSlack(c);
|
|
96
96
|
if (!slack)
|
|
97
97
|
return unavailable(c);
|
|
98
98
|
const entries = await slack.memberMappingService.get(param(c, 'workspaceId'));
|
|
99
|
-
return c.json({ entries });
|
|
99
|
+
return c.json({ entries }, 200);
|
|
100
100
|
});
|
|
101
|
-
app
|
|
101
|
+
buildHonoRoute(app, updateSlackMemberMappingContract, async (c) => {
|
|
102
102
|
const slack = requireSlack(c);
|
|
103
103
|
if (!slack)
|
|
104
104
|
return unavailable(c);
|
|
105
105
|
const entries = await slack.memberMappingService.update(param(c, 'workspaceId'), c.req.valid('json').entries);
|
|
106
|
-
return c.json({ entries });
|
|
106
|
+
return c.json({ entries }, 200);
|
|
107
107
|
});
|
|
108
108
|
return app;
|
|
109
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackController.js","sourceRoot":"","sources":["../../../src/modules/slack/SlackController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,
|
|
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":"
|
|
1
|
+
{"version":3,"file":"TaskSourceController.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/TaskSourceController.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA0D/C;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0JnD"}
|