@clawos-dev/clawd 0.2.748 → 0.2.750

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.
@@ -21979,13 +21979,14 @@ var DeployEditLockSchema = external_exports.object({
21979
21979
  acquiredAt: external_exports.string(),
21980
21980
  expiresAt: external_exports.string()
21981
21981
  }).strict();
21982
- var DeployRepoAccessSchema = external_exports.enum(["invited", "active"]);
21982
+ var DeployRepoAccessSchema = external_exports.enum(["invited", "active", "failed"]);
21983
21983
  var DeployCollaboratorSchema = external_exports.object({
21984
21984
  unionId: external_exports.string(),
21985
21985
  displayName: external_exports.string(),
21986
21986
  githubLogin: external_exports.string().nullable(),
21987
21987
  createdAt: external_exports.string(),
21988
- repoAccess: DeployRepoAccessSchema.optional()
21988
+ repoAccess: DeployRepoAccessSchema.optional(),
21989
+ repoError: external_exports.string().optional()
21989
21990
  }).strict();
21990
21991
  var DeployAccessSchema = external_exports.object({
21991
21992
  role: DeployPersonaRoleSchema,
@@ -21995,9 +21996,6 @@ var DeployAccessSchema = external_exports.object({
21995
21996
  /** 有协作者的 persona 才走锁 */
21996
21997
  lockRequired: external_exports.boolean()
21997
21998
  }).strict();
21998
- var DeployCollaboratorAddResultSchema = DeployAccessSchema.extend({
21999
- production: external_exports.object({ ok: external_exports.boolean(), reason: external_exports.string().optional() }).strict()
22000
- }).strict();
22001
21999
  var DeployCollaboratorAddArgsSchema = DeployPersonaArgsSchema.extend({ deviceId: external_exports.string().min(1) }).strict();
22002
22000
  var DeployCollaboratorRemoveArgsSchema = DeployPersonaArgsSchema.extend({ unionId: external_exports.string().min(1) }).strict();
22003
22001
  var DeployEditLockArgsSchema = DeployPersonaArgsSchema.extend({ action: external_exports.enum(["acquire", "renew", "release"]) }).strict();
@@ -24210,7 +24208,7 @@ var METHOD_DOCS = {
24210
24208
  args: DeployPersonaArgsSchema
24211
24209
  },
24212
24210
  "deploy:collaboratorAdd": {
24213
- summary: "\u52A0\u534F\u4F5C\u8005\uFF08\u4EC5 persona \u7684\u53D1\u5E03\u8005\uFF09\uFF1A\u5165\u53C2\u662F\u8054\u7CFB\u4EBA\u7684 deviceId\uFF0C\u4E2D\u5FC3\u7ECF\u8BBE\u5907\u7ED1\u5B9A\u89E3\u6790\u98DE\u4E66\u8EAB\u4EFD\uFF0C\u5BF9\u65B9\u8FD8\u6CA1\u7ED1\u98DE\u4E66\u8D26\u53F7\u4F1A\u62D2\u3002\u4EE5\u6D4B\u8BD5\u73AF\u5883\u7684\u4E2D\u5FC3\u4E3A\u51C6\uFF0C\u6B63\u5F0F\u73AF\u5883\u7684\u4E2D\u5FC3\u518D\u767B\u8BB0\u4E00\u4EFD\uFF08\u6CA1\u767B\u8BB0\u6210\u53EA\u5728\u54CD\u5E94\u7684 production \u91CC\u63D0\u793A\uFF09\u3002\u56DE\u52A0\u5B8C\u4E4B\u540E\u7684 deploy:access \u89C6\u56FE\u52A0 production\uFF1Bowner-only\u3001human-only",
24211
+ summary: "\u52A0\u534F\u4F5C\u8005\uFF08\u4EC5 persona \u7684\u53D1\u5E03\u8005\uFF09\uFF1A\u5165\u53C2\u662F\u8054\u7CFB\u4EBA\u7684 deviceId\uFF0C\u4E2D\u5FC3\u7ECF\u8BBE\u5907\u7ED1\u5B9A\u89E3\u6790\u98DE\u4E66\u8EAB\u4EFD\uFF0C\u5BF9\u65B9\u8FD8\u6CA1\u7ED1\u98DE\u4E66\u8D26\u53F7\u4F1A\u62D2\u3002\u6D4B\u8BD5\u3001\u6B63\u5F0F\u4E24\u4E2A\u73AF\u5883\u7684\u4E2D\u5FC3\u90FD\u767B\u8BB0\u6210\u529F\u624D\u7B97\u52A0\u4E0A\uFF1A\u6B63\u5F0F\u73AF\u5883\u6CA1\u767B\u8BB0\u6210\uFF08persona \u8FD8\u6CA1\u4E0A\u7EBF\u8FC7\uFF0C\u53D1\u5E03\u8005\u5728\u6B63\u5F0F\u73AF\u5883\u91CC\u8FD8\u6CA1\u6709\u8BB0\u5F55\uFF09\u5C31\u64A4\u56DE\u6D4B\u8BD5\u73AF\u5883\u90A3\u4E00\u4EFD\u5E76\u62A5\u9519\uFF0C\u4E0D\u7559\u534A\u622A\u72B6\u6001\u3002\u767B\u8BB0\u5B8C\u987A\u5E26\u5904\u7406\u4ED3\u5E93\u6743\u9650\uFF08\u89C1 deploy:collaboratorSync\uFF09\u3002\u56DE\u52A0\u5B8C\u4E4B\u540E\u7684 deploy:access \u89C6\u56FE\uFF08\u534F\u4F5C\u8005\u5E26 repoAccess\uFF09\uFF1Bowner-only\u3001human-only",
24214
24212
  args: DeployCollaboratorAddArgsSchema
24215
24213
  },
24216
24214
  "deploy:collaboratorRemove": {
@@ -24218,7 +24216,7 @@ var METHOD_DOCS = {
24218
24216
  args: DeployCollaboratorRemoveArgsSchema
24219
24217
  },
24220
24218
  "deploy:collaboratorSync": {
24221
- summary: "\u4EC5\u53D1\u5E03\u8005\uFF1A\u628A\u5DF2\u4E0A\u62A5 GitHub \u767B\u5F55\u540D\u7684\u534F\u4F5C\u8005\u9010\u4E2A\u9080\u8BF7\u4E3A\u4ED3\u5E93\u534F\u4F5C\u8005\uFF08write\uFF0C\u5E42\u7B49\uFF09\u3002\u56DE deploy:access \u89C6\u56FE\uFF0C\u534F\u4F5C\u8005\u5E26 repoAccess\uFF1Ainvited = \u9080\u8BF7\u5DF2\u53D1\u3001\u7B49\u5BF9\u65B9\u63A5\u53D7\uFF1Bactive = \u5DF2\u80FD\u63A8\u9001\uFF1Bowner-only",
24219
+ summary: "\u4EC5\u53D1\u5E03\u8005\uFF1A\u9010\u4E2A\u5904\u7406\u534F\u4F5C\u8005\u7684\u4ED3\u5E93\u6743\u9650\u2014\u2014\u5148\u67E5\u5BF9\u65B9 GitHub \u8D26\u53F7\u5BF9\u4ED3\u5E93\u662F\u5426\u5DF2\u6709\u5199\u6743\u9650\uFF08\u6709\u5C31\u4E0D\u9080\u8BF7\uFF09\uFF0C\u6CA1\u6709\u624D\u9080\u8BF7\u4E3A\u4ED3\u5E93\u534F\u4F5C\u8005\uFF08write\uFF0C\u5E42\u7B49\uFF09\uFF1B\u6CA1\u4E0A\u62A5 GitHub \u767B\u5F55\u540D\u7684\u8DF3\u8FC7\uFF08\u5BF9\u65B9\u5173\u8054\u540E\u518D\u540C\u6B65\u5373\u8865\u53D1\uFF09\u3002\u56DE deploy:access \u89C6\u56FE\uFF0C\u534F\u4F5C\u8005\u5E26 repoAccess\uFF1Aactive = \u5DF2\u6709\u5199\u6743\u9650\uFF1Binvited = \u9080\u8BF7\u5DF2\u53D1\u3001\u7B49\u5BF9\u65B9\u63A5\u53D7\uFF1Bfailed = \u5931\u8D25\uFF08\u539F\u56E0\u5728 repoError\uFF09\uFF1B\u7F3A\u5E2D = \u5BF9\u65B9\u8FD8\u6CA1\u5173\u8054 GitHub\uFF1Bowner-only",
24222
24220
  args: DeployPersonaArgsSchema
24223
24221
  },
24224
24222
  "deploy:editLock": {
@@ -24226,7 +24224,7 @@ var METHOD_DOCS = {
24226
24224
  args: DeployEditLockArgsSchema
24227
24225
  },
24228
24226
  "deploy:takeover": {
24229
- summary: "\u534F\u4F5C\u8005\u63A5\u624B\uFF1A\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A persona \u65F6\uFF0C\u7528\u672C\u673A GitHub \u8EAB\u4EFD\u628A ottin4ttc/<personaId> clone \u6210\u672C\u5730 persona \u76EE\u5F55\uFF0C\u4E4B\u540E\u6CBF\u7528 deploy:*\u3002\u672C\u673A\u5DF2\u6709\u540C\u540D persona \u5C31\u62D2\uFF1B\u8981\u5148\u5728\u4ED3\u5E93\u91CC\u88AB\u9080\u8BF7\u5E76\u63A5\u53D7\uFF1Bowner-only\u3001human-only",
24227
+ summary: "\u534F\u4F5C\u8005\u63A5\u624B\uFF1A\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A persona \u65F6\uFF0C\u7528\u672C\u673A GitHub \u8EAB\u4EFD\u628A ottin4ttc/<personaId> clone \u6210\u672C\u5730 persona \u76EE\u5F55\uFF0C\u4E4B\u540E\u6CBF\u7528 deploy:*\u3002\u672C\u673A\u5DF2\u6709\u540C\u540D persona \u5C31\u62D2\uFF08\u4E0D\u8986\u76D6\u3001\u4E0D\u5408\u5E76\uFF09\uFF1B\u8981\u5148\u5728\u4ED3\u5E93\u91CC\u88AB\u9080\u8BF7\u5E76\u63A5\u53D7\uFF1Bowner-only\u3001human-only",
24230
24228
  args: DeployPersonaArgsSchema
24231
24229
  },
24232
24230
  "githubAuth:get": {
@@ -31907,13 +31907,14 @@ var DeployEditLockSchema = external_exports.object({
31907
31907
  acquiredAt: external_exports.string(),
31908
31908
  expiresAt: external_exports.string()
31909
31909
  }).strict();
31910
- var DeployRepoAccessSchema = external_exports.enum(["invited", "active"]);
31910
+ var DeployRepoAccessSchema = external_exports.enum(["invited", "active", "failed"]);
31911
31911
  var DeployCollaboratorSchema = external_exports.object({
31912
31912
  unionId: external_exports.string(),
31913
31913
  displayName: external_exports.string(),
31914
31914
  githubLogin: external_exports.string().nullable(),
31915
31915
  createdAt: external_exports.string(),
31916
- repoAccess: DeployRepoAccessSchema.optional()
31916
+ repoAccess: DeployRepoAccessSchema.optional(),
31917
+ repoError: external_exports.string().optional()
31917
31918
  }).strict();
31918
31919
  var DeployAccessSchema = external_exports.object({
31919
31920
  role: DeployPersonaRoleSchema,
@@ -31923,9 +31924,6 @@ var DeployAccessSchema = external_exports.object({
31923
31924
  /** 有协作者的 persona 才走锁 */
31924
31925
  lockRequired: external_exports.boolean()
31925
31926
  }).strict();
31926
- var DeployCollaboratorAddResultSchema = DeployAccessSchema.extend({
31927
- production: external_exports.object({ ok: external_exports.boolean(), reason: external_exports.string().optional() }).strict()
31928
- }).strict();
31929
31927
  var DeployCollaboratorAddArgsSchema = DeployPersonaArgsSchema.extend({ deviceId: external_exports.string().min(1) }).strict();
31930
31928
  var DeployCollaboratorRemoveArgsSchema = DeployPersonaArgsSchema.extend({ unionId: external_exports.string().min(1) }).strict();
31931
31929
  var DeployEditLockArgsSchema = DeployPersonaArgsSchema.extend({ action: external_exports.enum(["acquire", "renew", "release"]) }).strict();
@@ -34138,7 +34136,7 @@ var METHOD_DOCS = {
34138
34136
  args: DeployPersonaArgsSchema
34139
34137
  },
34140
34138
  "deploy:collaboratorAdd": {
34141
- summary: "\u52A0\u534F\u4F5C\u8005\uFF08\u4EC5 persona \u7684\u53D1\u5E03\u8005\uFF09\uFF1A\u5165\u53C2\u662F\u8054\u7CFB\u4EBA\u7684 deviceId\uFF0C\u4E2D\u5FC3\u7ECF\u8BBE\u5907\u7ED1\u5B9A\u89E3\u6790\u98DE\u4E66\u8EAB\u4EFD\uFF0C\u5BF9\u65B9\u8FD8\u6CA1\u7ED1\u98DE\u4E66\u8D26\u53F7\u4F1A\u62D2\u3002\u4EE5\u6D4B\u8BD5\u73AF\u5883\u7684\u4E2D\u5FC3\u4E3A\u51C6\uFF0C\u6B63\u5F0F\u73AF\u5883\u7684\u4E2D\u5FC3\u518D\u767B\u8BB0\u4E00\u4EFD\uFF08\u6CA1\u767B\u8BB0\u6210\u53EA\u5728\u54CD\u5E94\u7684 production \u91CC\u63D0\u793A\uFF09\u3002\u56DE\u52A0\u5B8C\u4E4B\u540E\u7684 deploy:access \u89C6\u56FE\u52A0 production\uFF1Bowner-only\u3001human-only",
34139
+ summary: "\u52A0\u534F\u4F5C\u8005\uFF08\u4EC5 persona \u7684\u53D1\u5E03\u8005\uFF09\uFF1A\u5165\u53C2\u662F\u8054\u7CFB\u4EBA\u7684 deviceId\uFF0C\u4E2D\u5FC3\u7ECF\u8BBE\u5907\u7ED1\u5B9A\u89E3\u6790\u98DE\u4E66\u8EAB\u4EFD\uFF0C\u5BF9\u65B9\u8FD8\u6CA1\u7ED1\u98DE\u4E66\u8D26\u53F7\u4F1A\u62D2\u3002\u6D4B\u8BD5\u3001\u6B63\u5F0F\u4E24\u4E2A\u73AF\u5883\u7684\u4E2D\u5FC3\u90FD\u767B\u8BB0\u6210\u529F\u624D\u7B97\u52A0\u4E0A\uFF1A\u6B63\u5F0F\u73AF\u5883\u6CA1\u767B\u8BB0\u6210\uFF08persona \u8FD8\u6CA1\u4E0A\u7EBF\u8FC7\uFF0C\u53D1\u5E03\u8005\u5728\u6B63\u5F0F\u73AF\u5883\u91CC\u8FD8\u6CA1\u6709\u8BB0\u5F55\uFF09\u5C31\u64A4\u56DE\u6D4B\u8BD5\u73AF\u5883\u90A3\u4E00\u4EFD\u5E76\u62A5\u9519\uFF0C\u4E0D\u7559\u534A\u622A\u72B6\u6001\u3002\u767B\u8BB0\u5B8C\u987A\u5E26\u5904\u7406\u4ED3\u5E93\u6743\u9650\uFF08\u89C1 deploy:collaboratorSync\uFF09\u3002\u56DE\u52A0\u5B8C\u4E4B\u540E\u7684 deploy:access \u89C6\u56FE\uFF08\u534F\u4F5C\u8005\u5E26 repoAccess\uFF09\uFF1Bowner-only\u3001human-only",
34142
34140
  args: DeployCollaboratorAddArgsSchema
34143
34141
  },
34144
34142
  "deploy:collaboratorRemove": {
@@ -34146,7 +34144,7 @@ var METHOD_DOCS = {
34146
34144
  args: DeployCollaboratorRemoveArgsSchema
34147
34145
  },
34148
34146
  "deploy:collaboratorSync": {
34149
- summary: "\u4EC5\u53D1\u5E03\u8005\uFF1A\u628A\u5DF2\u4E0A\u62A5 GitHub \u767B\u5F55\u540D\u7684\u534F\u4F5C\u8005\u9010\u4E2A\u9080\u8BF7\u4E3A\u4ED3\u5E93\u534F\u4F5C\u8005\uFF08write\uFF0C\u5E42\u7B49\uFF09\u3002\u56DE deploy:access \u89C6\u56FE\uFF0C\u534F\u4F5C\u8005\u5E26 repoAccess\uFF1Ainvited = \u9080\u8BF7\u5DF2\u53D1\u3001\u7B49\u5BF9\u65B9\u63A5\u53D7\uFF1Bactive = \u5DF2\u80FD\u63A8\u9001\uFF1Bowner-only",
34147
+ summary: "\u4EC5\u53D1\u5E03\u8005\uFF1A\u9010\u4E2A\u5904\u7406\u534F\u4F5C\u8005\u7684\u4ED3\u5E93\u6743\u9650\u2014\u2014\u5148\u67E5\u5BF9\u65B9 GitHub \u8D26\u53F7\u5BF9\u4ED3\u5E93\u662F\u5426\u5DF2\u6709\u5199\u6743\u9650\uFF08\u6709\u5C31\u4E0D\u9080\u8BF7\uFF09\uFF0C\u6CA1\u6709\u624D\u9080\u8BF7\u4E3A\u4ED3\u5E93\u534F\u4F5C\u8005\uFF08write\uFF0C\u5E42\u7B49\uFF09\uFF1B\u6CA1\u4E0A\u62A5 GitHub \u767B\u5F55\u540D\u7684\u8DF3\u8FC7\uFF08\u5BF9\u65B9\u5173\u8054\u540E\u518D\u540C\u6B65\u5373\u8865\u53D1\uFF09\u3002\u56DE deploy:access \u89C6\u56FE\uFF0C\u534F\u4F5C\u8005\u5E26 repoAccess\uFF1Aactive = \u5DF2\u6709\u5199\u6743\u9650\uFF1Binvited = \u9080\u8BF7\u5DF2\u53D1\u3001\u7B49\u5BF9\u65B9\u63A5\u53D7\uFF1Bfailed = \u5931\u8D25\uFF08\u539F\u56E0\u5728 repoError\uFF09\uFF1B\u7F3A\u5E2D = \u5BF9\u65B9\u8FD8\u6CA1\u5173\u8054 GitHub\uFF1Bowner-only",
34150
34148
  args: DeployPersonaArgsSchema
34151
34149
  },
34152
34150
  "deploy:editLock": {
@@ -34154,7 +34152,7 @@ var METHOD_DOCS = {
34154
34152
  args: DeployEditLockArgsSchema
34155
34153
  },
34156
34154
  "deploy:takeover": {
34157
- summary: "\u534F\u4F5C\u8005\u63A5\u624B\uFF1A\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A persona \u65F6\uFF0C\u7528\u672C\u673A GitHub \u8EAB\u4EFD\u628A ottin4ttc/<personaId> clone \u6210\u672C\u5730 persona \u76EE\u5F55\uFF0C\u4E4B\u540E\u6CBF\u7528 deploy:*\u3002\u672C\u673A\u5DF2\u6709\u540C\u540D persona \u5C31\u62D2\uFF1B\u8981\u5148\u5728\u4ED3\u5E93\u91CC\u88AB\u9080\u8BF7\u5E76\u63A5\u53D7\uFF1Bowner-only\u3001human-only",
34155
+ summary: "\u534F\u4F5C\u8005\u63A5\u624B\uFF1A\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A persona \u65F6\uFF0C\u7528\u672C\u673A GitHub \u8EAB\u4EFD\u628A ottin4ttc/<personaId> clone \u6210\u672C\u5730 persona \u76EE\u5F55\uFF0C\u4E4B\u540E\u6CBF\u7528 deploy:*\u3002\u672C\u673A\u5DF2\u6709\u540C\u540D persona \u5C31\u62D2\uFF08\u4E0D\u8986\u76D6\u3001\u4E0D\u5408\u5E76\uFF09\uFF1B\u8981\u5148\u5728\u4ED3\u5E93\u91CC\u88AB\u9080\u8BF7\u5E76\u63A5\u53D7\uFF1Bowner-only\u3001human-only",
34158
34156
  args: DeployPersonaArgsSchema
34159
34157
  },
34160
34158
  "githubAuth:get": {
package/dist/cli.cjs CHANGED
@@ -6662,7 +6662,7 @@ function changedConfigKeys(a2, b3) {
6662
6662
  function repoSlug(url) {
6663
6663
  return url.trim().replace(/^git@[^:]+:/, "").replace(/^https?:\/\/[^/]+\//, "").replace(/\.git$/, "");
6664
6664
  }
6665
- 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, DeployPersonaRoleSchema, DeployEditLockSchema, DeployRepoAccessSchema, DeployCollaboratorSchema, DeployAccessSchema, DeployCollaboratorAddResultSchema, DeployCollaboratorAddArgsSchema, DeployCollaboratorRemoveArgsSchema, DeployEditLockArgsSchema, DeployEditLockResultSchema, DeployTakeoverResultSchema, DeployGetArgsSchema, DeployScanArgsSchema, DeployReleaseArgsSchema, DeployConfirmTestArgsSchema, DeployPromoteArgsSchema, DeployApplyConfigArgsSchema, DeployOpenTestArgsSchema, DeployEnvironmentArgsSchema, DeployConfirmTestResultSchema, DeployPromoteResultSchema, DeployOpenTestResultSchema, DeployPatchArgsSchema, DeployPutSecretArgsSchema, DeploySetEngineAuthArgsSchema, DeployRerunJobArgsSchema, DEPLOY_STALE_BASE_ERROR, DeployReportFindingArgsSchema, DeployFinishScanArgsSchema, PERSONA_REPO_ORG;
6665
+ 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, DeployPersonaRoleSchema, DeployEditLockSchema, DeployRepoAccessSchema, DeployCollaboratorSchema, DeployAccessSchema, DeployCollaboratorAddArgsSchema, DeployCollaboratorRemoveArgsSchema, DeployEditLockArgsSchema, DeployEditLockResultSchema, DeployTakeoverResultSchema, DeployGetArgsSchema, DeployScanArgsSchema, DeployReleaseArgsSchema, DeployConfirmTestArgsSchema, DeployPromoteArgsSchema, DeployApplyConfigArgsSchema, DeployOpenTestArgsSchema, DeployEnvironmentArgsSchema, DeployConfirmTestResultSchema, DeployPromoteResultSchema, DeployOpenTestResultSchema, DeployPatchArgsSchema, DeployPutSecretArgsSchema, DeploySetEngineAuthArgsSchema, DeployRerunJobArgsSchema, DEPLOY_STALE_BASE_ERROR, DeployReportFindingArgsSchema, DeployFinishScanArgsSchema, PERSONA_REPO_ORG;
6666
6666
  var init_deploy_schemas = __esm({
6667
6667
  "../protocol/src/deploy-schemas.ts"() {
6668
6668
  "use strict";
@@ -6894,13 +6894,14 @@ var init_deploy_schemas = __esm({
6894
6894
  acquiredAt: external_exports.string(),
6895
6895
  expiresAt: external_exports.string()
6896
6896
  }).strict();
6897
- DeployRepoAccessSchema = external_exports.enum(["invited", "active"]);
6897
+ DeployRepoAccessSchema = external_exports.enum(["invited", "active", "failed"]);
6898
6898
  DeployCollaboratorSchema = external_exports.object({
6899
6899
  unionId: external_exports.string(),
6900
6900
  displayName: external_exports.string(),
6901
6901
  githubLogin: external_exports.string().nullable(),
6902
6902
  createdAt: external_exports.string(),
6903
- repoAccess: DeployRepoAccessSchema.optional()
6903
+ repoAccess: DeployRepoAccessSchema.optional(),
6904
+ repoError: external_exports.string().optional()
6904
6905
  }).strict();
6905
6906
  DeployAccessSchema = external_exports.object({
6906
6907
  role: DeployPersonaRoleSchema,
@@ -6910,9 +6911,6 @@ var init_deploy_schemas = __esm({
6910
6911
  /** 有协作者的 persona 才走锁 */
6911
6912
  lockRequired: external_exports.boolean()
6912
6913
  }).strict();
6913
- DeployCollaboratorAddResultSchema = DeployAccessSchema.extend({
6914
- production: external_exports.object({ ok: external_exports.boolean(), reason: external_exports.string().optional() }).strict()
6915
- }).strict();
6916
6914
  DeployCollaboratorAddArgsSchema = DeployPersonaArgsSchema.extend({ deviceId: external_exports.string().min(1) }).strict();
6917
6915
  DeployCollaboratorRemoveArgsSchema = DeployPersonaArgsSchema.extend({ unionId: external_exports.string().min(1) }).strict();
6918
6916
  DeployEditLockArgsSchema = DeployPersonaArgsSchema.extend({ action: external_exports.enum(["acquire", "renew", "release"]) }).strict();
@@ -9433,7 +9431,7 @@ var init_methods = __esm({
9433
9431
  args: DeployPersonaArgsSchema
9434
9432
  },
9435
9433
  "deploy:collaboratorAdd": {
9436
- summary: "\u52A0\u534F\u4F5C\u8005\uFF08\u4EC5 persona \u7684\u53D1\u5E03\u8005\uFF09\uFF1A\u5165\u53C2\u662F\u8054\u7CFB\u4EBA\u7684 deviceId\uFF0C\u4E2D\u5FC3\u7ECF\u8BBE\u5907\u7ED1\u5B9A\u89E3\u6790\u98DE\u4E66\u8EAB\u4EFD\uFF0C\u5BF9\u65B9\u8FD8\u6CA1\u7ED1\u98DE\u4E66\u8D26\u53F7\u4F1A\u62D2\u3002\u4EE5\u6D4B\u8BD5\u73AF\u5883\u7684\u4E2D\u5FC3\u4E3A\u51C6\uFF0C\u6B63\u5F0F\u73AF\u5883\u7684\u4E2D\u5FC3\u518D\u767B\u8BB0\u4E00\u4EFD\uFF08\u6CA1\u767B\u8BB0\u6210\u53EA\u5728\u54CD\u5E94\u7684 production \u91CC\u63D0\u793A\uFF09\u3002\u56DE\u52A0\u5B8C\u4E4B\u540E\u7684 deploy:access \u89C6\u56FE\u52A0 production\uFF1Bowner-only\u3001human-only",
9434
+ summary: "\u52A0\u534F\u4F5C\u8005\uFF08\u4EC5 persona \u7684\u53D1\u5E03\u8005\uFF09\uFF1A\u5165\u53C2\u662F\u8054\u7CFB\u4EBA\u7684 deviceId\uFF0C\u4E2D\u5FC3\u7ECF\u8BBE\u5907\u7ED1\u5B9A\u89E3\u6790\u98DE\u4E66\u8EAB\u4EFD\uFF0C\u5BF9\u65B9\u8FD8\u6CA1\u7ED1\u98DE\u4E66\u8D26\u53F7\u4F1A\u62D2\u3002\u6D4B\u8BD5\u3001\u6B63\u5F0F\u4E24\u4E2A\u73AF\u5883\u7684\u4E2D\u5FC3\u90FD\u767B\u8BB0\u6210\u529F\u624D\u7B97\u52A0\u4E0A\uFF1A\u6B63\u5F0F\u73AF\u5883\u6CA1\u767B\u8BB0\u6210\uFF08persona \u8FD8\u6CA1\u4E0A\u7EBF\u8FC7\uFF0C\u53D1\u5E03\u8005\u5728\u6B63\u5F0F\u73AF\u5883\u91CC\u8FD8\u6CA1\u6709\u8BB0\u5F55\uFF09\u5C31\u64A4\u56DE\u6D4B\u8BD5\u73AF\u5883\u90A3\u4E00\u4EFD\u5E76\u62A5\u9519\uFF0C\u4E0D\u7559\u534A\u622A\u72B6\u6001\u3002\u767B\u8BB0\u5B8C\u987A\u5E26\u5904\u7406\u4ED3\u5E93\u6743\u9650\uFF08\u89C1 deploy:collaboratorSync\uFF09\u3002\u56DE\u52A0\u5B8C\u4E4B\u540E\u7684 deploy:access \u89C6\u56FE\uFF08\u534F\u4F5C\u8005\u5E26 repoAccess\uFF09\uFF1Bowner-only\u3001human-only",
9437
9435
  args: DeployCollaboratorAddArgsSchema
9438
9436
  },
9439
9437
  "deploy:collaboratorRemove": {
@@ -9441,7 +9439,7 @@ var init_methods = __esm({
9441
9439
  args: DeployCollaboratorRemoveArgsSchema
9442
9440
  },
9443
9441
  "deploy:collaboratorSync": {
9444
- summary: "\u4EC5\u53D1\u5E03\u8005\uFF1A\u628A\u5DF2\u4E0A\u62A5 GitHub \u767B\u5F55\u540D\u7684\u534F\u4F5C\u8005\u9010\u4E2A\u9080\u8BF7\u4E3A\u4ED3\u5E93\u534F\u4F5C\u8005\uFF08write\uFF0C\u5E42\u7B49\uFF09\u3002\u56DE deploy:access \u89C6\u56FE\uFF0C\u534F\u4F5C\u8005\u5E26 repoAccess\uFF1Ainvited = \u9080\u8BF7\u5DF2\u53D1\u3001\u7B49\u5BF9\u65B9\u63A5\u53D7\uFF1Bactive = \u5DF2\u80FD\u63A8\u9001\uFF1Bowner-only",
9442
+ summary: "\u4EC5\u53D1\u5E03\u8005\uFF1A\u9010\u4E2A\u5904\u7406\u534F\u4F5C\u8005\u7684\u4ED3\u5E93\u6743\u9650\u2014\u2014\u5148\u67E5\u5BF9\u65B9 GitHub \u8D26\u53F7\u5BF9\u4ED3\u5E93\u662F\u5426\u5DF2\u6709\u5199\u6743\u9650\uFF08\u6709\u5C31\u4E0D\u9080\u8BF7\uFF09\uFF0C\u6CA1\u6709\u624D\u9080\u8BF7\u4E3A\u4ED3\u5E93\u534F\u4F5C\u8005\uFF08write\uFF0C\u5E42\u7B49\uFF09\uFF1B\u6CA1\u4E0A\u62A5 GitHub \u767B\u5F55\u540D\u7684\u8DF3\u8FC7\uFF08\u5BF9\u65B9\u5173\u8054\u540E\u518D\u540C\u6B65\u5373\u8865\u53D1\uFF09\u3002\u56DE deploy:access \u89C6\u56FE\uFF0C\u534F\u4F5C\u8005\u5E26 repoAccess\uFF1Aactive = \u5DF2\u6709\u5199\u6743\u9650\uFF1Binvited = \u9080\u8BF7\u5DF2\u53D1\u3001\u7B49\u5BF9\u65B9\u63A5\u53D7\uFF1Bfailed = \u5931\u8D25\uFF08\u539F\u56E0\u5728 repoError\uFF09\uFF1B\u7F3A\u5E2D = \u5BF9\u65B9\u8FD8\u6CA1\u5173\u8054 GitHub\uFF1Bowner-only",
9445
9443
  args: DeployPersonaArgsSchema
9446
9444
  },
9447
9445
  "deploy:editLock": {
@@ -9449,7 +9447,7 @@ var init_methods = __esm({
9449
9447
  args: DeployEditLockArgsSchema
9450
9448
  },
9451
9449
  "deploy:takeover": {
9452
- summary: "\u534F\u4F5C\u8005\u63A5\u624B\uFF1A\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A persona \u65F6\uFF0C\u7528\u672C\u673A GitHub \u8EAB\u4EFD\u628A ottin4ttc/<personaId> clone \u6210\u672C\u5730 persona \u76EE\u5F55\uFF0C\u4E4B\u540E\u6CBF\u7528 deploy:*\u3002\u672C\u673A\u5DF2\u6709\u540C\u540D persona \u5C31\u62D2\uFF1B\u8981\u5148\u5728\u4ED3\u5E93\u91CC\u88AB\u9080\u8BF7\u5E76\u63A5\u53D7\uFF1Bowner-only\u3001human-only",
9450
+ summary: "\u534F\u4F5C\u8005\u63A5\u624B\uFF1A\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A persona \u65F6\uFF0C\u7528\u672C\u673A GitHub \u8EAB\u4EFD\u628A ottin4ttc/<personaId> clone \u6210\u672C\u5730 persona \u76EE\u5F55\uFF0C\u4E4B\u540E\u6CBF\u7528 deploy:*\u3002\u672C\u673A\u5DF2\u6709\u540C\u540D persona \u5C31\u62D2\uFF08\u4E0D\u8986\u76D6\u3001\u4E0D\u5408\u5E76\uFF09\uFF1B\u8981\u5148\u5728\u4ED3\u5E93\u91CC\u88AB\u9080\u8BF7\u5E76\u63A5\u53D7\uFF1Bowner-only\u3001human-only",
9453
9451
  args: DeployPersonaArgsSchema
9454
9452
  },
9455
9453
  "githubAuth:get": {
@@ -63324,7 +63322,11 @@ function createGithubApi(args) {
63324
63322
  await must("POST", `/repos/${slug}/actions/workflows/${encodeURIComponent(file)}/dispatches`, "\u89E6\u53D1\u6D41\u6C34\u7EBF", { ref, ...inputs ? { inputs } : {} });
63325
63323
  },
63326
63324
  async addCollaborator(slug, login) {
63327
- const r2 = await request("PUT", `/repos/${slug}/collaborators/${encodeURIComponent(login)}`, { permission: "push" });
63325
+ const path112 = `/repos/${slug}/collaborators/${encodeURIComponent(login)}`;
63326
+ const has = await request("GET", `${path112}/permission`);
63327
+ const permission = has.json?.permission;
63328
+ if (has.status >= 200 && has.status < 300 && (permission === "admin" || permission === "write")) return "active";
63329
+ const r2 = await request("PUT", path112, { permission: "push" });
63328
63330
  if (r2.status === 201) return "invited";
63329
63331
  if (r2.status === 204) return "active";
63330
63332
  throw new GithubApiError(r2.status, explain(r2.status, `\u9080\u8BF7 ${login} \u8FDB\u4ED3\u5E93`, r2.json));
@@ -65679,24 +65681,66 @@ function buildDeployHandlers(deps) {
65679
65681
  const view2 = await accessView(cloudId);
65680
65682
  return { response: { type: "deploy:access", ...view2 } };
65681
65683
  };
65684
+ async function withRepoAccess(slug, collaborators) {
65685
+ if (!collaborators.some((c2) => c2.githubLogin)) return collaborators;
65686
+ let api;
65687
+ try {
65688
+ ({ api } = await requireGithub());
65689
+ } catch (err) {
65690
+ const repoError = toClawdError(err).message;
65691
+ return collaborators.map((c2) => c2.githubLogin ? { ...c2, repoAccess: "failed", repoError } : c2);
65692
+ }
65693
+ const out = [];
65694
+ for (const c2 of collaborators) {
65695
+ if (!c2.githubLogin) {
65696
+ out.push(c2);
65697
+ continue;
65698
+ }
65699
+ try {
65700
+ out.push({ ...c2, repoAccess: await api.addCollaborator(slug, c2.githubLogin) });
65701
+ } catch (err) {
65702
+ out.push({ ...c2, repoAccess: "failed", repoError: toClawdError(err).message });
65703
+ }
65704
+ }
65705
+ return out;
65706
+ }
65682
65707
  const collaboratorAdd = async (frame, _client, ctx) => {
65683
65708
  ensureOwner(ctx);
65684
65709
  const { personaId: personaId2, deviceId } = parseArgs2(DeployCollaboratorAddArgsSchema, frame, "deploy:collaboratorAdd");
65685
- const cloudId = await cloudIdOf(personaId2);
65710
+ const repo2 = await repoInfo(deps.exec, mustPersona(personaId2));
65711
+ if (!repo2) throw invalid("\u8FD9\u4E2A persona \u8FD8\u6CA1\u4E0A\u8FC7\u4E91");
65712
+ const cloudId = cloudPersonaIdOf(repo2.url);
65686
65713
  const collaboration = mustCollaboration();
65714
+ let before;
65715
+ try {
65716
+ before = await collaboration.access("integration", cloudId);
65717
+ } catch (err) {
65718
+ if (err instanceof CentralClientError && err.status === 403) throw invalid("\u8FD9\u4E2A persona \u8FD8\u6CA1\u53D1\u5E03\u5230\u4E91\u4E0A\uFF1A\u9996\u6B21\u53D1\u5E03\u4E4B\u540E\u624D\u80FD\u6DFB\u52A0\u534F\u4F5C\u8005");
65719
+ throw centralInvalid(err);
65720
+ }
65721
+ if (before.role !== "owner") throw invalid("\u53EA\u6709\u8FD9\u4E2A persona \u7684\u53D1\u5E03\u8005\u80FD\u6DFB\u52A0\u534F\u4F5C\u8005");
65687
65722
  try {
65688
65723
  await collaboration.add("integration", cloudId, deviceId);
65689
65724
  } catch (err) {
65690
65725
  throw centralInvalid(err);
65691
65726
  }
65692
- let production;
65693
65727
  try {
65694
65728
  await collaboration.add("production", cloudId, deviceId);
65695
- production = { ok: true };
65696
65729
  } catch (err) {
65697
- production = { ok: false, reason: centralMessage(err) };
65730
+ const known = new Set(before.collaborators.map((c2) => c2.unionId));
65731
+ let undone = true;
65732
+ try {
65733
+ const after = await collaboration.access("integration", cloudId);
65734
+ for (const c2 of after.collaborators) if (!known.has(c2.unionId)) await collaboration.remove("integration", cloudId, c2.unionId);
65735
+ } catch (undoErr) {
65736
+ undone = false;
65737
+ deps.warn?.("rollback collaborator in integration failed", { cloudId, error: centralMessage(undoErr) });
65738
+ }
65739
+ const why = err instanceof CentralClientError && err.status === 403 ? "\u8FD9\u4E2A persona \u8FD8\u6CA1\u4E0A\u7EBF\u5230\u6B63\u5F0F\u73AF\u5883\uFF08\u9996\u6B21\u4E0A\u7EBF\u624D\u4F1A\u5728\u6B63\u5F0F\u73AF\u5883\u767B\u8BB0\u53D1\u5E03\u8005\uFF09\uFF0C\u5148\u4E0A\u7EBF\u4E00\u6B21\u518D\u6DFB\u52A0\u534F\u4F5C\u8005" : `\u6B63\u5F0F\u73AF\u5883\u767B\u8BB0\u5931\u8D25\uFF1A${centralMessage(err)}`;
65740
+ throw invalid(`${why}\uFF1B${undone ? "\u6CA1\u6709\u6DFB\u52A0" : "\u6D4B\u8BD5\u73AF\u5883\u90A3\u4E00\u4EFD\u6CA1\u80FD\u64A4\u56DE\uFF0C\u8BF7\u5728\u534F\u4F5C\u8005\u5217\u8868\u91CC\u624B\u52A8\u79FB\u9664"}`);
65698
65741
  }
65699
- return { response: { type: "deploy:collaboratorAdd", ...await accessView(cloudId), production } };
65742
+ const view2 = await accessView(cloudId);
65743
+ return { response: { type: "deploy:collaboratorAdd", ...view2, collaborators: await withRepoAccess(repoSlug(repo2.url), view2.collaborators) } };
65700
65744
  };
65701
65745
  const collaboratorRemove = async (frame, _client, ctx) => {
65702
65746
  ensureOwner(ctx);
@@ -65719,21 +65763,7 @@ function buildDeployHandlers(deps) {
65719
65763
  if (!repo2) throw invalid("\u8FD9\u4E2A persona \u8FD8\u6CA1\u4E0A\u8FC7\u4E91");
65720
65764
  const view2 = await accessView(cloudPersonaIdOf(repo2.url));
65721
65765
  if (view2.role !== "owner") throw invalid("\u53EA\u6709\u8FD9\u4E2A persona \u7684\u53D1\u5E03\u8005\u80FD\u9080\u8BF7\u534F\u4F5C\u8005\u8FDB\u4ED3\u5E93");
65722
- const { api } = await requireGithub();
65723
- const slug = repoSlug(repo2.url);
65724
- const collaborators = [];
65725
- for (const c2 of view2.collaborators) {
65726
- if (!c2.githubLogin) {
65727
- collaborators.push(c2);
65728
- continue;
65729
- }
65730
- try {
65731
- collaborators.push({ ...c2, repoAccess: await api.addCollaborator(slug, c2.githubLogin) });
65732
- } catch (err) {
65733
- throw toClawdError(err);
65734
- }
65735
- }
65736
- return { response: { type: "deploy:collaboratorSync", ...view2, collaborators } };
65766
+ return { response: { type: "deploy:collaboratorSync", ...view2, collaborators: await withRepoAccess(repoSlug(repo2.url), view2.collaborators) } };
65737
65767
  };
65738
65768
  const editLockHandler = async (frame, _client, ctx) => {
65739
65769
  ensureOwner(ctx);
@@ -65751,7 +65781,7 @@ function buildDeployHandlers(deps) {
65751
65781
  const takeover = async (frame, _client, ctx) => {
65752
65782
  ensureOwner(ctx);
65753
65783
  const { personaId: personaId2 } = parseArgs2(DeployPersonaArgsSchema, frame, "deploy:takeover");
65754
- if (deps.hasPersona(personaId2)) throw invalid("\u672C\u673A\u5DF2\u7ECF\u6709\u8FD9\u4E2A persona \u4E86");
65784
+ if (deps.hasPersona(personaId2)) throw invalid(`\u672C\u673A\u5DF2\u7ECF\u6709\u540C\u540D persona\u300C${personaId2}\u300D\uFF0C\u6CA1\u6709\u8986\u76D6\u5B83\uFF1A\u60F3\u7528\u4E91\u4E0A\u7684\u7248\u672C\uFF0C\u8BF7\u5148\u628A\u672C\u673A\u8FD9\u4E2A\u6539\u540D\u6216\u5220\u9664`);
65755
65785
  if (!/^[a-z0-9-]{1,100}$/.test(personaId2)) throw invalid("persona \u540D\u53EA\u8BA4\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26");
65756
65786
  try {
65757
65787
  await mustCollaboration().access("integration", personaId2);
@@ -76434,7 +76464,7 @@ function computeMethodAccess(args) {
76434
76464
  }
76435
76465
 
76436
76466
  // src/version.ts
76437
- var version = "0.2.748".length > 0 ? "0.2.748" : "dev";
76467
+ var version = "0.2.750".length > 0 ? "0.2.750" : "dev";
76438
76468
 
76439
76469
  // src/cli-probe/probe.ts
76440
76470
  var fs87 = __toESM(require("fs"), 1);