@clawos-dev/clawd 0.2.584 → 0.2.586

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.
@@ -21507,8 +21507,8 @@ var EnvPackageSchema = external_exports.object({
21507
21507
  // 两者都缺省即完全不约束。
21508
21508
  min: external_exports.string().optional(),
21509
21509
  /**
21510
- * 没有可执行、只是个包(引擎扩展这类:pi 底座里的 cliproxyapi 扩展)。构建器只断言它装上了(npm ls),不查 PATH 上有没有 `name` 这条命令。
21511
- * 只有引擎底座清单(cloud-host/engines/<e>/manifest.json)用得到;扫描器不产它。
21510
+ * 没有可执行、只是个包(引擎扩展这类:pi 底座里的 cliproxyapi 扩展;apt 的字体包)。构建器只断言它装上了(npm 的问 npm ls,apt 的问 dpkg-query),
21511
+ * 不查 PATH 上有没有 `name` 这条命令。用在底座清单(cloud-host/engines/<e>/manifest.json、provision/manifests/common.json)里。
21512
21512
  */
21513
21513
  library: external_exports.boolean().optional(),
21514
21514
  /**
@@ -21787,6 +21787,10 @@ var DeployPutSecretArgsSchema = external_exports.object({
21787
21787
  // 环境变量名 → 值。key 必须是该 secret 声明过的 env 之一,handler 校验。
21788
21788
  values: external_exports.record(external_exports.string(), external_exports.string())
21789
21789
  }).strict();
21790
+ var DeploySetEngineAuthArgsSchema = external_exports.object({
21791
+ personaId: external_exports.string().min(1),
21792
+ auth: external_exports.object({ baseUrl: external_exports.string(), apiKey: external_exports.string() }).strict().nullable()
21793
+ }).strict();
21790
21794
  var DeployRerunJobArgsSchema = external_exports.object({
21791
21795
  personaId: external_exports.string().min(1),
21792
21796
  /** GitHub 的 job databaseId。**是数字**——字符串会在拼命令时静默出错 */
@@ -24273,9 +24277,13 @@ var METHOD_DOCS = {
24273
24277
  args: DeployPatchArgsSchema
24274
24278
  },
24275
24279
  "deploy:putSecret": {
24276
- summary: "\u628A\u4E00\u6761\u51ED\u636E\u7684\u503C\u5199\u8FDB\u4ED3\u5E93\u7684 GitHub Secrets\uFF08GitHub REST\uFF0C\u503C\u7528\u4ED3\u5E93\u516C\u94A5\u5C01\u7BB1\u540E\u4E0A\u4F20\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 scanId \u90A3\u6B21\u6E05\u5355\u91CC\u8BE5\u51ED\u636E\u58F0\u660E\u8FC7\u7684\uFF1Bowner-only",
24280
+ summary: "\u628A\u4E00\u6761\u51ED\u636E\u7684\u503C\u5199\u8FDB\u4ED3\u5E93\u7684 GitHub Secrets\uFF08GitHub REST\uFF0C\u503C\u7528\u4ED3\u5E93\u516C\u94A5\u5C01\u7BB1\u540E\u4E0A\u4F20\uFF09\u3002**\u8FD9\u662F\u6E05\u5355\u51ED\u636E\u503C\u552F\u4E00\u7684\u5165\u53E3**\uFF08\u6A21\u578B\u8BA2\u9605\u8D70 deploy:setEngineAuth\uFF09\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 scanId \u90A3\u6B21\u6E05\u5355\u91CC\u8BE5\u51ED\u636E\u58F0\u660E\u8FC7\u7684\uFF1Bowner-only",
24277
24281
  args: DeployPutSecretArgsSchema
24278
24282
  },
24283
+ "deploy:setEngineAuth": {
24284
+ summary: "\u6A21\u578B\u8BA2\u9605\uFF08\u4E91\u4E0A\u8DD1\u8FD9\u4E2A persona \u82B1\u8C01\u7684\u6A21\u578B\u989D\u5EA6\uFF09\uFF1Aauth = { baseUrl, apiKey } \u5199\u8FDB\u4ED3\u5E93 GitHub Secrets \u7684 CLAWD_ENGINE_BASE_URL / CLAWD_ENGINE_API_KEY\uFF08\u5730\u5740\u89C4\u8303\u6210 \u2026/v1\uFF09\uFF0Cnull = \u5220\u8FD9\u4E24\u6761\u3001\u6539\u56DE\u5E73\u53F0\u9ED8\u8BA4\u3002\u4E0B\u6B21\u53D1\u5E03\u751F\u6548\u3002\u540C putSecret \u7684\u7EAA\u5F8B\uFF1A\u5165\u53C2\u4E0D\u8FDB\u65E5\u5FD7\u3001\u54CD\u5E94\u4E0D\u56DE\u663E\u503C\u3001\u672C\u673A\u4E0D\u843D\u76D8\uFF1B\u56DE deploy:get \u540C\u5F62\u7684\u72B6\u6001\uFF1Bowner-only\u3001human-only",
24285
+ args: DeploySetEngineAuthArgsSchema
24286
+ },
24279
24287
  "deploy:reportFinding": {
24280
24288
  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",
24281
24289
  args: DeployReportFindingArgsSchema
package/dist/cli.cjs CHANGED
@@ -6020,6 +6020,8 @@ var init_environment_schemas = __esm({
6020
6020
  "jq",
6021
6021
  "rsync",
6022
6022
  "psql",
6023
+ "chromium",
6024
+ "fonts-wqy-microhei",
6023
6025
  "pnpm",
6024
6026
  "whiteboard-cli",
6025
6027
  "s",
@@ -6054,8 +6056,8 @@ var init_environment_schemas = __esm({
6054
6056
  // 两者都缺省即完全不约束。
6055
6057
  min: external_exports.string().optional(),
6056
6058
  /**
6057
- * 没有可执行、只是个包(引擎扩展这类:pi 底座里的 cliproxyapi 扩展)。构建器只断言它装上了(npm ls),不查 PATH 上有没有 `name` 这条命令。
6058
- * 只有引擎底座清单(cloud-host/engines/<e>/manifest.json)用得到;扫描器不产它。
6059
+ * 没有可执行、只是个包(引擎扩展这类:pi 底座里的 cliproxyapi 扩展;apt 的字体包)。构建器只断言它装上了(npm 的问 npm ls,apt 的问 dpkg-query),
6060
+ * 不查 PATH 上有没有 `name` 这条命令。用在底座清单(cloud-host/engines/<e>/manifest.json、provision/manifests/common.json)里。
6059
6061
  */
6060
6062
  library: external_exports.boolean().optional(),
6061
6063
  /**
@@ -6154,6 +6156,26 @@ var init_environment_schemas = __esm({
6154
6156
  });
6155
6157
 
6156
6158
  // ../protocol/src/deploy-schemas.ts
6159
+ function engineAuthState(secrets) {
6160
+ if (!secrets) return void 0;
6161
+ const has = (env) => secrets.some((p3) => p3.env === env && p3.setAt !== void 0);
6162
+ const n2 = [ENGINE_AUTH_SECRETS.baseUrl, ENGINE_AUTH_SECRETS.apiKey].filter(has).length;
6163
+ return n2 === 2 ? "own" : n2 === 0 ? "platform" : "partial";
6164
+ }
6165
+ function normalizeEngineBaseUrl(raw) {
6166
+ const s2 = raw.trim();
6167
+ let url;
6168
+ try {
6169
+ url = new URL(s2);
6170
+ } catch {
6171
+ throw new Error("\u8BA2\u9605\u5730\u5740\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u5F62\u5982 https://cpa.example.com");
6172
+ }
6173
+ if (url.protocol !== "http:" && url.protocol !== "https:" || !url.hostname) {
6174
+ throw new Error("\u8BA2\u9605\u5730\u5740\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u5F62\u5982 https://cpa.example.com");
6175
+ }
6176
+ const base = `${url.origin}${url.pathname}`.replace(/\/+$/, "");
6177
+ return base.endsWith("/v1") ? base : `${base}/v1`;
6178
+ }
6157
6179
  function contentHeadOf(repo2, released) {
6158
6180
  return released && repo2.head === released.head ? released.contentHead : repo2.head;
6159
6181
  }
@@ -6168,7 +6190,7 @@ function cloudEngineOk(tool) {
6168
6190
  function repoSlug(url) {
6169
6191
  return url.trim().replace(/^git@[^:]+:/, "").replace(/^https?:\/\/[^/]+\//, "").replace(/\.git$/, "");
6170
6192
  }
6171
- var DeployFileSchema, SCAN_BASE_KINDS, ScanBaseKindSchema, DeployScanStatusSchema, DeployScanSchema, DeployReleasedSchema, DeployScanFileSchema, DeployRepoSchema, DeploySecretPresenceSchema, DEPLOY_STAGE_STATUSES, DeployStageStatusSchema, DEPLOY_STAGE_KEYS, DeployStageKeySchema, DeployJobSchema, DeployRunSchema, CLOUD_ENGINES, DeployUnpublishRunSchema, DeployStateSchema, DeployUnpublishResultSchema, DeployReleaseResultSchema, DeployPersonaArgsSchema, DeployGetArgsSchema, DeployScanArgsSchema, DeployReleaseArgsSchema, DeployPatchArgsSchema, DeployPutSecretArgsSchema, DeployRerunJobArgsSchema, DeployReportFindingArgsSchema, DeployFinishScanArgsSchema, PERSONA_REPO_ORG;
6193
+ var DeployFileSchema, SCAN_BASE_KINDS, ScanBaseKindSchema, DeployScanStatusSchema, DeployScanSchema, DeployReleasedSchema, DeployScanFileSchema, DeployRepoSchema, DeploySecretPresenceSchema, ENGINE_AUTH_SECRETS, ENGINE_AUTH_PARTIAL_BLOCKER, DEPLOY_STAGE_STATUSES, DeployStageStatusSchema, DEPLOY_STAGE_KEYS, DeployStageKeySchema, DeployJobSchema, DeployRunSchema, CLOUD_ENGINES, DeployUnpublishRunSchema, DeployStateSchema, DeployUnpublishResultSchema, DeployReleaseResultSchema, DeployPersonaArgsSchema, DeployGetArgsSchema, DeployScanArgsSchema, DeployReleaseArgsSchema, DeployPatchArgsSchema, DeployPutSecretArgsSchema, DeploySetEngineAuthArgsSchema, DeployRerunJobArgsSchema, DeployReportFindingArgsSchema, DeployFinishScanArgsSchema, PERSONA_REPO_ORG;
6172
6194
  var init_deploy_schemas = __esm({
6173
6195
  "../protocol/src/deploy-schemas.ts"() {
6174
6196
  "use strict";
@@ -6253,6 +6275,8 @@ var init_deploy_schemas = __esm({
6253
6275
  env: external_exports.string().min(1),
6254
6276
  setAt: external_exports.number().optional()
6255
6277
  }).strict();
6278
+ ENGINE_AUTH_SECRETS = { baseUrl: "CLAWD_ENGINE_BASE_URL", apiKey: "CLAWD_ENGINE_API_KEY" };
6279
+ ENGINE_AUTH_PARTIAL_BLOCKER = "\u6A21\u578B\u8BA2\u9605\u53EA\u5199\u8FDB\u53BB\u4E00\u534A\u2014\u2014\u91CD\u586B\u6216\u6539\u56DE\u5E73\u53F0\u9ED8\u8BA4";
6256
6280
  DEPLOY_STAGE_STATUSES = ["pending", "running", "done", "failed", "waiting", "skipped"];
6257
6281
  DeployStageStatusSchema = external_exports.enum(DEPLOY_STAGE_STATUSES);
6258
6282
  DEPLOY_STAGE_KEYS = ["build", "smoke", "deploy"];
@@ -6358,6 +6382,10 @@ var init_deploy_schemas = __esm({
6358
6382
  // 环境变量名 → 值。key 必须是该 secret 声明过的 env 之一,handler 校验。
6359
6383
  values: external_exports.record(external_exports.string(), external_exports.string())
6360
6384
  }).strict();
6385
+ DeploySetEngineAuthArgsSchema = external_exports.object({
6386
+ personaId: external_exports.string().min(1),
6387
+ auth: external_exports.object({ baseUrl: external_exports.string(), apiKey: external_exports.string() }).strict().nullable()
6388
+ }).strict();
6361
6389
  DeployRerunJobArgsSchema = external_exports.object({
6362
6390
  personaId: external_exports.string().min(1),
6363
6391
  /** GitHub 的 job databaseId。**是数字**——字符串会在拼命令时静默出错 */
@@ -9137,9 +9165,13 @@ var init_methods = __esm({
9137
9165
  args: DeployPatchArgsSchema
9138
9166
  },
9139
9167
  "deploy:putSecret": {
9140
- summary: "\u628A\u4E00\u6761\u51ED\u636E\u7684\u503C\u5199\u8FDB\u4ED3\u5E93\u7684 GitHub Secrets\uFF08GitHub REST\uFF0C\u503C\u7528\u4ED3\u5E93\u516C\u94A5\u5C01\u7BB1\u540E\u4E0A\u4F20\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 scanId \u90A3\u6B21\u6E05\u5355\u91CC\u8BE5\u51ED\u636E\u58F0\u660E\u8FC7\u7684\uFF1Bowner-only",
9168
+ summary: "\u628A\u4E00\u6761\u51ED\u636E\u7684\u503C\u5199\u8FDB\u4ED3\u5E93\u7684 GitHub Secrets\uFF08GitHub REST\uFF0C\u503C\u7528\u4ED3\u5E93\u516C\u94A5\u5C01\u7BB1\u540E\u4E0A\u4F20\uFF09\u3002**\u8FD9\u662F\u6E05\u5355\u51ED\u636E\u503C\u552F\u4E00\u7684\u5165\u53E3**\uFF08\u6A21\u578B\u8BA2\u9605\u8D70 deploy:setEngineAuth\uFF09\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 scanId \u90A3\u6B21\u6E05\u5355\u91CC\u8BE5\u51ED\u636E\u58F0\u660E\u8FC7\u7684\uFF1Bowner-only",
9141
9169
  args: DeployPutSecretArgsSchema
9142
9170
  },
9171
+ "deploy:setEngineAuth": {
9172
+ summary: "\u6A21\u578B\u8BA2\u9605\uFF08\u4E91\u4E0A\u8DD1\u8FD9\u4E2A persona \u82B1\u8C01\u7684\u6A21\u578B\u989D\u5EA6\uFF09\uFF1Aauth = { baseUrl, apiKey } \u5199\u8FDB\u4ED3\u5E93 GitHub Secrets \u7684 CLAWD_ENGINE_BASE_URL / CLAWD_ENGINE_API_KEY\uFF08\u5730\u5740\u89C4\u8303\u6210 \u2026/v1\uFF09\uFF0Cnull = \u5220\u8FD9\u4E24\u6761\u3001\u6539\u56DE\u5E73\u53F0\u9ED8\u8BA4\u3002\u4E0B\u6B21\u53D1\u5E03\u751F\u6548\u3002\u540C putSecret \u7684\u7EAA\u5F8B\uFF1A\u5165\u53C2\u4E0D\u8FDB\u65E5\u5FD7\u3001\u54CD\u5E94\u4E0D\u56DE\u663E\u503C\u3001\u672C\u673A\u4E0D\u843D\u76D8\uFF1B\u56DE deploy:get \u540C\u5F62\u7684\u72B6\u6001\uFF1Bowner-only\u3001human-only",
9173
+ args: DeploySetEngineAuthArgsSchema
9174
+ },
9143
9175
  "deploy:reportFinding": {
9144
9176
  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",
9145
9177
  args: DeployReportFindingArgsSchema
@@ -60865,6 +60897,11 @@ function createGithubApi(args) {
60865
60897
  const encrypted_value = await seal(pk.key, value);
60866
60898
  await must("PUT", `/repos/${slug}/actions/secrets/${encodeURIComponent(name)}`, `\u5199 ${name}`, { encrypted_value, key_id: pk.key_id });
60867
60899
  },
60900
+ async deleteSecret(slug, name) {
60901
+ const r2 = await request("DELETE", `/repos/${slug}/actions/secrets/${encodeURIComponent(name)}`);
60902
+ if (r2.status === 404) return;
60903
+ if (r2.status < 200 || r2.status >= 300) throw new GithubApiError(r2.status, explain(r2.status, `\u5220 ${name}`, r2.json));
60904
+ },
60868
60905
  async listSecrets(slug) {
60869
60906
  const j2 = await must("GET", `/repos/${slug}/actions/secrets?per_page=100`, "\u67E5\u4ED3\u5E93 Secrets");
60870
60907
  const rows = Array.isArray(j2?.secrets) ? j2.secrets : [];
@@ -61430,6 +61467,15 @@ async function setSecret(exec, api, args) {
61430
61467
  throw new RepoError(err instanceof Error ? err.message : String(err));
61431
61468
  }
61432
61469
  }
61470
+ async function deleteSecret(exec, api, args) {
61471
+ const info = await repoInfo(exec, args.dir);
61472
+ if (!info) throw new RepoError("\u8FD8\u6CA1\u6709\u4ED3\u5E93\uFF0CSecrets \u6CA1\u5730\u65B9\u5220");
61473
+ try {
61474
+ await api.deleteSecret(repoSlug(info.url), args.env);
61475
+ } catch (err) {
61476
+ throw new RepoError(err instanceof Error ? err.message : String(err));
61477
+ }
61478
+ }
61433
61479
  async function listSecrets(exec, api, dir) {
61434
61480
  const info = await repoInfo(exec, dir);
61435
61481
  if (!info) return [];
@@ -61849,6 +61895,36 @@ function buildDeployHandlers(deps) {
61849
61895
  secretsCache.delete(args.personaId);
61850
61896
  return view(args.personaId);
61851
61897
  };
61898
+ const setEngineAuth = async (frame, _client, ctx) => {
61899
+ ensureOwner(ctx);
61900
+ const args = parseArgs2(DeploySetEngineAuthArgsSchema, frame, "deploy:setEngineAuth");
61901
+ const dir = mustPersona(args.personaId);
61902
+ let writes;
61903
+ if (args.auth) {
61904
+ let baseUrl;
61905
+ try {
61906
+ baseUrl = normalizeEngineBaseUrl(args.auth.baseUrl);
61907
+ } catch (err) {
61908
+ throw invalid(err instanceof Error ? err.message : String(err));
61909
+ }
61910
+ const apiKey = args.auth.apiKey.trim();
61911
+ if (!apiKey) throw invalid("key \u4E0D\u80FD\u662F\u7A7A\u7684");
61912
+ if (/[\s\p{Cc}]/u.test(apiKey)) throw invalid("key \u91CC\u4E0D\u80FD\u6709\u7A7A\u767D\u6216\u63A7\u5236\u5B57\u7B26\uFF08\u591A\u534A\u662F\u7C98\u8D34\u65F6\u5E26\u8FDB\u4E86\u6362\u884C\u6216\u7A7A\u683C\uFF09");
61913
+ writes = [[ENGINE_AUTH_SECRETS.apiKey, apiKey], [ENGINE_AUTH_SECRETS.baseUrl, baseUrl]];
61914
+ }
61915
+ const { api } = await requireGithub();
61916
+ try {
61917
+ if (writes) {
61918
+ await deleteSecret(deps.exec, api, { dir, env: ENGINE_AUTH_SECRETS.baseUrl });
61919
+ for (const [env, value] of writes) await setSecret(deps.exec, api, { dir, env, value });
61920
+ } else for (const env of [ENGINE_AUTH_SECRETS.apiKey, ENGINE_AUTH_SECRETS.baseUrl]) await deleteSecret(deps.exec, api, { dir, env });
61921
+ } catch (err) {
61922
+ throw toClawdError(err);
61923
+ } finally {
61924
+ secretsCache.delete(args.personaId);
61925
+ }
61926
+ return view(args.personaId);
61927
+ };
61852
61928
  async function settlePackage(pkg) {
61853
61929
  const localVersion = await deps.probeLocalVersion(pkg);
61854
61930
  const { artifact: reported, ...rest } = pkg;
@@ -61992,14 +62068,16 @@ function buildDeployHandlers(deps) {
61992
62068
  throw invalid(repo2.dirty ? "\u6709\u672A\u63D0\u4EA4\u7684\u6539\u52A8\uFF0C\u6E05\u5355\u662F\u6539\u52A8\u524D\u626B\u7684\u2014\u2014\u91CD\u65B0\u626B\u63CF" : "\u8FD9\u6B21\u626B\u63CF\u5BF9\u5E94\u7684\u4E0D\u662F\u5F53\u524D\u8FD9\u4E00\u7248 persona\u2014\u2014\u91CD\u65B0\u626B\u63CF");
61993
62069
  }
61994
62070
  const blockers = [];
61995
- let present;
62071
+ let secrets;
61996
62072
  try {
61997
- present = new Set((await cachedSecrets(personaId2, dir, api, true)).filter((p3) => p3.setAt).map((p3) => p3.env));
62073
+ secrets = await cachedSecrets(personaId2, dir, api, true);
61998
62074
  } catch (err) {
61999
62075
  throw toClawdError(err);
62000
62076
  }
62077
+ const present = new Set(secrets.filter((p3) => p3.setAt).map((p3) => p3.env));
62001
62078
  const missing = requiredEnvNames(entry.manifest).filter((e) => !present.has(e));
62002
62079
  if (missing.length > 0) blockers.push(`${missing.join(" / ")} \u8FD8\u6CA1\u586B`);
62080
+ if (engineAuthState(secrets) === "partial") blockers.push(ENGINE_AUTH_PARTIAL_BLOCKER);
62003
62081
  for (const c2 of entry.manifest.connectors) blockers.push(...connectorBlockers(c2));
62004
62082
  for (const p3 of entry.manifest.packages) blockers.push(...packageBlockers(p3));
62005
62083
  if (!deps.personaEngine(personaId2)?.model) {
@@ -62075,6 +62153,7 @@ function buildDeployHandlers(deps) {
62075
62153
  "deploy:scan": scanHandler,
62076
62154
  "deploy:patch": patch,
62077
62155
  "deploy:putSecret": putSecret,
62156
+ "deploy:setEngineAuth": setEngineAuth,
62078
62157
  "deploy:reportFinding": reportFinding,
62079
62158
  "deploy:finishScan": finishScan,
62080
62159
  "deploy:release": releaseHandler,
@@ -72021,6 +72100,7 @@ var METHOD_GRANT_MAP = {
72021
72100
  "deploy:scan": ADMIN_ANY,
72022
72101
  "deploy:patch": ADMIN_ANY,
72023
72102
  "deploy:putSecret": ADMIN_ANY,
72103
+ "deploy:setEngineAuth": ADMIN_ANY,
72024
72104
  "deploy:reportFinding": ADMIN_ANY,
72025
72105
  "deploy:finishScan": ADMIN_ANY,
72026
72106
  "deploy:release": ADMIN_ANY,
@@ -72238,6 +72318,7 @@ var HUMAN_ONLY_METHODS = [
72238
72318
  "deploy:scan",
72239
72319
  "deploy:release",
72240
72320
  "deploy:putSecret",
72321
+ "deploy:setEngineAuth",
72241
72322
  "deploy:rerunJob",
72242
72323
  "deploy:unpublish",
72243
72324
  "githubAuth:oauthStart",
@@ -72284,7 +72365,7 @@ function computeMethodAccess(args) {
72284
72365
  }
72285
72366
 
72286
72367
  // src/version.ts
72287
- var version = "0.2.584".length > 0 ? "0.2.584" : "dev";
72368
+ var version = "0.2.586".length > 0 ? "0.2.586" : "dev";
72288
72369
 
72289
72370
  // src/cli-probe/probe.ts
72290
72371
  var fs80 = __toESM(require("fs"), 1);