@clawos-dev/clawd 0.2.725 → 0.2.727

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.
@@ -31573,6 +31573,8 @@ var PersonaFileSchema = external_exports.object({
31573
31573
  gatewayUrl: external_exports.string().min(1),
31574
31574
  personaId: external_exports.string().min(1),
31575
31575
  publishedByMe: external_exports.boolean().optional(),
31576
+ /** Display name (persona.json label) registered on the gateway; the row's top-level label stays the gateway id. */
31577
+ label: external_exports.string().optional(),
31576
31578
  environment: DeployEnvironmentSchema.optional(),
31577
31579
  expectedImage: ImageDigestSchema.optional(),
31578
31580
  testReleaseId: external_exports.string().optional()
package/dist/cli.cjs CHANGED
@@ -6482,6 +6482,8 @@ var init_persona_schemas = __esm({
6482
6482
  gatewayUrl: external_exports.string().min(1),
6483
6483
  personaId: external_exports.string().min(1),
6484
6484
  publishedByMe: external_exports.boolean().optional(),
6485
+ /** Display name (persona.json label) registered on the gateway; the row's top-level label stays the gateway id. */
6486
+ label: external_exports.string().optional(),
6485
6487
  environment: DeployEnvironmentSchema.optional(),
6486
6488
  expectedImage: ImageDigestSchema.optional(),
6487
6489
  testReleaseId: external_exports.string().optional()
@@ -6650,7 +6652,7 @@ function changedConfigKeys(a2, b3) {
6650
6652
  function repoSlug(url) {
6651
6653
  return url.trim().replace(/^git@[^:]+:/, "").replace(/^https?:\/\/[^/]+\//, "").replace(/\.git$/, "");
6652
6654
  }
6653
- var DeployFileSchema, SCAN_BASE_KINDS, ScanBaseKindSchema, DeployScanStatusSchema, DeployScanSchema, DeployReleasedSchema, DEPLOY_PROMOTION_PHASES, DeployPromotionSchema, DeployEngineChannelSchema, DeployEngineChannelsSchema, DeployScanFileSchema, DeployRepoSchema, DeploySecretPresenceSchema, ENGINE_AUTH_SECRETS, ENGINE_AUTH_PARTIAL_BLOCKER, DEPLOY_STAGE_STATUSES, DeployStageStatusSchema, DEPLOY_VERIFY_STAGE, DEPLOY_STAGE_KEYS, DeployStageKeySchema, DeployJobSchema, DeployRunSchema, CLOUD_ENGINES, DeployUnpublishRunSchema, ReservationStateSchema, DeployCloudStatusSchema, DeployStateSchema, DeployUnpublishResultSchema, DeployLocalStateSchema, DeployPatchResultSchema, DeploySecretsResultSchema, DEPLOY_WORKFLOW_VERSION, workflowVersionForConfigKeys, DEFAULT_TASK_CONCURRENCY, CONFIG_KEYS, DeployReleaseResultSchema, DeployPersonaArgsSchema, DeployGetArgsSchema, DeployScanArgsSchema, DeployReleaseArgsSchema, DeployConfirmTestArgsSchema, DeployPromoteArgsSchema, DeployApplyConfigArgsSchema, DeployOpenTestArgsSchema, DeployEnvironmentArgsSchema, DeployConfirmTestResultSchema, DeployPromoteResultSchema, DeployOpenTestResultSchema, DeployPatchArgsSchema, DeployPutSecretArgsSchema, DeploySetEngineAuthArgsSchema, DeployRerunJobArgsSchema, DeployReportFindingArgsSchema, DeployFinishScanArgsSchema, PERSONA_REPO_ORG;
6655
+ var DeployFileSchema, SCAN_BASE_KINDS, ScanBaseKindSchema, DeployScanStatusSchema, DeployScanSchema, DeployReleasedSchema, DEPLOY_PROMOTION_PHASES, DeployPromotionSchema, DeployEngineChannelSchema, DeployEngineChannelsSchema, DeployScanFileSchema, DeployRepoSchema, DeploySecretPresenceSchema, ENGINE_AUTH_SECRETS, ENGINE_AUTH_PARTIAL_BLOCKER, DEPLOY_STAGE_STATUSES, DeployStageStatusSchema, DEPLOY_VERIFY_STAGE, DEPLOY_STAGE_KEYS, DeployStageKeySchema, DeployJobSchema, DeployRunSchema, CLOUD_ENGINES, DeployUnpublishRunSchema, ReservationStateSchema, DeployCloudStatusSchema, DeployStateSchema, DeployUnpublishResultSchema, DeployLocalStateSchema, DeployPatchResultSchema, DeploySecretsResultSchema, DEPLOY_WORKFLOW_VERSION, workflowVersionForConfigKeys, DEFAULT_TASK_CONCURRENCY, CONFIG_KEYS, DeployReleaseResultSchema, DeployPersonaArgsSchema, DeployGetArgsSchema, DeployScanArgsSchema, DeployReleaseArgsSchema, DeployConfirmTestArgsSchema, DeployPromoteArgsSchema, DeployApplyConfigArgsSchema, DeployOpenTestArgsSchema, DeployEnvironmentArgsSchema, DeployConfirmTestResultSchema, DeployPromoteResultSchema, DeployOpenTestResultSchema, DeployPatchArgsSchema, DeployPutSecretArgsSchema, DeploySetEngineAuthArgsSchema, DeployRerunJobArgsSchema, DEPLOY_STALE_BASE_ERROR, DeployReportFindingArgsSchema, DeployFinishScanArgsSchema, PERSONA_REPO_ORG;
6654
6656
  var init_deploy_schemas = __esm({
6655
6657
  "../protocol/src/deploy-schemas.ts"() {
6656
6658
  "use strict";
@@ -6929,6 +6931,7 @@ var init_deploy_schemas = __esm({
6929
6931
  releaseId: external_exports.string().optional(),
6930
6932
  jobId: external_exports.number()
6931
6933
  }).strict();
6934
+ DEPLOY_STALE_BASE_ERROR = "\u5E95\u5EA7\u5DF2\u66F4\u65B0\uFF0C\u91CD\u8BD5\u4ECD\u4F1A\u7528\u65E7\u5E95\u5EA7\u6784\u5EFA\u2014\u2014\u8BF7\u91CD\u65B0\u53D1\u5E03\u6D4B\u8BD5\u73AF\u5883";
6932
6935
  DeployReportFindingArgsSchema = external_exports.object({
6933
6936
  personaId: external_exports.string().min(1),
6934
6937
  kind: external_exports.enum(["package", "secret", "connector"]),
@@ -58315,7 +58318,7 @@ function cloudPersonaToFile(p3, publishedByMe = false) {
58315
58318
  public: false,
58316
58319
  createdAt: at3,
58317
58320
  updatedAt: at3,
58318
- cloud: { gatewayUrl: p3.gatewayUrl, personaId: p3.personaId, ...publishedByMe ? { publishedByMe: true } : {} }
58321
+ cloud: { gatewayUrl: p3.gatewayUrl, personaId: p3.personaId, ...publishedByMe ? { publishedByMe: true } : {}, ...p3.label ? { label: p3.label } : {} }
58319
58322
  };
58320
58323
  }
58321
58324
  var CloudGatewayClient = class {
@@ -58362,6 +58365,7 @@ var CloudGatewayClient = class {
58362
58365
  personaId: d2.personaId,
58363
58366
  gatewayUrl,
58364
58367
  engine: d2.engine,
58368
+ ...typeof d2.label === "string" && d2.label ? { label: d2.label } : {},
58365
58369
  ...typeof d2.image === "string" ? { image: d2.image } : {},
58366
58370
  ...typeof d2.model === "string" && d2.model ? { model: d2.model } : {},
58367
58371
  ...typeof d2.effort === "string" && d2.effort ? { effort: d2.effort } : {},
@@ -62837,6 +62841,14 @@ async function readCurrentBase(api) {
62837
62841
  if (release2.source.cloudHost !== source.cloudHost || release2.source.workflow !== source.workflow) throw new Error("\u5E95\u5EA7\u5236\u54C1\u6E90\u7801\u7248\u672C\u4E0E\u6784\u5EFA\u63D0\u4EA4\u4E0D\u5339\u914D\uFF0C\u8BF7\u91CD\u65B0\u8FD0\u884C\u5E95\u5EA7\u6D41\u6C34\u7EBF");
62838
62842
  return release2;
62839
62843
  }
62844
+ var publicBaseImage = (image) => image.replace("registry-vpc.cn-hangzhou.aliyuncs.com/", "registry.cn-hangzhou.aliyuncs.com/");
62845
+ async function pinnedBaseStale(api, slug, sha) {
62846
+ const file = await api.getJson(`/repos/${slug}/contents/.clawd/base-image.txt?ref=${sha}`);
62847
+ if (file?.type !== "file" || file.encoding !== "base64" || typeof file.content !== "string") return false;
62848
+ const pinned = Buffer.from(file.content, "base64").toString("utf8").trim();
62849
+ const current = await readCurrentBase(api).catch(() => void 0);
62850
+ return !!current && publicBaseImage(pinned) !== publicBaseImage(current.image);
62851
+ }
62840
62852
 
62841
62853
  // src/deploy/release-workflow.ts
62842
62854
  init_protocol();
@@ -63426,7 +63438,7 @@ async function writeWorkflow(dir) {
63426
63438
  }
63427
63439
  }
63428
63440
  async function writeDockerfile(dir, personaId2, image) {
63429
- const baseImage = image.replace("registry-vpc.cn-hangzhou.aliyuncs.com/", "registry.cn-hangzhou.aliyuncs.com/");
63441
+ const baseImage = publicBaseImage(image);
63430
63442
  await import_promises5.default.mkdir(import_node_path44.default.join(dir, ".clawd"), { recursive: true });
63431
63443
  await import_promises5.default.writeFile(import_node_path44.default.join(dir, ".clawd", "base-image.txt"), `${baseImage}
63432
63444
  `);
@@ -64922,9 +64934,13 @@ function buildDeployHandlers(deps) {
64922
64934
  const promotion = environment === "production" ? file.promotions.at(-1) : void 0;
64923
64935
  const run = record4?.legacy ? await runByHead(api, slug, record4.head) : record4 ? await findReleaseRun(api, slug, { environment, head: record4.head, promotionId: promotion?.id }) : void 0;
64924
64936
  if (!run) throw invalid("\u67E5\u4E0D\u5230\u8FD9\u4E2A\u4ED3\u5E93\u4E0A\u7684\u6D41\u6C34\u7EBF\uFF08GitHub \u6CA1\u54CD\u5E94\uFF0C\u6216\u8005\u8FD8\u6CA1\u8DD1\u8FC7\uFF09");
64925
- if (!run.jobs.some((j2) => j2.jobId === jobId)) {
64937
+ const job = run.jobs.find((j2) => j2.jobId === jobId);
64938
+ if (!job) {
64926
64939
  throw invalid("\u8FD9\u4E00\u6BB5\u4E0D\u5728\u6700\u65B0\u90A3\u6761\u6D41\u6C34\u7EBF\u91CC\u4E86\uFF0C\u5237\u65B0\u4E00\u4E0B\u518D\u91CD\u8BD5");
64927
64940
  }
64941
+ if (environment === "integration" && job.key === "build") {
64942
+ if (await pinnedBaseStale(api, slug, run.headSha)) throw invalid(DEPLOY_STALE_BASE_ERROR);
64943
+ }
64928
64944
  try {
64929
64945
  if (record4?.environment === "integration") {
64930
64946
  await configureTestIdentity(api, slug);
@@ -76145,7 +76161,7 @@ function computeMethodAccess(args) {
76145
76161
  }
76146
76162
 
76147
76163
  // src/version.ts
76148
- var version = "0.2.725".length > 0 ? "0.2.725" : "dev";
76164
+ var version = "0.2.727".length > 0 ? "0.2.727" : "dev";
76149
76165
 
76150
76166
  // src/cli-probe/probe.ts
76151
76167
  var fs87 = __toESM(require("fs"), 1);