@kevin0181/rcodex 0.0.1

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.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -0
  3. package/dist/commands/doctor.d.ts +2 -0
  4. package/dist/commands/doctor.d.ts.map +1 -0
  5. package/dist/commands/doctor.js +114 -0
  6. package/dist/commands/doctor.js.map +1 -0
  7. package/dist/commands/gateway-daemon.d.ts +2 -0
  8. package/dist/commands/gateway-daemon.d.ts.map +1 -0
  9. package/dist/commands/gateway-daemon.js +22 -0
  10. package/dist/commands/gateway-daemon.js.map +1 -0
  11. package/dist/commands/launch.d.ts +2 -0
  12. package/dist/commands/launch.d.ts.map +1 -0
  13. package/dist/commands/launch.js +129 -0
  14. package/dist/commands/launch.js.map +1 -0
  15. package/dist/commands/migrate.d.ts +4 -0
  16. package/dist/commands/migrate.d.ts.map +1 -0
  17. package/dist/commands/migrate.js +137 -0
  18. package/dist/commands/migrate.js.map +1 -0
  19. package/dist/commands/setup.d.ts +2 -0
  20. package/dist/commands/setup.d.ts.map +1 -0
  21. package/dist/commands/setup.js +78 -0
  22. package/dist/commands/setup.js.map +1 -0
  23. package/dist/commands/stop.d.ts +2 -0
  24. package/dist/commands/stop.d.ts.map +1 -0
  25. package/dist/commands/stop.js +20 -0
  26. package/dist/commands/stop.js.map +1 -0
  27. package/dist/commands/switch.d.ts +4 -0
  28. package/dist/commands/switch.d.ts.map +1 -0
  29. package/dist/commands/switch.js +78 -0
  30. package/dist/commands/switch.js.map +1 -0
  31. package/dist/commands/sync.d.ts +3 -0
  32. package/dist/commands/sync.d.ts.map +1 -0
  33. package/dist/commands/sync.js +107 -0
  34. package/dist/commands/sync.js.map +1 -0
  35. package/dist/core/codex.d.ts +6 -0
  36. package/dist/core/codex.d.ts.map +1 -0
  37. package/dist/core/codex.js +123 -0
  38. package/dist/core/codex.js.map +1 -0
  39. package/dist/core/config.d.ts +6 -0
  40. package/dist/core/config.d.ts.map +1 -0
  41. package/dist/core/config.js +68 -0
  42. package/dist/core/config.js.map +1 -0
  43. package/dist/core/constants.d.ts +4 -0
  44. package/dist/core/constants.d.ts.map +1 -0
  45. package/dist/core/constants.js +7 -0
  46. package/dist/core/constants.js.map +1 -0
  47. package/dist/core/ollama.d.ts +3 -0
  48. package/dist/core/ollama.d.ts.map +1 -0
  49. package/dist/core/ollama.js +20 -0
  50. package/dist/core/ollama.js.map +1 -0
  51. package/dist/gateway/auth.d.ts +58 -0
  52. package/dist/gateway/auth.d.ts.map +1 -0
  53. package/dist/gateway/auth.js +248 -0
  54. package/dist/gateway/auth.js.map +1 -0
  55. package/dist/gateway/providers/anthropic.d.ts +15 -0
  56. package/dist/gateway/providers/anthropic.d.ts.map +1 -0
  57. package/dist/gateway/providers/anthropic.js +122 -0
  58. package/dist/gateway/providers/anthropic.js.map +1 -0
  59. package/dist/gateway/providers/antigravity-oauth-flow.d.ts +21 -0
  60. package/dist/gateway/providers/antigravity-oauth-flow.d.ts.map +1 -0
  61. package/dist/gateway/providers/antigravity-oauth-flow.js +231 -0
  62. package/dist/gateway/providers/antigravity-oauth-flow.js.map +1 -0
  63. package/dist/gateway/providers/antigravity.d.ts +5 -0
  64. package/dist/gateway/providers/antigravity.d.ts.map +1 -0
  65. package/dist/gateway/providers/antigravity.js +111 -0
  66. package/dist/gateway/providers/antigravity.js.map +1 -0
  67. package/dist/gateway/providers/claude-oauth-flow.d.ts +16 -0
  68. package/dist/gateway/providers/claude-oauth-flow.d.ts.map +1 -0
  69. package/dist/gateway/providers/claude-oauth-flow.js +178 -0
  70. package/dist/gateway/providers/claude-oauth-flow.js.map +1 -0
  71. package/dist/gateway/providers/copilot.d.ts +19 -0
  72. package/dist/gateway/providers/copilot.d.ts.map +1 -0
  73. package/dist/gateway/providers/copilot.js +141 -0
  74. package/dist/gateway/providers/copilot.js.map +1 -0
  75. package/dist/gateway/providers/google.d.ts +12 -0
  76. package/dist/gateway/providers/google.d.ts.map +1 -0
  77. package/dist/gateway/providers/google.js +58 -0
  78. package/dist/gateway/providers/google.js.map +1 -0
  79. package/dist/gateway/providers/ollama.d.ts +6 -0
  80. package/dist/gateway/providers/ollama.d.ts.map +1 -0
  81. package/dist/gateway/providers/ollama.js +54 -0
  82. package/dist/gateway/providers/ollama.js.map +1 -0
  83. package/dist/gateway/providers/openai-oauth-flow.d.ts +15 -0
  84. package/dist/gateway/providers/openai-oauth-flow.d.ts.map +1 -0
  85. package/dist/gateway/providers/openai-oauth-flow.js +149 -0
  86. package/dist/gateway/providers/openai-oauth-flow.js.map +1 -0
  87. package/dist/gateway/providers/openai.d.ts +8 -0
  88. package/dist/gateway/providers/openai.d.ts.map +1 -0
  89. package/dist/gateway/providers/openai.js +193 -0
  90. package/dist/gateway/providers/openai.js.map +1 -0
  91. package/dist/gateway/proxy.d.ts +119 -0
  92. package/dist/gateway/proxy.d.ts.map +1 -0
  93. package/dist/gateway/proxy.js +1949 -0
  94. package/dist/gateway/proxy.js.map +1 -0
  95. package/dist/gateway/server.d.ts +6 -0
  96. package/dist/gateway/server.d.ts.map +1 -0
  97. package/dist/gateway/server.js +890 -0
  98. package/dist/gateway/server.js.map +1 -0
  99. package/dist/gateway/ui.d.ts +2 -0
  100. package/dist/gateway/ui.d.ts.map +1 -0
  101. package/dist/gateway/ui.js +1748 -0
  102. package/dist/gateway/ui.js.map +1 -0
  103. package/dist/index.d.ts +3 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +78 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/types/index.d.ts +26 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/index.js +2 -0
  110. package/dist/types/index.js.map +1 -0
  111. package/dist/utils/logger.d.ts +10 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +25 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/paths.d.ts +4 -0
  116. package/dist/utils/paths.d.ts.map +1 -0
  117. package/dist/utils/paths.js +22 -0
  118. package/dist/utils/paths.js.map +1 -0
  119. package/dist/utils/shell.d.ts +8 -0
  120. package/dist/utils/shell.d.ts.map +1 -0
  121. package/dist/utils/shell.js +27 -0
  122. package/dist/utils/shell.js.map +1 -0
  123. package/dist/utils/updates.d.ts +2 -0
  124. package/dist/utils/updates.d.ts.map +1 -0
  125. package/dist/utils/updates.js +83 -0
  126. package/dist/utils/updates.js.map +1 -0
  127. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/gateway/ui.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAuWwB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAy2C7B,CAAC;AACT,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { runSync } from "./commands/sync.js";
4
+ import { runDoctor } from "./commands/doctor.js";
5
+ import { runSwitch } from "./commands/switch.js";
6
+ import { runMigrate } from "./commands/migrate.js";
7
+ import { runStop } from "./commands/stop.js";
8
+ import { runSetup } from "./commands/setup.js";
9
+ import { runLaunch } from "./commands/launch.js";
10
+ import { runGatewayDaemon } from "./commands/gateway-daemon.js";
11
+ import { enforceAcceptedLatestVersion } from "./utils/updates.js";
12
+ const program = new Command();
13
+ program
14
+ .name("rcodex")
15
+ .description("rcodex - manage AI providers for Codex")
16
+ .version("0.0.1");
17
+ program.action(async () => {
18
+ await enforceAcceptedLatestVersion();
19
+ await runLaunch();
20
+ });
21
+ program
22
+ .command("setup")
23
+ .description("Run first-time setup in the foreground")
24
+ .action(async () => {
25
+ await runSetup();
26
+ process.exit(0);
27
+ });
28
+ program
29
+ .command("stop")
30
+ .description("Stop the background gateway process")
31
+ .action(async () => {
32
+ await runStop();
33
+ process.exit(0);
34
+ });
35
+ program
36
+ .command("gateway")
37
+ .description("Switch Codex to use rcodex Gateway (Claude / GPT / Gemini / Ollama)")
38
+ .action(async () => {
39
+ await runSwitch("gateway");
40
+ process.exit(0);
41
+ });
42
+ program
43
+ .command("openai")
44
+ .description("Switch Codex to native OpenAI (bypasses gateway)")
45
+ .action(async () => {
46
+ await runSwitch("openai");
47
+ process.exit(0);
48
+ });
49
+ program
50
+ .command("sync")
51
+ .description("Register rcodex Gateway in Codex config and migrate existing threads")
52
+ .option("--dry-run", "Preview changes without writing to config", false)
53
+ .action(async (opts) => {
54
+ await runSync({ dryRun: opts.dryRun });
55
+ process.exit(0);
56
+ });
57
+ program
58
+ .command("doctor")
59
+ .description("Check installation and gateway status")
60
+ .action(async () => {
61
+ await runDoctor();
62
+ process.exit(0);
63
+ });
64
+ program
65
+ .command("migrate")
66
+ .description("Migrate existing Codex threads to rcodex provider (close Codex first)")
67
+ .option("--dry-run", "Preview changes without modifying DB", false)
68
+ .action(async (opts) => {
69
+ await runMigrate(opts.dryRun);
70
+ process.exit(0);
71
+ });
72
+ program
73
+ .command("_gateway", { hidden: true })
74
+ .action(async () => {
75
+ await runGatewayDaemon();
76
+ });
77
+ program.parse(process.argv);
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface ModelProvider {
2
+ name: string;
3
+ base_url: string;
4
+ env_key?: string;
5
+ wire_api?: string;
6
+ requires_openai_auth?: boolean;
7
+ }
8
+ export interface Profile {
9
+ model: string;
10
+ model_provider: string;
11
+ }
12
+ export interface CodexConfig {
13
+ model?: string;
14
+ model_provider?: string;
15
+ oss_provider?: string;
16
+ approval_policy?: string;
17
+ sandbox_mode?: string;
18
+ model_providers?: Record<string, ModelProvider>;
19
+ profiles?: Record<string, Profile>;
20
+ [key: string]: unknown;
21
+ }
22
+ export interface SyncOptions {
23
+ dryRun: boolean;
24
+ showHeader?: boolean;
25
+ }
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export declare const logger: {
2
+ header(): void;
3
+ success(msg: string): void;
4
+ warn(msg: string): void;
5
+ error(msg: string): void;
6
+ info(msg: string): void;
7
+ done(): void;
8
+ separator(): void;
9
+ };
10
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;iBAKJ,MAAM;cAIT,MAAM;eAIL,MAAM;cAIP,MAAM;;;CAWjB,CAAC"}
@@ -0,0 +1,25 @@
1
+ const HEADER = "[rcodex]";
2
+ export const logger = {
3
+ header() {
4
+ console.log(`\n${HEADER}`);
5
+ },
6
+ success(msg) {
7
+ console.log(`??${msg}`);
8
+ },
9
+ warn(msg) {
10
+ console.log(`??${msg}`);
11
+ },
12
+ error(msg) {
13
+ console.error(`??${msg}`);
14
+ },
15
+ info(msg) {
16
+ console.log(` ${msg}`);
17
+ },
18
+ done() {
19
+ console.log("\nDone.");
20
+ },
21
+ separator() {
22
+ console.log("?�".repeat(50));
23
+ },
24
+ };
25
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM;QACJ,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,GAAW;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,GAAW;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function getCodexConfigDir(): string;
2
+ export declare function getCodexConfigPath(): string;
3
+ export declare function displayPath(p: string): string;
4
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAa3C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7C"}
@@ -0,0 +1,22 @@
1
+ import { homedir } from "os";
2
+ import { join } from "path";
3
+ import { mkdirSync, writeFileSync, existsSync } from "fs";
4
+ export function getCodexConfigDir() {
5
+ return join(homedir(), ".codex");
6
+ }
7
+ export function getCodexConfigPath() {
8
+ const dir = getCodexConfigDir();
9
+ const configPath = join(dir, "config.toml");
10
+ if (!existsSync(dir)) {
11
+ mkdirSync(dir, { recursive: true });
12
+ }
13
+ if (!existsSync(configPath)) {
14
+ writeFileSync(configPath, "", "utf-8");
15
+ }
16
+ return configPath;
17
+ }
18
+ export function displayPath(p) {
19
+ const home = homedir();
20
+ return p.startsWith(home) ? p.replace(home, "~") : p;
21
+ }
22
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE1D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface ShellResult {
2
+ stdout: string;
3
+ stderr: string;
4
+ exitCode: number;
5
+ }
6
+ export declare function run(command: string, timeoutMs?: number): Promise<ShellResult>;
7
+ export declare function commandExists(cmd: string): Promise<boolean>;
8
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAgBnF;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKjE"}
@@ -0,0 +1,27 @@
1
+ import { exec } from "child_process";
2
+ import { promisify } from "util";
3
+ const execAsync = promisify(exec);
4
+ export async function run(command, timeoutMs = 10_000) {
5
+ try {
6
+ const { stdout, stderr } = await execAsync(command, {
7
+ timeout: timeoutMs,
8
+ shell: process.platform === "win32" ? "cmd.exe" : "/bin/sh",
9
+ windowsHide: true,
10
+ });
11
+ return { stdout: stdout.trim(), stderr: stderr.trim(), exitCode: 0 };
12
+ }
13
+ catch (err) {
14
+ const e = err;
15
+ return {
16
+ stdout: (e.stdout ?? "").trim(),
17
+ stderr: (e.stderr ?? "").trim(),
18
+ exitCode: e.code ?? 1,
19
+ };
20
+ }
21
+ }
22
+ export async function commandExists(cmd) {
23
+ const checkCmd = process.platform === "win32" ? `where ${cmd}` : `which ${cmd}`;
24
+ const result = await run(checkCmd);
25
+ return result.exitCode === 0;
26
+ }
27
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAQlC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAe,EAAE,SAAS,GAAG,MAAM;IAC3D,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;YAClD,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC3D,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACvE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAA0D,CAAC;QACrE,OAAO;YACL,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC/B,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC/B,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function enforceAcceptedLatestVersion(): Promise<void>;
2
+ //# sourceMappingURL=updates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../../src/utils/updates.ts"],"names":[],"mappings":"AAkFA,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBlE"}
@@ -0,0 +1,83 @@
1
+ import { spawnSync } from "child_process";
2
+ import { createInterface } from "readline/promises";
3
+ import { stdin as input, stdout as output } from "process";
4
+ import { readFileSync } from "fs";
5
+ function readPackageInfo() {
6
+ const packageUrl = new URL("../../package.json", import.meta.url);
7
+ const parsed = JSON.parse(readFileSync(packageUrl, "utf8"));
8
+ return {
9
+ name: parsed.name ?? "rcodex",
10
+ version: parsed.version ?? "0.0.0",
11
+ };
12
+ }
13
+ function compareSemver(a, b) {
14
+ const left = a.split(".").map((part) => Number.parseInt(part, 10) || 0);
15
+ const right = b.split(".").map((part) => Number.parseInt(part, 10) || 0);
16
+ for (let i = 0; i < Math.max(left.length, right.length); i += 1) {
17
+ const diff = (left[i] ?? 0) - (right[i] ?? 0);
18
+ if (diff !== 0)
19
+ return diff;
20
+ }
21
+ return 0;
22
+ }
23
+ async function getLatestNpmVersion(packageName) {
24
+ try {
25
+ const controller = new AbortController();
26
+ const timeout = setTimeout(() => controller.abort(), 2500);
27
+ const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`, {
28
+ signal: controller.signal,
29
+ headers: { Accept: "application/json" },
30
+ });
31
+ clearTimeout(timeout);
32
+ if (!res.ok)
33
+ return null;
34
+ const data = await res.json();
35
+ return data.version ?? null;
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ async function confirmUpdate(packageName, currentVersion, latestVersion) {
42
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
43
+ console.error(`rcodex ${latestVersion} is available, but this shell is not interactive. ` +
44
+ `Run "npm install -g ${packageName}@latest" and then run "rcodex" again.`);
45
+ return false;
46
+ }
47
+ const rl = createInterface({ input, output });
48
+ try {
49
+ const answer = await rl.question(`rcodex ${latestVersion} is available (installed: ${currentVersion}). Update now? [y/N] `);
50
+ return answer.trim().toLowerCase() === "y" || answer.trim().toLowerCase() === "yes";
51
+ }
52
+ finally {
53
+ rl.close();
54
+ }
55
+ }
56
+ function installLatest(packageName, latestVersion) {
57
+ const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
58
+ const result = spawnSync(npmCommand, ["install", "-g", `${packageName}@${latestVersion}`], {
59
+ stdio: "inherit",
60
+ windowsHide: true,
61
+ });
62
+ return result.status === 0;
63
+ }
64
+ export async function enforceAcceptedLatestVersion() {
65
+ const { name, version } = readPackageInfo();
66
+ const latestVersion = await getLatestNpmVersion(name);
67
+ if (!latestVersion || compareSemver(latestVersion, version) <= 0) {
68
+ return;
69
+ }
70
+ const accepted = await confirmUpdate(name, version, latestVersion);
71
+ if (!accepted) {
72
+ console.error("Update required before launching rcodex.");
73
+ process.exit(1);
74
+ }
75
+ const installed = installLatest(name, latestVersion);
76
+ if (!installed) {
77
+ console.error(`rcodex update failed. Please run: npm install -g ${name}@latest`);
78
+ process.exit(1);
79
+ }
80
+ console.log("rcodex updated successfully. Run \"rcodex\" again to launch the new version.");
81
+ process.exit(0);
82
+ }
83
+ //# sourceMappingURL=updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../src/utils/updates.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@kevin0181/rcodex",
3
+ "version": "0.0.1",
4
+ "description": "Gateway and provider manager for Codex: Claude, GPT, Gemini, Ollama, Antigravity, and Copilot via a single local proxy",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "rcodex": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc && node -e \"if(process.platform!=='win32')require('child_process').execSync('chmod +x dist/index.js')\" && node -e \"const{existsSync}=require('fs');if(!existsSync('dist/antigravity-credentials.json'))console.warn('[rcodex] dist/antigravity-credentials.json missing; Antigravity OAuth requires ~/.rcodex/antigravity-app.json');\"",
12
+ "start": "node dist/index.js",
13
+ "dev": "tsx src/index.ts",
14
+ "prepublishOnly": "npm run build",
15
+ "prepare": "npm run build",
16
+ "postinstall": "node scripts/postinstall.cjs"
17
+ },
18
+ "files": [
19
+ "dist/",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "keywords": [
24
+ "codex",
25
+ "claude",
26
+ "openai",
27
+ "gemini",
28
+ "ollama",
29
+ "gateway",
30
+ "provider",
31
+ "proxy",
32
+ "ai"
33
+ ],
34
+ "author": "neneee0181",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/neneee0181/rcodex.git"
39
+ },
40
+ "bugs": {
41
+ "url": "https://github.com/neneee0181/rcodex/issues"
42
+ },
43
+ "homepage": "https://github.com/neneee0181/rcodex#readme",
44
+ "dependencies": {
45
+ "@fastify/cors": "^11.2.0",
46
+ "@iarna/toml": "^2.2.5",
47
+ "better-sqlite3": "^12.10.0",
48
+ "commander": "^12.1.0",
49
+ "fastify": "^5.8.5",
50
+ "open": "^11.0.0"
51
+ },
52
+ "devDependencies": {
53
+ "@types/better-sqlite3": "^7.6.13",
54
+ "@types/node": "^20.0.0",
55
+ "tsx": "^4.19.2",
56
+ "typescript": "^5.4.0"
57
+ },
58
+ "engines": {
59
+ "node": ">=20.0.0"
60
+ }
61
+ }