larkway 0.3.9 → 0.3.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/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.9**
11
+ **Current release: v0.3.10**
12
12
 
13
13
  ---
14
14
 
package/README.zh.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  你在飞书话题里 @ bot,它在你的机器上运行——读真实代码库、执行命令、开 MR——把结果贴回飞书。你定义 agent 知道什么、能做什么。Larkway 只负责传递消息。
10
10
 
11
- **当前版本:v0.3.9**
11
+ **当前版本:v0.3.10**
12
12
 
13
13
  ---
14
14
 
package/dist/cli/index.js CHANGED
@@ -124006,24 +124006,16 @@ import { spawn as spawn4 } from "node:child_process";
124006
124006
  import { readFile as readFile10, access as access9 } from "node:fs/promises";
124007
124007
  import "node:module";
124008
124008
  import path17 from "node:path";
124009
- var DEFAULT_GITLAB_HOST = "github.com";
124010
- var DEFAULT_RELEASE_REPO = "chuckwu0/larkway";
124011
- var LATEST_TGZ_NAME = "larkway-latest.tgz";
124012
- function buildLatestUrl(gitlabHost, repo) {
124013
- return `https://${gitlabHost}/git/${repo}/-/releases/permalink/latest/downloads/${LATEST_TGZ_NAME}`;
124009
+ var DEFAULT_NPM_PACKAGE_SPEC = "larkway@latest";
124010
+ function resolveNpmPackageSpec() {
124011
+ return process.env["LARKWAY_UPDATE_URL"] ?? DEFAULT_NPM_PACKAGE_SPEC;
124014
124012
  }
124015
- function resolveReleaseCoords() {
124016
- const gitlabHost = process.env["GITLAB_HOST"] ?? DEFAULT_GITLAB_HOST;
124017
- const repo = process.env["LARKWAY_RELEASE_REPO"] ?? DEFAULT_RELEASE_REPO;
124018
- const latestUrl = process.env["LARKWAY_UPDATE_URL"] ?? buildLatestUrl(gitlabHost, repo);
124019
- return { gitlabHost, repo, latestUrl };
124020
- }
124021
- function buildReleaseSteps(latestUrl, cwd) {
124013
+ function buildNpmSteps(packageSpec, cwd) {
124022
124014
  return [
124023
124015
  {
124024
- label: `npm i -g ${latestUrl}`,
124016
+ label: `npm i -g ${packageSpec}`,
124025
124017
  cmd: "npm",
124026
- args: ["i", "-g", latestUrl],
124018
+ args: ["i", "-g", packageSpec],
124027
124019
  cwd
124028
124020
  },
124029
124021
  {
@@ -124177,24 +124169,24 @@ async function run7(ctx, args) {
124177
124169
  const { ui, flags, cwd } = ctx;
124178
124170
  const isDryRun = args.includes("--dry-run");
124179
124171
  const forceGitPull = args.includes("--git-pull");
124180
- const { latestUrl } = resolveReleaseCoords();
124172
+ const packageSpec = resolveNpmPackageSpec();
124181
124173
  if (!forceGitPull) {
124182
- const releaseSteps = buildReleaseSteps(latestUrl, cwd);
124174
+ const npmSteps = buildNpmSteps(packageSpec, cwd);
124183
124175
  const lifecycleLabels2 = /* @__PURE__ */ new Set(["larkway stop (bridge lifecycle)", "larkway start (bridge lifecycle)"]);
124184
124176
  if (isDryRun) {
124185
124177
  if (flags.json) {
124186
124178
  ui.emitJson({
124187
124179
  ok: true,
124188
124180
  dryRun: true,
124189
- mode: "release",
124190
- latestUrl,
124191
- steps: releaseSteps.map((s) => ({ label: s.label, cmd: s.cmd, args: s.args, cwd: s.cwd }))
124181
+ mode: "npm",
124182
+ packageSpec,
124183
+ steps: npmSteps.map((s) => ({ label: s.label, cmd: s.cmd, args: s.args, cwd: s.cwd }))
124192
124184
  });
124193
124185
  } else {
124194
- ui.print(ui.bold("larkway update --dry-run (release \u6E90\u6A21\u5F0F)"));
124195
- ui.print(ui.dim(` latest url: ${latestUrl}`));
124186
+ ui.print(ui.bold("larkway update --dry-run (npm \u6E90\u6A21\u5F0F)"));
124187
+ ui.print(ui.dim(` package: ${packageSpec}`));
124196
124188
  ui.print("");
124197
- releaseSteps.forEach((s, i) => {
124189
+ npmSteps.forEach((s, i) => {
124198
124190
  ui.print(` ${ui.cyan(String(i + 1) + ".")} ${s.label}`);
124199
124191
  ui.print(ui.dim(` $ ${s.cmd} ${s.args.join(" ")}`));
124200
124192
  });
@@ -124205,14 +124197,14 @@ async function run7(ctx, args) {
124205
124197
  return 0;
124206
124198
  }
124207
124199
  if (flags.json) {
124208
- ui.emitJson({ ok: true, status: "starting", mode: "release", latestUrl, stepCount: releaseSteps.length });
124200
+ ui.emitJson({ ok: true, status: "starting", mode: "npm", packageSpec, stepCount: npmSteps.length });
124209
124201
  } else {
124210
- ui.print(ui.bold("larkway update (release \u6E90)"));
124211
- ui.print(ui.dim(` latest: ${latestUrl}`));
124202
+ ui.print(ui.bold("larkway update (npm \u6E90)"));
124203
+ ui.print(ui.dim(` package: ${packageSpec}`));
124212
124204
  }
124213
- const { ok: ok3, lifecycleWarnings: lifecycleWarnings2 } = await runSteps(releaseSteps, lifecycleLabels2, flags, ui);
124205
+ const { ok: ok3, lifecycleWarnings: lifecycleWarnings2 } = await runSteps(npmSteps, lifecycleLabels2, flags, ui);
124214
124206
  if (!ok3) {
124215
- const fallbackMsg = "release \u5347\u7EA7\u5931\u8D25\u3002\u82E5\u7F51\u7EDC\u4E0D\u901A\u6216 latest \u94FE\u63A5\u672A\u5C31\u7EEA,\u53EF\u6539\u7528 `larkway update --git-pull` \u8D70 git pull + build \u8DEF\u5F84\u3002";
124207
+ const fallbackMsg = "npm \u5347\u7EA7\u5931\u8D25\u3002\u82E5\u7F51\u7EDC\u4E0D\u901A\u3001npm \u6743\u9650\u4E0D\u8DB3\u6216\u6E90\u4E0D\u53EF\u7528,\u53EF\u6539\u7528 `larkway update --git-pull` \u8D70 git pull + build \u8DEF\u5F84\u3002";
124216
124208
  if (flags.json) {
124217
124209
  ui.emitJson({ ok: false, hint: fallbackMsg });
124218
124210
  } else {
@@ -124226,14 +124218,14 @@ async function run7(ctx, args) {
124226
124218
  if (hadWarning2) {
124227
124219
  ui.emitJson({ ok: true, status: "complete_with_warnings", warning: lifecycleWarnings2.join("; ") });
124228
124220
  } else {
124229
- ui.emitJson({ ok: true, status: "complete", mode: "release" });
124221
+ ui.emitJson({ ok: true, status: "complete", mode: "npm" });
124230
124222
  }
124231
124223
  } else {
124232
124224
  ui.print("");
124233
124225
  if (hadWarning2) {
124234
124226
  ui.success("larkway update \u5B8C\u6210,\u4F46 bridge \u9700\u624B\u52A8\u91CD\u542F(\u8BF7\u8FD0\u884C `larkway start`)\u3002");
124235
124227
  } else {
124236
- ui.success("larkway update \u5B8C\u6210\u3002\u5DF2\u5347\u7EA7\u5230\u6700\u65B0 release,bridge \u5DF2\u91CD\u542F\u3002");
124228
+ ui.success("larkway update \u5B8C\u6210\u3002\u5DF2\u5347\u7EA7\u5230\u6700\u65B0 npm \u7248\u672C,bridge \u5DF2\u91CD\u542F\u3002");
124237
124229
  }
124238
124230
  }
124239
124231
  return 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "larkway",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "description": "Thin bridge: Feishu thread to local Claude Code CLI",
5
5
  "license": "MIT",
6
6
  "author": "Chuck Wu (chuckwu0)",
@@ -19,18 +19,6 @@
19
19
  "bin": {
20
20
  "larkway": "bin/larkway"
21
21
  },
22
- "scripts": {
23
- "start": "tsx src/main.ts",
24
- "cli": "tsx src/cli/index.ts",
25
- "start:supervised": "bin/start-bridge.sh",
26
- "dev": "tsx watch src/main.ts",
27
- "build": "node scripts/build.mjs",
28
- "prepack": "node scripts/build.mjs",
29
- "typecheck": "tsc --noEmit",
30
- "check:links": "bash bin/check-doc-links.sh",
31
- "test": "vitest run",
32
- "test:v0.3": "bash bin/v0.3-local-acceptance.sh"
33
- },
34
22
  "dependencies": {},
35
23
  "devDependencies": {
36
24
  "@types/js-yaml": "^4.0.9",
@@ -48,7 +36,6 @@
48
36
  "qrcode-terminal": "^0.12.0",
49
37
  "zod": "^3.22.0"
50
38
  },
51
- "packageManager": "pnpm@9.0.0",
52
39
  "engines": {
53
40
  "node": ">=20"
54
41
  },
@@ -56,5 +43,16 @@
56
43
  "dist/",
57
44
  "bin/larkway",
58
45
  "README.md"
59
- ]
60
- }
46
+ ],
47
+ "scripts": {
48
+ "start": "tsx src/main.ts",
49
+ "cli": "tsx src/cli/index.ts",
50
+ "start:supervised": "bin/start-bridge.sh",
51
+ "dev": "tsx watch src/main.ts",
52
+ "build": "node scripts/build.mjs",
53
+ "typecheck": "tsc --noEmit",
54
+ "check:links": "bash bin/check-doc-links.sh",
55
+ "test": "vitest run",
56
+ "test:v0.3": "bash bin/v0.3-local-acceptance.sh"
57
+ }
58
+ }