@1mcp/agent 0.34.4 → 0.35.0-beta.2
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/README.md +1 -0
- package/build/admin/assets/admin-console-C5_zD_qW.css +1 -0
- package/build/admin/assets/admin-console-CbHHoqLr.js +61 -0
- package/build/admin/index.html +13 -0
- package/build/application/services/healthService.d.ts +32 -0
- package/build/application/services/healthService.d.ts.map +1 -1
- package/build/application/services/healthService.js +49 -0
- package/build/application/services/healthService.js.map +1 -1
- package/build/commands/admin/admin.d.ts +90 -0
- package/build/commands/admin/admin.d.ts.map +1 -0
- package/build/commands/admin/admin.js +545 -0
- package/build/commands/admin/admin.js.map +1 -0
- package/build/commands/admin/index.d.ts +3 -0
- package/build/commands/admin/index.d.ts.map +1 -0
- package/build/commands/admin/index.js +99 -0
- package/build/commands/admin/index.js.map +1 -0
- package/build/commands/auth/index.d.ts.map +1 -1
- package/build/commands/auth/index.js +24 -5
- package/build/commands/auth/index.js.map +1 -1
- package/build/commands/auth/login.d.ts +1 -0
- package/build/commands/auth/login.d.ts.map +1 -1
- package/build/commands/auth/login.js +6 -10
- package/build/commands/auth/login.js.map +1 -1
- package/build/commands/auth/logout.d.ts +3 -0
- package/build/commands/auth/logout.d.ts.map +1 -1
- package/build/commands/auth/logout.js +19 -32
- package/build/commands/auth/logout.js.map +1 -1
- package/build/commands/auth/runtimeTargetContext.d.ts +25 -0
- package/build/commands/auth/runtimeTargetContext.d.ts.map +1 -0
- package/build/commands/auth/runtimeTargetContext.js +69 -0
- package/build/commands/auth/runtimeTargetContext.js.map +1 -0
- package/build/commands/auth/status.d.ts +1 -0
- package/build/commands/auth/status.d.ts.map +1 -1
- package/build/commands/auth/status.js +10 -33
- package/build/commands/auth/status.js.map +1 -1
- package/build/commands/inspect/index.d.ts.map +1 -1
- package/build/commands/inspect/index.js +4 -0
- package/build/commands/inspect/index.js.map +1 -1
- package/build/commands/inspect/inspect.d.ts +1 -0
- package/build/commands/inspect/inspect.d.ts.map +1 -1
- package/build/commands/inspect/inspect.js +2 -2
- package/build/commands/inspect/inspect.js.map +1 -1
- package/build/commands/instructions/index.d.ts.map +1 -1
- package/build/commands/instructions/index.js +4 -0
- package/build/commands/instructions/index.js.map +1 -1
- package/build/commands/instructions/instructions.d.ts +1 -0
- package/build/commands/instructions/instructions.d.ts.map +1 -1
- package/build/commands/instructions/instructions.js.map +1 -1
- package/build/commands/instructions/instructionsUtils.js +1 -1
- package/build/commands/instructions/instructionsUtils.js.map +1 -1
- package/build/commands/mcp/enable.d.ts +89 -2
- package/build/commands/mcp/enable.d.ts.map +1 -1
- package/build/commands/mcp/enable.js +555 -35
- package/build/commands/mcp/enable.js.map +1 -1
- package/build/commands/mcp/index.d.ts.map +1 -1
- package/build/commands/mcp/index.js +10 -0
- package/build/commands/mcp/index.js.map +1 -1
- package/build/commands/mcp/restart.d.ts +69 -0
- package/build/commands/mcp/restart.d.ts.map +1 -0
- package/build/commands/mcp/restart.js +259 -0
- package/build/commands/mcp/restart.js.map +1 -0
- package/build/commands/mcp/status.d.ts +24 -1
- package/build/commands/mcp/status.d.ts.map +1 -1
- package/build/commands/mcp/status.js +158 -14
- package/build/commands/mcp/status.js.map +1 -1
- package/build/commands/proxy/index.d.ts +1 -0
- package/build/commands/proxy/index.d.ts.map +1 -1
- package/build/commands/proxy/index.js +4 -0
- package/build/commands/proxy/index.js.map +1 -1
- package/build/commands/run/index.d.ts.map +1 -1
- package/build/commands/run/index.js +4 -0
- package/build/commands/run/index.js.map +1 -1
- package/build/commands/run/run.d.ts +1 -0
- package/build/commands/run/run.d.ts.map +1 -1
- package/build/commands/run/run.js +2 -2
- package/build/commands/run/run.js.map +1 -1
- package/build/commands/serve/index.d.ts +8 -0
- package/build/commands/serve/index.d.ts.map +1 -1
- package/build/commands/serve/index.js +12 -0
- package/build/commands/serve/index.js.map +1 -1
- package/build/commands/serve/serve.d.ts +13 -0
- package/build/commands/serve/serve.d.ts.map +1 -1
- package/build/commands/serve/serve.js +115 -57
- package/build/commands/serve/serve.js.map +1 -1
- package/build/commands/serve/serveBackground.d.ts +48 -26
- package/build/commands/serve/serveBackground.d.ts.map +1 -1
- package/build/commands/serve/serveBackground.js +230 -61
- package/build/commands/serve/serveBackground.js.map +1 -1
- package/build/commands/serve/serveRestart.d.ts +1 -1
- package/build/commands/serve/serveRestart.js +1 -1
- package/build/commands/serve/serveStatus.d.ts +20 -10
- package/build/commands/serve/serveStatus.d.ts.map +1 -1
- package/build/commands/serve/serveStatus.js +174 -13
- package/build/commands/serve/serveStatus.js.map +1 -1
- package/build/commands/serve/serveStop.d.ts +13 -4
- package/build/commands/serve/serveStop.d.ts.map +1 -1
- package/build/commands/serve/serveStop.js +212 -23
- package/build/commands/serve/serveStop.js.map +1 -1
- package/build/commands/shared/apiClient.d.ts +5 -1
- package/build/commands/shared/apiClient.d.ts.map +1 -1
- package/build/commands/shared/apiClient.js +17 -9
- package/build/commands/shared/apiClient.js.map +1 -1
- package/build/commands/shared/clientSurfaceAttachment.d.ts +14 -0
- package/build/commands/shared/clientSurfaceAttachment.d.ts.map +1 -1
- package/build/commands/shared/clientSurfaceAttachment.js +51 -9
- package/build/commands/shared/clientSurfaceAttachment.js.map +1 -1
- package/build/commands/shared/commandRunner.d.ts +3 -1
- package/build/commands/shared/commandRunner.d.ts.map +1 -1
- package/build/commands/shared/commandRunner.js +59 -2
- package/build/commands/shared/commandRunner.js.map +1 -1
- package/build/commands/shared/serveTargetResolver.d.ts +14 -1
- package/build/commands/shared/serveTargetResolver.d.ts.map +1 -1
- package/build/commands/shared/serveTargetResolver.js +145 -3
- package/build/commands/shared/serveTargetResolver.js.map +1 -1
- package/build/commands/target/index.d.ts +3 -0
- package/build/commands/target/index.d.ts.map +1 -0
- package/build/commands/target/index.js +171 -0
- package/build/commands/target/index.js.map +1 -0
- package/build/commands/target/target.d.ts +78 -0
- package/build/commands/target/target.d.ts.map +1 -0
- package/build/commands/target/target.js +471 -0
- package/build/commands/target/target.js.map +1 -0
- package/build/config/configManager.d.ts +2 -0
- package/build/config/configManager.d.ts.map +1 -1
- package/build/config/configManager.js +19 -8
- package/build/config/configManager.js.map +1 -1
- package/build/config/mcpConfigMerge.d.ts.map +1 -1
- package/build/config/mcpConfigMerge.js +13 -2
- package/build/config/mcpConfigMerge.js.map +1 -1
- package/build/constants/mcp.d.ts +1 -1
- package/build/constants/mcp.d.ts.map +1 -1
- package/build/constants/mcp.js +1 -1
- package/build/constants/mcp.js.map +1 -1
- package/build/core/client/clientManager.d.ts +24 -1
- package/build/core/client/clientManager.d.ts.map +1 -1
- package/build/core/client/clientManager.js +268 -2
- package/build/core/client/clientManager.js.map +1 -1
- package/build/core/client/connectionHandler.d.ts.map +1 -1
- package/build/core/client/connectionHandler.js +18 -1
- package/build/core/client/connectionHandler.js.map +1 -1
- package/build/core/configChangeHandler.d.ts +1 -0
- package/build/core/configChangeHandler.d.ts.map +1 -1
- package/build/core/configChangeHandler.js +14 -0
- package/build/core/configChangeHandler.js.map +1 -1
- package/build/core/loading/mcpLoadingManager.d.ts.map +1 -1
- package/build/core/loading/mcpLoadingManager.js +16 -4
- package/build/core/loading/mcpLoadingManager.js.map +1 -1
- package/build/core/runtime/runtimeIdentityService.d.ts +30 -0
- package/build/core/runtime/runtimeIdentityService.d.ts.map +1 -0
- package/build/core/runtime/runtimeIdentityService.js +63 -0
- package/build/core/runtime/runtimeIdentityService.js.map +1 -0
- package/build/core/server/agentConfig.d.ts +4 -0
- package/build/core/server/agentConfig.d.ts.map +1 -1
- package/build/core/server/agentConfig.js +3 -0
- package/build/core/server/agentConfig.js.map +1 -1
- package/build/core/server/backendStdioSupervisor.d.ts +73 -0
- package/build/core/server/backendStdioSupervisor.d.ts.map +1 -0
- package/build/core/server/backendStdioSupervisor.js +191 -0
- package/build/core/server/backendStdioSupervisor.js.map +1 -0
- package/build/core/server/backgroundLaunchConfig.d.ts +15 -0
- package/build/core/server/backgroundLaunchConfig.d.ts.map +1 -0
- package/build/core/server/backgroundLaunchConfig.js +46 -0
- package/build/core/server/backgroundLaunchConfig.js.map +1 -0
- package/build/core/server/backgroundRuntimeSupervisor.d.ts +44 -0
- package/build/core/server/backgroundRuntimeSupervisor.d.ts.map +1 -0
- package/build/core/server/backgroundRuntimeSupervisor.js +252 -0
- package/build/core/server/backgroundRuntimeSupervisor.js.map +1 -0
- package/build/core/server/backgroundRuntimeSupervisorState.d.ts +30 -0
- package/build/core/server/backgroundRuntimeSupervisorState.d.ts.map +1 -0
- package/build/core/server/backgroundRuntimeSupervisorState.js +81 -0
- package/build/core/server/backgroundRuntimeSupervisorState.js.map +1 -0
- package/build/core/server/clientInstanceFactory.d.ts.map +1 -1
- package/build/core/server/clientInstanceFactory.js +1 -0
- package/build/core/server/clientInstanceFactory.js.map +1 -1
- package/build/core/server/clientInstancePool.d.ts +17 -5
- package/build/core/server/clientInstancePool.d.ts.map +1 -1
- package/build/core/server/clientInstancePool.js +198 -33
- package/build/core/server/clientInstancePool.js.map +1 -1
- package/build/core/server/clientInstancePoolTypes.d.ts +7 -1
- package/build/core/server/clientInstancePoolTypes.d.ts.map +1 -1
- package/build/core/server/clientInstancePoolTypes.js.map +1 -1
- package/build/core/server/runtimeScopeOwnership.d.ts +61 -0
- package/build/core/server/runtimeScopeOwnership.d.ts.map +1 -0
- package/build/core/server/runtimeScopeOwnership.js +544 -0
- package/build/core/server/runtimeScopeOwnership.js.map +1 -0
- package/build/core/server/serverManager.d.ts +2 -0
- package/build/core/server/serverManager.d.ts.map +1 -1
- package/build/core/server/serverManager.js +30 -0
- package/build/core/server/serverManager.js.map +1 -1
- package/build/core/server/templateIdentity.d.ts +10 -0
- package/build/core/server/templateIdentity.d.ts.map +1 -1
- package/build/core/server/templateIdentity.js +33 -0
- package/build/core/server/templateIdentity.js.map +1 -1
- package/build/core/server/templateServerCleanup.d.ts.map +1 -1
- package/build/core/server/templateServerCleanup.js +7 -1
- package/build/core/server/templateServerCleanup.js.map +1 -1
- package/build/core/server/templateServerManager.d.ts +13 -0
- package/build/core/server/templateServerManager.d.ts.map +1 -1
- package/build/core/server/templateServerManager.js +129 -4
- package/build/core/server/templateServerManager.js.map +1 -1
- package/build/core/tools/handlers/serverManagementHandler.d.ts +117 -11
- package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -1
- package/build/core/tools/handlers/serverManagementHandler.js +103 -45
- package/build/core/tools/handlers/serverManagementHandler.js.map +1 -1
- package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +2 -2
- package/build/core/tools/internal/adapters/management/managementAdapter.d.ts +2 -2
- package/build/core/tools/internal/adapters/management/managementAdapter.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/management/managementAdapter.js +45 -26
- package/build/core/tools/internal/adapters/management/managementAdapter.js.map +1 -1
- package/build/core/tools/internal/adapters/management/types.d.ts +21 -2
- package/build/core/tools/internal/adapters/management/types.d.ts.map +1 -1
- package/build/core/tools/internal/managementHandlers.d.ts.map +1 -1
- package/build/core/tools/internal/managementHandlers.js +73 -22
- package/build/core/tools/internal/managementHandlers.js.map +1 -1
- package/build/core/tools/internal/schemas/discovery.d.ts +3 -3
- package/build/core/tools/internal/schemas/edit.js +1 -1
- package/build/core/tools/internal/schemas/edit.js.map +1 -1
- package/build/core/tools/internal/schemas/index.d.ts +90 -19
- package/build/core/tools/internal/schemas/index.d.ts.map +1 -1
- package/build/core/tools/internal/schemas/installation.d.ts +7 -7
- package/build/core/tools/internal/schemas/management.d.ts +80 -9
- package/build/core/tools/internal/schemas/management.d.ts.map +1 -1
- package/build/core/tools/internal/schemas/management.js +69 -2
- package/build/core/tools/internal/schemas/management.js.map +1 -1
- package/build/core/types/client.d.ts +9 -2
- package/build/core/types/client.d.ts.map +1 -1
- package/build/core/types/client.js +4 -0
- package/build/core/types/client.js.map +1 -1
- package/build/core/types/transport.d.ts +34 -4
- package/build/core/types/transport.d.ts.map +1 -1
- package/build/core/types/transport.js +26 -3
- package/build/core/types/transport.js.map +1 -1
- package/build/domains/admin/adminBackendRestartService.d.ts +41 -0
- package/build/domains/admin/adminBackendRestartService.d.ts.map +1 -0
- package/build/domains/admin/adminBackendRestartService.js +22 -0
- package/build/domains/admin/adminBackendRestartService.js.map +1 -0
- package/build/domains/admin/adminConfiguredServerService.d.ts +275 -0
- package/build/domains/admin/adminConfiguredServerService.d.ts.map +1 -0
- package/build/domains/admin/adminConfiguredServerService.js +1926 -0
- package/build/domains/admin/adminConfiguredServerService.js.map +1 -0
- package/build/domains/admin/adminConnectivityChecker.d.ts +7 -0
- package/build/domains/admin/adminConnectivityChecker.d.ts.map +1 -0
- package/build/domains/admin/adminConnectivityChecker.js +42 -0
- package/build/domains/admin/adminConnectivityChecker.js.map +1 -0
- package/build/domains/admin/adminDomain.d.ts +36 -0
- package/build/domains/admin/adminDomain.d.ts.map +1 -0
- package/build/domains/admin/adminDomain.js +52 -0
- package/build/domains/admin/adminDomain.js.map +1 -0
- package/build/domains/admin/adminIdentityService.d.ts +75 -0
- package/build/domains/admin/adminIdentityService.d.ts.map +1 -0
- package/build/domains/admin/adminIdentityService.js +321 -0
- package/build/domains/admin/adminIdentityService.js.map +1 -0
- package/build/domains/admin/adminOAuthService.d.ts +26 -0
- package/build/domains/admin/adminOAuthService.d.ts.map +1 -0
- package/build/domains/admin/adminOAuthService.js +71 -0
- package/build/domains/admin/adminOAuthService.js.map +1 -0
- package/build/domains/admin/adminOperationService.d.ts +203 -0
- package/build/domains/admin/adminOperationService.d.ts.map +1 -0
- package/build/domains/admin/adminOperationService.js +749 -0
- package/build/domains/admin/adminOperationService.js.map +1 -0
- package/build/domains/admin/adminPresetService.d.ts +140 -0
- package/build/domains/admin/adminPresetService.d.ts.map +1 -0
- package/build/domains/admin/adminPresetService.js +248 -0
- package/build/domains/admin/adminPresetService.js.map +1 -0
- package/build/domains/admin/runtimeScopeAdminLock.d.ts +22 -0
- package/build/domains/admin/runtimeScopeAdminLock.d.ts.map +1 -0
- package/build/domains/admin/runtimeScopeAdminLock.js +121 -0
- package/build/domains/admin/runtimeScopeAdminLock.js.map +1 -0
- package/build/domains/admin/runtimeServerManagerBackendRestartService.d.ts +20 -0
- package/build/domains/admin/runtimeServerManagerBackendRestartService.d.ts.map +1 -0
- package/build/domains/admin/runtimeServerManagerBackendRestartService.js +78 -0
- package/build/domains/admin/runtimeServerManagerBackendRestartService.js.map +1 -0
- package/build/domains/config-change/configChange.d.ts +6 -1
- package/build/domains/config-change/configChange.d.ts.map +1 -1
- package/build/domains/config-change/configChange.js +344 -0
- package/build/domains/config-change/configChange.js.map +1 -1
- package/build/domains/config-change/types.d.ts +18 -3
- package/build/domains/config-change/types.d.ts.map +1 -1
- package/build/domains/preset/manager/presetManager.d.ts +1 -0
- package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
- package/build/domains/preset/manager/presetManager.js +3 -0
- package/build/domains/preset/manager/presetManager.js.map +1 -1
- package/build/domains/preset/tagAuthoring.d.ts +10 -0
- package/build/domains/preset/tagAuthoring.d.ts.map +1 -0
- package/build/domains/preset/tagAuthoring.js +94 -0
- package/build/domains/preset/tagAuthoring.js.map +1 -0
- package/build/domains/runtime-targets/runtimeIdentityVerification.d.ts +51 -0
- package/build/domains/runtime-targets/runtimeIdentityVerification.d.ts.map +1 -0
- package/build/domains/runtime-targets/runtimeIdentityVerification.js +258 -0
- package/build/domains/runtime-targets/runtimeIdentityVerification.js.map +1 -0
- package/build/domains/runtime-targets/runtimeTargetStore.d.ts +222 -0
- package/build/domains/runtime-targets/runtimeTargetStore.d.ts.map +1 -0
- package/build/domains/runtime-targets/runtimeTargetStore.js +1456 -0
- package/build/domains/runtime-targets/runtimeTargetStore.js.map +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +7 -1
- package/build/index.js.map +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +18 -2
- package/build/server.js.map +1 -1
- package/build/transport/http/routes/adminRoutes.d.ts +38 -0
- package/build/transport/http/routes/adminRoutes.d.ts.map +1 -0
- package/build/transport/http/routes/adminRoutes.js +1475 -0
- package/build/transport/http/routes/adminRoutes.js.map +1 -0
- package/build/transport/http/routes/healthRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/healthRoutes.js +70 -2
- package/build/transport/http/routes/healthRoutes.js.map +1 -1
- package/build/transport/http/routes/oauthRoutes.d.ts +4 -1
- package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/oauthRoutes.js +12 -190
- package/build/transport/http/routes/oauthRoutes.js.map +1 -1
- package/build/transport/http/routes/runtimeIdentityRoutes.d.ts +7 -0
- package/build/transport/http/routes/runtimeIdentityRoutes.d.ts.map +1 -0
- package/build/transport/http/routes/runtimeIdentityRoutes.js +9 -0
- package/build/transport/http/routes/runtimeIdentityRoutes.js.map +1 -0
- package/build/transport/http/server.d.ts +3 -0
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +102 -4
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/transportFactory.d.ts.map +1 -1
- package/build/transport/transportFactory.js +27 -15
- package/build/transport/transportFactory.js.map +1 -1
- package/build/transport/transportFactory.testSetup.js +2 -0
- package/build/transport/transportFactory.testSetup.js.map +1 -1
- package/build/utils/core/errorTypes.d.ts +3 -0
- package/build/utils/core/errorTypes.d.ts.map +1 -1
- package/build/utils/core/errorTypes.js +7 -0
- package/build/utils/core/errorTypes.js.map +1 -1
- package/build/utils/validation/urlDetection.d.ts +13 -2
- package/build/utils/validation/urlDetection.d.ts.map +1 -1
- package/build/utils/validation/urlDetection.js +37 -6
- package/build/utils/validation/urlDetection.js.map +1 -1
- package/package.json +22 -9
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { createHash, randomBytes, randomUUID, scrypt as scryptCallback, scryptSync, timingSafeEqual, } from 'node:crypto';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
const scrypt = promisify(scryptCallback);
|
|
6
|
+
const ADMIN_STATE_DIR = 'admin';
|
|
7
|
+
const ADMIN_STATE_VERSION = 1;
|
|
8
|
+
const PASSWORD_KEY_LENGTH = 64;
|
|
9
|
+
const PASSWORD_SALT_LENGTH = 16;
|
|
10
|
+
const SESSION_TOKEN_BYTES = 32;
|
|
11
|
+
const CSRF_TOKEN_BYTES = 32;
|
|
12
|
+
const DEFAULT_SESSION_TTL_MS = 24 * 60 * 60 * 1000;
|
|
13
|
+
export const ADMIN_SESSION_COOKIE_NAME = '1mcp_admin_session';
|
|
14
|
+
export class AdminIdentityError extends Error {
|
|
15
|
+
code;
|
|
16
|
+
constructor(code, message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.name = 'AdminIdentityError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class AdminIdentityService {
|
|
23
|
+
runtimeScopeId;
|
|
24
|
+
storageDir;
|
|
25
|
+
now;
|
|
26
|
+
sessionTtlMs;
|
|
27
|
+
createId;
|
|
28
|
+
randomToken;
|
|
29
|
+
constructor(options) {
|
|
30
|
+
this.runtimeScopeId = options.runtimeScopeId;
|
|
31
|
+
this.storageDir = path.join(options.storageDir, ADMIN_STATE_DIR);
|
|
32
|
+
this.now = options.now ?? (() => new Date());
|
|
33
|
+
this.sessionTtlMs = options.sessionTtlMs ?? DEFAULT_SESSION_TTL_MS;
|
|
34
|
+
this.createId = options.createId ?? randomUUID;
|
|
35
|
+
this.randomToken = options.randomToken ?? ((byteLength) => randomBytes(byteLength).toString('base64url'));
|
|
36
|
+
}
|
|
37
|
+
hasAdminAccount() {
|
|
38
|
+
return this.readState().accounts.length > 0;
|
|
39
|
+
}
|
|
40
|
+
async bootstrapFirstAdmin(input) {
|
|
41
|
+
const state = this.readState();
|
|
42
|
+
if (state.accounts.length > 0) {
|
|
43
|
+
throw new AdminIdentityError('admin_account_exists', 'An admin account already exists');
|
|
44
|
+
}
|
|
45
|
+
const now = this.now().toISOString();
|
|
46
|
+
const username = this.normalizeUsername(input.username);
|
|
47
|
+
const passwordHash = await this.hashPassword(input.password);
|
|
48
|
+
const latestState = this.readState();
|
|
49
|
+
if (latestState.accounts.length > 0) {
|
|
50
|
+
throw new AdminIdentityError('admin_account_exists', 'An admin account already exists');
|
|
51
|
+
}
|
|
52
|
+
const account = {
|
|
53
|
+
id: `admin_acct_${this.createId()}`,
|
|
54
|
+
runtimeScopeId: this.runtimeScopeId,
|
|
55
|
+
username,
|
|
56
|
+
passwordHash,
|
|
57
|
+
role: 'full-admin',
|
|
58
|
+
disabled: false,
|
|
59
|
+
createdAt: now,
|
|
60
|
+
updatedAt: now,
|
|
61
|
+
};
|
|
62
|
+
this.writeState({ ...latestState, accounts: [account] });
|
|
63
|
+
return toPublicAccount(account);
|
|
64
|
+
}
|
|
65
|
+
bootstrapFirstAdminFromEnvironment(env = process.env) {
|
|
66
|
+
const username = env.ONE_MCP_ADMIN_USERNAME;
|
|
67
|
+
const password = env.ONE_MCP_ADMIN_PASSWORD;
|
|
68
|
+
if (!username && !password) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (!username || !password) {
|
|
72
|
+
throw new AdminIdentityError('admin_bootstrap_env_incomplete', 'Both ONE_MCP_ADMIN_USERNAME and ONE_MCP_ADMIN_PASSWORD are required for admin bootstrap');
|
|
73
|
+
}
|
|
74
|
+
const state = this.readState();
|
|
75
|
+
if (state.accounts.length > 0) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const now = this.now().toISOString();
|
|
79
|
+
const account = {
|
|
80
|
+
id: `admin_acct_${this.createId()}`,
|
|
81
|
+
runtimeScopeId: this.runtimeScopeId,
|
|
82
|
+
username: this.normalizeUsername(username),
|
|
83
|
+
passwordHash: this.hashPasswordSync(password),
|
|
84
|
+
role: 'full-admin',
|
|
85
|
+
disabled: false,
|
|
86
|
+
createdAt: now,
|
|
87
|
+
updatedAt: now,
|
|
88
|
+
};
|
|
89
|
+
this.writeState({ ...state, accounts: [account] });
|
|
90
|
+
return toPublicAccount(account);
|
|
91
|
+
}
|
|
92
|
+
async login(input) {
|
|
93
|
+
const state = this.readState();
|
|
94
|
+
const username = this.normalizeUsername(input.username);
|
|
95
|
+
const account = state.accounts.find((candidate) => candidate.username === username && !candidate.disabled);
|
|
96
|
+
if (!account || !(await this.verifyPassword(input.password, account.passwordHash))) {
|
|
97
|
+
throw new AdminIdentityError('invalid_credentials', 'Invalid admin credentials');
|
|
98
|
+
}
|
|
99
|
+
const latestState = this.readState();
|
|
100
|
+
const latestAccount = latestState.accounts.find((candidate) => candidate.id === account.id &&
|
|
101
|
+
candidate.runtimeScopeId === this.runtimeScopeId &&
|
|
102
|
+
candidate.username === username &&
|
|
103
|
+
!candidate.disabled &&
|
|
104
|
+
candidate.passwordHash === account.passwordHash);
|
|
105
|
+
if (!latestAccount) {
|
|
106
|
+
throw new AdminIdentityError('invalid_credentials', 'Invalid admin credentials');
|
|
107
|
+
}
|
|
108
|
+
const sessionToken = `admin_sess_${this.randomToken(SESSION_TOKEN_BYTES)}`;
|
|
109
|
+
const csrfToken = `admin_csrf_${this.randomToken(CSRF_TOKEN_BYTES)}`;
|
|
110
|
+
const now = this.now();
|
|
111
|
+
const session = {
|
|
112
|
+
id: `admin_session_${this.createId()}`,
|
|
113
|
+
runtimeScopeId: this.runtimeScopeId,
|
|
114
|
+
accountId: latestAccount.id,
|
|
115
|
+
tokenHash: hashSecret(sessionToken),
|
|
116
|
+
csrfToken,
|
|
117
|
+
createdAt: now.toISOString(),
|
|
118
|
+
expiresAt: new Date(now.getTime() + this.sessionTtlMs).toISOString(),
|
|
119
|
+
};
|
|
120
|
+
this.writeState({ ...latestState, sessions: [...latestState.sessions, session] });
|
|
121
|
+
return {
|
|
122
|
+
account: toPublicAccount(latestAccount),
|
|
123
|
+
sessionToken,
|
|
124
|
+
csrfToken,
|
|
125
|
+
expiresAt: session.expiresAt,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
validateSession(sessionToken) {
|
|
129
|
+
if (!sessionToken) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const state = this.readState();
|
|
133
|
+
const session = this.findValidSession(state, sessionToken);
|
|
134
|
+
if (!session) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const account = state.accounts.find((candidate) => candidate.id === session.accountId && candidate.runtimeScopeId === this.runtimeScopeId);
|
|
138
|
+
if (!account || account.disabled) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
account: toPublicAccount(account),
|
|
143
|
+
csrfToken: session.csrfToken,
|
|
144
|
+
expiresAt: session.expiresAt,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
validateCsrf(sessionToken, csrfToken) {
|
|
148
|
+
if (!sessionToken || !csrfToken || Array.isArray(csrfToken)) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
const state = this.readState();
|
|
152
|
+
const session = this.findValidSession(state, sessionToken);
|
|
153
|
+
if (!session) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
return safeEqual(csrfToken, session.csrfToken);
|
|
157
|
+
}
|
|
158
|
+
revokeSession(sessionToken) {
|
|
159
|
+
if (!sessionToken) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const state = this.readState();
|
|
163
|
+
const tokenHash = hashSecret(sessionToken);
|
|
164
|
+
const revokedAt = this.now().toISOString();
|
|
165
|
+
this.writeState({
|
|
166
|
+
...state,
|
|
167
|
+
sessions: state.sessions.map((session) => safeEqual(session.tokenHash, tokenHash) && !session.revokedAt ? { ...session, revokedAt } : session),
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
revokeAllSessions() {
|
|
171
|
+
const state = this.readState();
|
|
172
|
+
const revokedAt = this.now().toISOString();
|
|
173
|
+
this.writeState({
|
|
174
|
+
...state,
|
|
175
|
+
sessions: state.sessions.map((session) => (session.revokedAt ? session : { ...session, revokedAt })),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
async changePassword(accountId, password) {
|
|
179
|
+
const state = this.readState();
|
|
180
|
+
const account = this.requireAccount(state, accountId);
|
|
181
|
+
const passwordHash = await this.hashPassword(password);
|
|
182
|
+
const latestState = this.readState();
|
|
183
|
+
const latestAccount = this.requireAccount(latestState, account.id);
|
|
184
|
+
const updatedAccount = {
|
|
185
|
+
...latestAccount,
|
|
186
|
+
passwordHash,
|
|
187
|
+
updatedAt: this.now().toISOString(),
|
|
188
|
+
};
|
|
189
|
+
this.writeState({
|
|
190
|
+
...latestState,
|
|
191
|
+
accounts: latestState.accounts.map((candidate) => (candidate.id === account.id ? updatedAccount : candidate)),
|
|
192
|
+
sessions: this.revokeSessionsForAccount(latestState.sessions, account.id),
|
|
193
|
+
});
|
|
194
|
+
return toPublicAccount(updatedAccount);
|
|
195
|
+
}
|
|
196
|
+
disableAccount(accountId) {
|
|
197
|
+
const state = this.readState();
|
|
198
|
+
const account = this.requireAccount(state, accountId);
|
|
199
|
+
const updatedAccount = {
|
|
200
|
+
...account,
|
|
201
|
+
disabled: true,
|
|
202
|
+
updatedAt: this.now().toISOString(),
|
|
203
|
+
};
|
|
204
|
+
this.writeState({
|
|
205
|
+
...state,
|
|
206
|
+
accounts: state.accounts.map((candidate) => (candidate.id === account.id ? updatedAccount : candidate)),
|
|
207
|
+
sessions: this.revokeSessionsForAccount(state.sessions, account.id),
|
|
208
|
+
});
|
|
209
|
+
return toPublicAccount(updatedAccount);
|
|
210
|
+
}
|
|
211
|
+
deleteAccount(accountId) {
|
|
212
|
+
const state = this.readState();
|
|
213
|
+
const account = this.requireAccount(state, accountId);
|
|
214
|
+
this.writeState({
|
|
215
|
+
...state,
|
|
216
|
+
accounts: state.accounts.filter((candidate) => candidate.id !== account.id),
|
|
217
|
+
sessions: this.revokeSessionsForAccount(state.sessions, account.id),
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
findValidSession(state, sessionToken) {
|
|
221
|
+
const tokenHash = hashSecret(sessionToken);
|
|
222
|
+
const session = state.sessions.find((candidate) => candidate.runtimeScopeId === this.runtimeScopeId &&
|
|
223
|
+
!candidate.revokedAt &&
|
|
224
|
+
new Date(candidate.expiresAt).getTime() > this.now().getTime() &&
|
|
225
|
+
safeEqual(candidate.tokenHash, tokenHash));
|
|
226
|
+
return session ?? null;
|
|
227
|
+
}
|
|
228
|
+
requireAccount(state, accountId) {
|
|
229
|
+
const account = state.accounts.find((candidate) => candidate.id === accountId && candidate.runtimeScopeId === this.runtimeScopeId);
|
|
230
|
+
if (!account) {
|
|
231
|
+
throw new AdminIdentityError('admin_account_not_found', 'Admin account not found');
|
|
232
|
+
}
|
|
233
|
+
return account;
|
|
234
|
+
}
|
|
235
|
+
revokeSessionsForAccount(sessions, accountId) {
|
|
236
|
+
const revokedAt = this.now().toISOString();
|
|
237
|
+
return sessions.map((session) => session.accountId === accountId && !session.revokedAt ? { ...session, revokedAt } : session);
|
|
238
|
+
}
|
|
239
|
+
normalizeUsername(username) {
|
|
240
|
+
const normalized = username.trim();
|
|
241
|
+
if (!normalized) {
|
|
242
|
+
throw new AdminIdentityError('invalid_username', 'Admin username is required');
|
|
243
|
+
}
|
|
244
|
+
return normalized;
|
|
245
|
+
}
|
|
246
|
+
async hashPassword(password) {
|
|
247
|
+
this.validatePassword(password);
|
|
248
|
+
const salt = randomBytes(PASSWORD_SALT_LENGTH).toString('base64url');
|
|
249
|
+
const key = (await scrypt(password, salt, PASSWORD_KEY_LENGTH));
|
|
250
|
+
return `scrypt:v1:${salt}:${key.toString('base64url')}`;
|
|
251
|
+
}
|
|
252
|
+
hashPasswordSync(password) {
|
|
253
|
+
this.validatePassword(password);
|
|
254
|
+
const salt = randomBytes(PASSWORD_SALT_LENGTH).toString('base64url');
|
|
255
|
+
const key = scryptSync(password, salt, PASSWORD_KEY_LENGTH);
|
|
256
|
+
return `scrypt:v1:${salt}:${key.toString('base64url')}`;
|
|
257
|
+
}
|
|
258
|
+
async verifyPassword(password, passwordHash) {
|
|
259
|
+
const [algorithm, version, salt, encodedHash] = passwordHash.split(':');
|
|
260
|
+
if (algorithm !== 'scrypt' || version !== 'v1' || !salt || !encodedHash) {
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
const expected = Buffer.from(encodedHash, 'base64url');
|
|
264
|
+
const actual = (await scrypt(password, salt, expected.length));
|
|
265
|
+
return expected.length === actual.length && timingSafeEqual(expected, actual);
|
|
266
|
+
}
|
|
267
|
+
validatePassword(password) {
|
|
268
|
+
if (password.length < 12) {
|
|
269
|
+
throw new AdminIdentityError('weak_password', 'Admin password must be at least 12 characters');
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
readState() {
|
|
273
|
+
const filePath = this.stateFilePath();
|
|
274
|
+
if (!fs.existsSync(filePath)) {
|
|
275
|
+
return this.emptyState();
|
|
276
|
+
}
|
|
277
|
+
const parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
278
|
+
if (parsed.runtimeScopeId !== this.runtimeScopeId) {
|
|
279
|
+
throw new AdminIdentityError('runtime_scope_mismatch', 'Admin state belongs to a different runtime scope');
|
|
280
|
+
}
|
|
281
|
+
return parsed;
|
|
282
|
+
}
|
|
283
|
+
writeState(state) {
|
|
284
|
+
fs.mkdirSync(this.storageDir, { recursive: true });
|
|
285
|
+
const filePath = this.stateFilePath();
|
|
286
|
+
const tempPath = `${filePath}.${process.pid}.tmp`;
|
|
287
|
+
fs.writeFileSync(tempPath, JSON.stringify(state, null, 2), { encoding: 'utf8', mode: 0o600 });
|
|
288
|
+
fs.renameSync(tempPath, filePath);
|
|
289
|
+
}
|
|
290
|
+
emptyState() {
|
|
291
|
+
return {
|
|
292
|
+
schemaVersion: ADMIN_STATE_VERSION,
|
|
293
|
+
runtimeScopeId: this.runtimeScopeId,
|
|
294
|
+
accounts: [],
|
|
295
|
+
sessions: [],
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
stateFilePath() {
|
|
299
|
+
return path.join(this.storageDir, `admin-state-${hashSecret(this.runtimeScopeId).slice(0, 24)}.json`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
function toPublicAccount(account) {
|
|
303
|
+
return {
|
|
304
|
+
id: account.id,
|
|
305
|
+
runtimeScopeId: account.runtimeScopeId,
|
|
306
|
+
username: account.username,
|
|
307
|
+
role: account.role,
|
|
308
|
+
disabled: account.disabled,
|
|
309
|
+
createdAt: account.createdAt,
|
|
310
|
+
updatedAt: account.updatedAt,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
function hashSecret(secret) {
|
|
314
|
+
return createHash('sha256').update(secret).digest('base64url');
|
|
315
|
+
}
|
|
316
|
+
function safeEqual(a, b) {
|
|
317
|
+
const left = Buffer.from(a);
|
|
318
|
+
const right = Buffer.from(b);
|
|
319
|
+
return left.length === right.length && timingSafeEqual(left, right);
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=adminIdentityService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminIdentityService.js","sourceRoot":"","sources":["../../../src/domains/admin/adminIdentityService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { OAuthAuthorizationFlow } from '../../auth/oauthAuthorizationFlow.js';
|
|
2
|
+
import type { AdminOperationContext, AdminOperationResult, AdminOperationService } from './adminOperationService.js';
|
|
3
|
+
interface AdminOAuthServiceOptions {
|
|
4
|
+
operationService: AdminOperationService;
|
|
5
|
+
oauthFlow: OAuthAuthorizationFlow;
|
|
6
|
+
}
|
|
7
|
+
interface AdminOAuthOperationInput {
|
|
8
|
+
context: AdminOperationContext;
|
|
9
|
+
serviceId: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AdminOAuthRedirectResult {
|
|
12
|
+
serviceId: string;
|
|
13
|
+
redirectUrl: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AdminOAuthOperations {
|
|
16
|
+
authorizeService(input: AdminOAuthOperationInput): Promise<AdminOperationResult<AdminOAuthRedirectResult>>;
|
|
17
|
+
restartService(input: AdminOAuthOperationInput): Promise<AdminOperationResult<AdminOAuthRedirectResult>>;
|
|
18
|
+
}
|
|
19
|
+
export declare class AdminOAuthService implements AdminOAuthOperations {
|
|
20
|
+
private readonly options;
|
|
21
|
+
constructor(options: AdminOAuthServiceOptions);
|
|
22
|
+
authorizeService(input: AdminOAuthOperationInput): Promise<AdminOperationResult<AdminOAuthRedirectResult>>;
|
|
23
|
+
restartService(input: AdminOAuthOperationInput): Promise<AdminOperationResult<AdminOAuthRedirectResult>>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=adminOAuthService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminOAuthService.d.ts","sourceRoot":"","sources":["../../../src/domains/admin/adminOAuthService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAErH,UAAU,wBAAwB;IAChC,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,SAAS,EAAE,sBAAsB,CAAC;CACnC;AAED,UAAU,wBAAwB;IAChC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC3G,cAAc,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC;CAC1G;AAED,qBAAa,iBAAkB,YAAW,oBAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,wBAAwB;IAExD,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IAkC1G,cAAc,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;CAiC/G"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export class AdminOAuthService {
|
|
2
|
+
options;
|
|
3
|
+
constructor(options) {
|
|
4
|
+
this.options = options;
|
|
5
|
+
}
|
|
6
|
+
async authorizeService(input) {
|
|
7
|
+
const context = {
|
|
8
|
+
...input.context,
|
|
9
|
+
target: { type: 'backend_oauth_service', id: input.serviceId },
|
|
10
|
+
};
|
|
11
|
+
return this.options.operationService.executeMutation({
|
|
12
|
+
context,
|
|
13
|
+
operationName: 'authorizeBackendOAuth',
|
|
14
|
+
run: async () => {
|
|
15
|
+
let result;
|
|
16
|
+
try {
|
|
17
|
+
result = await this.options.oauthFlow.startBackendOAuth({ serverName: input.serviceId });
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error('backend_oauth_authorization_start_failed');
|
|
21
|
+
}
|
|
22
|
+
if (result.status === 'service_not_found') {
|
|
23
|
+
throw new Error('backend_oauth_service_not_found');
|
|
24
|
+
}
|
|
25
|
+
if (result.status === 'runtime_unavailable') {
|
|
26
|
+
throw new Error('backend_oauth_runtime_unavailable');
|
|
27
|
+
}
|
|
28
|
+
if (result.status !== 'redirect') {
|
|
29
|
+
throw new Error('backend_oauth_authorization_start_failed');
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
serviceId: input.serviceId,
|
|
33
|
+
redirectUrl: result.redirectUrl,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async restartService(input) {
|
|
39
|
+
const context = {
|
|
40
|
+
...input.context,
|
|
41
|
+
target: { type: 'backend_oauth_service', id: input.serviceId },
|
|
42
|
+
};
|
|
43
|
+
return this.options.operationService.executeMutation({
|
|
44
|
+
context,
|
|
45
|
+
operationName: 'restartBackendOAuth',
|
|
46
|
+
run: async () => {
|
|
47
|
+
let result;
|
|
48
|
+
try {
|
|
49
|
+
result = await this.options.oauthFlow.restartBackendOAuth({ serverName: input.serviceId });
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
throw new Error('backend_oauth_authorization_start_failed');
|
|
53
|
+
}
|
|
54
|
+
if (result.status === 'service_not_found') {
|
|
55
|
+
throw new Error('backend_oauth_service_not_found');
|
|
56
|
+
}
|
|
57
|
+
if (result.status === 'runtime_unavailable') {
|
|
58
|
+
throw new Error('backend_oauth_runtime_unavailable');
|
|
59
|
+
}
|
|
60
|
+
if (result.status !== 'restarted' || !result.redirectUrl) {
|
|
61
|
+
throw new Error('backend_oauth_authorization_start_failed');
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
serviceId: input.serviceId,
|
|
65
|
+
redirectUrl: result.redirectUrl,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=adminOAuthService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminOAuthService.js","sourceRoot":"","sources":["../../../src/domains/admin/adminOAuthService.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;IAAG,CAAC;IAElE,KAAK,CAAC,gBAAgB,CAAC,KAA+B;QACpD,MAAM,OAAO,GAAG;YACd,GAAG,KAAK,CAAC,OAAO;YAChB,MAAM,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE;SAC/D,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;YACnD,OAAO;YACP,aAAa,EAAE,uBAAuB;YACtC,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,MAAM,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC3F,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBAED,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAA+B;QAClD,MAAM,OAAO,GAAG;YACd,GAAG,KAAK,CAAC,OAAO;YAChB,MAAM,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE;SAC/D,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;YACnD,OAAO;YACP,aAAa,EAAE,qBAAqB;YACpC,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,MAAM,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC7F,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBACzD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBAED,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import type { AdminMutationAvailability } from './runtimeScopeAdminLock.js';
|
|
2
|
+
type AdminOperationOrigin = 'browser' | 'cli';
|
|
3
|
+
export interface AdminOperationContext {
|
|
4
|
+
actor: {
|
|
5
|
+
type: 'admin_account' | 'admin_session';
|
|
6
|
+
accountId: string;
|
|
7
|
+
sessionId?: string;
|
|
8
|
+
};
|
|
9
|
+
origin: AdminOperationOrigin;
|
|
10
|
+
target: AdminOperationTarget;
|
|
11
|
+
runtimeIdentity: {
|
|
12
|
+
runtimeScopeId: string;
|
|
13
|
+
runtimeVersion?: string;
|
|
14
|
+
};
|
|
15
|
+
request: {
|
|
16
|
+
requestId: string;
|
|
17
|
+
jsonMode?: boolean;
|
|
18
|
+
};
|
|
19
|
+
idempotencyKey?: string;
|
|
20
|
+
requestFingerprint?: string;
|
|
21
|
+
deadline?: string;
|
|
22
|
+
confirmationFacts?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface AdminOperationTarget {
|
|
25
|
+
type: string;
|
|
26
|
+
id?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface AdminConfirmationRequirement {
|
|
29
|
+
code: string;
|
|
30
|
+
expected?: string | boolean | number;
|
|
31
|
+
target?: AdminOperationTarget;
|
|
32
|
+
}
|
|
33
|
+
export interface AdminAuditFact {
|
|
34
|
+
timestamp: string;
|
|
35
|
+
operationId: string;
|
|
36
|
+
operationName: string;
|
|
37
|
+
result: 'completed' | 'failed';
|
|
38
|
+
actor: {
|
|
39
|
+
type: 'admin_account' | 'admin_session';
|
|
40
|
+
accountIdHash: string;
|
|
41
|
+
sessionIdHash?: string;
|
|
42
|
+
};
|
|
43
|
+
origin: AdminOperationOrigin;
|
|
44
|
+
target: AdminOperationTarget;
|
|
45
|
+
request: {
|
|
46
|
+
requestId: string;
|
|
47
|
+
};
|
|
48
|
+
confirmationFacts?: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
interface AdminOperationServiceOptions {
|
|
51
|
+
runtimeScopeId: string;
|
|
52
|
+
storageDir: string;
|
|
53
|
+
mutationAvailability?: AdminMutationAvailability;
|
|
54
|
+
now?: () => Date;
|
|
55
|
+
completedRetentionMs?: number;
|
|
56
|
+
auditRetentionMs?: number;
|
|
57
|
+
inFlightWaitMs?: number;
|
|
58
|
+
createOperationId?: () => string;
|
|
59
|
+
}
|
|
60
|
+
interface ExecuteMutationBase {
|
|
61
|
+
context: AdminOperationContext;
|
|
62
|
+
operationName: string;
|
|
63
|
+
}
|
|
64
|
+
interface PreparedMutation<T> {
|
|
65
|
+
confirmationRequirements?: AdminConfirmationRequirement[];
|
|
66
|
+
run: (context: AdminOperationContext) => Promise<T>;
|
|
67
|
+
}
|
|
68
|
+
type ExecuteMutationInput<T> = ExecuteMutationBase & (PreparedMutation<T> | {
|
|
69
|
+
prepare: () => Promise<PreparedMutation<T>>;
|
|
70
|
+
});
|
|
71
|
+
interface ExecuteReadOnlyInput<T> {
|
|
72
|
+
context: AdminOperationContext;
|
|
73
|
+
operationName: string;
|
|
74
|
+
run: (context: AdminOperationContext) => Promise<T>;
|
|
75
|
+
}
|
|
76
|
+
interface ExecuteDryRunInput<T> {
|
|
77
|
+
context: AdminOperationContext;
|
|
78
|
+
operationName: string;
|
|
79
|
+
run: (context: AdminOperationContext) => Promise<T>;
|
|
80
|
+
}
|
|
81
|
+
interface RecentAuditOptions {
|
|
82
|
+
limit?: number;
|
|
83
|
+
}
|
|
84
|
+
export type AdminOperationResult<T = unknown> = {
|
|
85
|
+
ok: true;
|
|
86
|
+
status: 'completed';
|
|
87
|
+
operationId: string;
|
|
88
|
+
operationName: string;
|
|
89
|
+
result: T;
|
|
90
|
+
replayed: boolean;
|
|
91
|
+
} | AdminOperationRecoveryResult;
|
|
92
|
+
export type AdminOperationRecoveryResult = {
|
|
93
|
+
ok: false;
|
|
94
|
+
status: 'idempotency_key_required';
|
|
95
|
+
code: 'idempotency_key_required';
|
|
96
|
+
retryable: false;
|
|
97
|
+
operationName: string;
|
|
98
|
+
} | {
|
|
99
|
+
ok: false;
|
|
100
|
+
status: 'idempotency_conflict';
|
|
101
|
+
code: 'idempotency_conflict';
|
|
102
|
+
retryable: false;
|
|
103
|
+
operationName: string;
|
|
104
|
+
} | {
|
|
105
|
+
ok: false;
|
|
106
|
+
status: 'operation_in_progress';
|
|
107
|
+
code: 'operation_in_progress';
|
|
108
|
+
retryable: true;
|
|
109
|
+
operationName: string;
|
|
110
|
+
retryAfterMs: number;
|
|
111
|
+
} | {
|
|
112
|
+
ok: false;
|
|
113
|
+
status: 'operation_state_unknown';
|
|
114
|
+
code: 'operation_state_unknown';
|
|
115
|
+
retryable: false;
|
|
116
|
+
operationName: string;
|
|
117
|
+
target: AdminOperationTarget;
|
|
118
|
+
reservedAt: string;
|
|
119
|
+
recovery: 'inspect_current_state_and_retry_with_new_idempotency_key';
|
|
120
|
+
} | {
|
|
121
|
+
ok: false;
|
|
122
|
+
status: 'mutation_confirmation_required';
|
|
123
|
+
code: 'mutation_confirmation_required';
|
|
124
|
+
retryable: false;
|
|
125
|
+
operationName: string;
|
|
126
|
+
confirmationRequirements: AdminConfirmationRequirement[];
|
|
127
|
+
} | {
|
|
128
|
+
ok: false;
|
|
129
|
+
status: 'mutation_failed';
|
|
130
|
+
code: 'mutation_failed';
|
|
131
|
+
retryable: false;
|
|
132
|
+
operationName: string;
|
|
133
|
+
error: string;
|
|
134
|
+
} | {
|
|
135
|
+
ok: false;
|
|
136
|
+
status: 'admin_operation_journal_unavailable';
|
|
137
|
+
code: 'admin_operation_journal_unavailable';
|
|
138
|
+
retryable: false;
|
|
139
|
+
operationName: string;
|
|
140
|
+
} | {
|
|
141
|
+
ok: false;
|
|
142
|
+
status: 'runtime_scope_mismatch';
|
|
143
|
+
code: 'runtime_scope_mismatch';
|
|
144
|
+
retryable: false;
|
|
145
|
+
operationName: string;
|
|
146
|
+
} | {
|
|
147
|
+
ok: false;
|
|
148
|
+
status: 'runtime_scope_locked';
|
|
149
|
+
code: 'runtime_scope_locked';
|
|
150
|
+
retryable: true;
|
|
151
|
+
operationName: string;
|
|
152
|
+
reason: 'writer_lock_unavailable';
|
|
153
|
+
};
|
|
154
|
+
export declare class AdminOperationService {
|
|
155
|
+
private readonly runtimeScopeId;
|
|
156
|
+
private readonly storageDir;
|
|
157
|
+
private readonly now;
|
|
158
|
+
private readonly completedRetentionMs;
|
|
159
|
+
private readonly auditRetentionMs;
|
|
160
|
+
private readonly inFlightWaitMs;
|
|
161
|
+
private readonly createOperationId;
|
|
162
|
+
private readonly mutationAvailability;
|
|
163
|
+
private readonly idempotency;
|
|
164
|
+
private readonly recentAuditFacts;
|
|
165
|
+
private readonly mutationState;
|
|
166
|
+
constructor(options: AdminOperationServiceOptions);
|
|
167
|
+
executeReadOnly<T>(input: ExecuteReadOnlyInput<T>): Promise<AdminOperationResult<T>>;
|
|
168
|
+
executeDryRun<T>(input: ExecuteDryRunInput<T>): Promise<AdminOperationResult<T>>;
|
|
169
|
+
getRecentAuditFacts(options?: RecentAuditOptions): AdminAuditFact[];
|
|
170
|
+
executeMutation<T>(input: ExecuteMutationInput<T>): Promise<AdminOperationResult<T>>;
|
|
171
|
+
private prepareAndExecuteMutation;
|
|
172
|
+
private waitForActivePreparation;
|
|
173
|
+
private validateMutationAdmission;
|
|
174
|
+
private validateRuntimeScope;
|
|
175
|
+
private runReservedMutation;
|
|
176
|
+
private recordMutationFailure;
|
|
177
|
+
private enqueueMutation;
|
|
178
|
+
private waitForActiveMutation;
|
|
179
|
+
private retryWaitMs;
|
|
180
|
+
private operationInProgress;
|
|
181
|
+
private journalUnavailableResult;
|
|
182
|
+
private validateConfirmations;
|
|
183
|
+
private replayJournal;
|
|
184
|
+
private applyJournalRecord;
|
|
185
|
+
private entryFromRecord;
|
|
186
|
+
private markStateUnknown;
|
|
187
|
+
private markStateUnknownResult;
|
|
188
|
+
private stateUnknownResult;
|
|
189
|
+
private reservedRecord;
|
|
190
|
+
private appendAuditRecord;
|
|
191
|
+
private appendJournalRecord;
|
|
192
|
+
private scopedKeyHash;
|
|
193
|
+
private legacyScopedKeyHash;
|
|
194
|
+
private isExpired;
|
|
195
|
+
private isAuditExpired;
|
|
196
|
+
private isExpiredTerminal;
|
|
197
|
+
private compactJournal;
|
|
198
|
+
private shouldRetainJournalRecord;
|
|
199
|
+
private readJournalRecords;
|
|
200
|
+
private journalFilePath;
|
|
201
|
+
}
|
|
202
|
+
export {};
|
|
203
|
+
//# sourceMappingURL=adminOperationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminOperationService.d.ts","sourceRoot":"","sources":["../../../src/domains/admin/adminOperationService.ts"],"names":[],"mappings":"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"}
|