@clawos-dev/clawd 0.2.155 → 0.2.156-beta.327.ef22c15
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 +62 -17
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -4730,6 +4730,14 @@ var init_schemas = __esm({
|
|
|
4730
4730
|
* 归属人由 contact(deviceId→ownerId) 反查,该字段理由消失。
|
|
4731
4731
|
*/
|
|
4732
4732
|
creatorPrincipalId: external_exports.string().min(1).optional(),
|
|
4733
|
+
/**
|
|
4734
|
+
* 创建该 session 的连接者飞书 displayName(一次性 stamp)。session:create handler
|
|
4735
|
+
* 从 ctx.principal.displayName 传入;newRunner 时读这个字段派生 SubSessionMeta.callerDisplayName,
|
|
4736
|
+
* 注入到 cc system prompt 引导自我介绍(见 connection-prompt.ts)。
|
|
4737
|
+
* Optional 兼容老 SessionFile——newRunner 读不到时 fallback ContactStore 反查(guest)
|
|
4738
|
+
* 或 deps.ownerDisplayName(owner)。
|
|
4739
|
+
*/
|
|
4740
|
+
creatorDisplayName: external_exports.string().min(1).optional(),
|
|
4733
4741
|
/**
|
|
4734
4742
|
* Mirror peer sessions (2026-05-26): mirror 标识。**我在朋友 daemon 上创建的 session**,
|
|
4735
4743
|
* 远端是 source of truth,本机是持久化副本,方便 sidebar 跨设备聚合。
|
|
@@ -31782,21 +31790,28 @@ function scopeSubPath(scope) {
|
|
|
31782
31790
|
if (scope.mode === "guest") return [scope.personaId, "guests", scope.capId];
|
|
31783
31791
|
return [scope.personaId, scope.mode];
|
|
31784
31792
|
}
|
|
31785
|
-
function metaFromScope(scope, personaRoot, usersRoot, ownerPrincipalId) {
|
|
31793
|
+
function metaFromScope(scope, personaRoot, usersRoot, ownerPrincipalId, callerDisplayName) {
|
|
31786
31794
|
if (scope.kind === "default") return void 0;
|
|
31787
31795
|
if (scope.mode === "owner") {
|
|
31788
31796
|
if (!ownerPrincipalId || !usersRoot) {
|
|
31789
|
-
return { idleKillEnabled: false, personaMode: "owner" };
|
|
31797
|
+
return { idleKillEnabled: false, personaMode: "owner", callerDisplayName };
|
|
31790
31798
|
}
|
|
31791
31799
|
const userWorkDir2 = deriveUserWorkDir(ownerPrincipalId, usersRoot);
|
|
31792
|
-
return {
|
|
31800
|
+
return {
|
|
31801
|
+
idleKillEnabled: false,
|
|
31802
|
+
personaMode: "owner",
|
|
31803
|
+
userWorkDir: userWorkDir2,
|
|
31804
|
+
addDirs: [userWorkDir2],
|
|
31805
|
+
callerDisplayName
|
|
31806
|
+
};
|
|
31793
31807
|
}
|
|
31794
31808
|
const userWorkDir = deriveUserWorkDir(scope.capId, usersRoot);
|
|
31795
31809
|
return {
|
|
31796
31810
|
idleKillEnabled: true,
|
|
31797
31811
|
personaMode: "guest",
|
|
31798
31812
|
userWorkDir,
|
|
31799
|
-
addDirs: [userWorkDir]
|
|
31813
|
+
addDirs: [userWorkDir],
|
|
31814
|
+
callerDisplayName
|
|
31800
31815
|
};
|
|
31801
31816
|
}
|
|
31802
31817
|
function scopeForFile(file, ownerPrincipalId) {
|
|
@@ -32076,12 +32091,19 @@ function buildRule(tool, input) {
|
|
|
32076
32091
|
var OWNER_TEMPLATE = `# \u8FDE\u63A5\u4E0A\u4E0B\u6587
|
|
32077
32092
|
\u4F60\u73B0\u5728\u4EE5 Owner \u8EAB\u4EFD\u88AB\u8FDE\u63A5\uFF0C\u5BF9\u65B9\u5C31\u662F owner \u672C\u4EBA\uFF08{ownerLabel}\uFF09\u3002
|
|
32078
32093
|
\u81EA\u6211\u4ECB\u7ECD\u65F6\u4F7F\u7528\u7B2C\u4E00/\u7B2C\u4E8C\u4EBA\u79F0\uFF0C\u4F8B\u5982\u300C\u6211\u662F\u60A8\u7684 xxx \u52A9\u624B\u300D\u3002`;
|
|
32079
|
-
var
|
|
32080
|
-
\u4F60\u73B0\u5728\u4EE5
|
|
32081
|
-
\u81EA\u6211\u4ECB\u7ECD\u65F6\
|
|
32094
|
+
var GUEST_TEMPLATE = `# \u8FDE\u63A5\u4E0A\u4E0B\u6587
|
|
32095
|
+
\u4F60\u73B0\u5728\u4EE5 Guest \u8EAB\u4EFD\u88AB\u8FDE\u63A5\uFF0C\u672C persona \u7684 owner \u662F\u300C{ownerLabel}\u300D\uFF0C\u5F53\u524D\u5BF9\u8BDD\u7684\u5BF9\u65B9\u662F\u300C{guestLabel}\u300D\uFF0C\u4E0D\u662F owner \u672C\u4EBA\u3002
|
|
32096
|
+
\u81EA\u6211\u4ECB\u7ECD\u65F6\u7B2C\u4E09\u4EBA\u79F0\u6307\u4EE3 owner\u3001\u7B2C\u4E8C\u4EBA\u79F0\u79F0\u547C\u5BF9\u65B9\uFF0C\u4F8B\u5982\u300C{guestLabel}\uFF0C\u6211\u662F {ownerLabel} \u7684 xxx \u52A9\u624B\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7\u6211\u770B\u5230\u4ED6\u7684 xxx\u300D\u3002\u4E0D\u8981\u628A\u5BF9\u65B9\u5F53\u6210 owner\uFF0C\u4E0D\u8981\u66FF owner \u505A\u51FA\u627F\u8BFA\u3002`;
|
|
32082
32097
|
function buildConnectionPrompt(args) {
|
|
32083
|
-
|
|
32084
|
-
|
|
32098
|
+
let result;
|
|
32099
|
+
if (args.mode === "guest") {
|
|
32100
|
+
result = GUEST_TEMPLATE.replace(/\{ownerLabel\}/g, args.ownerLabel).replace(
|
|
32101
|
+
/\{guestLabel\}/g,
|
|
32102
|
+
args.guestLabel
|
|
32103
|
+
);
|
|
32104
|
+
} else {
|
|
32105
|
+
result = OWNER_TEMPLATE.replace(/\{ownerLabel\}/g, args.ownerLabel);
|
|
32106
|
+
}
|
|
32085
32107
|
if (args.workDir) {
|
|
32086
32108
|
result += `
|
|
32087
32109
|
\u4F60\u7684\u6587\u4EF6\u5DE5\u4F5C\u76EE\u5F55\u662F ${args.workDir}\uFF0C\u6240\u6709\u6587\u4EF6\u8BFB\u5199\u90FD\u653E\u5728\u8FD9\u4E2A\u76EE\u5F55\u4E0B\u3002persona \u76EE\u5F55\u5BF9\u4F60\u53EA\u8BFB\uFF0C\u4E0D\u8981\u5F80\u91CC\u5199\u3002`;
|
|
@@ -32213,11 +32235,25 @@ function buildSpawnContext(state, deps) {
|
|
|
32213
32235
|
const meta = state.subSessionMeta;
|
|
32214
32236
|
if (meta?.personaMode) {
|
|
32215
32237
|
ctx.personaMode = meta.personaMode;
|
|
32216
|
-
|
|
32217
|
-
|
|
32218
|
-
|
|
32219
|
-
|
|
32220
|
-
|
|
32238
|
+
let promptArgs;
|
|
32239
|
+
if (meta.personaMode === "guest") {
|
|
32240
|
+
if (!meta.callerDisplayName) {
|
|
32241
|
+
throw new Error("guest persona mode requires meta.callerDisplayName");
|
|
32242
|
+
}
|
|
32243
|
+
promptArgs = {
|
|
32244
|
+
mode: "guest",
|
|
32245
|
+
ownerLabel: deps.ownerDisplayName,
|
|
32246
|
+
guestLabel: meta.callerDisplayName,
|
|
32247
|
+
workDir: meta.userWorkDir
|
|
32248
|
+
};
|
|
32249
|
+
} else {
|
|
32250
|
+
promptArgs = {
|
|
32251
|
+
mode: "owner",
|
|
32252
|
+
ownerLabel: meta.callerDisplayName ?? deps.ownerDisplayName,
|
|
32253
|
+
workDir: meta.userWorkDir
|
|
32254
|
+
};
|
|
32255
|
+
}
|
|
32256
|
+
ctx.extraSystemPrompt = buildConnectionPrompt(promptArgs);
|
|
32221
32257
|
}
|
|
32222
32258
|
if (dispatchMcpConfigPath2) {
|
|
32223
32259
|
ctx.extraSystemPrompt = (ctx.extraSystemPrompt ? ctx.extraSystemPrompt + "\n\n" : "") + DISPATCH_SYSTEM_PROMPT_HINT;
|
|
@@ -33702,11 +33738,13 @@ var SessionManager = class {
|
|
|
33702
33738
|
newRunner(file, scope) {
|
|
33703
33739
|
const adapter = this.deps.getAdapter(file.tool ?? "claude");
|
|
33704
33740
|
const store = this.storeFor(scope);
|
|
33741
|
+
const callerDisplayName = file.creatorDisplayName ?? (scope.kind === "persona" ? scope.mode === "owner" ? this.deps.ownerDisplayName : this.deps.contactStore?.get(scope.capId)?.displayName : void 0);
|
|
33705
33742
|
const subSessionMeta = metaFromScope(
|
|
33706
33743
|
scope,
|
|
33707
33744
|
this.deps.personaRoot ?? "",
|
|
33708
33745
|
this.deps.usersRoot ?? "",
|
|
33709
|
-
this.deps.ownerPrincipalId
|
|
33746
|
+
this.deps.ownerPrincipalId,
|
|
33747
|
+
callerDisplayName
|
|
33710
33748
|
);
|
|
33711
33749
|
if (subSessionMeta?.userWorkDir) {
|
|
33712
33750
|
import_node_fs6.default.mkdirSync(subSessionMeta.userWorkDir, { recursive: true });
|
|
@@ -33851,7 +33889,7 @@ var SessionManager = class {
|
|
|
33851
33889
|
}
|
|
33852
33890
|
}
|
|
33853
33891
|
// ---- 命令方法:均返回 { response, broadcast[] },由 dispatcher 聚合 ----
|
|
33854
|
-
create(args, creatorPrincipalId) {
|
|
33892
|
+
create(args, creatorPrincipalId, creatorDisplayName) {
|
|
33855
33893
|
let cwd;
|
|
33856
33894
|
if (args.ownerPersonaId) {
|
|
33857
33895
|
cwd = derivePersonaSpawnCwd(
|
|
@@ -33894,6 +33932,7 @@ var SessionManager = class {
|
|
|
33894
33932
|
ownerPersonaId: args.ownerPersonaId,
|
|
33895
33933
|
appBuilderProject: args.appBuilderProject,
|
|
33896
33934
|
creatorPrincipalId,
|
|
33935
|
+
creatorDisplayName,
|
|
33897
33936
|
createdAt: iso,
|
|
33898
33937
|
updatedAt: iso
|
|
33899
33938
|
};
|
|
@@ -42250,7 +42289,12 @@ function buildSessionHandlers(deps) {
|
|
|
42250
42289
|
}
|
|
42251
42290
|
ensurePersonaAccess(ctx, args.ownerPersonaId, "send");
|
|
42252
42291
|
const creatorPrincipalId = ctx?.principal.id ?? ownerPrincipalId;
|
|
42253
|
-
const
|
|
42292
|
+
const creatorDisplayName = ctx?.principal.displayName ?? "Owner";
|
|
42293
|
+
const { response, broadcast } = manager.create(
|
|
42294
|
+
{ ...args, tool },
|
|
42295
|
+
creatorPrincipalId,
|
|
42296
|
+
creatorDisplayName
|
|
42297
|
+
);
|
|
42254
42298
|
return { response: { type: "session:info", ...response }, broadcast };
|
|
42255
42299
|
};
|
|
42256
42300
|
const list = async (_frame, _client, ctx) => {
|
|
@@ -46489,6 +46533,7 @@ async function startDaemon(config) {
|
|
|
46489
46533
|
personaStore,
|
|
46490
46534
|
ownerDisplayName,
|
|
46491
46535
|
ownerPrincipalId,
|
|
46536
|
+
contactStore,
|
|
46492
46537
|
mode: config.mode,
|
|
46493
46538
|
// 单栏 refactor (spec 2026-06-02 §5.1):cc 子进程 env CLAWD_DAEMON_URL 闭包来源。
|
|
46494
46539
|
// assistant 用 curl 调本机 daemon HTTP RPC adapter(/api/rpc/<method>)触发 appBuilder.* 管理操作。
|
package/package.json
CHANGED