w-dispatch-ai 1.0.33 → 1.0.34

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 (52) hide show
  1. package/README.md +2 -2
  2. package/dist/w-dispatch-ai.umd.js +2 -2
  3. package/dist/w-dispatch-ai.umd.js.map +1 -1
  4. package/docs/WDispatchAi.mjs.html +1 -1
  5. package/docs/adapters.mjs.html +1 -1
  6. package/docs/budgetFor.mjs.html +1 -1
  7. package/docs/buildValidator.mjs.html +1 -1
  8. package/docs/castPintOr.mjs.html +1 -1
  9. package/docs/dfTimeoutMs.mjs.html +1 -1
  10. package/docs/dispatchAi.mjs.html +1 -1
  11. package/docs/dispatchAiFallback.mjs.html +1 -1
  12. package/docs/dispatchAiWkf.mjs.html +1 -1
  13. package/docs/dispatchAntigravity.mjs.html +1 -1
  14. package/docs/dispatchApiOpenaiCompat.mjs.html +1 -1
  15. package/docs/dispatchApiOpenaiResponses.mjs.html +1 -1
  16. package/docs/dispatchApiTypesafeSystemone.mjs.html +1 -1
  17. package/docs/dispatchClaude.mjs.html +2 -2
  18. package/docs/dispatchCodex.mjs.html +2 -2
  19. package/docs/dispatchOpencode.mjs.html +1 -1
  20. package/docs/getCliArgs.mjs.html +1 -1
  21. package/docs/getErrorResult.mjs.html +1 -1
  22. package/docs/getErrorType.mjs.html +1 -1
  23. package/docs/global.html +4 -4
  24. package/docs/index.html +1 -1
  25. package/docs/quota_dfQuotaTimeoutMs.mjs.html +1 -1
  26. package/docs/quota_fetchQuotaJson.mjs.html +1 -1
  27. package/docs/quota_fromCodexUsageHttp.mjs.html +1 -1
  28. package/docs/quota_getQuotaAntigravity.mjs.html +1 -1
  29. package/docs/quota_getQuotaClaude.mjs.html +1 -1
  30. package/docs/quota_getQuotaCodex.mjs.html +1 -1
  31. package/docs/quota_readJsonOrNull.mjs.html +1 -1
  32. package/docs/quota_toQuotaLabel.mjs.html +1 -1
  33. package/docs/quota_toQuotaResult.mjs.html +1 -1
  34. package/docs/quota_toQuotaScopedLabel.mjs.html +1 -1
  35. package/docs/quota_toQuotaWindow.mjs.html +1 -1
  36. package/docs/readEnvFile.mjs.html +1 -1
  37. package/docs/resolveProviders.mjs.html +2 -2
  38. package/docs/wkf_callAiWithFallback.mjs.html +1 -1
  39. package/docs/wkf_createFileStore.mjs.html +1 -1
  40. package/docs/wkf_createUsageCounter.mjs.html +1 -1
  41. package/docs/wkf_extractJsonLoose.mjs.html +1 -1
  42. package/docs/wkf_noSideEffectPrefix.mjs.html +1 -1
  43. package/docs/wkf_runFanout.mjs.html +1 -1
  44. package/docs/wkf_runFanoutPipeline.mjs.html +1 -1
  45. package/docs/wkf_runRolePipeline.mjs.html +1 -1
  46. package/docs/wkf_salvageTruncatedArray.mjs.html +1 -1
  47. package/package.json +1 -1
  48. package/src/dispatchClaude.mjs +1 -1
  49. package/src/dispatchCodex.mjs +1 -1
  50. package/src/providers.mjs +35 -1
  51. package/src/resolveProviders.mjs +1 -1
  52. package/test/unit-providers.test.mjs +6 -1
package/src/providers.mjs CHANGED
@@ -169,6 +169,19 @@
169
169
  let OC_READONLY = { edit: 'deny', bash: 'ask' }
170
170
 
171
171
 
172
+ //claude條目共用之機械防寫(單一來源): 白名單而非黑名單。
173
+ // 原為黑名單['--disallowedTools','Write,Edit,NotebookEdit,Bash'], 2026-09-23金絲雀實測已失效——
174
+ // Windows版Claude Code(2.1.280)另有PowerShell工具不在黑名單內, opus-5.5與sonnet皆改用
175
+ // PowerShell之Set-Content寫檔落地(以--output-format stream-json之tool_use確認); 此外工具清單尚含
176
+ // Workflow/Task/Cron/SendMessage/Artifact等35項及claude.ai連接器之MCP工具(含create/update/delete,
177
+ // 可寫入外部服務)。黑名單每逢CLI新增工具即破, 故改白名單:
178
+ // --tools Read,Glob,Grep 只開放讀檔三工具(內建工具之白名單);
179
+ // --strict-mcp-config 排除所有MCP工具(--tools不管MCP, 單用時claude.ai Docs之寫入工具仍在)。
180
+ // 同日實測: 工具清單恰為Glob,Grep,Read; 要求寫檔(含指明可用PowerShell)未落地; 讀檔正常作答。
181
+ // 代價: 失去WebFetch/WebSearch等網路讀取工具; 需要時於條目覆寫extraArgs自行加入。
182
+ let CLAUDE_READONLY = ['--tools', 'Read,Glob,Grep', '--strict-mcp-config']
183
+
184
+
172
185
  let providers = [
173
186
 
174
187
  //cli版
@@ -271,11 +284,22 @@ let providers = [
271
284
  //工作流層無害(空回覆過不了validate而自動遞補); 需要寫入能力請於條目覆寫為true
272
285
  skipPermissions: false,
273
286
  },
287
+ //claude/codex各兩條: 在前者為預設(全取遞補時先試), 在後者為較強之新模型(2026-09-23使用者指示)
274
288
  {
275
289
  id: 'claude:sonnet',
276
290
  model: 'sonnet',
277
291
  kind: 'claude',
278
- extraArgs: ['--disallowedTools', 'Write,Edit,NotebookEdit,Bash'],
292
+ extraArgs: CLAUDE_READONLY,
293
+ },
294
+ {
295
+ id: 'claude:opus-5.5',
296
+ model: 'claude-opus-5-5',
297
+ kind: 'claude',
298
+ extraArgs: CLAUDE_READONLY,
299
+ //2026-09-23新增Opus 5.5(官方2026-09-22發布, API id claude-opus-5-5): Claude Code 2.1.280實測4.9~5.1s,
300
+ //以--output-format json之modelUsage確認實際服務模型為claude-opus-5-5。
301
+ //刻意寫全名而非別名'opus': 別名當下雖同樣指向5.5(同日實測), 但日後新版Opus發布時會無聲切換,
302
+ //全名可令條目行為固定。註: 走訂閱登入態, Opus之單次耗用額度高於Sonnet, 故排在sonnet之後
279
303
  },
280
304
  {
281
305
  id: 'codex:gpt-5.6-luna',
@@ -283,6 +307,16 @@ let providers = [
283
307
  kind: 'codex',
284
308
  sandbox: 'read-only',
285
309
  },
310
+ {
311
+ id: 'codex:gpt-6-sol',
312
+ model: 'gpt-6-sol',
313
+ kind: 'codex',
314
+ sandbox: 'read-only',
315
+ //2026-09-23新增GPT-6 Sol(官方定位複雜程式與agentic工作): Codex CLI 0.156.1(穩定版)實測6.3~6.9s,
316
+ //該帳號之app-server model/list已列gpt-6-sol/gpt-6-luna/gpt-6-astra; 金絲雀實測唯讀沙箱擋下寫檔。
317
+ //openai/codex issue #47420稱「僅alpha版可用」係0.154.0使用者之回報, 0.156.1已不成立;
318
+ //若本機為較舊之codex而清單無此模型, 先執行`codex update`。推理強度沿用使用者config(實測為high)
319
+ },
286
320
 
287
321
  //api版
288
322
  {
@@ -57,7 +57,7 @@ import strFindSimilar from 'wsemi/src/strFindSimilar.mjs'
57
57
  * //全取: envVar展開為keys, 缺環境變數者列入skipped
58
58
  * let { providers, table, skipped } = resolveProviders(providersAll, { env })
59
59
  * console.log(providers.length, skipped)
60
- * // => 17 []
60
+ * // => 15 []
61
61
  *
62
62
  * //pick打錯字時, missing附拼寫提示hints(最接近之可用id)
63
63
  * let rm = resolveProviders(providersAll, { env, pick: ['poolside/laguna-s-2.1'] })
@@ -89,7 +89,12 @@ describe('providers', function() {
89
89
  return !!perm && perm.edit === 'deny' && perm.bash === 'ask'
90
90
  }
91
91
  if (p.kind === 'claude') {
92
- return Array.isArray(p.extraArgs) && p.extraArgs.includes('--disallowedTools')
92
+ //白名單: 僅開放讀檔三工具且排除MCP; 黑名單(--disallowedTools)於2026-09-23實測已被
93
+ //Windows之PowerShell工具繞過而寫檔落地, 故不接受僅有黑名單之條目
94
+ let a = Array.isArray(p.extraArgs) ? p.extraArgs : []
95
+ let i = a.indexOf('--tools')
96
+ let allow = i >= 0 ? String(a[i + 1] || '').split(',').map((s) => s.trim()).sort().join(',') : ''
97
+ return allow === 'Glob,Grep,Read' && a.includes('--strict-mcp-config')
93
98
  }
94
99
  if (p.kind === 'codex') {
95
100
  return p.sandbox === 'read-only'