@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.
- package/LICENSE +21 -0
- package/README.md +160 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +114 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/gateway-daemon.d.ts +2 -0
- package/dist/commands/gateway-daemon.d.ts.map +1 -0
- package/dist/commands/gateway-daemon.js +22 -0
- package/dist/commands/gateway-daemon.js.map +1 -0
- package/dist/commands/launch.d.ts +2 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +129 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +137 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +78 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/stop.d.ts +2 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +20 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/switch.d.ts +4 -0
- package/dist/commands/switch.d.ts.map +1 -0
- package/dist/commands/switch.js +78 -0
- package/dist/commands/switch.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +107 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/core/codex.d.ts +6 -0
- package/dist/core/codex.d.ts.map +1 -0
- package/dist/core/codex.js +123 -0
- package/dist/core/codex.js.map +1 -0
- package/dist/core/config.d.ts +6 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +68 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/constants.d.ts +4 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +7 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/ollama.d.ts +3 -0
- package/dist/core/ollama.d.ts.map +1 -0
- package/dist/core/ollama.js +20 -0
- package/dist/core/ollama.js.map +1 -0
- package/dist/gateway/auth.d.ts +58 -0
- package/dist/gateway/auth.d.ts.map +1 -0
- package/dist/gateway/auth.js +248 -0
- package/dist/gateway/auth.js.map +1 -0
- package/dist/gateway/providers/anthropic.d.ts +15 -0
- package/dist/gateway/providers/anthropic.d.ts.map +1 -0
- package/dist/gateway/providers/anthropic.js +122 -0
- package/dist/gateway/providers/anthropic.js.map +1 -0
- package/dist/gateway/providers/antigravity-oauth-flow.d.ts +21 -0
- package/dist/gateway/providers/antigravity-oauth-flow.d.ts.map +1 -0
- package/dist/gateway/providers/antigravity-oauth-flow.js +231 -0
- package/dist/gateway/providers/antigravity-oauth-flow.js.map +1 -0
- package/dist/gateway/providers/antigravity.d.ts +5 -0
- package/dist/gateway/providers/antigravity.d.ts.map +1 -0
- package/dist/gateway/providers/antigravity.js +111 -0
- package/dist/gateway/providers/antigravity.js.map +1 -0
- package/dist/gateway/providers/claude-oauth-flow.d.ts +16 -0
- package/dist/gateway/providers/claude-oauth-flow.d.ts.map +1 -0
- package/dist/gateway/providers/claude-oauth-flow.js +178 -0
- package/dist/gateway/providers/claude-oauth-flow.js.map +1 -0
- package/dist/gateway/providers/copilot.d.ts +19 -0
- package/dist/gateway/providers/copilot.d.ts.map +1 -0
- package/dist/gateway/providers/copilot.js +141 -0
- package/dist/gateway/providers/copilot.js.map +1 -0
- package/dist/gateway/providers/google.d.ts +12 -0
- package/dist/gateway/providers/google.d.ts.map +1 -0
- package/dist/gateway/providers/google.js +58 -0
- package/dist/gateway/providers/google.js.map +1 -0
- package/dist/gateway/providers/ollama.d.ts +6 -0
- package/dist/gateway/providers/ollama.d.ts.map +1 -0
- package/dist/gateway/providers/ollama.js +54 -0
- package/dist/gateway/providers/ollama.js.map +1 -0
- package/dist/gateway/providers/openai-oauth-flow.d.ts +15 -0
- package/dist/gateway/providers/openai-oauth-flow.d.ts.map +1 -0
- package/dist/gateway/providers/openai-oauth-flow.js +149 -0
- package/dist/gateway/providers/openai-oauth-flow.js.map +1 -0
- package/dist/gateway/providers/openai.d.ts +8 -0
- package/dist/gateway/providers/openai.d.ts.map +1 -0
- package/dist/gateway/providers/openai.js +193 -0
- package/dist/gateway/providers/openai.js.map +1 -0
- package/dist/gateway/proxy.d.ts +119 -0
- package/dist/gateway/proxy.d.ts.map +1 -0
- package/dist/gateway/proxy.js +1949 -0
- package/dist/gateway/proxy.js.map +1 -0
- package/dist/gateway/server.d.ts +6 -0
- package/dist/gateway/server.d.ts.map +1 -0
- package/dist/gateway/server.js +890 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/ui.d.ts +2 -0
- package/dist/gateway/ui.d.ts.map +1 -0
- package/dist/gateway/ui.js +1748 -0
- package/dist/gateway/ui.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +25 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +4 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +22 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/shell.d.ts +8 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +27 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/updates.d.ts +2 -0
- package/dist/utils/updates.d.ts.map +1 -0
- package/dist/utils/updates.js +83 -0
- package/dist/utils/updates.js.map +1 -0
- 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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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
|
+
}
|