oc-codex-multi-auth 6.0.0 → 6.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/LICENSE +1 -1
- package/README.md +58 -18
- package/assets/readme-hero.svg +10 -10
- package/config/README.md +1 -1
- package/config/minimal-opencode.json +1 -1
- package/config/opencode-legacy.json +1 -1
- package/config/opencode-modern.json +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +98 -2520
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts/persistence.d.ts +34 -0
- package/dist/lib/accounts/persistence.d.ts.map +1 -0
- package/dist/lib/accounts/persistence.js +153 -0
- package/dist/lib/accounts/persistence.js.map +1 -0
- package/dist/lib/accounts/recovery.d.ts +59 -0
- package/dist/lib/accounts/recovery.d.ts.map +1 -0
- package/dist/lib/accounts/recovery.js +229 -0
- package/dist/lib/accounts/recovery.js.map +1 -0
- package/dist/lib/accounts/rotation.d.ts +40 -0
- package/dist/lib/accounts/rotation.d.ts.map +1 -0
- package/dist/lib/accounts/rotation.js +204 -0
- package/dist/lib/accounts/rotation.js.map +1 -0
- package/dist/lib/accounts/state.d.ts +92 -0
- package/dist/lib/accounts/state.d.ts.map +1 -0
- package/dist/lib/accounts/state.js +366 -0
- package/dist/lib/accounts/state.js.map +1 -0
- package/dist/lib/accounts.d.ts +48 -91
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +121 -699
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/auth.d.ts +1 -1
- package/dist/lib/auth/auth.d.ts.map +1 -1
- package/dist/lib/auth/auth.js +5 -2
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/auth/login-runner.d.ts +32 -0
- package/dist/lib/auth/login-runner.d.ts.map +1 -1
- package/dist/lib/auth/login-runner.js +79 -64
- package/dist/lib/auth/login-runner.js.map +1 -1
- package/dist/lib/auth/server.d.ts.map +1 -1
- package/dist/lib/auth/server.js +3 -8
- package/dist/lib/auth/server.js.map +1 -1
- package/dist/lib/circuit-breaker.d.ts +53 -2
- package/dist/lib/circuit-breaker.d.ts.map +1 -1
- package/dist/lib/circuit-breaker.js +65 -6
- package/dist/lib/circuit-breaker.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +77 -32
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/error-sentinels.d.ts +20 -0
- package/dist/lib/error-sentinels.d.ts.map +1 -0
- package/dist/lib/error-sentinels.js +28 -0
- package/dist/lib/error-sentinels.js.map +1 -0
- package/dist/lib/errors.d.ts +100 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +116 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/logger.d.ts +14 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +65 -5
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/oauth-constants.d.ts +18 -0
- package/dist/lib/oauth-constants.d.ts.map +1 -0
- package/dist/lib/oauth-constants.js +18 -0
- package/dist/lib/oauth-constants.js.map +1 -0
- package/dist/lib/oauth-success.d.ts +2 -0
- package/dist/lib/oauth-success.d.ts.map +1 -0
- package/dist/lib/oauth-success.html +711 -711
- package/dist/lib/oauth-success.js +714 -0
- package/dist/lib/oauth-success.js.map +1 -0
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +12 -3
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/prompts/opencode-codex.d.ts.map +1 -1
- package/dist/lib/prompts/opencode-codex.js +3 -2
- package/dist/lib/prompts/opencode-codex.js.map +1 -1
- package/dist/lib/recovery/hook.d.ts +43 -0
- package/dist/lib/recovery/hook.d.ts.map +1 -0
- package/dist/lib/recovery/hook.js +325 -0
- package/dist/lib/recovery/hook.js.map +1 -0
- package/dist/lib/recovery/index.d.ts +1 -0
- package/dist/lib/recovery/index.d.ts.map +1 -1
- package/dist/lib/recovery/index.js +1 -0
- package/dist/lib/recovery/index.js.map +1 -1
- package/dist/lib/recovery/storage.d.ts.map +1 -1
- package/dist/lib/recovery/storage.js +5 -1
- package/dist/lib/recovery/storage.js.map +1 -1
- package/dist/lib/recovery.d.ts +15 -30
- package/dist/lib/recovery.d.ts.map +1 -1
- package/dist/lib/recovery.js +14 -312
- package/dist/lib/recovery.js.map +1 -1
- package/dist/lib/request/fetch-helpers.js +1 -1
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/response-handler.d.ts.map +1 -1
- package/dist/lib/request/response-handler.js +8 -2
- package/dist/lib/request/response-handler.js.map +1 -1
- package/dist/lib/runtime.d.ts +101 -0
- package/dist/lib/runtime.d.ts.map +1 -0
- package/dist/lib/runtime.js +77 -0
- package/dist/lib/runtime.js.map +1 -0
- package/dist/lib/schemas.d.ts +164 -1
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +251 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/atomic-write.d.ts +31 -0
- package/dist/lib/storage/atomic-write.d.ts.map +1 -0
- package/dist/lib/storage/atomic-write.js +75 -0
- package/dist/lib/storage/atomic-write.js.map +1 -0
- package/dist/lib/storage/backup.d.ts +13 -0
- package/dist/lib/storage/backup.d.ts.map +1 -0
- package/dist/lib/storage/backup.js +59 -0
- package/dist/lib/storage/backup.js.map +1 -0
- package/dist/lib/storage/errors.d.ts +17 -0
- package/dist/lib/storage/errors.d.ts.map +1 -0
- package/dist/lib/storage/errors.js +38 -0
- package/dist/lib/storage/errors.js.map +1 -0
- package/dist/lib/storage/export-import.d.ts +84 -0
- package/dist/lib/storage/export-import.d.ts.map +1 -0
- package/dist/lib/storage/export-import.js +222 -0
- package/dist/lib/storage/export-import.js.map +1 -0
- package/dist/lib/storage/flagged.d.ts +29 -0
- package/dist/lib/storage/flagged.d.ts.map +1 -0
- package/dist/lib/storage/flagged.js +207 -0
- package/dist/lib/storage/flagged.js.map +1 -0
- package/dist/lib/storage/identity.d.ts +72 -0
- package/dist/lib/storage/identity.d.ts.map +1 -0
- package/dist/lib/storage/identity.js +230 -0
- package/dist/lib/storage/identity.js.map +1 -0
- package/dist/lib/storage/keychain.d.ts +146 -0
- package/dist/lib/storage/keychain.d.ts.map +1 -0
- package/dist/lib/storage/keychain.js +278 -0
- package/dist/lib/storage/keychain.js.map +1 -0
- package/dist/lib/storage/load-save.d.ts +61 -0
- package/dist/lib/storage/load-save.d.ts.map +1 -0
- package/dist/lib/storage/load-save.js +606 -0
- package/dist/lib/storage/load-save.js.map +1 -0
- package/dist/lib/storage/migrations.d.ts +35 -0
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage/migrations.js +37 -0
- package/dist/lib/storage/migrations.js.map +1 -1
- package/dist/lib/storage/normalize.d.ts +22 -0
- package/dist/lib/storage/normalize.d.ts.map +1 -0
- package/dist/lib/storage/normalize.js +114 -0
- package/dist/lib/storage/normalize.js.map +1 -0
- package/dist/lib/storage/paths.d.ts.map +1 -1
- package/dist/lib/storage/paths.js +2 -1
- package/dist/lib/storage/paths.js.map +1 -1
- package/dist/lib/storage/state.d.ts +46 -0
- package/dist/lib/storage/state.d.ts.map +1 -0
- package/dist/lib/storage/state.js +100 -0
- package/dist/lib/storage/state.js.map +1 -0
- package/dist/lib/storage/worktree-lock.d.ts +79 -0
- package/dist/lib/storage/worktree-lock.d.ts.map +1 -0
- package/dist/lib/storage/worktree-lock.js +265 -0
- package/dist/lib/storage/worktree-lock.js.map +1 -0
- package/dist/lib/storage.d.ts +21 -155
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +24 -1167
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/tools/_shared.d.ts +16 -0
- package/dist/lib/tools/_shared.d.ts.map +1 -0
- package/dist/lib/tools/_shared.js +21 -0
- package/dist/lib/tools/_shared.js.map +1 -0
- package/dist/lib/tools/codex-dashboard.d.ts +8 -0
- package/dist/lib/tools/codex-dashboard.d.ts.map +1 -0
- package/dist/lib/tools/codex-dashboard.js +176 -0
- package/dist/lib/tools/codex-dashboard.js.map +1 -0
- package/dist/lib/tools/codex-diag.d.ts +19 -0
- package/dist/lib/tools/codex-diag.d.ts.map +1 -0
- package/dist/lib/tools/codex-diag.js +139 -0
- package/dist/lib/tools/codex-diag.js.map +1 -0
- package/dist/lib/tools/codex-diff.d.ts +44 -0
- package/dist/lib/tools/codex-diff.d.ts.map +1 -0
- package/dist/lib/tools/codex-diff.js +284 -0
- package/dist/lib/tools/codex-diff.js.map +1 -0
- package/dist/lib/tools/codex-doctor.d.ts +8 -0
- package/dist/lib/tools/codex-doctor.d.ts.map +1 -0
- package/dist/lib/tools/codex-doctor.js +284 -0
- package/dist/lib/tools/codex-doctor.js.map +1 -0
- package/dist/lib/tools/codex-export.d.ts +8 -0
- package/dist/lib/tools/codex-export.d.ts.map +1 -0
- package/dist/lib/tools/codex-export.js +63 -0
- package/dist/lib/tools/codex-export.js.map +1 -0
- package/dist/lib/tools/codex-health.d.ts +8 -0
- package/dist/lib/tools/codex-health.d.ts.map +1 -0
- package/dist/lib/tools/codex-health.js +124 -0
- package/dist/lib/tools/codex-health.js.map +1 -0
- package/dist/lib/tools/codex-help.d.ts +8 -0
- package/dist/lib/tools/codex-help.d.ts.map +1 -0
- package/dist/lib/tools/codex-help.js +127 -0
- package/dist/lib/tools/codex-help.js.map +1 -0
- package/dist/lib/tools/codex-import.d.ts +8 -0
- package/dist/lib/tools/codex-import.d.ts.map +1 -0
- package/dist/lib/tools/codex-import.js +97 -0
- package/dist/lib/tools/codex-import.js.map +1 -0
- package/dist/lib/tools/codex-keychain.d.ts +36 -0
- package/dist/lib/tools/codex-keychain.d.ts.map +1 -0
- package/dist/lib/tools/codex-keychain.js +289 -0
- package/dist/lib/tools/codex-keychain.js.map +1 -0
- package/dist/lib/tools/codex-label.d.ts +8 -0
- package/dist/lib/tools/codex-label.d.ts.map +1 -0
- package/dist/lib/tools/codex-label.js +143 -0
- package/dist/lib/tools/codex-label.js.map +1 -0
- package/dist/lib/tools/codex-limits.d.ts +8 -0
- package/dist/lib/tools/codex-limits.d.ts.map +1 -0
- package/dist/lib/tools/codex-limits.js +497 -0
- package/dist/lib/tools/codex-limits.js.map +1 -0
- package/dist/lib/tools/codex-list.d.ts +8 -0
- package/dist/lib/tools/codex-list.d.ts.map +1 -0
- package/dist/lib/tools/codex-list.js +260 -0
- package/dist/lib/tools/codex-list.js.map +1 -0
- package/dist/lib/tools/codex-metrics.d.ts +8 -0
- package/dist/lib/tools/codex-metrics.d.ts.map +1 -0
- package/dist/lib/tools/codex-metrics.js +180 -0
- package/dist/lib/tools/codex-metrics.js.map +1 -0
- package/dist/lib/tools/codex-next.d.ts +8 -0
- package/dist/lib/tools/codex-next.d.ts.map +1 -0
- package/dist/lib/tools/codex-next.js +54 -0
- package/dist/lib/tools/codex-next.js.map +1 -0
- package/dist/lib/tools/codex-note.d.ts +8 -0
- package/dist/lib/tools/codex-note.d.ts.map +1 -0
- package/dist/lib/tools/codex-note.js +79 -0
- package/dist/lib/tools/codex-note.js.map +1 -0
- package/dist/lib/tools/codex-refresh.d.ts +8 -0
- package/dist/lib/tools/codex-refresh.d.ts.map +1 -0
- package/dist/lib/tools/codex-refresh.js +78 -0
- package/dist/lib/tools/codex-refresh.js.map +1 -0
- package/dist/lib/tools/codex-remove.d.ts +8 -0
- package/dist/lib/tools/codex-remove.d.ts.map +1 -0
- package/dist/lib/tools/codex-remove.js +184 -0
- package/dist/lib/tools/codex-remove.js.map +1 -0
- package/dist/lib/tools/codex-setup.d.ts +8 -0
- package/dist/lib/tools/codex-setup.d.ts.map +1 -0
- package/dist/lib/tools/codex-setup.js +26 -0
- package/dist/lib/tools/codex-setup.js.map +1 -0
- package/dist/lib/tools/codex-status.d.ts +8 -0
- package/dist/lib/tools/codex-status.d.ts.map +1 -0
- package/dist/lib/tools/codex-status.js +263 -0
- package/dist/lib/tools/codex-status.js.map +1 -0
- package/dist/lib/tools/codex-switch.d.ts +8 -0
- package/dist/lib/tools/codex-switch.d.ts.map +1 -0
- package/dist/lib/tools/codex-switch.js +122 -0
- package/dist/lib/tools/codex-switch.js.map +1 -0
- package/dist/lib/tools/codex-tag.d.ts +8 -0
- package/dist/lib/tools/codex-tag.d.ts.map +1 -0
- package/dist/lib/tools/codex-tag.js +101 -0
- package/dist/lib/tools/codex-tag.js.map +1 -0
- package/dist/lib/tools/index.d.ts +143 -0
- package/dist/lib/tools/index.d.ts.map +1 -0
- package/dist/lib/tools/index.js +67 -0
- package/dist/lib/tools/index.js.map +1 -0
- package/dist/lib/ui/format.d.ts.map +1 -1
- package/dist/lib/ui/format.js +5 -0
- package/dist/lib/ui/format.js.map +1 -1
- package/dist/lib/ui/runtime.d.ts +10 -0
- package/dist/lib/ui/runtime.d.ts.map +1 -1
- package/dist/lib/ui/runtime.js +16 -11
- package/dist/lib/ui/runtime.js.map +1 -1
- package/dist/lib/ui/select.d.ts.map +1 -1
- package/dist/lib/ui/select.js +12 -3
- package/dist/lib/ui/select.js.map +1 -1
- package/dist/lib/ui/theme.d.ts +19 -0
- package/dist/lib/ui/theme.d.ts.map +1 -1
- package/dist/lib/ui/theme.js +27 -0
- package/dist/lib/ui/theme.js.map +1 -1
- package/package.json +24 -16
- package/scripts/copy-oauth-success.js +16 -6
- package/scripts/install-oc-codex-multi-auth-core.js +462 -381
- package/scripts/install-oc-codex-multi-auth.js +15 -15
- package/scripts/test-all-models.sh +1 -1
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codex-list` tool — list all Codex OAuth accounts.
|
|
3
|
+
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
|
+
*/
|
|
5
|
+
import { tool } from "@opencode-ai/plugin/tool";
|
|
6
|
+
import { getStoragePath, loadAccounts } from "../storage.js";
|
|
7
|
+
import { formatCooldown } from "../accounts.js";
|
|
8
|
+
import { buildTableHeader, buildTableRow } from "../table-formatter.js";
|
|
9
|
+
import { formatUiBadge, formatUiHeader, formatUiItem, formatUiKeyValue, formatUiSection, paintUiText, } from "../ui/format.js";
|
|
10
|
+
import { normalizeToolOutputFormat, renderJsonOutput } from "../runtime.js";
|
|
11
|
+
export function createCodexListTool(ctx) {
|
|
12
|
+
const { resolveUiRuntime, resolveActiveIndex, formatCommandAccountLabel, formatRateLimitEntry, buildJsonAccountIdentity, } = ctx;
|
|
13
|
+
return tool({
|
|
14
|
+
description: "List all Codex OAuth accounts and the current active index.",
|
|
15
|
+
args: {
|
|
16
|
+
tag: tool.schema
|
|
17
|
+
.string()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Optional tag filter (e.g., work, personal, team-a)."),
|
|
20
|
+
format: tool.schema
|
|
21
|
+
.string()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Output format: "text" (default) or "json".'),
|
|
24
|
+
includeSensitive: tool.schema
|
|
25
|
+
.boolean()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Include raw account labels, emails, and account IDs in JSON output. Defaults to false."),
|
|
28
|
+
},
|
|
29
|
+
async execute({ tag, format, includeSensitive, } = {}) {
|
|
30
|
+
const ui = resolveUiRuntime();
|
|
31
|
+
const storage = await loadAccounts();
|
|
32
|
+
const storePath = getStoragePath();
|
|
33
|
+
const outputFormat = normalizeToolOutputFormat(format);
|
|
34
|
+
const includeSensitiveOutput = includeSensitive === true;
|
|
35
|
+
const normalizedTag = tag?.trim().toLowerCase() ?? "";
|
|
36
|
+
const commandHints = [
|
|
37
|
+
"opencode auth login",
|
|
38
|
+
"codex-status",
|
|
39
|
+
"codex-dashboard",
|
|
40
|
+
"codex-metrics",
|
|
41
|
+
"codex-doctor",
|
|
42
|
+
"codex-setup",
|
|
43
|
+
"codex-next",
|
|
44
|
+
"codex-label",
|
|
45
|
+
"codex-tag",
|
|
46
|
+
"codex-note",
|
|
47
|
+
"codex-help",
|
|
48
|
+
];
|
|
49
|
+
if (!storage || storage.accounts.length === 0) {
|
|
50
|
+
if (outputFormat === "json") {
|
|
51
|
+
return renderJsonOutput({
|
|
52
|
+
message: "No Codex accounts configured. Run: opencode auth login",
|
|
53
|
+
storagePath: storePath,
|
|
54
|
+
filterTag: normalizedTag || null,
|
|
55
|
+
totalAccounts: 0,
|
|
56
|
+
totalStoredAccounts: 0,
|
|
57
|
+
activeIndex: null,
|
|
58
|
+
accounts: [],
|
|
59
|
+
commands: commandHints,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (ui.v2Enabled) {
|
|
63
|
+
return [
|
|
64
|
+
...formatUiHeader(ui, "Codex accounts"),
|
|
65
|
+
"",
|
|
66
|
+
formatUiItem(ui, "No accounts configured.", "warning"),
|
|
67
|
+
formatUiItem(ui, "Run: opencode auth login", "accent"),
|
|
68
|
+
formatUiItem(ui, "Setup checklist: codex-setup"),
|
|
69
|
+
formatUiItem(ui, "Command guide: codex-help"),
|
|
70
|
+
formatUiKeyValue(ui, "Storage", storePath, "muted"),
|
|
71
|
+
].join("\n");
|
|
72
|
+
}
|
|
73
|
+
return [
|
|
74
|
+
"No Codex accounts configured.",
|
|
75
|
+
"",
|
|
76
|
+
"Add accounts:",
|
|
77
|
+
" opencode auth login",
|
|
78
|
+
" codex-setup",
|
|
79
|
+
" codex-help",
|
|
80
|
+
"",
|
|
81
|
+
`Storage: ${storePath}`,
|
|
82
|
+
].join("\n");
|
|
83
|
+
}
|
|
84
|
+
const now = Date.now();
|
|
85
|
+
const activeIndex = resolveActiveIndex(storage, "codex");
|
|
86
|
+
const filteredEntries = storage.accounts
|
|
87
|
+
.map((account, index) => ({ account, index }))
|
|
88
|
+
.filter(({ account }) => {
|
|
89
|
+
if (!normalizedTag)
|
|
90
|
+
return true;
|
|
91
|
+
const tags = Array.isArray(account.accountTags)
|
|
92
|
+
? account.accountTags.map((entry) => entry.trim().toLowerCase())
|
|
93
|
+
: [];
|
|
94
|
+
return tags.includes(normalizedTag);
|
|
95
|
+
});
|
|
96
|
+
if (normalizedTag && filteredEntries.length === 0) {
|
|
97
|
+
if (outputFormat === "json") {
|
|
98
|
+
return renderJsonOutput({
|
|
99
|
+
message: `No accounts found for tag: ${normalizedTag}`,
|
|
100
|
+
storagePath: storePath,
|
|
101
|
+
filterTag: normalizedTag,
|
|
102
|
+
totalAccounts: 0,
|
|
103
|
+
totalStoredAccounts: storage.accounts.length,
|
|
104
|
+
activeIndex: activeIndex + 1,
|
|
105
|
+
accounts: [],
|
|
106
|
+
commands: commandHints,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (ui.v2Enabled) {
|
|
110
|
+
return [
|
|
111
|
+
...formatUiHeader(ui, "Codex accounts"),
|
|
112
|
+
"",
|
|
113
|
+
formatUiItem(ui, `No accounts found for tag: ${normalizedTag}`, "warning"),
|
|
114
|
+
formatUiItem(ui, 'Use codex-tag index=2 tags="work,team-a" to add tags.', "accent"),
|
|
115
|
+
].join("\n");
|
|
116
|
+
}
|
|
117
|
+
return `No accounts found for tag: ${normalizedTag}\n\nUse codex-tag index=2 tags="work,team-a" to add tags.`;
|
|
118
|
+
}
|
|
119
|
+
if (outputFormat === "json") {
|
|
120
|
+
return renderJsonOutput({
|
|
121
|
+
totalAccounts: filteredEntries.length,
|
|
122
|
+
totalStoredAccounts: storage.accounts.length,
|
|
123
|
+
activeIndex: activeIndex + 1,
|
|
124
|
+
filterTag: normalizedTag || null,
|
|
125
|
+
storagePath: storePath,
|
|
126
|
+
accounts: filteredEntries.map(({ account, index }) => {
|
|
127
|
+
const rateLimit = formatRateLimitEntry(account, now);
|
|
128
|
+
const cooldown = formatCooldown(account, now);
|
|
129
|
+
const statuses = [];
|
|
130
|
+
if (index === activeIndex)
|
|
131
|
+
statuses.push("active");
|
|
132
|
+
if (account.enabled === false)
|
|
133
|
+
statuses.push("disabled");
|
|
134
|
+
if (rateLimit)
|
|
135
|
+
statuses.push("rate-limited");
|
|
136
|
+
if (cooldown)
|
|
137
|
+
statuses.push("cooldown");
|
|
138
|
+
if (statuses.length === 0)
|
|
139
|
+
statuses.push("ok");
|
|
140
|
+
return {
|
|
141
|
+
...buildJsonAccountIdentity(index, {
|
|
142
|
+
includeSensitive: includeSensitiveOutput,
|
|
143
|
+
account,
|
|
144
|
+
}),
|
|
145
|
+
enabled: account.enabled !== false,
|
|
146
|
+
isActive: index === activeIndex,
|
|
147
|
+
rateLimit: rateLimit ?? null,
|
|
148
|
+
cooldown: cooldown ?? null,
|
|
149
|
+
tags: Array.isArray(account.accountTags)
|
|
150
|
+
? [...account.accountTags]
|
|
151
|
+
: [],
|
|
152
|
+
note: account.accountNote ?? null,
|
|
153
|
+
statuses,
|
|
154
|
+
};
|
|
155
|
+
}),
|
|
156
|
+
commands: commandHints,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (ui.v2Enabled) {
|
|
160
|
+
const lines = [
|
|
161
|
+
...formatUiHeader(ui, "Codex accounts"),
|
|
162
|
+
formatUiKeyValue(ui, "Total", String(filteredEntries.length)),
|
|
163
|
+
normalizedTag
|
|
164
|
+
? formatUiKeyValue(ui, "Filter tag", normalizedTag, "accent")
|
|
165
|
+
: formatUiKeyValue(ui, "Filter tag", "none", "muted"),
|
|
166
|
+
formatUiKeyValue(ui, "Storage", storePath, "muted"),
|
|
167
|
+
"",
|
|
168
|
+
...formatUiSection(ui, "Accounts"),
|
|
169
|
+
];
|
|
170
|
+
filteredEntries.forEach(({ account, index }) => {
|
|
171
|
+
const label = formatCommandAccountLabel(account, index);
|
|
172
|
+
const badges = [];
|
|
173
|
+
if (index === activeIndex)
|
|
174
|
+
badges.push(formatUiBadge(ui, "current", "accent"));
|
|
175
|
+
if (account.enabled === false)
|
|
176
|
+
badges.push(formatUiBadge(ui, "disabled", "danger"));
|
|
177
|
+
const rateLimit = formatRateLimitEntry(account, now);
|
|
178
|
+
if (rateLimit)
|
|
179
|
+
badges.push(formatUiBadge(ui, "rate-limited", "warning"));
|
|
180
|
+
if (typeof account.coolingDownUntil === "number" &&
|
|
181
|
+
account.coolingDownUntil > now) {
|
|
182
|
+
badges.push(formatUiBadge(ui, "cooldown", "warning"));
|
|
183
|
+
}
|
|
184
|
+
if (badges.length === 0) {
|
|
185
|
+
badges.push(formatUiBadge(ui, "ok", "success"));
|
|
186
|
+
}
|
|
187
|
+
lines.push(formatUiItem(ui, `${label} ${badges.join(" ")}`.trim()));
|
|
188
|
+
if (rateLimit) {
|
|
189
|
+
lines.push(` ${paintUiText(ui, `rate limit: ${rateLimit}`, "muted")}`);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
lines.push("");
|
|
193
|
+
lines.push(...formatUiSection(ui, "Commands"));
|
|
194
|
+
lines.push(formatUiItem(ui, "Add account: opencode auth login", "accent"));
|
|
195
|
+
lines.push(formatUiItem(ui, "Switch account: codex-switch index=2"));
|
|
196
|
+
lines.push(formatUiItem(ui, "Detailed status: codex-status"));
|
|
197
|
+
lines.push(formatUiItem(ui, "Live dashboard: codex-dashboard"));
|
|
198
|
+
lines.push(formatUiItem(ui, "Runtime metrics: codex-metrics"));
|
|
199
|
+
lines.push(formatUiItem(ui, 'Set account tags: codex-tag index=2 tags="work,team-a"'));
|
|
200
|
+
lines.push(formatUiItem(ui, 'Set account note: codex-note index=2 note="weekday primary"'));
|
|
201
|
+
lines.push(formatUiItem(ui, "Doctor checks: codex-doctor"));
|
|
202
|
+
lines.push(formatUiItem(ui, "Onboarding checklist: codex-setup"));
|
|
203
|
+
lines.push(formatUiItem(ui, "Guided setup wizard: codex-setup --wizard"));
|
|
204
|
+
lines.push(formatUiItem(ui, "Best next action: codex-next"));
|
|
205
|
+
lines.push(formatUiItem(ui, 'Rename account label: codex-label index=2 label="Work"'));
|
|
206
|
+
lines.push(formatUiItem(ui, "Command guide: codex-help"));
|
|
207
|
+
return lines.join("\n");
|
|
208
|
+
}
|
|
209
|
+
const listTableOptions = {
|
|
210
|
+
columns: [
|
|
211
|
+
{ header: "#", width: 3 },
|
|
212
|
+
{ header: "Label", width: 42 },
|
|
213
|
+
{ header: "Status", width: 20 },
|
|
214
|
+
],
|
|
215
|
+
};
|
|
216
|
+
const lines = [
|
|
217
|
+
`Codex Accounts (${filteredEntries.length}):`,
|
|
218
|
+
"",
|
|
219
|
+
...buildTableHeader(listTableOptions),
|
|
220
|
+
];
|
|
221
|
+
filteredEntries.forEach(({ account, index }) => {
|
|
222
|
+
const label = formatCommandAccountLabel(account, index);
|
|
223
|
+
const statuses = [];
|
|
224
|
+
const rateLimit = formatRateLimitEntry(account, now);
|
|
225
|
+
if (index === activeIndex)
|
|
226
|
+
statuses.push("active");
|
|
227
|
+
if (rateLimit)
|
|
228
|
+
statuses.push("rate-limited");
|
|
229
|
+
if (typeof account.coolingDownUntil === "number" &&
|
|
230
|
+
account.coolingDownUntil > now) {
|
|
231
|
+
statuses.push("cooldown");
|
|
232
|
+
}
|
|
233
|
+
const statusText = statuses.length > 0 ? statuses.join(", ") : "ok";
|
|
234
|
+
lines.push(buildTableRow([String(index + 1), label, statusText], listTableOptions));
|
|
235
|
+
});
|
|
236
|
+
lines.push("");
|
|
237
|
+
lines.push(`Storage: ${storePath}`);
|
|
238
|
+
if (normalizedTag) {
|
|
239
|
+
lines.push(`Filter tag: ${normalizedTag}`);
|
|
240
|
+
}
|
|
241
|
+
lines.push("");
|
|
242
|
+
lines.push("Commands:");
|
|
243
|
+
lines.push(" - Add account: opencode auth login");
|
|
244
|
+
lines.push(" - Switch account: codex-switch");
|
|
245
|
+
lines.push(" - Status details: codex-status");
|
|
246
|
+
lines.push(" - Live dashboard: codex-dashboard");
|
|
247
|
+
lines.push(" - Runtime metrics: codex-metrics");
|
|
248
|
+
lines.push(" - Set account tags: codex-tag");
|
|
249
|
+
lines.push(" - Set account note: codex-note");
|
|
250
|
+
lines.push(" - Doctor checks: codex-doctor");
|
|
251
|
+
lines.push(" - Setup checklist: codex-setup");
|
|
252
|
+
lines.push(" - Guided setup wizard: codex-setup --wizard");
|
|
253
|
+
lines.push(" - Best next action: codex-next");
|
|
254
|
+
lines.push(" - Rename account label: codex-label");
|
|
255
|
+
lines.push(" - Command guide: codex-help");
|
|
256
|
+
return lines.join("\n");
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=codex-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-list.js","sourceRoot":"","sources":["../../../lib/tools/codex-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codex-metrics` tool — runtime request metrics.
|
|
3
|
+
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
|
+
*/
|
|
5
|
+
import { type ToolDefinition } from "@opencode-ai/plugin/tool";
|
|
6
|
+
import type { ToolContext } from "./index.js";
|
|
7
|
+
export declare function createCodexMetricsTool(ctx: ToolContext): ToolDefinition;
|
|
8
|
+
//# sourceMappingURL=codex-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-metrics.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-metrics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAQrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CA8SvE"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codex-metrics` tool — runtime request metrics.
|
|
3
|
+
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
|
+
*/
|
|
5
|
+
import { tool } from "@opencode-ai/plugin/tool";
|
|
6
|
+
import { formatWaitTime } from "../accounts.js";
|
|
7
|
+
import { getRefreshQueueMetrics } from "../refresh-queue.js";
|
|
8
|
+
import { formatUiHeader, formatUiKeyValue, } from "../ui/format.js";
|
|
9
|
+
import { normalizeToolOutputFormat, renderJsonOutput } from "../runtime.js";
|
|
10
|
+
export function createCodexMetricsTool(ctx) {
|
|
11
|
+
const { resolveUiRuntime, runtimeMetrics, beginnerSafeModeRef, buildRoutingVisibilitySnapshot, appendRoutingVisibilityText, appendRoutingVisibilityUi, } = ctx;
|
|
12
|
+
return tool({
|
|
13
|
+
description: "Show runtime request metrics for this plugin process.",
|
|
14
|
+
args: {
|
|
15
|
+
format: tool.schema
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Output format: "text" (default) or "json".'),
|
|
19
|
+
},
|
|
20
|
+
execute({ format } = {}) {
|
|
21
|
+
const ui = resolveUiRuntime();
|
|
22
|
+
const outputFormat = normalizeToolOutputFormat(format);
|
|
23
|
+
const now = Date.now();
|
|
24
|
+
const uptimeMs = Math.max(0, now - runtimeMetrics.startedAt);
|
|
25
|
+
const total = runtimeMetrics.totalRequests;
|
|
26
|
+
const successful = runtimeMetrics.successfulRequests;
|
|
27
|
+
const refreshMetrics = getRefreshQueueMetrics();
|
|
28
|
+
const successRate = total > 0 ? ((successful / total) * 100).toFixed(1) : "0.0";
|
|
29
|
+
const avgLatencyMs = successful > 0
|
|
30
|
+
? Math.round(runtimeMetrics.cumulativeLatencyMs / successful)
|
|
31
|
+
: 0;
|
|
32
|
+
const lastRequest = runtimeMetrics.lastRequestAt !== null
|
|
33
|
+
? `${formatWaitTime(now - runtimeMetrics.lastRequestAt)} ago`
|
|
34
|
+
: "never";
|
|
35
|
+
const routingVisibility = buildRoutingVisibilitySnapshot();
|
|
36
|
+
const beginnerSafeModeEnabled = beginnerSafeModeRef.current;
|
|
37
|
+
if (outputFormat === "json") {
|
|
38
|
+
return Promise.resolve(renderJsonOutput({
|
|
39
|
+
uptimeMs,
|
|
40
|
+
totalRequests: total,
|
|
41
|
+
successfulResponses: successful,
|
|
42
|
+
failedResponses: runtimeMetrics.failedRequests,
|
|
43
|
+
successRatePercent: Number(successRate),
|
|
44
|
+
averageSuccessfulLatencyMs: avgLatencyMs,
|
|
45
|
+
rateLimitedResponses: runtimeMetrics.rateLimitedResponses,
|
|
46
|
+
serverErrors: runtimeMetrics.serverErrors,
|
|
47
|
+
networkErrors: runtimeMetrics.networkErrors,
|
|
48
|
+
authRefreshFailures: runtimeMetrics.authRefreshFailures,
|
|
49
|
+
accountRotations: runtimeMetrics.accountRotations,
|
|
50
|
+
emptyResponseRetries: runtimeMetrics.emptyResponseRetries,
|
|
51
|
+
retryProfile: runtimeMetrics.retryProfile,
|
|
52
|
+
beginnerSafeMode: beginnerSafeModeEnabled,
|
|
53
|
+
retryBudgetExhaustions: runtimeMetrics.retryBudgetExhaustions,
|
|
54
|
+
retryBudgetUsage: { ...runtimeMetrics.retryBudgetUsage },
|
|
55
|
+
retryBudgetLimits: { ...runtimeMetrics.retryBudgetLimits },
|
|
56
|
+
refreshQueue: { ...refreshMetrics },
|
|
57
|
+
lastRequestAt: runtimeMetrics.lastRequestAt,
|
|
58
|
+
lastRequestAgeMs: runtimeMetrics.lastRequestAt !== null
|
|
59
|
+
? Math.max(0, now - runtimeMetrics.lastRequestAt)
|
|
60
|
+
: null,
|
|
61
|
+
lastError: runtimeMetrics.lastError,
|
|
62
|
+
lastErrorCategory: runtimeMetrics.lastErrorCategory,
|
|
63
|
+
lastSelectedAccountIndex: runtimeMetrics.lastSelectedAccountIndex === null
|
|
64
|
+
? null
|
|
65
|
+
: runtimeMetrics.lastSelectedAccountIndex + 1,
|
|
66
|
+
lastQuotaKey: runtimeMetrics.lastQuotaKey,
|
|
67
|
+
lastBudgetExhaustion: runtimeMetrics.lastRetryBudgetExhaustedClass === null
|
|
68
|
+
? null
|
|
69
|
+
: {
|
|
70
|
+
budgetClass: runtimeMetrics.lastRetryBudgetExhaustedClass,
|
|
71
|
+
reason: runtimeMetrics.lastRetryBudgetReason,
|
|
72
|
+
},
|
|
73
|
+
routingVisibility,
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
const lines = [
|
|
77
|
+
"Codex Plugin Metrics:",
|
|
78
|
+
"",
|
|
79
|
+
`Uptime: ${formatWaitTime(uptimeMs)}`,
|
|
80
|
+
`Total upstream requests: ${total}`,
|
|
81
|
+
`Successful responses: ${successful}`,
|
|
82
|
+
`Failed responses: ${runtimeMetrics.failedRequests}`,
|
|
83
|
+
`Success rate: ${successRate}%`,
|
|
84
|
+
`Average successful latency: ${avgLatencyMs}ms`,
|
|
85
|
+
`Rate-limited responses: ${runtimeMetrics.rateLimitedResponses}`,
|
|
86
|
+
`Server errors (5xx): ${runtimeMetrics.serverErrors}`,
|
|
87
|
+
`Network errors: ${runtimeMetrics.networkErrors}`,
|
|
88
|
+
`Auth refresh failures: ${runtimeMetrics.authRefreshFailures}`,
|
|
89
|
+
`Account rotations: ${runtimeMetrics.accountRotations}`,
|
|
90
|
+
`Empty-response retries: ${runtimeMetrics.emptyResponseRetries}`,
|
|
91
|
+
`Retry profile: ${runtimeMetrics.retryProfile}`,
|
|
92
|
+
`Beginner safe mode: ${beginnerSafeModeEnabled ? "on" : "off"}`,
|
|
93
|
+
`Retry budget exhaustions: ${runtimeMetrics.retryBudgetExhaustions}`,
|
|
94
|
+
`Retry budget usage (auth/network/server/short/global/empty): ` +
|
|
95
|
+
`${runtimeMetrics.retryBudgetUsage.authRefresh}/` +
|
|
96
|
+
`${runtimeMetrics.retryBudgetUsage.network}/` +
|
|
97
|
+
`${runtimeMetrics.retryBudgetUsage.server}/` +
|
|
98
|
+
`${runtimeMetrics.retryBudgetUsage.rateLimitShort}/` +
|
|
99
|
+
`${runtimeMetrics.retryBudgetUsage.rateLimitGlobal}/` +
|
|
100
|
+
`${runtimeMetrics.retryBudgetUsage.emptyResponse}`,
|
|
101
|
+
`Refresh queue (started/success/failed/pending): ` +
|
|
102
|
+
`${refreshMetrics.started}/` +
|
|
103
|
+
`${refreshMetrics.succeeded}/` +
|
|
104
|
+
`${refreshMetrics.failed}/` +
|
|
105
|
+
`${refreshMetrics.pending}`,
|
|
106
|
+
`Last upstream request: ${lastRequest}`,
|
|
107
|
+
];
|
|
108
|
+
if (runtimeMetrics.lastError) {
|
|
109
|
+
lines.push(`Last error: ${runtimeMetrics.lastError}`);
|
|
110
|
+
}
|
|
111
|
+
if (runtimeMetrics.lastErrorCategory) {
|
|
112
|
+
lines.push(`Last error category: ${runtimeMetrics.lastErrorCategory}`);
|
|
113
|
+
}
|
|
114
|
+
if (runtimeMetrics.lastSelectedAccountIndex !== null) {
|
|
115
|
+
lines.push(`Last selected account: ${runtimeMetrics.lastSelectedAccountIndex + 1}`);
|
|
116
|
+
}
|
|
117
|
+
if (runtimeMetrics.lastQuotaKey) {
|
|
118
|
+
lines.push(`Last quota key: ${runtimeMetrics.lastQuotaKey}`);
|
|
119
|
+
}
|
|
120
|
+
if (runtimeMetrics.lastRetryBudgetExhaustedClass) {
|
|
121
|
+
lines.push(`Last budget exhaustion: ${runtimeMetrics.lastRetryBudgetExhaustedClass}` +
|
|
122
|
+
(runtimeMetrics.lastRetryBudgetReason
|
|
123
|
+
? ` (${runtimeMetrics.lastRetryBudgetReason})`
|
|
124
|
+
: ""));
|
|
125
|
+
}
|
|
126
|
+
lines.push("");
|
|
127
|
+
appendRoutingVisibilityText(lines, routingVisibility, {
|
|
128
|
+
includeExplainability: true,
|
|
129
|
+
});
|
|
130
|
+
if (ui.v2Enabled) {
|
|
131
|
+
const styled = [
|
|
132
|
+
...formatUiHeader(ui, "Codex plugin metrics"),
|
|
133
|
+
formatUiKeyValue(ui, "Uptime", formatWaitTime(uptimeMs)),
|
|
134
|
+
formatUiKeyValue(ui, "Total upstream requests", String(total)),
|
|
135
|
+
formatUiKeyValue(ui, "Successful responses", String(successful), "success"),
|
|
136
|
+
formatUiKeyValue(ui, "Failed responses", String(runtimeMetrics.failedRequests), "danger"),
|
|
137
|
+
formatUiKeyValue(ui, "Success rate", `${successRate}%`, "accent"),
|
|
138
|
+
formatUiKeyValue(ui, "Average successful latency", `${avgLatencyMs}ms`),
|
|
139
|
+
formatUiKeyValue(ui, "Rate-limited responses", String(runtimeMetrics.rateLimitedResponses), "warning"),
|
|
140
|
+
formatUiKeyValue(ui, "Server errors (5xx)", String(runtimeMetrics.serverErrors), "danger"),
|
|
141
|
+
formatUiKeyValue(ui, "Network errors", String(runtimeMetrics.networkErrors), "danger"),
|
|
142
|
+
formatUiKeyValue(ui, "Auth refresh failures", String(runtimeMetrics.authRefreshFailures), "warning"),
|
|
143
|
+
formatUiKeyValue(ui, "Account rotations", String(runtimeMetrics.accountRotations), "accent"),
|
|
144
|
+
formatUiKeyValue(ui, "Empty-response retries", String(runtimeMetrics.emptyResponseRetries), "warning"),
|
|
145
|
+
formatUiKeyValue(ui, "Retry profile", runtimeMetrics.retryProfile, "muted"),
|
|
146
|
+
formatUiKeyValue(ui, "Beginner safe mode", beginnerSafeModeEnabled ? "on" : "off", beginnerSafeModeEnabled ? "accent" : "muted"),
|
|
147
|
+
formatUiKeyValue(ui, "Retry budget exhaustions", String(runtimeMetrics.retryBudgetExhaustions), "warning"),
|
|
148
|
+
formatUiKeyValue(ui, "Retry budget usage", `A${runtimeMetrics.retryBudgetUsage.authRefresh} N${runtimeMetrics.retryBudgetUsage.network} S${runtimeMetrics.retryBudgetUsage.server} RS${runtimeMetrics.retryBudgetUsage.rateLimitShort} RG${runtimeMetrics.retryBudgetUsage.rateLimitGlobal} E${runtimeMetrics.retryBudgetUsage.emptyResponse}`, "muted"),
|
|
149
|
+
formatUiKeyValue(ui, "Retry budget limits", `A${runtimeMetrics.retryBudgetLimits.authRefresh} N${runtimeMetrics.retryBudgetLimits.network} S${runtimeMetrics.retryBudgetLimits.server} RS${runtimeMetrics.retryBudgetLimits.rateLimitShort} RG${runtimeMetrics.retryBudgetLimits.rateLimitGlobal} E${runtimeMetrics.retryBudgetLimits.emptyResponse}`, "muted"),
|
|
150
|
+
formatUiKeyValue(ui, "Refresh queue", `started=${refreshMetrics.started} dedup=${refreshMetrics.deduplicated} reuse=${refreshMetrics.rotationReused} success=${refreshMetrics.succeeded} failed=${refreshMetrics.failed} pending=${refreshMetrics.pending}`, "muted"),
|
|
151
|
+
formatUiKeyValue(ui, "Last upstream request", lastRequest, "muted"),
|
|
152
|
+
];
|
|
153
|
+
if (runtimeMetrics.lastError) {
|
|
154
|
+
styled.push(formatUiKeyValue(ui, "Last error", runtimeMetrics.lastError, "danger"));
|
|
155
|
+
}
|
|
156
|
+
if (runtimeMetrics.lastErrorCategory) {
|
|
157
|
+
styled.push(formatUiKeyValue(ui, "Last error category", runtimeMetrics.lastErrorCategory, "warning"));
|
|
158
|
+
}
|
|
159
|
+
if (runtimeMetrics.lastSelectedAccountIndex !== null) {
|
|
160
|
+
styled.push(formatUiKeyValue(ui, "Last selected account", String(runtimeMetrics.lastSelectedAccountIndex + 1), "accent"));
|
|
161
|
+
}
|
|
162
|
+
if (runtimeMetrics.lastQuotaKey) {
|
|
163
|
+
styled.push(formatUiKeyValue(ui, "Last quota key", runtimeMetrics.lastQuotaKey, "muted"));
|
|
164
|
+
}
|
|
165
|
+
if (runtimeMetrics.lastRetryBudgetExhaustedClass) {
|
|
166
|
+
styled.push(formatUiKeyValue(ui, "Last budget exhaustion", runtimeMetrics.lastRetryBudgetReason
|
|
167
|
+
? `${runtimeMetrics.lastRetryBudgetExhaustedClass} (${runtimeMetrics.lastRetryBudgetReason})`
|
|
168
|
+
: runtimeMetrics.lastRetryBudgetExhaustedClass, "warning"));
|
|
169
|
+
}
|
|
170
|
+
styled.push("");
|
|
171
|
+
appendRoutingVisibilityUi(ui, styled, routingVisibility, {
|
|
172
|
+
includeExplainability: true,
|
|
173
|
+
});
|
|
174
|
+
return Promise.resolve(styled.join("\n"));
|
|
175
|
+
}
|
|
176
|
+
return Promise.resolve(lines.join("\n"));
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=codex-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-metrics.js","sourceRoot":"","sources":["../../../lib/tools/codex-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codex-next` tool — single best next action.
|
|
3
|
+
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
|
+
*/
|
|
5
|
+
import { type ToolDefinition } from "@opencode-ai/plugin/tool";
|
|
6
|
+
import type { ToolContext } from "./index.js";
|
|
7
|
+
export declare function createCodexNextTool(ctx: ToolContext): ToolDefinition;
|
|
8
|
+
//# sourceMappingURL=codex-next.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-next.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-next.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAOrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAmDpE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codex-next` tool — single best next action.
|
|
3
|
+
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
|
+
*/
|
|
5
|
+
import { tool } from "@opencode-ai/plugin/tool";
|
|
6
|
+
import { loadAccounts } from "../storage.js";
|
|
7
|
+
import { recommendBeginnerNextAction, } from "../ui/beginner.js";
|
|
8
|
+
import { formatUiHeader, formatUiItem } from "../ui/format.js";
|
|
9
|
+
import { normalizeToolOutputFormat, renderJsonOutput } from "../runtime.js";
|
|
10
|
+
export function createCodexNextTool(ctx) {
|
|
11
|
+
const { resolveUiRuntime, resolveActiveIndex, toBeginnerAccountSnapshots, getBeginnerRuntimeSnapshot, } = ctx;
|
|
12
|
+
return tool({
|
|
13
|
+
description: "Show the single most recommended next action for beginners.",
|
|
14
|
+
args: {
|
|
15
|
+
format: tool.schema
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Output format: "text" (default) or "json".'),
|
|
19
|
+
},
|
|
20
|
+
async execute({ format } = {}) {
|
|
21
|
+
const ui = resolveUiRuntime();
|
|
22
|
+
const outputFormat = normalizeToolOutputFormat(format);
|
|
23
|
+
const storage = await loadAccounts();
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
const activeIndex = storage && storage.accounts.length > 0
|
|
26
|
+
? resolveActiveIndex(storage, "codex")
|
|
27
|
+
: 0;
|
|
28
|
+
const snapshots = storage
|
|
29
|
+
? toBeginnerAccountSnapshots(storage, activeIndex, now)
|
|
30
|
+
: [];
|
|
31
|
+
const action = recommendBeginnerNextAction({
|
|
32
|
+
accounts: snapshots,
|
|
33
|
+
now,
|
|
34
|
+
runtime: getBeginnerRuntimeSnapshot(),
|
|
35
|
+
});
|
|
36
|
+
if (outputFormat === "json") {
|
|
37
|
+
return renderJsonOutput({
|
|
38
|
+
recommendedNextAction: action,
|
|
39
|
+
totalAccounts: snapshots.length,
|
|
40
|
+
activeIndex: storage && storage.accounts.length > 0 ? activeIndex + 1 : null,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (ui.v2Enabled) {
|
|
44
|
+
return [
|
|
45
|
+
...formatUiHeader(ui, "Recommended next action"),
|
|
46
|
+
"",
|
|
47
|
+
formatUiItem(ui, action, "accent"),
|
|
48
|
+
].join("\n");
|
|
49
|
+
}
|
|
50
|
+
return `Recommended next action:\n${action}`;
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=codex-next.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-next.js","sourceRoot":"","sources":["../../../lib/tools/codex-next.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACN,2BAA2B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG5E,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IACnD,MAAM,EACL,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC1B,GAAG,GAAG,CAAC;IACR,OAAO,IAAI,CAAC;QACX,WAAW,EACV,6DAA6D;QAC9D,IAAI,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;iBACjB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4CAA4C,CAAC;SACxD;QACD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,KAA0B,EAAE;YACjD,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,WAAW,GAChB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACrC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;gBACtC,CAAC,CAAC,CAAC,CAAC;YACN,MAAM,SAAS,GAAG,OAAO;gBACxB,CAAC,CAAC,0BAA0B,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC;gBACvD,CAAC,CAAC,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,2BAA2B,CAAC;gBAC1C,QAAQ,EAAE,SAAS;gBACnB,GAAG;gBACH,OAAO,EAAE,0BAA0B,EAAE;aACrC,CAAC,CAAC;YACH,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,gBAAgB,CAAC;oBACvB,qBAAqB,EAAE,MAAM;oBAC7B,aAAa,EAAE,SAAS,CAAC,MAAM;oBAC/B,WAAW,EACV,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;iBAChE,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAO;oBACN,GAAG,cAAc,CAAC,EAAE,EAAE,yBAAyB,CAAC;oBAChD,EAAE;oBACF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;iBAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;YACD,OAAO,6BAA6B,MAAM,EAAE,CAAC;QAC9C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codex-note` tool — set or clear per-account reminder note.
|
|
3
|
+
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
|
+
*/
|
|
5
|
+
import { type ToolDefinition } from "@opencode-ai/plugin/tool";
|
|
6
|
+
import type { ToolContext } from "./index.js";
|
|
7
|
+
export declare function createCodexNoteTool(ctx: ToolContext): ToolDefinition;
|
|
8
|
+
//# sourceMappingURL=codex-note.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-note.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-note.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAwFpE"}
|