@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.
- package/dist/agents/modelProviderResolver.d.ts +9 -1
- package/dist/agents/modelProviderResolver.d.ts.map +1 -1
- package/dist/agents/modelProviderResolver.js +1 -0
- package/dist/agents/modelProviderResolver.js.map +1 -1
- package/dist/agents/storeAgentContextGate.d.ts +36 -0
- package/dist/agents/storeAgentContextGate.d.ts.map +1 -0
- package/dist/agents/storeAgentContextGate.js +36 -0
- package/dist/agents/storeAgentContextGate.js.map +1 -0
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +2 -1
- package/dist/auth/middleware.js.map +1 -1
- package/dist/http/errorHandler.d.ts.map +1 -1
- package/dist/http/errorHandler.js +6 -0
- package/dist/http/errorHandler.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/accounts/AccountController.d.ts.map +1 -1
- package/dist/modules/accounts/AccountController.js +37 -31
- 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 +9 -6
- package/dist/modules/agentRuns/AgentRunController.js.map +1 -1
- package/dist/modules/artifacts/ArtifactController.d.ts.map +1 -1
- package/dist/modules/artifacts/ArtifactController.js +8 -5
- package/dist/modules/artifacts/ArtifactController.js.map +1 -1
- package/dist/modules/artifacts/HarnessArtifactController.d.ts.map +1 -1
- package/dist/modules/artifacts/HarnessArtifactController.js +5 -4
- package/dist/modules/artifacts/HarnessArtifactController.js.map +1 -1
- package/dist/modules/auth/AuthController.d.ts.map +1 -1
- package/dist/modules/auth/AuthController.js +48 -50
- package/dist/modules/auth/AuthController.js.map +1 -1
- package/dist/modules/bootstrap/BootstrapController.d.ts.map +1 -1
- package/dist/modules/bootstrap/BootstrapController.js +12 -9
- package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
- package/dist/modules/brainstorm/BrainstormController.d.ts.map +1 -1
- package/dist/modules/brainstorm/BrainstormController.js +12 -9
- package/dist/modules/brainstorm/BrainstormController.js.map +1 -1
- package/dist/modules/bugHunt/BugHuntController.d.ts.map +1 -1
- package/dist/modules/bugHunt/BugHuntController.js +7 -5
- package/dist/modules/bugHunt/BugHuntController.js.map +1 -1
- package/dist/modules/clarity/ClarityReviewController.d.ts.map +1 -1
- package/dist/modules/clarity/ClarityReviewController.js +12 -9
- package/dist/modules/clarity/ClarityReviewController.js.map +1 -1
- package/dist/modules/docInterview/DocInterviewController.d.ts.map +1 -1
- package/dist/modules/docInterview/DocInterviewController.js +8 -5
- package/dist/modules/docInterview/DocInterviewController.js.map +1 -1
- package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
- package/dist/modules/documents/DocumentSourceController.js +17 -15
- 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 +33 -33
- package/dist/modules/environments/EnvironmentController.js.map +1 -1
- package/dist/modules/environments/EnvironmentUserHandlerController.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentUserHandlerController.js +13 -9
- package/dist/modules/environments/EnvironmentUserHandlerController.js.map +1 -1
- package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
- package/dist/modules/fragmentLibrary/FragmentLibraryController.js +32 -41
- 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 +26 -23
- package/dist/modules/github/GitHubController.js.map +1 -1
- package/dist/modules/github/GitHubWebhookController.d.ts.map +1 -1
- package/dist/modules/github/GitHubWebhookController.js +5 -4
- package/dist/modules/github/GitHubWebhookController.js.map +1 -1
- package/dist/modules/gitlab/GitLabController.d.ts.map +1 -1
- package/dist/modules/gitlab/GitLabController.js +7 -4
- package/dist/modules/gitlab/GitLabController.js.map +1 -1
- package/dist/modules/incidentEnrichment/IncidentEnrichmentController.d.ts.map +1 -1
- package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +7 -9
- package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
- package/dist/modules/initiatives/InitiativeController.d.ts.map +1 -1
- package/dist/modules/initiatives/InitiativeController.js +20 -17
- package/dist/modules/initiatives/InitiativeController.js.map +1 -1
- package/dist/modules/kaizen/KaizenController.d.ts.map +1 -1
- package/dist/modules/kaizen/KaizenController.js +6 -3
- package/dist/modules/kaizen/KaizenController.js.map +1 -1
- package/dist/modules/llmProxy/LlmProxyController.d.ts.map +1 -1
- package/dist/modules/llmProxy/LlmProxyController.js +41 -12
- package/dist/modules/llmProxy/LlmProxyController.js.map +1 -1
- package/dist/modules/localModels/LocalModelEndpointController.d.ts.map +1 -1
- package/dist/modules/localModels/LocalModelEndpointController.js +15 -10
- 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 -8
- package/dist/modules/localSettings/LocalSettingsController.js.map +1 -1
- package/dist/modules/localSettings/MothershipConnectController.d.ts.map +1 -1
- package/dist/modules/localSettings/MothershipConnectController.js +2 -6
- package/dist/modules/localSettings/MothershipConnectController.js.map +1 -1
- package/dist/modules/merge/MergeTrackRecordController.d.ts.map +1 -1
- package/dist/modules/merge/MergeTrackRecordController.js +6 -3
- package/dist/modules/merge/MergeTrackRecordController.js.map +1 -1
- package/dist/modules/merge/RiskPolicyController.d.ts.map +1 -1
- package/dist/modules/merge/RiskPolicyController.js +9 -6
- package/dist/modules/merge/RiskPolicyController.js.map +1 -1
- package/dist/modules/modelPresets/ModelPresetController.d.ts.map +1 -1
- package/dist/modules/modelPresets/ModelPresetController.js +9 -6
- package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
- package/dist/modules/notificationWebhook/NotificationWebhookController.d.ts.map +1 -1
- package/dist/modules/notificationWebhook/NotificationWebhookController.js +7 -4
- package/dist/modules/notificationWebhook/NotificationWebhookController.js.map +1 -1
- package/dist/modules/notifications/NotificationController.d.ts.map +1 -1
- package/dist/modules/notifications/NotificationController.js +7 -4
- package/dist/modules/notifications/NotificationController.js.map +1 -1
- package/dist/modules/observability/PlatformObservabilityController.d.ts.map +1 -1
- package/dist/modules/observability/PlatformObservabilityController.js +6 -8
- package/dist/modules/observability/PlatformObservabilityController.js.map +1 -1
- package/dist/modules/openrouter/OpenRouterCatalogController.d.ts.map +1 -1
- package/dist/modules/openrouter/OpenRouterCatalogController.js +13 -8
- package/dist/modules/openrouter/OpenRouterCatalogController.js.map +1 -1
- package/dist/modules/packageRegistries/PackageRegistriesController.d.ts.map +1 -1
- package/dist/modules/packageRegistries/PackageRegistriesController.js +7 -9
- package/dist/modules/packageRegistries/PackageRegistriesController.js.map +1 -1
- package/dist/modules/persistence/GitHubDelegationController.d.ts.map +1 -1
- package/dist/modules/persistence/GitHubDelegationController.js +3 -7
- package/dist/modules/persistence/GitHubDelegationController.js.map +1 -1
- package/dist/modules/preflight/PreflightController.d.ts.map +1 -1
- package/dist/modules/preflight/PreflightController.js +5 -7
- package/dist/modules/preflight/PreflightController.js.map +1 -1
- package/dist/modules/preview/PreviewController.d.ts.map +1 -1
- package/dist/modules/preview/PreviewController.js +7 -9
- package/dist/modules/preview/PreviewController.js.map +1 -1
- package/dist/modules/providers/ApiKeyController.d.ts.map +1 -1
- package/dist/modules/providers/ApiKeyController.js +19 -14
- 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 +13 -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 +17 -12
- 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 +8 -10
- package/dist/modules/providers/VendorCredentialController.js.map +1 -1
- package/dist/modules/provisioningLogs/ProvisioningLogController.d.ts.map +1 -1
- package/dist/modules/provisioningLogs/ProvisioningLogController.js +5 -2
- package/dist/modules/provisioningLogs/ProvisioningLogController.js.map +1 -1
- package/dist/modules/publicApi/PublicApiController.js +4 -4
- package/dist/modules/publicApi/PublicApiController.js.map +1 -1
- package/dist/modules/publicApi/PublicApiKeyController.d.ts.map +1 -1
- package/dist/modules/publicApi/PublicApiKeyController.js +7 -4
- package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -1
- package/dist/modules/recurring/RecurringPipelineController.d.ts.map +1 -1
- package/dist/modules/recurring/RecurringPipelineController.js +10 -7
- 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 -3
- 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 +10 -7
- package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
- package/dist/modules/reports/ReportsController.d.ts.map +1 -1
- package/dist/modules/reports/ReportsController.js +6 -3
- package/dist/modules/reports/ReportsController.js.map +1 -1
- package/dist/modules/requirements/RequirementReviewController.d.ts.map +1 -1
- package/dist/modules/requirements/RequirementReviewController.js +16 -13
- 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 +10 -7
- 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 +17 -14
- 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 -3
- package/dist/modules/serviceFragmentDefaults/ServiceFragmentDefaultsController.js.map +1 -1
- package/dist/modules/services/ServiceMountController.d.ts.map +1 -1
- package/dist/modules/services/ServiceMountController.js +9 -6
- 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 -3
- package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
- package/dist/modules/sharedStack/SharedStackController.d.ts.map +1 -1
- package/dist/modules/sharedStack/SharedStackController.js +11 -8
- package/dist/modules/sharedStack/SharedStackController.js.map +1 -1
- package/dist/modules/skillLibrary/SkillLibraryController.d.ts.map +1 -1
- package/dist/modules/skillLibrary/SkillLibraryController.js +19 -19
- package/dist/modules/skillLibrary/SkillLibraryController.js.map +1 -1
- package/dist/modules/slack/SlackController.d.ts.map +1 -1
- package/dist/modules/slack/SlackController.js +16 -13
- 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 +26 -24
- package/dist/modules/tasks/TaskSourceController.js.map +1 -1
- package/dist/modules/tasks/TaskWebhookController.d.ts.map +1 -1
- package/dist/modules/tasks/TaskWebhookController.js +4 -4
- package/dist/modules/tasks/TaskWebhookController.js.map +1 -1
- package/dist/modules/testSecrets/TestSecretsController.d.ts.map +1 -1
- package/dist/modules/testSecrets/TestSecretsController.js +7 -9
- package/dist/modules/testSecrets/TestSecretsController.js.map +1 -1
- package/dist/modules/userSettings/UserSettingsController.d.ts.map +1 -1
- package/dist/modules/userSettings/UserSettingsController.js +11 -6
- package/dist/modules/userSettings/UserSettingsController.js.map +1 -1
- package/dist/modules/validation/ValidationConfigController.d.ts.map +1 -1
- package/dist/modules/validation/ValidationConfigController.js +52 -11
- package/dist/modules/validation/ValidationConfigController.js.map +1 -1
- package/dist/modules/vcs/VcsWebhookController.d.ts.map +1 -1
- package/dist/modules/vcs/VcsWebhookController.js +5 -5
- package/dist/modules/vcs/VcsWebhookController.js.map +1 -1
- package/dist/modules/webSearch/WebSearchProxyController.d.ts.map +1 -1
- package/dist/modules/webSearch/WebSearchProxyController.js +3 -3
- package/dist/modules/webSearch/WebSearchProxyController.js.map +1 -1
- package/dist/modules/workspaces/WorkspaceMemberController.d.ts.map +1 -1
- package/dist/modules/workspaces/WorkspaceMemberController.js +9 -6
- package/dist/modules/workspaces/WorkspaceMemberController.js.map +1 -1
- package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
- package/dist/persistence/rpc-allowlist.js +6 -0
- package/dist/persistence/rpc-allowlist.js.map +1 -1
- package/dist/persistence/rpc.d.ts.map +1 -1
- package/dist/persistence/rpc.js +3 -0
- package/dist/persistence/rpc.js.map +1 -1
- 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 = (
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
69
|
+
return unavailable('Repo bootstrap is not configured');
|
|
67
70
|
if (!bootstrap.service.canBootstrap) {
|
|
68
|
-
return unavailable(
|
|
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":"AAAA,OAAO,EACL,mCAAmC,EACnC,mCAAmC,EACnC,uBAAuB,EACvB,yBAAyB,EACzB,kCAAkC,EAClC,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;
|
|
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;
|
|
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 = (
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,wBAAwB,EACxB,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;
|
|
1
|
+
{"version":3,"file":"BrainstormController.js","sourceRoot":"","sources":["../../../src/modules/brainstorm/BrainstormController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,qFAAqF;AACrF,SAAS,iBAAiB,CAAmB,CAAa;IACxD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,IAAI,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,8BAA8B,CAAC,CAAA;AAC5D,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,6EAA6E;IAC7E,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAA;QAC9F,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,6FAA6F;IAC7F,8FAA8F;IAC9F,+DAA+D;IAC/D,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC;aACpB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAC9E,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,uFAAuF;IACvF,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,SAAS,EACT,MAAM,EACN,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAC1B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,0EAA0E;IAC1E,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,SAAS,EACT,MAAM,EACN,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,6EAA6E;IAC7E,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC;aACpB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACtC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,OAAO,EACP,KAAK,EACL,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAC7B,CAAA;QACH,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,yEAAyE;IACzE,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC;aACpB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAChF,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,yFAAyF;IACzF,cAAc,CAAC,GAAG,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC;aACpB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,uFAAuF;IACvF,cAAc,CAAC,GAAG,EAAE,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC;aACpB,GAAG,CAAC,WAAW,CAAC;aAChB,gBAAgB,CAAC,UAAU,CAAC,eAAe,CAC1C,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,OAAO,EACP,KAAK,EACL,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAA;QACH,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":"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;
|
|
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 = (
|
|
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(
|
|
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(
|
|
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(
|
|
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":"AAAA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;
|
|
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;
|
|
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 = (
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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":"AAAA,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,+BAA+B,GAChC,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;
|
|
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;
|
|
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 = (
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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":"AAAA,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;
|
|
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;
|
|
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 = (
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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);
|