larkway 0.3.61 → 0.3.62
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 +22 -3
- package/dist/main.js +30 -10
- 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.62**
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
package/README.zh.md
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -126890,7 +126890,25 @@ async function ensureRelativeSymlink(linkPath, target) {
|
|
|
126890
126890
|
await fs.rm(linkPath, { force: true });
|
|
126891
126891
|
} catch {
|
|
126892
126892
|
}
|
|
126893
|
-
|
|
126893
|
+
if (process.platform === "win32") {
|
|
126894
|
+
const resolved = path7.resolve(path7.dirname(linkPath), target);
|
|
126895
|
+
let isDir = false;
|
|
126896
|
+
try {
|
|
126897
|
+
isDir = (await fs.stat(resolved)).isDirectory();
|
|
126898
|
+
} catch {
|
|
126899
|
+
}
|
|
126900
|
+
if (isDir) {
|
|
126901
|
+
await fs.symlink(target, linkPath, "junction");
|
|
126902
|
+
return;
|
|
126903
|
+
}
|
|
126904
|
+
try {
|
|
126905
|
+
await fs.symlink(target, linkPath, "file");
|
|
126906
|
+
} catch {
|
|
126907
|
+
await fs.copyFile(resolved, linkPath);
|
|
126908
|
+
}
|
|
126909
|
+
return;
|
|
126910
|
+
}
|
|
126911
|
+
await fs.symlink(target, linkPath);
|
|
126894
126912
|
}
|
|
126895
126913
|
async function readTextIfExists(filePath) {
|
|
126896
126914
|
try {
|
|
@@ -129299,8 +129317,9 @@ import { spawn as nodeSpawn, spawnSync as nodeSpawnSync } from "node:child_proce
|
|
|
129299
129317
|
import { accessSync, constants as fsConstants } from "node:fs";
|
|
129300
129318
|
import path12 from "node:path";
|
|
129301
129319
|
import process2 from "node:process";
|
|
129302
|
-
var
|
|
129303
|
-
var
|
|
129320
|
+
var useCrossSpawn = () => process2.platform === "win32" && process2.env["VITEST"] === void 0;
|
|
129321
|
+
var doSpawn = ((...args) => (useCrossSpawn() ? import_cross_spawn.default : nodeSpawn)(...args));
|
|
129322
|
+
var doSpawnSync = ((...args) => (useCrossSpawn() ? import_cross_spawn.default.sync : nodeSpawnSync)(
|
|
129304
129323
|
...args
|
|
129305
129324
|
));
|
|
129306
129325
|
function spawnProcess(command, args = [], options = {}) {
|
package/dist/main.js
CHANGED
|
@@ -119842,12 +119842,13 @@ function renderTranscriptEntry(input) {
|
|
|
119842
119842
|
async function ensureSessionArtifacts(input) {
|
|
119843
119843
|
await fs.mkdir(input.sessionPath, { recursive: true });
|
|
119844
119844
|
await writeIfMissing(path4.join(input.sessionPath, "summary.md"), renderSummaryPlaceholder());
|
|
119845
|
-
|
|
119846
|
-
|
|
119847
|
-
`${renderTranscriptEntry(input)}
|
|
119848
|
-
`,
|
|
119849
|
-
|
|
119850
|
-
|
|
119845
|
+
const transcriptPath = path4.join(input.sessionPath, "transcript.md");
|
|
119846
|
+
try {
|
|
119847
|
+
await fs.appendFile(transcriptPath, `${renderTranscriptEntry(input)}
|
|
119848
|
+
`, "utf8");
|
|
119849
|
+
} catch (e) {
|
|
119850
|
+
throw new Error(`failed to write ${transcriptPath}: ${e instanceof Error ? e.message : String(e)}`);
|
|
119851
|
+
}
|
|
119851
119852
|
}
|
|
119852
119853
|
var TRANSCRIPT_ANSWER_MAX_CHARS = 1500;
|
|
119853
119854
|
var SEED_SUMMARY_MAX_CHARS = 2e3;
|
|
@@ -120248,7 +120249,7 @@ var KNOWLEDGE_DIFFSTAT_MAX_LINES = 4;
|
|
|
120248
120249
|
function renderMemoryVisibilityTail(input) {
|
|
120249
120250
|
const lines = [];
|
|
120250
120251
|
if (input.changedWorkspaceFiles.length > 0) {
|
|
120251
|
-
lines.push(`\u{1F4DD} \u672C\u8F6E\u671F\u95F4\u53D8\u66F4\u4E86 ${input.changedWorkspaceFiles.join("\u3001")}`);
|
|
120252
|
+
lines.push(`\u{1F4DD} \u672C\u8F6E\u671F\u95F4\u53D8\u66F4\u4E86 ${input.changedWorkspaceFiles.map((f) => f.replaceAll("\\", "/")).join("\u3001")}`);
|
|
120252
120253
|
}
|
|
120253
120254
|
if (input.knowledgeDiffstat && input.knowledgeDiffstat.trim() !== "") {
|
|
120254
120255
|
const statLines = input.knowledgeDiffstat.trim().split("\n");
|
|
@@ -120326,7 +120327,25 @@ async function ensureRelativeSymlink(linkPath, target) {
|
|
|
120326
120327
|
await fs4.rm(linkPath, { force: true });
|
|
120327
120328
|
} catch {
|
|
120328
120329
|
}
|
|
120329
|
-
|
|
120330
|
+
if (process.platform === "win32") {
|
|
120331
|
+
const resolved = path7.resolve(path7.dirname(linkPath), target);
|
|
120332
|
+
let isDir = false;
|
|
120333
|
+
try {
|
|
120334
|
+
isDir = (await fs4.stat(resolved)).isDirectory();
|
|
120335
|
+
} catch {
|
|
120336
|
+
}
|
|
120337
|
+
if (isDir) {
|
|
120338
|
+
await fs4.symlink(target, linkPath, "junction");
|
|
120339
|
+
return;
|
|
120340
|
+
}
|
|
120341
|
+
try {
|
|
120342
|
+
await fs4.symlink(target, linkPath, "file");
|
|
120343
|
+
} catch {
|
|
120344
|
+
await fs4.copyFile(resolved, linkPath);
|
|
120345
|
+
}
|
|
120346
|
+
return;
|
|
120347
|
+
}
|
|
120348
|
+
await fs4.symlink(target, linkPath);
|
|
120330
120349
|
}
|
|
120331
120350
|
function renderAgentsMd(input) {
|
|
120332
120351
|
return [
|
|
@@ -129601,8 +129620,9 @@ import { spawn as nodeSpawn, spawnSync as nodeSpawnSync } from "node:child_proce
|
|
|
129601
129620
|
import { accessSync, constants as fsConstants } from "node:fs";
|
|
129602
129621
|
import path20 from "node:path";
|
|
129603
129622
|
import process3 from "node:process";
|
|
129604
|
-
var
|
|
129605
|
-
var
|
|
129623
|
+
var useCrossSpawn = () => process3.platform === "win32" && process3.env["VITEST"] === void 0;
|
|
129624
|
+
var doSpawn = ((...args) => (useCrossSpawn() ? import_cross_spawn.default : nodeSpawn)(...args));
|
|
129625
|
+
var doSpawnSync = ((...args) => (useCrossSpawn() ? import_cross_spawn.default.sync : nodeSpawnSync)(
|
|
129606
129626
|
...args
|
|
129607
129627
|
));
|
|
129608
129628
|
function spawnPiped(command, args = [], options = {}) {
|