@clawos-dev/clawd 0.2.723 → 0.2.725

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.
@@ -31785,7 +31785,9 @@ var DeployJobSchema = external_exports.object({
31785
31785
  /** GitHub 的 job databaseId,`gh run rerun --job` 要用。还没跑起来的段没有 */
31786
31786
  jobId: external_exports.number().optional(),
31787
31787
  startedAt: external_exports.number().optional(),
31788
- completedAt: external_exports.number().optional()
31788
+ completedAt: external_exports.number().optional(),
31789
+ /** 只有 build 段:构建期 CLI 校验没过、只报警没拦的条目(一条一句) */
31790
+ cliWarnings: external_exports.array(external_exports.string()).optional()
31789
31791
  }).strict();
31790
31792
  var DeployRunSchema = external_exports.object({
31791
31793
  runId: external_exports.number(),
package/dist/cli.cjs CHANGED
@@ -6763,7 +6763,9 @@ var init_deploy_schemas = __esm({
6763
6763
  /** GitHub 的 job databaseId,`gh run rerun --job` 要用。还没跑起来的段没有 */
6764
6764
  jobId: external_exports.number().optional(),
6765
6765
  startedAt: external_exports.number().optional(),
6766
- completedAt: external_exports.number().optional()
6766
+ completedAt: external_exports.number().optional(),
6767
+ /** 只有 build 段:构建期 CLI 校验没过、只报警没拦的条目(一条一句) */
6768
+ cliWarnings: external_exports.array(external_exports.string()).optional()
6767
6769
  }).strict();
6768
6770
  DeployRunSchema = external_exports.object({
6769
6771
  runId: external_exports.number(),
@@ -54757,6 +54759,7 @@ function codexMcpCliArgs(defs) {
54757
54759
  ...d2.args && d2.args.length > 0 ? { args: d2.args } : {},
54758
54760
  ...d2.env && Object.keys(d2.env).length > 0 ? { env: d2.env } : {}
54759
54761
  };
54762
+ if (d2.daemonOwned) cfg.default_tools_approval_mode = "approve";
54760
54763
  const key = /^[A-Za-z0-9_-]+$/.test(d2.name) ? d2.name : JSON.stringify(d2.name);
54761
54764
  out.push("-c", `mcp_servers.${key}=${tomlValue(cfg)}`);
54762
54765
  }
@@ -55000,7 +55003,9 @@ function loadMcpServerDefs(args) {
55000
55003
  const out = [];
55001
55004
  const seen = /* @__PURE__ */ new Set();
55002
55005
  const sources = [...args.mcpConfigPaths, import_node_path25.default.join(args.cwd, ".mcp.json")];
55006
+ const daemonOwned = new Set(args.daemonOwnedPaths ?? []);
55003
55007
  for (const file of sources) {
55008
+ const owned = daemonOwned.has(file) ? { daemonOwned: true } : {};
55004
55009
  let parsed;
55005
55010
  try {
55006
55011
  parsed = JSON.parse(import_node_fs26.default.readFileSync(file, "utf8"));
@@ -55032,7 +55037,8 @@ function loadMcpServerDefs(args) {
55032
55037
  name,
55033
55038
  url: def.url,
55034
55039
  ...Object.keys(headers).length > 0 ? { httpHeaders: headers } : {},
55035
- ...bearerTokenEnvVar ? { bearerTokenEnvVar } : {}
55040
+ ...bearerTokenEnvVar ? { bearerTokenEnvVar } : {},
55041
+ ...owned
55036
55042
  });
55037
55043
  continue;
55038
55044
  }
@@ -55059,7 +55065,8 @@ function loadMcpServerDefs(args) {
55059
55065
  name,
55060
55066
  command: def.command,
55061
55067
  ...Array.isArray(def.args) && def.args.every((a2) => typeof a2 === "string") ? { args: def.args } : {},
55062
- ...Object.keys(env).length > 0 ? { env } : {}
55068
+ ...Object.keys(env).length > 0 ? { env } : {},
55069
+ ...owned
55063
55070
  });
55064
55071
  }
55065
55072
  }
@@ -55259,6 +55266,8 @@ function createCodexSession(ctx, sink, deps = {}) {
55259
55266
  ...codexMcpCliArgs(
55260
55267
  loadMcpServerDefs({
55261
55268
  mcpConfigPaths: (ctx.mcpConfigs ?? []).map((m3) => m3.path),
55269
+ // persona-secrets 是 persona 自己 .mcp.json 的渲染产物,不算 daemon 自带
55270
+ daemonOwnedPaths: (ctx.mcpConfigs ?? []).filter((m3) => !m3.id.startsWith(PERSONA_SECRET_MCP_ID_PREFIX)).map((m3) => m3.path),
55262
55271
  cwd: ctx.cwd,
55263
55272
  baseEnv: clawdEnv,
55264
55273
  logger: deps.logger
@@ -63906,6 +63915,15 @@ function packageNeedsRereport(pkg, probed) {
63906
63915
  init_protocol();
63907
63916
  var INTEGRATION_CONFIG_RUN_PREFIX = "persona-integration-config-";
63908
63917
  var runsOf = (slug, file, query) => `/repos/${slug}/actions/workflows/${encodeURIComponent(file)}/runs?${query}`;
63918
+ var CLI_WARNING_TITLE = "CLI version check";
63919
+ async function withCliWarnings(api, slug, jobs) {
63920
+ const build = jobs.find((j2) => j2.key === "build");
63921
+ if (build?.status !== "done" || build.jobId === void 0) return { jobs, read: true };
63922
+ const listed = await api.getJson(`/repos/${slug}/check-runs/${build.jobId}/annotations?per_page=100`);
63923
+ if (!Array.isArray(listed)) return { jobs, read: false };
63924
+ const warnings = listed.filter((a2) => a2?.annotation_level === "warning" && a2.title === CLI_WARNING_TITLE && typeof a2.message === "string").flatMap((a2) => String(a2.message).split("\n").filter(Boolean));
63925
+ return { jobs: warnings.length ? jobs.map((j2) => j2 === build ? { ...j2, cliWarnings: warnings } : j2) : jobs, read: true };
63926
+ }
63909
63927
  var pipelineJobKey = (name) => DEPLOY_STAGE_KEYS.find((k3) => name === k3 || name.startsWith(`${k3} `));
63910
63928
  function stageStatusOf(status, conclusion) {
63911
63929
  if (status === "queued" || status === "requested" || status === "pending") return "pending";
@@ -63994,8 +64012,9 @@ async function readPinnedRun(api, slug, raw, environment, promotionId, jobsCache
63994
64012
  if (listed.jobs.length < 100 && (listed.total_count === void 0 || page * 100 >= listed.total_count)) break;
63995
64013
  if (page === 30) return void 0;
63996
64014
  }
63997
- jobs = DEPLOY_STAGE_KEYS.map((key) => byKey.get(key)).filter((j2) => j2 !== void 0);
63998
- if (status === "completed" && jobsCache) {
64015
+ const annotated = await withCliWarnings(api, slug, DEPLOY_STAGE_KEYS.map((key) => byKey.get(key)).filter((j2) => j2 !== void 0));
64016
+ jobs = annotated.jobs;
64017
+ if (status === "completed" && jobsCache && annotated.read) {
63999
64018
  if (jobsCache.size >= COMPLETED_JOBS_CACHE_MAX) jobsCache.delete(jobsCache.keys().next().value);
64000
64019
  jobsCache.set(cacheKey, jobs);
64001
64020
  }
@@ -64034,7 +64053,7 @@ async function fetchRun(api, slug, query) {
64034
64053
  status: runStatusOf(String(raw.status ?? "")),
64035
64054
  htmlUrl: raw.html_url,
64036
64055
  // 按流水线的顺序排,不跟着 GitHub 返回的顺序走
64037
- jobs: DEPLOY_STAGE_KEYS.map((k3) => byKey.get(k3)).filter((j2) => j2 !== void 0)
64056
+ jobs: (await withCliWarnings(api, slug, DEPLOY_STAGE_KEYS.map((k3) => byKey.get(k3)).filter((j2) => j2 !== void 0))).jobs
64038
64057
  };
64039
64058
  }
64040
64059
  async function latestUnpublish(api, slug, environment) {
@@ -76126,7 +76145,7 @@ function computeMethodAccess(args) {
76126
76145
  }
76127
76146
 
76128
76147
  // src/version.ts
76129
- var version = "0.2.723".length > 0 ? "0.2.723" : "dev";
76148
+ var version = "0.2.725".length > 0 ? "0.2.725" : "dev";
76130
76149
 
76131
76150
  // src/cli-probe/probe.ts
76132
76151
  var fs87 = __toESM(require("fs"), 1);