@clawos-dev/clawd 0.2.135-beta.283.aae6084 → 0.2.135
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
CHANGED
|
@@ -35501,10 +35501,6 @@ function num(v2) {
|
|
|
35501
35501
|
}
|
|
35502
35502
|
|
|
35503
35503
|
// src/tools/codex-app-server-params.ts
|
|
35504
|
-
function resolveSandbox(ctx) {
|
|
35505
|
-
if (ctx.personaMode === "guest") return "workspace-write";
|
|
35506
|
-
return "danger-full-access";
|
|
35507
|
-
}
|
|
35508
35504
|
function resolveApprovalPolicy(ctx) {
|
|
35509
35505
|
if (ctx.personaMode === "owner" || ctx.personaMode === "guest") return "never";
|
|
35510
35506
|
const m2 = ctx.permissionMode ?? "";
|
|
@@ -35556,9 +35552,11 @@ function threadStartParams(ctx) {
|
|
|
35556
35552
|
approvalPolicy: resolveApprovalPolicy(ctx),
|
|
35557
35553
|
approvalsReviewer: "user",
|
|
35558
35554
|
...ctx.model ? { model: ctx.model } : {},
|
|
35559
|
-
// guest 沙箱由 app-server 启动 -c 注入的
|
|
35560
|
-
//
|
|
35561
|
-
|
|
35555
|
+
// sandbox = persona 侧 shell 沙箱边界(不进会话设置)。guest 沙箱由 app-server 启动 -c 注入的
|
|
35556
|
+
// permission profile(codexGuestCliArgs)控制——profile 是进程启动解析的,故 guest **不发
|
|
35557
|
+
// sandbox 字段**(避免 sandbox mode 覆盖 profile);owner / 普通会话 → danger-full-access
|
|
35558
|
+
// (owner 全权,对齐 CC owner 无 OS 沙箱),不读 permissionMode(那是审批预设,进 approvalPolicy)。
|
|
35559
|
+
...ctx.personaMode === "guest" ? {} : { sandbox: "danger-full-access" },
|
|
35562
35560
|
// 连接 intro(owner/guest 人称差异化)走 developerInstructions(developer 级、不进消息流、不显示在 UI),
|
|
35563
35561
|
// 取代旧的"折进首条 turn 文本"(那个被当用户消息显示)。thread/start + thread/resume 都带,幂等。
|
|
35564
35562
|
...ctx.extraSystemPrompt ? { developerInstructions: ctx.extraSystemPrompt } : {}
|
|
@@ -40036,6 +40034,14 @@ var StateFileManager = class {
|
|
|
40036
40034
|
}
|
|
40037
40035
|
};
|
|
40038
40036
|
|
|
40037
|
+
// src/discovery/source-from-env.ts
|
|
40038
|
+
function readDaemonSourceFromEnv(env = process.env) {
|
|
40039
|
+
const v2 = env.CLAWD_DAEMON_SOURCE;
|
|
40040
|
+
if (typeof v2 !== "string") return void 0;
|
|
40041
|
+
const trimmed = v2.trim();
|
|
40042
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
40043
|
+
}
|
|
40044
|
+
|
|
40039
40045
|
// src/tunnel/tunnel-manager.ts
|
|
40040
40046
|
var import_node_fs24 = __toESM(require("fs"), 1);
|
|
40041
40047
|
var import_node_path25 = __toESM(require("path"), 1);
|
|
@@ -45931,7 +45937,8 @@ async function startDaemon(config) {
|
|
|
45931
45937
|
protocolVersion: PROTOCOL_VERSION,
|
|
45932
45938
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
45933
45939
|
authMode,
|
|
45934
|
-
authToken: resolvedAuthToken ?? void 0
|
|
45940
|
+
authToken: resolvedAuthToken ?? void 0,
|
|
45941
|
+
source: readDaemonSourceFromEnv()
|
|
45935
45942
|
};
|
|
45936
45943
|
stateMgr.write(stateSnapshot);
|
|
45937
45944
|
process.stdout.write(`Ready: ${url}
|
|
@@ -70,6 +70,19 @@ done
|
|
|
70
70
|
- **显式优于隐式**(数据流和依赖清晰可见)
|
|
71
71
|
- **测试驱动**(先写测试)
|
|
72
72
|
|
|
73
|
+
## 模块边界:deep-leaf 优先
|
|
74
|
+
|
|
75
|
+
划模块边界时按这两条判据,理想是"既 deep 又 leaf"的节点:
|
|
76
|
+
|
|
77
|
+
- **deep**(接口窄、内部厚):调用方不需要知道实现细节就能正确用。改实现 → 调用方无感
|
|
78
|
+
- **leaf**(爆炸半径小):没有其他模块依赖它的内部状态。它出 bug / 被重写不会污染上游
|
|
79
|
+
|
|
80
|
+
**反面**:浅模块(接口比实现还复杂,把简单逻辑拆碎成 N 个文件)、伪主干(本可叶子的功能因偷懒共享状态而长成主干)。
|
|
81
|
+
|
|
82
|
+
**AI 协作处方**:叶子节点可以放手让 AI vibe;主干 / 跨模块改动必须人工 review 接口设计。
|
|
83
|
+
|
|
84
|
+
参考 Ousterhout *A Philosophy of Software Design* 的 deep module 概念。
|
|
85
|
+
|
|
73
86
|
## 跨模块设计
|
|
74
87
|
|
|
75
88
|
**推迟逻辑分叉**:同一条数据/事件链路跨多个模块时,分叉尽量在最末端消费方。中间层默认复用上游 schema 透传,下游按需 narrow。
|
package/package.json
CHANGED