@cat-factory/server 0.167.0 → 0.170.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/app.d.ts.map +1 -1
- package/dist/app.js +5 -0
- package/dist/app.js.map +1 -1
- 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 +6 -3
- 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/publicApi/PublicDebugController.d.ts +4 -0
- package/dist/modules/publicApi/PublicDebugController.d.ts.map +1 -0
- package/dist/modules/publicApi/PublicDebugController.js +241 -0
- package/dist/modules/publicApi/PublicDebugController.js.map +1 -0
- 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 +16 -1
- 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,16 +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 package-registries module or send a 503, returning null when unconfigured. */
|
|
7
8
|
function requirePackageRegistries(c) {
|
|
8
9
|
return c.get('container').packageRegistries ?? null;
|
|
9
10
|
}
|
|
10
|
-
const unavailable = (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
message: 'The package-registry integration is not configured',
|
|
14
|
-
},
|
|
15
|
-
}, 503);
|
|
11
|
+
const unavailable = () => {
|
|
12
|
+
throw new UnavailableError('The package-registry integration is not configured');
|
|
13
|
+
};
|
|
16
14
|
/**
|
|
17
15
|
* Per-workspace private package-registry entries (npm private orgs, GitHub Packages)
|
|
18
16
|
* that agent containers use to resolve private dependencies. Tokens are write-only —
|
|
@@ -25,19 +23,19 @@ export function packageRegistriesController() {
|
|
|
25
23
|
buildHonoRoute(app, listPackageRegistriesContract, async (c) => {
|
|
26
24
|
const registries = requirePackageRegistries(c);
|
|
27
25
|
if (!registries)
|
|
28
|
-
return unavailable(
|
|
26
|
+
return unavailable();
|
|
29
27
|
return c.json(await registries.service.list(param(c, 'workspaceId')), 200);
|
|
30
28
|
});
|
|
31
29
|
buildHonoRoute(app, addPackageRegistryContract, async (c) => {
|
|
32
30
|
const registries = requirePackageRegistries(c);
|
|
33
31
|
if (!registries)
|
|
34
|
-
return unavailable(
|
|
32
|
+
return unavailable();
|
|
35
33
|
return c.json(await registries.service.add(param(c, 'workspaceId'), c.req.valid('json')), 200);
|
|
36
34
|
});
|
|
37
35
|
buildHonoRoute(app, deletePackageRegistryContract, async (c) => {
|
|
38
36
|
const registries = requirePackageRegistries(c);
|
|
39
37
|
if (!registries)
|
|
40
|
-
return unavailable(
|
|
38
|
+
return unavailable();
|
|
41
39
|
await registries.service.remove(param(c, 'workspaceId'), c.req.valid('param').entryId);
|
|
42
40
|
return c.body(null, 204);
|
|
43
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageRegistriesController.js","sourceRoot":"","sources":["../../../src/modules/packageRegistries/PackageRegistriesController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,6BAA6B,GAC9B,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":"PackageRegistriesController.js","sourceRoot":"","sources":["../../../src/modules/packageRegistries/PackageRegistriesController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,6BAA6B,GAC9B,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;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,6FAA6F;AAC7F,SAAS,wBAAwB,CAAmB,CAAa;IAC/D,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAA;AACrD,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC,CAAA;AAClF,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAE/D,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,EAAE,CAAA;QACrC,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;QACtF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubDelegationController.d.ts","sourceRoot":"","sources":["../../../src/modules/persistence/GitHubDelegationController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"GitHubDelegationController.d.ts","sourceRoot":"","sources":["../../../src/modules/persistence/GitHubDelegationController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,gFAAgF;AAChF,MAAM,WAAW,yBAAyB;IACxC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iCAAiC;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAUD,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,iCAAsC,GAC9C,IAAI,CAAC,MAAM,CAAC,CAmId"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { signerFor, TOKEN_AUDIENCE } from '../../auth/signing.js';
|
|
3
3
|
import { logger } from '../../observability/logger.js';
|
|
4
|
+
import { UnavailableError, RateLimitedError } from '@cat-factory/kernel';
|
|
4
5
|
/**
|
|
5
6
|
* Generous for a legitimate satellite: the client (`DelegatedAppTokenSource`) memoises a
|
|
6
7
|
* minted token for 60s per installation, so steady-state traffic is ~1 mint/min per
|
|
@@ -44,17 +45,12 @@ export function githubDelegationController(options = {}) {
|
|
|
44
45
|
}
|
|
45
46
|
else if (++bucket.count > limit) {
|
|
46
47
|
log.warn('github delegation: mint rate limit exceeded', { limit, windowMs });
|
|
47
|
-
|
|
48
|
+
throw new RateLimitedError('too many token mints, retry shortly');
|
|
48
49
|
}
|
|
49
50
|
const registry = container.repositories;
|
|
50
51
|
const delegation = container.githubTokenDelegation;
|
|
51
52
|
if (!registry || !delegation) {
|
|
52
|
-
|
|
53
|
-
error: {
|
|
54
|
-
code: 'unavailable',
|
|
55
|
-
message: 'GitHub token delegation is not enabled on this deployment',
|
|
56
|
-
},
|
|
57
|
-
}, 503);
|
|
53
|
+
throw new UnavailableError('GitHub token delegation is not enabled on this deployment');
|
|
58
54
|
}
|
|
59
55
|
let body;
|
|
60
56
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubDelegationController.js","sourceRoot":"","sources":["../../../src/modules/persistence/GitHubDelegationController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,SAAS,EAAuB,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"GitHubDelegationController.js","sourceRoot":"","sources":["../../../src/modules/persistence/GitHubDelegationController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreflightController.d.ts","sourceRoot":"","sources":["../../../src/modules/preflight/PreflightController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"PreflightController.d.ts","sourceRoot":"","sources":["../../../src/modules/preflight/PreflightController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,CAWlD"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import { runPreflightsContract } from '@cat-factory/contracts';
|
|
2
2
|
import { buildHonoRoute } from '@toad-contracts/hono';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
|
+
import { UnavailableError } from '@cat-factory/kernel';
|
|
4
5
|
/** Resolve the preflight module, or null when the host-probe runtime isn't wired (non-local facade). */
|
|
5
6
|
function requirePreflight(c) {
|
|
6
7
|
return c.get('container').preflight ?? null;
|
|
7
8
|
}
|
|
8
|
-
const unavailable = (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
message: 'Preflight checks are not available on this deployment',
|
|
12
|
-
},
|
|
13
|
-
}, 503);
|
|
9
|
+
const unavailable = () => {
|
|
10
|
+
throw new UnavailableError('Preflight checks are not available on this deployment');
|
|
11
|
+
};
|
|
14
12
|
/**
|
|
15
13
|
* Run a set of preflight checks (machine-prerequisite probes with guided remediation) and return
|
|
16
14
|
* one verdict per ref — the setup wizard's live re-check button (slice 7) + any ad-hoc "am I ready
|
|
@@ -22,7 +20,7 @@ export function preflightController() {
|
|
|
22
20
|
buildHonoRoute(app, runPreflightsContract, async (c) => {
|
|
23
21
|
const preflight = requirePreflight(c);
|
|
24
22
|
if (!preflight)
|
|
25
|
-
return unavailable(
|
|
23
|
+
return unavailable();
|
|
26
24
|
const { prerequisites } = c.req.valid('json');
|
|
27
25
|
return c.json(await preflight.service.run(prerequisites), 200);
|
|
28
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreflightController.js","sourceRoot":"","sources":["../../../src/modules/preflight/PreflightController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"PreflightController.js","sourceRoot":"","sources":["../../../src/modules/preflight/PreflightController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,wGAAwG;AACxG,SAAS,gBAAgB,CAAmB,CAAa;IACvD,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,IAAI,IAAI,CAAA;AAC7C,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,uDAAuD,CAAC,CAAA;AACrF,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,EAAE,CAAA;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7C,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/preview/PreviewController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"PreviewController.d.ts","sourceRoot":"","sources":["../../../src/modules/preview/PreviewController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB/C;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,CA0BhD"}
|
|
@@ -3,6 +3,7 @@ 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
|
/**
|
|
7
8
|
* Resolve the preview module, gating on the runtime's `frontendPreview.supported` capability
|
|
8
9
|
* FIRST (defense-in-depth: slice 5a only gated the SPA toggle, so a direct API call on an
|
|
@@ -15,12 +16,9 @@ function requirePreview(c) {
|
|
|
15
16
|
return null;
|
|
16
17
|
return container.preview ?? null;
|
|
17
18
|
}
|
|
18
|
-
const unavailable = (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
message: 'Browsable frontend previews are not supported on this runtime',
|
|
22
|
-
},
|
|
23
|
-
}, 503);
|
|
19
|
+
const unavailable = () => {
|
|
20
|
+
throw new UnavailableError('Browsable frontend previews are not supported on this runtime');
|
|
21
|
+
};
|
|
24
22
|
/**
|
|
25
23
|
* Browsable frontend preview (slice 5c): start / poll / stop a long-lived build+serve container
|
|
26
24
|
* for a `frontend` frame, reachable on a host URL. A local/node differentiator — 503 on the
|
|
@@ -32,21 +30,21 @@ export function previewController() {
|
|
|
32
30
|
buildHonoRoute(app, getPreviewContract, async (c) => {
|
|
33
31
|
const preview = requirePreview(c);
|
|
34
32
|
if (!preview)
|
|
35
|
-
return unavailable(
|
|
33
|
+
return unavailable();
|
|
36
34
|
const frameId = c.req.valid('param').frameId;
|
|
37
35
|
return c.json(await preview.service.get(param(c, 'workspaceId'), frameId), 200);
|
|
38
36
|
});
|
|
39
37
|
buildHonoRoute(app, startPreviewContract, async (c) => {
|
|
40
38
|
const preview = requirePreview(c);
|
|
41
39
|
if (!preview)
|
|
42
|
-
return unavailable(
|
|
40
|
+
return unavailable();
|
|
43
41
|
const frameId = c.req.valid('param').frameId;
|
|
44
42
|
return c.json(await preview.service.start(param(c, 'workspaceId'), frameId), 201);
|
|
45
43
|
});
|
|
46
44
|
buildHonoRoute(app, stopPreviewContract, async (c) => {
|
|
47
45
|
const preview = requirePreview(c);
|
|
48
46
|
if (!preview)
|
|
49
|
-
return unavailable(
|
|
47
|
+
return unavailable();
|
|
50
48
|
const frameId = c.req.valid('param').frameId;
|
|
51
49
|
return c.json(await preview.service.stop(param(c, 'workspaceId'), frameId), 200);
|
|
52
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewController.js","sourceRoot":"","sources":["../../../src/modules/preview/PreviewController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,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":"PreviewController.js","sourceRoot":"","sources":["../../../src/modules/preview/PreviewController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,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;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD;;;;;GAKG;AACH,SAAS,cAAc,CAAmB,CAAa;IACrD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACpC,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,SAAS,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IACtF,OAAO,SAAS,CAAC,OAAO,IAAI,IAAI,CAAA;AAClC,CAAC;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,+DAA+D,CAAC,CAAA;AAC7F,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAE/D,cAAc,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,EAAE,CAAA;QAClC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;QAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,EAAE,CAAA;QAClC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;QAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,EAAE,CAAA;QAClC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;QAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiKeyController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,MAAM,EACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"ApiKeyController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,MAAM,EACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB/C,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAe3D;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAsCxD;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CA6CnD"}
|
|
@@ -3,6 +3,7 @@ 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, UnauthorizedError } from '@cat-factory/kernel';
|
|
6
7
|
// Direct-provider API-key endpoints. Keys (OpenAI/Anthropic/Qwen/DeepSeek/Moonshot)
|
|
7
8
|
// are onboarded here and stored encrypted, replacing deployment-env onboarding. The
|
|
8
9
|
// raw key is write-only — only metadata + rolling-window usage is ever returned.
|
|
@@ -10,8 +11,12 @@ import { param } from '../../http/params.js';
|
|
|
10
11
|
// This controller mounts the WORKSPACE-scoped routes (under `/workspaces/:workspaceId`)
|
|
11
12
|
// and the USER-scoped routes (`/me/api-keys`, the caller's own pool). ACCOUNT-scoped
|
|
12
13
|
// keys are managed by the AccountController, which admin-gates them.
|
|
13
|
-
const unavailable = (
|
|
14
|
-
|
|
14
|
+
const unavailable = () => {
|
|
15
|
+
throw new UnavailableError('API key storage is not configured');
|
|
16
|
+
};
|
|
17
|
+
const signInRequired = () => {
|
|
18
|
+
throw new UnauthorizedError('Sign in to manage your API keys');
|
|
19
|
+
};
|
|
15
20
|
/** Project the service summary onto the wire type (already secret-free). */
|
|
16
21
|
export function apiKeyToWire(summary) {
|
|
17
22
|
return {
|
|
@@ -36,28 +41,28 @@ export function workspaceApiKeyController() {
|
|
|
36
41
|
buildHonoRoute(app, listWorkspaceApiKeysContract, async (c) => {
|
|
37
42
|
const apiKeys = c.get('container').apiKeys;
|
|
38
43
|
if (!apiKeys)
|
|
39
|
-
return unavailable(
|
|
44
|
+
return unavailable();
|
|
40
45
|
const keys = await apiKeys.listKeys('workspace', param(c, 'workspaceId'));
|
|
41
46
|
return c.json({ keys: keys.map(apiKeyToWire) }, 200);
|
|
42
47
|
});
|
|
43
48
|
buildHonoRoute(app, addWorkspaceApiKeyContract, async (c) => {
|
|
44
49
|
const apiKeys = c.get('container').apiKeys;
|
|
45
50
|
if (!apiKeys)
|
|
46
|
-
return unavailable(
|
|
51
|
+
return unavailable();
|
|
47
52
|
const summary = await apiKeys.addKey('workspace', param(c, 'workspaceId'), c.req.valid('json'));
|
|
48
53
|
return c.json(apiKeyToWire(summary), 201);
|
|
49
54
|
});
|
|
50
55
|
buildHonoRoute(app, updateWorkspaceApiKeyContract, async (c) => {
|
|
51
56
|
const apiKeys = c.get('container').apiKeys;
|
|
52
57
|
if (!apiKeys)
|
|
53
|
-
return unavailable(
|
|
58
|
+
return unavailable();
|
|
54
59
|
const summary = await apiKeys.updateKey('workspace', param(c, 'workspaceId'), c.req.valid('param').id, c.req.valid('json'));
|
|
55
60
|
return c.json(apiKeyToWire(summary), 200);
|
|
56
61
|
});
|
|
57
62
|
buildHonoRoute(app, removeWorkspaceApiKeyContract, async (c) => {
|
|
58
63
|
const apiKeys = c.get('container').apiKeys;
|
|
59
64
|
if (!apiKeys)
|
|
60
|
-
return unavailable(
|
|
65
|
+
return unavailable();
|
|
61
66
|
await apiKeys.removeKey('workspace', param(c, 'workspaceId'), c.req.valid('param').id);
|
|
62
67
|
return c.body(null, 204);
|
|
63
68
|
});
|
|
@@ -69,40 +74,40 @@ export function userApiKeyController() {
|
|
|
69
74
|
buildHonoRoute(app, listUserApiKeysContract, async (c) => {
|
|
70
75
|
const apiKeys = c.get('container').apiKeys;
|
|
71
76
|
if (!apiKeys)
|
|
72
|
-
return unavailable(
|
|
77
|
+
return unavailable();
|
|
73
78
|
const user = c.get('user');
|
|
74
79
|
if (!user)
|
|
75
|
-
return signInRequired(
|
|
80
|
+
return signInRequired();
|
|
76
81
|
const keys = await apiKeys.listKeys('user', user.id);
|
|
77
82
|
return c.json({ keys: keys.map(apiKeyToWire) }, 200);
|
|
78
83
|
});
|
|
79
84
|
buildHonoRoute(app, addUserApiKeyContract, async (c) => {
|
|
80
85
|
const apiKeys = c.get('container').apiKeys;
|
|
81
86
|
if (!apiKeys)
|
|
82
|
-
return unavailable(
|
|
87
|
+
return unavailable();
|
|
83
88
|
const user = c.get('user');
|
|
84
89
|
if (!user)
|
|
85
|
-
return signInRequired(
|
|
90
|
+
return signInRequired();
|
|
86
91
|
const summary = await apiKeys.addKey('user', user.id, c.req.valid('json'));
|
|
87
92
|
return c.json(apiKeyToWire(summary), 201);
|
|
88
93
|
});
|
|
89
94
|
buildHonoRoute(app, updateUserApiKeyContract, async (c) => {
|
|
90
95
|
const apiKeys = c.get('container').apiKeys;
|
|
91
96
|
if (!apiKeys)
|
|
92
|
-
return unavailable(
|
|
97
|
+
return unavailable();
|
|
93
98
|
const user = c.get('user');
|
|
94
99
|
if (!user)
|
|
95
|
-
return signInRequired(
|
|
100
|
+
return signInRequired();
|
|
96
101
|
const summary = await apiKeys.updateKey('user', user.id, c.req.valid('param').id, c.req.valid('json'));
|
|
97
102
|
return c.json(apiKeyToWire(summary), 200);
|
|
98
103
|
});
|
|
99
104
|
buildHonoRoute(app, removeUserApiKeyContract, async (c) => {
|
|
100
105
|
const apiKeys = c.get('container').apiKeys;
|
|
101
106
|
if (!apiKeys)
|
|
102
|
-
return unavailable(
|
|
107
|
+
return unavailable();
|
|
103
108
|
const user = c.get('user');
|
|
104
109
|
if (!user)
|
|
105
|
-
return signInRequired(
|
|
110
|
+
return signInRequired();
|
|
106
111
|
await apiKeys.removeKey('user', user.id, c.req.valid('param').id);
|
|
107
112
|
return c.body(null, 204);
|
|
108
113
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiKeyController.js","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,6BAA6B,GAE9B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"ApiKeyController.js","sourceRoot":"","sources":["../../../src/modules/providers/ApiKeyController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonalSubscriptionController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"PersonalSubscriptionController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAkB/C,wBAAgB,8BAA8B,IAAI,IAAI,CAAC,MAAM,CAAC,CA+B7D"}
|
|
@@ -2,42 +2,47 @@ import { listPersonalSubscriptionsContract, removePersonalSubscriptionContract,
|
|
|
2
2
|
import * as v from 'valibot';
|
|
3
3
|
import { buildHonoRoute } from '@toad-contracts/hono';
|
|
4
4
|
import { Hono } from 'hono';
|
|
5
|
+
import { UnavailableError, UnauthorizedError } from '@cat-factory/kernel';
|
|
5
6
|
// Per-USER individual-usage subscription endpoints (Claude). Unlike the workspace
|
|
6
7
|
// vendor-credential pool, these are scoped to the signed-in user: a personal
|
|
7
8
|
// subscription is licensed for that individual only, stored DOUBLE-encrypted (a
|
|
8
9
|
// personal-password layer inside the system layer), and never shared. Mounted at the
|
|
9
10
|
// root (not under a workspace) and require a signed-in user — with auth disabled there
|
|
10
11
|
// is no individual to own a personal credential.
|
|
11
|
-
const signInRequired = (
|
|
12
|
-
|
|
12
|
+
const signInRequired = () => {
|
|
13
|
+
throw new UnauthorizedError('Sign in to manage personal subscriptions');
|
|
14
|
+
};
|
|
15
|
+
const unavailable = () => {
|
|
16
|
+
throw new UnavailableError('Personal subscription storage is not configured');
|
|
17
|
+
};
|
|
13
18
|
export function personalSubscriptionController() {
|
|
14
19
|
const app = new Hono();
|
|
15
20
|
buildHonoRoute(app, listPersonalSubscriptionsContract, async (c) => {
|
|
16
21
|
const personal = c.get('container').personalSubscriptions;
|
|
17
22
|
if (!personal)
|
|
18
|
-
return unavailable(
|
|
23
|
+
return unavailable();
|
|
19
24
|
const user = c.get('user');
|
|
20
25
|
if (!user)
|
|
21
|
-
return signInRequired(
|
|
26
|
+
return signInRequired();
|
|
22
27
|
return c.json({ subscriptions: await personal.list(user.id) }, 200);
|
|
23
28
|
});
|
|
24
29
|
buildHonoRoute(app, storePersonalSubscriptionContract, async (c) => {
|
|
25
30
|
const personal = c.get('container').personalSubscriptions;
|
|
26
31
|
if (!personal)
|
|
27
|
-
return unavailable(
|
|
32
|
+
return unavailable();
|
|
28
33
|
const user = c.get('user');
|
|
29
34
|
if (!user)
|
|
30
|
-
return signInRequired(
|
|
35
|
+
return signInRequired();
|
|
31
36
|
const status = await personal.store(user.id, c.req.valid('json'));
|
|
32
37
|
return c.json(status, 201);
|
|
33
38
|
});
|
|
34
39
|
buildHonoRoute(app, removePersonalSubscriptionContract, async (c) => {
|
|
35
40
|
const personal = c.get('container').personalSubscriptions;
|
|
36
41
|
if (!personal)
|
|
37
|
-
return unavailable(
|
|
42
|
+
return unavailable();
|
|
38
43
|
const user = c.get('user');
|
|
39
44
|
if (!user)
|
|
40
|
-
return signInRequired(
|
|
45
|
+
return signInRequired();
|
|
41
46
|
const vendor = v.parse(subscriptionVendorSchema, c.req.valid('param').vendor);
|
|
42
47
|
await personal.remove(user.id, vendor);
|
|
43
48
|
return c.body(null, 204);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonalSubscriptionController.js","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,iCAAiC,EACjC,wBAAwB,GACzB,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;
|
|
1
|
+
{"version":3,"file":"PersonalSubscriptionController.js","sourceRoot":"","sources":["../../../src/modules/providers/PersonalSubscriptionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSecretController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"UserSecretController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAgB/C,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAwDnD"}
|
|
@@ -2,30 +2,35 @@ import { getUserSecretDescriptorContract, listUserSecretsContract, removeUserSec
|
|
|
2
2
|
import * as v from 'valibot';
|
|
3
3
|
import { buildHonoRoute } from '@toad-contracts/hono';
|
|
4
4
|
import { Hono } from 'hono';
|
|
5
|
+
import { UnavailableError, UnauthorizedError } from '@cat-factory/kernel';
|
|
5
6
|
// Per-USER generic secrets (a GitHub PAT today; future repository/provider tokens as
|
|
6
7
|
// new kinds). Scoped to the signed-in user — mounted at the root (not under a
|
|
7
8
|
// workspace) and require a signed-in user, like personal subscriptions / local model
|
|
8
9
|
// runners. The secret is write-only; only status metadata is returned.
|
|
9
|
-
const signInRequired = (
|
|
10
|
-
|
|
10
|
+
const signInRequired = () => {
|
|
11
|
+
throw new UnauthorizedError('Sign in to manage your secrets');
|
|
12
|
+
};
|
|
13
|
+
const unavailable = () => {
|
|
14
|
+
throw new UnavailableError('User secret storage is not configured');
|
|
15
|
+
};
|
|
11
16
|
export function userSecretController() {
|
|
12
17
|
const app = new Hono();
|
|
13
18
|
buildHonoRoute(app, listUserSecretsContract, async (c) => {
|
|
14
19
|
const store = c.get('container').userSecrets;
|
|
15
20
|
if (!store)
|
|
16
|
-
return unavailable(
|
|
21
|
+
return unavailable();
|
|
17
22
|
const user = c.get('user');
|
|
18
23
|
if (!user)
|
|
19
|
-
return signInRequired(
|
|
24
|
+
return signInRequired();
|
|
20
25
|
return c.json({ secrets: await store.list(user.id), descriptors: store.describeAll() }, 200);
|
|
21
26
|
});
|
|
22
27
|
buildHonoRoute(app, getUserSecretDescriptorContract, async (c) => {
|
|
23
28
|
const store = c.get('container').userSecrets;
|
|
24
29
|
if (!store)
|
|
25
|
-
return unavailable(
|
|
30
|
+
return unavailable();
|
|
26
31
|
const user = c.get('user');
|
|
27
32
|
if (!user)
|
|
28
|
-
return signInRequired(
|
|
33
|
+
return signInRequired();
|
|
29
34
|
const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
|
|
30
35
|
const descriptor = store.describe(kind);
|
|
31
36
|
if (!descriptor)
|
|
@@ -35,20 +40,20 @@ export function userSecretController() {
|
|
|
35
40
|
buildHonoRoute(app, storeUserSecretContract, async (c) => {
|
|
36
41
|
const store = c.get('container').userSecrets;
|
|
37
42
|
if (!store)
|
|
38
|
-
return unavailable(
|
|
43
|
+
return unavailable();
|
|
39
44
|
const user = c.get('user');
|
|
40
45
|
if (!user)
|
|
41
|
-
return signInRequired(
|
|
46
|
+
return signInRequired();
|
|
42
47
|
const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
|
|
43
48
|
return c.json(await store.store(user.id, kind, c.req.valid('json')), 201);
|
|
44
49
|
});
|
|
45
50
|
buildHonoRoute(app, removeUserSecretContract, async (c) => {
|
|
46
51
|
const store = c.get('container').userSecrets;
|
|
47
52
|
if (!store)
|
|
48
|
-
return unavailable(
|
|
53
|
+
return unavailable();
|
|
49
54
|
const user = c.get('user');
|
|
50
55
|
if (!user)
|
|
51
|
-
return signInRequired(
|
|
56
|
+
return signInRequired();
|
|
52
57
|
const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
|
|
53
58
|
await store.remove(user.id, kind);
|
|
54
59
|
// Revoke the fail-closed access cache too: without their PAT the user no longer has
|
|
@@ -61,10 +66,10 @@ export function userSecretController() {
|
|
|
61
66
|
buildHonoRoute(app, testUserSecretContract, async (c) => {
|
|
62
67
|
const store = c.get('container').userSecrets;
|
|
63
68
|
if (!store)
|
|
64
|
-
return unavailable(
|
|
69
|
+
return unavailable();
|
|
65
70
|
const user = c.get('user');
|
|
66
71
|
if (!user)
|
|
67
|
-
return signInRequired(
|
|
72
|
+
return signInRequired();
|
|
68
73
|
const kind = v.parse(userSecretKindSchema, c.req.valid('param').kind);
|
|
69
74
|
return c.json(await store.testConnection(kind, c.req.valid('json')), 200);
|
|
70
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSecretController.js","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GACrB,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;
|
|
1
|
+
{"version":3,"file":"UserSecretController.js","sourceRoot":"","sources":["../../../src/modules/providers/UserSecretController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VendorCredentialController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/VendorCredentialController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"VendorCredentialController.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/VendorCredentialController.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA+B/C,wBAAgB,0BAA0B,IAAI,IAAI,CAAC,MAAM,CAAC,CAsCzD"}
|