@clawos-dev/clawd 0.2.732 → 0.2.733
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 +17 -12
- package/dist/cli.cjs +80 -21
- package/dist/cloud-persona-conversations.html +18 -18
- package/dist/dispatch/mcp-server.cjs +17 -12
- package/dist/owner-ui/assets/{owner-Iqmj-Nqo.js → owner-V72Fs11W.js} +201 -201
- package/dist/owner-ui/owner.html +1 -1
- package/dist/persona-defaults/persona-app-builder/mcp/clawd-app-builder/mcp-server.cjs +17 -12
- package/dist/persona-defaults/persona-clawd-butler/.claude/skills/scan-persona-for-deploy/SKILL.md +20 -17
- package/dist/persona-defaults/persona-dataclaw-builder/mcp/clawd-app-builder/mcp-server.cjs +17 -12
- package/dist/secrets/README.md +1 -1
- package/dist/share-ui/assets/{guest-BtoJZ-Uc.js → guest-DPqaHbma.js} +50 -50
- package/dist/share-ui/guest.html +1 -1
- package/package.json +1 -1
package/dist/owner-ui/owner.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta name="referrer" content="no-referrer" />
|
|
7
7
|
<title>Clawd</title>
|
|
8
|
-
<script type="module" crossorigin src="/app/assets/owner-
|
|
8
|
+
<script type="module" crossorigin src="/app/assets/owner-V72Fs11W.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/app/assets/owner-tAd4oFVr.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body style="margin: 0">
|
|
@@ -31378,12 +31378,6 @@ var EnvPackageSchema = external_exports.object({
|
|
|
31378
31378
|
*/
|
|
31379
31379
|
aptVersion: external_exports.string().optional()
|
|
31380
31380
|
});
|
|
31381
|
-
var EnvSecretSchema = external_exports.object({
|
|
31382
|
-
name: external_exports.string().min(1),
|
|
31383
|
-
// 解析出的值注入到哪些环境变量。一份凭据可含多个字段(AK 是 id+secret 两个,
|
|
31384
|
-
// supabase 是 url/anon/service-role/jwt 四个),所以是数组不是单值。
|
|
31385
|
-
env: external_exports.array(external_exports.string().min(1)).min(1)
|
|
31386
|
-
});
|
|
31387
31381
|
var ConnectorNameSchema = external_exports.string().regex(/^[a-z0-9-]+$/, "\u8FDE\u63A5\u5668\u540D\u53EA\u80FD\u662F\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u77ED\u6A2A\u7EBF");
|
|
31388
31382
|
var CONNECTOR_KINDS = ["proxy", "env"];
|
|
31389
31383
|
var CONNECTOR_RUNNERS = ["mcp", "cli"];
|
|
@@ -31391,6 +31385,10 @@ var CONNECTOR_PROTOCOLS = ["bearer", "lark-sidecar"];
|
|
|
31391
31385
|
var CREDENTIAL_SOURCES = ["none", "shared", "personal"];
|
|
31392
31386
|
var CONNECTOR_AUTHS = ["oauth", "fields"];
|
|
31393
31387
|
var ConnectorFieldSchema = external_exports.string().regex(/^[A-Z][A-Z0-9_]*$/, "\u8981\u586B\u7684\u53D8\u91CF\u540D\u53EA\u80FD\u662F\u5927\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF\uFF0C\u4E14\u4EE5\u5B57\u6BCD\u5F00\u5934");
|
|
31388
|
+
var EnvVarSchema = external_exports.object({
|
|
31389
|
+
name: external_exports.string().min(1),
|
|
31390
|
+
env: external_exports.array(ConnectorFieldSchema).min(1)
|
|
31391
|
+
});
|
|
31394
31392
|
var EnvConnectorSchema = external_exports.object({
|
|
31395
31393
|
name: ConnectorNameSchema,
|
|
31396
31394
|
kind: external_exports.enum(CONNECTOR_KINDS),
|
|
@@ -31415,6 +31413,12 @@ var normalizeLegacyManifest = (v) => {
|
|
|
31415
31413
|
const { assets: _dropped, ...rest } = o;
|
|
31416
31414
|
o = rest;
|
|
31417
31415
|
}
|
|
31416
|
+
if ("secrets" in o && Array.isArray(o.secrets)) {
|
|
31417
|
+
const { secrets, ...rest } = o;
|
|
31418
|
+
const fields = new Set((Array.isArray(rest.connectors) ? rest.connectors : []).flatMap((c) => Array.isArray(c?.fields) ? c.fields : []));
|
|
31419
|
+
const legacy = secrets.map((g) => ({ ...g, env: Array.isArray(g?.env) ? g.env.filter((e) => !fields.has(e)) : g?.env })).filter((g) => !Array.isArray(g.env) || g.env.length > 0);
|
|
31420
|
+
o = { ...rest, envVars: [...Array.isArray(rest.envVars) ? rest.envVars : [], ...legacy] };
|
|
31421
|
+
}
|
|
31418
31422
|
return o;
|
|
31419
31423
|
};
|
|
31420
31424
|
var PublisherTestSchema = external_exports.object({
|
|
@@ -31426,12 +31430,13 @@ var PublisherTestSchema = external_exports.object({
|
|
|
31426
31430
|
var MANIFEST_BODY = {
|
|
31427
31431
|
test: PublisherTestSchema.optional(),
|
|
31428
31432
|
packages: external_exports.array(EnvPackageSchema),
|
|
31429
|
-
|
|
31433
|
+
/** 环境变量(见 `EnvVarSchema`)。缺省空:没声明就是没有。 */
|
|
31434
|
+
envVars: external_exports.array(EnvVarSchema).default([]),
|
|
31430
31435
|
/**
|
|
31431
31436
|
* 装了哪些连接器(design 2026-09-11-mcp-connector §3.1)。一条一个对象,形状见 `EnvConnectorSchema`。
|
|
31432
31437
|
*
|
|
31433
|
-
*
|
|
31434
|
-
* 三种来源里只有「共享」才落到 Secrets,而且靠 `sharedConnectorSecrets`
|
|
31438
|
+
* 凭据归连接器自己(`fields`),不进 envVars:谁出是单据上点出来的,
|
|
31439
|
+
* 三种来源里只有「共享」才落到 Secrets,而且靠 `sharedConnectorSecrets` 在消费处并入。
|
|
31435
31440
|
*
|
|
31436
31441
|
* **缺省空而不是必填**:本机上已有的单据不用为此重扫一遍;没声明就是没装。
|
|
31437
31442
|
*/
|
|
@@ -31445,7 +31450,7 @@ var EnvironmentManifestSchema = external_exports.preprocess(normalizeLegacyManif
|
|
|
31445
31450
|
...MANIFEST_BODY
|
|
31446
31451
|
}).strict());
|
|
31447
31452
|
var EnvEvidenceSchema = external_exports.object({
|
|
31448
|
-
// 这条证据支持的是哪一项:`${kind}:${name}`,如 'package:aliyun' / '
|
|
31453
|
+
// 这条证据支持的是哪一项:`${kind}:${name}`,如 'package:aliyun' / 'env:aliyun-ak' / 'connector:feishu'
|
|
31449
31454
|
target: external_exports.string().min(1),
|
|
31450
31455
|
reason: external_exports.string().min(1),
|
|
31451
31456
|
file: external_exports.string().min(1),
|
|
@@ -31950,7 +31955,7 @@ var DeployRerunJobArgsSchema = external_exports.object({
|
|
|
31950
31955
|
}).strict();
|
|
31951
31956
|
var DeployReportFindingArgsSchema = external_exports.object({
|
|
31952
31957
|
personaId: external_exports.string().min(1),
|
|
31953
|
-
kind: external_exports.enum(["package", "
|
|
31958
|
+
kind: external_exports.enum(["package", "env", "connector"]),
|
|
31954
31959
|
// 该条目在 manifest 对应数组里的内容(形状随 kind 变,handler 按 kind 收窄校验)
|
|
31955
31960
|
// connector 的 item 是 butler 报的 CLI 连接器({ name, fields? }),daemon 补齐 kind / runner / id 后落进清单;
|
|
31956
31961
|
// MCP 连接器不经这里——由 daemon 从 .mcp.json 机械列出(design 2026-09-11-mcp-connector §3.2)
|
|
@@ -34013,7 +34018,7 @@ var METHOD_DOCS = {
|
|
|
34013
34018
|
}
|
|
34014
34019
|
},
|
|
34015
34020
|
"deploy:reportFinding": {
|
|
34016
|
-
summary: "\u626B\u63CF\u4E2D\u7684 butler \u9010\u6761\u4E0A\u62A5\u4E00\u4E2A\u53D1\u73B0\
|
|
34021
|
+
summary: "\u626B\u63CF\u4E2D\u7684 butler \u9010\u6761\u4E0A\u62A5\u4E00\u4E2A\u53D1\u73B0\uFF08package / env / connector\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\u3002\u53EA\u56DE\u626B\u63CF\u5386\u53F2 `scans`\uFF08\u540C deploy:patch\uFF09\uFF0C\u4E0D\u56DE\u6574\u4EFD\u72B6\u6001\uFF1Bowner-only\u2014\u2014butler \u4F1A\u8BDD\u672C\u8EAB\u8DD1\u5728 owner \u6A21\u5F0F",
|
|
34017
34022
|
args: DeployReportFindingArgsSchema
|
|
34018
34023
|
},
|
|
34019
34024
|
"deploy:finishScan": {
|
package/dist/persona-defaults/persona-clawd-butler/.claude/skills/scan-persona-for-deploy/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: scan-persona-for-deploy
|
|
3
|
-
description: 老板要把某个 persona 发布到云上时触发——把这个 persona
|
|
3
|
+
description: 老板要把某个 persona 发布到云上时触发——把这个 persona 读一遍,弄清它挪到一台干净的云上机器要预备什么(镜像里要装的东西、连接器、环境变量),边查边填进这次扫描的清单。收到形如「扫描 persona-xxx 的部署环境,personaId=persona-xxx,scanId=xxxx」的任务时使用。只负责扫,不负责部署。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 扫 persona 的上云环境
|
|
@@ -25,8 +25,8 @@ description: 老板要把某个 persona 发布到云上时触发——把这个
|
|
|
25
25
|
git diff --name-only <任务里给的 sha> -- .
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
拿到的就是要重看的文件——**这是已跟踪内容与给定 commit 的差异入口;未跟踪文件、外部依赖和运行配置不在此命令覆盖内**。清单里其余的 `
|
|
29
|
-
|
|
28
|
+
拿到的就是要重看的文件——**这是已跟踪内容与给定 commit 的差异入口;未跟踪文件、外部依赖和运行配置不在此命令覆盖内**。清单里其余的 `env` / `connector`
|
|
29
|
+
条目原样有效,不用重报:重报没变的东西不但白花时间,还会让本来稳定的字段(比如环境变量的命名引用)无谓地变来变去。
|
|
30
30
|
`package` 条目同理,只是多了一道 daemon 的预检,见下一节。
|
|
31
31
|
|
|
32
32
|
### 软扫里的 package:只重报任务点名的
|
|
@@ -96,7 +96,7 @@ daemon 只比本机版本和资产是否钉全,看不见别的:如果 diff
|
|
|
96
96
|
```
|
|
97
97
|
call({ method: "deploy:reportFinding", args: {
|
|
98
98
|
personaId: "<任务里给的>",
|
|
99
|
-
kind: "package" | "
|
|
99
|
+
kind: "package" | "env" | "connector",
|
|
100
100
|
item: { ... }, // 见下面各类的字段
|
|
101
101
|
evidence: { reason: "...", file: "...", quote: "..." }
|
|
102
102
|
}})
|
|
@@ -168,17 +168,20 @@ Debian 13 没有这个包也照样记下(页面显示「云上装不了」)
|
|
|
168
168
|
- `from` 写 `npm:<完整包名>`(`npm:@aliyun-rds/supabase-mcp-server`)。
|
|
169
169
|
- `evidence.quote` 引 `.mcp.json` 里那两行 `"command": "npx"` / `"args": [...]` 就够。
|
|
170
170
|
|
|
171
|
-
### kind: "
|
|
171
|
+
### kind: "env" —— 脚本 / 应用直接读的环境变量
|
|
172
172
|
|
|
173
|
-
`
|
|
173
|
+
不属于任何连接器、persona 自己的脚本或应用从环境里直接读的值(比如 `publish.sh` 读的 AK、
|
|
174
|
+
测试脚本读的 API key)。云上和本机都会把它交进 agent 的 shell 环境。
|
|
174
175
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
`item` 字段:`name`(命名引用,短横线小写)、`env`(字符串数组,要设哪些环境变量;名字只能是大写字母、数字、下划线)。
|
|
177
|
+
|
|
178
|
+
- 一组值含多个变量就都列进 `env`(AK 是 id+secret 两个)
|
|
179
|
+
- **绝对不要把值写进来**,哪怕你在文件里看到了明文的 key。你只报告「这里需要这几个环境变量」,
|
|
180
|
+
值由老板另外填进仓库的 GitHub Secrets。看到明文 key 也不要复述它的内容。
|
|
181
|
+
- **不要判断该谁出**。环境变量全部由部署者提供,清单只说需要什么。
|
|
182
|
+
- **连接器的凭据不报 `env`**:`.mcp.json` 里 `${VAR}` 占位由 daemon 机械列进连接器的字段;CLI 连接器的
|
|
183
|
+
变量报在 `connector` 的 `fields` 里。同一个变量名不能既是环境变量又是连接器字段(发布闸会拦)。
|
|
184
|
+
若某个 MCP 占位的变量同时被脚本直接读,不要报 `env`,写一条 note 说明,交老板定。
|
|
182
185
|
|
|
183
186
|
### kind: "connector" —— persona 要连的第三方(只报 CLI 那种)
|
|
184
187
|
|
|
@@ -198,8 +201,8 @@ Debian 13 没有这个包也照样记下(页面显示「云上装不了」)
|
|
|
198
201
|
|
|
199
202
|
谁出凭据(部署者出一份共用 / 每个使用者各自一份)**不由你判**,老板在单据上点。
|
|
200
203
|
|
|
201
|
-
- 跟 `
|
|
202
|
-
报了 `connector: feishu` 就**不要**再给飞书报一条 `
|
|
204
|
+
- 跟 `env` 的区别:`env` 是脚本 / 应用直接读的值;`connector` 是「某个工具要用谁的身份」,它的变量写在 `fields` 里。
|
|
205
|
+
报了 `connector: feishu` 就**不要**再给飞书报一条 `env`。
|
|
203
206
|
- 跟 `package` 的区别:`lark-cli` 在底座镜像里,不用报 `package`;`gh` / `railway` 这类不在底座里的,
|
|
204
207
|
**既要报 `package`(怎么装)也要报 `connector`(凭据从哪个变量来)**,两条各管一件事。
|
|
205
208
|
- `evidence.quote` 引 skill 里那条命令行就够。
|
|
@@ -243,7 +246,7 @@ Debian 13 没有这个包也照样记下(页面显示「云上装不了」)
|
|
|
243
246
|
call({ method: "deploy:patch", args: {
|
|
244
247
|
personaId: "<任务里给的>",
|
|
245
248
|
scanId: "<任务里给的>",
|
|
246
|
-
patch: { manifest: { version: 1, packages: [...],
|
|
249
|
+
patch: { manifest: { version: 1, packages: [...], envVars: [...], connectors: [...] } }
|
|
247
250
|
}})
|
|
248
251
|
```
|
|
249
252
|
|
|
@@ -271,7 +274,7 @@ call({ method: "deploy:finishScan", args: {
|
|
|
271
274
|
|
|
272
275
|
1. **不做就不行**:不解决,persona 在云上跑不起来或核心动作是断的。「可能不太顺」「建议优化」不算。
|
|
273
276
|
2. **只有老板能做**:要他改 persona、换一个服务、去别处申请点什么。**你自己能查清的先查清**——读文件、
|
|
274
|
-
看 `--help`、上网查,查完要么进清单(package /
|
|
277
|
+
看 `--help`、上网查,查完要么进清单(package / env / connector 各有位置),要么没事,都不是 note。
|
|
275
278
|
3. **确定,不是猜**:你真读到了、真查到了。带「如果 / 可能 / 大概率」的句子写不出来就对了——拿不准就去查,
|
|
276
279
|
查不清的核心依赖要明确记录为未确认,说明查过什么和缺什么证据,不将它当作已验证项。
|
|
277
280
|
|
|
@@ -31378,12 +31378,6 @@ var EnvPackageSchema = external_exports.object({
|
|
|
31378
31378
|
*/
|
|
31379
31379
|
aptVersion: external_exports.string().optional()
|
|
31380
31380
|
});
|
|
31381
|
-
var EnvSecretSchema = external_exports.object({
|
|
31382
|
-
name: external_exports.string().min(1),
|
|
31383
|
-
// 解析出的值注入到哪些环境变量。一份凭据可含多个字段(AK 是 id+secret 两个,
|
|
31384
|
-
// supabase 是 url/anon/service-role/jwt 四个),所以是数组不是单值。
|
|
31385
|
-
env: external_exports.array(external_exports.string().min(1)).min(1)
|
|
31386
|
-
});
|
|
31387
31381
|
var ConnectorNameSchema = external_exports.string().regex(/^[a-z0-9-]+$/, "\u8FDE\u63A5\u5668\u540D\u53EA\u80FD\u662F\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u77ED\u6A2A\u7EBF");
|
|
31388
31382
|
var CONNECTOR_KINDS = ["proxy", "env"];
|
|
31389
31383
|
var CONNECTOR_RUNNERS = ["mcp", "cli"];
|
|
@@ -31391,6 +31385,10 @@ var CONNECTOR_PROTOCOLS = ["bearer", "lark-sidecar"];
|
|
|
31391
31385
|
var CREDENTIAL_SOURCES = ["none", "shared", "personal"];
|
|
31392
31386
|
var CONNECTOR_AUTHS = ["oauth", "fields"];
|
|
31393
31387
|
var ConnectorFieldSchema = external_exports.string().regex(/^[A-Z][A-Z0-9_]*$/, "\u8981\u586B\u7684\u53D8\u91CF\u540D\u53EA\u80FD\u662F\u5927\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF\uFF0C\u4E14\u4EE5\u5B57\u6BCD\u5F00\u5934");
|
|
31388
|
+
var EnvVarSchema = external_exports.object({
|
|
31389
|
+
name: external_exports.string().min(1),
|
|
31390
|
+
env: external_exports.array(ConnectorFieldSchema).min(1)
|
|
31391
|
+
});
|
|
31394
31392
|
var EnvConnectorSchema = external_exports.object({
|
|
31395
31393
|
name: ConnectorNameSchema,
|
|
31396
31394
|
kind: external_exports.enum(CONNECTOR_KINDS),
|
|
@@ -31415,6 +31413,12 @@ var normalizeLegacyManifest = (v) => {
|
|
|
31415
31413
|
const { assets: _dropped, ...rest } = o;
|
|
31416
31414
|
o = rest;
|
|
31417
31415
|
}
|
|
31416
|
+
if ("secrets" in o && Array.isArray(o.secrets)) {
|
|
31417
|
+
const { secrets, ...rest } = o;
|
|
31418
|
+
const fields = new Set((Array.isArray(rest.connectors) ? rest.connectors : []).flatMap((c) => Array.isArray(c?.fields) ? c.fields : []));
|
|
31419
|
+
const legacy = secrets.map((g) => ({ ...g, env: Array.isArray(g?.env) ? g.env.filter((e) => !fields.has(e)) : g?.env })).filter((g) => !Array.isArray(g.env) || g.env.length > 0);
|
|
31420
|
+
o = { ...rest, envVars: [...Array.isArray(rest.envVars) ? rest.envVars : [], ...legacy] };
|
|
31421
|
+
}
|
|
31418
31422
|
return o;
|
|
31419
31423
|
};
|
|
31420
31424
|
var PublisherTestSchema = external_exports.object({
|
|
@@ -31426,12 +31430,13 @@ var PublisherTestSchema = external_exports.object({
|
|
|
31426
31430
|
var MANIFEST_BODY = {
|
|
31427
31431
|
test: PublisherTestSchema.optional(),
|
|
31428
31432
|
packages: external_exports.array(EnvPackageSchema),
|
|
31429
|
-
|
|
31433
|
+
/** 环境变量(见 `EnvVarSchema`)。缺省空:没声明就是没有。 */
|
|
31434
|
+
envVars: external_exports.array(EnvVarSchema).default([]),
|
|
31430
31435
|
/**
|
|
31431
31436
|
* 装了哪些连接器(design 2026-09-11-mcp-connector §3.1)。一条一个对象,形状见 `EnvConnectorSchema`。
|
|
31432
31437
|
*
|
|
31433
|
-
*
|
|
31434
|
-
* 三种来源里只有「共享」才落到 Secrets,而且靠 `sharedConnectorSecrets`
|
|
31438
|
+
* 凭据归连接器自己(`fields`),不进 envVars:谁出是单据上点出来的,
|
|
31439
|
+
* 三种来源里只有「共享」才落到 Secrets,而且靠 `sharedConnectorSecrets` 在消费处并入。
|
|
31435
31440
|
*
|
|
31436
31441
|
* **缺省空而不是必填**:本机上已有的单据不用为此重扫一遍;没声明就是没装。
|
|
31437
31442
|
*/
|
|
@@ -31445,7 +31450,7 @@ var EnvironmentManifestSchema = external_exports.preprocess(normalizeLegacyManif
|
|
|
31445
31450
|
...MANIFEST_BODY
|
|
31446
31451
|
}).strict());
|
|
31447
31452
|
var EnvEvidenceSchema = external_exports.object({
|
|
31448
|
-
// 这条证据支持的是哪一项:`${kind}:${name}`,如 'package:aliyun' / '
|
|
31453
|
+
// 这条证据支持的是哪一项:`${kind}:${name}`,如 'package:aliyun' / 'env:aliyun-ak' / 'connector:feishu'
|
|
31449
31454
|
target: external_exports.string().min(1),
|
|
31450
31455
|
reason: external_exports.string().min(1),
|
|
31451
31456
|
file: external_exports.string().min(1),
|
|
@@ -31950,7 +31955,7 @@ var DeployRerunJobArgsSchema = external_exports.object({
|
|
|
31950
31955
|
}).strict();
|
|
31951
31956
|
var DeployReportFindingArgsSchema = external_exports.object({
|
|
31952
31957
|
personaId: external_exports.string().min(1),
|
|
31953
|
-
kind: external_exports.enum(["package", "
|
|
31958
|
+
kind: external_exports.enum(["package", "env", "connector"]),
|
|
31954
31959
|
// 该条目在 manifest 对应数组里的内容(形状随 kind 变,handler 按 kind 收窄校验)
|
|
31955
31960
|
// connector 的 item 是 butler 报的 CLI 连接器({ name, fields? }),daemon 补齐 kind / runner / id 后落进清单;
|
|
31956
31961
|
// MCP 连接器不经这里——由 daemon 从 .mcp.json 机械列出(design 2026-09-11-mcp-connector §3.2)
|
|
@@ -34013,7 +34018,7 @@ var METHOD_DOCS = {
|
|
|
34013
34018
|
}
|
|
34014
34019
|
},
|
|
34015
34020
|
"deploy:reportFinding": {
|
|
34016
|
-
summary: "\u626B\u63CF\u4E2D\u7684 butler \u9010\u6761\u4E0A\u62A5\u4E00\u4E2A\u53D1\u73B0\
|
|
34021
|
+
summary: "\u626B\u63CF\u4E2D\u7684 butler \u9010\u6761\u4E0A\u62A5\u4E00\u4E2A\u53D1\u73B0\uFF08package / env / connector\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\u3002\u53EA\u56DE\u626B\u63CF\u5386\u53F2 `scans`\uFF08\u540C deploy:patch\uFF09\uFF0C\u4E0D\u56DE\u6574\u4EFD\u72B6\u6001\uFF1Bowner-only\u2014\u2014butler \u4F1A\u8BDD\u672C\u8EAB\u8DD1\u5728 owner \u6A21\u5F0F",
|
|
34017
34022
|
args: DeployReportFindingArgsSchema
|
|
34018
34023
|
},
|
|
34019
34024
|
"deploy:finishScan": {
|
package/dist/secrets/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
每个 `<name>.env.example` 是一条**命名凭据**的占位模板,`name` 对齐环境清单
|
|
4
4
|
(`EnvironmentManifest.secrets[].name`)。daemon 在 spawn 时把凭据表合成一张
|
|
5
5
|
`Record<envName, value>`,只交给**真正用它的那个子进程**(MCP server / deploy-kit 发布脚本),
|
|
6
|
-
agent 主进程 env
|
|
6
|
+
agent 主进程 env 只放 persona 清单 `envVars` 声明过的那几个名字(`../persona/persona-env-vars.ts`,与云上同构),其余一条都不放。读法与合并顺序见 `../deploy/secret-table.ts`。
|
|
7
7
|
|
|
8
8
|
## 这里不放值:clawd 不随包 ship 任何凭据
|
|
9
9
|
|