@cat-factory/server 0.166.2 → 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/ContainerAgentExecutor.d.ts.map +1 -1
- package/dist/agents/ContainerAgentExecutor.js +15 -1
- package/dist/agents/ContainerAgentExecutor.js.map +1 -1
- package/dist/agents/ContainerEnvConfigRepairer.d.ts.map +1 -1
- package/dist/agents/ContainerEnvConfigRepairer.js +3 -0
- package/dist/agents/ContainerEnvConfigRepairer.js.map +1 -1
- package/dist/agents/ContainerRepoBootstrapper.d.ts.map +1 -1
- package/dist/agents/ContainerRepoBootstrapper.js +3 -0
- package/dist/agents/ContainerRepoBootstrapper.js.map +1 -1
- 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 +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -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 +309 -222
- 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/remoteRepositories.d.ts +9 -1
- package/dist/persistence/remoteRepositories.d.ts.map +1 -1
- package/dist/persistence/remoteRepositories.js +13 -1
- package/dist/persistence/remoteRepositories.js.map +1 -1
- package/dist/persistence/rpc-allowlist.d.ts +23 -0
- package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
- package/dist/persistence/rpc-allowlist.js +56 -10
- package/dist/persistence/rpc-allowlist.js.map +1 -1
- package/dist/persistence/rpc-scope.logic.d.ts +15 -0
- package/dist/persistence/rpc-scope.logic.d.ts.map +1 -1
- package/dist/persistence/rpc-scope.logic.js +29 -0
- package/dist/persistence/rpc-scope.logic.js.map +1 -1
- package/dist/persistence/rpc.d.ts +11 -0
- package/dist/persistence/rpc.d.ts.map +1 -1
- package/dist/persistence/rpc.js +10 -1
- package/dist/persistence/rpc.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationController.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"NotificationController.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformObservabilityController.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/PlatformObservabilityController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"PlatformObservabilityController.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/PlatformObservabilityController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAa/C;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAAC,MAAM,CAAC,CAiB9D"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { getPlatformObservabilityContract } from '@cat-factory/contracts';
|
|
2
2
|
import { buildHonoRoute } from '@toad-contracts/hono';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
|
+
import { UnavailableError, UnauthorizedError } from '@cat-factory/kernel';
|
|
4
5
|
/** The signed-in user, or null. Generic over the (contract-typed) env, like AccountController. */
|
|
5
6
|
function accountUser(c) {
|
|
6
7
|
const user = c.get('user');
|
|
7
8
|
return user ? { id: user.id, login: user.login, name: user.name } : null;
|
|
8
9
|
}
|
|
9
|
-
const signInRequired = (
|
|
10
|
+
const signInRequired = () => {
|
|
11
|
+
throw new UnauthorizedError('Sign in to view platform observability');
|
|
12
|
+
};
|
|
10
13
|
/**
|
|
11
14
|
* Platform-operator observability: `GET /accounts/:accountId/observability/platform` — the
|
|
12
15
|
* deployment-level aggregate health of an account's runs (outcomes, failure taxonomy,
|
|
@@ -21,15 +24,10 @@ export function platformObservabilityController() {
|
|
|
21
24
|
buildHonoRoute(app, getPlatformObservabilityContract, async (c) => {
|
|
22
25
|
const user = accountUser(c);
|
|
23
26
|
if (!user)
|
|
24
|
-
return signInRequired(
|
|
27
|
+
return signInRequired();
|
|
25
28
|
const container = c.get('container');
|
|
26
29
|
if (!container.platformObservability) {
|
|
27
|
-
|
|
28
|
-
error: {
|
|
29
|
-
code: 'unavailable',
|
|
30
|
-
message: 'Platform observability is not available on this deployment',
|
|
31
|
-
},
|
|
32
|
-
}, 503);
|
|
30
|
+
throw new UnavailableError('Platform observability is not available on this deployment');
|
|
33
31
|
}
|
|
34
32
|
const { accountId } = c.req.valid('param');
|
|
35
33
|
await container.accountService.requireAdmin(accountId, user.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformObservabilityController.js","sourceRoot":"","sources":["../../../src/modules/observability/PlatformObservabilityController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"PlatformObservabilityController.js","sourceRoot":"","sources":["../../../src/modules/observability/PlatformObservabilityController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEzE,kGAAkG;AAClG,SAAS,WAAW,CAAmB,CAAa;IAClD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1E,CAAC;AAED,MAAM,cAAc,GAAG,GAAU,EAAE;IACjC,MAAM,IAAI,iBAAiB,CAAC,wCAAwC,CAAC,CAAA;AACvE,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B;IAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,EAAE,CAAA;QAClC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACpC,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;YACrC,MAAM,IAAI,gBAAgB,CAAC,4DAA4D,CAAC,CAAA;QAC1F,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAA;QACnD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenRouterCatalogController.d.ts","sourceRoot":"","sources":["../../../src/modules/openrouter/OpenRouterCatalogController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"OpenRouterCatalogController.d.ts","sourceRoot":"","sources":["../../../src/modules/openrouter/OpenRouterCatalogController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAiB/C,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CA+B1D"}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import { getOpenRouterCatalogContract, refreshOpenRouterCatalogContract, upsertOpenRouterCatalogContract, } from '@cat-factory/contracts';
|
|
2
2
|
import { buildHonoRoute } from '@toad-contracts/hono';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
|
+
import { UnavailableError, UnauthorizedError } from '@cat-factory/kernel';
|
|
4
5
|
// Per-WORKSPACE OpenRouter dynamic catalog. OpenRouter is a single OpenAI-compatible
|
|
5
6
|
// gateway to 300+ models reached via the workspace's API-key pool; a workspace browses the
|
|
6
7
|
// live catalog (`/refresh`, leasing the pooled OpenRouter key server-side) and enables a
|
|
7
8
|
// subset (`PUT /catalog`). The enabled models surface in the per-workspace model picker and
|
|
8
9
|
// feed the spend budget. Mounted at `/` (workspaceId is a path param); requires a signed-in user.
|
|
9
|
-
const signInRequired = (
|
|
10
|
-
|
|
10
|
+
const signInRequired = () => {
|
|
11
|
+
throw new UnauthorizedError('Sign in to manage the OpenRouter catalog');
|
|
12
|
+
};
|
|
13
|
+
const unavailable = () => {
|
|
14
|
+
throw new UnavailableError('OpenRouter catalog storage is not configured');
|
|
15
|
+
};
|
|
11
16
|
export function openRouterCatalogController() {
|
|
12
17
|
const app = new Hono();
|
|
13
18
|
// The workspace's enabled OpenRouter models (empty when none configured yet).
|
|
14
19
|
buildHonoRoute(app, getOpenRouterCatalogContract, async (c) => {
|
|
15
20
|
const svc = c.get('container').openRouterCatalog;
|
|
16
21
|
if (!svc)
|
|
17
|
-
return unavailable(
|
|
22
|
+
return unavailable();
|
|
18
23
|
if (!c.get('user'))
|
|
19
|
-
return signInRequired(
|
|
24
|
+
return signInRequired();
|
|
20
25
|
return c.json(await svc.get(c.req.valid('param').workspaceId), 200);
|
|
21
26
|
});
|
|
22
27
|
// Replace the workspace's enabled subset (the client sends each model's metadata it read
|
|
@@ -24,9 +29,9 @@ export function openRouterCatalogController() {
|
|
|
24
29
|
buildHonoRoute(app, upsertOpenRouterCatalogContract, async (c) => {
|
|
25
30
|
const svc = c.get('container').openRouterCatalog;
|
|
26
31
|
if (!svc)
|
|
27
|
-
return unavailable(
|
|
32
|
+
return unavailable();
|
|
28
33
|
if (!c.get('user'))
|
|
29
|
-
return signInRequired(
|
|
34
|
+
return signInRequired();
|
|
30
35
|
return c.json(await svc.upsert(c.req.valid('param').workspaceId, c.req.valid('json')), 200);
|
|
31
36
|
});
|
|
32
37
|
// Probe OpenRouter's live `/models` for the browse list (leases the workspace's pooled
|
|
@@ -34,10 +39,10 @@ export function openRouterCatalogController() {
|
|
|
34
39
|
buildHonoRoute(app, refreshOpenRouterCatalogContract, async (c) => {
|
|
35
40
|
const svc = c.get('container').openRouterCatalog;
|
|
36
41
|
if (!svc)
|
|
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
|
return c.json(await svc.refresh(c.req.valid('param').workspaceId, { userId: user.id }), 200);
|
|
42
47
|
});
|
|
43
48
|
return app;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenRouterCatalogController.js","sourceRoot":"","sources":["../../../src/modules/openrouter/OpenRouterCatalogController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"OpenRouterCatalogController.js","sourceRoot":"","sources":["../../../src/modules/openrouter/OpenRouterCatalogController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEzE,qFAAqF;AACrF,2FAA2F;AAC3F,yFAAyF;AACzF,4FAA4F;AAC5F,kGAAkG;AAElG,MAAM,cAAc,GAAG,GAAU,EAAE;IACjC,MAAM,IAAI,iBAAiB,CAAC,0CAA0C,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,8CAA8C,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,8EAA8E;IAC9E,cAAc,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAA;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,WAAW,EAAE,CAAA;QAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,cAAc,EAAE,CAAA;QAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,yFAAyF;IACzF,qFAAqF;IACrF,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAA;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,WAAW,EAAE,CAAA;QAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,cAAc,EAAE,CAAA;QAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;IAEF,uFAAuF;IACvF,0FAA0F;IAC1F,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAA;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,WAAW,EAAE,CAAA;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,EAAE,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IAC9F,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageRegistriesController.d.ts","sourceRoot":"","sources":["../../../src/modules/packageRegistries/PackageRegistriesController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"PackageRegistriesController.d.ts","sourceRoot":"","sources":["../../../src/modules/packageRegistries/PackageRegistriesController.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAc/C;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAAC,MAAM,CAAC,CAwB1D"}
|
|
@@ -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":"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;AAE3B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEzE,kFAAkF;AAClF,6EAA6E;AAC7E,gFAAgF;AAChF,qFAAqF;AACrF,uFAAuF;AACvF,iDAAiD;AAEjD,MAAM,cAAc,GAAG,GAAU,EAAE;IACjC,MAAM,IAAI,iBAAiB,CAAC,0CAA0C,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,GAAU,EAAE;IAC9B,MAAM,IAAI,gBAAgB,CAAC,iDAAiD,CAAC,CAAA;AAC/E,CAAC,CAAA;AAED,MAAM,UAAU,8BAA8B;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,cAAc,CAAC,GAAG,EAAE,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAA;QACzD,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,EAAE,CAAA;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAA;QACzD,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,EAAE,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACjE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAA;QACzD,IAAI,CAAC,QAAQ;YAAE,OAAO,WAAW,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,cAAc,EAAE,CAAA;QAClC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;QAC7E,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|