@workflow-code/cli 0.2.4-20261012001.codex-cli-web → 0.2.4-20261012003.codex-cli-web
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/dist/index.js +1 -1
- package/dist/web/kanban-workspace.js +13199 -298
- package/dist/web/worker.mjs +2 -1
- package/dist/web/workflow-ui.js +13292 -389
- package/dist/web/workflow-workspace.js +13343 -440
- package/dist/{web-V5NX5ERI.js → web-YUMRIE22.js} +347 -28
- package/package.json +4 -4
|
@@ -34,7 +34,9 @@ import {
|
|
|
34
34
|
} from "./chunk-P6K3NB5S.js";
|
|
35
35
|
import {
|
|
36
36
|
getCurrentLocale,
|
|
37
|
-
i18n
|
|
37
|
+
i18n,
|
|
38
|
+
initI18n,
|
|
39
|
+
normalizeLocale
|
|
38
40
|
} from "./chunk-7WEXRL5A.js";
|
|
39
41
|
import "./chunk-NSPRIPOP.js";
|
|
40
42
|
|
|
@@ -42,6 +44,319 @@ import "./chunk-NSPRIPOP.js";
|
|
|
42
44
|
import { spawn as spawn3 } from "child_process";
|
|
43
45
|
import path8 from "path";
|
|
44
46
|
|
|
47
|
+
// src/web/messages.zh-cn.json
|
|
48
|
+
var messages_zh_cn_default = {
|
|
49
|
+
" and others": "\u7B49",
|
|
50
|
+
", ": "\u3001",
|
|
51
|
+
"{0}": "\u5DF2{0}",
|
|
52
|
+
"{0} \xB7 {1}/{2} items": "{0} \xB7 {1}/{2} \u9879",
|
|
53
|
+
"{0} days": "{0} \u5929",
|
|
54
|
+
"{0} failed": "{0}\u5931\u8D25",
|
|
55
|
+
"{0} hours": "{0} \u5C0F\u65F6",
|
|
56
|
+
"{0} min": "{0} \u5206",
|
|
57
|
+
"{0} must be a valid boolean.": "{0} \u9700\u8981\u662F\u6709\u6548\u5E03\u5C14\u503C\u3002",
|
|
58
|
+
"{0} must be a valid number.": "{0} \u9700\u8981\u662F\u6709\u6548\u6570\u5B57\u3002",
|
|
59
|
+
"{0} must be valid JSON.": "{0} \u9700\u8981\u662F\u6709\u6548\u7684 JSON\u3002",
|
|
60
|
+
"{0} selected": "\u5DF2\u9009 {0} \u9879",
|
|
61
|
+
"{0} tools": "{0} \u4E2A\u5DE5\u5177",
|
|
62
|
+
"{0}...": "\u6B63\u5728{0}",
|
|
63
|
+
"{0}{1} \xB7 {2} items": "\u5DF2{0}{1} \xB7 {2} \u9879",
|
|
64
|
+
"{1} in {0}": "{0} \u4E2D {1}",
|
|
65
|
+
"Account balance ${0}": "\u8D26\u6237\u4F59\u989D ${0}",
|
|
66
|
+
"Add attachment": "\u6DFB\u52A0\u9644\u4EF6",
|
|
67
|
+
"Agent run": "Agent \u8FD0\u884C",
|
|
68
|
+
"All chats": "\u5168\u90E8\u804A\u5929",
|
|
69
|
+
"All conversations": "\u5168\u90E8\u5BF9\u8BDD",
|
|
70
|
+
Apply: "\u5E94\u7528",
|
|
71
|
+
"Apply changes": "\u5E94\u7528\u4FEE\u6539",
|
|
72
|
+
"Approve execution": "\u6279\u51C6\u6267\u884C",
|
|
73
|
+
Ask: "\u63D0\u95EE",
|
|
74
|
+
Attachment: "\u9644\u4EF6",
|
|
75
|
+
"Auto-approve": "\u81EA\u52A8\u6279\u51C6",
|
|
76
|
+
"Awaiting confirmation": "\u7B49\u5F85\u786E\u8BA4",
|
|
77
|
+
"Awaiting confirmation: {0}": "\u7B49\u5F85\u786E\u8BA4{0}",
|
|
78
|
+
"Back to {0}": "\u8FD4\u56DE {0}",
|
|
79
|
+
Branch: "\u5206\u652F",
|
|
80
|
+
"Browser sign-in": "\u6D4F\u89C8\u5668\u767B\u5F55",
|
|
81
|
+
"Call tool": "\u8C03\u7528\u5DE5\u5177",
|
|
82
|
+
Cancel: "\u53D6\u6D88",
|
|
83
|
+
"Cancel editing": "\u53D6\u6D88\u7F16\u8F91",
|
|
84
|
+
Card: "\u5361\u7247",
|
|
85
|
+
Chat: "\u804A\u5929",
|
|
86
|
+
"Choose files": "\u9009\u62E9\u6587\u4EF6",
|
|
87
|
+
Close: "\u5173\u95ED",
|
|
88
|
+
"Close account": "\u5173\u95ED\u8D26\u53F7",
|
|
89
|
+
"Close conversation history": "\u5173\u95ED\u5BF9\u8BDD\u5386\u53F2",
|
|
90
|
+
"Close parameters": "\u5173\u95ED\u53C2\u6570",
|
|
91
|
+
"Close search": "\u5173\u95ED\u641C\u7D22",
|
|
92
|
+
Code: "\u4EE3\u7801",
|
|
93
|
+
Command: "\u547D\u4EE4",
|
|
94
|
+
"Compact context": "\u538B\u7F29\u4E0A\u4E0B\u6587",
|
|
95
|
+
Complete: "\u5B8C\u6210",
|
|
96
|
+
Completed: "\u5DF2\u5B8C\u6210",
|
|
97
|
+
"Configuration {0}": "\u914D\u7F6E {0}",
|
|
98
|
+
"Configuration actions": "\u914D\u7F6E\u64CD\u4F5C",
|
|
99
|
+
"Configuration name": "\u914D\u7F6E\u540D\u79F0",
|
|
100
|
+
"Connecting to project": "\u6B63\u5728\u8FDE\u63A5\u9879\u76EE",
|
|
101
|
+
"Connection changed.": "\u8FDE\u63A5\u5DF2\u53D8\u66F4\u3002",
|
|
102
|
+
"Connection interrupted": "\u8FDE\u63A5\u5DF2\u4E2D\u65AD",
|
|
103
|
+
"Connection interrupted.": "\u8FDE\u63A5\u5DF2\u4E2D\u65AD\u3002",
|
|
104
|
+
"Connection not verified": "\u8FDE\u63A5\u672A\u9A8C\u8BC1",
|
|
105
|
+
Conversation: "\u5BF9\u8BDD",
|
|
106
|
+
"Conversation actions": "\u5BF9\u8BDD\u64CD\u4F5C",
|
|
107
|
+
"Conversation history": "\u5BF9\u8BDD\u5386\u53F2",
|
|
108
|
+
"Conversation messages": "\u5BF9\u8BDD\u6D88\u606F",
|
|
109
|
+
"Conversation name": "\u5BF9\u8BDD\u540D\u79F0",
|
|
110
|
+
Conversations: "\u5BF9\u8BDD\u5217\u8868",
|
|
111
|
+
Copied: "\u5DF2\u590D\u5236",
|
|
112
|
+
Copy: "\u590D\u5236",
|
|
113
|
+
"Copy {0}": "\u590D\u5236{0}",
|
|
114
|
+
"Copy code": "\u590D\u5236\u4EE3\u7801",
|
|
115
|
+
"Copy message": "\u590D\u5236\u6D88\u606F",
|
|
116
|
+
"Current configuration": "\u5F53\u524D\u914D\u7F6E",
|
|
117
|
+
Daily: "\u6BCF\u65E5",
|
|
118
|
+
Default: "\u9ED8\u8BA4",
|
|
119
|
+
Delete: "\u5220\u9664",
|
|
120
|
+
"Delete conversation": "\u5220\u9664\u5BF9\u8BDD",
|
|
121
|
+
"Delete record": "\u5220\u9664\u8BB0\u5F55",
|
|
122
|
+
"Delete this configuration?": "\u5220\u9664\u8FD9\u4E2A\u914D\u7F6E\uFF1F",
|
|
123
|
+
"Delete this conversation?": "\u5220\u9664\u8FD9\u4E2A\u5BF9\u8BDD\uFF1F",
|
|
124
|
+
"Delete this run?": "\u5220\u9664\u8FD9\u6761\u8FD0\u884C\u8BB0\u5F55\uFF1F",
|
|
125
|
+
Deny: "\u62D2\u7EDD",
|
|
126
|
+
Details: "\u8BE6\u60C5",
|
|
127
|
+
"Download file": "\u4E0B\u8F7D\u6587\u4EF6",
|
|
128
|
+
"Duration {0}{1}s": "\u7528\u65F6 {0}{1}s",
|
|
129
|
+
Edit: "\u7F16\u8F91",
|
|
130
|
+
"Edit file": "\u7F16\u8F91\u6587\u4EF6",
|
|
131
|
+
"Edit queued message": "\u7F16\u8F91\u5F85\u53D1\u6D88\u606F",
|
|
132
|
+
Email: "\u90AE\u7BB1",
|
|
133
|
+
Enable: "\u542F\u7528",
|
|
134
|
+
"End run": "\u7ED3\u675F\u8FD0\u884C",
|
|
135
|
+
"Ended: {0}": "\u7ED3\u675F\uFF1A{0}",
|
|
136
|
+
"Enter your email and password.": "\u8BF7\u8F93\u5165\u90AE\u7BB1\u548C\u5BC6\u7801\u3002",
|
|
137
|
+
"Entrypoint parameters": "\u5165\u53E3\u53C2\u6570",
|
|
138
|
+
Entrypoints: "\u8FD0\u884C\u5165\u53E3",
|
|
139
|
+
Error: "\u9519\u8BEF",
|
|
140
|
+
Execute: "\u6267\u884C",
|
|
141
|
+
"Execute plan": "\u6309\u8BA1\u5212\u6267\u884C",
|
|
142
|
+
"Export conversation": "\u5BFC\u51FA\u5BF9\u8BDD",
|
|
143
|
+
"Export record": "\u5BFC\u51FA\u8BB0\u5F55",
|
|
144
|
+
"Export run": "\u5BFC\u51FA\u8FD0\u884C\u8BB0\u5F55",
|
|
145
|
+
Failed: "\u5931\u8D25",
|
|
146
|
+
"Failed to load Kanban": "\u770B\u677F\u52A0\u8F7D\u5931\u8D25",
|
|
147
|
+
File: "\u6587\u4EF6",
|
|
148
|
+
"File exceeds 50 MiB.": "\u6587\u4EF6\u8D85\u8FC7 50 MiB\u3002",
|
|
149
|
+
"Files in {0}": "{0} \u4E2D\u7684\u6587\u4EF6",
|
|
150
|
+
"Fit graph": "\u9002\u914D\u6D41\u7A0B",
|
|
151
|
+
Form: "\u8868\u5355",
|
|
152
|
+
"Full screen": "\u5168\u5C4F",
|
|
153
|
+
"Generated file": "\u751F\u6210\u6587\u4EF6",
|
|
154
|
+
"Go to latest message": "\u56DE\u5230\u6700\u65B0\u6D88\u606F",
|
|
155
|
+
Graph: "\u6D41\u7A0B",
|
|
156
|
+
Height: "\u9AD8\u5EA6",
|
|
157
|
+
"Hide conversations": "\u9690\u85CF\u5BF9\u8BDD\u5217\u8868",
|
|
158
|
+
"Hide Kanban configurations": "\u9690\u85CF\u770B\u677F\u914D\u7F6E",
|
|
159
|
+
"Hide password": "\u9690\u85CF\u5BC6\u7801",
|
|
160
|
+
"Hide runs": "\u9690\u85CF\u8FD0\u884C\u8BB0\u5F55",
|
|
161
|
+
Image: "\u56FE\u7247",
|
|
162
|
+
"Incorrect email or password, or sign-in expired.": "\u90AE\u7BB1\u6216\u5BC6\u7801\u4E0D\u6B63\u786E\uFF0C\u6216\u767B\u5F55\u5DF2\u5931\u6548\u3002",
|
|
163
|
+
Interrupted: "\u5DF2\u4E2D\u65AD",
|
|
164
|
+
"JSON argument array": "JSON \u53C2\u6570\u6570\u7EC4",
|
|
165
|
+
"Just now": "\u521A\u521A",
|
|
166
|
+
Kanban: "\u770B\u677F",
|
|
167
|
+
"Kanban configurations": "\u770B\u677F\u914D\u7F6E",
|
|
168
|
+
List: "\u5217\u51FA",
|
|
169
|
+
"List files": "\u5217\u51FA\u6587\u4EF6",
|
|
170
|
+
"Load more": "\u52A0\u8F7D\u66F4\u591A",
|
|
171
|
+
"Loading Kanban": "\u6B63\u5728\u52A0\u8F7D\u770B\u677F",
|
|
172
|
+
"Loading parameters...": "\u52A0\u8F7D\u53C2\u6570...",
|
|
173
|
+
"Loading...": "\u52A0\u8F7D\u4E2D...",
|
|
174
|
+
"Lock title": "\u9501\u5B9A\u6807\u9898",
|
|
175
|
+
Logs: "\u65E5\u5FD7",
|
|
176
|
+
Loop: "\u5FAA\u73AF",
|
|
177
|
+
"Loop end": "\u5FAA\u73AF\u7ED3\u675F",
|
|
178
|
+
"Managed by server": "\u7531\u670D\u52A1\u5668\u7BA1\u7406",
|
|
179
|
+
Merge: "\u6C47\u5408",
|
|
180
|
+
Message: "\u6D88\u606F",
|
|
181
|
+
Monthly: "\u6BCF\u6708",
|
|
182
|
+
"Move up": "\u4E0A\u79FB",
|
|
183
|
+
"New configuration": "\u65B0\u5EFA\u914D\u7F6E",
|
|
184
|
+
"New conversation": "\u65B0\u5BF9\u8BDD",
|
|
185
|
+
"New run": "\u65B0\u5EFA\u8FD0\u884C",
|
|
186
|
+
Next: "\u4E0B\u4E00\u4E2A",
|
|
187
|
+
"Next question": "\u4E0B\u4E00\u95EE",
|
|
188
|
+
No: "\u5426",
|
|
189
|
+
"No active subscriptions": "\u6682\u65E0\u5DF2\u8BA2\u9605\u5957\u9910",
|
|
190
|
+
"No additional details": "\u6682\u65E0\u989D\u5916\u8BE6\u60C5",
|
|
191
|
+
"No available options": "\u6682\u65E0\u53EF\u7528\u9009\u9879",
|
|
192
|
+
"No conversations": "\u6682\u65E0\u5BF9\u8BDD",
|
|
193
|
+
"No logs": "\u6682\u65E0\u65E5\u5FD7",
|
|
194
|
+
"No matching conversations": "\u6CA1\u6709\u5339\u914D\u7684\u5BF9\u8BDD",
|
|
195
|
+
"No options": "\u6682\u65E0\u9009\u9879",
|
|
196
|
+
"No page methods registered": "\u9875\u9762\u6682\u672A\u6CE8\u518C\u65B9\u6CD5",
|
|
197
|
+
"No runs": "\u6682\u65E0\u8FD0\u884C\u8BB0\u5F55",
|
|
198
|
+
"No static workflow structure is available. Showing recorded execution nodes.": "\u672A\u89E3\u6790\u5230\u9759\u6001\u6D41\u7A0B\u7ED3\u6784\uFF0C\u663E\u793A\u5DF2\u6709\u8FD0\u884C\u8282\u70B9\u3002",
|
|
199
|
+
"No tools declared by this project": "\u9879\u76EE\u672A\u58F0\u660E\u5DE5\u5177",
|
|
200
|
+
"Node {0} does not match the static structure.": "\u8282\u70B9 {0} \u672A\u5339\u914D\u9759\u6001\u7ED3\u6784\u3002",
|
|
201
|
+
"Not selected": "\u672A\u9009\u62E9",
|
|
202
|
+
"Open {0}": "\u6253\u5F00 {0}",
|
|
203
|
+
"Page methods": "\u9875\u9762\u65B9\u6CD5",
|
|
204
|
+
"Parameter mode": "\u53C2\u6570\u6A21\u5F0F",
|
|
205
|
+
Parameters: "\u53C2\u6570",
|
|
206
|
+
"Parameters JSON": "\u53C2\u6570 JSON",
|
|
207
|
+
Password: "\u5BC6\u7801",
|
|
208
|
+
"Pending approval": "\u5F85\u786E\u8BA4",
|
|
209
|
+
Phone: "\u624B\u673A",
|
|
210
|
+
Plan: "\u8BA1\u5212",
|
|
211
|
+
"Please confirm {0}": "\u8BF7\u786E\u8BA4 {0}",
|
|
212
|
+
"Please enter {0}.": "\u8BF7\u586B\u5199 {0}\u3002",
|
|
213
|
+
"Preview size": "\u9884\u89C8\u5C3A\u5BF8",
|
|
214
|
+
Previous: "\u4E0A\u4E00\u4E2A",
|
|
215
|
+
"Previous question": "\u4E0A\u4E00\u95EE",
|
|
216
|
+
"Project connection expired": "\u9879\u76EE\u8FDE\u63A5\u5DF2\u5931\u6548",
|
|
217
|
+
"Project connection expired.": "\u9879\u76EE\u8FDE\u63A5\u5DF2\u5931\u6548\u3002",
|
|
218
|
+
"Queued messages ({0})": "\u5F85\u53D1\u6D88\u606F ({0})",
|
|
219
|
+
Read: "\u8BFB\u53D6",
|
|
220
|
+
"Read data": "\u8BFB\u53D6\u6570\u636E",
|
|
221
|
+
"Read file": "\u8BFB\u53D6\u6587\u4EF6",
|
|
222
|
+
"Read knowledge": "\u8BFB\u53D6\u77E5\u8BC6",
|
|
223
|
+
"Read web page": "\u8BFB\u53D6\u7F51\u9875",
|
|
224
|
+
Reasoning: "\u601D\u8003\u8FC7\u7A0B",
|
|
225
|
+
Reconnect: "\u91CD\u65B0\u8FDE\u63A5",
|
|
226
|
+
"Reconnecting...": "\u6B63\u5728\u91CD\u65B0\u8FDE\u63A5...",
|
|
227
|
+
"Reconnection will start when the network is available.": "\u7F51\u7EDC\u6062\u590D\u540E\u5C06\u81EA\u52A8\u91CD\u8FDE\u3002",
|
|
228
|
+
"Refresh Kanban": "\u5237\u65B0\u770B\u677F",
|
|
229
|
+
"Refresh parameters": "\u5237\u65B0\u53C2\u6570",
|
|
230
|
+
"Refresh usage": "\u5237\u65B0\u7528\u91CF",
|
|
231
|
+
"Related projects are unavailable: {0}": "\u5173\u8054\u9879\u76EE\u4E0D\u53EF\u7528\uFF1A{0}",
|
|
232
|
+
"Remove attachment": "\u79FB\u9664\u9644\u4EF6",
|
|
233
|
+
"Remove file": "\u79FB\u9664\u6587\u4EF6",
|
|
234
|
+
Rename: "\u91CD\u547D\u540D",
|
|
235
|
+
"Rename configuration": "\u91CD\u547D\u540D\u914D\u7F6E",
|
|
236
|
+
"Rename conversation": "\u91CD\u547D\u540D\u5BF9\u8BDD",
|
|
237
|
+
"Reopen using the project's run URL.": "\u8BF7\u4F7F\u7528\u9879\u76EE\u8FD0\u884C\u5730\u5740\u91CD\u65B0\u6253\u5F00\u3002",
|
|
238
|
+
Rerun: "\u91CD\u65B0\u8FD0\u884C",
|
|
239
|
+
Reset: "\u91CD\u7F6E",
|
|
240
|
+
"Reset options": "\u91CD\u7F6E\u9009\u9879",
|
|
241
|
+
"Resize preview": "\u8C03\u6574\u9884\u89C8\u5C3A\u5BF8",
|
|
242
|
+
Responding: "\u56DE\u590D\u4E2D",
|
|
243
|
+
"Responding...": "\u6B63\u5728\u56DE\u590D...",
|
|
244
|
+
Result: "\u7ED3\u679C",
|
|
245
|
+
"Resume queue": "\u7EE7\u7EED\u53D1\u9001\u961F\u5217",
|
|
246
|
+
"Resume run": "\u7EE7\u7EED\u8FD0\u884C",
|
|
247
|
+
Retry: "\u91CD\u8BD5",
|
|
248
|
+
"Retry loading parameters": "\u91CD\u8BD5\u52A0\u8F7D\u53C2\u6570",
|
|
249
|
+
"Retry save": "\u91CD\u8BD5\u4FDD\u5B58",
|
|
250
|
+
"Revise instructions": "\u4FEE\u6539\u8981\u6C42",
|
|
251
|
+
"Revise plan": "\u4FEE\u6539\u8BA1\u5212",
|
|
252
|
+
Run: "\u8FD0\u884C",
|
|
253
|
+
"Run arguments must be an array of strings.": "\u8FD0\u884C\u53C2\u6570\u9700\u8981\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\u3002",
|
|
254
|
+
"Run command": "\u8FD0\u884C\u547D\u4EE4",
|
|
255
|
+
"Run failed": "\u8FD0\u884C\u5931\u8D25",
|
|
256
|
+
"Run interrupted": "\u8FD0\u884C\u5DF2\u4E2D\u65AD",
|
|
257
|
+
"Run logs": "\u8FD0\u884C\u65E5\u5FD7",
|
|
258
|
+
"Run parameters": "\u8FD0\u884C\u53C2\u6570",
|
|
259
|
+
"Run records \xB7 {0} items, {1} failed": "\u8FD0\u884C\u8BB0\u5F55 \xB7 {0} \u9879\uFF0C{1} \u9879\u5931\u8D25",
|
|
260
|
+
"Run subtask": "\u8FD0\u884C\u5B50\u4EFB\u52A1",
|
|
261
|
+
"Run timed out": "\u8FD0\u884C\u8D85\u65F6",
|
|
262
|
+
Running: "\u8FD0\u884C\u4E2D",
|
|
263
|
+
"Running...": "\u6B63\u5728\u8FD0\u884C...",
|
|
264
|
+
Runs: "\u8FD0\u884C\u8BB0\u5F55",
|
|
265
|
+
Save: "\u4FDD\u5B58",
|
|
266
|
+
"Save queued message": "\u4FDD\u5B58\u5F85\u53D1\u6D88\u606F",
|
|
267
|
+
Search: "\u641C\u7D22",
|
|
268
|
+
"Search all conversations": "\u641C\u7D22\u5168\u90E8\u5BF9\u8BDD",
|
|
269
|
+
"Search content": "\u641C\u7D22\u5185\u5BB9",
|
|
270
|
+
"Search conversation content": "\u641C\u7D22\u5BF9\u8BDD\u5185\u5BB9",
|
|
271
|
+
"Search conversations": "\u641C\u7D22\u5BF9\u8BDD",
|
|
272
|
+
"Search knowledge": "\u641C\u7D22\u77E5\u8BC6",
|
|
273
|
+
"Search runs": "\u641C\u7D22\u8FD0\u884C\u8BB0\u5F55",
|
|
274
|
+
"Search web": "\u641C\u7D22\u7F51\u9875",
|
|
275
|
+
"Select up to 32 files.": "\u6700\u591A\u9009\u62E9 32 \u4E2A\u6587\u4EF6\u3002",
|
|
276
|
+
"Select...": "\u9009\u62E9...",
|
|
277
|
+
Send: "\u53D1\u9001",
|
|
278
|
+
"Send a message...": "\u53D1\u9001\u6D88\u606F...",
|
|
279
|
+
"Send now": "\u7ACB\u5373\u53D1\u9001",
|
|
280
|
+
Server: "\u670D\u52A1\u5668",
|
|
281
|
+
"Show conversations": "\u663E\u793A\u5BF9\u8BDD\u5217\u8868",
|
|
282
|
+
"Show Kanban configurations": "\u663E\u793A\u770B\u677F\u914D\u7F6E",
|
|
283
|
+
"Show password": "\u663E\u793A\u5BC6\u7801",
|
|
284
|
+
"Show runs": "\u663E\u793A\u8FD0\u884C\u8BB0\u5F55",
|
|
285
|
+
"Sign in": "\u767B\u5F55",
|
|
286
|
+
"Sign in to Workflow": "\u767B\u5F55 Workflow",
|
|
287
|
+
"Sign in to Workflow Server to connect Kanban data.": "\u8BF7\u767B\u5F55 Workflow Server \u4EE5\u8FDE\u63A5\u770B\u677F\u6570\u636E\u3002",
|
|
288
|
+
"Sign in to Workflow Server, then refresh parameters.": "\u8BF7\u5148\u767B\u5F55 Workflow Server\uFF0C\u7136\u540E\u5237\u65B0\u53C2\u6570\u3002",
|
|
289
|
+
"Sign out": "\u9000\u51FA\u767B\u5F55",
|
|
290
|
+
"Sign-in expired": "\u767B\u5F55\u5DF2\u5931\u6548",
|
|
291
|
+
"Sign-in expired. Sign in to Workflow Server again.": "\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55 Workflow Server\u3002",
|
|
292
|
+
"Signed in; account verified": "\u5DF2\u767B\u5F55\uFF0C\u8D26\u53F7\u9A8C\u8BC1\u901A\u8FC7",
|
|
293
|
+
"Signed out": "\u672A\u767B\u5F55",
|
|
294
|
+
"Signing in...": "\u767B\u5F55\u4E2D...",
|
|
295
|
+
"Started: {0}": "\u5F00\u59CB\uFF1A{0}",
|
|
296
|
+
Stop: "\u505C\u6B62",
|
|
297
|
+
"Stop run": "\u505C\u6B62\u8FD0\u884C",
|
|
298
|
+
Stopped: "\u5DF2\u505C\u6B62",
|
|
299
|
+
"Stopped \xB7 {0}/{1} items completed": "\u5DF2\u505C\u6B62 \xB7 {0}/{1} \u9879\u5B8C\u6210",
|
|
300
|
+
"Stopped {0}": "\u5DF2\u505C\u6B62{0}",
|
|
301
|
+
"Submitting...": "\u6B63\u5728\u63D0\u4EA4...",
|
|
302
|
+
"System AI": "\u7CFB\u7EDF AI",
|
|
303
|
+
"System AI usage": "\u7CFB\u7EDF AI \u7528\u91CF",
|
|
304
|
+
Tablet: "\u5E73\u677F",
|
|
305
|
+
"The current session is running.": "\u5F53\u524D\u4F1A\u8BDD\u6B63\u5728\u8FD0\u884C\u3002",
|
|
306
|
+
"The Kanban connection is unavailable.": "\u770B\u677F\u8FDE\u63A5\u4E0D\u53EF\u7528\u3002",
|
|
307
|
+
"The options for {0} have changed. Please select again.": "{0} \u7684\u9009\u9879\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u3002",
|
|
308
|
+
"The project does not support this attachment type.": "\u9879\u76EE\u4E0D\u652F\u6301\u6B64\u7C7B\u9644\u4EF6\u3002",
|
|
309
|
+
"The related project connection was interrupted. Reconnecting.": "\u5173\u8054\u9879\u76EE\u66F4\u65B0\u8FDE\u63A5\u5DF2\u4E2D\u65AD\uFF0C\u6B63\u5728\u91CD\u8FDE\u3002",
|
|
310
|
+
"The request timed out. Check the current status.": "\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5\u5F53\u524D\u72B6\u6001\u3002",
|
|
311
|
+
Thinking: "\u601D\u8003",
|
|
312
|
+
"Thought complete": "\u601D\u8003\u5B8C\u6210",
|
|
313
|
+
"Timed out": "\u5DF2\u8D85\u65F6",
|
|
314
|
+
Tool: "\u5DE5\u5177",
|
|
315
|
+
"Tool input": "\u5DE5\u5177\u53C2\u6570",
|
|
316
|
+
"Tool permissions": "\u5DE5\u5177\u6743\u9650",
|
|
317
|
+
Trace: "\u8F68\u8FF9",
|
|
318
|
+
Unlimited: "\u4E0D\u9650",
|
|
319
|
+
"Unlock title": "\u89E3\u9664\u6807\u9898\u9501\u5B9A",
|
|
320
|
+
"Unsupported attachment type, or the 50 MiB per file / 32 attachment limit was exceeded.": "\u9644\u4EF6\u7C7B\u578B\u4E0D\u53D7\u652F\u6301\uFF0C\u6216\u8D85\u8FC7\u5355\u6587\u4EF6 50 MiB / 32 \u4E2A\u9644\u4EF6\u9650\u5236\u3002",
|
|
321
|
+
"Update data": "\u66F4\u65B0\u6570\u636E",
|
|
322
|
+
"Update knowledge": "\u66F4\u65B0\u77E5\u8BC6",
|
|
323
|
+
"Update tasks": "\u66F4\u65B0\u4EFB\u52A1\u5217\u8868",
|
|
324
|
+
Validity: "\u6709\u6548\u671F",
|
|
325
|
+
"Verify sign-in": "\u9A8C\u8BC1\u767B\u5F55",
|
|
326
|
+
"Verifying account...": "\u6B63\u5728\u9A8C\u8BC1\u8D26\u53F7...",
|
|
327
|
+
"View all ({0})": "\u67E5\u770B\u5168\u90E8\uFF08{0}\uFF09",
|
|
328
|
+
"Waiting for input": "\u7B49\u5F85\u8F93\u5165",
|
|
329
|
+
"Waiting for tool results...": "\u7B49\u5F85\u5DE5\u5177\u7ED3\u679C...",
|
|
330
|
+
Weekly: "\u6BCF\u5468",
|
|
331
|
+
Width: "\u5BBD\u5EA6",
|
|
332
|
+
Workflow: "\u5DE5\u4F5C\u6D41",
|
|
333
|
+
"Workflow Account": "Workflow \u8D26\u53F7",
|
|
334
|
+
"Workflow entrypoint": "\u5DE5\u4F5C\u6D41\u5165\u53E3",
|
|
335
|
+
"Workflow run": "\u5DE5\u4F5C\u6D41\u8FD0\u884C",
|
|
336
|
+
Write: "\u5199\u5165",
|
|
337
|
+
"Write anything": "\u968F\u5FC3\u8F93\u5165",
|
|
338
|
+
"Write file": "\u5199\u5165\u6587\u4EF6",
|
|
339
|
+
Yes: "\u662F",
|
|
340
|
+
"Zoom in": "\u653E\u5927",
|
|
341
|
+
"Zoom out": "\u7F29\u5C0F"
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
// src/web/localization.ts
|
|
345
|
+
if (typeof document !== "undefined" && document.documentElement) {
|
|
346
|
+
const requested = new URL(location.href).searchParams.get("workflowLocale");
|
|
347
|
+
initI18n({ preference: normalizeLocale(requested || document.documentElement.lang || navigator.language) });
|
|
348
|
+
} else if (!i18n.isInitialized) {
|
|
349
|
+
initI18n();
|
|
350
|
+
}
|
|
351
|
+
i18n.addResourceBundle("zh-CN", "cliWeb", messages_zh_cn_default);
|
|
352
|
+
i18n.addResourceBundle("en", "cliWeb", Object.fromEntries(Object.keys(messages_zh_cn_default).map((message) => [message, message])));
|
|
353
|
+
var locale = getCurrentLocale;
|
|
354
|
+
function t(message, ...args) {
|
|
355
|
+
const translate = i18n.t;
|
|
356
|
+
const text = translate(message, { ns: "cliWeb", keySeparator: false, nsSeparator: false, fallbackLng: false, defaultValue: message });
|
|
357
|
+
return text.replace(/\{(\d+)\}/g, (placeholder, index) => Number(index) < args.length ? String(args[Number(index)]) : placeholder);
|
|
358
|
+
}
|
|
359
|
+
|
|
45
360
|
// src/web/server.ts
|
|
46
361
|
import { createServer } from "http";
|
|
47
362
|
import { createHash as createHash3, randomBytes as randomBytes2, timingSafeEqual } from "crypto";
|
|
@@ -140,33 +455,33 @@ function validateWorkflowValues(fields, values, states = {}) {
|
|
|
140
455
|
const value = workflowParamValue(field, values[field.name]);
|
|
141
456
|
const label = field.label || field.name;
|
|
142
457
|
if (field.required && (typeof value === "string" && !value.trim() || Array.isArray(value) && !value.length)) {
|
|
143
|
-
throw new Error(
|
|
458
|
+
throw new Error(t("Please enter {0}.", label));
|
|
144
459
|
}
|
|
145
460
|
if (value === "" || Array.isArray(value) && !value.length) {
|
|
146
461
|
continue;
|
|
147
462
|
}
|
|
148
463
|
if (field.type === "number" && (typeof value !== "string" || !Number.isFinite(Number(value)))) {
|
|
149
|
-
throw new Error(
|
|
464
|
+
throw new Error(t("{0} must be a valid number.", label));
|
|
150
465
|
}
|
|
151
466
|
if (field.type === "boolean" && value !== "true" && value !== "false") {
|
|
152
|
-
throw new Error(
|
|
467
|
+
throw new Error(t("{0} must be a valid boolean.", label));
|
|
153
468
|
}
|
|
154
469
|
if (field.format === "json" || field.type === "file" || field.control === "audio") {
|
|
155
470
|
let parsed;
|
|
156
471
|
try {
|
|
157
472
|
parsed = JSON.parse(typeof value === "string" ? value : JSON.stringify(value));
|
|
158
473
|
} catch {
|
|
159
|
-
throw new Error(
|
|
474
|
+
throw new Error(t("{0} must be valid JSON.", label));
|
|
160
475
|
}
|
|
161
476
|
if (field.required && (field.type === "file" || field.control === "audio") && (parsed === null || Array.isArray(parsed) && !parsed.length)) {
|
|
162
|
-
throw new Error(
|
|
477
|
+
throw new Error(t("Please enter {0}.", label));
|
|
163
478
|
}
|
|
164
479
|
}
|
|
165
480
|
const choices = states[field.name]?.resolvedOptions ?? field.options;
|
|
166
481
|
if (choices && choices.length > 0) {
|
|
167
482
|
const allowed = new Set(choices.filter((option) => states[field.name]?.options?.[option.value]?.visible !== false && !states[field.name]?.options?.[option.value]?.disabled).map((option) => option.value));
|
|
168
483
|
if ((Array.isArray(value) ? value : [value]).some((entry) => !allowed.has(entry))) {
|
|
169
|
-
throw new Error(
|
|
484
|
+
throw new Error(t("The options for {0} have changed. Please select again.", label));
|
|
170
485
|
}
|
|
171
486
|
}
|
|
172
487
|
}
|
|
@@ -226,7 +541,7 @@ var ConversationController = class {
|
|
|
226
541
|
delete message.submittingInput;
|
|
227
542
|
if (message.status === "running") {
|
|
228
543
|
message.status = message.pendingInput ? "waiting_for_input" : "aborted";
|
|
229
|
-
message.error = "
|
|
544
|
+
message.error = t("Run interrupted");
|
|
230
545
|
}
|
|
231
546
|
}
|
|
232
547
|
}
|
|
@@ -250,7 +565,7 @@ var ConversationController = class {
|
|
|
250
565
|
}
|
|
251
566
|
blank() {
|
|
252
567
|
const now = Date.now();
|
|
253
|
-
return { id: globalThis.crypto.randomUUID(), title: "
|
|
568
|
+
return { id: globalThis.crypto.randomUUID(), title: t("New conversation"), createdAt: now, updatedAt: now, messages: [], parameterValues: {}, toolPermissionPolicies: {}, queuedInputs: [], draft: { text: "", attachments: [] } };
|
|
254
569
|
}
|
|
255
570
|
async persist() {
|
|
256
571
|
const sessions = this.sessions.map((entry) => ({ ...entry, messages: entry.messages.map(({ submittingInput: _, ...message }) => message) }));
|
|
@@ -355,7 +670,7 @@ var ConversationController = class {
|
|
|
355
670
|
const waiting = entry.messages.some((message) => message.pendingInput);
|
|
356
671
|
if (entry.activeRunId || waiting || entry.queuedInputs?.length) {
|
|
357
672
|
if (!this.project.conversation?.inputQueue?.enabled) {
|
|
358
|
-
throw new Error("
|
|
673
|
+
throw new Error(t("The current session is running."));
|
|
359
674
|
}
|
|
360
675
|
if (entry.draft?.editingQueueId) {
|
|
361
676
|
const index = entry.queuedInputs.findIndex((item) => item.id === entry.draft?.editingQueueId);
|
|
@@ -399,7 +714,7 @@ var ConversationController = class {
|
|
|
399
714
|
}
|
|
400
715
|
if (!answer) {
|
|
401
716
|
if (!entry.messages.length && !entry.titleLocked) {
|
|
402
|
-
entry.title = (input.text || input.attachments[0]?.name || "
|
|
717
|
+
entry.title = (input.text || input.attachments[0]?.name || t("Workflow run")).slice(0, 80);
|
|
403
718
|
}
|
|
404
719
|
entry.messages.push({ id: globalThis.crypto.randomUUID(), role: "user", content: input.text || "", attachments: input.attachments, args, input, entrypointId: input.entrypointId, createdAt: Date.now() });
|
|
405
720
|
answer = { id: globalThis.crypto.randomUUID(), role: "assistant", content: "", items: [], status: "running", createdAt: Date.now(), model: typeof input.params.model === "string" ? input.params.model : void 0, args, entrypointId: input.entrypointId, events: [] };
|
|
@@ -431,7 +746,7 @@ var ConversationController = class {
|
|
|
431
746
|
rawArgs(text) {
|
|
432
747
|
const raw = JSON.parse(text);
|
|
433
748
|
if (!Array.isArray(raw) || !raw.every((arg) => typeof arg === "string")) {
|
|
434
|
-
throw new Error("
|
|
749
|
+
throw new Error(t("Run arguments must be an array of strings."));
|
|
435
750
|
}
|
|
436
751
|
return raw;
|
|
437
752
|
}
|
|
@@ -440,7 +755,7 @@ var ConversationController = class {
|
|
|
440
755
|
try {
|
|
441
756
|
await this.persist();
|
|
442
757
|
if (task.cancelled || this.disposed) {
|
|
443
|
-
throw new Error("
|
|
758
|
+
throw new Error(t("Stopped"));
|
|
444
759
|
}
|
|
445
760
|
const report = await this.runtime.run(request, (event) => {
|
|
446
761
|
if (task.cancelled || this.disposed || this.tasks.get(answer.runId) !== task) {
|
|
@@ -476,7 +791,7 @@ var ConversationController = class {
|
|
|
476
791
|
this.changed();
|
|
477
792
|
});
|
|
478
793
|
if (task.cancelled || this.disposed) {
|
|
479
|
-
throw new Error("
|
|
794
|
+
throw new Error(t("Stopped"));
|
|
480
795
|
}
|
|
481
796
|
answer.report = report;
|
|
482
797
|
answer.status = report.status;
|
|
@@ -498,17 +813,17 @@ var ConversationController = class {
|
|
|
498
813
|
answer.timers = report.timers ?? answer.timers;
|
|
499
814
|
if (report.status === "failed") {
|
|
500
815
|
const data = report.result?.data;
|
|
501
|
-
answer.error = report.result?.error?.message || (data && typeof data === "object" && "errMessage" in data && typeof data.errMessage === "string" ? data.errMessage : "
|
|
816
|
+
answer.error = report.result?.error?.message || (data && typeof data === "object" && "errMessage" in data && typeof data.errMessage === "string" ? data.errMessage : t("Run failed"));
|
|
502
817
|
}
|
|
503
818
|
if (report.status === "aborted" || report.status === "timed_out") {
|
|
504
|
-
answer.error = report.status === "aborted" ? "
|
|
819
|
+
answer.error = report.status === "aborted" ? t("Stopped") : t("Run timed out");
|
|
505
820
|
}
|
|
506
821
|
if (answer.submittingInput && pending && report.status === "failed") {
|
|
507
822
|
answer.status = "waiting_for_input";
|
|
508
823
|
answer.pendingInput = pending;
|
|
509
824
|
}
|
|
510
825
|
if (!answer.content && !answer.items?.length && report.status === "success") {
|
|
511
|
-
answer.content = report.result?.data === void 0 ? "
|
|
826
|
+
answer.content = report.result?.data === void 0 ? t("Completed") : JSON.stringify(report.result.data, null, 2);
|
|
512
827
|
}
|
|
513
828
|
} catch (error) {
|
|
514
829
|
answer.error = error instanceof Error ? error.message : String(error);
|
|
@@ -568,7 +883,7 @@ var ConversationController = class {
|
|
|
568
883
|
if (pending) {
|
|
569
884
|
pending.pendingInput = void 0;
|
|
570
885
|
pending.status = "aborted";
|
|
571
|
-
pending.error = "
|
|
886
|
+
pending.error = t("Stopped");
|
|
572
887
|
this.changed();
|
|
573
888
|
void this.persist().catch((error) => this.options.log(String(error)));
|
|
574
889
|
}
|
|
@@ -790,7 +1105,7 @@ var WorkflowController = class {
|
|
|
790
1105
|
delete record2.submittingInput;
|
|
791
1106
|
if (record2.status === "running" || record2.status === "waiting_for_input") {
|
|
792
1107
|
record2.status = "interrupted";
|
|
793
|
-
record2.error = "
|
|
1108
|
+
record2.error = t("Run interrupted");
|
|
794
1109
|
this.clearTimers(record2);
|
|
795
1110
|
}
|
|
796
1111
|
}
|
|
@@ -1565,10 +1880,10 @@ var KanbanController = class {
|
|
|
1565
1880
|
create(workspace, params, values = createDefaultKanbanValues(params), name) {
|
|
1566
1881
|
if (!name) {
|
|
1567
1882
|
let index = 1;
|
|
1568
|
-
while (workspace.configurations.some((item2) => item2.name ===
|
|
1883
|
+
while (workspace.configurations.some((item2) => item2.name === t("Configuration {0}", index))) {
|
|
1569
1884
|
index++;
|
|
1570
1885
|
}
|
|
1571
|
-
name =
|
|
1886
|
+
name = t("Configuration {0}", index);
|
|
1572
1887
|
}
|
|
1573
1888
|
const date = (/* @__PURE__ */ new Date()).toISOString(), item = { id: randomUUID2(), name, values: { ...values }, createdAt: date, updatedAt: date };
|
|
1574
1889
|
workspace.configurations.push(item);
|
|
@@ -1744,7 +2059,7 @@ var KanbanController = class {
|
|
|
1744
2059
|
this.missingRelatedProjectAliases = [];
|
|
1745
2060
|
const connection = this.hooks.connection();
|
|
1746
2061
|
if (!connection) {
|
|
1747
|
-
this.relatedProjectWarning = "
|
|
2062
|
+
this.relatedProjectWarning = t("Sign in to Workflow Server to connect Kanban data.");
|
|
1748
2063
|
return;
|
|
1749
2064
|
}
|
|
1750
2065
|
const abort = this.feed = new AbortController();
|
|
@@ -1766,7 +2081,7 @@ var KanbanController = class {
|
|
|
1766
2081
|
} }, abort.signal);
|
|
1767
2082
|
} catch {
|
|
1768
2083
|
if (!abort.signal.aborted) {
|
|
1769
|
-
this.relatedProjectWarning = "
|
|
2084
|
+
this.relatedProjectWarning = t("The related project connection was interrupted. Reconnecting.");
|
|
1770
2085
|
this.hooks.changed();
|
|
1771
2086
|
}
|
|
1772
2087
|
}
|
|
@@ -1840,13 +2155,14 @@ function conversationResourceCards(items, projectId, conversationId) {
|
|
|
1840
2155
|
continue;
|
|
1841
2156
|
}
|
|
1842
2157
|
let output = record(content.output);
|
|
2158
|
+
const details = record(output?.details);
|
|
1843
2159
|
if (Array.isArray(output?.content) && output.content.length === 1) {
|
|
1844
2160
|
try {
|
|
1845
2161
|
output = record(JSON.parse(String(record(output.content[0])?.text)));
|
|
1846
2162
|
} catch {
|
|
1847
2163
|
}
|
|
1848
2164
|
}
|
|
1849
|
-
let descriptor = record(record(output?.details)?.resourceCard);
|
|
2165
|
+
let descriptor = record(details?.resourceCard) ?? record(record(output?.details)?.resourceCard);
|
|
1850
2166
|
const input = record(content.input) ?? {};
|
|
1851
2167
|
const tool = string(content.tool) ?? "";
|
|
1852
2168
|
if (tool === "workflow-ui_present_card") {
|
|
@@ -2153,6 +2469,7 @@ import { spawn } from "child_process";
|
|
|
2153
2469
|
import { existsSync, readFileSync } from "fs";
|
|
2154
2470
|
import path5 from "path";
|
|
2155
2471
|
import { fileURLToPath } from "url";
|
|
2472
|
+
import { WORKFLOW_RUNTIME_LOCALE_ENV } from "workflow-code";
|
|
2156
2473
|
function cliRoot() {
|
|
2157
2474
|
let directory = path5.dirname(fileURLToPath(import.meta.url));
|
|
2158
2475
|
for (let depth = 0; depth < 8; depth++) {
|
|
@@ -2186,6 +2503,8 @@ function createWebRuntime(projectDir, storageDir, connection) {
|
|
|
2186
2503
|
const env = {
|
|
2187
2504
|
...process.env,
|
|
2188
2505
|
WORKFLOW_RUNTIME_PLATFORM: "cli",
|
|
2506
|
+
[WORKFLOW_RUNTIME_LOCALE_ENV]: locale(),
|
|
2507
|
+
WORKFLOW_CODE_LOCALE: locale(),
|
|
2189
2508
|
WORKFLOW_SERVER_URL: auth?.serverUrl ?? "",
|
|
2190
2509
|
WORKFLOW_SERVER_ADMIN_KEY: auth?.accessToken ?? "",
|
|
2191
2510
|
WORKFLOW_SERVER_TOKEN: "",
|
|
@@ -2317,7 +2636,7 @@ function createWebRuntime(projectDir, storageDir, connection) {
|
|
|
2317
2636
|
// src/web/account-auth.ts
|
|
2318
2637
|
async function loginWebAccount(serverUrl, email, password) {
|
|
2319
2638
|
if (!email.trim() || !password) {
|
|
2320
|
-
throw new Error("
|
|
2639
|
+
throw new Error(t("Enter your email and password."));
|
|
2321
2640
|
}
|
|
2322
2641
|
let token = "";
|
|
2323
2642
|
let cookie = "";
|
|
@@ -2327,7 +2646,7 @@ async function loginWebAccount(serverUrl, email, password) {
|
|
|
2327
2646
|
const response = await fetch(`${serverUrl}${endpoint}`, { ...options, redirect: "error", signal: AbortSignal.timeout(15e3) });
|
|
2328
2647
|
const result = await response.json();
|
|
2329
2648
|
if (!response.ok || result.errCode !== 0 || !result.data) {
|
|
2330
|
-
const message = response.status === 401 ? "
|
|
2649
|
+
const message = response.status === 401 ? t("Incorrect email or password, or sign-in expired.") : result.errMessage || "Workflow Server login failed.";
|
|
2331
2650
|
throw new Error(String(message).replaceAll(password, "[redacted]").replaceAll(token || "\0", "[redacted]"));
|
|
2332
2651
|
}
|
|
2333
2652
|
return { response, data: result.data };
|
|
@@ -2863,7 +3182,7 @@ ${token}`;
|
|
|
2863
3182
|
if (message.type === "export-message") {
|
|
2864
3183
|
replies.push({ type: "download", name: `run-${answer.id}.json`, content: JSON.stringify(redactWorkflowData(answer, [...sensitiveTokens], false), null, 2) }, { type: "exported", sessionId: current.id, messageId: answer.id });
|
|
2865
3184
|
} else {
|
|
2866
|
-
replies.push({ type: "preview", title: message.type === "logs" ? "
|
|
3185
|
+
replies.push({ type: "preview", title: message.type === "logs" ? t("Run logs") : t("Trace"), content: message.type === "logs" ? answer.report?.logs ?? "" : { report: answer.report, events: answer.events, items: answer.items } });
|
|
2867
3186
|
}
|
|
2868
3187
|
break;
|
|
2869
3188
|
}
|
|
@@ -3072,7 +3391,7 @@ ${token}`;
|
|
|
3072
3391
|
const ancestors = options.host ? "'self' vscode-webview: vscode-file: https://*.vscode-cdn.net https://*.vscode-webview.net http://127.0.0.1:* http://localhost:*" : "'self' vscode-webview:";
|
|
3073
3392
|
response.writeHead(200, { "Content-Type": "text/html; charset=utf-8", "Cache-Control": "no-store", "Content-Security-Policy": `default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: http:; font-src 'self'; connect-src 'self'; media-src 'self' blob:; frame-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors ${ancestors}; form-action 'self'` });
|
|
3074
3393
|
const ui = isKanban ? "kanban-workspace" : isWorkflow ? "workflow-workspace" : "workflow-ui";
|
|
3075
|
-
response.end(`<!doctype html><html lang="
|
|
3394
|
+
response.end(`<!doctype html><html lang="${locale()}" data-theme="${options.theme ?? "auto"}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="workflow-project" content="${key}"><title>Workflow</title><link rel="stylesheet" href="/assets/codicons/codicon.css"><link rel="stylesheet" href="/assets/${ui}.css"><link rel="stylesheet" href="/assets/theme.css"></head><body data-surface="${options.host?.surface ?? "editor"}"><div id="app"></div><script src="/assets/${ui}.js" defer></script></body></html>`);
|
|
3076
3395
|
return;
|
|
3077
3396
|
}
|
|
3078
3397
|
const assets = { "/assets/workflow-ui.js": "application/javascript", "/assets/workflow-ui.css": "text/css", "/assets/theme.css": "text/css", "/assets/codicons/codicon.css": "text/css", "/assets/codicons/codicon.ttf": "font/ttf" };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow-code/cli",
|
|
3
|
-
"version": "0.2.4-
|
|
3
|
+
"version": "0.2.4-20261012003.codex-cli-web",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"workflow-code": "./dist/index.js"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"zod": "4.4.3"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"workflow-code": "0.2.4-20260929001"
|
|
24
|
+
"workflow-code": ">=0.2.4-20260929001 <0.2.5-0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@dagrejs/dagre": "1.1.8",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"@workflow-code/kanban-project": "0.1.0",
|
|
43
43
|
"@workflow-code/openai-responses": "0.1.0",
|
|
44
44
|
"@workflow-code/project-dependencies": "0.1.0",
|
|
45
|
+
"@workflow-code/project-upload": "0.1.0",
|
|
45
46
|
"@workflow-code/project-info": "0.1.0",
|
|
46
47
|
"@workflow-code/runtime-compatibility": "0.1.0",
|
|
47
48
|
"@workflow-code/workflow-ids": "0.1.0",
|
|
48
|
-
"@workflow-code/workflow-mcp": "0.1.0"
|
|
49
|
-
"@workflow-code/project-upload": "0.1.0"
|
|
49
|
+
"@workflow-code/workflow-mcp": "0.1.0"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"bootstrap": "node scripts/bootstrap.mjs",
|