- Add full Telegram bot functionality with Z.AI API integration
- Implement 4 tools: Bash, FileEdit, WebSearch, Git
- Add 3 agents: Code Reviewer, Architect, DevOps Engineer
- Add 6 skills for common coding tasks
- Add systemd service file for 24/7 operation
- Add nginx configuration for HTTPS webhook
- Add comprehensive documentation
- Implement WebSocket server for real-time updates
- Add logging system with Winston
- Add environment validation
🤖 zCode CLI X - Agentic coder with Z.AI + Telegram integration
39 lines
2.7 KiB
JavaScript
39 lines
2.7 KiB
JavaScript
import packageInfo from "../package.json";
|
|
import { Sha256 } from "@aws-crypto/sha256-browser";
|
|
import { eventStreamPayloadHandlerProvider, WebSocketFetchHandler as WebSocketRequestHandler, } from "@aws-sdk/middleware-websocket";
|
|
import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser";
|
|
import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver";
|
|
import { eventStreamSerdeProvider } from "@smithy/eventstream-serde-browser";
|
|
import { FetchHttpHandler as HttpRequestHandler, streamCollector } from "@smithy/fetch-http-handler";
|
|
import { invalidProvider } from "@smithy/invalid-dependency";
|
|
import { loadConfigsForDefaultMode } from "@smithy/smithy-client";
|
|
import { calculateBodyLength } from "@smithy/util-body-length-browser";
|
|
import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser";
|
|
import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry";
|
|
import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared";
|
|
export const getRuntimeConfig = (config) => {
|
|
const defaultsMode = resolveDefaultsModeConfig(config);
|
|
const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);
|
|
const clientSharedValues = getSharedRuntimeConfig(config);
|
|
return {
|
|
...clientSharedValues,
|
|
...config,
|
|
runtime: "browser",
|
|
defaultsMode,
|
|
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
|
|
credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))),
|
|
defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
|
|
eventStreamPayloadHandlerProvider: config?.eventStreamPayloadHandlerProvider ?? eventStreamPayloadHandlerProvider,
|
|
eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventStreamSerdeProvider,
|
|
maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
|
|
region: config?.region ?? invalidProvider("Region is missing"),
|
|
requestHandler: WebSocketRequestHandler.create(config?.requestHandler
|
|
?? defaultConfigProvider, HttpRequestHandler.create(defaultConfigProvider)),
|
|
retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE),
|
|
sha256: config?.sha256 ?? Sha256,
|
|
streamCollector: config?.streamCollector ?? streamCollector,
|
|
useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)),
|
|
useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)),
|
|
};
|
|
};
|