@antelopejs/dms-ai 0.4.1 → 0.5.0
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/README.md +1 -1
- package/dist/constants/database.d.ts +7 -0
- package/dist/constants/database.js +11 -0
- package/dist/constants/database.js.map +1 -0
- package/dist/constants/pages.d.ts +3 -0
- package/dist/constants/pages.js +3 -0
- package/dist/constants/pages.js.map +1 -1
- package/dist/database/catalog.d.ts +4 -0
- package/dist/database/catalog.js +25 -0
- package/dist/database/catalog.js.map +1 -0
- package/dist/logging/log-buffer.js +1 -1
- package/dist/logging/log-buffer.js.map +1 -1
- package/dist/pages/settings/page.d.ts +1 -0
- package/dist/pages/settings/page.js +1 -0
- package/dist/pages/settings/page.js.map +1 -1
- package/dist/routes/builder.js +8 -0
- package/dist/routes/builder.js.map +1 -1
- package/dist/routes/codex-account.d.ts +8 -0
- package/dist/routes/codex-account.js +162 -0
- package/dist/routes/codex-account.js.map +1 -0
- package/dist/routes/database.d.ts +21 -0
- package/dist/routes/database.js +115 -0
- package/dist/routes/database.js.map +1 -0
- package/dist/routes/index.d.ts +2 -0
- package/dist/routes/index.js +2 -0
- package/dist/routes/index.js.map +1 -1
- package/frontend-vue/app/chat/utils/tool-lexicon.ts +46 -0
- package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +30 -1
- package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +30 -1
- package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +8 -0
- package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +8 -0
- package/frontend-vue/package.json +1 -1
- package/frontend-vue/tests/panel-states.test.ts +1 -1
- package/package.json +4 -3
- package/sidecar/dist/agent/permission-preview.js +49 -2
- package/sidecar/dist/agent/permission-preview.js.map +1 -1
- package/sidecar/dist/agent/tool-kinds.d.ts +1 -0
- package/sidecar/dist/agent/tool-kinds.js +2 -1
- package/sidecar/dist/agent/tool-kinds.js.map +1 -1
- package/sidecar/dist/constants/builder.d.ts +7 -1
- package/sidecar/dist/constants/builder.js +10 -0
- package/sidecar/dist/constants/builder.js.map +1 -1
- package/sidecar/dist/constants/chatgpt.d.ts +39 -0
- package/sidecar/dist/constants/chatgpt.js +55 -0
- package/sidecar/dist/constants/chatgpt.js.map +1 -0
- package/sidecar/dist/constants/codex.d.ts +4 -5
- package/sidecar/dist/constants/codex.js +4 -5
- package/sidecar/dist/constants/codex.js.map +1 -1
- package/sidecar/dist/constants/database.d.ts +11 -0
- package/sidecar/dist/constants/database.js +17 -0
- package/sidecar/dist/constants/database.js.map +1 -0
- package/sidecar/dist/constants/http.d.ts +3 -0
- package/sidecar/dist/constants/http.js +3 -0
- package/sidecar/dist/constants/http.js.map +1 -1
- package/sidecar/dist/constants/mcp.js +2 -0
- package/sidecar/dist/constants/mcp.js.map +1 -1
- package/sidecar/dist/constants/providers.d.ts +1 -1
- package/sidecar/dist/constants/providers.js +1 -1
- package/sidecar/dist/constants/providers.js.map +1 -1
- package/sidecar/dist/constants/tool-kinds.d.ts +1 -0
- package/sidecar/dist/constants/tool-kinds.js +7 -0
- package/sidecar/dist/constants/tool-kinds.js.map +1 -1
- package/sidecar/dist/database/database-client.d.ts +11 -0
- package/sidecar/dist/database/database-client.js +50 -0
- package/sidecar/dist/database/database-client.js.map +1 -0
- package/sidecar/dist/index.js +6 -0
- package/sidecar/dist/index.js.map +1 -1
- package/sidecar/dist/mcp/tool-definitions.js +2 -0
- package/sidecar/dist/mcp/tool-definitions.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-gate.js +3 -1
- package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-project.d.ts +8 -0
- package/sidecar/dist/mcp/tools/builder-project.js +181 -0
- package/sidecar/dist/mcp/tools/builder-project.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder.d.ts +5 -2
- package/sidecar/dist/mcp/tools/builder.js +5 -11
- package/sidecar/dist/mcp/tools/builder.js.map +1 -1
- package/sidecar/dist/mcp/tools/database.d.ts +6 -0
- package/sidecar/dist/mcp/tools/database.js +42 -0
- package/sidecar/dist/mcp/tools/database.js.map +1 -0
- package/sidecar/dist/mcp/types.d.ts +2 -0
- package/sidecar/dist/providers/claude/safe-mode.js +11 -1
- package/sidecar/dist/providers/claude/safe-mode.js.map +1 -1
- package/sidecar/dist/providers/codex/chatgpt/credentials.d.ts +10 -0
- package/sidecar/dist/providers/codex/chatgpt/credentials.js +63 -0
- package/sidecar/dist/providers/codex/chatgpt/credentials.js.map +1 -0
- package/sidecar/dist/providers/codex/chatgpt/http.d.ts +3 -0
- package/sidecar/dist/providers/codex/chatgpt/http.js +66 -0
- package/sidecar/dist/providers/codex/chatgpt/http.js.map +1 -0
- package/sidecar/dist/providers/codex/chatgpt/lock.d.ts +1 -0
- package/sidecar/dist/providers/codex/chatgpt/lock.js +58 -0
- package/sidecar/dist/providers/codex/chatgpt/lock.js.map +1 -0
- package/sidecar/dist/providers/codex/chatgpt/login.d.ts +8 -0
- package/sidecar/dist/providers/codex/chatgpt/login.js +138 -0
- package/sidecar/dist/providers/codex/chatgpt/login.js.map +1 -0
- package/sidecar/dist/providers/codex/chatgpt/oauth.d.ts +38 -0
- package/sidecar/dist/providers/codex/chatgpt/oauth.js +167 -0
- package/sidecar/dist/providers/codex/chatgpt/oauth.js.map +1 -0
- package/sidecar/dist/providers/codex/chatgpt/store.d.ts +21 -0
- package/sidecar/dist/providers/codex/chatgpt/store.js +75 -0
- package/sidecar/dist/providers/codex/chatgpt/store.js.map +1 -0
- package/sidecar/dist/providers/codex/config.d.ts +1 -5
- package/sidecar/dist/providers/codex/config.js +27 -4
- package/sidecar/dist/providers/codex/config.js.map +1 -1
- package/sidecar/dist/providers/codex/module.js +11 -4
- package/sidecar/dist/providers/codex/module.js.map +1 -1
- package/sidecar/dist/providers/codex/process.d.ts +1 -1
- package/sidecar/dist/providers/codex/process.js +7 -3
- package/sidecar/dist/providers/codex/process.js.map +1 -1
- package/sidecar/dist/providers/codex/provider.d.ts +0 -1
- package/sidecar/dist/providers/codex/provider.js +7 -5
- package/sidecar/dist/providers/codex/provider.js.map +1 -1
- package/sidecar/dist/server/http.js +38 -0
- package/sidecar/dist/server/http.js.map +1 -1
- package/sidecar/dist/server/permission-events.js +3 -1
- package/sidecar/dist/server/permission-events.js.map +1 -1
- package/sidecar/dist/server/raw-data.js +1 -1
- package/sidecar/dist/server/raw-data.js.map +1 -1
- package/sidecar/dist/server/safety-net.js +1 -1
- package/sidecar/dist/server/safety-net.js.map +1 -1
- package/skills/dms-ai/SKILL.md +1 -1
- package/skills/dms-external-database/REFERENCE.md +132 -0
- package/skills/dms-external-database/SKILL.md +142 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DatabaseClient } from "../../database/database-client.js";
|
|
2
|
+
import { type AnyMcpToolDefinition } from "../define-tool.js";
|
|
3
|
+
export interface DatabaseToolsDeps {
|
|
4
|
+
databaseClient: DatabaseClient;
|
|
5
|
+
}
|
|
6
|
+
export declare function buildDatabaseTools(deps: DatabaseToolsDeps): AnyMcpToolDefinition[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DATABASE_CONNECTIONS_PATH, DATABASE_CONNECTIONS_TOOL_NAME, DATABASE_DESCRIBE_PATH, DATABASE_DESCRIBE_TOOL_NAME, DATABASE_PROFILE_PATH, DATABASE_PROFILE_TOOL_NAME, DATABASE_RELATIONS_PATH, DATABASE_RELATIONS_TOOL_NAME, } from "../../constants/database.js";
|
|
3
|
+
import { defineTool, } from "../define-tool.js";
|
|
4
|
+
function isFailed(value) {
|
|
5
|
+
return (value !== null &&
|
|
6
|
+
typeof value === "object" &&
|
|
7
|
+
value.ok === false);
|
|
8
|
+
}
|
|
9
|
+
function answer(value) {
|
|
10
|
+
const text = JSON.stringify(value);
|
|
11
|
+
return isFailed(value)
|
|
12
|
+
? { content: [{ type: "text", text }], isError: true }
|
|
13
|
+
: { content: [{ type: "text", text }] };
|
|
14
|
+
}
|
|
15
|
+
const CONNECTION = z
|
|
16
|
+
.string()
|
|
17
|
+
.describe("A connection id from DatabaseConnections, e.g. `erp`.");
|
|
18
|
+
const RELATION = z
|
|
19
|
+
.string()
|
|
20
|
+
.describe('A relation named `"schema.name"`, e.g. `sales.accounts`.');
|
|
21
|
+
const COLUMN_REFERENCE = z.object({ relation: RELATION, column: z.string() });
|
|
22
|
+
const CONNECTIONS_DESCRIPTION = "Lists the databases the project connects dms-ai to, each with its engine, version, database and role. Configuration declares them; when none is listed, connect one first with BuilderConfigureProject.";
|
|
23
|
+
const RELATIONS_DESCRIPTION = "Lists every relation of a connection (tables, partitioned tables, views, materialized views, foreign tables), with its row estimate and where it came from, its key (the columns `_id` aliases, or null), what the role may write, its comment, and `unmappable` with the reason when it cannot be mapped.";
|
|
24
|
+
const DESCRIBE_DESCRIPTION = "Describes relations in full: every column's native type, nullability, default, generated/identity, enum labels, comment, `accepts` (the declarations registration takes, the one to propose first) and `readOnly`; indexes; foreign keys out (`references`) and in (`referencedBy`). Describe in batches of up to 20.";
|
|
25
|
+
const PROFILE_DESCRIPTION = "Profiles one relation with aggregates only, in a read-only transaction: rows, and per column nulls, distinct, numeric/date/enum ranges, months, categories (values of few-valued columns, each seen at least 5 times) and text lengths, with traits (enum-like, identifier-like, label-candidate, time-axis, measure); children per parent over each foreign key. A measure past its time answers `timeout`. Large relations are sampled. `references` checks columns that look like references without a declared foreign key: containment of their values in the target column, and whether the target is a key.";
|
|
26
|
+
export function buildDatabaseTools(deps) {
|
|
27
|
+
const client = deps.databaseClient;
|
|
28
|
+
return [
|
|
29
|
+
defineTool(DATABASE_CONNECTIONS_TOOL_NAME, CONNECTIONS_DESCRIPTION, {}, async () => answer(await client.get(DATABASE_CONNECTIONS_PATH))),
|
|
30
|
+
defineTool(DATABASE_RELATIONS_TOOL_NAME, RELATIONS_DESCRIPTION, { connection: CONNECTION, schemas: z.array(z.string()).optional() }, async (input) => answer(await client.post(DATABASE_RELATIONS_PATH, input))),
|
|
31
|
+
defineTool(DATABASE_DESCRIBE_TOOL_NAME, DESCRIBE_DESCRIPTION, { connection: CONNECTION, relations: z.array(RELATION).min(1) }, async (input) => answer(await client.post(DATABASE_DESCRIBE_PATH, input))),
|
|
32
|
+
defineTool(DATABASE_PROFILE_TOOL_NAME, PROFILE_DESCRIPTION, {
|
|
33
|
+
connection: CONNECTION,
|
|
34
|
+
relation: RELATION.optional(),
|
|
35
|
+
columns: z.array(z.string()).optional(),
|
|
36
|
+
references: z
|
|
37
|
+
.array(z.object({ from: COLUMN_REFERENCE, to: COLUMN_REFERENCE }))
|
|
38
|
+
.optional(),
|
|
39
|
+
}, async (input) => answer(await client.post(DATABASE_PROFILE_PATH, input))),
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/mcp/tools/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { QuestionAnswers, QuestionRequest } from "../agent/question-bus.js";
|
|
2
2
|
import type { BuilderClient } from "../builder/builder-client.js";
|
|
3
|
+
import type { DatabaseClient } from "../database/database-client.js";
|
|
3
4
|
import type { BuilderGate } from "./tools/builder-gate.js";
|
|
4
5
|
import type { MCP_SERVER_TYPE_SDK } from "../constants/mcp.js";
|
|
5
6
|
import type { LogsClient } from "../logs/logs-client.js";
|
|
@@ -18,6 +19,7 @@ export interface AiMcpServerStaticDeps {
|
|
|
18
19
|
logsClient: LogsClient;
|
|
19
20
|
builderClient: BuilderClient;
|
|
20
21
|
builderEnabled: boolean;
|
|
22
|
+
databaseClient: DatabaseClient;
|
|
21
23
|
navigationCompleter: NavigationCompleter;
|
|
22
24
|
}
|
|
23
25
|
export interface AiMcpServerDeps extends AiMcpServerStaticDeps {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { PRE_TOOL_USE_HOOK_EVENT } from "../../constants/claude.js";
|
|
2
2
|
import { SDK_PERMISSION_BEHAVIOR } from "../../constants/permissions.js";
|
|
3
3
|
import { SAFE_MODE_DENIED_MESSAGE, SAFE_MODE_DISALLOWED_TOOLS, } from "../../constants/settings.js";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { isAbsolute, join, relative } from "node:path";
|
|
4
6
|
import { isMutatingTool } from "../../agent/tool-kinds.js";
|
|
5
7
|
const SAFE_MODE_BLOCKED_TOOLS = new Set(SAFE_MODE_DISALLOWED_TOOLS);
|
|
6
8
|
const SAFE_MODE_DENIAL = {
|
|
@@ -11,10 +13,18 @@ const SAFE_MODE_DENIAL = {
|
|
|
11
13
|
},
|
|
12
14
|
};
|
|
13
15
|
const NO_DECISION = { continue: true };
|
|
16
|
+
const PLANS_DIRECTORY = join(homedir(), ".claude", "plans");
|
|
17
|
+
function isPlanFile(input) {
|
|
18
|
+
const filePath = (input.tool_input ?? {}).file_path;
|
|
19
|
+
if (typeof filePath !== "string" || !isAbsolute(filePath))
|
|
20
|
+
return false;
|
|
21
|
+
const inside = relative(PLANS_DIRECTORY, filePath);
|
|
22
|
+
return inside.length > 0 && !inside.startsWith("..") && !isAbsolute(inside);
|
|
23
|
+
}
|
|
14
24
|
function isBlockedTool(input) {
|
|
15
25
|
if (input.hook_event_name !== PRE_TOOL_USE_HOOK_EVENT)
|
|
16
26
|
return false;
|
|
17
|
-
return SAFE_MODE_BLOCKED_TOOLS.has(input.tool_name);
|
|
27
|
+
return SAFE_MODE_BLOCKED_TOOLS.has(input.tool_name) && !isPlanFile(input);
|
|
18
28
|
}
|
|
19
29
|
export function buildSafeModeHooks(deps) {
|
|
20
30
|
const preToolUse = async (input) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-mode.js","sourceRoot":"","sources":["../../../src/providers/claude/safe-mode.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAEpE,MAAM,gBAAgB,GAAuB;IAC3C,kBAAkB,EAAE;QAClB,aAAa,EAAE,uBAAuB;QACtC,kBAAkB,EAAE,uBAAuB,CAAC,IAAI;QAChD,wBAAwB,EAAE,wBAAwB;KACnD;CACF,CAAC;AAEF,MAAM,WAAW,GAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"safe-mode.js","sourceRoot":"","sources":["../../../src/providers/claude/safe-mode.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAEpE,MAAM,gBAAgB,GAAuB;IAC3C,kBAAkB,EAAE;QAClB,aAAa,EAAE,uBAAuB;QACtC,kBAAkB,EAAE,uBAAuB,CAAC,IAAI;QAChD,wBAAwB,EAAE,wBAAwB;KACnD;CACF,CAAC;AAEF,MAAM,WAAW,GAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAG3D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAW5D,SAAS,UAAU,CAAC,KAAgB;IAClC,MAAM,QAAQ,GAAG,CAAE,KAAsB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC;IACtE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB;IACrC,IAAI,KAAK,CAAC,eAAe,KAAK,uBAAuB;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAwBD,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,MAAM,UAAU,GAAiB,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/C,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE,GAC1D,KAAwB,CAAC;QAC3B,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,IAAI,cAAc,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IACF,OAAO,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ChatGptAccountStatus {
|
|
2
|
+
isSignedIn: boolean;
|
|
3
|
+
email?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function readAccountStatus(): ChatGptAccountStatus;
|
|
6
|
+
export declare function getAccessToken(): Promise<string>;
|
|
7
|
+
export interface SignOutResult {
|
|
8
|
+
isRevoked: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function signOut(): Promise<SignOutResult>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { CHATGPT_LOG_PREFIX, CHATGPT_NOT_SIGNED_IN_MESSAGE, CHATGPT_REFRESH_MARGIN_MS, CHATGPT_SIGNED_OUT_MESSAGE, } from "../../../constants/chatgpt.js";
|
|
2
|
+
import { withAuthLock } from "./lock.js";
|
|
3
|
+
import { ChatGptOAuthError, refreshTokens, revokeRefreshToken, } from "./oauth.js";
|
|
4
|
+
import { isSignedIn, readAuthRecord, writeAuthRecord, } from "./store.js";
|
|
5
|
+
export function readAccountStatus() {
|
|
6
|
+
const record = readAuthRecord();
|
|
7
|
+
if (!isSignedIn(record))
|
|
8
|
+
return { isSignedIn: false };
|
|
9
|
+
return { isSignedIn: true, email: record?.email };
|
|
10
|
+
}
|
|
11
|
+
function isFresh(tokens) {
|
|
12
|
+
return tokens.expiresAt - Date.now() > CHATGPT_REFRESH_MARGIN_MS;
|
|
13
|
+
}
|
|
14
|
+
function withoutTokens(record) {
|
|
15
|
+
const { tokens: _cleared, ...rest } = record;
|
|
16
|
+
return rest;
|
|
17
|
+
}
|
|
18
|
+
async function refreshLocked() {
|
|
19
|
+
const record = readAuthRecord();
|
|
20
|
+
if (record?.tokens === undefined || record.clientId === undefined) {
|
|
21
|
+
throw new Error(CHATGPT_NOT_SIGNED_IN_MESSAGE);
|
|
22
|
+
}
|
|
23
|
+
if (isFresh(record.tokens))
|
|
24
|
+
return record.tokens.accessToken;
|
|
25
|
+
try {
|
|
26
|
+
const tokens = await refreshTokens(record.clientId, record.tokens);
|
|
27
|
+
await writeAuthRecord({ ...record, tokens });
|
|
28
|
+
return tokens.accessToken;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (!(error instanceof ChatGptOAuthError) || !error.isTerminal)
|
|
32
|
+
throw error;
|
|
33
|
+
console.warn(`${CHATGPT_LOG_PREFIX} sign-in dropped: ${error.message}`);
|
|
34
|
+
await writeAuthRecord(withoutTokens(record));
|
|
35
|
+
throw new Error(CHATGPT_SIGNED_OUT_MESSAGE);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
let refreshing = null;
|
|
39
|
+
export async function getAccessToken() {
|
|
40
|
+
const record = readAuthRecord();
|
|
41
|
+
if (record?.tokens === undefined || !isSignedIn(record)) {
|
|
42
|
+
throw new Error(CHATGPT_NOT_SIGNED_IN_MESSAGE);
|
|
43
|
+
}
|
|
44
|
+
if (isFresh(record.tokens))
|
|
45
|
+
return record.tokens.accessToken;
|
|
46
|
+
refreshing ??= withAuthLock(refreshLocked).finally(() => {
|
|
47
|
+
refreshing = null;
|
|
48
|
+
});
|
|
49
|
+
return refreshing;
|
|
50
|
+
}
|
|
51
|
+
export function signOut() {
|
|
52
|
+
return withAuthLock(async () => {
|
|
53
|
+
const record = readAuthRecord();
|
|
54
|
+
if (record?.tokens === undefined)
|
|
55
|
+
return { isRevoked: true };
|
|
56
|
+
const isRevoked = record.clientId === undefined
|
|
57
|
+
? false
|
|
58
|
+
: await revokeRefreshToken(record.clientId, record.tokens.refreshToken);
|
|
59
|
+
await writeAuthRecord(withoutTokens(record));
|
|
60
|
+
return { isRevoked };
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../../src/providers/codex/chatgpt/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { timingSafeEqual } from "node:crypto";
|
|
2
|
+
import { CHATGPT_ACCESS_TOKEN_PATH, CHATGPT_CALLBACK_PATH, } from "../../../constants/chatgpt.js";
|
|
3
|
+
import { CONTENT_TYPE, HTTP_STATUS } from "../../../constants/http.js";
|
|
4
|
+
import { sendResponse } from "../../../server/http-io.js";
|
|
5
|
+
import { getAccessToken } from "./credentials.js";
|
|
6
|
+
import { finishLogin } from "./login.js";
|
|
7
|
+
import { randomUrlSafe } from "./oauth.js";
|
|
8
|
+
const BEARER_PREFIX = "Bearer ";
|
|
9
|
+
export const ACCESS_TOKEN_SECRET = randomUrlSafe();
|
|
10
|
+
function escapeHtml(text) {
|
|
11
|
+
return text
|
|
12
|
+
.replaceAll("&", "&")
|
|
13
|
+
.replaceAll("<", "<")
|
|
14
|
+
.replaceAll(">", ">")
|
|
15
|
+
.replaceAll('"', """);
|
|
16
|
+
}
|
|
17
|
+
function renderPage(title, message) {
|
|
18
|
+
return [
|
|
19
|
+
"<!doctype html>",
|
|
20
|
+
'<html lang="en"><head><meta charset="utf-8">',
|
|
21
|
+
`<title>${escapeHtml(title)}</title>`,
|
|
22
|
+
'<meta name="viewport" content="width=device-width, initial-scale=1">',
|
|
23
|
+
"<style>body{font-family:system-ui,sans-serif;max-width:32rem;margin:15vh auto;padding:0 1.5rem;color:#18181b}h1{font-size:1.25rem}p{line-height:1.5;color:#52525b}</style>",
|
|
24
|
+
`</head><body><h1>${escapeHtml(title)}</h1><p>${escapeHtml(message)}</p></body></html>`,
|
|
25
|
+
].join("");
|
|
26
|
+
}
|
|
27
|
+
function sendLoginPage(res, response) {
|
|
28
|
+
sendResponse(res, response.status, CONTENT_TYPE.HTML, renderPage(response.title, response.message));
|
|
29
|
+
}
|
|
30
|
+
function hasTokenSecret(req) {
|
|
31
|
+
const authorization = req.headers.authorization;
|
|
32
|
+
if (!authorization?.startsWith(BEARER_PREFIX))
|
|
33
|
+
return false;
|
|
34
|
+
const actual = Buffer.from(authorization.slice(BEARER_PREFIX.length));
|
|
35
|
+
const expected = Buffer.from(ACCESS_TOKEN_SECRET);
|
|
36
|
+
return actual.length === expected.length && timingSafeEqual(actual, expected);
|
|
37
|
+
}
|
|
38
|
+
async function sendAccessToken(req, res) {
|
|
39
|
+
if (!hasTokenSecret(req)) {
|
|
40
|
+
sendResponse(res, HTTP_STATUS.UNAUTHORIZED, CONTENT_TYPE.TEXT, "");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const token = await getAccessToken();
|
|
45
|
+
sendResponse(res, HTTP_STATUS.OK, CONTENT_TYPE.TEXT, token);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
49
|
+
sendResponse(res, HTTP_STATUS.UNAVAILABLE, CONTENT_TYPE.TEXT, reason);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export async function handleChatGptRequest(req, res) {
|
|
53
|
+
if (req.method !== "GET")
|
|
54
|
+
return false;
|
|
55
|
+
const url = new URL(req.url ?? "/", "http://localhost");
|
|
56
|
+
const routes = {
|
|
57
|
+
[CHATGPT_CALLBACK_PATH]: async () => sendLoginPage(res, await finishLogin(url.searchParams)),
|
|
58
|
+
[CHATGPT_ACCESS_TOKEN_PATH]: () => sendAccessToken(req, res),
|
|
59
|
+
};
|
|
60
|
+
const route = routes[url.pathname];
|
|
61
|
+
if (route === undefined)
|
|
62
|
+
return false;
|
|
63
|
+
await route();
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../../src/providers/codex/chatgpt/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function withAuthLock<T>(task: () => Promise<T>): Promise<T>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { mkdir, rm, stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { CHATGPT_CONFIG_DIR_MODE, CHATGPT_LOCK_DIR_NAME, CHATGPT_LOCK_POLL_MS, CHATGPT_LOCK_STALE_MS, CHATGPT_LOCK_TIMEOUT_MS, } from "../../../constants/chatgpt.js";
|
|
4
|
+
import { chatGptConfigDir } from "./store.js";
|
|
5
|
+
function lockPath() {
|
|
6
|
+
return path.join(chatGptConfigDir(), CHATGPT_LOCK_DIR_NAME);
|
|
7
|
+
}
|
|
8
|
+
function wait(ms) {
|
|
9
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
10
|
+
}
|
|
11
|
+
function errorCode(error) {
|
|
12
|
+
return error?.code;
|
|
13
|
+
}
|
|
14
|
+
async function isStale(lock) {
|
|
15
|
+
try {
|
|
16
|
+
const info = await stat(lock);
|
|
17
|
+
return Date.now() - info.mtimeMs > CHATGPT_LOCK_STALE_MS;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function acquire(lock) {
|
|
24
|
+
const deadline = Date.now() + CHATGPT_LOCK_TIMEOUT_MS;
|
|
25
|
+
await mkdir(path.dirname(lock), {
|
|
26
|
+
recursive: true,
|
|
27
|
+
mode: CHATGPT_CONFIG_DIR_MODE,
|
|
28
|
+
});
|
|
29
|
+
for (;;) {
|
|
30
|
+
try {
|
|
31
|
+
await mkdir(lock);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (errorCode(error) !== "EEXIST")
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
if (await isStale(lock)) {
|
|
39
|
+
await rm(lock, { recursive: true, force: true });
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (Date.now() >= deadline) {
|
|
43
|
+
throw new Error(`timed out waiting for ${lock}`);
|
|
44
|
+
}
|
|
45
|
+
await wait(CHATGPT_LOCK_POLL_MS);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export async function withAuthLock(task) {
|
|
49
|
+
const lock = lockPath();
|
|
50
|
+
await acquire(lock);
|
|
51
|
+
try {
|
|
52
|
+
return await task();
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await rm(lock, { recursive: true, force: true });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../src/providers/codex/chatgpt/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,qBAAqB,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,IAAI,CAAC,EAAU;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAQ,KAA2C,EAAE,IAAI,CAAC;AAC5D,CAAC;AAID,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC;IACtD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,uBAAuB;KAC9B,CAAC,CAAC;IACH,SAAS,CAAC;QACR,IAAI,CAAC;YAEH,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACjD,CAAC;QACD,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,IAAsB;IAC1D,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface LoginResponse {
|
|
2
|
+
status: number;
|
|
3
|
+
title: string;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function createLoginUrl(port: number): Promise<string>;
|
|
7
|
+
export declare function finishLogin(query: URLSearchParams): Promise<LoginResponse>;
|
|
8
|
+
export declare function finishPastedLogin(pasted: string): Promise<LoginResponse>;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { CHATGPT_CALLBACK_PATH, CHATGPT_DYNAMIC_CLIENT_ID, CHATGPT_LOG_PREFIX, CHATGPT_LOGIN_TTL_MS, CHATGPT_MAX_PENDING_ATTEMPTS, CHATGPT_PLAN_SCOPE, } from "../../../constants/chatgpt.js";
|
|
2
|
+
import { HTTP_STATUS } from "../../../constants/http.js";
|
|
3
|
+
import { LOOPBACK_HOST } from "../../../constants/ports.js";
|
|
4
|
+
import { withAuthLock } from "./lock.js";
|
|
5
|
+
import { buildAuthorizeUrl, exchangeCode, randomUrlSafe, validateIdToken, } from "./oauth.js";
|
|
6
|
+
import { readAuthRecord, readOrCreateAuthRecord, writeAuthRecord, } from "./store.js";
|
|
7
|
+
const attempts = new Map();
|
|
8
|
+
function sweepExpired() {
|
|
9
|
+
const now = Date.now();
|
|
10
|
+
for (const [state, attempt] of attempts) {
|
|
11
|
+
if (attempt.expiresAt <= now)
|
|
12
|
+
attempts.delete(state);
|
|
13
|
+
}
|
|
14
|
+
while (attempts.size > CHATGPT_MAX_PENDING_ATTEMPTS) {
|
|
15
|
+
const oldest = attempts.keys().next();
|
|
16
|
+
if (oldest.done === true)
|
|
17
|
+
return;
|
|
18
|
+
attempts.delete(oldest.value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function page(status, title, message) {
|
|
22
|
+
return { status, title, message };
|
|
23
|
+
}
|
|
24
|
+
const EXPIRED_LINK = page(HTTP_STATUS.BAD_REQUEST, "This sign-in link has expired", "Go back to Assistant › Settings in the dashboard and press “Sign in with ChatGPT” again.");
|
|
25
|
+
async function ensureRecord() {
|
|
26
|
+
const existing = readAuthRecord();
|
|
27
|
+
if (existing !== undefined)
|
|
28
|
+
return existing;
|
|
29
|
+
const created = readOrCreateAuthRecord();
|
|
30
|
+
await writeAuthRecord(created);
|
|
31
|
+
return created;
|
|
32
|
+
}
|
|
33
|
+
export async function createLoginUrl(port) {
|
|
34
|
+
sweepExpired();
|
|
35
|
+
const record = await withAuthLock(ensureRecord);
|
|
36
|
+
const state = randomUrlSafe();
|
|
37
|
+
const attempt = {
|
|
38
|
+
clientId: record.clientId,
|
|
39
|
+
hostId: record.hostId,
|
|
40
|
+
redirectUri: `http://${LOOPBACK_HOST}:${port}${CHATGPT_CALLBACK_PATH}`,
|
|
41
|
+
nonce: randomUrlSafe(),
|
|
42
|
+
codeVerifier: randomUrlSafe(),
|
|
43
|
+
expiresAt: Date.now() + CHATGPT_LOGIN_TTL_MS,
|
|
44
|
+
};
|
|
45
|
+
attempts.set(state, attempt);
|
|
46
|
+
return buildAuthorizeUrl({
|
|
47
|
+
...attempt,
|
|
48
|
+
state,
|
|
49
|
+
idTokenHint: record.clientId === undefined ? undefined : record.tokens?.idToken,
|
|
50
|
+
loginHint: record.clientId === undefined ? undefined : record.email,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function resolveClientId(attempt, returned) {
|
|
54
|
+
if (attempt.clientId === undefined) {
|
|
55
|
+
if (returned === null || returned === CHATGPT_DYNAMIC_CLIENT_ID)
|
|
56
|
+
return undefined;
|
|
57
|
+
return returned;
|
|
58
|
+
}
|
|
59
|
+
if (returned !== null && returned !== attempt.clientId)
|
|
60
|
+
return undefined;
|
|
61
|
+
return attempt.clientId;
|
|
62
|
+
}
|
|
63
|
+
async function completeLogin(attempt, clientId, code) {
|
|
64
|
+
const tokens = await exchangeCode({
|
|
65
|
+
clientId,
|
|
66
|
+
code,
|
|
67
|
+
codeVerifier: attempt.codeVerifier,
|
|
68
|
+
redirectUri: attempt.redirectUri,
|
|
69
|
+
});
|
|
70
|
+
if (!tokens.scopes.includes(CHATGPT_PLAN_SCOPE)) {
|
|
71
|
+
return page(HTTP_STATUS.FORBIDDEN, "ChatGPT plan usage was not granted", "Codex runs on your ChatGPT plan. Sign in again and allow plan usage, or check that your plan includes it.");
|
|
72
|
+
}
|
|
73
|
+
const claims = await validateIdToken(tokens.idToken, {
|
|
74
|
+
clientId,
|
|
75
|
+
nonce: attempt.nonce,
|
|
76
|
+
});
|
|
77
|
+
return withAuthLock(async () => {
|
|
78
|
+
const record = readOrCreateAuthRecord();
|
|
79
|
+
const isOtherAccount = record.subject !== undefined &&
|
|
80
|
+
record.clientId === clientId &&
|
|
81
|
+
record.subject !== claims.sub;
|
|
82
|
+
if (isOtherAccount) {
|
|
83
|
+
await writeAuthRecord({ hostId: record.hostId });
|
|
84
|
+
return page(HTTP_STATUS.CONFLICT, "A different ChatGPT account", "This machine was registered with another ChatGPT account. Press “Sign in with ChatGPT” again to register this one.");
|
|
85
|
+
}
|
|
86
|
+
await writeAuthRecord({
|
|
87
|
+
hostId: record.hostId,
|
|
88
|
+
clientId,
|
|
89
|
+
subject: claims.sub,
|
|
90
|
+
email: claims.email,
|
|
91
|
+
tokens,
|
|
92
|
+
});
|
|
93
|
+
const who = claims.email === undefined ? "" : ` as ${claims.email}`;
|
|
94
|
+
return page(HTTP_STATUS.OK, "Signed in with ChatGPT", `Codex now runs on your ChatGPT plan${who}. You can close this tab and go back to the dashboard.`);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
export async function finishLogin(query) {
|
|
98
|
+
sweepExpired();
|
|
99
|
+
const state = query.get("state");
|
|
100
|
+
const attempt = state === null ? undefined : attempts.get(state);
|
|
101
|
+
if (state === null || attempt === undefined)
|
|
102
|
+
return EXPIRED_LINK;
|
|
103
|
+
attempts.delete(state);
|
|
104
|
+
const error = query.get("error");
|
|
105
|
+
if (error !== null) {
|
|
106
|
+
return page(HTTP_STATUS.BAD_REQUEST, "Sign-in cancelled", error === "access_denied"
|
|
107
|
+
? "Nothing was changed. Codex stays signed out."
|
|
108
|
+
: `OpenAI answered “${error}”. Nothing was changed.`);
|
|
109
|
+
}
|
|
110
|
+
const code = query.get("code");
|
|
111
|
+
const clientId = resolveClientId(attempt, query.get("client_id"));
|
|
112
|
+
if (code === null || clientId === undefined) {
|
|
113
|
+
return page(HTTP_STATUS.BAD_REQUEST, "Sign-in incomplete", "OpenAI did not finish the registration. Try again from Assistant › Settings.");
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
return await completeLogin(attempt, clientId, code);
|
|
117
|
+
}
|
|
118
|
+
catch (failure) {
|
|
119
|
+
const reason = failure instanceof Error ? failure.message : String(failure);
|
|
120
|
+
console.error(`${CHATGPT_LOG_PREFIX} sign-in failed: ${reason}`);
|
|
121
|
+
return page(HTTP_STATUS.BAD_GATEWAY, "Sign-in failed", `${reason}. Try again from Assistant › Settings.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const NOT_A_CALLBACK = page(HTTP_STATUS.BAD_REQUEST, "Not the sign-in address", "Paste the whole address of the page OpenAI sent you to, starting with http://127.0.0.1.");
|
|
125
|
+
export function finishPastedLogin(pasted) {
|
|
126
|
+
let url;
|
|
127
|
+
try {
|
|
128
|
+
url = new URL(pasted.trim());
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return Promise.resolve(NOT_A_CALLBACK);
|
|
132
|
+
}
|
|
133
|
+
if (url.pathname !== CHATGPT_CALLBACK_PATH) {
|
|
134
|
+
return Promise.resolve(NOT_A_CALLBACK);
|
|
135
|
+
}
|
|
136
|
+
return finishLogin(url.searchParams);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/providers/codex/chatgpt/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ChatGptTokens } from "./store.js";
|
|
2
|
+
export declare class ChatGptOAuthError extends Error {
|
|
3
|
+
readonly code: string;
|
|
4
|
+
readonly status: number;
|
|
5
|
+
constructor(code: string, status: number, description?: string);
|
|
6
|
+
get isTerminal(): boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function randomUrlSafe(): string;
|
|
9
|
+
export declare function pkceChallenge(verifier: string): string;
|
|
10
|
+
export interface AuthorizeParams {
|
|
11
|
+
clientId?: string;
|
|
12
|
+
hostId: string;
|
|
13
|
+
redirectUri: string;
|
|
14
|
+
state: string;
|
|
15
|
+
nonce: string;
|
|
16
|
+
codeVerifier: string;
|
|
17
|
+
idTokenHint?: string;
|
|
18
|
+
loginHint?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildAuthorizeUrl(params: AuthorizeParams): string;
|
|
21
|
+
export interface CodeExchange {
|
|
22
|
+
clientId: string;
|
|
23
|
+
code: string;
|
|
24
|
+
codeVerifier: string;
|
|
25
|
+
redirectUri: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function exchangeCode(exchange: CodeExchange): Promise<ChatGptTokens>;
|
|
28
|
+
export declare function refreshTokens(clientId: string, previous: ChatGptTokens): Promise<ChatGptTokens>;
|
|
29
|
+
export declare function revokeRefreshToken(clientId: string, refreshToken: string): Promise<boolean>;
|
|
30
|
+
export interface IdTokenClaims {
|
|
31
|
+
sub: string;
|
|
32
|
+
email?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface IdTokenExpectations {
|
|
35
|
+
clientId: string;
|
|
36
|
+
nonce: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function validateIdToken(idToken: string, expected: IdTokenExpectations): Promise<IdTokenClaims>;
|