@clawos-dev/clawd 0.2.66-beta.111.aeb004d → 0.2.67-beta.115.8d05743
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/cli.cjs +9 -231
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -85,9 +85,6 @@ var init_methods = __esm({
|
|
|
85
85
|
"git:root",
|
|
86
86
|
"git:branch",
|
|
87
87
|
"git:branches",
|
|
88
|
-
"git:worktree:prefix",
|
|
89
|
-
"git:worktree:create",
|
|
90
|
-
"git:worktree:remove",
|
|
91
88
|
"capabilities:get",
|
|
92
89
|
// ---- persona:* (老板侧管理 + 插话;alice 走 persona-bound WS 简化协议,不在此白名单) ----
|
|
93
90
|
"persona:create",
|
|
@@ -4584,7 +4581,7 @@ var init_persona_schemas = __esm({
|
|
|
4584
4581
|
});
|
|
4585
4582
|
|
|
4586
4583
|
// ../protocol/src/schemas.ts
|
|
4587
|
-
var SessionStatusSchema, UsageSchema, ContextUsageSchema, sessionMetaShape, SessionMetaSchema, ModelInfoSchema, ModeInfoSchema, ConfigFieldSchemaSchema, CapabilitiesGetArgs, CapabilitiesResponseSchema, AllowRuleSchema, SessionFileSchema, ParsedEventBase, HistoryUserMetaSchema, SubagentToolStatsSchema, StructuredPatchHunkSchema, ToolResultExtraSchema, MemoryEntrySchema, AskQuestionOptionSchema, AskQuestionItemSchema, ParsedEventSchema, SessionCreateArgs, SessionIdArgs, SessionUpdateArgs, SessionSendArgs, SessionRewindArgs, SessionRewindResponseSchema, SessionRewindDiffArgs, RewindDiffHunkSchema, RewindDiffFileSchema, SessionRewindDiffResponseSchema, SessionRewindableMessageIdsArgs, SessionRewindableMessageIdsResponseSchema, SessionResumeArgs, SessionForkArgs, SessionForkResponseSchema, SessionObserveArgs, SessionEventsArgs, PermissionRespondArgs, HistoryListArgs, HistoryReadArgs, HistorySubagentsArgs, HistorySubagentReadArgs, WorkspaceListArgs, WorkspaceReadArgs, SkillsListArgs, SkillEntrySchema, AgentEntrySchema, AgentsListArgs, AgentsListResponseSchema, SessionSubscribeArgs, SessionPinArgs, SessionReorderPinsArgs, GitRootArgs, GitRootResponseSchema, GitBranchArgs, GitBranchResponseSchema, GitBranchesArgs, GitBranchesResponseSchema,
|
|
4584
|
+
var SessionStatusSchema, UsageSchema, ContextUsageSchema, sessionMetaShape, SessionMetaSchema, ModelInfoSchema, ModeInfoSchema, ConfigFieldSchemaSchema, CapabilitiesGetArgs, CapabilitiesResponseSchema, AllowRuleSchema, SessionFileSchema, ParsedEventBase, HistoryUserMetaSchema, SubagentToolStatsSchema, StructuredPatchHunkSchema, ToolResultExtraSchema, MemoryEntrySchema, AskQuestionOptionSchema, AskQuestionItemSchema, ParsedEventSchema, SessionCreateArgs, SessionIdArgs, SessionUpdateArgs, SessionSendArgs, SessionRewindArgs, SessionRewindResponseSchema, SessionRewindDiffArgs, RewindDiffHunkSchema, RewindDiffFileSchema, SessionRewindDiffResponseSchema, SessionRewindableMessageIdsArgs, SessionRewindableMessageIdsResponseSchema, SessionResumeArgs, SessionForkArgs, SessionForkResponseSchema, SessionObserveArgs, SessionEventsArgs, PermissionRespondArgs, HistoryListArgs, HistoryReadArgs, HistorySubagentsArgs, HistorySubagentReadArgs, WorkspaceListArgs, WorkspaceReadArgs, SkillsListArgs, SkillEntrySchema, AgentEntrySchema, AgentsListArgs, AgentsListResponseSchema, SessionSubscribeArgs, SessionPinArgs, SessionReorderPinsArgs, GitRootArgs, GitRootResponseSchema, GitBranchArgs, GitBranchResponseSchema, GitBranchesArgs, GitBranchesResponseSchema, HistoryRecentDirsArgs, RecentDirEntrySchema, HistoryRecentDirsResponseSchema, SessionQuestionFrameSchema, SessionQuestionClearedFrameSchema, AnswerQuestionArgs, AnswerQuestionResponseSchema, CancelQuestionArgs, CancelQuestionResponseSchema, AuthRequestFrameSchema, AuthOkFrameSchema, TunnelExitedEventSchema, InfoRunningSessionSchema, InfoResponseSchema;
|
|
4588
4585
|
var init_schemas = __esm({
|
|
4589
4586
|
"../protocol/src/schemas.ts"() {
|
|
4590
4587
|
"use strict";
|
|
@@ -4674,9 +4671,6 @@ var init_schemas = __esm({
|
|
|
4674
4671
|
pinSortOrder: external_exports.number().int().nullable().optional(),
|
|
4675
4672
|
// 用户在 NewSessionDialog 或 Edit modal 选择的 icon 标识;UI 端做 enum 兜底
|
|
4676
4673
|
iconKey: external_exports.string().optional(),
|
|
4677
|
-
// NewSessionDialog 勾选 worktree 创建的 session 才会持久化这两个字段
|
|
4678
|
-
worktreeRoot: external_exports.string().min(1).optional(),
|
|
4679
|
-
worktreeBranch: external_exports.string().min(1).optional(),
|
|
4680
4674
|
// 由 session:fork 派生的 session 在 create 时记录源 session 的 sessionId(稳定 key,
|
|
4681
4675
|
// 不受 parent clear / re-spawn 影响);sidebar 据此挂 fork 图标。非 fork session 该字段缺省。
|
|
4682
4676
|
// 旧字段 forkedFromToolSessionId 已弃用,daemon 启动时一次性迁移老数据
|
|
@@ -4897,9 +4891,6 @@ var init_schemas = __esm({
|
|
|
4897
4891
|
effort: external_exports.string().optional(),
|
|
4898
4892
|
// 用户在 NewSessionDialog 选择的 icon 标识;UI 端做 enum 兜底
|
|
4899
4893
|
iconKey: external_exports.string().optional(),
|
|
4900
|
-
// NewSessionDialog 勾选 worktree 时由 UI 传入,daemon 原样持久化,不做额外副作用
|
|
4901
|
-
worktreeRoot: external_exports.string().min(1).optional(),
|
|
4902
|
-
worktreeBranch: external_exports.string().min(1).optional(),
|
|
4903
4894
|
// session:fork 派生 session 时由 UI 传入源 sessionId,daemon 写到 SessionFile.forkedFromSessionId
|
|
4904
4895
|
forkedFromSessionId: external_exports.string().min(1).optional(),
|
|
4905
4896
|
// owner-mode persona session:传此字段时 daemon 自行派生 cwd 和启动参数,
|
|
@@ -5064,25 +5055,6 @@ var init_schemas = __esm({
|
|
|
5064
5055
|
branches: external_exports.array(external_exports.string()),
|
|
5065
5056
|
head: external_exports.string().nullable()
|
|
5066
5057
|
});
|
|
5067
|
-
GitWorktreePrefixArgs = external_exports.object({}).optional();
|
|
5068
|
-
GitWorktreePrefixResponseSchema = external_exports.object({
|
|
5069
|
-
prefix: external_exports.string().min(1)
|
|
5070
|
-
});
|
|
5071
|
-
GitWorktreeCreateArgs = external_exports.object({
|
|
5072
|
-
cwd: external_exports.string().min(1),
|
|
5073
|
-
baseBranch: external_exports.string().min(1),
|
|
5074
|
-
label: external_exports.string().min(1)
|
|
5075
|
-
});
|
|
5076
|
-
GitWorktreeCreateResponseSchema = external_exports.object({
|
|
5077
|
-
worktreeRoot: external_exports.string().min(1),
|
|
5078
|
-
branch: external_exports.string().min(1),
|
|
5079
|
-
baseBranch: external_exports.string().min(1)
|
|
5080
|
-
});
|
|
5081
|
-
GitWorktreeRemoveArgs = external_exports.object({
|
|
5082
|
-
worktreeRoot: external_exports.string().min(1),
|
|
5083
|
-
worktreeBranch: external_exports.string().min(1)
|
|
5084
|
-
});
|
|
5085
|
-
GitWorktreeRemoveResponseSchema = external_exports.object({ ok: external_exports.literal(true) });
|
|
5086
5058
|
HistoryRecentDirsArgs = external_exports.object({}).optional();
|
|
5087
5059
|
RecentDirEntrySchema = external_exports.object({
|
|
5088
5060
|
cwd: external_exports.string().min(1),
|
|
@@ -9306,7 +9278,7 @@ var require_multistream = __commonJS({
|
|
|
9306
9278
|
var require_pino = __commonJS({
|
|
9307
9279
|
"../node_modules/.pnpm/pino@9.14.0/node_modules/pino/pino.js"(exports2, module2) {
|
|
9308
9280
|
"use strict";
|
|
9309
|
-
var
|
|
9281
|
+
var os15 = require("os");
|
|
9310
9282
|
var stdSerializers = require_pino_std_serializers();
|
|
9311
9283
|
var caller = require_caller();
|
|
9312
9284
|
var redaction = require_redaction();
|
|
@@ -9353,7 +9325,7 @@ var require_pino = __commonJS({
|
|
|
9353
9325
|
} = symbols;
|
|
9354
9326
|
var { epochTime, nullTime } = time;
|
|
9355
9327
|
var { pid } = process;
|
|
9356
|
-
var hostname =
|
|
9328
|
+
var hostname = os15.hostname();
|
|
9357
9329
|
var defaultErrorSerializer = stdSerializers.err;
|
|
9358
9330
|
var defaultOptions = {
|
|
9359
9331
|
level: "info",
|
|
@@ -20334,7 +20306,7 @@ var init_wire = __esm({
|
|
|
20334
20306
|
// src/run-case/controller.ts
|
|
20335
20307
|
async function runController(opts) {
|
|
20336
20308
|
const now = opts.now ?? Date.now;
|
|
20337
|
-
const cwd = opts.cwd ?? (0, import_node_fs26.mkdtempSync)(import_node_path28.default.join(
|
|
20309
|
+
const cwd = opts.cwd ?? (0, import_node_fs26.mkdtempSync)(import_node_path28.default.join(import_node_os14.default.tmpdir(), "clawd-runcase-"));
|
|
20338
20310
|
const ownsCwd = opts.cwd === void 0;
|
|
20339
20311
|
const recorder = startRunCaseRecorder({ recordPath: opts.record, now });
|
|
20340
20312
|
const spawnCtx = { cwd };
|
|
@@ -20501,12 +20473,12 @@ async function runController(opts) {
|
|
|
20501
20473
|
}
|
|
20502
20474
|
return exitCode ?? 0;
|
|
20503
20475
|
}
|
|
20504
|
-
var import_node_fs26,
|
|
20476
|
+
var import_node_fs26, import_node_os14, import_node_path28;
|
|
20505
20477
|
var init_controller = __esm({
|
|
20506
20478
|
"src/run-case/controller.ts"() {
|
|
20507
20479
|
"use strict";
|
|
20508
20480
|
import_node_fs26 = require("fs");
|
|
20509
|
-
|
|
20481
|
+
import_node_os14 = __toESM(require("os"), 1);
|
|
20510
20482
|
import_node_path28 = __toESM(require("path"), 1);
|
|
20511
20483
|
init_claude();
|
|
20512
20484
|
init_stdout_splitter();
|
|
@@ -22436,8 +22408,6 @@ var SessionManager = class {
|
|
|
22436
22408
|
permissionMode: args.permissionMode,
|
|
22437
22409
|
effort: args.effort,
|
|
22438
22410
|
iconKey: args.iconKey,
|
|
22439
|
-
worktreeRoot: args.worktreeRoot,
|
|
22440
|
-
worktreeBranch: args.worktreeBranch,
|
|
22441
22411
|
forkedFromSessionId: args.forkedFromSessionId,
|
|
22442
22412
|
ownerPersonaId: args.ownerPersonaId,
|
|
22443
22413
|
createdAt: iso,
|
|
@@ -27957,21 +27927,9 @@ init_protocol();
|
|
|
27957
27927
|
// src/workspace/git.ts
|
|
27958
27928
|
var import_node_child_process6 = require("child_process");
|
|
27959
27929
|
var import_node_fs23 = __toESM(require("fs"), 1);
|
|
27960
|
-
var import_node_os13 = __toESM(require("os"), 1);
|
|
27961
27930
|
var import_node_path25 = __toESM(require("path"), 1);
|
|
27962
27931
|
var import_node_util = require("util");
|
|
27963
27932
|
var pexec = (0, import_node_util.promisify)(import_node_child_process6.execFile);
|
|
27964
|
-
function formatChildProcessError(err) {
|
|
27965
|
-
const e = err;
|
|
27966
|
-
const stderrLine = (e.stderr ?? "").split("\n").map((s) => s.trim()).find((s) => s.length > 0);
|
|
27967
|
-
if (stderrLine) return stderrLine;
|
|
27968
|
-
const parts = [];
|
|
27969
|
-
if (e.killed) parts.push("killed");
|
|
27970
|
-
if (e.signal) parts.push(`signal=${e.signal}`);
|
|
27971
|
-
if (e.code !== void 0 && e.code !== null) parts.push(`code=${e.code}`);
|
|
27972
|
-
if (parts.length > 0) return parts.join(" ");
|
|
27973
|
-
return e.message ?? "unknown error";
|
|
27974
|
-
}
|
|
27975
27933
|
function normalizePath(p2) {
|
|
27976
27934
|
const resolved = import_node_path25.default.resolve(p2);
|
|
27977
27935
|
try {
|
|
@@ -28044,160 +28002,6 @@ async function listGitBranches(cwd) {
|
|
|
28044
28002
|
return { branches: [], head: null };
|
|
28045
28003
|
}
|
|
28046
28004
|
}
|
|
28047
|
-
var LABEL_WHITELIST = /^[a-zA-Z0-9 _-]+$/;
|
|
28048
|
-
var MAX_SANITIZED_LABEL_LEN = 40;
|
|
28049
|
-
function sanitizeLabel(raw) {
|
|
28050
|
-
if (typeof raw !== "string") return { sanitized: null, reason: "empty" };
|
|
28051
|
-
if (raw.length === 0) return { sanitized: null, reason: "empty" };
|
|
28052
|
-
if (!LABEL_WHITELIST.test(raw)) return { sanitized: null, reason: "invalid-chars" };
|
|
28053
|
-
let s = raw.toLowerCase();
|
|
28054
|
-
s = s.replace(/\s+/g, "-");
|
|
28055
|
-
s = s.replace(/-+/g, "-");
|
|
28056
|
-
s = s.replace(/^[-_]+|[-_]+$/g, "");
|
|
28057
|
-
s = s.slice(0, MAX_SANITIZED_LABEL_LEN);
|
|
28058
|
-
s = s.replace(/^[-_]+|[-_]+$/g, "");
|
|
28059
|
-
if (!s) return { sanitized: null, reason: "empty" };
|
|
28060
|
-
return { sanitized: s, reason: null };
|
|
28061
|
-
}
|
|
28062
|
-
function computePrefix() {
|
|
28063
|
-
let username;
|
|
28064
|
-
try {
|
|
28065
|
-
username = import_node_os13.default.userInfo().username;
|
|
28066
|
-
} catch {
|
|
28067
|
-
username = void 0;
|
|
28068
|
-
}
|
|
28069
|
-
const { sanitized } = sanitizeLabel(username);
|
|
28070
|
-
if (sanitized) return sanitized;
|
|
28071
|
-
const rand = Math.floor(1e3 + Math.random() * 9e3).toString();
|
|
28072
|
-
return `user-${rand}`;
|
|
28073
|
-
}
|
|
28074
|
-
function flattenToDirName(branch) {
|
|
28075
|
-
return branch.replace(/\//g, "-");
|
|
28076
|
-
}
|
|
28077
|
-
function encodeClaudeProjectDir(absPath) {
|
|
28078
|
-
if (!absPath || typeof absPath !== "string") return "";
|
|
28079
|
-
let canonical = import_node_path25.default.resolve(absPath);
|
|
28080
|
-
try {
|
|
28081
|
-
canonical = import_node_fs23.default.realpathSync(canonical);
|
|
28082
|
-
} catch {
|
|
28083
|
-
try {
|
|
28084
|
-
const parent = import_node_fs23.default.realpathSync(import_node_path25.default.dirname(canonical));
|
|
28085
|
-
canonical = import_node_path25.default.join(parent, import_node_path25.default.basename(canonical));
|
|
28086
|
-
} catch {
|
|
28087
|
-
}
|
|
28088
|
-
}
|
|
28089
|
-
return canonical.replace(/[/.]/g, "-");
|
|
28090
|
-
}
|
|
28091
|
-
async function createWorktree(input) {
|
|
28092
|
-
const { cwd, baseBranch, label } = input;
|
|
28093
|
-
if (!cwd || typeof cwd !== "string") throw new Error("cwd \u4E0D\u80FD\u4E3A\u7A7A");
|
|
28094
|
-
if (!baseBranch || typeof baseBranch !== "string") throw new Error("baseBranch \u4E0D\u80FD\u4E3A\u7A7A");
|
|
28095
|
-
const labelResult = sanitizeLabel(label);
|
|
28096
|
-
if (labelResult.reason === "invalid-chars") {
|
|
28097
|
-
throw new Error("label \u4E0D\u80FD\u542B\u4E2D\u6587\u6216\u7279\u6B8A\u5B57\u7B26\uFF0C\u53EA\u5141\u8BB8\u82F1\u6587\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u7A7A\u683C\u3001\u8FDE\u5B57\u7B26\u3001\u4E0B\u5212\u7EBF");
|
|
28098
|
-
}
|
|
28099
|
-
if (labelResult.reason === "empty" || !labelResult.sanitized) {
|
|
28100
|
-
throw new Error("label \u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4E2A\u82F1\u6587\u5B57\u6BCD\u6216\u6570\u5B57");
|
|
28101
|
-
}
|
|
28102
|
-
const prefix = computePrefix();
|
|
28103
|
-
const branch = `${prefix}/${labelResult.sanitized}`;
|
|
28104
|
-
const dirName = flattenToDirName(branch);
|
|
28105
|
-
const { isGitRoot } = await getGitRoot(cwd);
|
|
28106
|
-
if (!isGitRoot) {
|
|
28107
|
-
throw new Error(`\u76EE\u5F55 ${cwd} \u4E0D\u662F git repo \u6839`);
|
|
28108
|
-
}
|
|
28109
|
-
const parent = import_node_path25.default.dirname(import_node_path25.default.resolve(cwd));
|
|
28110
|
-
if (parent === "/" || parent === import_node_path25.default.resolve(cwd)) {
|
|
28111
|
-
throw new Error("repo \u5728\u78C1\u76D8\u6839\u76EE\u5F55\uFF0C\u65E0\u6CD5\u5728\u540C\u7EA7\u521B\u5EFA worktree");
|
|
28112
|
-
}
|
|
28113
|
-
const worktreeRoot = import_node_path25.default.join(parent, dirName);
|
|
28114
|
-
try {
|
|
28115
|
-
await pexec("git", ["-C", cwd, "fetch", "origin", baseBranch, "--no-tags"], {
|
|
28116
|
-
timeout: 3e4
|
|
28117
|
-
});
|
|
28118
|
-
} catch (err) {
|
|
28119
|
-
throw new Error(
|
|
28120
|
-
`\u57FA\u51C6\u5206\u652F ${baseBranch} \u4E0D\u5B58\u5728\u6216 fetch \u8FDC\u7AEF\u5931\u8D25\uFF1A${formatChildProcessError(err)}`
|
|
28121
|
-
);
|
|
28122
|
-
}
|
|
28123
|
-
try {
|
|
28124
|
-
await pexec("git", ["-C", cwd, "rev-parse", "--verify", `refs/heads/${branch}`], {
|
|
28125
|
-
timeout: 3e3
|
|
28126
|
-
});
|
|
28127
|
-
throw new Error(`\u5206\u652F ${branch} \u5DF2\u5B58\u5728\uFF0C\u8BF7\u6362\u4E00\u4E2A label`);
|
|
28128
|
-
} catch (err) {
|
|
28129
|
-
const msg = err.message;
|
|
28130
|
-
if (msg.startsWith("\u5206\u652F ")) throw err;
|
|
28131
|
-
}
|
|
28132
|
-
if (import_node_fs23.default.existsSync(worktreeRoot)) {
|
|
28133
|
-
throw new Error(`\u76EE\u5F55 ${worktreeRoot} \u5DF2\u5B58\u5728\uFF0C\u8BF7\u6362\u4E00\u4E2A label \u6216\u6E05\u7406\u540E\u91CD\u8BD5`);
|
|
28134
|
-
}
|
|
28135
|
-
try {
|
|
28136
|
-
await pexec(
|
|
28137
|
-
"git",
|
|
28138
|
-
["-C", cwd, "worktree", "add", worktreeRoot, "-b", branch, `origin/${baseBranch}`],
|
|
28139
|
-
{ timeout: 15e3 }
|
|
28140
|
-
);
|
|
28141
|
-
} catch (err) {
|
|
28142
|
-
throw new Error(`\u521B\u5EFA worktree \u5931\u8D25\uFF1A${formatChildProcessError(err)}`);
|
|
28143
|
-
}
|
|
28144
|
-
return { worktreeRoot, branch, baseBranch };
|
|
28145
|
-
}
|
|
28146
|
-
async function removeWorktree(input) {
|
|
28147
|
-
const { worktreeRoot, worktreeBranch } = input;
|
|
28148
|
-
if (!worktreeRoot || !worktreeBranch) {
|
|
28149
|
-
throw new Error("worktreeRoot \u548C worktreeBranch \u90FD\u4E0D\u80FD\u4E3A\u7A7A");
|
|
28150
|
-
}
|
|
28151
|
-
let repoRoot = null;
|
|
28152
|
-
try {
|
|
28153
|
-
const { stdout } = await pexec(
|
|
28154
|
-
"git",
|
|
28155
|
-
["-C", worktreeRoot, "rev-parse", "--git-common-dir"],
|
|
28156
|
-
{ timeout: 3e3 }
|
|
28157
|
-
);
|
|
28158
|
-
const gitCommonDir = stdout.trim();
|
|
28159
|
-
if (!gitCommonDir) throw new Error("empty git-common-dir");
|
|
28160
|
-
const absGitCommon = import_node_path25.default.isAbsolute(gitCommonDir) ? gitCommonDir : import_node_path25.default.resolve(worktreeRoot, gitCommonDir);
|
|
28161
|
-
repoRoot = import_node_path25.default.dirname(absGitCommon);
|
|
28162
|
-
} catch {
|
|
28163
|
-
repoRoot = null;
|
|
28164
|
-
}
|
|
28165
|
-
if (repoRoot) {
|
|
28166
|
-
try {
|
|
28167
|
-
await pexec("git", ["-C", repoRoot, "worktree", "remove", worktreeRoot, "--force"], {
|
|
28168
|
-
timeout: 1e4
|
|
28169
|
-
});
|
|
28170
|
-
} catch (err) {
|
|
28171
|
-
const stderr = err.stderr ?? "";
|
|
28172
|
-
const lower = stderr.toLowerCase();
|
|
28173
|
-
const vanished = lower.includes("not a working tree") || lower.includes("is not a working tree") || !import_node_fs23.default.existsSync(worktreeRoot);
|
|
28174
|
-
if (!vanished) {
|
|
28175
|
-
throw new Error(`\u6E05\u7406 worktree \u5931\u8D25\uFF1A${formatChildProcessError(err)}`);
|
|
28176
|
-
}
|
|
28177
|
-
}
|
|
28178
|
-
try {
|
|
28179
|
-
await pexec("git", ["-C", repoRoot, "branch", "-D", worktreeBranch], { timeout: 5e3 });
|
|
28180
|
-
} catch (err) {
|
|
28181
|
-
const stderr = err.stderr ?? "";
|
|
28182
|
-
const lower = stderr.toLowerCase();
|
|
28183
|
-
const vanished = lower.includes("not found") || lower.includes("no such");
|
|
28184
|
-
if (!vanished) {
|
|
28185
|
-
throw new Error(`\u6E05\u7406\u5206\u652F\u5931\u8D25\uFF1A${formatChildProcessError(err)}`);
|
|
28186
|
-
}
|
|
28187
|
-
}
|
|
28188
|
-
}
|
|
28189
|
-
try {
|
|
28190
|
-
const encoded = encodeClaudeProjectDir(worktreeRoot);
|
|
28191
|
-
if (encoded) {
|
|
28192
|
-
const projectsRoot = import_node_path25.default.join(import_node_os13.default.homedir(), ".claude", "projects");
|
|
28193
|
-
const target = import_node_path25.default.resolve(projectsRoot, encoded);
|
|
28194
|
-
if (target.startsWith(projectsRoot + import_node_path25.default.sep) && target !== projectsRoot) {
|
|
28195
|
-
import_node_fs23.default.rmSync(target, { recursive: true, force: true });
|
|
28196
|
-
}
|
|
28197
|
-
}
|
|
28198
|
-
} catch {
|
|
28199
|
-
}
|
|
28200
|
-
}
|
|
28201
28005
|
|
|
28202
28006
|
// src/handlers/git.ts
|
|
28203
28007
|
function buildGitHandlers() {
|
|
@@ -28216,36 +28020,10 @@ function buildGitHandlers() {
|
|
|
28216
28020
|
const res = await listGitBranches(args.cwd);
|
|
28217
28021
|
return { response: { type: "git:branches", ...res } };
|
|
28218
28022
|
};
|
|
28219
|
-
const worktreePrefix = async () => {
|
|
28220
|
-
return {
|
|
28221
|
-
response: { type: "git:worktree:prefix", prefix: computePrefix() }
|
|
28222
|
-
};
|
|
28223
|
-
};
|
|
28224
|
-
const worktreeCreate = async (frame) => {
|
|
28225
|
-
const args = GitWorktreeCreateArgs.parse(frame);
|
|
28226
|
-
try {
|
|
28227
|
-
const res = await createWorktree(args);
|
|
28228
|
-
return { response: { type: "git:worktree:create", ...res } };
|
|
28229
|
-
} catch (err) {
|
|
28230
|
-
throw new ClawdError(ERROR_CODES.INTERNAL, err.message);
|
|
28231
|
-
}
|
|
28232
|
-
};
|
|
28233
|
-
const worktreeRemove = async (frame) => {
|
|
28234
|
-
const args = GitWorktreeRemoveArgs.parse(frame);
|
|
28235
|
-
try {
|
|
28236
|
-
await removeWorktree(args);
|
|
28237
|
-
return { response: { type: "git:worktree:remove", ok: true } };
|
|
28238
|
-
} catch (err) {
|
|
28239
|
-
throw new ClawdError(ERROR_CODES.INTERNAL, err.message);
|
|
28240
|
-
}
|
|
28241
|
-
};
|
|
28242
28023
|
return {
|
|
28243
28024
|
"git:root": root,
|
|
28244
28025
|
"git:branch": branch,
|
|
28245
|
-
"git:branches": branches
|
|
28246
|
-
"git:worktree:prefix": worktreePrefix,
|
|
28247
|
-
"git:worktree:create": worktreeCreate,
|
|
28248
|
-
"git:worktree:remove": worktreeRemove
|
|
28026
|
+
"git:branches": branches
|
|
28249
28027
|
};
|
|
28250
28028
|
}
|
|
28251
28029
|
|
|
@@ -28264,7 +28042,7 @@ function buildCapabilitiesHandlers(deps) {
|
|
|
28264
28042
|
}
|
|
28265
28043
|
|
|
28266
28044
|
// src/handlers/meta.ts
|
|
28267
|
-
var
|
|
28045
|
+
var import_node_os13 = __toESM(require("os"), 1);
|
|
28268
28046
|
init_protocol();
|
|
28269
28047
|
|
|
28270
28048
|
// src/version.ts
|
|
@@ -28294,7 +28072,7 @@ function buildReadyFrame(deps, client) {
|
|
|
28294
28072
|
return {
|
|
28295
28073
|
version,
|
|
28296
28074
|
protocolVersion: PROTOCOL_VERSION,
|
|
28297
|
-
hostname:
|
|
28075
|
+
hostname: import_node_os13.default.hostname(),
|
|
28298
28076
|
os: process.platform,
|
|
28299
28077
|
tools,
|
|
28300
28078
|
runningSessions: info.runningSessions,
|
package/package.json
CHANGED