dsh-openwrite 0.2.27 → 0.2.33

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.
Files changed (130) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +55 -6
  3. package/THIRD_PARTY_NOTICES.md +4 -3
  4. package/companions.mjs +508 -0
  5. package/cordis.patch.yml +0 -2
  6. package/docs/CLOSED_ISSUE_FOLLOWUPS.md +5 -3
  7. package/docs/COMPANION_PLUGINS.md +142 -0
  8. package/docs/CONTEXT_SLOTS.md +60 -0
  9. package/docs/COST_MEASUREMENT.md +2 -2
  10. package/docs/DEVELOPMENT.md +6 -11
  11. package/docs/DSH_STORE.md +14 -2
  12. package/docs/EDITOR_SAFETY_REPAIRS.md +17 -0
  13. package/docs/INSTALL.md +112 -4
  14. package/docs/ISSUES_121_123.md +97 -0
  15. package/docs/ISSUES_140_142.md +58 -0
  16. package/docs/ISSUES_149_150_151.md +77 -0
  17. package/docs/ISSUES_98_100.md +2 -0
  18. package/docs/ISSUE_123_FOLLOWUP.md +55 -0
  19. package/docs/ISSUE_146_REVIEW_EVIDENCE.md +53 -0
  20. package/docs/LEARNING.md +1 -1
  21. package/docs/MOBILE_READINESS.md +62 -0
  22. package/docs/PLUGIN_MAINTENANCE.md +1 -3
  23. package/docs/RELEASE_ACCEPTANCE.md +90 -3
  24. package/docs/REVIEW_ROUND_22.md +67 -0
  25. package/docs/REVIEW_ROUND_23.md +48 -0
  26. package/docs/REVIEW_ROUND_25.md +51 -0
  27. package/docs/SELECTION_UPGRADE_REPAIRS.md +16 -0
  28. package/docs/TOOLS.md +933 -0
  29. package/docs/WORKFLOWS.md +5 -5
  30. package/package.json +18 -21
  31. package/packages/openwrite-bridge/lib/client.d.ts +0 -1
  32. package/packages/openwrite-bridge/lib/client.js +90 -9
  33. package/packages/openwrite-bridge/lib/contracts-generated.js +2 -1
  34. package/packages/openwrite-bridge/lib/dog-delivery.d.ts +1 -0
  35. package/packages/openwrite-bridge/lib/dog-delivery.js +10 -4
  36. package/packages/openwrite-bridge/lib/dog-review.js +15 -3
  37. package/packages/openwrite-bridge/lib/domain.d.ts +27 -0
  38. package/packages/openwrite-bridge/lib/domain.js +250 -29
  39. package/packages/openwrite-bridge/lib/host-llm.d.ts +188 -0
  40. package/packages/openwrite-bridge/lib/host-llm.js +657 -0
  41. package/packages/openwrite-bridge/lib/host-web.d.ts +61 -0
  42. package/packages/openwrite-bridge/lib/host-web.js +166 -0
  43. package/packages/openwrite-bridge/lib/index.d.ts +4 -0
  44. package/packages/openwrite-bridge/lib/index.js +150 -6
  45. package/packages/openwrite-bridge/lib/managed-runtime.d.ts +47 -2
  46. package/packages/openwrite-bridge/lib/managed-runtime.js +179 -35
  47. package/packages/openwrite-bridge/lib/tool-policy.js +39 -12
  48. package/packages/openwrite-bridge/lib/tools.js +1238 -1219
  49. package/packages/openwrite-bridge/package.json +7 -5
  50. package/packages/studio-panel/lib/client.js +116667 -114773
  51. package/packages/studio-panel/lib/client.js.map +1 -1
  52. package/packages/studio-panel/lib/types/client/LaunchOpenWrite.d.ts +10 -0
  53. package/packages/studio-panel/lib/types/client/ModelView.d.ts +28 -4
  54. package/packages/studio-panel/lib/types/client/OpenWriteSettings.d.ts +64 -0
  55. package/packages/studio-panel/lib/types/client/SceneWorkbench.d.ts +2 -0
  56. package/packages/studio-panel/lib/types/client/SearchSettings.d.ts +2 -0
  57. package/packages/studio-panel/lib/types/client/SerialWritingView.d.ts +2 -1
  58. package/packages/studio-panel/lib/types/client/TurnMutationSummary.d.ts +2 -0
  59. package/packages/studio-panel/lib/types/client/VditorBody.d.ts +8 -2
  60. package/packages/studio-panel/lib/types/client/api.d.ts +41 -2
  61. package/packages/studio-panel/lib/types/client/browser-download.d.ts +4 -0
  62. package/packages/studio-panel/lib/types/client/companions.d.ts +46 -0
  63. package/packages/studio-panel/lib/types/client/dto.d.ts +22 -0
  64. package/packages/studio-panel/lib/types/client/locales.d.ts +1 -1
  65. package/packages/studio-panel/lib/types/client/manuscript-annotations.d.ts +2 -1
  66. package/packages/studio-panel/lib/types/client/manuscript-overlay.d.ts +2 -1
  67. package/packages/studio-panel/lib/types/client/manuscript-selection.d.ts +18 -5
  68. package/packages/studio-panel/lib/types/client/selection-coordinates.d.ts +15 -0
  69. package/packages/studio-panel/lib/types/client/workspace-chrome.d.ts +41 -0
  70. package/packages/studio-panel/package.json +5 -3
  71. package/plugin.mjs +159 -20
  72. package/preset-definition.mjs +144 -4
  73. package/presets/openwrite/agent.cordis.yml +7 -9
  74. package/presets/openwrite/ops-integration.mjs +28 -0
  75. package/presets/openwrite/preset.yml +2 -1
  76. package/presets/openwrite/skills/canon/SKILL.md +3 -3
  77. package/presets/openwrite/skills/delivery-artifact-query/SKILL.md +41 -0
  78. package/presets/openwrite/skills/dialoguequality/SKILL.md +16 -17
  79. package/presets/openwrite/skills/dog-delivery-verification/SKILL.md +113 -0
  80. package/presets/openwrite/skills/export-book/SKILL.md +3 -3
  81. package/presets/openwrite/skills/foreshadow/SKILL.md +1 -1
  82. package/presets/openwrite/skills/foreshadowing-system/SKILL.md +16 -25
  83. package/presets/openwrite/skills/import-artifact-query/SKILL.md +30 -0
  84. package/presets/openwrite/skills/learn/SKILL.md +3 -3
  85. package/presets/openwrite/skills/novel-creator/SKILL.md +10 -10
  86. package/presets/openwrite/skills/novel-reviewer/SKILL.md +11 -11
  87. package/presets/openwrite/skills/progress/SKILL.md +1 -1
  88. package/presets/openwrite/skills/review-artifact-query/SKILL.md +41 -0
  89. package/presets/openwrite/skills/review-chapter/SKILL.md +2 -2
  90. package/presets/openwrite/skills/revise-span/SKILL.md +5 -5
  91. package/presets/openwrite/skills/style-system/SKILL.md +13 -6
  92. package/presets/openwrite/skills/truth-validation/SKILL.md +9 -12
  93. package/presets/openwrite/skills/workflow-manager/SKILL.md +13 -13
  94. package/presets/openwrite/skills/world-query/SKILL.md +16 -11
  95. package/presets/openwrite/skills/write-next/SKILL.md +1 -1
  96. package/release/{openwrite-5.8.16-py3-none-any.whl → openwrite-5.8.30-py3-none-any.whl} +0 -0
  97. package/release/runtime-manifest.json +4 -12
  98. package/release/source.json +21 -21
  99. package/release/wheels/licenses/OPENSSL-3.6.3-LICENSE.txt +225 -0
  100. package/scripts/maintenance.mjs +67 -7
  101. package/scripts/plugin-doctor.mjs +179 -0
  102. package/scripts/prepare.mjs +11 -2
  103. package/scripts/safe-upgrade.mjs +141 -13
  104. package/dog-tools.mjs +0 -11
  105. package/presets/openwrite/skills/dog-delivery-query/SKILL.md +0 -42
  106. package/presets/openwrite/skills/dog-import-query/SKILL.md +0 -29
  107. package/presets/openwrite/skills/dog-review-query/SKILL.md +0 -42
  108. package/scripts/dog/delivery-stage.js +0 -32
  109. package/scripts/dog/import-chapter.js +0 -20
  110. package/scripts/dog/import-record.js +0 -35
  111. package/scripts/dog/review-dimension.js +0 -41
  112. package/scripts/dog/review-record.js +0 -42
  113. package/vendor/dsh-dog/LICENSE +0 -29
  114. package/vendor/dsh-dog/README.md +0 -114
  115. package/vendor/dsh-dog/UPSTREAM.md +0 -30
  116. package/vendor/dsh-dog/cordis.patch.yml +0 -14
  117. package/vendor/dsh-dog/lib/client.js +0 -2960
  118. package/vendor/dsh-dog/lib/client.js.map +0 -1
  119. package/vendor/dsh-dog/lib/core-BAlgZpLq.js +0 -2074
  120. package/vendor/dsh-dog/lib/core-BiEBMLz3.d.ts +0 -495
  121. package/vendor/dsh-dog/lib/core.d.ts +0 -2
  122. package/vendor/dsh-dog/lib/core.js +0 -2
  123. package/vendor/dsh-dog/lib/index.d.ts +0 -143
  124. package/vendor/dsh-dog/lib/index.js +0 -1279
  125. package/vendor/dsh-dog/package.json +0 -110
  126. package/vendor/dsh-dog/schemas/schema-0.2/graph.schema.json +0 -139
  127. package/vendor/dsh-dog/schemas/schema-0.2/report.schema.json +0 -87
  128. package/vendor/dsh-dog/schemas/schema-0.2/run.schema.json +0 -259
  129. package/vendor/dsh-dog/schemas/schema-0.2/runtime-event.schema.json +0 -105
  130. package/vendor/dsh-dog/schemas/schema-0.2/verification.schema.json +0 -40
@@ -0,0 +1,51 @@
1
+ # 第二十五轮:插件侧资源生命周期
2
+
3
+ ## 结论:1 个真实缺陷(已修)
4
+
5
+ ## Y-2:失败升级留下整个 profile 副本
6
+
7
+ `upgradeProfile` 的 staging 目录是**完整 profile 副本,含 node_modules**(数百 MB)。它的 finally 只关 log 和释放锁,**从不删除 staging**。
8
+
9
+ 全仓库只有一处 `openwrite-stage-`(创建处),没有任何清理处——`recoverUpgrade` 也不清理。所以每次失败升级都永久留下一个 staging 目录,重试一次再多一个,无上限。
10
+
11
+ 对比:同文件其他资源都有 finally 保护——文件句柄(第 90 行)、pending 文件(第 94 行)、定时器/ drain(第 163 行)、恢复租约(第 208/283/307 行)。**只有 staging 漏了**,而它是最大的那个。
12
+
13
+ ### 修复
14
+
15
+ ```js
16
+ } finally {
17
+ try { await log?.close() } finally {
18
+ try { await rm(staging, { recursive: true, force: true }) } catch { /* best effort */ }
19
+ await release()
20
+ }
21
+ }
22
+ ```
23
+
24
+ 成功路径上 staging 已被 `rename` 到 target,所以这个 `rm` 是 no-op;失败路径上 reclaimed。
25
+
26
+ ## 已确认正确的部分
27
+
28
+ - `managed-runtime.download`:`.partial` 文件有 finally 清理,且启动时清理历史残留(issue #82 的修复)
29
+ - `install.sh`:`set -euo pipefail` 保证 `mv` 失败即中止(rsync 不执行);marker 写入已原子化(V-2)
30
+ - `safe-upgrade` 的锁:`mkdir` 原子创建 + dev/ino/birthtime 身份校验 + 心跳续租 + 陈旧回收
31
+ - Core 侧 `atomic_write`:finally 清理(第二十四轮统一了 5 处)
32
+
33
+ ## 验证
34
+
35
+ | 变异 | 结果 |
36
+ |---|---|
37
+ | Y-2a 失败升级不清理 staging | 3 failing ✓ |
38
+
39
+ | | |
40
+ |---|---|
41
+ | 插件 test:maintenance | **81 passed / 0 failed**(原 80) |
42
+ | docs:check / doctor | 全绿 |
43
+ | studio-panel | **41 files / 358 passed / 0 failed** |
44
+
45
+ 改动:插件 212 项,未提交。
46
+
47
+ ## 本轮的模式
48
+
49
+ 又是"同一个缺陷类修了 N 个、漏 1 个":`safe-upgrade.mjs` 内部有 5 处 finally 覆盖了句柄/临时文件/定时器/租约,**唯独漏了最大的那个资源**(staging 目录)。
50
+
51
+ 这与第二十四轮(5 个模块有上限,1 个没有)、第十六轮(5 个模块原子写,1 个没有)是同一模式:**逐个处理具体症状时不漏大项,因为大项往往不在当时视野里**。只有按维度(资源生命周期)主动枚举才能找出来。
@@ -0,0 +1,16 @@
1
+ # 选区与中断升级补修
2
+
3
+ 本轮记录 Core 5.8.19 的历史候选补修,已包含于正式 0.2.28(最终 Core 5.8.20);5.8.19 候选包未单独发行。来自已关闭报告的相关路径复查,四个问题均先独立复现,再加入回归。
4
+
5
+ | 问题 | 修复后行为 | 验证 |
6
+ | --- | --- | --- |
7
+ | CRLF 或混合行尾在编辑器内变成 LF,选区错位或原文不匹配 | 根据完整原文与编辑器文本映射行尾边界,发送保存文件的原始片段 | 原生面板与 wheel 内独立 Studio 两条界面路径、真实 HTTP 多行选区 |
8
+ | emoji 等字符的 JavaScript UTF-16 与 Python 字符索引不一致 | 请求使用原文 Unicode 码点坐标,批注也按原文坐标映射;重复句仍命中所选的那次 | emoji 前缀、第二次重复句、混合行尾与无末尾换行组合 |
9
+ | 升级中断后 active profile 已移走,恢复脚本找不到依赖 | 恢复使用与正常升级互斥的原生文件锁,无须从已移走的 profile 加载依赖;恢复前核对备份清单指纹 | 独立脚本、失效依赖链接、锁互斥/心跳/陈旧锁和修改备份拒绝 |
10
+ | 被中断的缓存写入留下不完整 tgz,重试永久冲突 | 完整写入并校验临时文件,再原子替换损坏缓存 | 预置部分缓存后重试成功,校验包指纹及临时文件清理 |
11
+
12
+ 映射只容许换行表示不同;正文编辑、普通空格与 NBSP 差别、半个代理对或半个 CRLF 边界均拒绝,不做模糊匹配。提交修订时另带整篇 revision:即使选区外正文变化,也在调用生成器前返回 DOCUMENT_CONFLICT,现有文件保持原样。两端共用映射源,docs:check 校验 wheel 中生成字节。
13
+
14
+ 本地验证:Core 全量 1542 passed / 32 skipped,修订服务与真实 HTTP 23 passed,原生预设/升级/运行时 40 passed,managed 33 passed,界面 319 passed,插件完整检查通过。独立 Studio 用打包 wheel 内的实际绑定代码测试隐藏 textarea 的换行规范化;HTTP 用实际两端映射模块发送请求。测试使用隔离自动化目录,未调用模型。
15
+
16
+ 跨平台最终结果及确切来源在 [发布验收](RELEASE_ACCEPTANCE.md) 记录。#123 的宿主正式发布与 Android/Termux 真机验证仍未完成,最终 0.2.28 发行保留上述限制,不将它们标记完成。