@clawos-dev/clawd 0.2.621 → 0.2.623
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/app-builder-plugin/mcp-server.cjs +495 -267
- package/dist/cli.cjs +20824 -19774
- package/dist/cloud-persona-conversations.html +73 -73
- package/dist/dispatch/mcp-server.cjs +233 -101
- package/dist/persona-defaults/persona-app-builder/mcp/clawd-app-builder/mcp-server.cjs +495 -267
- package/dist/persona-defaults/persona-dataclaw-builder/mcp/clawd-app-builder/mcp-server.cjs +495 -267
- package/dist/share-ui/assets/{guest-nVklLeTD.js → guest-DBwcqbLb.js} +141 -141
- package/dist/share-ui/guest.html +1 -1
- package/package.json +1 -1
|
@@ -21412,6 +21412,46 @@ var EnvEvidenceSchema = external_exports.object({
|
|
|
21412
21412
|
quote: external_exports.string().min(1)
|
|
21413
21413
|
});
|
|
21414
21414
|
|
|
21415
|
+
// ../protocol/src/release-schemas.ts
|
|
21416
|
+
var DEPLOY_ENVIRONMENTS = ["integration", "production"];
|
|
21417
|
+
var DeployEnvironmentSchema = external_exports.enum(DEPLOY_ENVIRONMENTS);
|
|
21418
|
+
var ImageDigestSchema = external_exports.string().regex(/^[a-z0-9.-]+(?::[0-9]+)?\/[a-z0-9._/-]+@sha256:[a-f0-9]{64}$/);
|
|
21419
|
+
var SourceCommitSchema = external_exports.string().regex(/^[a-f0-9]{40}$/);
|
|
21420
|
+
var IntegrationEndpointSchema = external_exports.string().refine((value) => {
|
|
21421
|
+
try {
|
|
21422
|
+
const url = new URL(value);
|
|
21423
|
+
return url.protocol === "https:" && !url.username && !url.password && !url.search && !url.hash && url.pathname === "/" && /(^|[.-])int([.-]|$)/.test(url.hostname);
|
|
21424
|
+
} catch {
|
|
21425
|
+
return false;
|
|
21426
|
+
}
|
|
21427
|
+
}, "\u6D4B\u8BD5\u9A8C\u8BC1\u5730\u5740\u5FC5\u987B\u660E\u786E\u6307\u5411 int HTTPS \u73AF\u5883");
|
|
21428
|
+
var VerificationSchema = external_exports.object({
|
|
21429
|
+
status: external_exports.literal("passed"),
|
|
21430
|
+
fingerprint: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
21431
|
+
checks: external_exports.array(external_exports.string().regex(/^[a-z0-9-]+$/)),
|
|
21432
|
+
endpoint: IntegrationEndpointSchema,
|
|
21433
|
+
verifiedAt: external_exports.string().refine((s) => Number.isFinite(Date.parse(s)))
|
|
21434
|
+
}).strict();
|
|
21435
|
+
var VerifiedPersonaReleaseSchema = external_exports.object({
|
|
21436
|
+
version: external_exports.literal(1),
|
|
21437
|
+
environment: external_exports.literal("integration"),
|
|
21438
|
+
component: external_exports.literal("persona"),
|
|
21439
|
+
image: ImageDigestSchema,
|
|
21440
|
+
commit: SourceCommitSchema,
|
|
21441
|
+
baseImage: ImageDigestSchema,
|
|
21442
|
+
pipelineCommit: SourceCommitSchema,
|
|
21443
|
+
repository: external_exports.string().regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/),
|
|
21444
|
+
verification: VerificationSchema.refine((v) => v.checks.includes("persona-smoke"))
|
|
21445
|
+
}).strict();
|
|
21446
|
+
var VerifiedBaseReleaseSchema = external_exports.object({
|
|
21447
|
+
version: external_exports.literal(1),
|
|
21448
|
+
environment: external_exports.literal("integration"),
|
|
21449
|
+
component: external_exports.literal("base"),
|
|
21450
|
+
image: ImageDigestSchema,
|
|
21451
|
+
commit: SourceCommitSchema,
|
|
21452
|
+
verification: VerificationSchema.refine((v) => v.checks.includes("base-smoke"))
|
|
21453
|
+
}).strict();
|
|
21454
|
+
|
|
21415
21455
|
// ../protocol/src/deploy-schemas.ts
|
|
21416
21456
|
var DeployFileSchema = external_exports.object({
|
|
21417
21457
|
version: external_exports.literal(1),
|
|
@@ -21440,15 +21480,44 @@ var DeployScanSchema = external_exports.object({
|
|
|
21440
21480
|
error: external_exports.string().optional()
|
|
21441
21481
|
}).strict();
|
|
21442
21482
|
var DeployReleasedSchema = external_exports.object({
|
|
21483
|
+
/** Legacy wire records can omit these; file migration always materializes them. */
|
|
21484
|
+
id: external_exports.string().min(1).optional(),
|
|
21485
|
+
environment: DeployEnvironmentSchema.optional(),
|
|
21486
|
+
legacy: external_exports.boolean().optional(),
|
|
21443
21487
|
head: external_exports.string().min(1),
|
|
21444
21488
|
contentHead: external_exports.string().min(1),
|
|
21445
21489
|
scanId: external_exports.string().min(1),
|
|
21446
|
-
at: external_exports.number()
|
|
21490
|
+
at: external_exports.number(),
|
|
21491
|
+
pushed: external_exports.boolean().optional(),
|
|
21492
|
+
runId: external_exports.number().int().positive().optional(),
|
|
21493
|
+
runAttempt: external_exports.number().int().positive().optional(),
|
|
21494
|
+
artifactId: external_exports.number().int().positive().optional(),
|
|
21495
|
+
verified: VerifiedPersonaReleaseSchema.optional(),
|
|
21496
|
+
confirmation: external_exports.object({
|
|
21497
|
+
fingerprint: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
21498
|
+
runId: external_exports.number().int().positive(),
|
|
21499
|
+
runAttempt: external_exports.number().int().positive(),
|
|
21500
|
+
at: external_exports.number()
|
|
21501
|
+
}).strict().optional()
|
|
21502
|
+
}).strict();
|
|
21503
|
+
var DEPLOY_PROMOTION_PHASES = ["prepared", "main-pushed", "dispatching", "dispatched", "completed", "failed"];
|
|
21504
|
+
var DeployPromotionSchema = external_exports.object({
|
|
21505
|
+
id: external_exports.string().min(1),
|
|
21506
|
+
releaseId: external_exports.string().min(1),
|
|
21507
|
+
at: external_exports.number(),
|
|
21508
|
+
/** Artifact fixed when the user authorizes this action; int reruns cannot replace it. */
|
|
21509
|
+
verified: VerifiedPersonaReleaseSchema.optional(),
|
|
21510
|
+
phase: external_exports.enum(DEPLOY_PROMOTION_PHASES),
|
|
21511
|
+
expectedMain: external_exports.string().optional(),
|
|
21512
|
+
runId: external_exports.number().int().positive().optional(),
|
|
21513
|
+
runAttempt: external_exports.number().int().positive().optional(),
|
|
21514
|
+
error: external_exports.string().optional()
|
|
21447
21515
|
}).strict();
|
|
21448
21516
|
var DeployScanFileSchema = external_exports.object({
|
|
21449
|
-
version: external_exports.literal(
|
|
21517
|
+
version: external_exports.literal(4),
|
|
21450
21518
|
scans: external_exports.array(DeployScanSchema),
|
|
21451
|
-
releases: external_exports.array(DeployReleasedSchema)
|
|
21519
|
+
releases: external_exports.array(DeployReleasedSchema),
|
|
21520
|
+
promotions: external_exports.array(DeployPromotionSchema).default([])
|
|
21452
21521
|
}).strict();
|
|
21453
21522
|
var DeployRepoSchema = external_exports.object({
|
|
21454
21523
|
url: external_exports.string().min(1),
|
|
@@ -21482,7 +21551,13 @@ var DeployRunSchema = external_exports.object({
|
|
|
21482
21551
|
status: external_exports.enum(["queued", "running", "completed"]),
|
|
21483
21552
|
htmlUrl: external_exports.string().min(1),
|
|
21484
21553
|
/** run 刚入队时可能一条都还没有 */
|
|
21485
|
-
jobs: external_exports.array(DeployJobSchema)
|
|
21554
|
+
jobs: external_exports.array(DeployJobSchema),
|
|
21555
|
+
environment: DeployEnvironmentSchema.optional(),
|
|
21556
|
+
branch: external_exports.string().optional(),
|
|
21557
|
+
event: external_exports.string().optional(),
|
|
21558
|
+
runAttempt: external_exports.number().int().positive().optional(),
|
|
21559
|
+
conclusion: external_exports.enum(["success", "failure"]).optional(),
|
|
21560
|
+
promotionId: external_exports.string().optional()
|
|
21486
21561
|
}).strict();
|
|
21487
21562
|
var DeployUnpublishRunSchema = external_exports.object({
|
|
21488
21563
|
runId: external_exports.number(),
|
|
@@ -21497,6 +21572,23 @@ var DeployStateSchema = external_exports.object({
|
|
|
21497
21572
|
repo: DeployRepoSchema.optional(),
|
|
21498
21573
|
scans: external_exports.array(DeployScanSchema).default([]),
|
|
21499
21574
|
releases: external_exports.array(DeployReleasedSchema).default([]),
|
|
21575
|
+
promotions: external_exports.array(DeployPromotionSchema).optional(),
|
|
21576
|
+
targets: external_exports.object({
|
|
21577
|
+
integration: external_exports.object({
|
|
21578
|
+
run: DeployRunSchema.optional(),
|
|
21579
|
+
secrets: external_exports.array(DeploySecretPresenceSchema).optional(),
|
|
21580
|
+
online: external_exports.boolean().optional(),
|
|
21581
|
+
image: ImageDigestSchema.optional(),
|
|
21582
|
+
unpublish: DeployUnpublishRunSchema.optional()
|
|
21583
|
+
}).strict().optional(),
|
|
21584
|
+
production: external_exports.object({
|
|
21585
|
+
run: DeployRunSchema.optional(),
|
|
21586
|
+
secrets: external_exports.array(DeploySecretPresenceSchema).optional(),
|
|
21587
|
+
online: external_exports.boolean().optional(),
|
|
21588
|
+
image: ImageDigestSchema.optional(),
|
|
21589
|
+
unpublish: DeployUnpublishRunSchema.optional()
|
|
21590
|
+
}).strict().optional()
|
|
21591
|
+
}).strict().optional(),
|
|
21500
21592
|
/** 没仓库时缺席(查不了) */
|
|
21501
21593
|
secrets: external_exports.array(DeploySecretPresenceSchema).optional(),
|
|
21502
21594
|
/**
|
|
@@ -21523,13 +21615,16 @@ var DeployUnpublishResultSchema = external_exports.object({
|
|
|
21523
21615
|
var DeployPatchResultSchema = DeployStateSchema.pick({ scans: true });
|
|
21524
21616
|
var DeployReleaseResultSchema = external_exports.object({
|
|
21525
21617
|
sha: external_exports.string().min(1),
|
|
21526
|
-
actionsUrl: external_exports.string().min(1)
|
|
21618
|
+
actionsUrl: external_exports.string().min(1),
|
|
21619
|
+
releaseId: external_exports.string().optional()
|
|
21527
21620
|
}).strict();
|
|
21528
21621
|
var DeployPersonaArgsSchema = external_exports.object({
|
|
21529
21622
|
personaId: external_exports.string().min(1)
|
|
21530
21623
|
}).strict();
|
|
21531
21624
|
var DeployGetArgsSchema = DeployPersonaArgsSchema.extend({
|
|
21532
|
-
releaseHead: external_exports.string().min(1).optional()
|
|
21625
|
+
releaseHead: external_exports.string().min(1).optional(),
|
|
21626
|
+
releaseId: external_exports.string().min(1).optional(),
|
|
21627
|
+
environment: DeployEnvironmentSchema.optional()
|
|
21533
21628
|
}).strict();
|
|
21534
21629
|
var DeployScanArgsSchema = DeployPersonaArgsSchema.extend({
|
|
21535
21630
|
scanBase: ScanBaseKindSchema.optional()
|
|
@@ -21537,6 +21632,13 @@ var DeployScanArgsSchema = DeployPersonaArgsSchema.extend({
|
|
|
21537
21632
|
var DeployReleaseArgsSchema = DeployPersonaArgsSchema.extend({
|
|
21538
21633
|
scanId: external_exports.string().min(1)
|
|
21539
21634
|
}).strict();
|
|
21635
|
+
var DeployConfirmTestArgsSchema = DeployPersonaArgsSchema.extend({ releaseId: external_exports.string().min(1) }).strict();
|
|
21636
|
+
var DeployPromoteArgsSchema = DeployConfirmTestArgsSchema;
|
|
21637
|
+
var DeployOpenTestArgsSchema = DeployConfirmTestArgsSchema;
|
|
21638
|
+
var DeployEnvironmentArgsSchema = DeployPersonaArgsSchema.extend({ environment: DeployEnvironmentSchema.default("production") }).strict();
|
|
21639
|
+
var DeployConfirmTestResultSchema = external_exports.object({ confirmation: DeployReleasedSchema.shape.confirmation.unwrap() }).strict();
|
|
21640
|
+
var DeployPromoteResultSchema = external_exports.object({ promotion: DeployPromotionSchema }).strict();
|
|
21641
|
+
var DeployOpenTestResultSchema = external_exports.object({ personaId: external_exports.string().min(1), expectedImage: ImageDigestSchema }).strict();
|
|
21540
21642
|
var DeployPatchArgsSchema = external_exports.object({
|
|
21541
21643
|
personaId: external_exports.string().min(1),
|
|
21542
21644
|
scanId: external_exports.string().min(1),
|
|
@@ -21552,6 +21654,7 @@ var DeployPatchArgsSchema = external_exports.object({
|
|
|
21552
21654
|
}).strict();
|
|
21553
21655
|
var DeployPutSecretArgsSchema = external_exports.object({
|
|
21554
21656
|
personaId: external_exports.string().min(1),
|
|
21657
|
+
environment: DeployEnvironmentSchema.default("production"),
|
|
21555
21658
|
/** 按哪次扫描的清单校验凭据名 / env 名。值本身是仓库级的(GitHub Secrets),跟扫描无关 */
|
|
21556
21659
|
scanId: external_exports.string().min(1),
|
|
21557
21660
|
name: external_exports.string().min(1),
|
|
@@ -21560,6 +21663,7 @@ var DeployPutSecretArgsSchema = external_exports.object({
|
|
|
21560
21663
|
}).strict();
|
|
21561
21664
|
var DeploySetEngineAuthArgsSchema = external_exports.object({
|
|
21562
21665
|
personaId: external_exports.string().min(1),
|
|
21666
|
+
environment: DeployEnvironmentSchema.default("production"),
|
|
21563
21667
|
channelId: external_exports.string().min(1).optional(),
|
|
21564
21668
|
auth: external_exports.object({ baseUrl: external_exports.string(), apiKey: external_exports.string() }).strict().nullable().optional()
|
|
21565
21669
|
}).strict().refine((data) => data.channelId !== void 0 || data.auth !== void 0, {
|
|
@@ -21567,6 +21671,8 @@ var DeploySetEngineAuthArgsSchema = external_exports.object({
|
|
|
21567
21671
|
});
|
|
21568
21672
|
var DeployRerunJobArgsSchema = external_exports.object({
|
|
21569
21673
|
personaId: external_exports.string().min(1),
|
|
21674
|
+
environment: DeployEnvironmentSchema.default("production"),
|
|
21675
|
+
releaseId: external_exports.string().optional(),
|
|
21570
21676
|
jobId: external_exports.number()
|
|
21571
21677
|
}).strict();
|
|
21572
21678
|
var DeployReportFindingArgsSchema = external_exports.object({
|
|
@@ -21588,6 +21694,99 @@ var DeployFinishScanArgsSchema = external_exports.object({
|
|
|
21588
21694
|
notes: external_exports.array(external_exports.string()).default([])
|
|
21589
21695
|
}).strict();
|
|
21590
21696
|
|
|
21697
|
+
// ../protocol/src/feishu-auth.ts
|
|
21698
|
+
var AuthEnvironmentArgsSchema = external_exports.object({ environment: DeployEnvironmentSchema.default("production") }).strict();
|
|
21699
|
+
var DeviceEntrySchema = external_exports.object({
|
|
21700
|
+
/**
|
|
21701
|
+
* 设备标识(决策 #15:daemon 本地生成的 dev-<uuid>,与人的身份 unionId 无关)。
|
|
21702
|
+
* 中心 server clawd_devices 注册表仅作服务发现(url 下发 + 目录),不在安全路径上。
|
|
21703
|
+
*/
|
|
21704
|
+
deviceId: external_exports.string().min(1),
|
|
21705
|
+
name: external_exports.string().min(1),
|
|
21706
|
+
url: external_exports.string().min(1)
|
|
21707
|
+
});
|
|
21708
|
+
var DeviceListResponseSchema = external_exports.object({
|
|
21709
|
+
type: external_exports.literal("device:list:ok"),
|
|
21710
|
+
devices: external_exports.array(DeviceEntrySchema)
|
|
21711
|
+
});
|
|
21712
|
+
var DeviceConnectArgsSchema = external_exports.object({
|
|
21713
|
+
deviceId: external_exports.string().min(1),
|
|
21714
|
+
/**
|
|
21715
|
+
* 目标设备的 ws/tunnel 地址(可选):
|
|
21716
|
+
* - 公开目录点击:带 url(device:list 已下发,省一次 server 查询)
|
|
21717
|
+
* - 凭 deviceId 连接:缺省 url → daemon exchange 时由中心 server 下发该设备上报的 url
|
|
21718
|
+
* - 注册表不在安全路径上:知道对方 url 时显式传入即可连接(不依赖中心 server 服务发现)
|
|
21719
|
+
*/
|
|
21720
|
+
url: external_exports.string().min(1).optional(),
|
|
21721
|
+
/** Optional display name; otherwise populate it from the handshake acknowledgement. */
|
|
21722
|
+
name: external_exports.string().optional()
|
|
21723
|
+
});
|
|
21724
|
+
var DeviceConnectResponseSchema = external_exports.object({
|
|
21725
|
+
type: external_exports.literal("device:connect:ok"),
|
|
21726
|
+
deviceId: external_exports.string(),
|
|
21727
|
+
name: external_exports.string(),
|
|
21728
|
+
url: external_exports.string()
|
|
21729
|
+
});
|
|
21730
|
+
var FeishuIdentitySchema = external_exports.object({
|
|
21731
|
+
/** 归属人 id(决策 #16:TTC unique_id,取代飞书 union_id;跨登录方式稳定) */
|
|
21732
|
+
ownerId: external_exports.string().min(1),
|
|
21733
|
+
/** 身份来源:'ttc'(飞书/手机/邮箱登入 TTC)| 'google' | ...(决策 #16,拓展用) */
|
|
21734
|
+
provider: external_exports.string().min(1),
|
|
21735
|
+
displayName: external_exports.string().min(1),
|
|
21736
|
+
/** TTC user_info 接口 data.avatar_url,可缺省 */
|
|
21737
|
+
avatarUrl: external_exports.string().optional(),
|
|
21738
|
+
/** TTC user_info 接口 data.union_id(飞书 union_id;dataclaw 可信入口 X-User-UnionId 用),可缺省 */
|
|
21739
|
+
unionId: external_exports.string().optional()
|
|
21740
|
+
});
|
|
21741
|
+
var AuthLoginStartResponseSchema = external_exports.object({
|
|
21742
|
+
type: external_exports.literal("auth:login:start:ok"),
|
|
21743
|
+
environment: DeployEnvironmentSchema.optional(),
|
|
21744
|
+
authUrl: external_exports.string().min(1),
|
|
21745
|
+
/** 防 CSRF 的一次性 nonce;回调时 daemon 校验 */
|
|
21746
|
+
state: external_exports.string().min(1)
|
|
21747
|
+
});
|
|
21748
|
+
var AuthGetIdentityResponseSchema = external_exports.object({
|
|
21749
|
+
type: external_exports.literal("auth:getIdentity:ok"),
|
|
21750
|
+
/** null = 未登录 */
|
|
21751
|
+
identity: FeishuIdentitySchema.nullable(),
|
|
21752
|
+
/** Stable device identifier independent of login, used for the shareable device link. */
|
|
21753
|
+
deviceId: external_exports.string().min(1)
|
|
21754
|
+
});
|
|
21755
|
+
var AuthLogoutResponseSchema = external_exports.object({
|
|
21756
|
+
type: external_exports.literal("auth:logout:ok")
|
|
21757
|
+
});
|
|
21758
|
+
var GatewayUrl = external_exports.string().nullable();
|
|
21759
|
+
var AuthApiKeyGetResponseSchema = external_exports.object({
|
|
21760
|
+
type: external_exports.literal("auth:apiKey:get:ok"),
|
|
21761
|
+
/** null = 还没发过。**发过就能一直看到** —— 中心存的是明文,设置页据此展示 */
|
|
21762
|
+
apiKey: external_exports.string().nullable(),
|
|
21763
|
+
/** ISO 时间;apiKey 为 null 时同为 null */
|
|
21764
|
+
createdAt: external_exports.string().nullable(),
|
|
21765
|
+
gatewayUrl: GatewayUrl
|
|
21766
|
+
});
|
|
21767
|
+
var AuthApiKeyRegenerateResponseSchema = external_exports.object({
|
|
21768
|
+
type: external_exports.literal("auth:apiKey:regenerate:ok"),
|
|
21769
|
+
/** 新发的那把。**旧的当场失效** —— 一人一把,按 union_id 覆盖 */
|
|
21770
|
+
apiKey: external_exports.string().min(1),
|
|
21771
|
+
createdAt: external_exports.string().min(1),
|
|
21772
|
+
gatewayUrl: GatewayUrl
|
|
21773
|
+
});
|
|
21774
|
+
var AuthApiKeyRevokeResponseSchema = external_exports.object({
|
|
21775
|
+
type: external_exports.literal("auth:apiKey:revoke:ok"),
|
|
21776
|
+
/** 之前有没有那把——没发过也算成功(幂等) */
|
|
21777
|
+
revoked: external_exports.boolean()
|
|
21778
|
+
});
|
|
21779
|
+
var AuthLoginDoneEventSchema = external_exports.object({
|
|
21780
|
+
type: external_exports.literal("auth:login:done"),
|
|
21781
|
+
environment: DeployEnvironmentSchema.optional(),
|
|
21782
|
+
identity: FeishuIdentitySchema
|
|
21783
|
+
});
|
|
21784
|
+
var AuthLoginFailedEventSchema = external_exports.object({
|
|
21785
|
+
type: external_exports.literal("auth:login:failed"),
|
|
21786
|
+
environment: DeployEnvironmentSchema.optional(),
|
|
21787
|
+
reason: external_exports.string()
|
|
21788
|
+
});
|
|
21789
|
+
|
|
21591
21790
|
// ../protocol/src/contact-remote-access.ts
|
|
21592
21791
|
var ContactSetRemoteAccessArgsSchema = external_exports.object({
|
|
21593
21792
|
deviceId: external_exports.string().min(1),
|
|
@@ -21705,95 +21904,6 @@ var ContactPinnedFrameSchema = external_exports.object({
|
|
|
21705
21904
|
pinnedAt: external_exports.number().int().nullable()
|
|
21706
21905
|
}).strict();
|
|
21707
21906
|
|
|
21708
|
-
// ../protocol/src/feishu-auth.ts
|
|
21709
|
-
var DeviceEntrySchema = external_exports.object({
|
|
21710
|
-
/**
|
|
21711
|
-
* 设备标识(决策 #15:daemon 本地生成的 dev-<uuid>,与人的身份 unionId 无关)。
|
|
21712
|
-
* 中心 server clawd_devices 注册表仅作服务发现(url 下发 + 目录),不在安全路径上。
|
|
21713
|
-
*/
|
|
21714
|
-
deviceId: external_exports.string().min(1),
|
|
21715
|
-
name: external_exports.string().min(1),
|
|
21716
|
-
url: external_exports.string().min(1)
|
|
21717
|
-
});
|
|
21718
|
-
var DeviceListResponseSchema = external_exports.object({
|
|
21719
|
-
type: external_exports.literal("device:list:ok"),
|
|
21720
|
-
devices: external_exports.array(DeviceEntrySchema)
|
|
21721
|
-
});
|
|
21722
|
-
var DeviceConnectArgsSchema = external_exports.object({
|
|
21723
|
-
deviceId: external_exports.string().min(1),
|
|
21724
|
-
/**
|
|
21725
|
-
* 目标设备的 ws/tunnel 地址(可选):
|
|
21726
|
-
* - 公开目录点击:带 url(device:list 已下发,省一次 server 查询)
|
|
21727
|
-
* - 凭 deviceId 连接:缺省 url → daemon exchange 时由中心 server 下发该设备上报的 url
|
|
21728
|
-
* - 注册表不在安全路径上:知道对方 url 时显式传入即可连接(不依赖中心 server 服务发现)
|
|
21729
|
-
*/
|
|
21730
|
-
url: external_exports.string().min(1).optional(),
|
|
21731
|
-
/** Optional display name; otherwise populate it from the handshake acknowledgement. */
|
|
21732
|
-
name: external_exports.string().optional()
|
|
21733
|
-
});
|
|
21734
|
-
var DeviceConnectResponseSchema = external_exports.object({
|
|
21735
|
-
type: external_exports.literal("device:connect:ok"),
|
|
21736
|
-
deviceId: external_exports.string(),
|
|
21737
|
-
name: external_exports.string(),
|
|
21738
|
-
url: external_exports.string()
|
|
21739
|
-
});
|
|
21740
|
-
var FeishuIdentitySchema = external_exports.object({
|
|
21741
|
-
/** 归属人 id(决策 #16:TTC unique_id,取代飞书 union_id;跨登录方式稳定) */
|
|
21742
|
-
ownerId: external_exports.string().min(1),
|
|
21743
|
-
/** 身份来源:'ttc'(飞书/手机/邮箱登入 TTC)| 'google' | ...(决策 #16,拓展用) */
|
|
21744
|
-
provider: external_exports.string().min(1),
|
|
21745
|
-
displayName: external_exports.string().min(1),
|
|
21746
|
-
/** TTC user_info 接口 data.avatar_url,可缺省 */
|
|
21747
|
-
avatarUrl: external_exports.string().optional(),
|
|
21748
|
-
/** TTC user_info 接口 data.union_id(飞书 union_id;dataclaw 可信入口 X-User-UnionId 用),可缺省 */
|
|
21749
|
-
unionId: external_exports.string().optional()
|
|
21750
|
-
});
|
|
21751
|
-
var AuthLoginStartResponseSchema = external_exports.object({
|
|
21752
|
-
type: external_exports.literal("auth:login:start:ok"),
|
|
21753
|
-
authUrl: external_exports.string().min(1),
|
|
21754
|
-
/** 防 CSRF 的一次性 nonce;回调时 daemon 校验 */
|
|
21755
|
-
state: external_exports.string().min(1)
|
|
21756
|
-
});
|
|
21757
|
-
var AuthGetIdentityResponseSchema = external_exports.object({
|
|
21758
|
-
type: external_exports.literal("auth:getIdentity:ok"),
|
|
21759
|
-
/** null = 未登录 */
|
|
21760
|
-
identity: FeishuIdentitySchema.nullable(),
|
|
21761
|
-
/** Stable device identifier independent of login, used for the shareable device link. */
|
|
21762
|
-
deviceId: external_exports.string().min(1)
|
|
21763
|
-
});
|
|
21764
|
-
var AuthLogoutResponseSchema = external_exports.object({
|
|
21765
|
-
type: external_exports.literal("auth:logout:ok")
|
|
21766
|
-
});
|
|
21767
|
-
var GatewayUrl = external_exports.string().nullable();
|
|
21768
|
-
var AuthApiKeyGetResponseSchema = external_exports.object({
|
|
21769
|
-
type: external_exports.literal("auth:apiKey:get:ok"),
|
|
21770
|
-
/** null = 还没发过。**发过就能一直看到** —— 中心存的是明文,设置页据此展示 */
|
|
21771
|
-
apiKey: external_exports.string().nullable(),
|
|
21772
|
-
/** ISO 时间;apiKey 为 null 时同为 null */
|
|
21773
|
-
createdAt: external_exports.string().nullable(),
|
|
21774
|
-
gatewayUrl: GatewayUrl
|
|
21775
|
-
});
|
|
21776
|
-
var AuthApiKeyRegenerateResponseSchema = external_exports.object({
|
|
21777
|
-
type: external_exports.literal("auth:apiKey:regenerate:ok"),
|
|
21778
|
-
/** 新发的那把。**旧的当场失效** —— 一人一把,按 union_id 覆盖 */
|
|
21779
|
-
apiKey: external_exports.string().min(1),
|
|
21780
|
-
createdAt: external_exports.string().min(1),
|
|
21781
|
-
gatewayUrl: GatewayUrl
|
|
21782
|
-
});
|
|
21783
|
-
var AuthApiKeyRevokeResponseSchema = external_exports.object({
|
|
21784
|
-
type: external_exports.literal("auth:apiKey:revoke:ok"),
|
|
21785
|
-
/** 之前有没有那把——没发过也算成功(幂等) */
|
|
21786
|
-
revoked: external_exports.boolean()
|
|
21787
|
-
});
|
|
21788
|
-
var AuthLoginDoneEventSchema = external_exports.object({
|
|
21789
|
-
type: external_exports.literal("auth:login:done"),
|
|
21790
|
-
identity: FeishuIdentitySchema
|
|
21791
|
-
});
|
|
21792
|
-
var AuthLoginFailedEventSchema = external_exports.object({
|
|
21793
|
-
type: external_exports.literal("auth:login:failed"),
|
|
21794
|
-
reason: external_exports.string()
|
|
21795
|
-
});
|
|
21796
|
-
|
|
21797
21907
|
// ../protocol/src/dispatch.ts
|
|
21798
21908
|
var DispatchOutcomeSchema = external_exports.discriminatedUnion("kind", [
|
|
21799
21909
|
external_exports.object({
|
|
@@ -22597,7 +22707,14 @@ var PersonaFileSchema = external_exports.object({
|
|
|
22597
22707
|
createdAt: external_exports.number(),
|
|
22598
22708
|
updatedAt: external_exports.number(),
|
|
22599
22709
|
/** Registry-only cloud entry, with no local persona directory. Local key adds -cloud; gateway paths use cloud.personaId and the registered engine determines the cloud tool id. */
|
|
22600
|
-
cloud: external_exports.object({
|
|
22710
|
+
cloud: external_exports.object({
|
|
22711
|
+
gatewayUrl: external_exports.string().min(1),
|
|
22712
|
+
personaId: external_exports.string().min(1),
|
|
22713
|
+
publishedByMe: external_exports.boolean().optional(),
|
|
22714
|
+
environment: DeployEnvironmentSchema.optional(),
|
|
22715
|
+
expectedImage: ImageDigestSchema.optional(),
|
|
22716
|
+
testReleaseId: external_exports.string().optional()
|
|
22717
|
+
}).strict().optional()
|
|
22601
22718
|
}).strict();
|
|
22602
22719
|
var PersonaSkillSummarySchema = external_exports.object({
|
|
22603
22720
|
// 目录名作为 skill name(对齐 CC:frontmatter `name:` 仅作 displayName 用)
|
|
@@ -22831,6 +22948,9 @@ var AllowRuleSchema = external_exports.object({
|
|
|
22831
22948
|
createdAt: external_exports.string().min(1).optional()
|
|
22832
22949
|
});
|
|
22833
22950
|
var SessionFileSchema = external_exports.object({
|
|
22951
|
+
cloudEnvironment: DeployEnvironmentSchema.optional(),
|
|
22952
|
+
cloudExpectedImage: ImageDigestSchema.optional(),
|
|
22953
|
+
testReleaseId: external_exports.string().optional(),
|
|
22834
22954
|
sessionId: external_exports.string().min(1),
|
|
22835
22955
|
/** New gateway execution identity after session:new; defaults to sessionId for the first execution. */
|
|
22836
22956
|
cloudExecutionId: external_exports.string().min(1).optional(),
|
|
@@ -23707,9 +23827,21 @@ var METHOD_DOCS = {
|
|
|
23707
23827
|
summary: "\u539F\u6837\u91CD\u8DD1\u6700\u65B0\u90A3\u6761\u6D41\u6C34\u7EBF\u91CC\u5931\u8D25\u7684\u67D0\u4E00\u6BB5\uFF08GitHub REST rerun job\uFF09\u3002**\u540C\u4E00\u4E2A commit\u3001\u540C\u4E00\u4EFD\u8F93\u5165**\uFF0C\u4E0D\u4EA7\u751F\u65B0\u63D0\u4EA4\u2014\u2014\u6539\u4E86 persona \u5185\u5BB9\u8981 deploy:scan \u518D deploy:release\u3002jobId \u5FC5\u987B\u5C5E\u4E8E\u6700\u65B0\u90A3\u6761 run\uFF1Bowner-only",
|
|
23708
23828
|
args: DeployRerunJobArgsSchema
|
|
23709
23829
|
},
|
|
23830
|
+
"deploy:confirmTest": {
|
|
23831
|
+
summary: "\u786E\u8BA4\u6240\u9009\u6D4B\u8BD5\u7248\u901A\u8FC7\u5B9E\u9645\u8BD5\u7528\uFF1B\u6309\u5DF2\u4FDD\u5B58\u5236\u54C1\u548C\u6D4B\u8BD5\u767B\u8BB0\u6821\u9A8C\uFF0Cowner-only\u3001human-only",
|
|
23832
|
+
args: DeployConfirmTestArgsSchema
|
|
23833
|
+
},
|
|
23834
|
+
"deploy:promote": {
|
|
23835
|
+
summary: "\u5C06\u5DF2\u786E\u8BA4\u6D4B\u8BD5\u7248\u7684\u63D0\u4EA4\u63A8\u8FDB main \u5E76\u4E0A\u7EBF\u76F8\u540C\u955C\u50CF\uFF1B\u6062\u590D\u4E2D\u65AD\u7684\u540C\u4E00\u6B21\u664B\u7EA7\uFF0Cowner-only\u3001human-only",
|
|
23836
|
+
args: DeployPromoteArgsSchema
|
|
23837
|
+
},
|
|
23838
|
+
"deploy:openTest": {
|
|
23839
|
+
summary: "\u51C6\u5907\u5F53\u524D\u6D4B\u8BD5\u7248\u7684\u4E91 Persona \u4F1A\u8BDD\u5165\u53E3\uFF0C\u9501\u5B9A\u73AF\u5883\u548C\u5DF2\u6D4B\u955C\u50CF\uFF0Cowner-only\u3001human-only",
|
|
23840
|
+
args: DeployOpenTestArgsSchema
|
|
23841
|
+
},
|
|
23710
23842
|
"deploy:unpublish": {
|
|
23711
23843
|
summary: "\u4E0B\u7EBF\uFF1A\u89E6\u53D1 persona \u4ED3\u5E93\u91CC\u7684 clawd-unpublish.yml\uFF08workflow_dispatch\uFF09\uFF0C\u7531\u6D41\u6C34\u7EBF\u5728 gateway \u64A4\u6389\u6B63\u5F0F\u767B\u8BB0\u2014\u2014\u522B\u4EBA\u770B\u4E0D\u5230\u3001\u7528\u4E0D\u4E86\uFF1B\u4ED3\u5E93 / \u955C\u50CF / \u672C\u673A\u4E0A\u4E91\u8BB0\u5F55\u90FD\u4E0D\u52A8\uFF0C\u91CD\u65B0\u53D1\u5E03\u5C31\u56DE\u6765\u3002\u6700\u540E\u4E00\u6B21\u53D1\u5E03\u7684 commit \u91CC\u6CA1\u6709\u8FD9\u4EFD workflow\uFF08\u65E7\u6A21\u677F\uFF09\u65F6\u62D2\uFF0C\u8981\u5148\u91CD\u65B0\u53D1\u5E03\u4E00\u6B21\u3002\u56DE { before }\uFF1A\u89E6\u53D1\u4E4B\u524D\u73B0\u67E5\u7684\u6700\u65B0\u4E0B\u7EBF run id\uFF08\u6CA1\u4E0B\u7EBF\u8FC7 = null\uFF09\uFF0C\u9875\u9762\u62FF\u5B83\u8BA4\u65B0 run\uFF1Bowner-only\u3001human-only",
|
|
23712
|
-
args:
|
|
23844
|
+
args: DeployEnvironmentArgsSchema
|
|
23713
23845
|
},
|
|
23714
23846
|
"githubAuth:get": {
|
|
23715
23847
|
summary: "\u672C\u673A\u7684 GitHub \u8EAB\u4EFD\uFF1Aauthorized\uFF08@login\uFF0C\u6765\u81EA git \u51ED\u636E\u5B58\u50A8 / \u672C\u673A\u51ED\u636E\u8868\uFF09/ missing / invalid\uFF08GitHub \u4E0D\u8BA4\uFF09/ pending\uFF08\u7B49 GitHub \u8DF3\u56DE\u4E2D\u5FC3\uFF09\u3002\u8BBE\u7F6E\u9875\u300C\u8D26\u53F7\u300D\u3001\u4E0A\u4E91\u9875\u9876\u4E0A\u90A3\u5F20\u5361\u3001PR \u6536\u4EF6\u7BB1\u90FD\u770B\u5B83\uFF1Bpending \u671F\u9875\u9762\u6BCF 2 \u79D2\u8F6E\u8BE2\uFF0Cdaemon \u987A\u624B\u5411\u4E2D\u5FC3\u9886 token\u3002\u65E0\u53C2\u6570",
|
|
@@ -24131,7 +24263,7 @@ var METHOD_DOCS = {
|
|
|
24131
24263
|
},
|
|
24132
24264
|
"auth:login:start": {
|
|
24133
24265
|
summary: "\u8D77\u98DE\u4E66\u767B\u5F55\u6D41\u7A0B\uFF1A\u751F\u6210 state \u5E76\u8FD4\u56DE\u6388\u6743 URL\uFF0C\u56DE\u8C03\u8D70 HTTP /auth/callback \u843D\u76D8\u3002owner-only",
|
|
24134
|
-
args:
|
|
24266
|
+
args: AuthEnvironmentArgsSchema
|
|
24135
24267
|
},
|
|
24136
24268
|
"auth:getIdentity": {
|
|
24137
24269
|
summary: "\u53D6\u672C\u673A owner \u7684\u98DE\u4E66\u8EAB\u4EFD\uFF08ownerId / provider / displayName / unionId\uFF09+ **\u672C\u673A deviceId**\uFF08\u8BBE\u5907\u5C5E\u6027\uFF0C\u4E0E\u767B\u5F55\u6001\u65E0\u5173\uFF1Bdevice:connect / contact:* / inbox:* \u7684\u4E3B\u952E\u90FD\u662F\u5B83\uFF09\uFF1B\u7EDD\u4E0D\u8FD4\u56DE\u767B\u5F55\u7968",
|
|
@@ -24143,15 +24275,15 @@ var METHOD_DOCS = {
|
|
|
24143
24275
|
},
|
|
24144
24276
|
"auth:apiKey:get": {
|
|
24145
24277
|
summary: "\u8BFB\u56DE\u81EA\u5DF1\u90A3\u628A\u4E91 persona \u8C03\u7528 key\uFF08\u6CA1\u53D1\u8FC7 \u2192 apiKey:null\uFF09\u3002daemon \u62FF\u672C\u673A\u767B\u5F55\u51ED\u8BC1\u5411\u4E2D\u5FC3\u4EE3\u53D6\uFF0C\u51ED\u8BC1\u4E0D\u51FA ws\u3002owner-only",
|
|
24146
|
-
args:
|
|
24278
|
+
args: AuthEnvironmentArgsSchema
|
|
24147
24279
|
},
|
|
24148
24280
|
"auth:apiKey:regenerate": {
|
|
24149
24281
|
summary: "\u6362\u4E00\u628A\u65B0\u7684\u4E91 persona \u8C03\u7528 key\uFF0C**\u65E7\u7684\u5F53\u573A\u5931\u6548**\uFF08\u4E00\u4EBA\u4E00\u628A\uFF0C\u4E2D\u5FC3\u6309 union_id \u8986\u76D6\uFF09\u3002owner-only",
|
|
24150
|
-
args:
|
|
24282
|
+
args: AuthEnvironmentArgsSchema
|
|
24151
24283
|
},
|
|
24152
24284
|
"auth:apiKey:revoke": {
|
|
24153
24285
|
summary: "\u64A4\u9500\u81EA\u5DF1\u7684\u4E91 persona \u8C03\u7528 key\uFF1A\u4E2D\u5FC3\u5220\u6389\u90A3\u4E00\u884C\u3001**\u4E0D\u53D1\u65B0\u7684**\u3002gateway \u53EA\u5728\u5F00\u4F1A\u8BDD\u548C\u6BCF\u6B21\u4E0A\u884C\u65F6\u9A8C key\uFF0C\u6240\u4EE5\u5F00\u7740\u7684\u4E91\u4F1A\u8BDD\u4E0B\u4E00\u6761\u6D88\u606F\u624D\u53D1\u4E0D\u51FA\u53BB\u3001\u6B63\u5728\u8DD1\u7684\u90A3\u4E00\u8F6E\u4F1A\u8DD1\u5B8C\u3002\u6CA1\u53D1\u8FC7\u4E5F\u56DE ok\uFF08revoked:false\uFF09\u3002owner-only",
|
|
24154
|
-
args:
|
|
24286
|
+
args: AuthEnvironmentArgsSchema
|
|
24155
24287
|
},
|
|
24156
24288
|
"device:list": {
|
|
24157
24289
|
summary: "\u5217\u51FA\u516C\u5171\u8BBE\u5907\u76EE\u5F55\u91CC\u53EF\u8FDE\u63A5\u7684\u8BBE\u5907\uFF08daemon \u4EE3\u7406\u4E2D\u5FC3 server\uFF09\u3002owner-only",
|