flag.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { Config } from "effect"
  2. export function truthy(key: string) {
  3. const value = process.env[key]?.toLowerCase()
  4. return value === "true" || value === "1"
  5. }
  6. const copy = process.env["KIRINCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"]
  7. const fff = process.env["KIRINCODE_DISABLE_FFF"]
  8. function enabledByExperimental(key: string) {
  9. return process.env[key] === undefined ? truthy("KIRINCODE_EXPERIMENTAL") : truthy(key)
  10. }
  11. export const Flag = {
  12. OTEL_EXPORTER_OTLP_ENDPOINT: process.env["OTEL_EXPORTER_OTLP_ENDPOINT"],
  13. OTEL_EXPORTER_OTLP_HEADERS: process.env["OTEL_EXPORTER_OTLP_HEADERS"],
  14. KIRINCODE_AUTO_HEAP_SNAPSHOT: truthy("KIRINCODE_AUTO_HEAP_SNAPSHOT"),
  15. KIRINCODE_GIT_BASH_PATH: process.env["KIRINCODE_GIT_BASH_PATH"],
  16. KIRINCODE_CONFIG: process.env["KIRINCODE_CONFIG"],
  17. KIRINCODE_CONFIG_CONTENT: process.env["KIRINCODE_CONFIG_CONTENT"],
  18. KIRINCODE_DISABLE_AUTOUPDATE: truthy("KIRINCODE_DISABLE_AUTOUPDATE"),
  19. KIRINCODE_ALWAYS_NOTIFY_UPDATE: truthy("KIRINCODE_ALWAYS_NOTIFY_UPDATE"),
  20. KIRINCODE_DISABLE_PRUNE: truthy("KIRINCODE_DISABLE_PRUNE"),
  21. KIRINCODE_DISABLE_TERMINAL_TITLE: truthy("KIRINCODE_DISABLE_TERMINAL_TITLE"),
  22. KIRINCODE_SHOW_TTFD: truthy("KIRINCODE_SHOW_TTFD"),
  23. KIRINCODE_DISABLE_AUTOCOMPACT: truthy("KIRINCODE_DISABLE_AUTOCOMPACT"),
  24. KIRINCODE_DISABLE_MODELS_FETCH: truthy("KIRINCODE_DISABLE_MODELS_FETCH"),
  25. KIRINCODE_DISABLE_MOUSE: truthy("KIRINCODE_DISABLE_MOUSE"),
  26. KIRINCODE_FAKE_VCS: process.env["KIRINCODE_FAKE_VCS"],
  27. KIRINCODE_SERVER_PASSWORD: process.env["KIRINCODE_SERVER_PASSWORD"],
  28. KIRINCODE_SERVER_USERNAME: process.env["KIRINCODE_SERVER_USERNAME"],
  29. KIRINCODE_DISABLE_FFF: fff === undefined ? process.platform === "win32" : truthy("KIRINCODE_DISABLE_FFF"),
  30. // Experimental
  31. KIRINCODE_EXPERIMENTAL_FILEWATCHER: Config.boolean("KIRINCODE_EXPERIMENTAL_FILEWATCHER").pipe(
  32. Config.withDefault(false),
  33. ),
  34. KIRINCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: Config.boolean("KIRINCODE_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe(
  35. Config.withDefault(false),
  36. ),
  37. KIRINCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT:
  38. copy === undefined ? process.platform === "win32" : truthy("KIRINCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"),
  39. KIRINCODE_MODELS_URL: process.env["KIRINCODE_MODELS_URL"],
  40. KIRINCODE_MODELS_PATH: process.env["KIRINCODE_MODELS_PATH"],
  41. KIRINCODE_DB: process.env["KIRINCODE_DB"],
  42. KIRINCODE_WORKSPACE_ID: process.env["KIRINCODE_WORKSPACE_ID"],
  43. KIRINCODE_EXPERIMENTAL_WORKSPACES: enabledByExperimental("KIRINCODE_EXPERIMENTAL_WORKSPACES"),
  44. // Evaluated at access time (not module load) because tests, the CLI, and
  45. // external tooling set these env vars at runtime.
  46. get KIRINCODE_DISABLE_PROJECT_CONFIG() {
  47. return truthy("KIRINCODE_DISABLE_PROJECT_CONFIG")
  48. },
  49. get KIRINCODE_EXPERIMENTAL_REFERENCES() {
  50. return enabledByExperimental("KIRINCODE_EXPERIMENTAL_REFERENCES")
  51. },
  52. get KIRINCODE_TUI_CONFIG() {
  53. return process.env["KIRINCODE_TUI_CONFIG"]
  54. },
  55. get KIRINCODE_CONFIG_DIR() {
  56. return process.env["KIRINCODE_CONFIG_DIR"]
  57. },
  58. get KIRINCODE_PURE() {
  59. return truthy("KIRINCODE_PURE")
  60. },
  61. get KIRINCODE_PERMISSION() {
  62. return process.env["KIRINCODE_PERMISSION"]
  63. },
  64. get KIRINCODE_PLUGIN_META_FILE() {
  65. return process.env["KIRINCODE_PLUGIN_META_FILE"]
  66. },
  67. get KIRINCODE_CLIENT() {
  68. return process.env["KIRINCODE_CLIENT"] ?? "cli"
  69. },
  70. }