@numa-tech/numa 1.11.13 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +197 -25
  2. package/dist/ai-registry/client.d.ts +65 -0
  3. package/dist/ai-registry/client.js +260 -0
  4. package/dist/ai-registry/client.js.map +1 -0
  5. package/dist/ai-registry/commands.d.ts +2 -0
  6. package/dist/ai-registry/commands.js +438 -0
  7. package/dist/ai-registry/commands.js.map +1 -0
  8. package/dist/ai-registry/errors.d.ts +8 -0
  9. package/dist/ai-registry/errors.js +40 -0
  10. package/dist/ai-registry/errors.js.map +1 -0
  11. package/dist/ai-registry/mcp-installer.d.ts +37 -0
  12. package/dist/ai-registry/mcp-installer.js +273 -0
  13. package/dist/ai-registry/mcp-installer.js.map +1 -0
  14. package/dist/ai-registry/schemas.d.ts +86 -0
  15. package/dist/ai-registry/schemas.js +39 -0
  16. package/dist/ai-registry/schemas.js.map +1 -0
  17. package/dist/ai-registry/skill-installer.d.ts +21 -0
  18. package/dist/ai-registry/skill-installer.js +262 -0
  19. package/dist/ai-registry/skill-installer.js.map +1 -0
  20. package/dist/app-config.d.ts +4 -2
  21. package/dist/app-config.js +15 -3
  22. package/dist/app-config.js.map +1 -1
  23. package/dist/cli.js +40 -12
  24. package/dist/cli.js.map +1 -1
  25. package/dist/codex-module.d.ts +8 -0
  26. package/dist/codex-module.js +152 -0
  27. package/dist/codex-module.js.map +1 -0
  28. package/dist/command-catalog.js +170 -64
  29. package/dist/command-catalog.js.map +1 -1
  30. package/dist/config-page.js +17 -0
  31. package/dist/config-page.js.map +1 -1
  32. package/dist/config.d.ts +4 -1
  33. package/dist/config.js +26 -7
  34. package/dist/config.js.map +1 -1
  35. package/dist/media/commands.js +12 -11
  36. package/dist/media/commands.js.map +1 -1
  37. package/dist/oauth.d.ts +2 -30
  38. package/dist/oauth.js +1 -294
  39. package/dist/oauth.js.map +1 -1
  40. package/dist/pipeline/client.d.ts +126 -0
  41. package/dist/pipeline/client.js +105 -0
  42. package/dist/pipeline/client.js.map +1 -0
  43. package/dist/pipeline/commands.d.ts +17 -0
  44. package/dist/pipeline/commands.js +283 -0
  45. package/dist/pipeline/commands.js.map +1 -0
  46. package/dist/pipeline/errors.d.ts +8 -0
  47. package/dist/pipeline/errors.js +37 -0
  48. package/dist/pipeline/errors.js.map +1 -0
  49. package/dist/pipeline/schemas.d.ts +243 -0
  50. package/dist/pipeline/schemas.js +60 -0
  51. package/dist/pipeline/schemas.js.map +1 -0
  52. package/dist/platform-profile.d.ts +75 -0
  53. package/dist/platform-profile.js +169 -0
  54. package/dist/platform-profile.js.map +1 -0
  55. package/dist/types.d.ts +1 -40
  56. package/dist/web-console-page.d.ts +2 -2
  57. package/dist/web-console-page.js +21 -7
  58. package/dist/web-console-page.js.map +1 -1
  59. package/dist/web-console.d.ts +17 -3
  60. package/dist/web-console.js +70 -5
  61. package/dist/web-console.js.map +1 -1
  62. package/examples/claude-desktop-npx.json +1 -1
  63. package/examples/codex-npx.json +1 -1
  64. package/package.json +30 -14
  65. package/skills/numa-ai-registry/SKILL.md +47 -0
  66. package/skills/numa-ai-registry/evals/evals.json +35 -0
  67. package/skills/numa-ai-registry/references/command-contract.md +53 -0
  68. package/assets/codex-shortcut-icon.icns +0 -0
  69. package/assets/codex-shortcut-icon.ico +0 -0
  70. package/dist/chatgpt-console.d.ts +0 -53
  71. package/dist/chatgpt-console.js +0 -105
  72. package/dist/chatgpt-console.js.map +0 -1
  73. package/dist/codex-auth-agent.d.ts +0 -60
  74. package/dist/codex-auth-agent.js +0 -331
  75. package/dist/codex-auth-agent.js.map +0 -1
  76. package/dist/codex-commands.d.ts +0 -13
  77. package/dist/codex-commands.js +0 -571
  78. package/dist/codex-commands.js.map +0 -1
  79. package/dist/codex-legacy-cleanup.d.ts +0 -5
  80. package/dist/codex-legacy-cleanup.js +0 -77
  81. package/dist/codex-legacy-cleanup.js.map +0 -1
  82. package/dist/codex-process.d.ts +0 -13
  83. package/dist/codex-process.js +0 -193
  84. package/dist/codex-process.js.map +0 -1
  85. package/dist/codex-protocol.d.ts +0 -352
  86. package/dist/codex-protocol.js +0 -116
  87. package/dist/codex-protocol.js.map +0 -1
  88. package/dist/codex-quota-cache.d.ts +0 -20
  89. package/dist/codex-quota-cache.js +0 -82
  90. package/dist/codex-quota-cache.js.map +0 -1
  91. package/dist/codex-selection.d.ts +0 -18
  92. package/dist/codex-selection.js +0 -47
  93. package/dist/codex-selection.js.map +0 -1
  94. package/dist/codex-service-client.d.ts +0 -11
  95. package/dist/codex-service-client.js +0 -91
  96. package/dist/codex-service-client.js.map +0 -1
  97. package/dist/codex-shortcuts.d.ts +0 -43
  98. package/dist/codex-shortcuts.js +0 -429
  99. package/dist/codex-shortcuts.js.map +0 -1
  100. package/dist/codex-tui.d.ts +0 -15
  101. package/dist/codex-tui.js +0 -235
  102. package/dist/codex-tui.js.map +0 -1
package/dist/codex-tui.js DELETED
@@ -1,235 +0,0 @@
1
- import process from "node:process";
2
- import { cancel, isCancel, select } from "@clack/prompts";
3
- import { codexQuotaWindowHasData } from "./codex-protocol.js";
4
- const ANSI = {
5
- reset: "\u001b[0m",
6
- bold: "\u001b[1m",
7
- dim: "\u001b[2m",
8
- cyan: "\u001b[36m",
9
- green: "\u001b[32m",
10
- yellow: "\u001b[33m",
11
- red: "\u001b[31m"
12
- };
13
- function terminalColor() {
14
- return Boolean(process.stdout.isTTY && !process.env.NO_COLOR && process.env.TERM !== "dumb");
15
- }
16
- function terminalUnicode() {
17
- return process.env.TERM !== "dumb" && process.env.NUMA_ASCII !== "1";
18
- }
19
- function paint(value, color, enabled) {
20
- return enabled ? `${ANSI[color]}${value}${ANSI.reset}` : value;
21
- }
22
- function clampedPercent(value) {
23
- return typeof value === "number" && Number.isFinite(value)
24
- ? Math.max(0, Math.min(100, value))
25
- : undefined;
26
- }
27
- export function quotaRemainingPercent(usedPercent) {
28
- const used = clampedPercent(usedPercent);
29
- return used === undefined ? undefined : Math.round(100 - used);
30
- }
31
- function remainingColor(remaining) {
32
- if (remaining >= 50)
33
- return "green";
34
- if (remaining >= 20)
35
- return "yellow";
36
- return "red";
37
- }
38
- export function renderQuotaBar(remaining, width, options = {}) {
39
- const unicode = options.unicode ?? true;
40
- const empty = unicode ? "░" : "-";
41
- if (remaining === undefined)
42
- return empty.repeat(width);
43
- const filled = unicode ? "█" : "#";
44
- const filledWidth = Math.round((Math.max(0, Math.min(100, remaining)) / 100) * width);
45
- const value = `${filled.repeat(filledWidth)}${empty.repeat(width - filledWidth)}`;
46
- return paint(value, remainingColor(remaining), Boolean(options.color));
47
- }
48
- function quotaWindowLabel(minutes, fallback) {
49
- if (typeof minutes !== "number" || !Number.isFinite(minutes) || minutes <= 0)
50
- return fallback;
51
- if (minutes % (24 * 60) === 0)
52
- return `${minutes / (24 * 60)} 天`;
53
- if (minutes % 60 === 0)
54
- return `${minutes / 60} 小时`;
55
- return `${Math.round(minutes)} 分钟`;
56
- }
57
- export function terminalCellWidth(value) {
58
- let width = 0;
59
- for (const character of value) {
60
- const codePoint = character.codePointAt(0) ?? 0;
61
- const isCombiningMark = /\p{Mark}/u.test(character);
62
- const isWide = codePoint >= 0x1100 &&
63
- (codePoint <= 0x115f ||
64
- codePoint === 0x2329 ||
65
- codePoint === 0x232a ||
66
- (codePoint >= 0x2e80 && codePoint <= 0xa4cf) ||
67
- (codePoint >= 0xac00 && codePoint <= 0xd7a3) ||
68
- (codePoint >= 0xf900 && codePoint <= 0xfaff) ||
69
- (codePoint >= 0xfe10 && codePoint <= 0xfe19) ||
70
- (codePoint >= 0xfe30 && codePoint <= 0xfe6f) ||
71
- (codePoint >= 0xff00 && codePoint <= 0xff60) ||
72
- (codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
73
- (codePoint >= 0x1f300 && codePoint <= 0x1faff) ||
74
- (codePoint >= 0x20000 && codePoint <= 0x3fffd));
75
- width += isCombiningMark ? 0 : isWide ? 2 : 1;
76
- }
77
- return width;
78
- }
79
- function padTerminalEnd(value, targetWidth) {
80
- return `${value}${" ".repeat(Math.max(0, targetWidth - terminalCellWidth(value)))}`;
81
- }
82
- function instantMilliseconds(value) {
83
- if (typeof value === "number" && Number.isFinite(value) && value > 0) {
84
- return value < 1_000_000_000_000 ? value * 1000 : value;
85
- }
86
- if (typeof value === "string") {
87
- const parsed = Date.parse(value);
88
- return Number.isFinite(parsed) ? parsed : undefined;
89
- }
90
- return undefined;
91
- }
92
- export function formatQuotaRefresh(value, now = Date.now()) {
93
- const timestamp = instantMilliseconds(value);
94
- if (timestamp === undefined)
95
- return "刷新时间未知";
96
- const remainingMs = timestamp - now;
97
- if (remainingMs <= 0)
98
- return "等待刷新";
99
- const minutes = Math.ceil(remainingMs / 60_000);
100
- if (minutes < 60)
101
- return `${minutes} 分钟后刷新`;
102
- const hours = Math.ceil(remainingMs / 3_600_000);
103
- if (hours < 24)
104
- return `${hours} 小时后刷新`;
105
- const days = Math.ceil(remainingMs / 86_400_000);
106
- if (days <= 7)
107
- return `${days} 天后刷新`;
108
- return `${new Date(timestamp).toLocaleString("zh-CN", {
109
- month: "2-digit",
110
- day: "2-digit",
111
- hour: "2-digit",
112
- minute: "2-digit",
113
- hour12: false
114
- })} 刷新`;
115
- }
116
- function quotaLine(label, usedPercent, resetAt, barWidth, options) {
117
- const remaining = quotaRemainingPercent(usedPercent);
118
- const percentage = remaining === undefined ? " --" : String(remaining).padStart(3, " ");
119
- const percentageText = remaining === undefined
120
- ? `${percentage}%`
121
- : paint(`${percentage}%`, remainingColor(remaining), options.color);
122
- return `${padTerminalEnd(label, 8)} ${renderQuotaBar(remaining, barWidth, options)} ${percentageText} 剩余 · ${formatQuotaRefresh(resetAt, options.now)}`;
123
- }
124
- function accountQuotaLines(quota, barWidth, options) {
125
- if (!quota)
126
- return [paint("额度 暂无额度数据", "dim", options.color)];
127
- const lines = [
128
- codexQuotaWindowHasData(quota.primary)
129
- ? quotaLine(quotaWindowLabel(quota.primary?.windowMinutes, "短周期"), quota.primary?.usedPercent, quota.primary?.resetAt, barWidth, options)
130
- : undefined,
131
- codexQuotaWindowHasData(quota.secondary)
132
- ? quotaLine(quotaWindowLabel(quota.secondary?.windowMinutes, "长周期"), quota.secondary?.usedPercent, quota.secondary?.resetAt, barWidth, options)
133
- : undefined
134
- ].filter((line) => line !== undefined);
135
- return lines.length > 0
136
- ? lines
137
- : [paint("额度 暂无有效额度窗口", "dim", options.color)];
138
- }
139
- function compactQuota(quota) {
140
- if (!quota)
141
- return "暂无额度";
142
- const windows = [
143
- { window: quota.primary, fallback: "短周期" },
144
- { window: quota.secondary, fallback: "长周期" }
145
- ].filter(({ window }) => codexQuotaWindowHasData(window));
146
- if (windows.length === 0)
147
- return "暂无额度";
148
- return windows
149
- .map(({ window, fallback }) => {
150
- const remaining = quotaRemainingPercent(window?.usedPercent);
151
- return `${quotaWindowLabel(window?.windowMinutes, fallback)} ${remaining === undefined ? "--" : remaining}%`;
152
- })
153
- .join(" · ");
154
- }
155
- export function isCodexAccountAvailable(account) {
156
- return account.credentialStatus == null || account.credentialStatus === "AVAILABLE";
157
- }
158
- export function codexAccountStatusText(account) {
159
- if (account.credentialStatus === "NEEDS_REAUTH")
160
- return "凭据已失效";
161
- if (account.credentialStatus === "TEMPORARILY_UNAVAILABLE")
162
- return "服务暂时不可用";
163
- return undefined;
164
- }
165
- export function renderCodexAccountDashboard(accounts, selectedAccountId, tuiOptions = {}) {
166
- const columns = Math.max(40, tuiOptions.columns ?? process.stdout.columns ?? 80);
167
- const options = {
168
- color: tuiOptions.color ?? terminalColor(),
169
- unicode: tuiOptions.unicode ?? terminalUnicode(),
170
- now: tuiOptions.now ?? Date.now()
171
- };
172
- const barWidth = columns >= 96 ? 24 : columns >= 72 ? 18 : 10;
173
- const selectedSymbol = options.unicode ? "◆" : ">";
174
- const idleSymbol = options.unicode ? "◇" : "-";
175
- const rail = options.unicode ? "│" : "|";
176
- const availableCount = accounts.filter(isCodexAccountAvailable).length;
177
- const countText = availableCount === accounts.length
178
- ? `${accounts.length} 个可用`
179
- : `${accounts.length} 个账号 · ${availableCount} 个可用`;
180
- const lines = [
181
- `${paint("ChatGPT 账号", "bold", options.color)} ${countText}`,
182
- ""
183
- ];
184
- accounts.forEach((account, index) => {
185
- const selected = selectedAccountId
186
- ? account.id === selectedAccountId
187
- : account.isDefault;
188
- const symbol = selected ? paint(selectedSymbol, "cyan", options.color) : paint(idleSymbol, "dim", options.color);
189
- const selectedText = selected ? ` ${paint("当前", "cyan", options.color)}` : "";
190
- const badges = [
191
- codexAccountStatusText(account)
192
- ? paint(codexAccountStatusText(account), "red", options.color)
193
- : undefined,
194
- account.quota?.planType?.toUpperCase(),
195
- account.quota?.activeLimit != null ? `LIMIT ${account.quota.activeLimit}` : undefined
196
- ]
197
- .filter(Boolean)
198
- .join(" · ");
199
- lines.push(`${symbol} ${paint(account.label, "bold", options.color)}${selectedText}`);
200
- lines.push(`${paint(rail, "dim", options.color)} ${paint(account.id, "dim", options.color)}${badges ? ` · ${badges}` : ""}`);
201
- for (const quota of accountQuotaLines(account.quota, barWidth, options)) {
202
- lines.push(`${paint(rail, "dim", options.color)} ${quota}`);
203
- }
204
- if (index < accounts.length - 1)
205
- lines.push("");
206
- });
207
- return `${lines.join("\n")}\n`;
208
- }
209
- export async function promptCodexAccount(accounts, selectedAccountId) {
210
- const answer = await select({
211
- message: "选择要使用的 ChatGPT 账号(↑↓ 移动,回车确认)",
212
- initialValue: accounts.some((account) => account.id === selectedAccountId)
213
- ? selectedAccountId
214
- : undefined,
215
- maxItems: Math.min(10, accounts.length),
216
- showInstructions: false,
217
- options: accounts.map((account) => ({
218
- value: account.id,
219
- label: account.label,
220
- hint: isCodexAccountAvailable(account)
221
- ? `${compactQuota(account.quota)} · ${account.id}`
222
- : `${codexAccountStatusText(account)} · ${account.id}`,
223
- disabled: !isCodexAccountAvailable(account)
224
- }))
225
- });
226
- if (isCancel(answer)) {
227
- cancel("已取消账号选择");
228
- throw new Error("已取消账号选择。");
229
- }
230
- const account = accounts.find((candidate) => candidate.id === answer);
231
- if (!account)
232
- throw new Error("选择的账号已不在可用列表中,请重新运行命令。");
233
- return account;
234
- }
235
- //# sourceMappingURL=codex-tui.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-tui.js","sourceRoot":"","sources":["../src/codex-tui.ts"],"names":[],"mappings":"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"}