@clawos-dev/clawd 0.2.565 → 0.2.566

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.
@@ -21632,9 +21632,9 @@ var DeployReleasedSchema = external_exports.object({
21632
21632
  at: external_exports.number()
21633
21633
  }).strict();
21634
21634
  var DeployScanFileSchema = external_exports.object({
21635
- version: external_exports.literal(2),
21635
+ version: external_exports.literal(3),
21636
21636
  scans: external_exports.array(DeployScanSchema),
21637
- released: DeployReleasedSchema.optional()
21637
+ releases: external_exports.array(DeployReleasedSchema)
21638
21638
  }).strict();
21639
21639
  var DeployRepoSchema = external_exports.object({
21640
21640
  url: external_exports.string().min(1),
@@ -21643,10 +21643,11 @@ var DeployRepoSchema = external_exports.object({
21643
21643
  /**
21644
21644
  * persona 的**内容**有没有未提交的改动。
21645
21645
  *
21646
- * **`.clawd/deploy.json` 不算**(daemon 侧 `repoInfo` 把它排出了 pathspec):那个文件是
21647
- * 对 persona 的**断言**——扫描在写、页面上编辑清单也在写。算进来的话每扫一次就把自己
21648
- * 弄脏一次,`isScanFresh` 永远为假、发布再也点不亮。排除的只有这一个文件,
21649
- * `.clawd/` 下别的(persona.json 等)照旧算。
21646
+ * **两个文件不算**(daemon 侧 `repoInfo` 的 `DIRTY_IGNORED` 把它们排出了 pathspec):
21647
+ * - `.clawd/deploy.json`——发布产物,`deploy:release` 那一刻整份重写;算进来的话发布前后那几秒页面会闪「有未提交的改动」
21648
+ * - `.clawd/persona.json`——结构化配置(tool / model / size …),扫描不读它、流水线从发布 commit 读它,改了不需要重扫
21649
+ * (design 2026-09-21-deploy-page-polish §3.4)
21650
+ * `.clawd/` 下别的、以及 persona 的内容(CLAUDE.md / skills / .mcp.json)照旧算。
21650
21651
  */
21651
21652
  dirty: external_exports.boolean(),
21652
21653
  /** 本地领先远端几个提交 */
@@ -21686,13 +21687,13 @@ var DeployStateSchema = external_exports.object({
21686
21687
  repo: DeployRepoSchema.optional(),
21687
21688
  /** 扫描历史,升序,最后一条最新。没扫过就是空数组 */
21688
21689
  scans: external_exports.array(DeployScanSchema).default([]),
21689
- /** 线上正跑的是哪一版;从没发布过就缺席 */
21690
- released: DeployReleasedSchema.optional(),
21690
+ /** 发布历史,升序,最后一条 = 线上正跑的那版。从没发布过就是空数组 */
21691
+ releases: external_exports.array(DeployReleasedSchema).default([]),
21691
21692
  /** 没仓库时缺席(查不了) */
21692
21693
  secrets: external_exports.array(DeploySecretPresenceSchema).optional(),
21693
21694
  /**
21694
- * 最新那次流水线走到哪了。**缺席是常态**:没推过、没授权 GitHub、GitHub 查不到、仓库还没有 run,
21695
- * 都不该让整页打不开——同 `secrets` 的处理。
21695
+ * 流水线走到哪了:不带 `releaseHead` 时是仓库最新那条 run(= 最后一次发布的),带了就是指名那次发布的。
21696
+ * **缺席是常态**:没推过、没授权 GitHub、GitHub 查不到、仓库还没有 run,都不该让整页打不开——同 `secrets` 的处理。
21696
21697
  */
21697
21698
  run: DeployRunSchema.optional(),
21698
21699
  /**
@@ -21708,6 +21709,9 @@ var DeployReleaseResultSchema = external_exports.object({
21708
21709
  var DeployPersonaArgsSchema = external_exports.object({
21709
21710
  personaId: external_exports.string().min(1)
21710
21711
  }).strict();
21712
+ var DeployGetArgsSchema = DeployPersonaArgsSchema.extend({
21713
+ releaseHead: external_exports.string().min(1).optional()
21714
+ }).strict();
21711
21715
  var DeployScanArgsSchema = DeployPersonaArgsSchema.extend({
21712
21716
  scanBase: ScanBaseKindSchema.optional()
21713
21717
  }).strict();
@@ -24194,8 +24198,8 @@ var METHOD_DOCS = {
24194
24198
  },
24195
24199
  // ---- deploy:*(persona 上云:persona 目录 = git 仓库工作树,发布 = 推送触发仓库流水线)----
24196
24200
  "deploy:get": {
24197
- summary: "\u4E0A\u4E91\u9875\u9762\u8981\u7684\u5168\u90E8\uFF1A\u4ED3\u5E93\u7ED1\u5B9A\u72B6\u6001\uFF08git \u73B0\u7B97\uFF09\u3001\u626B\u63CF\u5386\u53F2\uFF08\u6BCF\u6761\u5E26\u6E05\u5355\u5FEB\u7167\uFF09\u3001\u7EBF\u4E0A\u6B63\u8DD1\u7684\u662F\u54EA\u4E00\u7248\u3001\u4ED3\u5E93 Secrets \u91CC\u5404\u53D8\u91CF\u540D\u586B\u8FC7\u6CA1\u6709\uFF08**\u53EA\u6709\u540D\u5B57\u548C\u65F6\u95F4\uFF0C\u6CA1\u6709\u503C**\uFF09\uFF1Bowner-only",
24198
- args: DeployPersonaArgsSchema
24201
+ summary: "\u4E0A\u4E91\u9875\u9762\u8981\u7684\u5168\u90E8\uFF1A\u4ED3\u5E93\u7ED1\u5B9A\u72B6\u6001\uFF08git \u73B0\u7B97\uFF09\u3001\u626B\u63CF\u5386\u53F2\uFF08\u6BCF\u6761\u5E26\u6E05\u5355\u5FEB\u7167\uFF09\u3001\u53D1\u5E03\u5386\u53F2\uFF08\u6700\u540E\u4E00\u6761 = \u7EBF\u4E0A\u6B63\u8DD1\u7684\uFF09\u3001\u4ED3\u5E93 Secrets \u91CC\u5404\u53D8\u91CF\u540D\u586B\u8FC7\u6CA1\u6709\uFF08**\u53EA\u6709\u540D\u5B57\u548C\u65F6\u95F4\uFF0C\u6CA1\u6709\u503C**\uFF09\u3001\u4E00\u6761\u6D41\u6C34\u7EBF\u72B6\u6001\uFF08\u7F3A\u7701\u4ED3\u5E93\u6700\u65B0\u90A3\u6761\uFF1B`releaseHead` \u6307\u540D\u770B\u54EA\u6B21\u53D1\u5E03\u7684\uFF09\uFF1Bowner-only",
24202
+ args: DeployGetArgsSchema
24199
24203
  },
24200
24204
  "deploy:scan": {
24201
24205
  summary: "\u8D77\u4E00\u6B21\u626B\u63CF\u3002**\u6CA1\u4ED3\u5E93\u5148\u5EFA\u4ED3**\uFF08GitHub REST \u5EFA\u5728\u7EC4\u7EC7\u4E0B\u3001\u79C1\u6709\uFF0Cgit \u63A8\u9996\u4E2A\u63D0\u4EA4\uFF1Btoken \u6765\u81EA\u672C\u673A git \u7684\u8EAB\u4EFD\uFF0C\u6CA1\u6388\u6743\u5148\u62D2\uFF09\u3002\u628A persona \u76EE\u5F55\u63D0\u4EA4\u5230\u672C\u5730\uFF08\u4E0D\u63A8\uFF09\u3001\u5728\u626B\u63CF\u5386\u53F2\u91CC\u8FFD\u52A0\u4E00\u6761\u3001\u8D77 persona-butler \u7684\u626B\u63CF\u4F1A\u8BDD\uFF1B\u6B63\u5728\u626B\u7684\u8BDD\u539F\u6837\u8FD4\u56DE\u4E0D\u8D77\u7B2C\u4E8C\u4E2A\u4F1A\u8BDD\u3002\u5E26 scanBase\uFF08hard / soft\uFF09\u6309\u8BE5\u6863\u4F4D\u626B\uFF08soft \u4E0D\u6210\u7ACB\u81EA\u52A8\u9000 hard\uFF09\uFF0C\u7F3A\u5E2D daemon \u81EA\u52A8\u5B9A\uFF1Bowner-only",
@@ -24787,6 +24791,7 @@ var CliConnectorFindingSchema = external_exports.object({
24787
24791
  var DEPLOY_FILE = import_node_path3.default.join(".clawd", "deploy.json");
24788
24792
  var SCAN_FILE = import_node_path3.default.join(".clawd", "deploy-scan.json");
24789
24793
  var z1 = DeployScanSchema.omit({ id: true, manifest: true }).extend({ releasedHead: DeployScanSchema.shape.head }).strict();
24794
+ var z2 = external_exports.object({ version: external_exports.literal(2), scans: external_exports.array(DeployScanSchema), released: DeployReleasedSchema.optional() }).strict();
24790
24795
 
24791
24796
  // src/deploy/templates.ts
24792
24797
  var CLAWOS_REPO = "ottin4ttc/clawos";
@@ -21632,9 +21632,9 @@ var DeployReleasedSchema = external_exports.object({
21632
21632
  at: external_exports.number()
21633
21633
  }).strict();
21634
21634
  var DeployScanFileSchema = external_exports.object({
21635
- version: external_exports.literal(2),
21635
+ version: external_exports.literal(3),
21636
21636
  scans: external_exports.array(DeployScanSchema),
21637
- released: DeployReleasedSchema.optional()
21637
+ releases: external_exports.array(DeployReleasedSchema)
21638
21638
  }).strict();
21639
21639
  var DeployRepoSchema = external_exports.object({
21640
21640
  url: external_exports.string().min(1),
@@ -21643,10 +21643,11 @@ var DeployRepoSchema = external_exports.object({
21643
21643
  /**
21644
21644
  * persona 的**内容**有没有未提交的改动。
21645
21645
  *
21646
- * **`.clawd/deploy.json` 不算**(daemon 侧 `repoInfo` 把它排出了 pathspec):那个文件是
21647
- * 对 persona 的**断言**——扫描在写、页面上编辑清单也在写。算进来的话每扫一次就把自己
21648
- * 弄脏一次,`isScanFresh` 永远为假、发布再也点不亮。排除的只有这一个文件,
21649
- * `.clawd/` 下别的(persona.json 等)照旧算。
21646
+ * **两个文件不算**(daemon 侧 `repoInfo` 的 `DIRTY_IGNORED` 把它们排出了 pathspec):
21647
+ * - `.clawd/deploy.json`——发布产物,`deploy:release` 那一刻整份重写;算进来的话发布前后那几秒页面会闪「有未提交的改动」
21648
+ * - `.clawd/persona.json`——结构化配置(tool / model / size …),扫描不读它、流水线从发布 commit 读它,改了不需要重扫
21649
+ * (design 2026-09-21-deploy-page-polish §3.4)
21650
+ * `.clawd/` 下别的、以及 persona 的内容(CLAUDE.md / skills / .mcp.json)照旧算。
21650
21651
  */
21651
21652
  dirty: external_exports.boolean(),
21652
21653
  /** 本地领先远端几个提交 */
@@ -21686,13 +21687,13 @@ var DeployStateSchema = external_exports.object({
21686
21687
  repo: DeployRepoSchema.optional(),
21687
21688
  /** 扫描历史,升序,最后一条最新。没扫过就是空数组 */
21688
21689
  scans: external_exports.array(DeployScanSchema).default([]),
21689
- /** 线上正跑的是哪一版;从没发布过就缺席 */
21690
- released: DeployReleasedSchema.optional(),
21690
+ /** 发布历史,升序,最后一条 = 线上正跑的那版。从没发布过就是空数组 */
21691
+ releases: external_exports.array(DeployReleasedSchema).default([]),
21691
21692
  /** 没仓库时缺席(查不了) */
21692
21693
  secrets: external_exports.array(DeploySecretPresenceSchema).optional(),
21693
21694
  /**
21694
- * 最新那次流水线走到哪了。**缺席是常态**:没推过、没授权 GitHub、GitHub 查不到、仓库还没有 run,
21695
- * 都不该让整页打不开——同 `secrets` 的处理。
21695
+ * 流水线走到哪了:不带 `releaseHead` 时是仓库最新那条 run(= 最后一次发布的),带了就是指名那次发布的。
21696
+ * **缺席是常态**:没推过、没授权 GitHub、GitHub 查不到、仓库还没有 run,都不该让整页打不开——同 `secrets` 的处理。
21696
21697
  */
21697
21698
  run: DeployRunSchema.optional(),
21698
21699
  /**
@@ -21708,6 +21709,9 @@ var DeployReleaseResultSchema = external_exports.object({
21708
21709
  var DeployPersonaArgsSchema = external_exports.object({
21709
21710
  personaId: external_exports.string().min(1)
21710
21711
  }).strict();
21712
+ var DeployGetArgsSchema = DeployPersonaArgsSchema.extend({
21713
+ releaseHead: external_exports.string().min(1).optional()
21714
+ }).strict();
21711
21715
  var DeployScanArgsSchema = DeployPersonaArgsSchema.extend({
21712
21716
  scanBase: ScanBaseKindSchema.optional()
21713
21717
  }).strict();
@@ -24194,8 +24198,8 @@ var METHOD_DOCS = {
24194
24198
  },
24195
24199
  // ---- deploy:*(persona 上云:persona 目录 = git 仓库工作树,发布 = 推送触发仓库流水线)----
24196
24200
  "deploy:get": {
24197
- summary: "\u4E0A\u4E91\u9875\u9762\u8981\u7684\u5168\u90E8\uFF1A\u4ED3\u5E93\u7ED1\u5B9A\u72B6\u6001\uFF08git \u73B0\u7B97\uFF09\u3001\u626B\u63CF\u5386\u53F2\uFF08\u6BCF\u6761\u5E26\u6E05\u5355\u5FEB\u7167\uFF09\u3001\u7EBF\u4E0A\u6B63\u8DD1\u7684\u662F\u54EA\u4E00\u7248\u3001\u4ED3\u5E93 Secrets \u91CC\u5404\u53D8\u91CF\u540D\u586B\u8FC7\u6CA1\u6709\uFF08**\u53EA\u6709\u540D\u5B57\u548C\u65F6\u95F4\uFF0C\u6CA1\u6709\u503C**\uFF09\uFF1Bowner-only",
24198
- args: DeployPersonaArgsSchema
24201
+ summary: "\u4E0A\u4E91\u9875\u9762\u8981\u7684\u5168\u90E8\uFF1A\u4ED3\u5E93\u7ED1\u5B9A\u72B6\u6001\uFF08git \u73B0\u7B97\uFF09\u3001\u626B\u63CF\u5386\u53F2\uFF08\u6BCF\u6761\u5E26\u6E05\u5355\u5FEB\u7167\uFF09\u3001\u53D1\u5E03\u5386\u53F2\uFF08\u6700\u540E\u4E00\u6761 = \u7EBF\u4E0A\u6B63\u8DD1\u7684\uFF09\u3001\u4ED3\u5E93 Secrets \u91CC\u5404\u53D8\u91CF\u540D\u586B\u8FC7\u6CA1\u6709\uFF08**\u53EA\u6709\u540D\u5B57\u548C\u65F6\u95F4\uFF0C\u6CA1\u6709\u503C**\uFF09\u3001\u4E00\u6761\u6D41\u6C34\u7EBF\u72B6\u6001\uFF08\u7F3A\u7701\u4ED3\u5E93\u6700\u65B0\u90A3\u6761\uFF1B`releaseHead` \u6307\u540D\u770B\u54EA\u6B21\u53D1\u5E03\u7684\uFF09\uFF1Bowner-only",
24202
+ args: DeployGetArgsSchema
24199
24203
  },
24200
24204
  "deploy:scan": {
24201
24205
  summary: "\u8D77\u4E00\u6B21\u626B\u63CF\u3002**\u6CA1\u4ED3\u5E93\u5148\u5EFA\u4ED3**\uFF08GitHub REST \u5EFA\u5728\u7EC4\u7EC7\u4E0B\u3001\u79C1\u6709\uFF0Cgit \u63A8\u9996\u4E2A\u63D0\u4EA4\uFF1Btoken \u6765\u81EA\u672C\u673A git \u7684\u8EAB\u4EFD\uFF0C\u6CA1\u6388\u6743\u5148\u62D2\uFF09\u3002\u628A persona \u76EE\u5F55\u63D0\u4EA4\u5230\u672C\u5730\uFF08\u4E0D\u63A8\uFF09\u3001\u5728\u626B\u63CF\u5386\u53F2\u91CC\u8FFD\u52A0\u4E00\u6761\u3001\u8D77 persona-butler \u7684\u626B\u63CF\u4F1A\u8BDD\uFF1B\u6B63\u5728\u626B\u7684\u8BDD\u539F\u6837\u8FD4\u56DE\u4E0D\u8D77\u7B2C\u4E8C\u4E2A\u4F1A\u8BDD\u3002\u5E26 scanBase\uFF08hard / soft\uFF09\u6309\u8BE5\u6863\u4F4D\u626B\uFF08soft \u4E0D\u6210\u7ACB\u81EA\u52A8\u9000 hard\uFF09\uFF0C\u7F3A\u5E2D daemon \u81EA\u52A8\u5B9A\uFF1Bowner-only",
@@ -24787,6 +24791,7 @@ var CliConnectorFindingSchema = external_exports.object({
24787
24791
  var DEPLOY_FILE = import_node_path3.default.join(".clawd", "deploy.json");
24788
24792
  var SCAN_FILE = import_node_path3.default.join(".clawd", "deploy-scan.json");
24789
24793
  var z1 = DeployScanSchema.omit({ id: true, manifest: true }).extend({ releasedHead: DeployScanSchema.shape.head }).strict();
24794
+ var z2 = external_exports.object({ version: external_exports.literal(2), scans: external_exports.array(DeployScanSchema), released: DeployReleasedSchema.optional() }).strict();
24790
24795
 
24791
24796
  // src/deploy/templates.ts
24792
24797
  var CLAWOS_REPO = "ottin4ttc/clawos";