dowafu 0.4.0 → 0.4.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.
- package/README_zh-tw.md +3 -1
- package/dist/messages.js +6 -0
- package/dist/report.js +11 -0
- package/package.json +1 -1
- package/providers.json +12 -10
package/README_zh-tw.md
CHANGED
package/dist/messages.js
CHANGED
|
@@ -167,6 +167,9 @@ const MESSAGES = {
|
|
|
167
167
|
tpmPeakLine: (provider, limit, peak) => ` ${provider} tpmLimit ${limit},靜態估算峰值 ${peak}`,
|
|
168
168
|
tpmPeakCaveat: () => " └ 僅為靜態指標,不預測執行中的 TPM 曲線(429 等待會改變實際並行數)",
|
|
169
169
|
allowedReadsSummary: (n, outDir) => ` 允許讀取 ${n} 個檔案,輸出至 ${outDir}/`,
|
|
170
|
+
allowedReadsListEntry: (path) => ` ${path}`,
|
|
171
|
+
allowedReadsListFolded: (n) => ` …另 ${n} 個`,
|
|
172
|
+
allowedReadsListEmpty: () => " (允許清單為空)",
|
|
170
173
|
lensClosingLineZh: (agent) => `ℹ ${agent} 的 lens 收尾句符合中文版固定收尾句`,
|
|
171
174
|
lensClosingLineEn: (agent) => `ℹ ${agent} 的 lens 收尾句符合英文版固定收尾句`,
|
|
172
175
|
modelPricing: (input, output, cachedSuffix, asOfSuffix) => ` └ 單價 每 M token:input $${input}/output $${output}${cachedSuffix}${asOfSuffix}`,
|
|
@@ -355,6 +358,9 @@ const MESSAGES = {
|
|
|
355
358
|
tpmPeakLine: (provider, limit, peak) => ` ${provider} tpmLimit ${limit}, statically estimated peak ${peak}`,
|
|
356
359
|
tpmPeakCaveat: () => " └ Static indicator only; does not predict the in-flight TPM curve (429 waits change actual concurrency)",
|
|
357
360
|
allowedReadsSummary: (n, outDir) => ` Allowed reads: ${n} file(s), output to ${outDir}/`,
|
|
361
|
+
allowedReadsListEntry: (path) => ` ${path}`,
|
|
362
|
+
allowedReadsListFolded: (n) => ` …and ${n} more`,
|
|
363
|
+
allowedReadsListEmpty: () => " (Allowlist is empty)",
|
|
358
364
|
lensClosingLineZh: (agent) => `ℹ ${agent}'s lens closing line matches the Chinese fixed closing line`,
|
|
359
365
|
lensClosingLineEn: (agent) => `ℹ ${agent}'s lens closing line matches the English fixed closing line`,
|
|
360
366
|
modelPricing: (input, output, cachedSuffix, asOfSuffix) => ` └ Price per M tokens: input $${input} / output $${output}${cachedSuffix}${asOfSuffix}`,
|
package/dist/report.js
CHANGED
|
@@ -89,6 +89,17 @@ export function buildReport(ticketId, spokes, estimates, allowlistEstimates, cli
|
|
|
89
89
|
`store=${spoke.providerConfig.store === false ? "false" : "n/a"} ` +
|
|
90
90
|
`est. ${est.toLocaleString()} cap ${cap.toLocaleString()}`);
|
|
91
91
|
lines.push(` ${formatModelPricing(spoke, lang)}`);
|
|
92
|
+
if (spoke.allowedReadsRelative.length === 0) {
|
|
93
|
+
lines.push(m(lang, "allowedReadsListEmpty"));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
for (const path of spoke.allowedReadsRelative.slice(0, 8)) {
|
|
97
|
+
lines.push(m(lang, "allowedReadsListEntry", path));
|
|
98
|
+
}
|
|
99
|
+
const remaining = spoke.allowedReadsRelative.length - 8;
|
|
100
|
+
if (remaining > 0)
|
|
101
|
+
lines.push(m(lang, "allowedReadsListFolded", remaining));
|
|
102
|
+
}
|
|
92
103
|
const closingLineNotice = formatLensClosingLineNotice(spoke, lang);
|
|
93
104
|
if (closingLineNotice)
|
|
94
105
|
lines.push(` ${closingLineNotice}`);
|
package/package.json
CHANGED
package/providers.json
CHANGED
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
"charsPerToken": 1.0,
|
|
15
15
|
"tpmLimit": 200000,
|
|
16
16
|
"maxSpokeTokens": null,
|
|
17
|
-
"pricingSource": { "url": "https://developers.openai.com/api/docs/pricing", "asOf": "2026-08-
|
|
17
|
+
"pricingSource": { "url": "https://developers.openai.com/api/docs/pricing", "asOf": "2026-08-29", "note": "gpt-5.6-sol 目前為優惠價" },
|
|
18
18
|
"pricing": {
|
|
19
19
|
"gpt-5.6-luna": { "inputPerM": 0.20, "cachedInputPerM": 0.02, "outputPerM": 1.20 },
|
|
20
20
|
"gpt-5.6-terra": { "inputPerM": 2.00, "cachedInputPerM": 0.20, "outputPerM": 12.00 },
|
|
21
|
-
"gpt-5.6-sol": { "inputPerM":
|
|
21
|
+
"gpt-5.6-sol": { "inputPerM": 4.00, "cachedInputPerM": 0.40, "outputPerM": 20.00 }
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"deepseek": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"maxSpokeTokens": null,
|
|
38
38
|
"pricingSource": {
|
|
39
39
|
"url": "https://api-docs.deepseek.com/quick_start/pricing/",
|
|
40
|
-
"asOf": "2026-08-
|
|
41
|
-
"note": "
|
|
40
|
+
"asOf": "2026-08-29",
|
|
41
|
+
"note": "離峰(尖峰時段 01:00-04:00 與 06:00-10:00 UTC 以外)為尖峰的一半;本檔一個型號只放得下一組價,取尖峰=取上限。"
|
|
42
42
|
},
|
|
43
43
|
"pricing": {
|
|
44
44
|
"deepseek-v4-flash": { "inputPerM": 0.44, "cachedInputPerM": 0.014, "outputPerM": 1.32 },
|
|
@@ -55,15 +55,16 @@
|
|
|
55
55
|
"allowed": ["minimal", "low", "medium", "high"],
|
|
56
56
|
"default": "high"
|
|
57
57
|
},
|
|
58
|
-
"models": ["gemini-3.1-flash-lite", "gemini-3.5-flash-lite", "gemini-3.6-flash"],
|
|
58
|
+
"models": ["gemini-3.1-flash-lite", "gemini-3.5-flash-lite", "gemini-3.6-flash", "gemini-3.7-flash"],
|
|
59
59
|
"charsPerToken": 1.0,
|
|
60
60
|
"tpmLimit": null,
|
|
61
61
|
"maxSpokeTokens": null,
|
|
62
|
-
"pricingSource": { "url": "https://ai.google.dev/gemini-api/docs/pricing", "asOf": "2026-08-
|
|
62
|
+
"pricingSource": { "url": "https://ai.google.dev/gemini-api/docs/pricing", "asOf": "2026-08-29", "note": "文字/圖片/影片價;音訊另計。output 價含 thinking tokens。gemini-3.6-flash/gemini-3.7-flash 目前為優惠價" },
|
|
63
63
|
"pricing": {
|
|
64
64
|
"gemini-3.1-flash-lite": { "inputPerM": 0.25, "cachedInputPerM": 0.025, "outputPerM": 1.50 },
|
|
65
65
|
"gemini-3.5-flash-lite": { "inputPerM": 0.30, "cachedInputPerM": 0.03, "outputPerM": 2.50 },
|
|
66
|
-
"gemini-3.6-flash": { "inputPerM":
|
|
66
|
+
"gemini-3.6-flash": { "inputPerM": 0.75, "cachedInputPerM": 0.075, "outputPerM": 3.75 },
|
|
67
|
+
"gemini-3.7-flash": { "inputPerM": 0.75, "cachedInputPerM": 0.075, "outputPerM": 3.75 }
|
|
67
68
|
}
|
|
68
69
|
},
|
|
69
70
|
"anthropic": {
|
|
@@ -76,14 +77,15 @@
|
|
|
76
77
|
"allowed": ["low", "medium", "high", "xhigh", "max"],
|
|
77
78
|
"default": "high"
|
|
78
79
|
},
|
|
79
|
-
"models": ["claude-opus-5", "claude-sonnet-5"],
|
|
80
|
+
"models": ["claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5-20251001"],
|
|
80
81
|
"charsPerToken": 1.0,
|
|
81
82
|
"tpmLimit": null,
|
|
82
83
|
"maxSpokeTokens": null,
|
|
83
|
-
"pricingSource": { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "asOf": "2026-08-
|
|
84
|
+
"pricingSource": { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "asOf": "2026-08-29" },
|
|
84
85
|
"pricing": {
|
|
85
86
|
"claude-opus-5": { "inputPerM": 5.00, "cachedInputPerM": 0.50, "cacheWritePerM": 6.25, "outputPerM": 25.00 },
|
|
86
|
-
"claude-sonnet-5": { "inputPerM": 2.00, "cachedInputPerM": 0.20, "cacheWritePerM": 2.50, "outputPerM": 10.00 }
|
|
87
|
+
"claude-sonnet-5": { "inputPerM": 2.00, "cachedInputPerM": 0.20, "cacheWritePerM": 2.50, "outputPerM": 10.00 },
|
|
88
|
+
"claude-haiku-4-5-20251001": { "inputPerM": 1.00, "cachedInputPerM": 0.10, "cacheWritePerM": 1.25, "outputPerM": 5.00 }
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
91
|
}
|