w-dispatch-ai 1.0.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.
Files changed (73) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintignore +3 -0
  3. package/.eslintrc.js +55 -0
  4. package/.jsdoc +25 -0
  5. package/LICENSE +21 -0
  6. package/README.md +207 -0
  7. package/SECURITY.md +5 -0
  8. package/babel.config.js +16 -0
  9. package/dist/w-dispatch-ai.umd.js +7 -0
  10. package/dist/w-dispatch-ai.umd.js.map +1 -0
  11. package/docs/WDispatchAi.mjs.html +110 -0
  12. package/docs/adapters.mjs.html +100 -0
  13. package/docs/dispatchAi.mjs.html +133 -0
  14. package/docs/dispatchClaude.mjs.html +190 -0
  15. package/docs/dispatchCodex.mjs.html +191 -0
  16. package/docs/dispatchOpencode.mjs.html +260 -0
  17. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  18. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  19. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  20. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  21. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  22. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  23. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  24. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  25. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  26. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  27. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  28. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  29. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  30. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  31. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  32. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  33. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  34. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  35. package/docs/getCliArgs.mjs.html +126 -0
  36. package/docs/getErrorResult.mjs.html +115 -0
  37. package/docs/global.html +2924 -0
  38. package/docs/index.html +84 -0
  39. package/docs/scripts/collapse.js +39 -0
  40. package/docs/scripts/commonNav.js +28 -0
  41. package/docs/scripts/linenumber.js +25 -0
  42. package/docs/scripts/nav.js +12 -0
  43. package/docs/scripts/polyfill.js +4 -0
  44. package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  45. package/docs/scripts/prettify/lang-css.js +2 -0
  46. package/docs/scripts/prettify/prettify.js +28 -0
  47. package/docs/scripts/search.js +99 -0
  48. package/docs/styles/jsdoc.css +776 -0
  49. package/docs/styles/prettify.css +80 -0
  50. package/g.mjs +94 -0
  51. package/package.json +38 -0
  52. package/script.txt +17 -0
  53. package/src/WDispatchAi.mjs +38 -0
  54. package/src/adapters.mjs +28 -0
  55. package/src/dispatchAi.mjs +61 -0
  56. package/src/dispatchClaude.mjs +118 -0
  57. package/src/dispatchCodex.mjs +119 -0
  58. package/src/dispatchOpencode.mjs +188 -0
  59. package/src/getCliArgs.mjs +54 -0
  60. package/src/getErrorResult.mjs +43 -0
  61. package/test/tools/fakeCliForTest.mjs +139 -0
  62. package/test/unit-WDispatchAi.test.mjs +79 -0
  63. package/test/unit-adapters.test.mjs +34 -0
  64. package/test/unit-dispatchAi.test.mjs +104 -0
  65. package/test/unit-dispatchClaude.test.mjs +144 -0
  66. package/test/unit-dispatchCodex.test.mjs +113 -0
  67. package/test/unit-dispatchOpencode.test.mjs +176 -0
  68. package/test/unit-getCliArgs.test.mjs +55 -0
  69. package/test/unit-getErrorResult.test.mjs +45 -0
  70. package/toolg/addVersion.mjs +4 -0
  71. package/toolg/cleanFolder.mjs +5 -0
  72. package/toolg/gDistRollup.mjs +24 -0
  73. package/toolg/modifyReadme.mjs +4 -0
@@ -0,0 +1,126 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+
5
+ <meta charset="utf-8">
6
+ <title>getCliArgs.mjs - Documentation</title>
7
+
8
+
9
+ <script src="scripts/prettify/prettify.js"></script>
10
+ <script src="scripts/prettify/lang-css.js"></script>
11
+ <!--[if lt IE 9]>
12
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
13
+ <![endif]-->
14
+ <link type="text/css" rel="stylesheet" href="styles/prettify.css">
15
+ <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
16
+ <script src="scripts/nav.js" defer></script>
17
+
18
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
19
+ </head>
20
+ <body>
21
+
22
+ <input type="checkbox" id="nav-trigger" class="nav-trigger" />
23
+ <label for="nav-trigger" class="navicon-button x">
24
+ <div class="navicon"></div>
25
+ </label>
26
+
27
+ <label for="nav-trigger" class="overlay"></label>
28
+
29
+ <nav >
30
+
31
+
32
+ <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#WDispatchAi">WDispatchAi</a></li><li><a href="global.html#adapters">adapters</a></li><li><a href="global.html#dispatchAi">dispatchAi</a></li><li><a href="global.html#dispatchClaude">dispatchClaude</a></li><li><a href="global.html#dispatchCodex">dispatchCodex</a></li><li><a href="global.html#dispatchOpencode">dispatchOpencode</a></li><li><a href="global.html#getCliArgs">getCliArgs</a></li><li><a href="global.html#getErrorResult">getErrorResult</a></li></ul>
33
+
34
+ </nav>
35
+
36
+ <div id="main">
37
+
38
+ <h1 class="page-title">getCliArgs.mjs</h1>
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+ <section>
47
+ <article>
48
+ <pre class="prettyprint source linenums"><code>import isarr from 'wsemi/src/isarr.mjs'
49
+ import isestr from 'wsemi/src/isestr.mjs'
50
+
51
+
52
+ /**
53
+ * 將各段命令列參數展平為字串陣列,並濾除非有效字串
54
+ *
55
+ * 各轉接器之參數為「固定旗標」加「可選旗標」加「額外旗標」之組合,
56
+ * 其中可選旗標於未給值時須整段消失(例如未給model就不可出現懸空的`--model`),
57
+ * 故呼叫端須以「整段陣列給或不給」表達,本函數僅負責展平與濾除非有效字串,不判斷旗標配對;
58
+ * 過濾之必要在於Nodejs之spawn要求各參數必為字串,混入undefined或數字會直接拋出TypeError,
59
+ * 破壞本套件「不reject、僅以結果物件回報」之約定
60
+ *
61
+ * @param {...(String|Array)} args 輸入參數字串或參數字串陣列,可給多個
62
+ * @returns {Array} 回傳展平且濾除非有效字串後之參數字串陣列
63
+ * @example
64
+ *
65
+ * import getCliArgs from './src/getCliArgs.mjs'
66
+ *
67
+ * console.log(getCliArgs('-p', ['--model', 'sonnet']))
68
+ * // => ['-p', '--model', 'sonnet']
69
+ *
70
+ * console.log(getCliArgs('-p', null, 123, ['', '--verbose']))
71
+ * // => ['-p', '--verbose']
72
+ *
73
+ */
74
+ function getCliArgs(...args) {
75
+
76
+ let r = []
77
+
78
+ for (let arg of args) {
79
+
80
+ //陣列則逐項展開, 僅展一層
81
+ if (isarr(arg)) {
82
+ for (let v of arg) {
83
+ if (isestr(v)) {
84
+ r.push(v)
85
+ }
86
+ }
87
+ continue
88
+ }
89
+
90
+ //非陣列即視為單一參數
91
+ if (isestr(arg)) {
92
+ r.push(arg)
93
+ }
94
+
95
+ }
96
+
97
+ return r
98
+ }
99
+
100
+
101
+ export default getCliArgs
102
+ </code></pre>
103
+ </article>
104
+ </section>
105
+
106
+
107
+
108
+
109
+
110
+
111
+ </div>
112
+
113
+ <br class="clear">
114
+
115
+ <footer>
116
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Sun Aug 09 2026 22:39:08 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
117
+ </footer>
118
+
119
+ <script>prettyPrint();</script>
120
+ <script src="scripts/polyfill.js"></script>
121
+ <script src="scripts/linenumber.js"></script>
122
+
123
+
124
+
125
+ </body>
126
+ </html>
@@ -0,0 +1,115 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+
5
+ <meta charset="utf-8">
6
+ <title>getErrorResult.mjs - Documentation</title>
7
+
8
+
9
+ <script src="scripts/prettify/prettify.js"></script>
10
+ <script src="scripts/prettify/lang-css.js"></script>
11
+ <!--[if lt IE 9]>
12
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
13
+ <![endif]-->
14
+ <link type="text/css" rel="stylesheet" href="styles/prettify.css">
15
+ <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
16
+ <script src="scripts/nav.js" defer></script>
17
+
18
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
19
+ </head>
20
+ <body>
21
+
22
+ <input type="checkbox" id="nav-trigger" class="nav-trigger" />
23
+ <label for="nav-trigger" class="navicon-button x">
24
+ <div class="navicon"></div>
25
+ </label>
26
+
27
+ <label for="nav-trigger" class="overlay"></label>
28
+
29
+ <nav >
30
+
31
+
32
+ <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#WDispatchAi">WDispatchAi</a></li><li><a href="global.html#adapters">adapters</a></li><li><a href="global.html#dispatchAi">dispatchAi</a></li><li><a href="global.html#dispatchClaude">dispatchClaude</a></li><li><a href="global.html#dispatchCodex">dispatchCodex</a></li><li><a href="global.html#dispatchOpencode">dispatchOpencode</a></li><li><a href="global.html#getCliArgs">getCliArgs</a></li><li><a href="global.html#getErrorResult">getErrorResult</a></li></ul>
33
+
34
+ </nav>
35
+
36
+ <div id="main">
37
+
38
+ <h1 class="page-title">getErrorResult.mjs</h1>
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+ <section>
47
+ <article>
48
+ <pre class="prettyprint source linenums"><code>import isestr from 'wsemi/src/isestr.mjs'
49
+
50
+
51
+ /**
52
+ * 產生與execCli同結構之錯誤結果物件
53
+ *
54
+ * 本套件各dispatch函數一律不reject,參數檢核失敗時即以本函數回傳錯誤結果物件,
55
+ * 其欄位與wsemi之execCli回傳結構一致,故呼叫端可用同一套欄位判斷成敗,
56
+ * 無須區分「參數錯誤」與「CLI執行失敗」兩種來源
57
+ *
58
+ * @param {String} error 輸入錯誤訊息字串
59
+ * @returns {Object} 回傳結果物件,內含ok(布林值,恆為false)、stdout(空字串)、stderr(空字串)、code(null)、error(錯誤訊息字串)、durationMs(0)、attempts(0)
60
+ * @example
61
+ *
62
+ * import getErrorResult from './src/getErrorResult.mjs'
63
+ *
64
+ * console.log(getErrorResult('prompt must be a non-empty string'))
65
+ * // => { ok: false, stdout: '', stderr: '', code: null, error: 'prompt must be a non-empty string', durationMs: 0, attempts: 0 }
66
+ *
67
+ * console.log(getErrorResult(null).error)
68
+ * // => 'unknown error'
69
+ *
70
+ */
71
+ function getErrorResult(error) {
72
+
73
+ //check, 非有效字串時給予預設訊息, 確保error欄位恆為非空字串
74
+ if (!isestr(error)) {
75
+ error = 'unknown error'
76
+ }
77
+
78
+ return {
79
+ ok: false,
80
+ stdout: '',
81
+ stderr: '',
82
+ code: null,
83
+ error,
84
+ durationMs: 0,
85
+ attempts: 0,
86
+ }
87
+ }
88
+
89
+
90
+ export default getErrorResult
91
+ </code></pre>
92
+ </article>
93
+ </section>
94
+
95
+
96
+
97
+
98
+
99
+
100
+ </div>
101
+
102
+ <br class="clear">
103
+
104
+ <footer>
105
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Sun Aug 09 2026 22:39:08 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
106
+ </footer>
107
+
108
+ <script>prettyPrint();</script>
109
+ <script src="scripts/polyfill.js"></script>
110
+ <script src="scripts/linenumber.js"></script>
111
+
112
+
113
+
114
+ </body>
115
+ </html>