@iam-brain/opencode-codex-auth 0.3.2 → 1.1.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 +12 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts-tools.d.ts.map +1 -1
- package/dist/lib/accounts-tools.js +88 -4
- package/dist/lib/accounts-tools.js.map +1 -1
- package/dist/lib/auth-refresh.d.ts +2 -0
- package/dist/lib/auth-refresh.d.ts.map +1 -0
- package/dist/lib/auth-refresh.js +2 -0
- package/dist/lib/auth-refresh.js.map +1 -0
- package/dist/lib/cache-io.d.ts +24 -0
- package/dist/lib/cache-io.d.ts.map +1 -0
- package/dist/lib/cache-io.js +95 -0
- package/dist/lib/cache-io.js.map +1 -0
- package/dist/lib/cache-lock.d.ts +7 -0
- package/dist/lib/cache-lock.d.ts.map +1 -0
- package/dist/lib/cache-lock.js +37 -0
- package/dist/lib/cache-lock.js.map +1 -0
- package/dist/lib/claims.d.ts.map +1 -1
- package/dist/lib/claims.js +4 -1
- package/dist/lib/claims.js.map +1 -1
- package/dist/lib/codex-cache-layout.d.ts +15 -0
- package/dist/lib/codex-cache-layout.d.ts.map +1 -0
- package/dist/lib/codex-cache-layout.js +52 -0
- package/dist/lib/codex-cache-layout.js.map +1 -0
- package/dist/lib/codex-native/acquire-auth.d.ts.map +1 -1
- package/dist/lib/codex-native/acquire-auth.js +61 -10
- package/dist/lib/codex-native/acquire-auth.js.map +1 -1
- package/dist/lib/codex-native/auth-menu-flow.d.ts.map +1 -1
- package/dist/lib/codex-native/auth-menu-flow.js +154 -42
- package/dist/lib/codex-native/auth-menu-flow.js.map +1 -1
- package/dist/lib/codex-native/auth-menu-quotas.d.ts.map +1 -1
- package/dist/lib/codex-native/auth-menu-quotas.js +158 -56
- package/dist/lib/codex-native/auth-menu-quotas.js.map +1 -1
- package/dist/lib/codex-native/catalog-auth.d.ts.map +1 -1
- package/dist/lib/codex-native/catalog-auth.js +4 -1
- package/dist/lib/codex-native/catalog-auth.js.map +1 -1
- package/dist/lib/codex-native/chat-hooks.d.ts +9 -0
- package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -1
- package/dist/lib/codex-native/chat-hooks.js +42 -2
- package/dist/lib/codex-native/chat-hooks.js.map +1 -1
- package/dist/lib/codex-native/client-identity.d.ts.map +1 -1
- package/dist/lib/codex-native/client-identity.js +55 -40
- package/dist/lib/codex-native/client-identity.js.map +1 -1
- package/dist/lib/codex-native/collaboration.d.ts +28 -0
- package/dist/lib/codex-native/collaboration.d.ts.map +1 -0
- package/dist/lib/codex-native/collaboration.js +332 -0
- package/dist/lib/codex-native/collaboration.js.map +1 -0
- package/dist/lib/codex-native/oauth-auth-methods.d.ts.map +1 -1
- package/dist/lib/codex-native/oauth-auth-methods.js +14 -3
- package/dist/lib/codex-native/oauth-auth-methods.js.map +1 -1
- package/dist/lib/codex-native/oauth-server.d.ts.map +1 -1
- package/dist/lib/codex-native/oauth-server.js +34 -6
- package/dist/lib/codex-native/oauth-server.js.map +1 -1
- package/dist/lib/codex-native/oauth-utils.d.ts +3 -3
- package/dist/lib/codex-native/oauth-utils.d.ts.map +1 -1
- package/dist/lib/codex-native/oauth-utils.js +6 -9
- package/dist/lib/codex-native/oauth-utils.js.map +1 -1
- package/dist/lib/codex-native/openai-loader-fetch.d.ts +4 -1
- package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -1
- package/dist/lib/codex-native/openai-loader-fetch.js +157 -11
- package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -1
- package/dist/lib/codex-native/rate-limit-snapshots.d.ts.map +1 -1
- package/dist/lib/codex-native/rate-limit-snapshots.js +5 -1
- package/dist/lib/codex-native/rate-limit-snapshots.js.map +1 -1
- package/dist/lib/codex-native/request-transform-pipeline.d.ts +1 -0
- package/dist/lib/codex-native/request-transform-pipeline.d.ts.map +1 -1
- package/dist/lib/codex-native/request-transform-pipeline.js +2 -1
- package/dist/lib/codex-native/request-transform-pipeline.js.map +1 -1
- package/dist/lib/codex-native/request-transform.d.ts +20 -0
- package/dist/lib/codex-native/request-transform.d.ts.map +1 -1
- package/dist/lib/codex-native/request-transform.js +251 -8
- package/dist/lib/codex-native/request-transform.js.map +1 -1
- package/dist/lib/codex-native/session-affinity-state.d.ts +2 -0
- package/dist/lib/codex-native/session-affinity-state.d.ts.map +1 -1
- package/dist/lib/codex-native/session-affinity-state.js +10 -3
- package/dist/lib/codex-native/session-affinity-state.js.map +1 -1
- package/dist/lib/codex-native/session-messages.d.ts.map +1 -1
- package/dist/lib/codex-native/session-messages.js +4 -1
- package/dist/lib/codex-native/session-messages.js.map +1 -1
- package/dist/lib/codex-native.d.ts +7 -1
- package/dist/lib/codex-native.d.ts.map +1 -1
- package/dist/lib/codex-native.js +30 -5
- package/dist/lib/codex-native.js.map +1 -1
- package/dist/lib/codex-prompts-cache.d.ts +17 -0
- package/dist/lib/codex-prompts-cache.d.ts.map +1 -0
- package/dist/lib/codex-prompts-cache.js +184 -0
- package/dist/lib/codex-prompts-cache.js.map +1 -0
- package/dist/lib/codex-status-storage.d.ts.map +1 -1
- package/dist/lib/codex-status-storage.js +8 -43
- package/dist/lib/codex-status-storage.js.map +1 -1
- package/dist/lib/codex-status-tool.js +1 -1
- package/dist/lib/codex-status-tool.js.map +1 -1
- package/dist/lib/codex-status-ui.d.ts.map +1 -1
- package/dist/lib/codex-status-ui.js +14 -8
- package/dist/lib/codex-status-ui.js.map +1 -1
- package/dist/lib/codex-status.d.ts.map +1 -1
- package/dist/lib/codex-status.js +28 -2
- package/dist/lib/codex-status.js.map +1 -1
- package/dist/lib/compat-sanitizer.d.ts.map +1 -1
- package/dist/lib/compat-sanitizer.js +5 -4
- package/dist/lib/compat-sanitizer.js.map +1 -1
- package/dist/lib/config-dir-gitignore.d.ts +3 -0
- package/dist/lib/config-dir-gitignore.d.ts.map +1 -0
- package/dist/lib/config-dir-gitignore.js +45 -0
- package/dist/lib/config-dir-gitignore.js.map +1 -0
- package/dist/lib/config.d.ts +19 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +252 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/fetch-orchestrator.d.ts +19 -0
- package/dist/lib/fetch-orchestrator.d.ts.map +1 -1
- package/dist/lib/fetch-orchestrator.js +33 -6
- package/dist/lib/fetch-orchestrator.js.map +1 -1
- package/dist/lib/installer-cli.d.ts.map +1 -1
- package/dist/lib/installer-cli.js +14 -1
- package/dist/lib/installer-cli.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +4 -1
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/model-catalog.d.ts.map +1 -1
- package/dist/lib/model-catalog.js +105 -168
- package/dist/lib/model-catalog.js.map +1 -1
- package/dist/lib/opencode-install.d.ts.map +1 -1
- package/dist/lib/opencode-install.js +30 -6
- package/dist/lib/opencode-install.js.map +1 -1
- package/dist/lib/orchestrator-agent.d.ts +31 -0
- package/dist/lib/orchestrator-agent.d.ts.map +1 -0
- package/dist/lib/orchestrator-agent.js +268 -0
- package/dist/lib/orchestrator-agent.js.map +1 -0
- package/dist/lib/paths.d.ts +1 -1
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +1 -1
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/persona-tool-cli.d.ts.map +1 -1
- package/dist/lib/persona-tool-cli.js +4 -1
- package/dist/lib/persona-tool-cli.js.map +1 -1
- package/dist/lib/personalities.d.ts.map +1 -1
- package/dist/lib/personalities.js +9 -2
- package/dist/lib/personalities.js.map +1 -1
- package/dist/lib/personality-command.d.ts.map +1 -1
- package/dist/lib/personality-command.js +4 -1
- package/dist/lib/personality-command.js.map +1 -1
- package/dist/lib/personality-create.d.ts.map +1 -1
- package/dist/lib/personality-create.js +5 -1
- package/dist/lib/personality-create.js.map +1 -1
- package/dist/lib/personality-skill.d.ts.map +1 -1
- package/dist/lib/personality-skill.js +4 -1
- package/dist/lib/personality-skill.js.map +1 -1
- package/dist/lib/prompt-cache-key.d.ts +7 -0
- package/dist/lib/prompt-cache-key.d.ts.map +1 -0
- package/dist/lib/prompt-cache-key.js +17 -0
- package/dist/lib/prompt-cache-key.js.map +1 -0
- package/dist/lib/quarantine.d.ts.map +1 -1
- package/dist/lib/quarantine.js +22 -5
- package/dist/lib/quarantine.js.map +1 -1
- package/dist/lib/quota-threshold-alerts.d.ts +31 -0
- package/dist/lib/quota-threshold-alerts.d.ts.map +1 -0
- package/dist/lib/quota-threshold-alerts.js +97 -0
- package/dist/lib/quota-threshold-alerts.js.map +1 -0
- package/dist/lib/refresh-queue.d.ts.map +1 -1
- package/dist/lib/refresh-queue.js +9 -2
- package/dist/lib/refresh-queue.js.map +1 -1
- package/dist/lib/remote-cache-fetch.d.ts +28 -0
- package/dist/lib/remote-cache-fetch.d.ts.map +1 -0
- package/dist/lib/remote-cache-fetch.js +67 -0
- package/dist/lib/remote-cache-fetch.js.map +1 -0
- package/dist/lib/request-snapshots.d.ts +1 -0
- package/dist/lib/request-snapshots.d.ts.map +1 -1
- package/dist/lib/request-snapshots.js +44 -16
- package/dist/lib/request-snapshots.js.map +1 -1
- package/dist/lib/rotation.d.ts +4 -0
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +54 -10
- package/dist/lib/rotation.js.map +1 -1
- package/dist/lib/session-affinity.d.ts.map +1 -1
- package/dist/lib/session-affinity.js +22 -36
- package/dist/lib/session-affinity.js.map +1 -1
- package/dist/lib/storage.d.ts +8 -5
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +50 -39
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/ui/tty/select.d.ts.map +1 -1
- package/dist/lib/ui/tty/select.js +8 -2
- package/dist/lib/ui/tty/select.js.map +1 -1
- package/dist/lib/util.d.ts +2 -0
- package/dist/lib/util.d.ts.map +1 -0
- package/dist/lib/util.js +4 -0
- package/dist/lib/util.js.map +1 -0
- package/package.json +6 -4
- package/schemas/codex-config.schema.json +17 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-affinity-state.js","sourceRoot":"","sources":["../../../lib/codex-native/session-affinity-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAA+B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"session-affinity-state.js","sourceRoot":"","sources":["../../../lib/codex-native/session-affinity-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-messages.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/session-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAGtF;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"session-messages.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/session-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAGtF;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,EAAE,CAAC,CAapB;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAW9C"}
|
|
@@ -19,7 +19,10 @@ export async function readSessionMessageRows(client, sessionID) {
|
|
|
19
19
|
const response = await sessionApi.messages({ sessionID, limit: 100 });
|
|
20
20
|
return isRecord(response) && Array.isArray(response.data) ? response.data : [];
|
|
21
21
|
}
|
|
22
|
-
catch {
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof Error) {
|
|
24
|
+
// best-effort session inspection
|
|
25
|
+
}
|
|
23
26
|
return [];
|
|
24
27
|
}
|
|
25
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-messages.js","sourceRoot":"","sources":["../../../lib/codex-native/session-messages.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA6B;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3D,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAyC,EACzC,SAAiB;IAEjB,MAAM,UAAU,GAAG,MAAM,EAAE,OAAyE,CAAA;IACpG,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU;QAAE,OAAO,EAAE,CAAA;IAEvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACrE,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAChF,CAAC;IAAC,
|
|
1
|
+
{"version":3,"file":"session-messages.js","sourceRoot":"","sources":["../../../lib/codex-native/session-messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Hooks, PluginInput } from "@opencode-ai/plugin";
|
|
2
2
|
import type { Logger } from "./logger";
|
|
3
3
|
import type { OpenAIAuthMode, RotationStrategy } from "./types";
|
|
4
|
-
import type { BehaviorSettings, CodexSpoofMode, PersonalityOption, PluginRuntimeMode } from "./config";
|
|
4
|
+
import type { BehaviorSettings, CodexSpoofMode, PersonalityOption, PluginRuntimeMode, PromptCacheKeyStrategy } from "./config";
|
|
5
|
+
import type { CollaborationToolProfile } from "./codex-native/collaboration";
|
|
5
6
|
import { buildCodexUserAgent, refreshCodexClientVersionFromGitHub, resolveCodexClientVersion, resolveRequestUserAgent } from "./codex-native/client-identity";
|
|
6
7
|
import { buildAuthorizeUrl, buildOAuthErrorHtml, buildOAuthSuccessHtml, composeCodexSuccessRedirectUrl, generatePKCE } from "./codex-native/oauth-utils";
|
|
7
8
|
export { browserOpenInvocationFor } from "./codex-native/browser";
|
|
@@ -33,12 +34,17 @@ export type CodexAuthPluginOptions = {
|
|
|
33
34
|
quietMode?: boolean;
|
|
34
35
|
pidOffsetEnabled?: boolean;
|
|
35
36
|
rotationStrategy?: RotationStrategy;
|
|
37
|
+
promptCacheKeyStrategy?: PromptCacheKeyStrategy;
|
|
36
38
|
spoofMode?: CodexSpoofMode;
|
|
37
39
|
compatInputSanitizer?: boolean;
|
|
38
40
|
remapDeveloperMessagesToUser?: boolean;
|
|
39
41
|
codexCompactionOverride?: boolean;
|
|
40
42
|
headerSnapshots?: boolean;
|
|
43
|
+
headerSnapshotBodies?: boolean;
|
|
41
44
|
headerTransformDebug?: boolean;
|
|
45
|
+
collaborationProfileEnabled?: boolean;
|
|
46
|
+
orchestratorSubagentsEnabled?: boolean;
|
|
47
|
+
collaborationToolProfile?: CollaborationToolProfile;
|
|
42
48
|
};
|
|
43
49
|
export declare function CodexAuthPlugin(input: PluginInput, opts?: CodexAuthPluginOptions): Promise<Hooks>;
|
|
44
50
|
//# sourceMappingURL=codex-native.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-native.d.ts","sourceRoot":"","sources":["../../lib/codex-native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"codex-native.d.ts","sourceRoot":"","sources":["../../lib/codex-native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAI7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAM5E,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAE9B,YAAY,EAYb,MAAM,4BAA4B,CAAA;AAenC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AA6B7G,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrF;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAatB,CAAA;AAeD,iBAAS,mBAAmB,IAAI,OAAO,CAEtC;AAMD,iBAAS,eAAe,IAAI,IAAI,CAE/B;AAaD,iBAAS,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,cAAc,CAE1E;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;CACpD,CAAA;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,KAAK,CAAC,CAmP3G"}
|
package/dist/lib/codex-native.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import process from "node:process";
|
|
1
2
|
import { loadAuthStorage, setAccountCooldown } from "./storage";
|
|
2
3
|
import { formatToastMessage } from "./toast";
|
|
3
4
|
import { createRequestSnapshots } from "./request-snapshots";
|
|
@@ -18,6 +19,7 @@ export { browserOpenInvocationFor } from "./codex-native/browser";
|
|
|
18
19
|
export { upsertAccount } from "./codex-native/accounts";
|
|
19
20
|
export { extractAccountId, extractAccountIdFromClaims, refreshAccessToken } from "./codex-native/oauth-utils";
|
|
20
21
|
const INTERNAL_COLLABORATION_MODE_HEADER = "x-opencode-collaboration-mode-kind";
|
|
22
|
+
const INTERNAL_COLLABORATION_AGENT_HEADER = "x-opencode-collaboration-agent-kind";
|
|
21
23
|
const SESSION_AFFINITY_MISSING_GRACE_MS = 15 * 60 * 1000;
|
|
22
24
|
const STATIC_FALLBACK_MODELS = [
|
|
23
25
|
"gpt-5.1-codex-max",
|
|
@@ -99,7 +101,16 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
99
101
|
const authMode = modeForRuntimeMode(runtimeMode);
|
|
100
102
|
const remapDeveloperMessagesToUserEnabled = spoofMode === "codex" && opts.remapDeveloperMessagesToUser !== false;
|
|
101
103
|
const codexCompactionOverrideEnabled = opts.codexCompactionOverride !== undefined ? opts.codexCompactionOverride : runtimeMode === "codex";
|
|
102
|
-
|
|
104
|
+
const collaborationProfileEnabled = typeof opts.collaborationProfileEnabled === "boolean" ? opts.collaborationProfileEnabled : runtimeMode === "codex";
|
|
105
|
+
const orchestratorSubagentsEnabled = typeof opts.orchestratorSubagentsEnabled === "boolean"
|
|
106
|
+
? opts.orchestratorSubagentsEnabled
|
|
107
|
+
: collaborationProfileEnabled;
|
|
108
|
+
const collaborationToolProfile = opts.collaborationToolProfile === "codex" ? "codex" : "opencode";
|
|
109
|
+
void refreshCodexClientVersionFromGitHub(opts.log).catch((error) => {
|
|
110
|
+
if (error instanceof Error) {
|
|
111
|
+
// best-effort background refresh
|
|
112
|
+
}
|
|
113
|
+
});
|
|
103
114
|
const resolveCatalogHeaders = () => {
|
|
104
115
|
const originator = resolveCodexOriginator(spoofMode);
|
|
105
116
|
const codexClientVersion = resolveCodexClientVersion();
|
|
@@ -113,6 +124,7 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
113
124
|
};
|
|
114
125
|
const requestSnapshots = createRequestSnapshots({
|
|
115
126
|
enabled: opts.headerSnapshots === true || opts.headerTransformDebug === true,
|
|
127
|
+
captureBodies: opts.headerSnapshotBodies === true,
|
|
116
128
|
log: opts.log
|
|
117
129
|
});
|
|
118
130
|
let lastCatalogModels;
|
|
@@ -160,7 +172,10 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
160
172
|
const stored = await loadAuthStorage();
|
|
161
173
|
hasOAuth = stored.openai?.type === "oauth";
|
|
162
174
|
}
|
|
163
|
-
catch {
|
|
175
|
+
catch (error) {
|
|
176
|
+
if (error instanceof Error) {
|
|
177
|
+
// treat storage read issues as missing oauth
|
|
178
|
+
}
|
|
164
179
|
hasOAuth = false;
|
|
165
180
|
}
|
|
166
181
|
}
|
|
@@ -169,7 +184,8 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
169
184
|
const { orchestratorState, stickySessionState, hybridSessionState, persistSessionAffinityState } = await createSessionAffinityRuntimeState({
|
|
170
185
|
authMode,
|
|
171
186
|
env: process.env,
|
|
172
|
-
missingGraceMs: SESSION_AFFINITY_MISSING_GRACE_MS
|
|
187
|
+
missingGraceMs: SESSION_AFFINITY_MISSING_GRACE_MS,
|
|
188
|
+
log: opts.log
|
|
173
189
|
});
|
|
174
190
|
const syncCatalogFromAuth = await initializeCatalogSync({
|
|
175
191
|
authMode,
|
|
@@ -188,6 +204,8 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
188
204
|
const fetch = createOpenAIFetchHandler({
|
|
189
205
|
authMode,
|
|
190
206
|
spoofMode,
|
|
207
|
+
promptCacheKeyStrategy: opts.promptCacheKeyStrategy,
|
|
208
|
+
projectPath: typeof input.worktree === "string" && input.worktree.trim() ? input.worktree : process.cwd(),
|
|
191
209
|
remapDeveloperMessagesToUserEnabled,
|
|
192
210
|
behaviorSettings: opts.behaviorSettings,
|
|
193
211
|
personality: opts.personality,
|
|
@@ -198,6 +216,7 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
198
216
|
headerTransformDebug: opts.headerTransformDebug === true,
|
|
199
217
|
compatInputSanitizerEnabled: opts.compatInputSanitizer === true,
|
|
200
218
|
internalCollaborationModeHeader: INTERNAL_COLLABORATION_MODE_HEADER,
|
|
219
|
+
internalCollaborationAgentHeader: INTERNAL_COLLABORATION_AGENT_HEADER,
|
|
201
220
|
requestSnapshots,
|
|
202
221
|
sessionAffinityState: {
|
|
203
222
|
orchestratorState,
|
|
@@ -257,7 +276,10 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
257
276
|
lastCatalogModels,
|
|
258
277
|
behaviorSettings: opts.behaviorSettings,
|
|
259
278
|
fallbackPersonality: opts.personality,
|
|
260
|
-
spoofMode
|
|
279
|
+
spoofMode,
|
|
280
|
+
collaborationProfileEnabled,
|
|
281
|
+
orchestratorSubagentsEnabled,
|
|
282
|
+
collaborationToolProfile
|
|
261
283
|
});
|
|
262
284
|
},
|
|
263
285
|
"chat.headers": async (hookInput, output) => {
|
|
@@ -265,7 +287,10 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
265
287
|
hookInput,
|
|
266
288
|
output,
|
|
267
289
|
spoofMode,
|
|
268
|
-
internalCollaborationModeHeader: INTERNAL_COLLABORATION_MODE_HEADER
|
|
290
|
+
internalCollaborationModeHeader: INTERNAL_COLLABORATION_MODE_HEADER,
|
|
291
|
+
internalCollaborationAgentHeader: INTERNAL_COLLABORATION_AGENT_HEADER,
|
|
292
|
+
collaborationProfileEnabled,
|
|
293
|
+
orchestratorSubagentsEnabled
|
|
269
294
|
});
|
|
270
295
|
},
|
|
271
296
|
"experimental.session.compacting": async (hookInput, output) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-native.js","sourceRoot":"","sources":["../../lib/codex-native.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-native.js","sourceRoot":"","sources":["../../lib/codex-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { CODEX_PROMPTS_CACHE_FILE, CODEX_PROMPTS_CACHE_META_FILE } from "./codex-cache-layout";
|
|
2
|
+
export declare const CODEX_ORCHESTRATOR_PROMPT_URL = "https://raw.githubusercontent.com/openai/codex/4ab44e2c5cc54ed47e47a6729dfd8aa5a3dc2476/codex-rs/core/templates/agents/orchestrator.md";
|
|
3
|
+
export declare const CODEX_PLAN_PROMPT_URL = "https://raw.githubusercontent.com/openai/codex/4ab44e2c5cc54ed47e47a6729dfd8aa5a3dc2476/codex-rs/core/templates/collaboration_mode/plan.md";
|
|
4
|
+
type RefreshResult = {
|
|
5
|
+
orchestrator?: string;
|
|
6
|
+
plan?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function readCachedCodexPrompts(input?: {
|
|
9
|
+
cacheDir?: string;
|
|
10
|
+
}): Promise<RefreshResult>;
|
|
11
|
+
export declare function refreshCachedCodexPrompts(input?: {
|
|
12
|
+
cacheDir?: string;
|
|
13
|
+
now?: () => number;
|
|
14
|
+
fetchImpl?: typeof fetch;
|
|
15
|
+
forceRefresh?: boolean;
|
|
16
|
+
}): Promise<RefreshResult>;
|
|
17
|
+
//# sourceMappingURL=codex-prompts-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-prompts-cache.d.ts","sourceRoot":"","sources":["../../lib/codex-prompts-cache.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AAE9F,eAAO,MAAM,6BAA6B,2IACgG,CAAA;AAC1I,eAAO,MAAM,qBAAqB,+IAC4G,CAAA;AA0B9I,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAiFD,wBAAsB,sBAAsB,CAC1C,KAAK,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAA;CACb,GACL,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;CAClB,GACL,OAAO,CAAC,aAAa,CAAC,CAyGxB"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { fetchRemoteTextBatch } from "./remote-cache-fetch";
|
|
2
|
+
import { readJsonFileBestEffort, writeJsonFileBestEffort } from "./cache-io";
|
|
3
|
+
import { withLockedDirectory } from "./cache-lock";
|
|
4
|
+
import { codexPromptsCacheMetaPath, codexPromptsCachePath, resolveCodexCacheDir } from "./codex-cache-layout";
|
|
5
|
+
export { CODEX_PROMPTS_CACHE_FILE, CODEX_PROMPTS_CACHE_META_FILE } from "./codex-cache-layout";
|
|
6
|
+
export const CODEX_ORCHESTRATOR_PROMPT_URL = "https://raw.githubusercontent.com/openai/codex/4ab44e2c5cc54ed47e47a6729dfd8aa5a3dc2476/codex-rs/core/templates/agents/orchestrator.md";
|
|
7
|
+
export const CODEX_PLAN_PROMPT_URL = "https://raw.githubusercontent.com/openai/codex/4ab44e2c5cc54ed47e47a6729dfd8aa5a3dc2476/codex-rs/core/templates/collaboration_mode/plan.md";
|
|
8
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
9
|
+
const FETCH_TIMEOUT_MS = 5000;
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
function normalizePrompt(value) {
|
|
14
|
+
if (typeof value !== "string")
|
|
15
|
+
return undefined;
|
|
16
|
+
const trimmed = value.trim();
|
|
17
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
18
|
+
}
|
|
19
|
+
async function readPromptsCache(cacheDir) {
|
|
20
|
+
const parsed = await readJsonFileBestEffort(codexPromptsCachePath(cacheDir));
|
|
21
|
+
if (!isRecord(parsed))
|
|
22
|
+
return undefined;
|
|
23
|
+
const prompts = isRecord(parsed.prompts) ? parsed.prompts : undefined;
|
|
24
|
+
const orchestrator = normalizePrompt(prompts?.orchestrator);
|
|
25
|
+
const plan = normalizePrompt(prompts?.plan);
|
|
26
|
+
if (!orchestrator || !plan)
|
|
27
|
+
return undefined;
|
|
28
|
+
const fetchedAt = typeof parsed.fetchedAt === "number" && Number.isFinite(parsed.fetchedAt) ? parsed.fetchedAt : 0;
|
|
29
|
+
return {
|
|
30
|
+
fetchedAt,
|
|
31
|
+
source: "github",
|
|
32
|
+
prompts: {
|
|
33
|
+
orchestrator,
|
|
34
|
+
plan
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async function writePromptsCache(cacheDir, cache) {
|
|
39
|
+
await writeJsonFileBestEffort(codexPromptsCachePath(cacheDir), cache);
|
|
40
|
+
}
|
|
41
|
+
async function readPromptsCacheMeta(cacheDir) {
|
|
42
|
+
const parsed = await readJsonFileBestEffort(codexPromptsCacheMetaPath(cacheDir));
|
|
43
|
+
if (!isRecord(parsed))
|
|
44
|
+
return undefined;
|
|
45
|
+
const urls = isRecord(parsed.urls) ? parsed.urls : undefined;
|
|
46
|
+
const orchestrator = normalizePrompt(urls?.orchestrator);
|
|
47
|
+
const plan = normalizePrompt(urls?.plan);
|
|
48
|
+
if (!orchestrator || !plan)
|
|
49
|
+
return undefined;
|
|
50
|
+
const lastChecked = typeof parsed.lastChecked === "number" && Number.isFinite(parsed.lastChecked) ? parsed.lastChecked : 0;
|
|
51
|
+
const etagsRecord = isRecord(parsed.etags) ? parsed.etags : undefined;
|
|
52
|
+
const etags = etagsRecord
|
|
53
|
+
? {
|
|
54
|
+
orchestrator: normalizePrompt(etagsRecord.orchestrator),
|
|
55
|
+
plan: normalizePrompt(etagsRecord.plan)
|
|
56
|
+
}
|
|
57
|
+
: undefined;
|
|
58
|
+
return {
|
|
59
|
+
lastChecked,
|
|
60
|
+
urls: { orchestrator, plan },
|
|
61
|
+
etags
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async function writePromptsCacheMeta(cacheDir, meta) {
|
|
65
|
+
await writeJsonFileBestEffort(codexPromptsCacheMetaPath(cacheDir), meta);
|
|
66
|
+
}
|
|
67
|
+
const inFlightRefreshByCacheDir = new Map();
|
|
68
|
+
function resolvePrompt(result, existing) {
|
|
69
|
+
if (!result)
|
|
70
|
+
return undefined;
|
|
71
|
+
if (result.status === "ok") {
|
|
72
|
+
return normalizePrompt(result.text);
|
|
73
|
+
}
|
|
74
|
+
if (result.status === "not_modified") {
|
|
75
|
+
return existing;
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
function resolveEtag(result, existing) {
|
|
80
|
+
if (!result)
|
|
81
|
+
return existing;
|
|
82
|
+
if (result.status === "ok")
|
|
83
|
+
return result.etag ?? existing;
|
|
84
|
+
if (result.status === "not_modified")
|
|
85
|
+
return result.etag ?? existing;
|
|
86
|
+
return existing;
|
|
87
|
+
}
|
|
88
|
+
export async function readCachedCodexPrompts(input = {}) {
|
|
89
|
+
const cacheDir = resolveCodexCacheDir(input.cacheDir);
|
|
90
|
+
const cache = await readPromptsCache(cacheDir);
|
|
91
|
+
if (!cache)
|
|
92
|
+
return {};
|
|
93
|
+
return {
|
|
94
|
+
orchestrator: cache.prompts.orchestrator,
|
|
95
|
+
plan: cache.prompts.plan
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export async function refreshCachedCodexPrompts(input = {}) {
|
|
99
|
+
const cacheDir = resolveCodexCacheDir(input.cacheDir);
|
|
100
|
+
const now = (input.now ?? Date.now)();
|
|
101
|
+
const fetchImpl = input.fetchImpl ?? fetch;
|
|
102
|
+
const run = async () => withLockedDirectory(cacheDir, async () => {
|
|
103
|
+
const existingCache = await readPromptsCache(cacheDir);
|
|
104
|
+
const existingMeta = await readPromptsCacheMeta(cacheDir);
|
|
105
|
+
const cacheIsFresh = existingCache &&
|
|
106
|
+
existingMeta &&
|
|
107
|
+
existingMeta.urls.orchestrator === CODEX_ORCHESTRATOR_PROMPT_URL &&
|
|
108
|
+
existingMeta.urls.plan === CODEX_PLAN_PROMPT_URL &&
|
|
109
|
+
now - existingMeta.lastChecked < CACHE_TTL_MS;
|
|
110
|
+
if (cacheIsFresh && input.forceRefresh !== true) {
|
|
111
|
+
return {
|
|
112
|
+
orchestrator: existingCache.prompts.orchestrator,
|
|
113
|
+
plan: existingCache.prompts.plan
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const results = await fetchRemoteTextBatch({
|
|
117
|
+
requests: [
|
|
118
|
+
{
|
|
119
|
+
key: "orchestrator",
|
|
120
|
+
url: CODEX_ORCHESTRATOR_PROMPT_URL,
|
|
121
|
+
etag: existingMeta?.urls.orchestrator === CODEX_ORCHESTRATOR_PROMPT_URL
|
|
122
|
+
? existingMeta?.etags?.orchestrator
|
|
123
|
+
: undefined
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
key: "plan",
|
|
127
|
+
url: CODEX_PLAN_PROMPT_URL,
|
|
128
|
+
etag: existingMeta?.urls.plan === CODEX_PLAN_PROMPT_URL ? existingMeta?.etags?.plan : undefined
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}, {
|
|
132
|
+
fetchImpl,
|
|
133
|
+
timeoutMs: FETCH_TIMEOUT_MS
|
|
134
|
+
});
|
|
135
|
+
const orchestratorResult = results.find((result) => result.key === "orchestrator");
|
|
136
|
+
const planResult = results.find((result) => result.key === "plan");
|
|
137
|
+
const orchestrator = resolvePrompt(orchestratorResult, existingCache?.prompts.orchestrator);
|
|
138
|
+
const plan = resolvePrompt(planResult, existingCache?.prompts.plan);
|
|
139
|
+
if (!orchestrator || !plan) {
|
|
140
|
+
return {
|
|
141
|
+
orchestrator: existingCache?.prompts.orchestrator,
|
|
142
|
+
plan: existingCache?.prompts.plan
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const nextCache = {
|
|
146
|
+
fetchedAt: now,
|
|
147
|
+
source: "github",
|
|
148
|
+
prompts: {
|
|
149
|
+
orchestrator,
|
|
150
|
+
plan
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
await writePromptsCache(cacheDir, nextCache);
|
|
154
|
+
await writePromptsCacheMeta(cacheDir, {
|
|
155
|
+
lastChecked: now,
|
|
156
|
+
urls: {
|
|
157
|
+
orchestrator: CODEX_ORCHESTRATOR_PROMPT_URL,
|
|
158
|
+
plan: CODEX_PLAN_PROMPT_URL
|
|
159
|
+
},
|
|
160
|
+
etags: {
|
|
161
|
+
orchestrator: resolveEtag(orchestratorResult, existingMeta?.etags?.orchestrator),
|
|
162
|
+
plan: resolveEtag(planResult, existingMeta?.etags?.plan)
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return {
|
|
166
|
+
orchestrator,
|
|
167
|
+
plan
|
|
168
|
+
};
|
|
169
|
+
}, { staleMs: 10_000 });
|
|
170
|
+
if (input.forceRefresh === true) {
|
|
171
|
+
return run();
|
|
172
|
+
}
|
|
173
|
+
const existingInFlight = inFlightRefreshByCacheDir.get(cacheDir);
|
|
174
|
+
if (existingInFlight)
|
|
175
|
+
return existingInFlight;
|
|
176
|
+
const inFlight = run().finally(() => {
|
|
177
|
+
if (inFlightRefreshByCacheDir.get(cacheDir) === inFlight) {
|
|
178
|
+
inFlightRefreshByCacheDir.delete(cacheDir);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
inFlightRefreshByCacheDir.set(cacheDir, inFlight);
|
|
182
|
+
return inFlight;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=codex-prompts-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-prompts-cache.js","sourceRoot":"","sources":["../../lib/codex-prompts-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-status-storage.d.ts","sourceRoot":"","sources":["../../lib/codex-status-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-status-storage.d.ts","sourceRoot":"","sources":["../../lib/codex-status-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAIrD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;AAYhE,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE1E;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GACnE,OAAO,CAAC,WAAW,CAAC,CAOtB"}
|
|
@@ -1,58 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import path from "node:path";
|
|
1
|
+
import { withLockedFile } from "./cache-lock";
|
|
2
|
+
import { readJsonFileBestEffort, writeJsonFileAtomicBestEffort } from "./cache-io";
|
|
4
3
|
async function readJson(filePath) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
raw = await fs.readFile(filePath, "utf8");
|
|
8
|
-
}
|
|
9
|
-
catch (error) {
|
|
10
|
-
if (error && typeof error === "object" && "code" in error && error.code === "ENOENT") {
|
|
11
|
-
return {};
|
|
12
|
-
}
|
|
13
|
-
throw error;
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
return JSON.parse(raw);
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
4
|
+
const parsed = await readJsonFileBestEffort(filePath);
|
|
5
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
19
6
|
return {};
|
|
20
|
-
|
|
7
|
+
return parsed;
|
|
21
8
|
}
|
|
22
9
|
async function writeAtomic(filePath, data) {
|
|
23
|
-
await
|
|
24
|
-
const tmpPath = `${filePath}.tmp`;
|
|
25
|
-
const serialized = `${JSON.stringify(data, null, 2)}\n`;
|
|
26
|
-
await fs.writeFile(tmpPath, serialized, { mode: 0o600 });
|
|
27
|
-
await fs.rename(tmpPath, filePath);
|
|
28
|
-
try {
|
|
29
|
-
await fs.chmod(filePath, 0o600);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
// best-effort permissions
|
|
33
|
-
}
|
|
10
|
+
await writeJsonFileAtomicBestEffort(filePath, data);
|
|
34
11
|
}
|
|
35
12
|
export async function loadSnapshots(filePath) {
|
|
36
13
|
return readJson(filePath);
|
|
37
14
|
}
|
|
38
15
|
export async function saveSnapshots(filePath, update) {
|
|
39
|
-
|
|
40
|
-
const release = await lockfile.lock(filePath, {
|
|
41
|
-
realpath: false,
|
|
42
|
-
retries: {
|
|
43
|
-
retries: 20,
|
|
44
|
-
minTimeout: 10,
|
|
45
|
-
maxTimeout: 100
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
try {
|
|
16
|
+
return withLockedFile(filePath, async () => {
|
|
49
17
|
const cur = await loadSnapshots(filePath);
|
|
50
18
|
const next = await update(cur);
|
|
51
19
|
await writeAtomic(filePath, next);
|
|
52
20
|
return next;
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
await release();
|
|
56
|
-
}
|
|
21
|
+
});
|
|
57
22
|
}
|
|
58
23
|
//# sourceMappingURL=codex-status-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-status-storage.js","sourceRoot":"","sources":["../../lib/codex-status-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-status-storage.js","sourceRoot":"","sources":["../../lib/codex-status-storage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAA;AAIlF,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IACrD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAA;IAC7E,OAAO,MAAqB,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,IAAiB;IAC5D,MAAM,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,MAAoE;IAEpE,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACjC,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { shouldUseColor } from "./ui/tty/ansi";
|
|
|
8
8
|
* Includes usage snapshots if available on disk.
|
|
9
9
|
*/
|
|
10
10
|
export async function toolOutputForStatus(authPath = defaultAuthPath(), snapshotsPath = defaultSnapshotsPath(), options = {}) {
|
|
11
|
-
const authFile = await loadAuthStorage(authPath);
|
|
11
|
+
const authFile = await loadAuthStorage(authPath, { lockReads: false });
|
|
12
12
|
const snapshots = await loadSnapshots(snapshotsPath);
|
|
13
13
|
const style = options.style ?? "plain";
|
|
14
14
|
const useColor = options.useColor ?? (style === "menu" ? shouldUseColor() : false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-status-tool.js","sourceRoot":"","sources":["../../lib/codex-status-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,eAAe,EAA0B,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,eAAe,EAAE,EACpC,gBAAwB,oBAAoB,EAAE,EAC9C,UAA6D,EAAE;IAE/D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"codex-status-tool.js","sourceRoot":"","sources":["../../lib/codex-status-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,eAAe,EAA0B,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,eAAe,EAAE,EACpC,gBAAwB,oBAAoB,EAAE,EAC9C,UAA6D,EAAE;IAE/D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IACtE,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAA;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAA;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAElF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;QAClE,OAAO,+BAA+B,CAAA;IACxC,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpD,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CAAA;IAEH,MAAM,cAAc,GAAG,eAAe,CACpC;QACE,QAAQ,EAAE,eAAe;QACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,SAAS;KACV,EACD;QACE,KAAK;QACL,QAAQ;KACT,CACF,CAAA;IAED,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-status-ui.d.ts","sourceRoot":"","sources":["../../lib/codex-status-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAc,MAAM,SAAS,CAAA;AAMhF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"codex-status-ui.d.ts","sourceRoot":"","sources":["../../lib/codex-status-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAc,MAAM,SAAS,CAAA;AAMhF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAA;AA4HhD,wBAAgB,eAAe,CAC7B,KAAK,EAAE;IACL,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAA;CAC9D,EACD,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,MAAM,EAAE,CAqFV"}
|
|
@@ -54,8 +54,9 @@ function resolveQuotaRows(snap) {
|
|
|
54
54
|
function formatAccountLabel(input) {
|
|
55
55
|
const label = input.account.email ?? input.account.identityKey ?? "account";
|
|
56
56
|
const plan = input.account.plan ? ` (${input.account.plan})` : "";
|
|
57
|
+
const missingIdentityBadge = input.account.identityKey ? "" : " [identity-missing]";
|
|
57
58
|
if (!input.withBadges)
|
|
58
|
-
return `${label}${plan}`;
|
|
59
|
+
return `${label}${plan}${missingIdentityBadge}`;
|
|
59
60
|
const badges = [];
|
|
60
61
|
if (input.account.enabled === false) {
|
|
61
62
|
badges.push(colorize("[disabled]", ANSI.red, input.useColor));
|
|
@@ -66,6 +67,9 @@ function formatAccountLabel(input) {
|
|
|
66
67
|
if (input.account.identityKey && input.activeIdentityKey === input.account.identityKey) {
|
|
67
68
|
badges.push(colorize("[last active]", ANSI.cyan, input.useColor));
|
|
68
69
|
}
|
|
70
|
+
if (!input.account.identityKey) {
|
|
71
|
+
badges.push(colorize("[identity-missing]", ANSI.yellow, input.useColor));
|
|
72
|
+
}
|
|
69
73
|
const suffix = badges.length > 0 ? ` ${badges.join(" ")}` : "";
|
|
70
74
|
return `${label}${plan}${suffix}`;
|
|
71
75
|
}
|
|
@@ -81,6 +85,11 @@ function renderQuotaLine(input) {
|
|
|
81
85
|
function fallbackResetLabel(expired) {
|
|
82
86
|
return expired ? "Unknown, account expired" : "Unknown, no snapshot yet";
|
|
83
87
|
}
|
|
88
|
+
function fallbackResetLabelForAccount(input) {
|
|
89
|
+
if (input.identityMissing)
|
|
90
|
+
return "Unknown, missing identity metadata";
|
|
91
|
+
return fallbackResetLabel(input.expired);
|
|
92
|
+
}
|
|
84
93
|
function formatCredits(snap) {
|
|
85
94
|
const credits = snap?.credits;
|
|
86
95
|
if (!credits)
|
|
@@ -117,13 +126,10 @@ export function renderDashboard(input, options = {}) {
|
|
|
117
126
|
lines.push("No Codex accounts configured.");
|
|
118
127
|
return lines;
|
|
119
128
|
}
|
|
120
|
-
const renderableAccounts = input.accounts
|
|
129
|
+
const renderableAccounts = input.accounts;
|
|
121
130
|
for (let i = 0; i < renderableAccounts.length; i += 1) {
|
|
122
131
|
const acc = renderableAccounts[i];
|
|
123
|
-
const
|
|
124
|
-
if (!key)
|
|
125
|
-
continue;
|
|
126
|
-
const snap = input.snapshots[key];
|
|
132
|
+
const snap = acc.identityKey ? input.snapshots[acc.identityKey] : undefined;
|
|
127
133
|
const accountLabel = formatAccountLabel({
|
|
128
134
|
account: acc,
|
|
129
135
|
activeIdentityKey: input.activeIdentityKey,
|
|
@@ -144,7 +150,7 @@ export function renderDashboard(input, options = {}) {
|
|
|
144
150
|
leftPct: rows.fiveHour?.leftPct ?? 0,
|
|
145
151
|
resetText: rows.fiveHour
|
|
146
152
|
? (formatResetTimestamp(rows.fiveHour.resetsAt) ?? "Unknown")
|
|
147
|
-
:
|
|
153
|
+
: fallbackResetLabelForAccount({ expired, identityMissing: !acc.identityKey }),
|
|
148
154
|
useColor
|
|
149
155
|
}));
|
|
150
156
|
lines.push(renderQuotaLine({
|
|
@@ -153,7 +159,7 @@ export function renderDashboard(input, options = {}) {
|
|
|
153
159
|
leftPct: rows.weekly?.leftPct ?? 0,
|
|
154
160
|
resetText: rows.weekly
|
|
155
161
|
? (formatResetTimestamp(rows.weekly.resetsAt) ?? "Unknown")
|
|
156
|
-
:
|
|
162
|
+
: fallbackResetLabelForAccount({ expired, identityMissing: !acc.identityKey }),
|
|
157
163
|
useColor
|
|
158
164
|
}));
|
|
159
165
|
const creditsText = formatCredits(snap);
|