@clawos-dev/clawd 0.2.270 → 0.2.271
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 +53 -10
- package/dist/dispatch/mcp-server.cjs +22 -5
- package/dist/share-md-viewer-error.html +1 -1
- package/dist/share-md-viewer.html +1 -1
- package/dist/share-ui/assets/{guest-BsfqaRCV.js → guest-BKO48Nz8.js} +119 -119
- package/dist/share-ui/assets/guest-DB_Gozzs.css +32 -0
- package/dist/share-ui/guest.html +2 -2
- package/package.json +1 -1
- package/dist/share-ui/assets/guest-BcdDrnPO.css +0 -32
package/dist/cli.cjs
CHANGED
|
@@ -6774,7 +6774,7 @@ var init_principal = __esm({
|
|
|
6774
6774
|
});
|
|
6775
6775
|
|
|
6776
6776
|
// ../protocol/src/schemas.ts
|
|
6777
|
-
var SessionStatusSchema, UsageSchema, ContextUsageSchema, sessionMetaShape, SessionMetaSchema, ModelInfoSchema, ModeInfoSchema, ConfigFieldSchemaSchema, CapabilitiesGetArgs, ToolFeaturesSchema, CapabilitiesResponseSchema, AllowRuleSchema, SessionFileSchema, ParsedEventBase, HistoryUserMetaSchema, SubagentToolStatsSchema, StructuredPatchHunkSchema, ToolResultExtraSchema, MemoryEntrySchema, AskQuestionOptionSchema, AskQuestionItemSchema, ParsedEventSchema, SessionCreateArgs, SessionListArgs, SessionIdArgs, SessionUpdateArgs, SessionSendArgs, SessionInterruptArgs, 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, SessionCurrentTurnSenderArgs, SessionSubscribeArgs, SessionPinArgs, PeerSessionUpsertArgs, PeerSessionUpsertResponseSchema, PeerSessionRemoveArgs, PeerSessionRemoveResponseSchema, SessionReorderPinsArgs, GitRootArgs, GitRootResponseSchema, GitBranchArgs, GitBranchResponseSchema, GitBranchesArgs, GitBranchesResponseSchema, HistoryRecentDirsArgs, RecentDirEntrySchema, HistoryRecentDirsResponseSchema, SessionQuestionFrameSchema, SessionQuestionClearedFrameSchema, AnswerQuestionArgs, AnswerQuestionResponseSchema, CancelQuestionArgs, CancelQuestionResponseSchema, AuthRequestFrameSchema, AuthOkFrameSchema, TunnelReadyEventSchema, TunnelExitedEventSchema, TunnelUnavailableEventSchema, InfoRunningSessionSchema, InfoResponseSchema, PROJECT_PORT_MIN, PROJECT_PORT_MAX, projectNameRegex, DEFAULT_DEV_COMMAND, ProjectMetadataSchema, PROJECT_STAGE_VALUES, ProjectStageSchema, ProjectWithStatusSchema, ListProjectsArgsSchema, ListProjectsResultSchema, GetProjectArgsSchema, GetProjectResultSchema, CreateProjectArgsSchema, CreateProjectResultSchema, DeleteProjectArgsSchema, DeleteProjectResultSchema, UpdateProjectPortArgsSchema, UpdateProjectPortResultSchema, SetProdUrlArgsSchema, SetProdUrlResultSchema, StartDevServerArgsSchema, StartDevServerResultSchema, ASSISTANT_REPORTABLE_STAGES, ReportStageArgsSchema, ReportStageResultSchema, StopDevServerArgsSchema, StopDevServerResultSchema, AppBuilderProjectUpdatedEventSchema, PublishArgsSchema, PublishResultSchema, DismissPublishJobArgsSchema, DismissPublishJobResultSchema, AppBuilderPublishProgressEventSchema, AppBuilderPublishFailedEventSchema;
|
|
6777
|
+
var SessionStatusSchema, UsageSchema, ContextUsageSchema, sessionMetaShape, SessionMetaSchema, ModelInfoSchema, ModeInfoSchema, ConfigFieldSchemaSchema, CapabilitiesGetArgs, ToolFeaturesSchema, CapabilitiesResponseSchema, AllowRuleSchema, SessionFileSchema, ParsedEventBase, HistoryUserMetaSchema, SubagentToolStatsSchema, StructuredPatchHunkSchema, ToolResultExtraSchema, MemoryEntrySchema, AskQuestionOptionSchema, AskQuestionItemSchema, ParsedEventSchema, SessionCreateArgs, SessionListArgs, SessionIdArgs, SessionUpdateArgs, SessionSendArgs, SessionInterruptArgs, 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, SessionCurrentTurnSenderArgs, SessionSubscribeArgs, SessionPinArgs, PeerSessionUpsertArgs, PeerSessionUpsertResponseSchema, PeerSessionRemoveArgs, PeerSessionRemoveResponseSchema, SessionReorderPinsArgs, GitRootArgs, GitRootResponseSchema, GitBranchArgs, GitBranchResponseSchema, GitBranchesArgs, GitBranchesResponseSchema, HistoryRecentDirsArgs, RecentDirEntrySchema, HistoryRecentDirsResponseSchema, SessionQuestionFrameSchema, SessionQuestionClearedFrameSchema, AnswerQuestionArgs, AnswerQuestionResponseSchema, CancelQuestionArgs, CancelQuestionResponseSchema, ClientInfoSchema, AuthRequestFrameSchema, AuthOkFrameSchema, DeviceConnectionEntrySchema, DeviceConnectionsResponseSchema, TunnelReadyEventSchema, TunnelExitedEventSchema, TunnelUnavailableEventSchema, InfoRunningSessionSchema, InfoResponseSchema, PROJECT_PORT_MIN, PROJECT_PORT_MAX, projectNameRegex, DEFAULT_DEV_COMMAND, ProjectMetadataSchema, PROJECT_STAGE_VALUES, ProjectStageSchema, ProjectWithStatusSchema, ListProjectsArgsSchema, ListProjectsResultSchema, GetProjectArgsSchema, GetProjectResultSchema, CreateProjectArgsSchema, CreateProjectResultSchema, DeleteProjectArgsSchema, DeleteProjectResultSchema, UpdateProjectPortArgsSchema, UpdateProjectPortResultSchema, SetProdUrlArgsSchema, SetProdUrlResultSchema, StartDevServerArgsSchema, StartDevServerResultSchema, ASSISTANT_REPORTABLE_STAGES, ReportStageArgsSchema, ReportStageResultSchema, StopDevServerArgsSchema, StopDevServerResultSchema, AppBuilderProjectUpdatedEventSchema, PublishArgsSchema, PublishResultSchema, DismissPublishJobArgsSchema, DismissPublishJobResultSchema, AppBuilderPublishProgressEventSchema, AppBuilderPublishFailedEventSchema;
|
|
6778
6778
|
var init_schemas = __esm({
|
|
6779
6779
|
"../protocol/src/schemas.ts"() {
|
|
6780
6780
|
"use strict";
|
|
@@ -7466,6 +7466,13 @@ var init_schemas = __esm({
|
|
|
7466
7466
|
toolUseId: external_exports.string().min(1)
|
|
7467
7467
|
});
|
|
7468
7468
|
CancelQuestionResponseSchema = external_exports.object({ ok: external_exports.literal(true) });
|
|
7469
|
+
ClientInfoSchema = external_exports.object({
|
|
7470
|
+
name: external_exports.string().min(1),
|
|
7471
|
+
version: external_exports.string().min(1),
|
|
7472
|
+
instanceId: external_exports.string().min(1),
|
|
7473
|
+
/** 自报设备名(如 os.hostname()),展示用非身份;trim 后截断 64 字符 */
|
|
7474
|
+
deviceLabel: external_exports.string().transform((s) => s.trim().slice(0, 64)).optional()
|
|
7475
|
+
});
|
|
7469
7476
|
AuthRequestFrameSchema = external_exports.object({
|
|
7470
7477
|
type: external_exports.literal("auth"),
|
|
7471
7478
|
token: external_exports.string().min(1),
|
|
@@ -7486,17 +7493,23 @@ var init_schemas = __esm({
|
|
|
7486
7493
|
* 'clawd-mobile-android' / ...),宽容未知值(将来加新客户端不动 schema)。
|
|
7487
7494
|
* instanceId:客户端首启生成 UUID 并本地持久化——区分同种类多实例(多手机/多 desktop 同连)。
|
|
7488
7495
|
*/
|
|
7489
|
-
clientInfo:
|
|
7490
|
-
name: external_exports.string().min(1),
|
|
7491
|
-
version: external_exports.string().min(1),
|
|
7492
|
-
instanceId: external_exports.string().min(1)
|
|
7493
|
-
}).optional()
|
|
7496
|
+
clientInfo: ClientInfoSchema.optional()
|
|
7494
7497
|
});
|
|
7495
7498
|
AuthOkFrameSchema = external_exports.object({
|
|
7496
7499
|
type: external_exports.literal("auth:ok"),
|
|
7497
7500
|
version: external_exports.string().min(1).optional(),
|
|
7498
7501
|
protocolVersion: external_exports.number().int().nonnegative().optional()
|
|
7499
7502
|
});
|
|
7503
|
+
DeviceConnectionEntrySchema = external_exports.object({
|
|
7504
|
+
clientId: external_exports.string().min(1),
|
|
7505
|
+
connectedAt: external_exports.number().int().nonnegative(),
|
|
7506
|
+
self: external_exports.boolean(),
|
|
7507
|
+
clientInfo: ClientInfoSchema.optional()
|
|
7508
|
+
});
|
|
7509
|
+
DeviceConnectionsResponseSchema = external_exports.object({
|
|
7510
|
+
type: external_exports.literal("device:connections:ok"),
|
|
7511
|
+
connections: external_exports.array(DeviceConnectionEntrySchema)
|
|
7512
|
+
});
|
|
7500
7513
|
TunnelReadyEventSchema = external_exports.object({
|
|
7501
7514
|
type: external_exports.literal("tunnel:ready"),
|
|
7502
7515
|
url: external_exports.string().min(1),
|
|
@@ -8156,6 +8169,10 @@ var init_methods = __esm({
|
|
|
8156
8169
|
summary: "\u8FDE\u63A5\u76EE\u6807\u8BBE\u5907\uFF1A\u6362 aud \u7ED1\u5B9A\u7684\u7B7E\u540D token \u5E76\u8D70 contact:handshake \u5EFA\u8054\u3002owner-only",
|
|
8157
8170
|
args: DeviceConnectArgsSchema
|
|
8158
8171
|
},
|
|
8172
|
+
"device:connections": {
|
|
8173
|
+
summary: '\u5217\u51FA\u672C daemon \u5F53\u524D\u6240\u6709 owner WS \u8FDE\u63A5\uFF08\u672C\u673A UI / \u624B\u673A / \u7B2C\u4E8C\u53F0\u684C\u9762\uFF09+ \u5404\u81EA clientInfo\u3002owner-only\uFF1Bguest \u8FDE\u63A5\u4E0D\u5728\u5217\uFF08\u4E0D\u662F"\u6211\u7684\u8BBE\u5907"\u4E14\u4E0D\u5411 UI \u6CC4\u9732 guest \u4FE1\u606F\uFF09',
|
|
8174
|
+
args: NO_ARGS
|
|
8175
|
+
},
|
|
8159
8176
|
"appBuilder:listProjects": {
|
|
8160
8177
|
summary: "\u5217\u51FA app-builder project\uFF08\u542B dev server \u72B6\u6001\uFF09",
|
|
8161
8178
|
args: ListProjectsArgsSchema
|
|
@@ -52960,7 +52977,7 @@ var LocalWsServer = class {
|
|
|
52960
52977
|
} catch {
|
|
52961
52978
|
}
|
|
52962
52979
|
}, this.pingIntervalMs);
|
|
52963
|
-
this.clients.set(id, { handle, ws: socket, pingTimer, ctx: null });
|
|
52980
|
+
this.clients.set(id, { handle, ws: socket, pingTimer, ctx: null, connectedAt: Date.now() });
|
|
52964
52981
|
this.logger?.info("client connected", { clientId: id, total: this.clients.size, remoteAddress });
|
|
52965
52982
|
const authGate = this.opts.authGate;
|
|
52966
52983
|
let authed = true;
|
|
@@ -53085,6 +53102,18 @@ var LocalWsServer = class {
|
|
|
53085
53102
|
clientCount() {
|
|
53086
53103
|
return this.clients.size;
|
|
53087
53104
|
}
|
|
53105
|
+
// device:connections 数据源:owner 连接快照。
|
|
53106
|
+
// principal.kind==='guest'(connect/visitor 票种)不列——不是"我的设备",也不向 UI
|
|
53107
|
+
// 泄露 guest 信息;ctx===null 是 noAuth localhost 路径(dispatcher 按 owner fallback
|
|
53108
|
+
// 处理),视作 owner 列入。
|
|
53109
|
+
listOwnerConnections() {
|
|
53110
|
+
const out = [];
|
|
53111
|
+
for (const [id, c] of this.clients) {
|
|
53112
|
+
if (c.ctx && c.ctx.principal.kind !== "owner") continue;
|
|
53113
|
+
out.push({ clientId: id, connectedAt: c.connectedAt, clientInfo: c.ctx?.clientInfo });
|
|
53114
|
+
}
|
|
53115
|
+
return out.sort((a, b2) => a.connectedAt - b2.connectedAt);
|
|
53116
|
+
}
|
|
53088
53117
|
};
|
|
53089
53118
|
function addSubscription(client, sessionId) {
|
|
53090
53119
|
const cur = client.subscribedSessions.get(sessionId) ?? 0;
|
|
@@ -57628,9 +57657,20 @@ function buildDeviceHandlers(deps) {
|
|
|
57628
57657
|
}
|
|
57629
57658
|
}
|
|
57630
57659
|
};
|
|
57660
|
+
const connections = async (_frame, client, ctx) => {
|
|
57661
|
+
ensureOwner3(ctx);
|
|
57662
|
+
const entries = deps.listOwnerConnections();
|
|
57663
|
+
return {
|
|
57664
|
+
response: {
|
|
57665
|
+
type: "device:connections:ok",
|
|
57666
|
+
connections: entries.map((e) => ({ ...e, self: e.clientId === client.id }))
|
|
57667
|
+
}
|
|
57668
|
+
};
|
|
57669
|
+
};
|
|
57631
57670
|
return {
|
|
57632
57671
|
"device:list": list,
|
|
57633
|
-
"device:connect": connect
|
|
57672
|
+
"device:connect": connect,
|
|
57673
|
+
"device:connections": connections
|
|
57634
57674
|
};
|
|
57635
57675
|
}
|
|
57636
57676
|
|
|
@@ -57814,6 +57854,7 @@ var METHOD_GRANT_MAP = {
|
|
|
57814
57854
|
// 设备目录 / 连接都是 owner 本机操作(用 owner 的 ttcJwt 找中心 server),guest 不可调
|
|
57815
57855
|
"device:list": ADMIN_ANY,
|
|
57816
57856
|
"device:connect": ADMIN_ANY,
|
|
57857
|
+
"device:connections": ADMIN_ANY,
|
|
57817
57858
|
// ---- app-builder Project picker(spec 2026-06-01-app-builder-project-picker-design) ----
|
|
57818
57859
|
// owner-only:picker UI 给 owner 管理本机 build 中的 project(fs + 端口分配)。
|
|
57819
57860
|
// 即使 persona-app-builder 是 PreinstalledPersona,project 管理也属本机 owner 行为,
|
|
@@ -57872,7 +57913,7 @@ function computeMethodAccess(args) {
|
|
|
57872
57913
|
}
|
|
57873
57914
|
|
|
57874
57915
|
// src/version.ts
|
|
57875
|
-
var version = "0.2.
|
|
57916
|
+
var version = "0.2.271".length > 0 ? "0.2.271" : "dev";
|
|
57876
57917
|
|
|
57877
57918
|
// src/cli-probe/probe.ts
|
|
57878
57919
|
var fs54 = __toESM(require("fs"), 1);
|
|
@@ -61739,7 +61780,9 @@ async function startDaemon(config) {
|
|
|
61739
61780
|
// 自动反向(spec 决策 #11):本机可达地址 = tunnel URL(公网),出站连接时
|
|
61740
61781
|
// 透传让对方反向加我为联系人。无 tunnel(仅本机 ws)→ null,对方不自动反向(不造假数据)。
|
|
61741
61782
|
// 决策 #16:身份不自报——本机 deviceId/ownerId/provider 由 exchange 签进 token 背书。
|
|
61742
|
-
selfUrl: () => currentTunnelUrl
|
|
61783
|
+
selfUrl: () => currentTunnelUrl,
|
|
61784
|
+
// device:connections 数据源。惰性闭包:wsServer 晚于本 deps 赋值,请求时才解引用。
|
|
61785
|
+
listOwnerConnections: () => wsServer?.listOwnerConnections() ?? []
|
|
61743
61786
|
},
|
|
61744
61787
|
// app-builder
|
|
61745
61788
|
appBuilderStore,
|
|
@@ -22617,6 +22617,13 @@ var CancelQuestionArgs = external_exports.object({
|
|
|
22617
22617
|
toolUseId: external_exports.string().min(1)
|
|
22618
22618
|
});
|
|
22619
22619
|
var CancelQuestionResponseSchema = external_exports.object({ ok: external_exports.literal(true) });
|
|
22620
|
+
var ClientInfoSchema = external_exports.object({
|
|
22621
|
+
name: external_exports.string().min(1),
|
|
22622
|
+
version: external_exports.string().min(1),
|
|
22623
|
+
instanceId: external_exports.string().min(1),
|
|
22624
|
+
/** 自报设备名(如 os.hostname()),展示用非身份;trim 后截断 64 字符 */
|
|
22625
|
+
deviceLabel: external_exports.string().transform((s) => s.trim().slice(0, 64)).optional()
|
|
22626
|
+
});
|
|
22620
22627
|
var AuthRequestFrameSchema = external_exports.object({
|
|
22621
22628
|
type: external_exports.literal("auth"),
|
|
22622
22629
|
token: external_exports.string().min(1),
|
|
@@ -22637,17 +22644,23 @@ var AuthRequestFrameSchema = external_exports.object({
|
|
|
22637
22644
|
* 'clawd-mobile-android' / ...),宽容未知值(将来加新客户端不动 schema)。
|
|
22638
22645
|
* instanceId:客户端首启生成 UUID 并本地持久化——区分同种类多实例(多手机/多 desktop 同连)。
|
|
22639
22646
|
*/
|
|
22640
|
-
clientInfo:
|
|
22641
|
-
name: external_exports.string().min(1),
|
|
22642
|
-
version: external_exports.string().min(1),
|
|
22643
|
-
instanceId: external_exports.string().min(1)
|
|
22644
|
-
}).optional()
|
|
22647
|
+
clientInfo: ClientInfoSchema.optional()
|
|
22645
22648
|
});
|
|
22646
22649
|
var AuthOkFrameSchema = external_exports.object({
|
|
22647
22650
|
type: external_exports.literal("auth:ok"),
|
|
22648
22651
|
version: external_exports.string().min(1).optional(),
|
|
22649
22652
|
protocolVersion: external_exports.number().int().nonnegative().optional()
|
|
22650
22653
|
});
|
|
22654
|
+
var DeviceConnectionEntrySchema = external_exports.object({
|
|
22655
|
+
clientId: external_exports.string().min(1),
|
|
22656
|
+
connectedAt: external_exports.number().int().nonnegative(),
|
|
22657
|
+
self: external_exports.boolean(),
|
|
22658
|
+
clientInfo: ClientInfoSchema.optional()
|
|
22659
|
+
});
|
|
22660
|
+
var DeviceConnectionsResponseSchema = external_exports.object({
|
|
22661
|
+
type: external_exports.literal("device:connections:ok"),
|
|
22662
|
+
connections: external_exports.array(DeviceConnectionEntrySchema)
|
|
22663
|
+
});
|
|
22651
22664
|
var TunnelReadyEventSchema = external_exports.object({
|
|
22652
22665
|
type: external_exports.literal("tunnel:ready"),
|
|
22653
22666
|
url: external_exports.string().min(1),
|
|
@@ -23270,6 +23283,10 @@ var METHOD_DOCS = {
|
|
|
23270
23283
|
summary: "\u8FDE\u63A5\u76EE\u6807\u8BBE\u5907\uFF1A\u6362 aud \u7ED1\u5B9A\u7684\u7B7E\u540D token \u5E76\u8D70 contact:handshake \u5EFA\u8054\u3002owner-only",
|
|
23271
23284
|
args: DeviceConnectArgsSchema
|
|
23272
23285
|
},
|
|
23286
|
+
"device:connections": {
|
|
23287
|
+
summary: '\u5217\u51FA\u672C daemon \u5F53\u524D\u6240\u6709 owner WS \u8FDE\u63A5\uFF08\u672C\u673A UI / \u624B\u673A / \u7B2C\u4E8C\u53F0\u684C\u9762\uFF09+ \u5404\u81EA clientInfo\u3002owner-only\uFF1Bguest \u8FDE\u63A5\u4E0D\u5728\u5217\uFF08\u4E0D\u662F"\u6211\u7684\u8BBE\u5907"\u4E14\u4E0D\u5411 UI \u6CC4\u9732 guest \u4FE1\u606F\uFF09',
|
|
23288
|
+
args: NO_ARGS
|
|
23289
|
+
},
|
|
23273
23290
|
"appBuilder:listProjects": {
|
|
23274
23291
|
summary: "\u5217\u51FA app-builder project\uFF08\u542B dev server \u72B6\u6001\uFF09",
|
|
23275
23292
|
args: ListProjectsArgsSchema
|