@forgefabrik/ff-ztn 0.3.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/README.md +149 -0
- package/dist/discover.d.ts +3 -0
- package/dist/discover.d.ts.map +1 -0
- package/dist/discover.js +18 -0
- package/dist/discover.js.map +1 -0
- package/dist/genericagent.d.ts +3 -0
- package/dist/genericagent.d.ts.map +1 -0
- package/dist/genericagent.js +40 -0
- package/dist/genericagent.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/zero-token/accounts/account-repository.d.ts +7 -0
- package/dist/zero-token/accounts/account-repository.d.ts.map +1 -0
- package/dist/zero-token/accounts/account-repository.js +37 -0
- package/dist/zero-token/accounts/account-repository.js.map +1 -0
- package/dist/zero-token/accounts/account-service.d.ts +11 -0
- package/dist/zero-token/accounts/account-service.d.ts.map +1 -0
- package/dist/zero-token/accounts/account-service.js +66 -0
- package/dist/zero-token/accounts/account-service.js.map +1 -0
- package/dist/zero-token/accounts/account-types.d.ts +42 -0
- package/dist/zero-token/accounts/account-types.d.ts.map +1 -0
- package/dist/zero-token/accounts/account-types.js +2 -0
- package/dist/zero-token/accounts/account-types.js.map +1 -0
- package/dist/zero-token/accounts/account-validation.d.ts +14 -0
- package/dist/zero-token/accounts/account-validation.d.ts.map +1 -0
- package/dist/zero-token/accounts/account-validation.js +88 -0
- package/dist/zero-token/accounts/account-validation.js.map +1 -0
- package/dist/zero-token/agent/cli.d.ts +2 -0
- package/dist/zero-token/agent/cli.d.ts.map +1 -0
- package/dist/zero-token/agent/cli.js +116 -0
- package/dist/zero-token/agent/cli.js.map +1 -0
- package/dist/zero-token/agent/external-backend.d.ts +3 -0
- package/dist/zero-token/agent/external-backend.d.ts.map +1 -0
- package/dist/zero-token/agent/external-backend.js +3 -0
- package/dist/zero-token/agent/external-backend.js.map +1 -0
- package/dist/zero-token/agent/genericagent-config.d.ts +11 -0
- package/dist/zero-token/agent/genericagent-config.d.ts.map +1 -0
- package/dist/zero-token/agent/genericagent-config.js +44 -0
- package/dist/zero-token/agent/genericagent-config.js.map +1 -0
- package/dist/zero-token/agent/genericagent-runtime.d.ts +20 -0
- package/dist/zero-token/agent/genericagent-runtime.d.ts.map +1 -0
- package/dist/zero-token/agent/genericagent-runtime.js +71 -0
- package/dist/zero-token/agent/genericagent-runtime.js.map +1 -0
- package/dist/zero-token/agent/project-init.d.ts +11 -0
- package/dist/zero-token/agent/project-init.d.ts.map +1 -0
- package/dist/zero-token/agent/project-init.js +58 -0
- package/dist/zero-token/agent/project-init.js.map +1 -0
- package/dist/zero-token/agent/yoyo-adapter.d.ts +23 -0
- package/dist/zero-token/agent/yoyo-adapter.d.ts.map +1 -0
- package/dist/zero-token/agent/yoyo-adapter.js +88 -0
- package/dist/zero-token/agent/yoyo-adapter.js.map +1 -0
- package/dist/zero-token/app-meta.d.ts +7 -0
- package/dist/zero-token/app-meta.d.ts.map +1 -0
- package/dist/zero-token/app-meta.js +7 -0
- package/dist/zero-token/app-meta.js.map +1 -0
- package/dist/zero-token/cli/doctor-command.d.ts +18 -0
- package/dist/zero-token/cli/doctor-command.d.ts.map +1 -0
- package/dist/zero-token/cli/doctor-command.js +96 -0
- package/dist/zero-token/cli/doctor-command.js.map +1 -0
- package/dist/zero-token/config/config.d.ts +56 -0
- package/dist/zero-token/config/config.d.ts.map +1 -0
- package/dist/zero-token/config/config.js +98 -0
- package/dist/zero-token/config/config.js.map +1 -0
- package/dist/zero-token/config/paths.d.ts +12 -0
- package/dist/zero-token/config/paths.d.ts.map +1 -0
- package/dist/zero-token/config/paths.js +50 -0
- package/dist/zero-token/config/paths.js.map +1 -0
- package/dist/zero-token/discovery/builtin-catalog.d.ts +13 -0
- package/dist/zero-token/discovery/builtin-catalog.d.ts.map +1 -0
- package/dist/zero-token/discovery/builtin-catalog.js +25 -0
- package/dist/zero-token/discovery/builtin-catalog.js.map +1 -0
- package/dist/zero-token/discovery/candidate-evaluator.d.ts +4 -0
- package/dist/zero-token/discovery/candidate-evaluator.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-evaluator.js +132 -0
- package/dist/zero-token/discovery/candidate-evaluator.js.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-capability.d.ts +6 -0
- package/dist/zero-token/discovery/candidate-probe-capability.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-capability.js +10 -0
- package/dist/zero-token/discovery/candidate-probe-capability.js.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-evidence.d.ts +13 -0
- package/dist/zero-token/discovery/candidate-probe-evidence.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-evidence.js +53 -0
- package/dist/zero-token/discovery/candidate-probe-evidence.js.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-observer.d.ts +3 -0
- package/dist/zero-token/discovery/candidate-probe-observer.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-observer.js +36 -0
- package/dist/zero-token/discovery/candidate-probe-observer.js.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-runtime.d.ts +6 -0
- package/dist/zero-token/discovery/candidate-probe-runtime.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-runtime.js +120 -0
- package/dist/zero-token/discovery/candidate-probe-runtime.js.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-store.d.ts +9 -0
- package/dist/zero-token/discovery/candidate-probe-store.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-store.js +66 -0
- package/dist/zero-token/discovery/candidate-probe-store.js.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-types.d.ts +30 -0
- package/dist/zero-token/discovery/candidate-probe-types.d.ts.map +1 -0
- package/dist/zero-token/discovery/candidate-probe-types.js +2 -0
- package/dist/zero-token/discovery/candidate-probe-types.js.map +1 -0
- package/dist/zero-token/discovery/control-service.d.ts +8 -0
- package/dist/zero-token/discovery/control-service.d.ts.map +1 -0
- package/dist/zero-token/discovery/control-service.js +107 -0
- package/dist/zero-token/discovery/control-service.js.map +1 -0
- package/dist/zero-token/discovery/control-store.d.ts +7 -0
- package/dist/zero-token/discovery/control-store.d.ts.map +1 -0
- package/dist/zero-token/discovery/control-store.js +70 -0
- package/dist/zero-token/discovery/control-store.js.map +1 -0
- package/dist/zero-token/discovery/control-types.d.ts +39 -0
- package/dist/zero-token/discovery/control-types.d.ts.map +1 -0
- package/dist/zero-token/discovery/control-types.js +2 -0
- package/dist/zero-token/discovery/control-types.js.map +1 -0
- package/dist/zero-token/discovery/discovery-routes.d.ts +3 -0
- package/dist/zero-token/discovery/discovery-routes.d.ts.map +1 -0
- package/dist/zero-token/discovery/discovery-routes.js +130 -0
- package/dist/zero-token/discovery/discovery-routes.js.map +1 -0
- package/dist/zero-token/discovery/discovery-service.d.ts +18 -0
- package/dist/zero-token/discovery/discovery-service.d.ts.map +1 -0
- package/dist/zero-token/discovery/discovery-service.js +81 -0
- package/dist/zero-token/discovery/discovery-service.js.map +1 -0
- package/dist/zero-token/discovery/manifest.d.ts +14 -0
- package/dist/zero-token/discovery/manifest.d.ts.map +1 -0
- package/dist/zero-token/discovery/manifest.js +43 -0
- package/dist/zero-token/discovery/manifest.js.map +1 -0
- package/dist/zero-token/discovery/public-site-inspector.d.ts +10 -0
- package/dist/zero-token/discovery/public-site-inspector.d.ts.map +1 -0
- package/dist/zero-token/discovery/public-site-inspector.js +111 -0
- package/dist/zero-token/discovery/public-site-inspector.js.map +1 -0
- package/dist/zero-token/gateway/api-key-auth.d.ts +3 -0
- package/dist/zero-token/gateway/api-key-auth.d.ts.map +1 -0
- package/dist/zero-token/gateway/api-key-auth.js +59 -0
- package/dist/zero-token/gateway/api-key-auth.js.map +1 -0
- package/dist/zero-token/gateway/api-request-logger-quiet.d.ts +3 -0
- package/dist/zero-token/gateway/api-request-logger-quiet.d.ts.map +1 -0
- package/dist/zero-token/gateway/api-request-logger-quiet.js +79 -0
- package/dist/zero-token/gateway/api-request-logger-quiet.js.map +1 -0
- package/dist/zero-token/gateway/api-request-logger.d.ts +3 -0
- package/dist/zero-token/gateway/api-request-logger.d.ts.map +1 -0
- package/dist/zero-token/gateway/api-request-logger.js +67 -0
- package/dist/zero-token/gateway/api-request-logger.js.map +1 -0
- package/dist/zero-token/gateway/complete-gateway.d.ts +16 -0
- package/dist/zero-token/gateway/complete-gateway.d.ts.map +1 -0
- package/dist/zero-token/gateway/complete-gateway.js +25 -0
- package/dist/zero-token/gateway/complete-gateway.js.map +1 -0
- package/dist/zero-token/gateway/dashboard-gateway.d.ts +16 -0
- package/dist/zero-token/gateway/dashboard-gateway.d.ts.map +1 -0
- package/dist/zero-token/gateway/dashboard-gateway.js +33 -0
- package/dist/zero-token/gateway/dashboard-gateway.js.map +1 -0
- package/dist/zero-token/gateway/gateway.d.ts +2 -0
- package/dist/zero-token/gateway/gateway.d.ts.map +1 -0
- package/dist/zero-token/gateway/gateway.js +2 -0
- package/dist/zero-token/gateway/gateway.js.map +1 -0
- package/dist/zero-token/gateway/inference-dispatch.d.ts +3 -0
- package/dist/zero-token/gateway/inference-dispatch.d.ts.map +1 -0
- package/dist/zero-token/gateway/inference-dispatch.js +97 -0
- package/dist/zero-token/gateway/inference-dispatch.js.map +1 -0
- package/dist/zero-token/gateway/playground-routes.d.ts +3 -0
- package/dist/zero-token/gateway/playground-routes.d.ts.map +1 -0
- package/dist/zero-token/gateway/playground-routes.js +33 -0
- package/dist/zero-token/gateway/playground-routes.js.map +1 -0
- package/dist/zero-token/gateway/provider-runtime-routes.d.ts +3 -0
- package/dist/zero-token/gateway/provider-runtime-routes.d.ts.map +1 -0
- package/dist/zero-token/gateway/provider-runtime-routes.js +38 -0
- package/dist/zero-token/gateway/provider-runtime-routes.js.map +1 -0
- package/dist/zero-token/gateway/runtime-gateway.d.ts +20 -0
- package/dist/zero-token/gateway/runtime-gateway.d.ts.map +1 -0
- package/dist/zero-token/gateway/runtime-gateway.js +234 -0
- package/dist/zero-token/gateway/runtime-gateway.js.map +1 -0
- package/dist/zero-token/identities/google-identity-service.d.ts +27 -0
- package/dist/zero-token/identities/google-identity-service.d.ts.map +1 -0
- package/dist/zero-token/identities/google-identity-service.js +162 -0
- package/dist/zero-token/identities/google-identity-service.js.map +1 -0
- package/dist/zero-token/index.d.ts +3 -0
- package/dist/zero-token/index.d.ts.map +1 -0
- package/dist/zero-token/index.js +380 -0
- package/dist/zero-token/index.js.map +1 -0
- package/dist/zero-token/inference/browser-stream-utils.d.ts +5 -0
- package/dist/zero-token/inference/browser-stream-utils.d.ts.map +1 -0
- package/dist/zero-token/inference/browser-stream-utils.js +118 -0
- package/dist/zero-token/inference/browser-stream-utils.js.map +1 -0
- package/dist/zero-token/inference/chatgpt-browser-provider.d.ts +17 -0
- package/dist/zero-token/inference/chatgpt-browser-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/chatgpt-browser-provider.js +242 -0
- package/dist/zero-token/inference/chatgpt-browser-provider.js.map +1 -0
- package/dist/zero-token/inference/chatgpt-conversation-state.d.ts +8 -0
- package/dist/zero-token/inference/chatgpt-conversation-state.d.ts.map +1 -0
- package/dist/zero-token/inference/chatgpt-conversation-state.js +60 -0
- package/dist/zero-token/inference/chatgpt-conversation-state.js.map +1 -0
- package/dist/zero-token/inference/chatgpt-direct-provider.d.ts +15 -0
- package/dist/zero-token/inference/chatgpt-direct-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/chatgpt-direct-provider.js +348 -0
- package/dist/zero-token/inference/chatgpt-direct-provider.js.map +1 -0
- package/dist/zero-token/inference/chatgpt-provider.d.ts +32 -0
- package/dist/zero-token/inference/chatgpt-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/chatgpt-provider.js +312 -0
- package/dist/zero-token/inference/chatgpt-provider.js.map +1 -0
- package/dist/zero-token/inference/claude-browser-provider.d.ts +16 -0
- package/dist/zero-token/inference/claude-browser-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/claude-browser-provider.js +193 -0
- package/dist/zero-token/inference/claude-browser-provider.js.map +1 -0
- package/dist/zero-token/inference/claude-openclaw-provider.d.ts +14 -0
- package/dist/zero-token/inference/claude-openclaw-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/claude-openclaw-provider.js +187 -0
- package/dist/zero-token/inference/claude-openclaw-provider.js.map +1 -0
- package/dist/zero-token/inference/glm-browser-provider.d.ts +15 -0
- package/dist/zero-token/inference/glm-browser-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/glm-browser-provider.js +166 -0
- package/dist/zero-token/inference/glm-browser-provider.js.map +1 -0
- package/dist/zero-token/inference/inference-provider.d.ts +44 -0
- package/dist/zero-token/inference/inference-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/inference-provider.js +32 -0
- package/dist/zero-token/inference/inference-provider.js.map +1 -0
- package/dist/zero-token/inference/model-registry.d.ts +28 -0
- package/dist/zero-token/inference/model-registry.d.ts.map +1 -0
- package/dist/zero-token/inference/model-registry.js +48 -0
- package/dist/zero-token/inference/model-registry.js.map +1 -0
- package/dist/zero-token/inference/qwen-browser-provider.d.ts +14 -0
- package/dist/zero-token/inference/qwen-browser-provider.d.ts.map +1 -0
- package/dist/zero-token/inference/qwen-browser-provider.js +227 -0
- package/dist/zero-token/inference/qwen-browser-provider.js.map +1 -0
- package/dist/zero-token/inference/stream.d.ts +15 -0
- package/dist/zero-token/inference/stream.d.ts.map +1 -0
- package/dist/zero-token/inference/stream.js +94 -0
- package/dist/zero-token/inference/stream.js.map +1 -0
- package/dist/zero-token/inference/types.d.ts +94 -0
- package/dist/zero-token/inference/types.d.ts.map +1 -0
- package/dist/zero-token/inference/types.js +5 -0
- package/dist/zero-token/inference/types.js.map +1 -0
- package/dist/zero-token/logger.d.ts +4 -0
- package/dist/zero-token/logger.d.ts.map +1 -0
- package/dist/zero-token/logger.js +27 -0
- package/dist/zero-token/logger.js.map +1 -0
- package/dist/zero-token/logging/log-events.d.ts +17 -0
- package/dist/zero-token/logging/log-events.d.ts.map +1 -0
- package/dist/zero-token/logging/log-events.js +74 -0
- package/dist/zero-token/logging/log-events.js.map +1 -0
- package/dist/zero-token/logging/log-routes.d.ts +3 -0
- package/dist/zero-token/logging/log-routes.d.ts.map +1 -0
- package/dist/zero-token/logging/log-routes.js +68 -0
- package/dist/zero-token/logging/log-routes.js.map +1 -0
- package/dist/zero-token/models/model-cache.d.ts +7 -0
- package/dist/zero-token/models/model-cache.d.ts.map +1 -0
- package/dist/zero-token/models/model-cache.js +58 -0
- package/dist/zero-token/models/model-cache.js.map +1 -0
- package/dist/zero-token/models/model-normalization.d.ts +4 -0
- package/dist/zero-token/models/model-normalization.d.ts.map +1 -0
- package/dist/zero-token/models/model-normalization.js +33 -0
- package/dist/zero-token/models/model-normalization.js.map +1 -0
- package/dist/zero-token/models/model-service.d.ts +6 -0
- package/dist/zero-token/models/model-service.d.ts.map +1 -0
- package/dist/zero-token/models/model-service.js +110 -0
- package/dist/zero-token/models/model-service.js.map +1 -0
- package/dist/zero-token/models/model-types.d.ts +28 -0
- package/dist/zero-token/models/model-types.d.ts.map +1 -0
- package/dist/zero-token/models/model-types.js +2 -0
- package/dist/zero-token/models/model-types.js.map +1 -0
- package/dist/zero-token/multi-account/router.d.ts +43 -0
- package/dist/zero-token/multi-account/router.d.ts.map +1 -0
- package/dist/zero-token/multi-account/router.js +94 -0
- package/dist/zero-token/multi-account/router.js.map +1 -0
- package/dist/zero-token/providers/browser-bridge-jobs.d.ts +26 -0
- package/dist/zero-token/providers/browser-bridge-jobs.d.ts.map +1 -0
- package/dist/zero-token/providers/browser-bridge-jobs.js +119 -0
- package/dist/zero-token/providers/browser-bridge-jobs.js.map +1 -0
- package/dist/zero-token/providers/browser-bridge-routes.d.ts +3 -0
- package/dist/zero-token/providers/browser-bridge-routes.d.ts.map +1 -0
- package/dist/zero-token/providers/browser-bridge-routes.js +71 -0
- package/dist/zero-token/providers/browser-bridge-routes.js.map +1 -0
- package/dist/zero-token/providers/browser.d.ts +47 -0
- package/dist/zero-token/providers/browser.d.ts.map +1 -0
- package/dist/zero-token/providers/browser.js +330 -0
- package/dist/zero-token/providers/browser.js.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-account-info.d.ts +12 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-account-info.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-account-info.js +66 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-account-info.js.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-auth.d.ts +9 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-auth.js +81 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-auth.js.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-browser.d.ts +21 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-browser.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-browser.js +64 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-browser.js.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-errors.d.ts +22 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-errors.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-errors.js +44 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-errors.js.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-session.d.ts +10 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-session.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-session.js +71 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-session.js.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-types.d.ts +36 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-types.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-types.js +2 -0
- package/dist/zero-token/providers/chatgpt/chatgpt-types.js.map +1 -0
- package/dist/zero-token/providers/chatgpt-web-auth.d.ts +10 -0
- package/dist/zero-token/providers/chatgpt-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt-web-auth.js +143 -0
- package/dist/zero-token/providers/chatgpt-web-auth.js.map +1 -0
- package/dist/zero-token/providers/chatgpt-web-models.d.ts +8 -0
- package/dist/zero-token/providers/chatgpt-web-models.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt-web-models.js +99 -0
- package/dist/zero-token/providers/chatgpt-web-models.js.map +1 -0
- package/dist/zero-token/providers/chatgpt-web-validator.d.ts +8 -0
- package/dist/zero-token/providers/chatgpt-web-validator.d.ts.map +1 -0
- package/dist/zero-token/providers/chatgpt-web-validator.js +79 -0
- package/dist/zero-token/providers/chatgpt-web-validator.js.map +1 -0
- package/dist/zero-token/providers/claude-web-auth.d.ts +3 -0
- package/dist/zero-token/providers/claude-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/claude-web-auth.js +109 -0
- package/dist/zero-token/providers/claude-web-auth.js.map +1 -0
- package/dist/zero-token/providers/claude-web-models.d.ts +3 -0
- package/dist/zero-token/providers/claude-web-models.d.ts.map +1 -0
- package/dist/zero-token/providers/claude-web-models.js +71 -0
- package/dist/zero-token/providers/claude-web-models.js.map +1 -0
- package/dist/zero-token/providers/claude-web-validator.d.ts +3 -0
- package/dist/zero-token/providers/claude-web-validator.d.ts.map +1 -0
- package/dist/zero-token/providers/claude-web-validator.js +57 -0
- package/dist/zero-token/providers/claude-web-validator.js.map +1 -0
- package/dist/zero-token/providers/deepseek-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/deepseek-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/deepseek-web-auth.js +69 -0
- package/dist/zero-token/providers/deepseek-web-auth.js.map +1 -0
- package/dist/zero-token/providers/deepseek-web-validator.d.ts +3 -0
- package/dist/zero-token/providers/deepseek-web-validator.d.ts.map +1 -0
- package/dist/zero-token/providers/deepseek-web-validator.js +24 -0
- package/dist/zero-token/providers/deepseek-web-validator.js.map +1 -0
- package/dist/zero-token/providers/doubao-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/doubao-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/doubao-web-auth.js +44 -0
- package/dist/zero-token/providers/doubao-web-auth.js.map +1 -0
- package/dist/zero-token/providers/gemini-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/gemini-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/gemini-web-auth.js +47 -0
- package/dist/zero-token/providers/gemini-web-auth.js.map +1 -0
- package/dist/zero-token/providers/glm-intl-web-auth.d.ts +4 -0
- package/dist/zero-token/providers/glm-intl-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/glm-intl-web-auth.js +53 -0
- package/dist/zero-token/providers/glm-intl-web-auth.js.map +1 -0
- package/dist/zero-token/providers/glm-web-auth.d.ts +3 -0
- package/dist/zero-token/providers/glm-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/glm-web-auth.js +42 -0
- package/dist/zero-token/providers/glm-web-auth.js.map +1 -0
- package/dist/zero-token/providers/glm-web-models.d.ts +3 -0
- package/dist/zero-token/providers/glm-web-models.d.ts.map +1 -0
- package/dist/zero-token/providers/glm-web-models.js +52 -0
- package/dist/zero-token/providers/glm-web-models.js.map +1 -0
- package/dist/zero-token/providers/grok-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/grok-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/grok-web-auth.js +47 -0
- package/dist/zero-token/providers/grok-web-auth.js.map +1 -0
- package/dist/zero-token/providers/identity/chatgpt-identity.d.ts +15 -0
- package/dist/zero-token/providers/identity/chatgpt-identity.d.ts.map +1 -0
- package/dist/zero-token/providers/identity/chatgpt-identity.js +15 -0
- package/dist/zero-token/providers/identity/chatgpt-identity.js.map +1 -0
- package/dist/zero-token/providers/identity/identity-validation.d.ts +3 -0
- package/dist/zero-token/providers/identity/identity-validation.d.ts.map +1 -0
- package/dist/zero-token/providers/identity/identity-validation.js +74 -0
- package/dist/zero-token/providers/identity/identity-validation.js.map +1 -0
- package/dist/zero-token/providers/identity/provider-identity-readiness.d.ts +16 -0
- package/dist/zero-token/providers/identity/provider-identity-readiness.d.ts.map +1 -0
- package/dist/zero-token/providers/identity/provider-identity-readiness.js +56 -0
- package/dist/zero-token/providers/identity/provider-identity-readiness.js.map +1 -0
- package/dist/zero-token/providers/identity/provider-identity.d.ts +88 -0
- package/dist/zero-token/providers/identity/provider-identity.d.ts.map +1 -0
- package/dist/zero-token/providers/identity/provider-identity.js +17 -0
- package/dist/zero-token/providers/identity/provider-identity.js.map +1 -0
- package/dist/zero-token/providers/kimi-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/kimi-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/kimi-web-auth.js +50 -0
- package/dist/zero-token/providers/kimi-web-auth.js.map +1 -0
- package/dist/zero-token/providers/perplexity-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/perplexity-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/perplexity-web-auth.js +68 -0
- package/dist/zero-token/providers/perplexity-web-auth.js.map +1 -0
- package/dist/zero-token/providers/perplexity-web-validator.d.ts +3 -0
- package/dist/zero-token/providers/perplexity-web-validator.d.ts.map +1 -0
- package/dist/zero-token/providers/perplexity-web-validator.js +33 -0
- package/dist/zero-token/providers/perplexity-web-validator.js.map +1 -0
- package/dist/zero-token/providers/provider-account-resolver.d.ts +9 -0
- package/dist/zero-token/providers/provider-account-resolver.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-account-resolver.js +28 -0
- package/dist/zero-token/providers/provider-account-resolver.js.map +1 -0
- package/dist/zero-token/providers/provider-browser-profiles.d.ts +14 -0
- package/dist/zero-token/providers/provider-browser-profiles.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-browser-profiles.js +78 -0
- package/dist/zero-token/providers/provider-browser-profiles.js.map +1 -0
- package/dist/zero-token/providers/provider-catalog.d.ts +7 -0
- package/dist/zero-token/providers/provider-catalog.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-catalog.js +27 -0
- package/dist/zero-token/providers/provider-catalog.js.map +1 -0
- package/dist/zero-token/providers/provider-login-jobs.d.ts +21 -0
- package/dist/zero-token/providers/provider-login-jobs.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-login-jobs.js +185 -0
- package/dist/zero-token/providers/provider-login-jobs.js.map +1 -0
- package/dist/zero-token/providers/provider-runtime-registry.d.ts +16 -0
- package/dist/zero-token/providers/provider-runtime-registry.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-runtime-registry.js +88 -0
- package/dist/zero-token/providers/provider-runtime-registry.js.map +1 -0
- package/dist/zero-token/providers/provider-runtime-registry.test.d.ts +2 -0
- package/dist/zero-token/providers/provider-runtime-registry.test.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-runtime-registry.test.js +26 -0
- package/dist/zero-token/providers/provider-runtime-registry.test.js.map +1 -0
- package/dist/zero-token/providers/provider-types.d.ts +72 -0
- package/dist/zero-token/providers/provider-types.d.ts.map +1 -0
- package/dist/zero-token/providers/provider-types.js +2 -0
- package/dist/zero-token/providers/provider-types.js.map +1 -0
- package/dist/zero-token/providers/qwen-cn-web-auth.d.ts +4 -0
- package/dist/zero-token/providers/qwen-cn-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/qwen-cn-web-auth.js +58 -0
- package/dist/zero-token/providers/qwen-cn-web-auth.js.map +1 -0
- package/dist/zero-token/providers/qwen-web-auth.d.ts +3 -0
- package/dist/zero-token/providers/qwen-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/qwen-web-auth.js +67 -0
- package/dist/zero-token/providers/qwen-web-auth.js.map +1 -0
- package/dist/zero-token/providers/qwen-web-models.d.ts +3 -0
- package/dist/zero-token/providers/qwen-web-models.d.ts.map +1 -0
- package/dist/zero-token/providers/qwen-web-models.js +27 -0
- package/dist/zero-token/providers/qwen-web-models.js.map +1 -0
- package/dist/zero-token/providers/registry.d.ts +4 -0
- package/dist/zero-token/providers/registry.d.ts.map +1 -0
- package/dist/zero-token/providers/registry.js +39 -0
- package/dist/zero-token/providers/registry.js.map +1 -0
- package/dist/zero-token/providers/registry.next.d.ts +4 -0
- package/dist/zero-token/providers/registry.next.d.ts.map +1 -0
- package/dist/zero-token/providers/registry.next.js +30 -0
- package/dist/zero-token/providers/registry.next.js.map +1 -0
- package/dist/zero-token/providers/remote-browser-session.d.ts +7 -0
- package/dist/zero-token/providers/remote-browser-session.d.ts.map +1 -0
- package/dist/zero-token/providers/remote-browser-session.js +85 -0
- package/dist/zero-token/providers/remote-browser-session.js.map +1 -0
- package/dist/zero-token/providers/xiaomimo-web-auth.d.ts +7 -0
- package/dist/zero-token/providers/xiaomimo-web-auth.d.ts.map +1 -0
- package/dist/zero-token/providers/xiaomimo-web-auth.js +44 -0
- package/dist/zero-token/providers/xiaomimo-web-auth.js.map +1 -0
- package/dist/zero-token/quota/quota-manager.d.ts +2 -0
- package/dist/zero-token/quota/quota-manager.d.ts.map +1 -0
- package/dist/zero-token/quota/quota-manager.js +2 -0
- package/dist/zero-token/quota/quota-manager.js.map +1 -0
- package/dist/zero-token/quota/runtime-quota-manager.d.ts +19 -0
- package/dist/zero-token/quota/runtime-quota-manager.d.ts.map +1 -0
- package/dist/zero-token/quota/runtime-quota-manager.js +118 -0
- package/dist/zero-token/quota/runtime-quota-manager.js.map +1 -0
- package/dist/zero-token/session/session-service.d.ts +11 -0
- package/dist/zero-token/session/session-service.d.ts.map +1 -0
- package/dist/zero-token/session/session-service.js +169 -0
- package/dist/zero-token/session/session-service.js.map +1 -0
- package/dist/zero-token/session/session-types.d.ts +22 -0
- package/dist/zero-token/session/session-types.d.ts.map +1 -0
- package/dist/zero-token/session/session-types.js +2 -0
- package/dist/zero-token/session/session-types.js.map +1 -0
- package/dist/zero-token/storage/atomic-json-store.d.ts +10 -0
- package/dist/zero-token/storage/atomic-json-store.d.ts.map +1 -0
- package/dist/zero-token/storage/atomic-json-store.js +60 -0
- package/dist/zero-token/storage/atomic-json-store.js.map +1 -0
- package/package.json +59 -0
- package/web-console/dist/assets/index-B_4vEorW.css +1 -0
- package/web-console/dist/assets/index-DFs1Oo-1.js +27 -0
- package/web-console/dist/index.html +20 -0
- package/web-console/dist/nova-mark.svg +18 -0
- package/web-console/dist/nova-network.svg +36 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ProviderBrowserConfig, ProviderLoginResult } from "./provider-types.js";
|
|
2
|
+
export { PROVIDERS, getProvider, listProviders, resolveProvider } from "./provider-catalog.js";
|
|
3
|
+
export declare function login(providerId: string, config?: ProviderBrowserConfig): Promise<ProviderLoginResult>;
|
|
4
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/zero-token/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAkB/F,wBAAsB,KAAK,CACzB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,qBAA0B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { resolveProvider } from "./provider-catalog.js";
|
|
2
|
+
import { ensureProviderBrowserProfile } from "./provider-browser-profiles.js";
|
|
3
|
+
export { PROVIDERS, getProvider, listProviders, resolveProvider } from "./provider-catalog.js";
|
|
4
|
+
const loaders = {
|
|
5
|
+
chatgpt: () => import("./chatgpt-web-auth.js"),
|
|
6
|
+
claude: () => import("./claude-web-auth.js"),
|
|
7
|
+
gemini: () => import("./gemini-web-auth.js"),
|
|
8
|
+
deepseek: () => import("./deepseek-web-auth.js"),
|
|
9
|
+
grok: () => import("./grok-web-auth.js"),
|
|
10
|
+
perplexity: () => import("./perplexity-web-auth.js"),
|
|
11
|
+
qwen: () => import("./qwen-web-auth.js"),
|
|
12
|
+
"qwen-cn": () => import("./qwen-cn-web-auth.js"),
|
|
13
|
+
kimi: () => import("./kimi-web-auth.js"),
|
|
14
|
+
doubao: () => import("./doubao-web-auth.js"),
|
|
15
|
+
glm: () => import("./glm-web-auth.js"),
|
|
16
|
+
"glm-intl": () => import("./glm-intl-web-auth.js"),
|
|
17
|
+
xiaomimo: () => import("./xiaomimo-web-auth.js"),
|
|
18
|
+
};
|
|
19
|
+
export async function login(providerId, config = {}) {
|
|
20
|
+
const provider = resolveProvider(providerId);
|
|
21
|
+
if (!provider)
|
|
22
|
+
return { ok: false, reason: "unknown-provider" };
|
|
23
|
+
if (provider.authType === "api-key") {
|
|
24
|
+
return { ok: false, reason: "configuration-required" };
|
|
25
|
+
}
|
|
26
|
+
const load = loaders[provider.implementation];
|
|
27
|
+
if (!load)
|
|
28
|
+
return { ok: false, reason: "unknown-provider" };
|
|
29
|
+
const profile = await ensureProviderBrowserProfile(provider.loginUrl, {
|
|
30
|
+
reset: true,
|
|
31
|
+
fallbackCdpUrl: config.cdpUrl,
|
|
32
|
+
});
|
|
33
|
+
const { auth } = await load();
|
|
34
|
+
return auth({
|
|
35
|
+
...config,
|
|
36
|
+
cdpUrl: profile.cdpUrl,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/zero-token/providers/registry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,OAAO,GAAiF;IAC5F,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAC9C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAChD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC;IACpD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAChD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC5C,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACtC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAClD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;CACjD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,UAAkB,EAClB,SAAgC,EAAE;IAElC,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAChE,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE5D,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACpE,KAAK,EAAE,IAAI;QACX,cAAc,EAAE,MAAM,CAAC,MAAM;KAC9B,CAAC,CAAC;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC;QACV,GAAG,MAAM;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ProviderBrowserConfig, ProviderLoginResult } from "./provider-types.js";
|
|
2
|
+
export { PROVIDERS, getProvider, listProviders, resolveProvider } from "./provider-catalog.js";
|
|
3
|
+
export declare function login(providerId: string, config?: ProviderBrowserConfig): Promise<ProviderLoginResult>;
|
|
4
|
+
//# sourceMappingURL=registry.next.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.next.d.ts","sourceRoot":"","sources":["../../../src/zero-token/providers/registry.next.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI5G,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAkB/F,wBAAsB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAShH"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { resolveProvider } from "./provider-catalog.js";
|
|
2
|
+
export { PROVIDERS, getProvider, listProviders, resolveProvider } from "./provider-catalog.js";
|
|
3
|
+
const loaders = {
|
|
4
|
+
chatgpt: () => import("./chatgpt-web-auth.js"),
|
|
5
|
+
claude: () => import("./claude-web-auth.js"),
|
|
6
|
+
gemini: () => import("./gemini-web-auth.js"),
|
|
7
|
+
deepseek: () => import("./deepseek-web-auth.js"),
|
|
8
|
+
grok: () => import("./grok-web-auth.js"),
|
|
9
|
+
perplexity: () => import("./perplexity-web-auth.js"),
|
|
10
|
+
qwen: () => import("./qwen-web-auth.js"),
|
|
11
|
+
"qwen-cn": () => import("./qwen-cn-web-auth.js"),
|
|
12
|
+
kimi: () => import("./kimi-web-auth.js"),
|
|
13
|
+
doubao: () => import("./doubao-web-auth.js"),
|
|
14
|
+
glm: () => import("./glm-web-auth.js"),
|
|
15
|
+
"glm-intl": () => import("./glm-intl-web-auth.js"),
|
|
16
|
+
xiaomimo: () => import("./xiaomimo-web-auth.js"),
|
|
17
|
+
};
|
|
18
|
+
export async function login(providerId, config = {}) {
|
|
19
|
+
const provider = resolveProvider(providerId);
|
|
20
|
+
if (!provider)
|
|
21
|
+
return { ok: false, reason: "unknown-provider" };
|
|
22
|
+
if (provider.authType === "api-key")
|
|
23
|
+
return { ok: false, reason: "configuration-required" };
|
|
24
|
+
const load = loaders[provider.implementation];
|
|
25
|
+
if (!load)
|
|
26
|
+
return { ok: false, reason: "unknown-provider" };
|
|
27
|
+
const { auth } = await load();
|
|
28
|
+
return auth(config);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=registry.next.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.next.js","sourceRoot":"","sources":["../../../src/zero-token/providers/registry.next.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,OAAO,GAAiF;IAC5F,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAC9C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAChD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC;IACpD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAChD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC5C,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACtC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAClD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;CACjD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,UAAkB,EAAE,SAAgC,EAAE;IAChF,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAChE,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAE5F,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Page } from "playwright";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a page from the isolated persistent profile for this provider.
|
|
4
|
+
* Each provider uses its own Chromium process, user-data directory and CDP port.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getProviderBrowserPage(originValue: string): Promise<Page>;
|
|
7
|
+
//# sourceMappingURL=remote-browser-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-browser-session.d.ts","sourceRoot":"","sources":["../../../src/zero-token/providers/remote-browser-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AA4EpB;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/E"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { chromium, } from "playwright";
|
|
2
|
+
import logger from "../logger.js";
|
|
3
|
+
import { resolveCdpWebSocketUrl } from "./browser.js";
|
|
4
|
+
import { ensureProviderBrowserProfile } from "./provider-browser-profiles.js";
|
|
5
|
+
const browserPromises = new Map();
|
|
6
|
+
const configuredClaudeContexts = new WeakSet();
|
|
7
|
+
async function connectRemoteBrowser(cdpUrl) {
|
|
8
|
+
const cached = browserPromises.get(cdpUrl);
|
|
9
|
+
if (cached)
|
|
10
|
+
return cached;
|
|
11
|
+
const promise = resolveCdpWebSocketUrl(cdpUrl)
|
|
12
|
+
.then((websocketUrl) => chromium.connectOverCDP(websocketUrl, { timeout: 10_000 }))
|
|
13
|
+
.then((browser) => {
|
|
14
|
+
browser.once("disconnected", () => {
|
|
15
|
+
browserPromises.delete(cdpUrl);
|
|
16
|
+
});
|
|
17
|
+
return browser;
|
|
18
|
+
})
|
|
19
|
+
.catch((error) => {
|
|
20
|
+
browserPromises.delete(cdpUrl);
|
|
21
|
+
throw error;
|
|
22
|
+
});
|
|
23
|
+
browserPromises.set(cdpUrl, promise);
|
|
24
|
+
return promise;
|
|
25
|
+
}
|
|
26
|
+
function belongsToOrigin(page, origin) {
|
|
27
|
+
try {
|
|
28
|
+
const current = new URL(page.url());
|
|
29
|
+
return (current.hostname === origin.hostname ||
|
|
30
|
+
current.hostname.endsWith(`.${origin.hostname}`));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function configureClaudeRequestIdentity(context) {
|
|
37
|
+
if (configuredClaudeContexts.has(context))
|
|
38
|
+
return;
|
|
39
|
+
const cookies = await context.cookies("https://claude.ai");
|
|
40
|
+
const deviceId = cookies.find((cookie) => cookie.name === "anthropic-device-id")?.value;
|
|
41
|
+
if (!deviceId) {
|
|
42
|
+
logger.warn({ provider: "claude" }, "Claude-Profil enthält noch keine anthropic-device-id");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
await context.route("https://claude.ai/api/**", async (route) => {
|
|
46
|
+
const request = route.request();
|
|
47
|
+
await route.continue({
|
|
48
|
+
headers: {
|
|
49
|
+
...request.headers(),
|
|
50
|
+
"anthropic-device-id": deviceId,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
configuredClaudeContexts.add(context);
|
|
55
|
+
logger.info({ provider: "claude", deviceIdSource: "browser-cookie" }, "Claude-API-Requests an persistente Geräte-ID gebunden");
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns a page from the isolated persistent profile for this provider.
|
|
59
|
+
* Each provider uses its own Chromium process, user-data directory and CDP port.
|
|
60
|
+
*/
|
|
61
|
+
export async function getProviderBrowserPage(originValue) {
|
|
62
|
+
const origin = new URL(originValue);
|
|
63
|
+
const profile = await ensureProviderBrowserProfile(origin.toString(), {
|
|
64
|
+
reset: false,
|
|
65
|
+
fallbackCdpUrl: process.env.NOVA_CDP_URL,
|
|
66
|
+
});
|
|
67
|
+
const browser = await connectRemoteBrowser(profile.cdpUrl);
|
|
68
|
+
const context = browser.contexts()[0];
|
|
69
|
+
if (!context) {
|
|
70
|
+
throw new Error(`Providerprofil ${profile.profile} besitzt keinen Browser-Kontext.`);
|
|
71
|
+
}
|
|
72
|
+
if (profile.profile === "claude") {
|
|
73
|
+
await configureClaudeRequestIdentity(context);
|
|
74
|
+
}
|
|
75
|
+
const existing = context.pages().find((page) => belongsToOrigin(page, origin));
|
|
76
|
+
if (existing)
|
|
77
|
+
return existing;
|
|
78
|
+
const page = await context.newPage();
|
|
79
|
+
await page.goto(origin.toString(), {
|
|
80
|
+
waitUntil: "domcontentloaded",
|
|
81
|
+
timeout: 30_000,
|
|
82
|
+
});
|
|
83
|
+
return page;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=remote-browser-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-browser-session.js","sourceRoot":"","sources":["../../../src/zero-token/providers/remote-browser-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProviderAuthFunction } from "./provider-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* XiaoMiMo-Web-Auth: Browser öffnen, auf manuellen Login warten,
|
|
4
|
+
* Cookies und Token extrahieren.
|
|
5
|
+
*/
|
|
6
|
+
export declare const auth: ProviderAuthFunction;
|
|
7
|
+
//# sourceMappingURL=xiaomimo-web-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xiaomimo-web-auth.d.ts","sourceRoot":"","sources":["../../../src/zero-token/providers/xiaomimo-web-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,qBAAqB,CAAC;AAarF;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,oBAgClB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { openProviderBrowser, waitForUrlLogin, extractCookies, extractLocalStorage, } from "./browser.js";
|
|
2
|
+
const XIAOMIMO_URL = "https://xiaomimo.com";
|
|
3
|
+
const AUTH_PATTERNS = ["/auth/", "/login", "/signin"];
|
|
4
|
+
const COOKIE_NAMES = ["xiaomimo", "session", "token", "Authorization"];
|
|
5
|
+
const TOKEN_KEYS = ["accessToken", "mimo-token", "userToken"];
|
|
6
|
+
/**
|
|
7
|
+
* XiaoMiMo-Web-Auth: Browser öffnen, auf manuellen Login warten,
|
|
8
|
+
* Cookies und Token extrahieren.
|
|
9
|
+
*/
|
|
10
|
+
export const auth = async (config) => {
|
|
11
|
+
let browserInstance = null;
|
|
12
|
+
try {
|
|
13
|
+
const { browser, page } = await openProviderBrowser({
|
|
14
|
+
targetUrl: XIAOMIMO_URL,
|
|
15
|
+
cdpPort: config.cdpPort,
|
|
16
|
+
headless: config.headless,
|
|
17
|
+
proxy: config.proxy,
|
|
18
|
+
loginTimeout: config.loginTimeout,
|
|
19
|
+
});
|
|
20
|
+
browserInstance = browser;
|
|
21
|
+
await waitForUrlLogin(page, XIAOMIMO_URL, AUTH_PATTERNS, config.loginTimeout ?? 300_000);
|
|
22
|
+
const cookies = await extractCookies(page, COOKIE_NAMES);
|
|
23
|
+
const accessToken = await extractLocalStorage(page, TOKEN_KEYS);
|
|
24
|
+
const userAgent = await page.evaluate(() => navigator.userAgent);
|
|
25
|
+
return {
|
|
26
|
+
ok: true,
|
|
27
|
+
session: { cookies, accessToken: accessToken ?? undefined, userAgent },
|
|
28
|
+
info: { plan: "free" },
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
33
|
+
if (msg.includes("Login nicht innerhalb"))
|
|
34
|
+
return { ok: false, reason: "login-timeout" };
|
|
35
|
+
if (msg.includes("Browser konnte nicht geöffnet"))
|
|
36
|
+
return { ok: false, reason: "browser-launch-failed" };
|
|
37
|
+
return { ok: false, reason: "unknown-error" };
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
if (browserInstance)
|
|
41
|
+
await browserInstance.close().catch(() => { });
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=xiaomimo-web-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xiaomimo-web-auth.js","sourceRoot":"","sources":["../../../src/zero-token/providers/xiaomimo-web-auth.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAC5C,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtD,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AACvE,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAyB,KAAK,EAAE,MAAM,EAAE,EAAE;IACzD,IAAI,eAAe,GAA0C,IAAI,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,mBAAmB,CAAC;YAClD,SAAS,EAAE,YAAY;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;QACH,eAAe,GAAG,OAAO,CAAC;QAE1B,MAAM,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;QAEzF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEjE,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,SAAS,EAAE;YACtE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACzF,IAAI,GAAG,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QACzG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,IAAI,eAAe;YAAE,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-manager.d.ts","sourceRoot":"","sources":["../../../src/zero-token/quota/quota-manager.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-manager.js","sourceRoot":"","sources":["../../../src/zero-token/quota/quota-manager.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ChatGPTPlusAccount } from "../accounts/account-types.js";
|
|
2
|
+
export declare class QuotaManager {
|
|
3
|
+
private router;
|
|
4
|
+
private rateLimiter;
|
|
5
|
+
private consecutiveErrors;
|
|
6
|
+
private consecutiveAuthErrors;
|
|
7
|
+
init(): Promise<void>;
|
|
8
|
+
acquireAccount(options?: {
|
|
9
|
+
provider?: string;
|
|
10
|
+
modelId?: string;
|
|
11
|
+
excludeAccountId?: string;
|
|
12
|
+
}): Promise<ChatGPTPlusAccount | null>;
|
|
13
|
+
reportSuccess(accountId: string): Promise<void>;
|
|
14
|
+
reportError(accountId: string, error: Error): Promise<void>;
|
|
15
|
+
reportRateLimited(accountId: string): Promise<void>;
|
|
16
|
+
getRemainingRequests(accountId: string): number;
|
|
17
|
+
}
|
|
18
|
+
export declare const quotaManager: QuotaManager;
|
|
19
|
+
//# sourceMappingURL=runtime-quota-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-quota-manager.d.ts","sourceRoot":"","sources":["../../../src/zero-token/quota/runtime-quota-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAoCvE,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,qBAAqB,CAA6B;IAEpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,cAAc,CAAC,OAAO,CAAC,EAAE;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA4BhC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAkD3D,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGhD;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { updateAccount } from "../accounts/account-service.js";
|
|
2
|
+
import { AccountRouter } from "../multi-account/router.js";
|
|
3
|
+
import logger from "../logger.js";
|
|
4
|
+
class AccountRateLimiter {
|
|
5
|
+
windowMs;
|
|
6
|
+
maxRequests;
|
|
7
|
+
counters = new Map();
|
|
8
|
+
constructor(windowMs = 60_000, maxRequests = 10) {
|
|
9
|
+
this.windowMs = windowMs;
|
|
10
|
+
this.maxRequests = maxRequests;
|
|
11
|
+
}
|
|
12
|
+
isAllowed(accountId) {
|
|
13
|
+
const now = Date.now();
|
|
14
|
+
const entry = this.counters.get(accountId);
|
|
15
|
+
if (!entry || now > entry.resetAt) {
|
|
16
|
+
this.counters.set(accountId, { count: 1, resetAt: now + this.windowMs });
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
if (entry.count >= this.maxRequests)
|
|
20
|
+
return false;
|
|
21
|
+
entry.count += 1;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
getRemaining(accountId) {
|
|
25
|
+
const entry = this.counters.get(accountId);
|
|
26
|
+
if (!entry || Date.now() > entry.resetAt)
|
|
27
|
+
return this.maxRequests;
|
|
28
|
+
return Math.max(0, this.maxRequests - entry.count);
|
|
29
|
+
}
|
|
30
|
+
getResetTime(accountId) {
|
|
31
|
+
return this.counters.get(accountId)?.resetAt;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class QuotaManager {
|
|
35
|
+
router = new AccountRouter();
|
|
36
|
+
rateLimiter = new AccountRateLimiter();
|
|
37
|
+
consecutiveErrors = new Map();
|
|
38
|
+
consecutiveAuthErrors = new Map();
|
|
39
|
+
async init() {
|
|
40
|
+
await this.router.init();
|
|
41
|
+
}
|
|
42
|
+
async acquireAccount(options) {
|
|
43
|
+
const result = await this.router.select({
|
|
44
|
+
provider: options?.provider,
|
|
45
|
+
modelId: options?.modelId,
|
|
46
|
+
excludeAccountId: options?.excludeAccountId,
|
|
47
|
+
});
|
|
48
|
+
if (!result)
|
|
49
|
+
return null;
|
|
50
|
+
const account = result.account;
|
|
51
|
+
if (!this.rateLimiter.isAllowed(account.id)) {
|
|
52
|
+
logger.warn({
|
|
53
|
+
accountId: account.id,
|
|
54
|
+
resetAt: this.rateLimiter.getResetTime(account.id),
|
|
55
|
+
}, "Rate-Limit erreicht – versuche anderen Account");
|
|
56
|
+
return this.acquireAccount({ ...options, excludeAccountId: account.id });
|
|
57
|
+
}
|
|
58
|
+
if ((this.consecutiveErrors.get(account.id) ?? 0) >= 3) {
|
|
59
|
+
await updateAccount(account.id, { enabled: false, sessionStatus: "error" });
|
|
60
|
+
return this.acquireAccount({ ...options, excludeAccountId: account.id });
|
|
61
|
+
}
|
|
62
|
+
return account;
|
|
63
|
+
}
|
|
64
|
+
async reportSuccess(accountId) {
|
|
65
|
+
this.consecutiveErrors.set(accountId, 0);
|
|
66
|
+
this.consecutiveAuthErrors.set(accountId, 0);
|
|
67
|
+
const now = new Date().toISOString();
|
|
68
|
+
await updateAccount(accountId, {
|
|
69
|
+
sessionStatus: "valid",
|
|
70
|
+
lastUsedAt: now,
|
|
71
|
+
usageStatus: { state: "available", checkedAt: now },
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async reportError(accountId, error) {
|
|
75
|
+
this.consecutiveErrors.set(accountId, (this.consecutiveErrors.get(accountId) ?? 0) + 1);
|
|
76
|
+
if (error.name === "InferenceAuthError") {
|
|
77
|
+
const count = (this.consecutiveAuthErrors.get(accountId) ?? 0) + 1;
|
|
78
|
+
this.consecutiveAuthErrors.set(accountId, count);
|
|
79
|
+
if (count >= 3) {
|
|
80
|
+
await updateAccount(accountId, {
|
|
81
|
+
enabled: false,
|
|
82
|
+
sessionStatus: "expired",
|
|
83
|
+
usageStatus: {
|
|
84
|
+
state: "error",
|
|
85
|
+
error: error.message,
|
|
86
|
+
checkedAt: new Date().toISOString(),
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
logger.warn({ accountId, count }, "Account nach drei aufeinanderfolgenden Auth-Fehlern deaktiviert");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
await updateAccount(accountId, {
|
|
93
|
+
usageStatus: {
|
|
94
|
+
state: "error",
|
|
95
|
+
error: `Temporärer Auth-Fehler ${count}/3: ${error.message}`,
|
|
96
|
+
checkedAt: new Date().toISOString(),
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
logger.warn({ accountId, count }, "Temporärer Auth-Fehler – Account bleibt aktiv");
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
await updateAccount(accountId, {
|
|
103
|
+
usageStatus: {
|
|
104
|
+
state: "error",
|
|
105
|
+
error: error.message,
|
|
106
|
+
checkedAt: new Date().toISOString(),
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async reportRateLimited(accountId) {
|
|
111
|
+
await this.router.markExhausted(accountId);
|
|
112
|
+
}
|
|
113
|
+
getRemainingRequests(accountId) {
|
|
114
|
+
return this.rateLimiter.getRemaining(accountId);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export const quotaManager = new QuotaManager();
|
|
118
|
+
//# sourceMappingURL=runtime-quota-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-quota-manager.js","sourceRoot":"","sources":["../../../src/zero-token/quota/runtime-quota-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ChatGPTPlusAccount } from "../accounts/account-types.js";
|
|
2
|
+
import type { SessionValidationResult } from "./session-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validate a single account's session.
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateAccountSession(account: ChatGPTPlusAccount): Promise<SessionValidationResult>;
|
|
7
|
+
/**
|
|
8
|
+
* Validate all stored accounts. Returns per-account results.
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateAllSessions(): Promise<SessionValidationResult[]>;
|
|
11
|
+
//# sourceMappingURL=session-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-service.d.ts","sourceRoot":"","sources":["../../../src/zero-token/session/session-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,8BAA8B,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAoB,MAAM,oBAAoB,CAAC;AAqHpF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,uBAAuB,CAAC,CAwClC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA4B9E"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { getAccount, saveAccount } from "../accounts/account-repository.js";
|
|
2
|
+
import logger from "../logger.js";
|
|
3
|
+
/**
|
|
4
|
+
* Lazy-loaded validator cache.
|
|
5
|
+
*/
|
|
6
|
+
const validatorCache = new Map();
|
|
7
|
+
async function loadValidator(provider) {
|
|
8
|
+
if (validatorCache.has(provider)) {
|
|
9
|
+
return validatorCache.get(provider);
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
let mod;
|
|
13
|
+
switch (provider) {
|
|
14
|
+
case "chatgpt":
|
|
15
|
+
mod = await import("../providers/chatgpt-web-validator.js");
|
|
16
|
+
break;
|
|
17
|
+
case "claude":
|
|
18
|
+
mod = await import("../providers/claude-web-validator.js");
|
|
19
|
+
break;
|
|
20
|
+
case "deepseek":
|
|
21
|
+
mod = await import("../providers/deepseek-web-validator.js");
|
|
22
|
+
break;
|
|
23
|
+
case "perplexity":
|
|
24
|
+
mod = await import("../providers/perplexity-web-validator.js");
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
validatorCache.set(provider, null);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
validatorCache.set(provider, mod.validateSession);
|
|
31
|
+
return mod.validateSession;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
validatorCache.set(provider, null);
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Basic fallback validator: fetches the provider's homepage and checks
|
|
40
|
+
* if the cookies are accepted (no redirect to login).
|
|
41
|
+
* This is less reliable but works for providers without a specific API.
|
|
42
|
+
*/
|
|
43
|
+
async function fallbackValidate(provider, loginUrl, cookies, userAgent) {
|
|
44
|
+
try {
|
|
45
|
+
const response = await fetch(loginUrl, {
|
|
46
|
+
headers: {
|
|
47
|
+
"User-Agent": userAgent ?? "zero-token/0.1.0",
|
|
48
|
+
Cookie: cookies,
|
|
49
|
+
},
|
|
50
|
+
redirect: "manual",
|
|
51
|
+
});
|
|
52
|
+
// If we get a redirect (302) to a login page, session is expired
|
|
53
|
+
if (response.status === 302 || response.status === 301) {
|
|
54
|
+
const location = response.headers.get("location") ?? "";
|
|
55
|
+
if (location.includes("login") || location.includes("auth") || location.includes("signin")) {
|
|
56
|
+
return {
|
|
57
|
+
accountId: "",
|
|
58
|
+
provider: provider,
|
|
59
|
+
valid: false,
|
|
60
|
+
status: "expired",
|
|
61
|
+
error: "Weiterleitung zur Login-Seite",
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// 200 means cookies are accepted → session likely valid
|
|
66
|
+
if (response.ok) {
|
|
67
|
+
return {
|
|
68
|
+
accountId: "",
|
|
69
|
+
provider: provider,
|
|
70
|
+
valid: true,
|
|
71
|
+
status: "valid",
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
accountId: "",
|
|
76
|
+
provider: provider,
|
|
77
|
+
valid: false,
|
|
78
|
+
status: "error",
|
|
79
|
+
error: `HTTP ${response.status}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
return {
|
|
84
|
+
accountId: "",
|
|
85
|
+
provider: provider,
|
|
86
|
+
valid: false,
|
|
87
|
+
status: "error",
|
|
88
|
+
error: `Netzwerkfehler: ${err instanceof Error ? err.message : String(err)}`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const PROVIDER_LOGIN_URLS = {
|
|
93
|
+
chatgpt: "https://chatgpt.com",
|
|
94
|
+
claude: "https://claude.ai",
|
|
95
|
+
gemini: "https://gemini.google.com",
|
|
96
|
+
deepseek: "https://chat.deepseek.com",
|
|
97
|
+
grok: "https://grok.com",
|
|
98
|
+
perplexity: "https://www.perplexity.ai",
|
|
99
|
+
qwen: "https://chat.qwen.ai",
|
|
100
|
+
kimi: "https://kimi.moonshot.cn",
|
|
101
|
+
doubao: "https://www.doubao.com",
|
|
102
|
+
glm: "https://chatglm.cn",
|
|
103
|
+
xiaomimo: "https://xiaomimo.com",
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Validate a single account's session.
|
|
107
|
+
*/
|
|
108
|
+
export async function validateAccountSession(account) {
|
|
109
|
+
const provider = account.provider ?? "chatgpt";
|
|
110
|
+
const validator = await loadValidator(provider);
|
|
111
|
+
let result;
|
|
112
|
+
if (validator) {
|
|
113
|
+
result = await validator(account.cookies, account.accessToken, account.userAgent);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const loginUrl = PROVIDER_LOGIN_URLS[provider] ?? `https://${provider}.com`;
|
|
117
|
+
result = await fallbackValidate(provider, loginUrl, account.cookies, account.userAgent);
|
|
118
|
+
}
|
|
119
|
+
// Update the account with validation result
|
|
120
|
+
result.accountId = account.id;
|
|
121
|
+
const newStatus = result.valid ? "valid" : "expired";
|
|
122
|
+
try {
|
|
123
|
+
const existing = await getAccount(account.id);
|
|
124
|
+
if (existing) {
|
|
125
|
+
await saveAccount({
|
|
126
|
+
...existing,
|
|
127
|
+
sessionStatus: newStatus,
|
|
128
|
+
lastValidatedAt: new Date().toISOString(),
|
|
129
|
+
...(result.email && { email: result.email }),
|
|
130
|
+
...(result.userId && { userId: result.userId }),
|
|
131
|
+
...(result.plan && { plan: result.plan }),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
logger.error({ accountId: account.id, err }, "Fehler beim Aktualisieren des Account-Status");
|
|
137
|
+
}
|
|
138
|
+
logger.info({ accountId: account.id, provider, valid: result.valid, status: result.status }, "Session validiert");
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Validate all stored accounts. Returns per-account results.
|
|
143
|
+
*/
|
|
144
|
+
export async function validateAllSessions() {
|
|
145
|
+
const { listAccounts } = await import("../accounts/account-service.js");
|
|
146
|
+
const accounts = await listAccounts();
|
|
147
|
+
if (accounts.length === 0) {
|
|
148
|
+
logger.info("Keine Accounts zum Validieren gefunden.");
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
logger.info({ count: accounts.length }, "Validiere alle Accounts …");
|
|
152
|
+
const results = [];
|
|
153
|
+
for (const account of accounts) {
|
|
154
|
+
if (!account.enabled) {
|
|
155
|
+
results.push({
|
|
156
|
+
accountId: account.id,
|
|
157
|
+
provider: account.provider ?? "chatgpt",
|
|
158
|
+
valid: false,
|
|
159
|
+
status: account.sessionStatus,
|
|
160
|
+
error: "Account deaktiviert",
|
|
161
|
+
});
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const result = await validateAccountSession(account);
|
|
165
|
+
results.push(result);
|
|
166
|
+
}
|
|
167
|
+
return results;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=session-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-service.js","sourceRoot":"","sources":["../../../src/zero-token/session/session-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmC,CAAC;AAElE,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACvC,CAAC;IAED,IAAI,CAAC;QACH,IAAI,GAA0C,CAAC;QAC/C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,GAAG,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,QAAQ;gBACX,GAAG,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;gBAC3D,MAAM;YACR,KAAK,UAAU;gBACb,GAAG,GAAG,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;gBAC7D,MAAM;YACR,KAAK,YAAY;gBACf,GAAG,GAAG,MAAM,MAAM,CAAC,0CAA0C,CAAC,CAAC;gBAC/D,MAAM;YACR;gBACE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,GAAG,CAAC,eAAe,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,SAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,OAAO,EAAE;gBACP,YAAY,EAAE,SAAS,IAAI,kBAAkB;gBAC7C,MAAM,EAAE,OAAO;aAChB;YACD,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,iEAAiE;QACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3F,OAAO;oBACL,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,QAA0C;oBACpD,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,+BAA+B;iBACvC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,QAA0C;gBACpD,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,OAAO;aAChB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,QAA0C;YACpD,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE;SACjC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,QAA0C;YACpD,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GAA2B;IAClD,OAAO,EAAE,qBAAqB;IAC9B,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,2BAA2B;IACnC,QAAQ,EAAE,2BAA2B;IACrC,IAAI,EAAE,kBAAkB;IACxB,UAAU,EAAE,2BAA2B;IACvC,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,0BAA0B;IAChC,MAAM,EAAE,wBAAwB;IAChC,GAAG,EAAE,oBAAoB;IACzB,QAAQ,EAAE,sBAAsB;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA2B;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;IAE/C,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,MAA+B,CAAC;IAEpC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,WAAW,QAAQ,MAAM,CAAC;QAC5E,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1F,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAkB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,WAAW,CAAC;gBAChB,GAAG,QAAQ;gBACX,aAAa,EAAE,SAAS;gBACxB,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACzC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5C,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/C,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,8CAA8C,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAC/E,mBAAmB,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAErE,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;gBACvC,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,OAAO,CAAC,aAAa;gBAC7B,KAAK,EAAE,qBAAqB;aAC7B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|