@clawos-dev/clawd 0.2.731 → 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.
@@ -21456,12 +21456,6 @@ var EnvPackageSchema = external_exports.object({
21456
21456
  */
21457
21457
  aptVersion: external_exports.string().optional()
21458
21458
  });
21459
- var EnvSecretSchema = external_exports.object({
21460
- name: external_exports.string().min(1),
21461
- // 解析出的值注入到哪些环境变量。一份凭据可含多个字段(AK 是 id+secret 两个,
21462
- // supabase 是 url/anon/service-role/jwt 四个),所以是数组不是单值。
21463
- env: external_exports.array(external_exports.string().min(1)).min(1)
21464
- });
21465
21459
  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");
21466
21460
  var CONNECTOR_KINDS = ["proxy", "env"];
21467
21461
  var CONNECTOR_RUNNERS = ["mcp", "cli"];
@@ -21469,6 +21463,10 @@ var CONNECTOR_PROTOCOLS = ["bearer", "lark-sidecar"];
21469
21463
  var CREDENTIAL_SOURCES = ["none", "shared", "personal"];
21470
21464
  var CONNECTOR_AUTHS = ["oauth", "fields"];
21471
21465
  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");
21466
+ var EnvVarSchema = external_exports.object({
21467
+ name: external_exports.string().min(1),
21468
+ env: external_exports.array(ConnectorFieldSchema).min(1)
21469
+ });
21472
21470
  var EnvConnectorSchema = external_exports.object({
21473
21471
  name: ConnectorNameSchema,
21474
21472
  kind: external_exports.enum(CONNECTOR_KINDS),
@@ -21493,6 +21491,12 @@ var normalizeLegacyManifest = (v) => {
21493
21491
  const { assets: _dropped, ...rest } = o;
21494
21492
  o = rest;
21495
21493
  }
21494
+ if ("secrets" in o && Array.isArray(o.secrets)) {
21495
+ const { secrets, ...rest } = o;
21496
+ const fields = new Set((Array.isArray(rest.connectors) ? rest.connectors : []).flatMap((c) => Array.isArray(c?.fields) ? c.fields : []));
21497
+ 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);
21498
+ o = { ...rest, envVars: [...Array.isArray(rest.envVars) ? rest.envVars : [], ...legacy] };
21499
+ }
21496
21500
  return o;
21497
21501
  };
21498
21502
  var PublisherTestSchema = external_exports.object({
@@ -21504,12 +21508,13 @@ var PublisherTestSchema = external_exports.object({
21504
21508
  var MANIFEST_BODY = {
21505
21509
  test: PublisherTestSchema.optional(),
21506
21510
  packages: external_exports.array(EnvPackageSchema),
21507
- secrets: external_exports.array(EnvSecretSchema),
21511
+ /** 环境变量(见 `EnvVarSchema`)。缺省空:没声明就是没有。 */
21512
+ envVars: external_exports.array(EnvVarSchema).default([]),
21508
21513
  /**
21509
21514
  * 装了哪些连接器(design 2026-09-11-mcp-connector §3.1)。一条一个对象,形状见 `EnvConnectorSchema`。
21510
21515
  *
21511
- * 不复用 secrets:那段说的是「需要一份值,由部署者填」;连接器的凭据谁出是单据上点出来的,
21512
- * 三种来源里只有「共享」才落到 Secrets,而且靠 `sharedConnectorSecrets` 在消费处并入,不写进那段。
21516
+ * 凭据归连接器自己(`fields`),不进 envVars:谁出是单据上点出来的,
21517
+ * 三种来源里只有「共享」才落到 Secrets,而且靠 `sharedConnectorSecrets` 在消费处并入。
21513
21518
  *
21514
21519
  * **缺省空而不是必填**:本机上已有的单据不用为此重扫一遍;没声明就是没装。
21515
21520
  */
@@ -21523,7 +21528,7 @@ var EnvironmentManifestSchema = external_exports.preprocess(normalizeLegacyManif
21523
21528
  ...MANIFEST_BODY
21524
21529
  }).strict());
21525
21530
  var EnvEvidenceSchema = external_exports.object({
21526
- // 这条证据支持的是哪一项:`${kind}:${name}`,如 'package:aliyun' / 'secret:aliyun-ak' / 'connector:feishu'
21531
+ // 这条证据支持的是哪一项:`${kind}:${name}`,如 'package:aliyun' / 'env:aliyun-ak' / 'connector:feishu'
21527
21532
  target: external_exports.string().min(1),
21528
21533
  reason: external_exports.string().min(1),
21529
21534
  file: external_exports.string().min(1),
@@ -22028,7 +22033,7 @@ var DeployRerunJobArgsSchema = external_exports.object({
22028
22033
  }).strict();
22029
22034
  var DeployReportFindingArgsSchema = external_exports.object({
22030
22035
  personaId: external_exports.string().min(1),
22031
- kind: external_exports.enum(["package", "secret", "connector"]),
22036
+ kind: external_exports.enum(["package", "env", "connector"]),
22032
22037
  // 该条目在 manifest 对应数组里的内容(形状随 kind 变,handler 按 kind 收窄校验)
22033
22038
  // connector 的 item 是 butler 报的 CLI 连接器({ name, fields? }),daemon 补齐 kind / runner / id 后落进清单;
22034
22039
  // MCP 连接器不经这里——由 daemon 从 .mcp.json 机械列出(design 2026-09-11-mcp-connector §3.2)
@@ -24091,7 +24096,7 @@ var METHOD_DOCS = {
24091
24096
  }
24092
24097
  },
24093
24098
  "deploy:reportFinding": {
24094
- 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\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",
24099
+ 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",
24095
24100
  args: DeployReportFindingArgsSchema
24096
24101
  },
24097
24102
  "deploy:finishScan": {