@clawos-dev/clawd 0.2.474 → 0.2.475
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 +61 -132
- package/dist/cli.cjs +1499 -2332
- package/dist/dispatch/mcp-server.cjs +61 -132
- package/dist/persona-defaults/persona-clawd-butler/.claude/skills/scan-persona-for-deploy/SKILL.md +12 -19
- package/dist/share-md-viewer-error.html +1 -1
- package/dist/share-md-viewer.html +1 -1
- package/dist/share-ui/assets/guest-UrSYl_LP.css +32 -0
- package/dist/share-ui/assets/{guest-6sOkOwA_.js → guest-qhUOEJaG.js} +63 -63
- package/dist/share-ui/guest.html +2 -2
- package/package.json +1 -1
- package/dist/share-ui/assets/guest-C2N-X9iw.css +0 -32
|
@@ -21345,117 +21345,75 @@ var EnvEvidenceSchema = external_exports.object({
|
|
|
21345
21345
|
|
|
21346
21346
|
// ../protocol/src/deploy-schemas.ts
|
|
21347
21347
|
var FulfillmentSchema = external_exports.enum(["deployer", "user"]);
|
|
21348
|
-
var
|
|
21349
|
-
|
|
21350
|
-
|
|
21351
|
-
|
|
21352
|
-
|
|
21353
|
-
"trialing",
|
|
21354
|
-
"failed",
|
|
21355
|
-
"deployed"
|
|
21356
|
-
]);
|
|
21357
|
-
var DeployGapSchema = external_exports.object({
|
|
21358
|
-
// agent 的自然语言错因,如「我要解析 aliyun 的 JSON 输出,但容器里没有 python3」
|
|
21359
|
-
errorText: external_exports.string().min(1),
|
|
21360
|
-
// 原始输出片段,给人自己判断用
|
|
21361
|
-
raw: external_exports.string().optional(),
|
|
21362
|
-
// 建议补的依赖:`cli:python3` 这种。拿不准就不给,让人自己决定。
|
|
21363
|
-
suggest: external_exports.string().optional()
|
|
21364
|
-
}).strict();
|
|
21365
|
-
var DeployPlacementSchema = external_exports.object({
|
|
21366
|
-
/** gateway 的公网地址(入口 A 直接 POST 它;入口 B 由设备目录下发 ws 地址) */
|
|
21367
|
-
gatewayUrl: external_exports.string().min(1),
|
|
21368
|
-
/** 服务设备 id:别人的 clawd 用 `device:connect { deviceId }` 就能连上,本机侧零改动 */
|
|
21369
|
-
serviceDeviceId: external_exports.string().min(1),
|
|
21370
|
-
/** 这次登记为正式的镜像 tag(= 试装通过的那个) */
|
|
21371
|
-
image: external_exports.string().min(1),
|
|
21372
|
-
/** 使用者自带的凭据名字(= 单据里 fulfillment 选了 'user' 的那些)。**只有名字** */
|
|
21373
|
-
userSecrets: external_exports.array(external_exports.string()).default([]),
|
|
21374
|
-
/** 是否进公共设备目录。false = 只有拿到 deviceId 的人连得上 */
|
|
21375
|
-
publicDirectory: external_exports.boolean(),
|
|
21376
|
-
deployedAt: external_exports.number()
|
|
21348
|
+
var DeployFileSchema = external_exports.object({
|
|
21349
|
+
version: external_exports.literal(1),
|
|
21350
|
+
manifest: EnvironmentManifestSchema,
|
|
21351
|
+
/** secret name → 谁提供。缺席 = 还没定 */
|
|
21352
|
+
fulfillment: external_exports.record(external_exports.string(), FulfillmentSchema).default({})
|
|
21377
21353
|
}).strict();
|
|
21378
|
-
var
|
|
21379
|
-
|
|
21380
|
-
|
|
21381
|
-
status: DeployStatusSchema,
|
|
21382
|
-
/**
|
|
21383
|
-
* 干这次扫描的 butler 会话 id。单据上「看它怎么干的」入口靠它把工作过程调出来。
|
|
21384
|
-
*
|
|
21385
|
-
* 扫描不是 daemon 里一个闷头跑的黑盒进程,是 persona-butler 的一次真实会话——用户能翻
|
|
21386
|
-
* 看它读了哪些文件、搜了什么。这条也顺带解决「它到底有没有上网查」这类问题:不用另造
|
|
21387
|
-
* 探针去抓证据,看一眼就知道。
|
|
21388
|
-
*/
|
|
21354
|
+
var DeployScanStatusSchema = external_exports.enum(["scanning", "done", "failed"]);
|
|
21355
|
+
var DeployScanSchema = external_exports.object({
|
|
21356
|
+
/** 干这次扫描的 butler 会话,「看它怎么干的」入口 */
|
|
21389
21357
|
scanSessionId: external_exports.string().optional(),
|
|
21390
|
-
|
|
21391
|
-
|
|
21392
|
-
evidence: external_exports.array(EnvEvidenceSchema).optional(),
|
|
21393
|
-
smokeTask: external_exports.string().optional(),
|
|
21358
|
+
status: DeployScanStatusSchema,
|
|
21359
|
+
evidence: external_exports.array(EnvEvidenceSchema).default([]),
|
|
21394
21360
|
notes: external_exports.array(external_exports.string()).default([]),
|
|
21361
|
+
/** 扫描时被告知的共享资产名单(判「扫描器后来长了新本事」用) */
|
|
21362
|
+
scannedAssets: external_exports.array(external_exports.string()).default([]),
|
|
21363
|
+
startedAt: external_exports.number(),
|
|
21364
|
+
finishedAt: external_exports.number().optional(),
|
|
21365
|
+
error: external_exports.string().optional()
|
|
21366
|
+
}).strict();
|
|
21367
|
+
var DeployRepoSchema = external_exports.object({
|
|
21368
|
+
url: external_exports.string().min(1),
|
|
21369
|
+
branch: external_exports.string().min(1),
|
|
21370
|
+
head: external_exports.string().min(1),
|
|
21371
|
+
/** 工作区有没有未提交的改动 */
|
|
21372
|
+
dirty: external_exports.boolean(),
|
|
21373
|
+
/** 本地领先远端几个提交 */
|
|
21374
|
+
ahead: external_exports.number()
|
|
21375
|
+
}).strict();
|
|
21376
|
+
var DeploySecretPresenceSchema = external_exports.object({
|
|
21377
|
+
env: external_exports.string().min(1),
|
|
21378
|
+
setAt: external_exports.number().optional()
|
|
21379
|
+
}).strict();
|
|
21380
|
+
var DeployStateSchema = external_exports.object({
|
|
21381
|
+
personaId: external_exports.string().min(1),
|
|
21382
|
+
repo: DeployRepoSchema.optional(),
|
|
21383
|
+
file: DeployFileSchema.optional(),
|
|
21384
|
+
scan: DeployScanSchema.optional(),
|
|
21385
|
+
/** 没仓库时缺席(查不了) */
|
|
21386
|
+
secrets: external_exports.array(DeploySecretPresenceSchema).optional(),
|
|
21395
21387
|
/**
|
|
21396
|
-
*
|
|
21397
|
-
*
|
|
21398
|
-
* 记它是为了回答一个只有它答得了的问题:「这张单据是不是用还不知道某个资产的扫描器扫的」。
|
|
21399
|
-
* 没有它就只能拿「当前资产表 ⊄ 单据的 assets」当判据——而一个 persona 本来就可能真的用不到
|
|
21400
|
-
* 某个资产,那会变成对每张单据的常态唠叨。
|
|
21401
|
-
*
|
|
21402
|
-
* 缺席 = M1b 及以前扫的老单据(那时候扫描器只被告知了 deploy-kit 一条)。
|
|
21403
|
-
*/
|
|
21404
|
-
scannedAssets: external_exports.array(external_exports.string()).optional(),
|
|
21405
|
-
/**
|
|
21406
|
-
* 每条凭据的履约选择:secret name → 'deployer' | 'user'。
|
|
21407
|
-
* **只记「谁出」,不记值。** 没做选择的凭据不在这个 map 里(缺席即未定),
|
|
21408
|
-
* 用缺席而不是 'unset' 枚举值表达未定,省掉一个下游要处处判的第三态。
|
|
21409
|
-
*/
|
|
21410
|
-
fulfillment: external_exports.record(external_exports.string(), FulfillmentSchema).default({}),
|
|
21411
|
-
/** 试装失败时的缺口清单;成功或没试装过是空数组 */
|
|
21412
|
-
gaps: external_exports.array(DeployGapSchema).default([]),
|
|
21413
|
-
/** 试装跑到第几轮了(每次 deploy:trial +1,上限 TRIAL_ROUND_MAX)。重扫清零 */
|
|
21414
|
-
trialRound: external_exports.number().default(0),
|
|
21415
|
-
/**
|
|
21416
|
-
* 试装当前在哪一步的一句人话(「在构镜像」「冒烟任务跑起来了」)。
|
|
21417
|
-
* 单据页要的是「到哪一步了」,不是逐 token 的过程——过程在 gateway 的任务台账里。
|
|
21418
|
-
*/
|
|
21419
|
-
trialStage: external_exports.string().optional(),
|
|
21420
|
-
/**
|
|
21421
|
-
* 上一次试装通过的时刻。**deploy:deploy 的前置**——没试装过不让部署,那正是试装存在的理由。
|
|
21422
|
-
* 试装通过后单据回 `ready` 而不是直接 `deployed`:试装的产物是一个用完即弃的镜像,
|
|
21423
|
-
* 部署的产物是一个别人能派活的服务,中间那次决定得留给人。
|
|
21388
|
+
* `.clawd/deploy.json` 读不出来(人手改坏了)时的人话。有它就没有 `file`。
|
|
21389
|
+
* 页面据此给一条能走的路(重新扫描会整份重写),而不是白屏。
|
|
21424
21390
|
*/
|
|
21425
|
-
|
|
21426
|
-
/** 试装通过的那个镜像 tag;deploy:deploy 登记的就是它,不重新构一遍 */
|
|
21427
|
-
trialImage: external_exports.string().optional(),
|
|
21428
|
-
/** 部署落点(status 是 deployed 才有) */
|
|
21429
|
-
placement: DeployPlacementSchema.optional(),
|
|
21430
|
-
// 扫描 / 试装失败的原因(status 是 scanFailed / failed 时才有意义)
|
|
21431
|
-
error: external_exports.string().optional(),
|
|
21432
|
-
createdAt: external_exports.number(),
|
|
21433
|
-
updatedAt: external_exports.number()
|
|
21391
|
+
fileError: external_exports.string().optional()
|
|
21434
21392
|
}).strict();
|
|
21435
|
-
var
|
|
21436
|
-
|
|
21393
|
+
var DeployReleaseResultSchema = external_exports.object({
|
|
21394
|
+
sha: external_exports.string().min(1),
|
|
21395
|
+
actionsUrl: external_exports.string().min(1)
|
|
21437
21396
|
}).strict();
|
|
21438
|
-
var
|
|
21439
|
-
|
|
21397
|
+
var DeployPersonaArgsSchema = external_exports.object({
|
|
21398
|
+
personaId: external_exports.string().min(1)
|
|
21440
21399
|
}).strict();
|
|
21441
21400
|
var DeployPatchArgsSchema = external_exports.object({
|
|
21442
|
-
|
|
21401
|
+
personaId: external_exports.string().min(1),
|
|
21443
21402
|
patch: external_exports.object({
|
|
21444
21403
|
fulfillment: external_exports.record(external_exports.string(), FulfillmentSchema).optional(),
|
|
21445
|
-
|
|
21446
|
-
// 人工补依赖(试装失败后补 python3 这种);整份替换 manifest
|
|
21404
|
+
// 人工补依赖;整份替换 manifest
|
|
21447
21405
|
manifest: EnvironmentManifestSchema.optional()
|
|
21448
21406
|
}).strict()
|
|
21449
21407
|
}).strict();
|
|
21450
21408
|
var DeployPutSecretArgsSchema = external_exports.object({
|
|
21451
|
-
|
|
21409
|
+
personaId: external_exports.string().min(1),
|
|
21452
21410
|
// 对应 manifest.secrets[].name
|
|
21453
21411
|
name: external_exports.string().min(1),
|
|
21454
21412
|
// 环境变量名 → 值。key 必须是该 secret 声明过的 env 之一,handler 校验。
|
|
21455
21413
|
values: external_exports.record(external_exports.string(), external_exports.string())
|
|
21456
21414
|
}).strict();
|
|
21457
21415
|
var DeployReportFindingArgsSchema = external_exports.object({
|
|
21458
|
-
|
|
21416
|
+
personaId: external_exports.string().min(1),
|
|
21459
21417
|
kind: external_exports.enum(["cli", "secret", "asset"]),
|
|
21460
21418
|
// 该条目在 manifest 对应数组里的内容(形状随 kind 变,handler 按 kind 收窄校验)
|
|
21461
21419
|
item: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
@@ -21467,23 +21425,9 @@ var DeployReportFindingArgsSchema = external_exports.object({
|
|
|
21467
21425
|
})
|
|
21468
21426
|
}).strict();
|
|
21469
21427
|
var DeployFinishScanArgsSchema = external_exports.object({
|
|
21470
|
-
|
|
21471
|
-
smokeTask: external_exports.string().min(1),
|
|
21428
|
+
personaId: external_exports.string().min(1),
|
|
21472
21429
|
notes: external_exports.array(external_exports.string()).default([])
|
|
21473
21430
|
}).strict();
|
|
21474
|
-
var DeploySecretStatusSchema = external_exports.object({
|
|
21475
|
-
name: external_exports.string(),
|
|
21476
|
-
// 该 secret 声明的 env 里已有值的个数
|
|
21477
|
-
filled: external_exports.number(),
|
|
21478
|
-
total: external_exports.number()
|
|
21479
|
-
}).strict();
|
|
21480
|
-
var DeployReceiptViewSchema = external_exports.object({
|
|
21481
|
-
receipt: DeployReceiptSchema,
|
|
21482
|
-
secretStatus: external_exports.array(DeploySecretStatusSchema)
|
|
21483
|
-
}).strict();
|
|
21484
|
-
var DeployListResultSchema = external_exports.object({
|
|
21485
|
-
receipts: external_exports.array(DeployReceiptSchema)
|
|
21486
|
-
}).strict();
|
|
21487
21431
|
|
|
21488
21432
|
// ../protocol/src/contact-remote-access.ts
|
|
21489
21433
|
var ContactSetRemoteAccessArgsSchema = external_exports.object({
|
|
@@ -23938,49 +23882,34 @@ var METHOD_DOCS = {
|
|
|
23938
23882
|
summary: "\u8BFB\u6587\u4EF6\u5185\u5BB9\uFF1Bguest \u8DEF\u5F84\u8FB9\u754C\u4E0E workspace:list \u540C",
|
|
23939
23883
|
args: WorkspaceReadArgs
|
|
23940
23884
|
},
|
|
23885
|
+
// ---- deploy:*(persona 上云:persona 目录 = git 仓库工作树,发布 = 推送触发仓库流水线)----
|
|
23941
23886
|
"deploy:start": {
|
|
23942
|
-
summary: "\u5BF9\u67D0\u4E2A persona \u8D77\u4E00\u6B21
|
|
23943
|
-
args:
|
|
23944
|
-
},
|
|
23945
|
-
"deploy:rescan": {
|
|
23946
|
-
summary: "\u5C31\u5730\u91CD\u626B\u4E00\u5F20\u5DF2\u6709\u7684\u90E8\u7F72\u5355\uFF1A\u6E05\u6389\u4E0A\u6B21\u626B\u51FA\u6765\u7684\u6E05\u5355 / \u8BC1\u636E / \u5B58\u7591\u9879\uFF0C\u72B6\u6001\u56DE scanning\uFF0C\u8D77\u4E00\u4E2A\u65B0\u7684\u626B\u63CF\u4F1A\u8BDD\u3002**\u5DF2\u586B\u7684\u51ED\u636E\u503C\u548C\u5C65\u7EA6\u9009\u62E9\u539F\u6837\u4FDD\u7559**\uFF08\u5B83\u4EEC\u6309\u5355\u636E id \u5B58\uFF0C\u4E0D\u968F\u626B\u63CF\u7ED3\u679C\u8D70\uFF09\uFF0C\u6240\u4EE5\u91CD\u626B\u4E0D\u4F1A\u8BA9\u4EBA\u767D\u586B\u4E00\u904D\uFF1Bowner-only",
|
|
23947
|
-
args: DeployIdArgsSchema
|
|
23948
|
-
},
|
|
23949
|
-
"deploy:list": {
|
|
23950
|
-
summary: "\u5217\u51FA\u5168\u90E8\u90E8\u7F72\u5355\uFF08\u65B0\u7684\u5728\u524D\uFF09\uFF1Bowner-only\u3002\u65E0\u53C2\u6570",
|
|
23951
|
-
args: NO_ARGS
|
|
23887
|
+
summary: "\u5BF9\u67D0\u4E2A persona \u8D77\u4E00\u6B21\u4E0A\u4E91\u626B\u63CF\u3002**\u6CA1\u4ED3\u5E93\u5148\u5EFA\u4ED3**\uFF08gh repo create\uFF0C\u5EFA\u5728\u7EC4\u7EC7\u4E0B\u3001\u79C1\u6709\u3001\u63A8\u9996\u4E2A\u63D0\u4EA4\uFF09\uFF0C\u518D\u8D77 persona-butler \u7684\u626B\u63CF\u4F1A\u8BDD\uFF0C\u7ED3\u679C\u5199\u8FDB persona \u76EE\u5F55\u7684 .clawd/deploy.json \uFF08\u6E05\u5355 + \u5C65\u7EA6\uFF0C\u8FDB\u4ED3\u5E93\uFF09\u4E0E .clawd/deploy-scan.json\uFF08\u8BC1\u636E\uFF0C\u4E0D\u8FDB\u4ED3\u5E93\uFF09\u3002\u5DF2\u7ECF\u5728\u626B\u7684\u8BDD\u539F\u6837\u8FD4\u56DE\u3001\u4E0D\u8D77\u7B2C\u4E8C\u4E2A\u626B\u63CF\u4F1A\u8BDD\uFF1Bowner-only",
|
|
23888
|
+
args: DeployPersonaArgsSchema
|
|
23952
23889
|
},
|
|
23953
23890
|
"deploy:get": {
|
|
23954
|
-
summary: "\
|
|
23955
|
-
args:
|
|
23891
|
+
summary: "\u4E0A\u4E91\u9875\u9762\u8981\u7684\u5168\u90E8\uFF1A\u4ED3\u5E93\u7ED1\u5B9A\u72B6\u6001\uFF08git \u73B0\u7B97\uFF09\u3001\u90E8\u7F72\u6587\u4EF6\u3001\u626B\u63CF\u8BB0\u5F55\u3001\u4ED3\u5E93 Secrets \u91CC\u5404\u53D8\u91CF\u540D\u586B\u8FC7\u6CA1\u6709\uFF08**\u53EA\u6709\u540D\u5B57\u548C\u65F6\u95F4\uFF0C\u6CA1\u6709\u503C**\uFF09\uFF1Bowner-only",
|
|
23892
|
+
args: DeployPersonaArgsSchema
|
|
23956
23893
|
},
|
|
23957
23894
|
"deploy:patch": {
|
|
23958
|
-
summary: "\u7F16\u8F91\u90E8\u7F72\
|
|
23895
|
+
summary: "\u7F16\u8F91\u90E8\u7F72\u6587\u4EF6\uFF1A\u9009\u5C65\u7EA6\uFF08\u8C01\u51FA\u8FD9\u6761\u51ED\u636E\uFF09/ \u624B\u5DE5\u8865\u4F9D\u8D56\u3002**\u4E0D\u80FD\u4ECE\u8FD9\u91CC\u4F20\u51ED\u636E\u7684\u503C**\uFF08\u503C\u8D70 deploy:putSecret\uFF09\uFF1B\u5C65\u7EA6\u540D\u5FC5\u987B\u662F\u6E05\u5355\u91CC\u58F0\u660E\u8FC7\u7684\u51ED\u636E\uFF1Bowner-only",
|
|
23959
23896
|
args: DeployPatchArgsSchema
|
|
23960
23897
|
},
|
|
23961
23898
|
"deploy:putSecret": {
|
|
23962
|
-
summary: "\
|
|
23899
|
+
summary: "\u628A\u4E00\u6761\u51ED\u636E\u7684\u503C\u5199\u8FDB\u4ED3\u5E93\u7684 GitHub Secrets\uFF08gh secret set\uFF0C\u503C\u8D70 stdin\uFF09\u3002**\u8FD9\u662F\u503C\u552F\u4E00\u7684\u5165\u53E3**\uFF1A\u5165\u53C2\u4E0D\u8FDB\u65E5\u5FD7\u3001\u54CD\u5E94\u4E0D\u56DE\u663E\u503C\u3001\u672C\u673A\u4E0D\u843D\u76D8\u3002env \u540D\u5FC5\u987B\u662F\u8BE5\u51ED\u636E\u5728\u6E05\u5355\u91CC\u58F0\u660E\u8FC7\u7684\uFF1Bowner-only",
|
|
23963
23900
|
args: DeployPutSecretArgsSchema
|
|
23964
23901
|
},
|
|
23965
23902
|
"deploy:reportFinding": {
|
|
23966
|
-
summary: "\u626B\u63CF\u4E2D\u7684 butler \u9010\u6761\u4E0A\u62A5\u4E00\u4E2A\u53D1\u73B0\uFF08cli / secret / asset\uFF09\u3002**\u8FB9\u626B\u8FB9\u62A5**\uFF0C\
|
|
23903
|
+
summary: "\u626B\u63CF\u4E2D\u7684 butler \u9010\u6761\u4E0A\u62A5\u4E00\u4E2A\u53D1\u73B0\uFF08cli / secret / asset\uFF09\u3002**\u8FB9\u626B\u8FB9\u62A5**\uFF0C\u9875\u9762\u968F\u4E4B\u4E00\u70B9\u70B9\u586B\u5145\uFF1B\u540C (kind,name) \u91CD\u590D\u4E0A\u62A5\u5373\u8986\u76D6\u3002owner-only\u2014\u2014butler \u4F1A\u8BDD\u672C\u8EAB\u8DD1\u5728 owner \u6A21\u5F0F",
|
|
23967
23904
|
args: DeployReportFindingArgsSchema
|
|
23968
23905
|
},
|
|
23969
23906
|
"deploy:finishScan": {
|
|
23970
|
-
summary: "butler \u6536\u5C3E\uFF1A\u7ED9\u51FA\
|
|
23907
|
+
summary: "butler \u6536\u5C3E\uFF1A\u7ED9\u51FA\u5B58\u7591\u9879\uFF0C\u626B\u63CF\u8BB0\u5F55\u4ECE scanning \u8F6C done\u3002\u6CA1\u8C03\u5230\u5B83\u5C31\u7B49\u4E8E\u6CA1\u626B\u5B8C\u2014\u2014butler \u4F1A\u8BDD\u7ED3\u675F\u65F6\u8BB0\u5F55\u8FD8\u505C\u5728 scanning\uFF0Cdaemon \u636E\u6B64\u5224 failed\uFF1Bowner-only",
|
|
23971
23908
|
args: DeployFinishScanArgsSchema
|
|
23972
23909
|
},
|
|
23973
|
-
"deploy:
|
|
23974
|
-
summary: "\
|
|
23975
|
-
args:
|
|
23976
|
-
},
|
|
23977
|
-
"deploy:deploy": {
|
|
23978
|
-
summary: "\u628A\u8BD5\u88C5\u901A\u8FC7\u7684\u90A3\u4E2A\u955C\u50CF\u5728 gateway \u767B\u8BB0\u4E3A**\u6B63\u5F0F**\u90E8\u7F72\uFF1A\u4E4B\u540E\u522B\u4EBA\u7684 clawd \u6D3E\u6D3B\u7ED9\u8FD9\u4E2A\u670D\u52A1\u8BBE\u5907\uFF0C\u8D77\u7684\u5C31\u662F\u5B83\u3002\u524D\u7F6E\u662F\u8BD5\u88C5\u901A\u8FC7\u8FC7\uFF08\u6CA1\u9A8C\u8FC7\u4E0D\u8BA9\u53D1\uFF0C\u90A3\u6B63\u662F\u8BD5\u88C5\u5B58\u5728\u7684\u7406\u7531\uFF09\u3002\u56DE\u6765\u7684\u5355\u636E\u5E26 placement\u2014\u2014\u4E91\u4E0A\u5730\u5740 / \u670D\u52A1\u8BBE\u5907 id / \u8C01\u53EF\u8C03\u7528 / \u4F7F\u7528\u8005\u9700\u81EA\u5E26\u54EA\u4E9B\u51ED\u636E\uFF1Bowner-only",
|
|
23979
|
-
args: DeployIdArgsSchema
|
|
23980
|
-
},
|
|
23981
|
-
"deploy:remove": {
|
|
23982
|
-
summary: "\u5220\u6389\u4E00\u5F20\u90E8\u7F72\u5355\uFF0C\u8FDE\u5E26\u6E05\u6389\u5B83\u7684\u5168\u90E8\u51ED\u636E\u503C\uFF08\u503C\u4E0D\u8BE5\u6BD4\u5355\u636E\u6D3B\u5F97\u4E45\uFF09\uFF1Bowner-only",
|
|
23983
|
-
args: DeployIdArgsSchema
|
|
23910
|
+
"deploy:release": {
|
|
23911
|
+
summary: "\u53D1\u5E03 = \u63D0\u4EA4\u5E76\u63A8\u9001\u5230\u4ED3\u5E93\uFF1A\u91CD\u5199 workflow \u6A21\u677F \u2192 git add -A \u2192 \u7A7A\u63D0\u4EA4\u4E5F\u5141\u8BB8 \u2192 push\u3002\u4ED3\u5E93\u91CC\u7684\u6D41\u6C34\u7EBF\u63A5\u7740\u6784\u955C\u50CF\u3001\u5728\u96C6\u7FA4\u4E0A\u771F\u8D77\u4E00\u6B21\u3001\u767B\u8BB0\u6210\u6B63\u5F0F\uFF0C\u8FDB\u5EA6\u5728 GitHub Actions \u770B\u3002\u524D\u7F6E\uFF1A\u5DF2\u7ED1\u5B9A\u4ED3\u5E93\u3001\u6709\u6E05\u5355\u3001\u6BCF\u6761\u51ED\u636E\u90FD\u5B9A\u4E86\u5C65\u7EA6\u3001\u6BCF\u4E2A\u53D8\u91CF\u540D\u90FD\u5728 Secrets \u91CC\uFF1Bowner-only",
|
|
23912
|
+
args: DeployPersonaArgsSchema
|
|
23984
23913
|
},
|
|
23985
23914
|
"shift:list": {
|
|
23986
23915
|
summary: "\u5217\u51FA owner \u7684\u5168\u90E8 shift\uFF08\u6392\u73ED\uFF09\uFF0C\u7ED9 UI \u65E5\u5386\u6E32\u67D3\u7528\uFF1Bowner-only",
|