larkway 0.3.45 → 0.3.46
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.md +1 -1
- package/README.zh.md +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/web/public/app.js +26 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
You @ the bot in a Feishu thread. It runs on your machine — reading your real codebase, executing commands, opening MRs — and posts the result back. You define what the agent knows and what it can do. Larkway just carries the messages.
|
|
10
10
|
|
|
11
|
-
**Current release: v0.3.
|
|
11
|
+
**Current release: v0.3.46**
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
package/README.zh.md
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -127910,6 +127910,9 @@ async function checkClaude(ctx) {
|
|
|
127910
127910
|
};
|
|
127911
127911
|
}
|
|
127912
127912
|
async function checkLarkCli() {
|
|
127913
|
+
if (process.env.LARKWAY_SKIP_BINARY_PROBES === "1") {
|
|
127914
|
+
return { id: "lark-cli-binary", label: "lark-cli", status: "ok", message: "\u63A2\u6D4B\u5DF2\u8DF3\u8FC7(LARKWAY_SKIP_BINARY_PROBES=1)" };
|
|
127915
|
+
}
|
|
127913
127916
|
try {
|
|
127914
127917
|
await execFileAsync4("lark-cli", ["--version"], { timeout: 1e4 });
|
|
127915
127918
|
return { id: "lark-cli-binary", label: "lark-cli", status: "ok" };
|
package/dist/web/public/app.js
CHANGED
|
@@ -877,10 +877,23 @@ function buildModelEffortHTML(bot) {
|
|
|
877
877
|
`<select id="ac-effort" name="effort" class="ac-input" style="width:150px">${effortOptionsHTML(effortVal, backendId)}</select>` +
|
|
878
878
|
`</span>` +
|
|
879
879
|
`</div>` +
|
|
880
|
+
// 常驻快选 chips:datalist 会按当前输入值过滤建议(输入框已填某个模型时,
|
|
881
|
+
// 下拉只剩它自己,像"选项丢了"——2026-07-08 mini 实测用户困惑),chips 不受
|
|
882
|
+
// 输入值影响,永远列出全部建议;点一下=填入并触发 input(保存 dirty 检测)。
|
|
883
|
+
`<div id="ac-model-chips" style="margin-top:8px;display:flex;gap:6px;flex-wrap:wrap">${modelChipsHTML(backendId)}</div>` +
|
|
880
884
|
`</div>`
|
|
881
885
|
);
|
|
882
886
|
}
|
|
883
887
|
|
|
888
|
+
/** 常驻模型快选 chips 的 HTML(见 buildModelEffortHTML 里的调用注释)。 */
|
|
889
|
+
function modelChipsHTML(backendId) {
|
|
890
|
+
return modelSuggestionsForBackend(backendId)
|
|
891
|
+
.map(([v, label]) =>
|
|
892
|
+
`<button type="button" class="ac-model-chip" data-model-value="${esc(v)}" title="${esc(label)}" ` +
|
|
893
|
+
`style="font-size:12px;padding:3px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg,transparent);cursor:pointer">${esc(v)}</button>`)
|
|
894
|
+
.join("");
|
|
895
|
+
}
|
|
896
|
+
|
|
884
897
|
/**
|
|
885
898
|
* 底座切换时实时刷新 model 建议项 + effort 选项的措辞。effort 两家底座都生效
|
|
886
899
|
* (见 effortOptionsHTML 顶部注释),这里只换 label,不再隐藏控件。
|
|
@@ -894,6 +907,8 @@ function refreshModelEffortForBackend(panel, backendId) {
|
|
|
894
907
|
.map(([v, label]) => `<option value="${esc(v)}">${esc(label)}</option>`)
|
|
895
908
|
.join("");
|
|
896
909
|
}
|
|
910
|
+
const chips = panel.querySelector("#ac-model-chips");
|
|
911
|
+
if (chips) chips.innerHTML = modelChipsHTML(backendId);
|
|
897
912
|
const effortSelect = panel.querySelector("#ac-effort");
|
|
898
913
|
if (effortSelect) {
|
|
899
914
|
const currentVal = effortSelect.value;
|
|
@@ -3539,6 +3554,17 @@ function wireDetailEvents(panel, id, bot) {
|
|
|
3539
3554
|
state.formDirty = acFormSnapshot(panel) !== panel._acBaseline;
|
|
3540
3555
|
updateFormDirty(panel);
|
|
3541
3556
|
});
|
|
3557
|
+
|
|
3558
|
+
// 模型快选 chips:点一下 = 填入 model 输入框(委托监听,chips 会随底座
|
|
3559
|
+
// 切换整体重渲染);dispatch input 让上面的脏检测同一条路生效。
|
|
3560
|
+
bkCard.addEventListener("click", (e) => {
|
|
3561
|
+
const chip = e.target instanceof Element ? e.target.closest(".ac-model-chip") : null;
|
|
3562
|
+
if (!chip) return;
|
|
3563
|
+
const input = panel.querySelector("#ac-model");
|
|
3564
|
+
if (!(input instanceof HTMLInputElement)) return;
|
|
3565
|
+
input.value = chip.getAttribute("data-model-value") ?? "";
|
|
3566
|
+
input.dispatchEvent(new Event("input", { bubbles: true }));
|
|
3567
|
+
});
|
|
3542
3568
|
}
|
|
3543
3569
|
|
|
3544
3570
|
// 详情 hero 删除按钮
|