@xcanwin/manyoyo 5.6.8 → 5.6.10
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/lib/agent-resume.js +10 -1
- package/lib/web/frontend/app.css +158 -0
- package/lib/web/frontend/app.html +4 -1
- package/lib/web/frontend/app.js +518 -27
- package/lib/web/server.js +617 -52
- package/package.json +1 -1
package/lib/agent-resume.js
CHANGED
|
@@ -16,6 +16,8 @@ const AGENT_PROMPT_TEMPLATE_MAP = {
|
|
|
16
16
|
opencode: 'opencode run {prompt}'
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
const CODEX_DANGEROUS_FLAG = '--dangerously-bypass-approvals-and-sandbox';
|
|
20
|
+
|
|
19
21
|
function stripLeadingAssignments(commandText) {
|
|
20
22
|
let rest = String(commandText || '').trim();
|
|
21
23
|
const assignmentPattern = /^(?:[A-Za-z_][A-Za-z0-9_]*=)(?:"(?:\\.|[^"])*"|'(?:\\.|[^'])*'|[^\s]+)(?:\s+|$)/;
|
|
@@ -75,8 +77,15 @@ function resolveAgentResumeArg(commandText) {
|
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
function resolveAgentPromptCommandTemplate(commandText) {
|
|
80
|
+
const normalizedCommand = String(commandText || '').trim();
|
|
78
81
|
const program = resolveAgentProgram(commandText);
|
|
79
|
-
|
|
82
|
+
const template = AGENT_PROMPT_TEMPLATE_MAP[program] || '';
|
|
83
|
+
if (program === 'codex' && template) {
|
|
84
|
+
if (normalizedCommand.includes(CODEX_DANGEROUS_FLAG)) {
|
|
85
|
+
return `codex exec ${CODEX_DANGEROUS_FLAG} --skip-git-repo-check {prompt}`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return template;
|
|
80
89
|
}
|
|
81
90
|
|
|
82
91
|
function buildAgentResumeCommand(commandText) {
|
package/lib/web/frontend/app.css
CHANGED
|
@@ -1047,6 +1047,154 @@ body.command-mode .msg.origin-agent .bubble {
|
|
|
1047
1047
|
line-height: 1.55;
|
|
1048
1048
|
}
|
|
1049
1049
|
|
|
1050
|
+
.trace-bubble {
|
|
1051
|
+
padding: 12px;
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
.trace-structured {
|
|
1055
|
+
display: flex;
|
|
1056
|
+
flex-direction: column;
|
|
1057
|
+
gap: 10px;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
.trace-summary {
|
|
1061
|
+
display: flex;
|
|
1062
|
+
flex-direction: column;
|
|
1063
|
+
gap: 6px;
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
.trace-summary-line {
|
|
1067
|
+
padding: 7px 10px;
|
|
1068
|
+
border-radius: 8px;
|
|
1069
|
+
border: 1px dashed rgba(181, 146, 99, 0.45);
|
|
1070
|
+
background: rgba(255, 250, 242, 0.82);
|
|
1071
|
+
color: var(--muted);
|
|
1072
|
+
font-size: 12px;
|
|
1073
|
+
line-height: 1.45;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
.trace-flow {
|
|
1077
|
+
display: flex;
|
|
1078
|
+
flex-direction: column;
|
|
1079
|
+
gap: 8px;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
.trace-card {
|
|
1083
|
+
border: 1px solid rgba(181, 146, 99, 0.32);
|
|
1084
|
+
border-left-width: 3px;
|
|
1085
|
+
border-radius: 10px;
|
|
1086
|
+
background: rgba(255, 255, 255, 0.88);
|
|
1087
|
+
overflow: hidden;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
.trace-card.trace-tone-command {
|
|
1091
|
+
border-left-color: var(--subaccent);
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
.trace-card.trace-tone-mcp {
|
|
1095
|
+
border-left-color: var(--accent);
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
.trace-card.trace-tone-note {
|
|
1099
|
+
border-left-color: #6f62b5;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
.trace-card.trace-tone-status {
|
|
1103
|
+
border-left-color: #7d8aa1;
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
.trace-card.trace-tone-error {
|
|
1107
|
+
border-left-color: var(--danger);
|
|
1108
|
+
background: rgba(255, 239, 236, 0.92);
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
.trace-card.trace-tone-neutral {
|
|
1112
|
+
border-left-color: var(--line-strong);
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
.trace-card-summary {
|
|
1116
|
+
list-style: none;
|
|
1117
|
+
display: flex;
|
|
1118
|
+
align-items: center;
|
|
1119
|
+
gap: 8px;
|
|
1120
|
+
padding: 9px 10px;
|
|
1121
|
+
cursor: default;
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
details.trace-card > .trace-card-summary {
|
|
1125
|
+
cursor: pointer;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
.trace-card-summary::-webkit-details-marker {
|
|
1129
|
+
display: none;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
.trace-card-badge {
|
|
1133
|
+
flex: 0 0 auto;
|
|
1134
|
+
display: inline-flex;
|
|
1135
|
+
align-items: center;
|
|
1136
|
+
justify-content: center;
|
|
1137
|
+
min-width: 42px;
|
|
1138
|
+
padding: 2px 7px;
|
|
1139
|
+
border-radius: 999px;
|
|
1140
|
+
background: rgba(31, 26, 20, 0.08);
|
|
1141
|
+
color: var(--text);
|
|
1142
|
+
font-size: 11px;
|
|
1143
|
+
font-weight: 700;
|
|
1144
|
+
letter-spacing: 0.2px;
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
.trace-card-title {
|
|
1148
|
+
min-width: 0;
|
|
1149
|
+
flex: 1;
|
|
1150
|
+
color: var(--text);
|
|
1151
|
+
font-size: 12px;
|
|
1152
|
+
font-weight: 600;
|
|
1153
|
+
line-height: 1.45;
|
|
1154
|
+
word-break: break-word;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
.trace-card-phase {
|
|
1158
|
+
flex: 0 0 auto;
|
|
1159
|
+
color: var(--muted);
|
|
1160
|
+
font-size: 11px;
|
|
1161
|
+
font-weight: 700;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
.trace-card-body {
|
|
1165
|
+
padding: 0 10px 10px;
|
|
1166
|
+
display: flex;
|
|
1167
|
+
flex-direction: column;
|
|
1168
|
+
gap: 8px;
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
.trace-card-body-section {
|
|
1172
|
+
display: flex;
|
|
1173
|
+
flex-direction: column;
|
|
1174
|
+
gap: 4px;
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
.trace-card-body-label {
|
|
1178
|
+
color: var(--muted);
|
|
1179
|
+
font-size: 11px;
|
|
1180
|
+
font-weight: 700;
|
|
1181
|
+
letter-spacing: 0.2px;
|
|
1182
|
+
text-transform: uppercase;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
.trace-card-body-pre {
|
|
1186
|
+
margin: 0;
|
|
1187
|
+
padding: 8px 9px;
|
|
1188
|
+
border-radius: 8px;
|
|
1189
|
+
background: rgba(31, 26, 20, 0.05);
|
|
1190
|
+
color: var(--text);
|
|
1191
|
+
white-space: pre-wrap;
|
|
1192
|
+
word-break: break-word;
|
|
1193
|
+
font-family: var(--font-mono);
|
|
1194
|
+
font-size: 12px;
|
|
1195
|
+
line-height: 1.5;
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1050
1198
|
.composer {
|
|
1051
1199
|
border-top: 1px solid rgba(181, 146, 99, 0.45);
|
|
1052
1200
|
margin-top: 12px;
|
|
@@ -1079,6 +1227,12 @@ body.command-mode .msg.origin-agent .bubble {
|
|
|
1079
1227
|
gap: 10px;
|
|
1080
1228
|
}
|
|
1081
1229
|
|
|
1230
|
+
.composer-actions {
|
|
1231
|
+
display: flex;
|
|
1232
|
+
flex-direction: column;
|
|
1233
|
+
gap: 8px;
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1082
1236
|
#commandInput {
|
|
1083
1237
|
width: 100%;
|
|
1084
1238
|
min-height: 116px;
|
|
@@ -1098,6 +1252,10 @@ body.command-mode .msg.origin-agent .bubble {
|
|
|
1098
1252
|
min-width: 92px;
|
|
1099
1253
|
}
|
|
1100
1254
|
|
|
1255
|
+
#stopBtn {
|
|
1256
|
+
min-width: 92px;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1101
1259
|
.composer-foot {
|
|
1102
1260
|
margin-top: 8px;
|
|
1103
1261
|
display: flex;
|
|
@@ -108,7 +108,10 @@
|
|
|
108
108
|
</div>
|
|
109
109
|
<div class="composer-inner">
|
|
110
110
|
<textarea id="commandInput" placeholder="输入容器命令,例如: ls -la"></textarea>
|
|
111
|
-
<
|
|
111
|
+
<div class="composer-actions">
|
|
112
|
+
<button type="submit" id="sendBtn">发送</button>
|
|
113
|
+
<button type="button" id="stopBtn" class="danger-outline">停止</button>
|
|
114
|
+
</div>
|
|
112
115
|
</div>
|
|
113
116
|
<div class="composer-foot">
|
|
114
117
|
<span id="composerHint">Enter 发送 · Shift/Alt + Enter 换行</span>
|