codex-multi-auth 2.1.13-beta.1 → 2.2.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/LICENSE +21 -21
- package/README.md +415 -415
- package/assets/codex-multi-auth-icon.svg +39 -39
- package/assets/readme-hero.svg +31 -31
- package/config/README.md +29 -29
- package/config/codex-legacy.json +571 -571
- package/config/codex-modern.json +258 -258
- package/config/minimal-codex.json +15 -15
- package/config/schema/config.schema.json +20 -20
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +30 -1
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/org-override.d.ts +19 -0
- package/dist/lib/auth/org-override.d.ts.map +1 -0
- package/dist/lib/auth/org-override.js +23 -0
- package/dist/lib/auth/org-override.js.map +1 -0
- package/dist/lib/circuit-breaker.d.ts +6 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -1
- package/dist/lib/circuit-breaker.js +8 -0
- package/dist/lib/circuit-breaker.js.map +1 -1
- package/dist/lib/codex-manager/account-manager-commands.d.ts +14 -0
- package/dist/lib/codex-manager/account-manager-commands.d.ts.map +1 -0
- package/dist/lib/codex-manager/account-manager-commands.js +43 -0
- package/dist/lib/codex-manager/account-manager-commands.js.map +1 -0
- package/dist/lib/codex-manager/commands/best.d.ts +1 -1
- package/dist/lib/codex-manager/commands/best.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/best.js +2 -1
- package/dist/lib/codex-manager/commands/best.js.map +1 -1
- package/dist/lib/codex-manager/commands/debug-bundle.d.ts +16 -0
- package/dist/lib/codex-manager/commands/debug-bundle.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/debug-bundle.js +80 -5
- package/dist/lib/codex-manager/commands/debug-bundle.js.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.d.ts +1 -1
- package/dist/lib/codex-manager/commands/forecast.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.js +2 -1
- package/dist/lib/codex-manager/commands/forecast.js.map +1 -1
- package/dist/lib/codex-manager/commands/report.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/report.js +2 -2
- package/dist/lib/codex-manager/commands/report.js.map +1 -1
- package/dist/lib/codex-manager/commands/status.d.ts +2 -0
- package/dist/lib/codex-manager/commands/status.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/status.js +84 -25
- package/dist/lib/codex-manager/commands/status.js.map +1 -1
- package/dist/lib/codex-manager/commands/switch.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/switch.js +7 -0
- package/dist/lib/codex-manager/commands/switch.js.map +1 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.js +13 -3
- package/dist/lib/codex-manager/experimental-settings-prompt.js.map +1 -1
- package/dist/lib/codex-manager/forecast-report-commands.d.ts.map +1 -1
- package/dist/lib/codex-manager/forecast-report-commands.js +3 -3
- package/dist/lib/codex-manager/forecast-report-commands.js.map +1 -1
- package/dist/lib/codex-manager/repair-commands.d.ts.map +1 -1
- package/dist/lib/codex-manager/repair-commands.js +11 -1
- package/dist/lib/codex-manager/repair-commands.js.map +1 -1
- package/dist/lib/codex-manager/settings-hub/experimental.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub/experimental.js +8 -0
- package/dist/lib/codex-manager/settings-hub/experimental.js.map +1 -1
- package/dist/lib/codex-manager.d.ts +3 -0
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +53 -65
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/config.d.ts +26 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +152 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context-overflow.d.ts +7 -2
- package/dist/lib/context-overflow.d.ts.map +1 -1
- package/dist/lib/context-overflow.js +65 -47
- package/dist/lib/context-overflow.js.map +1 -1
- package/dist/lib/errors.d.ts +16 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +23 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/local-bridge.d.ts +8 -0
- package/dist/lib/local-bridge.d.ts.map +1 -1
- package/dist/lib/local-bridge.js +81 -7
- package/dist/lib/local-bridge.js.map +1 -1
- package/dist/lib/logger.d.ts +9 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +104 -19
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/oauth-success.html +125 -125
- package/dist/lib/oc-chatgpt-orchestrator.d.ts +7 -1
- package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -1
- package/dist/lib/oc-chatgpt-orchestrator.js +68 -9
- package/dist/lib/oc-chatgpt-orchestrator.js.map +1 -1
- package/dist/lib/policy/runtime-policy.d.ts.map +1 -1
- package/dist/lib/policy/runtime-policy.js +15 -1
- package/dist/lib/policy/runtime-policy.js.map +1 -1
- package/dist/lib/prompts/codex-host-bridge.js +138 -138
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +203 -108
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/prompts/fetch-utils.d.ts +72 -0
- package/dist/lib/prompts/fetch-utils.d.ts.map +1 -0
- package/dist/lib/prompts/fetch-utils.js +165 -0
- package/dist/lib/prompts/fetch-utils.js.map +1 -0
- package/dist/lib/prompts/host-codex-prompt.d.ts.map +1 -1
- package/dist/lib/prompts/host-codex-prompt.js +24 -10
- package/dist/lib/prompts/host-codex-prompt.js.map +1 -1
- package/dist/lib/quota-cache.d.ts.map +1 -1
- package/dist/lib/quota-cache.js +10 -1
- package/dist/lib/quota-cache.js.map +1 -1
- package/dist/lib/quota-probe.d.ts +21 -0
- package/dist/lib/quota-probe.d.ts.map +1 -1
- package/dist/lib/quota-probe.js +39 -0
- package/dist/lib/quota-probe.js.map +1 -1
- package/dist/lib/quota-readiness.d.ts +3 -1
- package/dist/lib/quota-readiness.d.ts.map +1 -1
- package/dist/lib/quota-readiness.js +16 -3
- package/dist/lib/quota-readiness.js.map +1 -1
- package/dist/lib/recovery/storage.d.ts +7 -0
- package/dist/lib/recovery/storage.d.ts.map +1 -1
- package/dist/lib/recovery/storage.js +178 -10
- package/dist/lib/recovery/storage.js.map +1 -1
- package/dist/lib/refresh-lease.d.ts +1 -1
- package/dist/lib/refresh-lease.d.ts.map +1 -1
- package/dist/lib/refresh-lease.js +25 -3
- package/dist/lib/refresh-lease.js.map +1 -1
- package/dist/lib/refresh-queue.d.ts.map +1 -1
- package/dist/lib/refresh-queue.js +31 -17
- package/dist/lib/refresh-queue.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts +0 -5
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +36 -7
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/rotation.d.ts +12 -0
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +36 -0
- package/dist/lib/rotation.js.map +1 -1
- package/dist/lib/runtime/account-check-types.d.ts +1 -0
- package/dist/lib/runtime/account-check-types.d.ts.map +1 -1
- package/dist/lib/runtime/account-check-types.js +1 -0
- package/dist/lib/runtime/account-check-types.js.map +1 -1
- package/dist/lib/runtime/account-check.d.ts.map +1 -1
- package/dist/lib/runtime/account-check.js +15 -4
- package/dist/lib/runtime/account-check.js.map +1 -1
- package/dist/lib/runtime/runtime-observability.d.ts.map +1 -1
- package/dist/lib/runtime/runtime-observability.js +24 -2
- package/dist/lib/runtime/runtime-observability.js.map +1 -1
- package/dist/lib/runtime-rotation-proxy.d.ts +3 -0
- package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
- package/dist/lib/runtime-rotation-proxy.js +296 -21
- package/dist/lib/runtime-rotation-proxy.js.map +1 -1
- package/dist/lib/schemas.d.ts +2 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +2 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/account-clear.d.ts.map +1 -1
- package/dist/lib/storage/account-clear.js +4 -2
- package/dist/lib/storage/account-clear.js.map +1 -1
- package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-io.js +4 -1
- package/dist/lib/storage/flagged-storage-io.js.map +1 -1
- package/dist/lib/storage/import-export.d.ts.map +1 -1
- package/dist/lib/storage/import-export.js +29 -9
- package/dist/lib/storage/import-export.js.map +1 -1
- package/dist/lib/storage/paths.d.ts.map +1 -1
- package/dist/lib/storage/paths.js +93 -0
- package/dist/lib/storage/paths.js.map +1 -1
- package/dist/lib/storage/storage-parser.d.ts.map +1 -1
- package/dist/lib/storage/storage-parser.js +7 -1
- package/dist/lib/storage/storage-parser.js.map +1 -1
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +13 -9
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/table-formatter.d.ts.map +1 -1
- package/dist/lib/table-formatter.js +20 -2
- package/dist/lib/table-formatter.js.map +1 -1
- package/dist/lib/types.d.ts +7 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/ui/auth-menu.d.ts.map +1 -1
- package/dist/lib/ui/auth-menu.js +8 -2
- package/dist/lib/ui/auth-menu.js.map +1 -1
- package/dist/lib/ui/display-width.d.ts +27 -0
- package/dist/lib/ui/display-width.d.ts.map +1 -0
- package/dist/lib/ui/display-width.js +194 -0
- package/dist/lib/ui/display-width.js.map +1 -0
- package/dist/lib/ui/select.d.ts +23 -0
- package/dist/lib/ui/select.d.ts.map +1 -1
- package/dist/lib/ui/select.js +64 -16
- package/dist/lib/ui/select.js.map +1 -1
- package/dist/lib/ui/theme.d.ts +13 -0
- package/dist/lib/ui/theme.d.ts.map +1 -1
- package/dist/lib/ui/theme.js +34 -1
- package/dist/lib/ui/theme.js.map +1 -1
- package/node_modules/@codex-ai/plugin/dist/index.d.ts +2 -2
- package/node_modules/@codex-ai/plugin/dist/index.js +2 -2
- package/node_modules/@codex-ai/plugin/dist/tool.d.ts +42 -42
- package/node_modules/@codex-ai/plugin/dist/tool.js +29 -29
- package/node_modules/@codex-ai/plugin/package.json +9 -9
- package/node_modules/@codex-ai/sdk/dist/index.d.ts +4 -0
- package/node_modules/@codex-ai/sdk/dist/index.js +2 -0
- package/node_modules/@codex-ai/sdk/package.json +8 -0
- package/package.json +196 -193
- package/scripts/codex-app-launcher.js +653 -653
- package/scripts/codex-app-router.js +322 -322
- package/scripts/codex-bin-resolver.js +254 -254
- package/scripts/codex-multi-auth.js +59 -59
- package/scripts/codex-routing.js +59 -56
- package/scripts/codex.js +4782 -4275
- package/scripts/install-codex-auth-utils.js +206 -206
- package/scripts/mcodex +117 -0
- package/scripts/postinstall.js +343 -343
- package/scripts/preuninstall.js +254 -254
- package/vendor/codex-ai-plugin/dist/index.d.ts +2 -2
- package/vendor/codex-ai-plugin/dist/index.js +2 -2
- package/vendor/codex-ai-plugin/dist/tool.d.ts +42 -42
- package/vendor/codex-ai-plugin/dist/tool.js +29 -29
- package/vendor/codex-ai-plugin/package.json +9 -9
- package/vendor/codex-ai-sdk/dist/index.d.ts +4 -4
- package/vendor/codex-ai-sdk/dist/index.js +2 -2
- package/vendor/codex-ai-sdk/package.json +8 -8
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<title>Codex Sign-In Complete</title>
|
|
7
|
-
<style>
|
|
8
|
-
:root {
|
|
9
|
-
color-scheme: dark;
|
|
10
|
-
--bg: #0b0b0b;
|
|
11
|
-
--panel: #111111;
|
|
12
|
-
--text: #f2f2f2;
|
|
13
|
-
--muted: #a3a3a3;
|
|
14
|
-
--line: #232323;
|
|
15
|
-
--ok: #7cf0a6;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
* {
|
|
19
|
-
box-sizing: border-box;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
body {
|
|
23
|
-
margin: 0;
|
|
24
|
-
min-height: 100vh;
|
|
25
|
-
display: grid;
|
|
26
|
-
place-items: center;
|
|
27
|
-
background: var(--bg);
|
|
28
|
-
color: var(--text);
|
|
29
|
-
font-family: "Geist Mono", "GeistMono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
30
|
-
padding: 24px;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
main {
|
|
34
|
-
width: min(520px, 100%);
|
|
35
|
-
background: var(--panel);
|
|
36
|
-
border: 1px solid var(--line);
|
|
37
|
-
border-radius: 12px;
|
|
38
|
-
padding: 20px;
|
|
39
|
-
display: grid;
|
|
40
|
-
gap: 14px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
h1 {
|
|
44
|
-
margin: 0;
|
|
45
|
-
font-size: 20px;
|
|
46
|
-
font-weight: 600;
|
|
47
|
-
letter-spacing: -0.02em;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
p {
|
|
51
|
-
margin: 0;
|
|
52
|
-
color: var(--muted);
|
|
53
|
-
font-size: 14px;
|
|
54
|
-
line-height: 1.5;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.status {
|
|
58
|
-
display: inline-flex;
|
|
59
|
-
align-items: center;
|
|
60
|
-
gap: 8px;
|
|
61
|
-
color: var(--ok);
|
|
62
|
-
font-size: 13px;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.dot {
|
|
66
|
-
width: 8px;
|
|
67
|
-
height: 8px;
|
|
68
|
-
border-radius: 50%;
|
|
69
|
-
background: currentColor;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
dl {
|
|
73
|
-
margin: 0;
|
|
74
|
-
display: grid;
|
|
75
|
-
grid-template-columns: 120px 1fr;
|
|
76
|
-
gap: 8px 12px;
|
|
77
|
-
font-size: 13px;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
dt {
|
|
81
|
-
color: var(--muted);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
dd {
|
|
85
|
-
margin: 0;
|
|
86
|
-
color: var(--text);
|
|
87
|
-
word-break: break-word;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
code {
|
|
91
|
-
background: #171717;
|
|
92
|
-
border: 1px solid var(--line);
|
|
93
|
-
border-radius: 6px;
|
|
94
|
-
padding: 2px 6px;
|
|
95
|
-
font-family: inherit;
|
|
96
|
-
font-size: 12px;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
@media (max-width: 520px) {
|
|
100
|
-
dl {
|
|
101
|
-
grid-template-columns: 1fr;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
</style>
|
|
105
|
-
</head>
|
|
106
|
-
<body>
|
|
107
|
-
<main role="main" aria-label="OAuth callback received">
|
|
108
|
-
<h1>Sign-in complete</h1>
|
|
109
|
-
<p>Return to your terminal to finish Codex login.</p>
|
|
110
|
-
|
|
111
|
-
<div class="status" aria-live="polite">
|
|
112
|
-
<span class="dot" aria-hidden="true"></span>
|
|
113
|
-
Callback received
|
|
114
|
-
</div>
|
|
115
|
-
|
|
116
|
-
<dl>
|
|
117
|
-
<dt>Endpoint</dt>
|
|
118
|
-
<dd><code>localhost:1455</code></dd>
|
|
119
|
-
<dt>Flow</dt>
|
|
120
|
-
<dd>OAuth callback captured</dd>
|
|
121
|
-
<dt>Next</dt>
|
|
122
|
-
<dd>Close this tab and continue in terminal</dd>
|
|
123
|
-
</dl>
|
|
124
|
-
</main>
|
|
125
|
-
</body>
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Codex Sign-In Complete</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
color-scheme: dark;
|
|
10
|
+
--bg: #0b0b0b;
|
|
11
|
+
--panel: #111111;
|
|
12
|
+
--text: #f2f2f2;
|
|
13
|
+
--muted: #a3a3a3;
|
|
14
|
+
--line: #232323;
|
|
15
|
+
--ok: #7cf0a6;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
* {
|
|
19
|
+
box-sizing: border-box;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
body {
|
|
23
|
+
margin: 0;
|
|
24
|
+
min-height: 100vh;
|
|
25
|
+
display: grid;
|
|
26
|
+
place-items: center;
|
|
27
|
+
background: var(--bg);
|
|
28
|
+
color: var(--text);
|
|
29
|
+
font-family: "Geist Mono", "GeistMono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
30
|
+
padding: 24px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
main {
|
|
34
|
+
width: min(520px, 100%);
|
|
35
|
+
background: var(--panel);
|
|
36
|
+
border: 1px solid var(--line);
|
|
37
|
+
border-radius: 12px;
|
|
38
|
+
padding: 20px;
|
|
39
|
+
display: grid;
|
|
40
|
+
gap: 14px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
h1 {
|
|
44
|
+
margin: 0;
|
|
45
|
+
font-size: 20px;
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
letter-spacing: -0.02em;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
p {
|
|
51
|
+
margin: 0;
|
|
52
|
+
color: var(--muted);
|
|
53
|
+
font-size: 14px;
|
|
54
|
+
line-height: 1.5;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.status {
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
gap: 8px;
|
|
61
|
+
color: var(--ok);
|
|
62
|
+
font-size: 13px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.dot {
|
|
66
|
+
width: 8px;
|
|
67
|
+
height: 8px;
|
|
68
|
+
border-radius: 50%;
|
|
69
|
+
background: currentColor;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
dl {
|
|
73
|
+
margin: 0;
|
|
74
|
+
display: grid;
|
|
75
|
+
grid-template-columns: 120px 1fr;
|
|
76
|
+
gap: 8px 12px;
|
|
77
|
+
font-size: 13px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
dt {
|
|
81
|
+
color: var(--muted);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
dd {
|
|
85
|
+
margin: 0;
|
|
86
|
+
color: var(--text);
|
|
87
|
+
word-break: break-word;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
code {
|
|
91
|
+
background: #171717;
|
|
92
|
+
border: 1px solid var(--line);
|
|
93
|
+
border-radius: 6px;
|
|
94
|
+
padding: 2px 6px;
|
|
95
|
+
font-family: inherit;
|
|
96
|
+
font-size: 12px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (max-width: 520px) {
|
|
100
|
+
dl {
|
|
101
|
+
grid-template-columns: 1fr;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
</style>
|
|
105
|
+
</head>
|
|
106
|
+
<body>
|
|
107
|
+
<main role="main" aria-label="OAuth callback received">
|
|
108
|
+
<h1>Sign-in complete</h1>
|
|
109
|
+
<p>Return to your terminal to finish Codex login.</p>
|
|
110
|
+
|
|
111
|
+
<div class="status" aria-live="polite">
|
|
112
|
+
<span class="dot" aria-hidden="true"></span>
|
|
113
|
+
Callback received
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<dl>
|
|
117
|
+
<dt>Endpoint</dt>
|
|
118
|
+
<dd><code>localhost:1455</code></dd>
|
|
119
|
+
<dt>Flow</dt>
|
|
120
|
+
<dd>OAuth callback captured</dd>
|
|
121
|
+
<dt>Next</dt>
|
|
122
|
+
<dd>Close this tab and continue in terminal</dd>
|
|
123
|
+
</dl>
|
|
124
|
+
</main>
|
|
125
|
+
</body>
|
|
126
126
|
</html>
|
|
@@ -17,7 +17,13 @@ type OcChatgptSyncPlanReady = {
|
|
|
17
17
|
payload: OcChatgptPreviewPayload;
|
|
18
18
|
destination: AccountStorageV3 | null;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
type OcChatgptSyncPlanError = {
|
|
21
|
+
kind: "plan-error";
|
|
22
|
+
target: OcChatgptTargetDescriptor;
|
|
23
|
+
error: unknown;
|
|
24
|
+
cause: "load" | "preview";
|
|
25
|
+
};
|
|
26
|
+
export type OcChatgptSyncPlanResult = OcChatgptSyncPlanReady | BlockedDetection | OcChatgptSyncPlanError;
|
|
21
27
|
type DetectOptions = {
|
|
22
28
|
explicitRoot?: string | null;
|
|
23
29
|
projectRoot?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oc-chatgpt-orchestrator.d.ts","sourceRoot":"","sources":["../../lib/oc-chatgpt-orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oc-chatgpt-orchestrator.d.ts","sourceRoot":"","sources":["../../lib/oc-chatgpt-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
|
+
import { withFileOperationRetry } from "./fs-retry.js";
|
|
3
4
|
import { previewOcChatgptImportMerge, } from "./oc-chatgpt-import-adapter.js";
|
|
4
5
|
import { detectOcChatgptMultiAuthTarget, } from "./oc-chatgpt-target-detection.js";
|
|
5
6
|
import { exportNamedBackup, normalizeAccountStorage, } from "./storage.js";
|
|
@@ -36,13 +37,28 @@ export async function planOcChatgptSync(options) {
|
|
|
36
37
|
throw new Error("Unexpected oc target detection result");
|
|
37
38
|
}
|
|
38
39
|
const descriptor = detection.descriptor;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
40
|
+
let destination;
|
|
41
|
+
try {
|
|
42
|
+
destination =
|
|
43
|
+
options.destination === undefined
|
|
44
|
+
? await (options.dependencies?.loadTargetStorage ?? loadTargetStorageDefault)(descriptor)
|
|
45
|
+
: options.destination;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
// chatgpt-import-06: a corrupt/unreadable destination must not throw out of
|
|
49
|
+
// planning; return a structured error like applyOcChatgptSync does.
|
|
50
|
+
return { kind: "plan-error", target: descriptor, error, cause: "load" };
|
|
51
|
+
}
|
|
52
|
+
let preview;
|
|
53
|
+
try {
|
|
54
|
+
preview = previewMerge({
|
|
55
|
+
source: options.source,
|
|
56
|
+
destination,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return { kind: "plan-error", target: descriptor, error, cause: "preview" };
|
|
61
|
+
}
|
|
46
62
|
return {
|
|
47
63
|
kind: "ready",
|
|
48
64
|
target: descriptor,
|
|
@@ -53,8 +69,47 @@ export async function planOcChatgptSync(options) {
|
|
|
53
69
|
}
|
|
54
70
|
async function persistMergedDefault(target, merged) {
|
|
55
71
|
const path = target.accountPath;
|
|
56
|
-
|
|
57
|
-
|
|
72
|
+
// The merged file embeds raw refresh tokens for every account and overwrites the
|
|
73
|
+
// live, watched account store. Write atomically (temp + rename) at mode 0o600 so a
|
|
74
|
+
// crash mid-write cannot truncate the destination and the secrets are never created
|
|
75
|
+
// at the process umask. Create the parent at 0o700 too (matching auth-01) so the
|
|
76
|
+
// directory is not world-listable — otherwise other users could enumerate the
|
|
77
|
+
// filenames, including the `.tmp` intermediary that briefly holds the same secrets.
|
|
78
|
+
const dir = dirname(path);
|
|
79
|
+
await fs.mkdir(dir, { recursive: true, mode: 0o700 });
|
|
80
|
+
// mkdir's `mode` is ignored on an already-existing dir and on win32; on POSIX
|
|
81
|
+
// re-assert 0o700 so a pre-existing loose-perm dir is tightened (matches the
|
|
82
|
+
// refresh-lease hardening). win32 relies on the user-profile ACL like the main
|
|
83
|
+
// account store does — POSIX bits are not enforced there.
|
|
84
|
+
if (process.platform !== "win32") {
|
|
85
|
+
await fs.chmod(dir, 0o700).catch(() => undefined);
|
|
86
|
+
}
|
|
87
|
+
const tempPath = `${path}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
|
|
88
|
+
const content = `${JSON.stringify(merged, null, 2)}\n`;
|
|
89
|
+
try {
|
|
90
|
+
await fs.writeFile(tempPath, content, { encoding: "utf-8", mode: 0o600 });
|
|
91
|
+
if (process.platform !== "win32") {
|
|
92
|
+
await fs.chmod(tempPath, 0o600).catch(() => undefined);
|
|
93
|
+
}
|
|
94
|
+
// Route the atomic rename through withFileOperationRetry: on Windows the
|
|
95
|
+
// destination is a live, watched store, so a concurrent reader/indexer can
|
|
96
|
+
// hold it briefly and surface EBUSY/EPERM/ENOTEMPTY/EACCES. Retrying with
|
|
97
|
+
// backoff turns a transient lock into a successful merge instead of a
|
|
98
|
+
// spurious error (mirrors the account-save path).
|
|
99
|
+
await withFileOperationRetry(() => fs.rename(tempPath, path));
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
try {
|
|
103
|
+
// Route cleanup through withFileOperationRetry too: if the rename failed
|
|
104
|
+
// and a transient Windows EBUSY/EPERM lingers, a single-shot unlink would
|
|
105
|
+
// leave a secret-bearing .tmp next to the live account store. force:true
|
|
106
|
+
// keeps ENOENT (rename already consumed it) a no-op.
|
|
107
|
+
await withFileOperationRetry(() => fs.rm(tempPath, { force: true }));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Best-effort temp cleanup; rename success removes it, ENOENT is expected.
|
|
111
|
+
}
|
|
112
|
+
}
|
|
58
113
|
return path;
|
|
59
114
|
}
|
|
60
115
|
export async function applyOcChatgptSync(options) {
|
|
@@ -70,6 +125,10 @@ export async function applyOcChatgptSync(options) {
|
|
|
70
125
|
loadTargetStorage: dependencies.loadTargetStorage,
|
|
71
126
|
},
|
|
72
127
|
});
|
|
128
|
+
if (plan.kind === "plan-error") {
|
|
129
|
+
// Map the structured planning error onto the apply error variant.
|
|
130
|
+
return { kind: "error", target: plan.target, error: plan.error };
|
|
131
|
+
}
|
|
73
132
|
if (plan.kind !== "ready") {
|
|
74
133
|
return plan;
|
|
75
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oc-chatgpt-orchestrator.js","sourceRoot":"","sources":["../../lib/oc-chatgpt-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAGN,2BAA2B,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,8BAA8B,GAK9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEN,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"oc-chatgpt-orchestrator.js","sourceRoot":"","sources":["../../lib/oc-chatgpt-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAGN,2BAA2B,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,8BAA8B,GAK9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEN,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,cAAc,CAAC;AA0DtB,SAAS,qBAAqB,CAC7B,SAAyC;IAEzC,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;QAChE,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,OAAiC;IAEjC,MAAM,YAAY,GACjB,OAAO,CAAC,YAAY,EAAE,YAAY,IAAI,8BAA8B,CAAC;IACtE,MAAM,YAAY,GACjB,OAAO,CAAC,YAAY,EAAE,YAAY,IAAI,2BAA2B,CAAC;IAEnE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;IACxC,IAAI,WAAoC,CAAC;IACzC,IAAI,CAAC;QACJ,WAAW;YACV,OAAO,CAAC,WAAW,KAAK,SAAS;gBAChC,CAAC,CAAC,MAAM,CACN,OAAO,CAAC,YAAY,EAAE,iBAAiB,IAAI,wBAAwB,CACnE,CAAC,UAAU,CAAC;gBACd,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,4EAA4E;QAC5E,oEAAoE;QACpE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACzE,CAAC;IAED,IAAI,OAA8B,CAAC;IACnC,IAAI,CAAC;QACJ,OAAO,GAAG,YAAY,CAAC;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW;SACX,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO;QACN,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,UAAU;QAClB,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW;KACX,CAAC;AACH,CAAC;AAgCD,KAAK,UAAU,oBAAoB,CAClC,MAAiC,EACjC,MAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IAChC,iFAAiF;IACjF,mFAAmF;IACnF,oFAAoF;IACpF,iFAAiF;IACjF,8EAA8E;IAC9E,oFAAoF;IACpF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,0DAA0D;IAC1D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IACvF,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACvD,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;QACD,yEAAyE;QACzE,2EAA2E;QAC3E,0EAA0E;QAC1E,sEAAsE;QACtE,kDAAkD;QAClD,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACV,IAAI,CAAC;YACJ,yEAAyE;YACzE,0EAA0E;YAC1E,yEAAyE;YACzE,qDAAqD;YACrD,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACR,2EAA2E;QAC5E,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,OAAkC;IAElC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,YAAY,EAAE;gBACb,YAAY,EAAE,YAAY,CAAC,YAAY;gBACvC,YAAY,EAAE,YAAY,CAAC,YAAY;gBACvC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;aACjD;SACD,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,kEAAkE;YAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,oBAAoB,CAAC;QACzE,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5E,OAAO;YACN,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa;SACb,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,SAAS,GACd,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;YAClD,8BAA8B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;AACF,CAAC;AA2BD,SAAS,oBAAoB,CAAC,KAAc;IAC3C,MAAM,KAAK,GAAG,KAA8D,CAAC;IAC7E,IACC,KAAK,EAAE,IAAI,KAAK,QAAQ;QACxB,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC7D,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAAoC;IAEpC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,YAAY,IAAI,iBAAiB,CAAC;IAC7E,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-policy.d.ts","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-policy.d.ts","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveEntitlementAccountKey } from "../entitlement-cache.js";
|
|
1
2
|
import { getAccountPolicyKey, loadAccountPolicyStore, } from "../account-policy.js";
|
|
2
3
|
import { evaluateBudgetGuard, getBudgetWindowStart, loadBudgetGuardStore, } from "../budget-guard.js";
|
|
3
4
|
import { resolveProjectRoutingProfile, } from "../routing-profiles.js";
|
|
@@ -47,6 +48,10 @@ async function evaluateBudgets(input) {
|
|
|
47
48
|
const summary = await summarizeUsageLedger({
|
|
48
49
|
since: getBudgetWindowStart(limit.window, input.now),
|
|
49
50
|
until: input.now,
|
|
51
|
+
// Budget windows (e.g. monthly) can span a ledger rotation. Without archives,
|
|
52
|
+
// rotated-out rows are dropped from the sum, under-counting spend and letting
|
|
53
|
+
// usage exceed the limit within the active window (quota-forecast-03).
|
|
54
|
+
includeArchives: true,
|
|
50
55
|
});
|
|
51
56
|
evaluations.push(evaluateBudgetGuard(limit, summary));
|
|
52
57
|
}
|
|
@@ -100,7 +105,16 @@ export async function evaluateRuntimePolicy(input) {
|
|
|
100
105
|
if (profile?.accountWeightByKey[accountKey] !== undefined) {
|
|
101
106
|
boost += (profile.accountWeightByKey[accountKey] ?? 0) * 2;
|
|
102
107
|
}
|
|
103
|
-
|
|
108
|
+
// quota-forecast-01: the capability store is WRITTEN under the entitlement
|
|
109
|
+
// key (resolveEntitlementAccountKey) at the recordUnsupported sites, so the
|
|
110
|
+
// read must use the same key. Previously this used getAccountPolicyKey, a
|
|
111
|
+
// different format, so getSnapshot never matched and suppression was dead.
|
|
112
|
+
const capabilityKey = resolveEntitlementAccountKey({
|
|
113
|
+
accountId: account.accountId ?? undefined,
|
|
114
|
+
email: account.email ?? undefined,
|
|
115
|
+
index: account.index,
|
|
116
|
+
});
|
|
117
|
+
const capabilitySnapshot = input.capabilityPolicy?.getSnapshot(capabilityKey, input.model ?? "unknown");
|
|
104
118
|
if (capabilitySnapshot && capabilitySnapshot.unsupported > 0) {
|
|
105
119
|
blockedAccountIndexes.add(account.index);
|
|
106
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-policy.js","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime-policy.js","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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"}
|