51 lines
3.7 KiB
TypeScript
51 lines
3.7 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
|
|
import { hwlabNativeDevelopmentEnvironment, hwlabNativeDevelopmentHelp } from "./hwlab-native-development";
|
|
import { hwlabRuntimeLaneSpecForNode } from "./hwlab-node-lanes";
|
|
|
|
test("L1 Workbench exposure uses YAML HTTPS origin and separate bind/probe addresses", () => {
|
|
const spec = hwlabRuntimeLaneSpecForNode("v03", "NC01");
|
|
const native = spec.nativeDevelopment?.workbench;
|
|
expect(native).toBeDefined();
|
|
const env = hwlabNativeDevelopmentEnvironment(native!, spec, "0123456789abcdef0123456789abcdef01234567");
|
|
expect(env.WORKBENCH_NATIVE_SERVICE_STATE_DIR).toBe(native!.stateDir);
|
|
expect(env.WORKBENCH_NATIVE_STATE_FILE).toBe(`${spec.workspace}/${native!.stateFile}`);
|
|
expect(env.WORKBENCH_MODE).toBe("agentrun-native");
|
|
expect(env.WORKBENCH_CLOUD_API_URL).toBeUndefined();
|
|
expect(env.WORKBENCH_CLOUD_API_AUTHORIZATION).toBeUndefined();
|
|
expect(env.WORKBENCH_AGENTRUN_TERMINAL_TIMEOUT_MS).toBeUndefined();
|
|
expect(env.WORKBENCH_AGENTRUN_POLL_INTERVAL_MS).toBeUndefined();
|
|
expect(env.AGENTRUN_MGR_URL).toBe(native!.agentRun.managerUrl);
|
|
expect(env.AGENTRUN_API_KEY).toMatch(/^hwl_live_/u);
|
|
expect(env.HWLAB_CODE_AGENT_DEFAULT_PROVIDER_PROFILE).toBe("gpt.pika");
|
|
expect(env.HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE).toBe("agentrun-v02");
|
|
expect(env.HWLAB_CODE_AGENT_AGENTRUN_GPT_PIKA_SECRET_NAME).toBe("agentrun-v02-provider-gpt-pika");
|
|
expect(env.HWLAB_CODE_AGENT_AGENTRUN_CODEX_SECRET_NAME).toBe("agentrun-v01-provider-codex");
|
|
expect(env.HWLAB_CODE_AGENT_AGENTRUN_GITHUB_TOOL_SECRET_NAME).toBe("agentrun-v01-tool-github-pr");
|
|
expect(env.HWLAB_CODE_AGENT_AGENTRUN_UNIDESK_SSH_TOOL_SECRET_NAME).toBe("agentrun-v01-tool-unidesk-ssh");
|
|
expect(env.HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT).toBe("0123456789abcdef0123456789abcdef01234567");
|
|
expect(env.HWLAB_KAFKA_DIRECT_PUBLISH_ENABLED).toBe("false");
|
|
expect(env.HWLAB_WORKBENCH_LIVE_KAFKA_SSE_ENABLED).toBe("true");
|
|
expect(env.HWLAB_WORKBENCH_KAFKA_REFRESH_REPLAY_ENABLED).toBe("true");
|
|
expect(env.HWLAB_WORKBENCH_PROJECTION_REALTIME_ENABLED).toBe("false");
|
|
expect(env.HWLAB_KAFKA_BOOTSTRAP_SERVERS).toBe(native!.kafka.bootstrapServers);
|
|
expect(native!.kafka.dnsServers).toEqual(["10.43.0.10"]);
|
|
expect(env.HWLAB_KAFKA_DNS_SERVERS).toBe("10.43.0.10");
|
|
expect(native!.kafka.dnsSearchDomains).toEqual(["cluster.local"]);
|
|
expect(env.HWLAB_KAFKA_DNS_SEARCH_DOMAINS).toBe("cluster.local");
|
|
expect(env.HWLAB_KAFKA_AGENTRUN_EVENT_TOPIC).toBe(spec.codeAgentRuntime!.kafkaEventBridge!.agentRunEventTopic);
|
|
expect(env.HWLAB_KAFKA_EVENT_TOPIC).toBe(spec.codeAgentRuntime!.kafkaEventBridge!.hwlabEventTopic);
|
|
expect(env.HWLAB_KAFKA_CLIENT_ID).toBe(native!.kafka.clientId);
|
|
expect(env.HWLAB_KAFKA_HWLAB_EVENT_GROUP_ID).toBe(native!.kafka.hwlabEventConsumerGroupId);
|
|
expect(env.HWLAB_KAFKA_HWLAB_EVENT_GROUP_ID).not.toBe(spec.codeAgentRuntime!.kafkaEventBridge!.hwlabEventConsumerGroupId);
|
|
expect(env.HWLAB_WORKBENCH_KAFKA_REFRESH_REPLAY_GROUP_PREFIX).toBe(native!.kafka.refreshReplay.groupIdPrefix);
|
|
expect(env.HWLAB_WORKBENCH_KAFKA_REFRESH_REPLAY_TIMEOUT_MS).toBe("30000");
|
|
expect(env.WORKBENCH_API_BIND_HOST).toBe(native!.api.bindHost);
|
|
expect(env.WORKBENCH_API_PROBE_HOST).toBe(native!.api.probeHost);
|
|
expect(env.WORKBENCH_PUBLIC_BASE_URL).toBe("https://lab-dev-workbench.hwpod.com");
|
|
expect(env.WORKBENCH_API_IDLE_TIMEOUT_SECONDS).toBe(String(native!.api.idleTimeoutSeconds));
|
|
expect(JSON.parse(env.WORKBENCH_WEB_RUNTIME_CONFIG!)).toEqual(native!.web.runtimeConfig);
|
|
expect(native!.web.runtimeConfig.workbench.realtimeFeatures).toEqual({ liveKafkaSse: true, kafkaRefreshReplay: true, projectionRealtime: false });
|
|
expect(hwlabNativeDevelopmentHelp()).toMatchObject({ ok: true, command: "hwlab nodes native-development workbench" });
|
|
});
|