@clawos-dev/clawd 0.2.270 → 0.2.272
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 +56 -12
- 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),
|
|
@@ -7743,7 +7756,7 @@ function isMethodName(name) {
|
|
|
7743
7756
|
function methodArgsSchema(method) {
|
|
7744
7757
|
const doc = METHOD_DOCS[method];
|
|
7745
7758
|
if (!doc.args) return null;
|
|
7746
|
-
const base =
|
|
7759
|
+
const base = zodToJsonSchemaMono(doc.args, { $refStrategy: "none" });
|
|
7747
7760
|
return doc.argsConstraints ? { ...base, ...doc.argsConstraints } : base;
|
|
7748
7761
|
}
|
|
7749
7762
|
function methodArgFields(method) {
|
|
@@ -7753,7 +7766,7 @@ function methodArgFields(method) {
|
|
|
7753
7766
|
const required = new Set(schema.required ?? []);
|
|
7754
7767
|
return Object.keys(props).map((name) => ({ name, required: required.has(name) }));
|
|
7755
7768
|
}
|
|
7756
|
-
var NO_ARGS, MetaMethodsArgs, METHOD_DOCS, METHOD_NAMES, RPC_METHOD_STATUSES, RpcMethodStatusSchema, RpcMethodInfoSchema, MetaMethodsResultSchema;
|
|
7769
|
+
var NO_ARGS, MetaMethodsArgs, METHOD_DOCS, METHOD_NAMES, RPC_METHOD_STATUSES, RpcMethodStatusSchema, RpcMethodInfoSchema, MetaMethodsResultSchema, zodToJsonSchemaMono;
|
|
7757
7770
|
var init_methods = __esm({
|
|
7758
7771
|
"../protocol/src/methods.ts"() {
|
|
7759
7772
|
"use strict";
|
|
@@ -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
|
|
@@ -8232,6 +8249,7 @@ var init_methods = __esm({
|
|
|
8232
8249
|
/** METHOD_NAMES 全集,顺序与之一致 */
|
|
8233
8250
|
methods: external_exports.array(RpcMethodInfoSchema)
|
|
8234
8251
|
});
|
|
8252
|
+
zodToJsonSchemaMono = zodToJsonSchema;
|
|
8235
8253
|
}
|
|
8236
8254
|
});
|
|
8237
8255
|
|
|
@@ -52960,7 +52978,7 @@ var LocalWsServer = class {
|
|
|
52960
52978
|
} catch {
|
|
52961
52979
|
}
|
|
52962
52980
|
}, this.pingIntervalMs);
|
|
52963
|
-
this.clients.set(id, { handle, ws: socket, pingTimer, ctx: null });
|
|
52981
|
+
this.clients.set(id, { handle, ws: socket, pingTimer, ctx: null, connectedAt: Date.now() });
|
|
52964
52982
|
this.logger?.info("client connected", { clientId: id, total: this.clients.size, remoteAddress });
|
|
52965
52983
|
const authGate = this.opts.authGate;
|
|
52966
52984
|
let authed = true;
|
|
@@ -53085,6 +53103,18 @@ var LocalWsServer = class {
|
|
|
53085
53103
|
clientCount() {
|
|
53086
53104
|
return this.clients.size;
|
|
53087
53105
|
}
|
|
53106
|
+
// device:connections 数据源:owner 连接快照。
|
|
53107
|
+
// principal.kind==='guest'(connect/visitor 票种)不列——不是"我的设备",也不向 UI
|
|
53108
|
+
// 泄露 guest 信息;ctx===null 是 noAuth localhost 路径(dispatcher 按 owner fallback
|
|
53109
|
+
// 处理),视作 owner 列入。
|
|
53110
|
+
listOwnerConnections() {
|
|
53111
|
+
const out = [];
|
|
53112
|
+
for (const [id, c] of this.clients) {
|
|
53113
|
+
if (c.ctx && c.ctx.principal.kind !== "owner") continue;
|
|
53114
|
+
out.push({ clientId: id, connectedAt: c.connectedAt, clientInfo: c.ctx?.clientInfo });
|
|
53115
|
+
}
|
|
53116
|
+
return out.sort((a, b2) => a.connectedAt - b2.connectedAt);
|
|
53117
|
+
}
|
|
53088
53118
|
};
|
|
53089
53119
|
function addSubscription(client, sessionId) {
|
|
53090
53120
|
const cur = client.subscribedSessions.get(sessionId) ?? 0;
|
|
@@ -57628,9 +57658,20 @@ function buildDeviceHandlers(deps) {
|
|
|
57628
57658
|
}
|
|
57629
57659
|
}
|
|
57630
57660
|
};
|
|
57661
|
+
const connections = async (_frame, client, ctx) => {
|
|
57662
|
+
ensureOwner3(ctx);
|
|
57663
|
+
const entries = deps.listOwnerConnections();
|
|
57664
|
+
return {
|
|
57665
|
+
response: {
|
|
57666
|
+
type: "device:connections:ok",
|
|
57667
|
+
connections: entries.map((e) => ({ ...e, self: e.clientId === client.id }))
|
|
57668
|
+
}
|
|
57669
|
+
};
|
|
57670
|
+
};
|
|
57631
57671
|
return {
|
|
57632
57672
|
"device:list": list,
|
|
57633
|
-
"device:connect": connect
|
|
57673
|
+
"device:connect": connect,
|
|
57674
|
+
"device:connections": connections
|
|
57634
57675
|
};
|
|
57635
57676
|
}
|
|
57636
57677
|
|
|
@@ -57814,6 +57855,7 @@ var METHOD_GRANT_MAP = {
|
|
|
57814
57855
|
// 设备目录 / 连接都是 owner 本机操作(用 owner 的 ttcJwt 找中心 server),guest 不可调
|
|
57815
57856
|
"device:list": ADMIN_ANY,
|
|
57816
57857
|
"device:connect": ADMIN_ANY,
|
|
57858
|
+
"device:connections": ADMIN_ANY,
|
|
57817
57859
|
// ---- app-builder Project picker(spec 2026-06-01-app-builder-project-picker-design) ----
|
|
57818
57860
|
// owner-only:picker UI 给 owner 管理本机 build 中的 project(fs + 端口分配)。
|
|
57819
57861
|
// 即使 persona-app-builder 是 PreinstalledPersona,project 管理也属本机 owner 行为,
|
|
@@ -57872,7 +57914,7 @@ function computeMethodAccess(args) {
|
|
|
57872
57914
|
}
|
|
57873
57915
|
|
|
57874
57916
|
// src/version.ts
|
|
57875
|
-
var version = "0.2.
|
|
57917
|
+
var version = "0.2.272".length > 0 ? "0.2.272" : "dev";
|
|
57876
57918
|
|
|
57877
57919
|
// src/cli-probe/probe.ts
|
|
57878
57920
|
var fs54 = __toESM(require("fs"), 1);
|
|
@@ -61739,7 +61781,9 @@ async function startDaemon(config) {
|
|
|
61739
61781
|
// 自动反向(spec 决策 #11):本机可达地址 = tunnel URL(公网),出站连接时
|
|
61740
61782
|
// 透传让对方反向加我为联系人。无 tunnel(仅本机 ws)→ null,对方不自动反向(不造假数据)。
|
|
61741
61783
|
// 决策 #16:身份不自报——本机 deviceId/ownerId/provider 由 exchange 签进 token 背书。
|
|
61742
|
-
selfUrl: () => currentTunnelUrl
|
|
61784
|
+
selfUrl: () => currentTunnelUrl,
|
|
61785
|
+
// device:connections 数据源。惰性闭包:wsServer 晚于本 deps 赋值,请求时才解引用。
|
|
61786
|
+
listOwnerConnections: () => wsServer?.listOwnerConnections() ?? []
|
|
61743
61787
|
},
|
|
61744
61788
|
// app-builder
|
|
61745
61789
|
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
|