odai-dsh-agent 0.2.35 → 0.2.37
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.
- package/README.md +8 -8
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +0 -1
- package/build/src/installer.mjs.map +1 -1
- package/package.json +3 -3
- package/preset/odai/runtime/context-activation.d.mts +2 -11
- package/preset/odai/runtime/context-activation.d.mts.map +1 -1
- package/preset/odai/runtime/context-activation.mjs +2 -14
- package/preset/odai/runtime/context-activation.mjs.map +1 -1
- package/preset/odai/runtime/context-capability.d.mts +1 -1
- package/preset/odai/runtime/context-capability.d.mts.map +1 -1
- package/preset/odai/runtime/context-capability.mjs +1 -3
- package/preset/odai/runtime/context-capability.mjs.map +1 -1
- package/preset/odai/runtime/governance-bundle.d.mts +3 -3
- package/preset/odai/runtime/governance-bundle.d.mts.map +1 -1
- package/preset/odai/runtime/governance-bundle.mjs +2 -2
- package/preset/odai/runtime/governance-bundle.mjs.map +1 -1
- package/preset/odai/runtime/governance.d.mts +0 -1
- package/preset/odai/runtime/governance.d.mts.map +1 -1
- package/preset/odai/runtime/governance.mjs +4 -21
- package/preset/odai/runtime/governance.mjs.map +1 -1
- package/preset/odai/runtime/index.d.mts.map +1 -1
- package/preset/odai/runtime/index.mjs +4 -3
- package/preset/odai/runtime/index.mjs.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.mjs +11 -34
- package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -1
- package/preset/odai/runtime/prompt-runtime.d.mts +0 -2
- package/preset/odai/runtime/prompt-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/prompt-runtime.mjs +8 -39
- package/preset/odai/runtime/prompt-runtime.mjs.map +1 -1
- package/preset/odai/runtime/responsibility-gap.d.mts +0 -1
- package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -1
- package/preset/odai/runtime/responsibility-gap.mjs +0 -3
- package/preset/odai/runtime/responsibility-gap.mjs.map +1 -1
- package/preset/odai/runtime/review-evidence.mjs +1 -1
- package/preset/odai/runtime/review-evidence.mjs.map +1 -1
- package/preset/odai/runtime/role-overlays.d.mts.map +1 -1
- package/preset/odai/runtime/role-overlays.mjs +5 -1
- package/preset/odai/runtime/role-overlays.mjs.map +1 -1
- package/preset/odai/runtime/router.d.mts +0 -6
- package/preset/odai/runtime/router.d.mts.map +1 -1
- package/preset/odai/runtime/router.mjs +12 -147
- package/preset/odai/runtime/router.mjs.map +1 -1
- package/preset/odai/runtime/routing-context.d.mts +0 -1
- package/preset/odai/runtime/routing-context.d.mts.map +1 -1
- package/preset/odai/runtime/routing-context.mjs +11 -16
- package/preset/odai/runtime/routing-context.mjs.map +1 -1
- package/preset/odai/runtime/runtime-config.d.mts +0 -1
- package/preset/odai/runtime/runtime-config.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-config.mjs +1 -7
- package/preset/odai/runtime/runtime-config.mjs.map +1 -1
- package/preset/odai/runtime/runtime-support.d.mts +1 -7
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.mjs +9 -4
- package/preset/odai/runtime/runtime-support.mjs.map +1 -1
- package/preset/odai/runtime/runtime-types.d.mts +0 -1
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
- package/preset/odai/runtime/semantic-memory.d.mts.map +1 -1
- package/preset/odai/runtime/semantic-memory.mjs +13 -7
- package/preset/odai/runtime/semantic-memory.mjs.map +1 -1
- package/preset/odai/runtime/skill-bundle.d.mts +2 -2
- package/preset/odai/runtime/skill-bundle.d.mts.map +1 -1
- package/preset/odai/runtime/skill-bundle.mjs +1 -1
- package/preset/odai/runtime/skill-bundle.mjs.map +1 -1
- package/preset/odai/runtime/tool-runtime.d.mts +1 -3
- package/preset/odai/runtime/tool-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/tool-runtime.mjs +9 -17
- package/preset/odai/runtime/tool-runtime.mjs.map +1 -1
- package/preset/odai/runtime/work-policy.d.mts +6 -0
- package/preset/odai/runtime/work-policy.d.mts.map +1 -0
- package/preset/odai/runtime/work-policy.mjs +49 -0
- package/preset/odai/runtime/work-policy.mjs.map +1 -0
- package/preset/odai/skills/odai/SKILL.md +41 -36
- package/preset/odai/skills/odai/manifest.json +4 -4
- package/preset/odai/skills/odai/references/care.md +1 -1
- package/preset/odai/skills/odai/references/craft.md +14 -13
- package/preset/odai/skills/odai/references/dao.md +5 -4
- package/preset/odai/skills/odai/references/leverage.md +4 -4
- package/preset/odai/skills/odai/references/memory.md +20 -0
- package/preset/odai/skills/odai/references/planning.md +18 -67
- package/preset/odai/skills/odai/references/verification.md +17 -20
- package/preset/odai/skills/odai-orchestration/SKILL.md +1 -11
- package/preset/odai/skills/odai-orchestration/assets/claude-agents/agent.md +0 -2
- package/preset/odai/skills/odai-orchestration/manifest.json +3 -2
- package/preset/odai/skills/odai-orchestration/references/install.md +10 -0
- package/preset/odai/skills/odai-orchestration/references/orchestration.md +2 -8
- package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.d.mts +3 -3
- package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.mjs +2 -2
- package/preset/odai/skills/odai-orchestration/scripts/install-routing.mjs +100 -55
- package/preset/odai/runtime/skill-evolution.d.mts +0 -112
- package/preset/odai/runtime/skill-evolution.d.mts.map +0 -1
- package/preset/odai/runtime/skill-evolution.mjs +0 -1440
- package/preset/odai/runtime/skill-evolution.mjs.map +0 -1
- package/preset/odai/skills/odai/references/support.md +0 -29
|
@@ -1,86 +1,37 @@
|
|
|
1
1
|
# 工程实施计划
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
需要正式工程计划或跨轮交接时使用。本文件负责让整体方案达到可执行程度并约束后续实施;具体制作由 `references/craft.md` 负责,完成判断由 `references/verification.md` 负责。普通任务直接想清楚并完成,不为“复杂”自动创建计划文件。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 先解决整体路线
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
计划从用户最终结果、当前差距和不可接受结果出发。先核对适用项目指令、真实入口、受影响的调用与数据关系、既有决定及实际基线,再决定结构与实施顺序;窄任务不扩大成全仓调查。用户提供的根因是待核实输入,历史报告和摘要是线索。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
解释各部分如何共同实现结果,尤其是跨文件、接口、安装、运行与发布入口之间的连接;不能以每个模块分别能改或各有测试代替组合可行。没有实质路线分歧时不制造多方案。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- 聊天中的计划不自动授权写文件。用户指定产物或项目已有计划惯例时更新该位置;确需持久交接且写入已获授权时,才新建计划文件。
|
|
13
|
-
- 计划服务于后续决定和行动,不复述仓库目录或堆满不适用栏目。计划完成只表示路线、边界与验收已达到可执行标准,不表示实现已经完成。
|
|
14
|
-
- 需求、非目标、保留行为和不可接受结果以当前用户意图和有效决定为准;事实查证与共同讨论遵循 `references/dao.md`,不用正式计划的结构替代对目标的理解,也不要求用户先给实施方案。
|
|
15
|
-
- 正式计划记录其依据的用户目标与授权。用户纠正使目标、范围、保留行为、不可接受结果或实施授权变化时,只让受影响的工作包、验收和授权失效;保留仍成立部分,重新对齐后再继续,不用旧计划替用户维持已经改变的目标。
|
|
11
|
+
分清期望、现状、建议和未知。方案需要某种能力不等于项目已具备;未证依赖说明查证方式及缺失时的处理或停止条件,不先写成已有再用实施前确认兜底。材料冲突保留,命令从 CI、manifest 或项目权威入口取得,找不到就标为待查,不凭经验捏造。
|
|
16
12
|
|
|
17
|
-
##
|
|
13
|
+
## 确定方案,约束实施
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
- 调查深度只到足以区分当前行为、目标缺口、可行路线和主要风险。窄改动不做全仓盘点;跨 API、持久化、迁移、恢复或外部依赖时才跟踪相应端到端路径。
|
|
21
|
-
- 分开目标合同与当前实现。文档或用户决定说明期望,当前源码、配置、测试和真实运行说明现状;冲突同时记录,不让一方冒充另一方。方案所需或常见的能力不因此成为项目已有能力;未证依赖保留查证及缺失时的处理或停止条件,不能先写成已有,再以实施前确认兜底。
|
|
22
|
-
- 分清已确认事实、待核实风险与未知,并说明依据;仅在机器接口或项目模板要求时使用固定标签。只有当前 checkout 有触发路径和影响证据时才把缺陷或 blocker 写成已确认;未知项只补会影响后续行动的查证方式与决定条件。
|
|
23
|
-
- 验证命令从 CI、manifest、Makefile、项目文档或已有脚本提取。找不到时写成待发现工作,不凭经验伪造命令。
|
|
15
|
+
计划就绪意味着:用户要求均有落点,整体路线及关键依赖成立,保持项、改动范围、失败处理和完成依据足以指导实施。影响路线的未决项不能假装已解决;它们只阻断依赖部分。只请求计划时交付计划,不修改代码、测试、schema、依赖、数据或外部系统;宿主 plan mode 的更严格边界仍有效。
|
|
24
16
|
|
|
25
|
-
|
|
17
|
+
方案就绪后连同依赖顺序一起固定,按已有实施授权执行。普通细节在这些约束内自主处理,不反复规划、报批或提高验收门槛。冻结不产生新授权,也不覆盖后续用户决定;新证据推翻关键前提时说明事实和影响,不按失效方案硬做。
|
|
26
18
|
|
|
27
|
-
|
|
19
|
+
按能形成可用结果的依赖关系组织工作,不按文件逐个孤立收尾。每个工作包说明它如何补足整体结果、与前后部分怎样衔接、允许改变和必须保持什么,以及怎样确认该部分成立。只有存在真实依赖、风险门、迁移过渡或交接需要时才分阶段;独立部分可并行,共享状态和写域须协调。
|
|
28
20
|
|
|
29
|
-
|
|
30
|
-
- **跨边界或交接计划**:再加需求覆盖、当前与目标流程、带依赖的工作包、允许与禁止范围、失败行为和验收证据。
|
|
31
|
-
- **跨轮次、高影响或迁移计划**:再加 checkout 基线、唯一执行状态、阶段门、兼容与回退、故障恢复、真实依赖验收、停止条件和恢复顺序。
|
|
21
|
+
要求容易遗漏或需要交接时才建立需求映射,保留原文来源及有效取代关系。精确行为合同按需说明输入、前置状态、操作、成功、禁止结果、失败恢复与证据,不要求固定模板。高影响、兼容或迁移任务补足实际需要的过渡状态、退路和恢复顺序,不堆满无关栏目。
|
|
32
22
|
|
|
33
|
-
|
|
23
|
+
局部修复先确认它能消除目标问题,而非只消除一条失败输出;现有稳定复现可用于防回归,但不为格式造红测或新测试。整体使用结果与主要风险的证据按 verification reference 选择,计划完成不等于实现完成,工作包全部结束也不自动证明组合结果成立。
|
|
34
24
|
|
|
35
|
-
##
|
|
25
|
+
## 跨轮执行与恢复
|
|
36
26
|
|
|
37
|
-
|
|
27
|
+
只有确需中断恢复时才外化状态;未采纳建议、普通观察和改进候选不自动变成后续任务,能当轮完成的工作不推入队列。聊天中的计划不自动授权写文件;用户指定位置或已有惯例优先,确需持久交接且写入已授权时才创建。同一任务只保留一个主状态,优先复用已有载体;缺少合适载体时使用 `assets/task-state.md`。计划和状态分开存放时互相指向,不复制进度。
|
|
38
28
|
|
|
39
|
-
|
|
29
|
+
持久目标与自动续作只保存待完成结果,不证明计划正确,也不要求用满轮数。每次恢复先核对当前用户要求、实际产物与剩余差距,再决定下一步;不能只找清单中首个未勾项。已经成立的部分不重做,未成立的要求不删除;关联错误反复出现时回到完整结果重判路线,不沿清单继续堆补丁。
|
|
40
30
|
|
|
41
|
-
|
|
42
|
-
Given: 输入、前置状态和配置
|
|
43
|
-
When: 可重复的操作或事件
|
|
44
|
-
Then: 可观察成功结果
|
|
45
|
-
And not: 明确禁止结果
|
|
46
|
-
Failure: 失败状态、持久化与恢复行为
|
|
47
|
-
Evidence: 测试、命令、API、UI、数据或外部结果
|
|
48
|
-
```
|
|
31
|
+
主状态只保留能改变继续方式的信息:目标及授权来源、当前方案、相关 checkout 与 dirty 基线、实际已实现和已验证结果、剩余差距、失效证据、关键未知及下一步。续作读取适用项目指令和唯一主状态,核对相关 diff 与真实结果;同一载体不重复读取,摘要和执行者自报不能替代原件。
|
|
49
32
|
|
|
50
|
-
|
|
33
|
+
用户纠正或相关事实变化只使受影响的计划、授权和证据失效,保留仍有效的部分。对外说明已做出的结果和实际阻碍,不用计划百分比或“基本完成”掩盖未完成项。
|
|
51
34
|
|
|
52
|
-
|
|
53
|
-
- 相关 symbol、路径或系统边界,以及允许变化和必须保持;
|
|
54
|
-
- 前置依赖、失败行为、兼容或回退要求;
|
|
55
|
-
- 定向验证、最终证据和会使本包停止或回到上游决定的条件。
|
|
35
|
+
## 交付计划
|
|
56
36
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
## 验证、状态与续作
|
|
60
|
-
|
|
61
|
-
- 计划中的验收按 `references/verification.md` 确定要证明的属性与相称证据,并写明取得证据的工作及其依赖。
|
|
62
|
-
- 计划就绪至少要求:明确要求均有落点;当前事实与未知分开;工作包依赖和边界可执行;命令有项目来源;主要失败、恢复和回归风险有相称验收;未获授权动作和停止条件清楚。
|
|
63
|
-
- 只有任务确实需要中断恢复时才外化执行状态。优先复用已有计划、issue、TODO 或账本;没有合适载体时使用 `assets/task-state.md`,同一任务只保留一个主状态。
|
|
64
|
-
- 计划文档承担主状态时不另建独立账本;独立账本承担主状态时,计划只保存账本路径和稳定合同,不复制当前工作包、完成项或下一动作。非主载体不能维护另一份进度。
|
|
65
|
-
- 主状态记录用户目标与授权依据、checkout revision 与相关 dirty 基线、当前工作包、已完成项及证据、失效证据、阻断、下一项可验证动作和停止条件。用户目标、相关源码、合同或基线变化会使受影响状态与证据 stale,重新对齐或重验后才能恢复。
|
|
66
|
-
- 续作时重新读取项目指令、计划及其指向的主状态;两者相同时只读一次。核对 checkout 与相关 diff,定位首个未完成且已解锁的工作包,从唯一下一动作恢复。聊天摘要和执行者自报不能替代主状态或原始证据。
|
|
67
|
-
- 实施状态与计划状态分开。只能根据当前证据标记未开始、实施未验证、已验证、阻断或完成,不使用“基本完成”掩盖未决项。
|
|
68
|
-
|
|
69
|
-
## 最小交付结构
|
|
70
|
-
|
|
71
|
-
项目没有既有模板时,按实际需要从下列结构取用:
|
|
72
|
-
|
|
73
|
-
```markdown
|
|
74
|
-
# <任务>实施计划
|
|
75
|
-
|
|
76
|
-
> 状态:计划就绪;不表示实现完成。
|
|
77
|
-
|
|
78
|
-
## 目标、非目标与完成证据
|
|
79
|
-
## 当前事实、缺口与未知
|
|
80
|
-
## 需求覆盖与必须保持
|
|
81
|
-
## 工作包、依赖与允许范围
|
|
82
|
-
## 验证、失败恢复与停止条件
|
|
83
|
-
## 执行状态与续作方式(仅在需要时;非主状态只放主状态指针)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
交付前删除无用途的章节和占位符,确认计划没有暗中扩大产品范围、写入授权或完成声明,并让下一执行者无需重新决定目标、边界和验收即可开始首个工作包。
|
|
37
|
+
按项目已有格式给出足以实施的内容;没有模板时用目标、非目标与现状,整体方案,必要工作及依赖,完成依据和关键未决项即可。只在需要交接时加入状态位置。删除没有用途的章节和占位符,让实施者无需重新决定整体路线即可开始,同时知道什么新事实会使方案需要调整。
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
# 验证与完成
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
完成依据、组合交付或证据适用性仍有具体疑问时读取。治理负责目标与授权,本文件负责选择证据和判断放行;普通小改动不必先加载本文件。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 选择证据
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- 围绕用户结果、明确限制和不可接受结果确定要证明的属性,纳入证据显示为目标所必需的条件;不把假定根因、模型选择的手段或流程当成成功标准。
|
|
8
|
+
- 每份证据绑定实际对象、版本与属性。配套检查只证明所覆盖的部分,主要产物及组合使用仍须有对应证据;测试、构建、静态检查、diff、截图、日志和人工观察不能互相冒充。声明或配置不证明真实执行,端到端结论须有实际调用或使用链。
|
|
9
|
+
- 按失败代价、影响范围、不确定性和已有覆盖选择最轻的充分验证。文案、注释、格式或局部样式通常检查差异及必要效果即可;行为、接口、权限或数据变化则覆盖相关调用方、边界和错误路径。项目规定的检查照其适用范围执行,不把“少跑”当目标,也不默认搭环境、启动浏览器或跑全量。
|
|
10
|
+
- 事实核验使用项目指定的查询、命令、样本和来源,不能用相似字段或近似范围替代。指定验证器不可用时先查兼容入口;仍不可用才用覆盖同一属性的其他证据,并说明原验证器未通过,不称自写近似检查为等价。
|
|
11
|
+
- 运行检查须能说明它要排除的具体失败。新增测试还须有长期回归价值和现有覆盖缺口,不为固定正文措辞、复述实现或一次性改动造测试。内部判断无需另写报告,除非用户要求或交接需要。
|
|
8
12
|
|
|
9
|
-
##
|
|
13
|
+
## 判断结果
|
|
10
14
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- 验收先写要证明的属性,不把模型自行选择的命令、工具或流程升级成成功条件;只有用户或权威约定明确点名时,指定方法本身才属于契约。指定验证器因当前启动入口或依赖不可用而失败时,先核对现有环境能否用兼容入口运行同一验证器;仍不可用才采用真正覆盖同一属性的其他证据,并明确它没有证明原验证器已通过,不把自写近似检查称为等价。证据仍缺失就如实标明。
|
|
15
|
+
- 按当前有效要求判断完整交付。整体整理须检查本体、配套及其连接,分别有据决定保留、合并、修正或退役,未检查不能写成无需改动;局部通过、未发现问题或若干局部审查不证明整体成立。未知只阻断依赖项,其余先交付。
|
|
16
|
+
- 审查限于受托属性、必要依赖和既有验收。缺陷须有触发与影响证据,并对应既有要求或安全边界;偏好、范围外建议和证据不足不能成为已证实失败。真实失败须处理,不为变绿放宽验收。
|
|
17
|
+
- 属性确需独立判断,或用户明确要求独立复核时,取得能检验当前依据与盲点的独立证据;重复自检或复述同一摘要不能替代。无法取得则说明未验证属性及继续条件,只阻断依赖它的放行。
|
|
18
|
+
- 区分已实施、已验证、未验证和建议,不用“应该、看起来、理论上”表达成功。版本、候选、提交、发布和迁移状态核对机器事实源、当前产物与真实事件;未结束原位更新,迁移时同步权威载体与用户文档,历史记录不与当前状态争夺所有权。
|
|
16
19
|
|
|
17
|
-
##
|
|
20
|
+
## 复用与收口
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
- 声明、配置和注释只证明“写了什么”;局部观测只证明观测范围;真实调用或使用链才证明端到端结果。
|
|
21
|
-
- 审查范围限于点名属性、必要依赖与既有验收。问题须对应已确认要求、必要条件或安全边界;偏好、范围外建议和证据不足分别处理,不能冒充已证实失败。采纳与修正依据原始证据;未发现问题或多份局部通过不能代替完整需求覆盖与整体结果,已证实的失败必须处理。
|
|
22
|
-
- 分批改动按最终组合判断结果,复用未受影响的证据;只有组合改变了共享契约、依赖顺序或已有结论的适用条件时,才补查相应属性。修复某个失败项后先重验该项及其受影响依赖,不因又改了文件就重跑全部测试、构建或打包。
|
|
23
|
-
- 冲突解决或兼容性编辑须在有效写入授权内,并有对应范围和验收。组合跨越重大安全、数据、并发、兼容、迁移或公共契约边界时,辨明现有证据尚未覆盖的组合属性,再补足相称验证。属性确需独立判断,或用户明确要求独立复核时,须取得能够检验当前依据与盲点的证据;重复自检、复述同一摘要或增加意见数量不能替代独立性。无法取得时只阻断依赖该证据的放行,说明未验证属性和继续条件。
|
|
24
|
-
- 改动落地但关键场景未验证时,明确区分已实施、已验证与未验证,不用“应该、看起来、理论上”表达成功。
|
|
25
|
-
- 实际结果或用户反馈与原判断不符时,以新证据先纠正当前产物与受影响的完成或放行结论,使相应旧证据失效并修正验收与后续做法;不维护已被推翻的立场。再按教训的适用范围选择局部测试、实现机制或通用规则;推广须有可复现的适用问题与保持项证据,不因一次失误扩大永久流程。
|
|
26
|
-
- 版本、候选、阶段、提交、发布或迁移状态属于可验证结果。先核对机器可读事实源、当前产物与真实事件;前一状态未实际结束时更新同一状态,不创建后继值或把当前候选写成历史。确需迁移时,核对权威载体与用户文档指向同一当前值,历史记录按事实保留但不与现役状态争夺所有权。
|
|
27
|
-
- 证据足够就停止;每次追加验证前须有尚未闭合、且结果会改变完成判断的具体属性。同一证据范围已通过且没有新失败、冲突、变更或风险时,不重复验证;不能因安心、工具可用、发现范围外问题或追求完整无限提高完成门,也不能因疲劳或流程完成降低验收。
|
|
22
|
+
分批改动按最终组合验收,复用未受影响的证据。共享契约、依赖顺序或适用条件改变时补查对应属性,尤其注意安全、数据、并发、兼容和迁移的组合风险;修复失败后先重验该项及受影响依赖,不因又改了文件就重跑全部检查或打包。
|
|
28
23
|
|
|
29
|
-
|
|
24
|
+
实际结果或用户反馈推翻旧判断时,先修正产物、受影响的完成结论与证据,再决定是否需要局部测试、实现机制或通用规则;推广须有可复现的问题和保持项依据,不因一次失误扩大永久流程。跨轮恢复由 `references/planning.md` 负责。
|
|
25
|
+
|
|
26
|
+
只有新变更、新失败、冲突或尚未覆盖的必要属性才追加验证;不为范围外建议提高验收门槛,也不因疲劳降低标准。
|
|
@@ -13,14 +13,4 @@ description: Odai 的可选多能力编排。用户要求分工、独立规划
|
|
|
13
13
|
- 选择职责和准备交接时读取 `references/orchestration.md`。controller 持有整体结果,researcher、planner、reviewer、frontend 是可选职责预设,不是固定阶段、模型等级或权限来源。
|
|
14
14
|
- 宿主已有符合要求的原生能力时使用它;配套适配器只补模型映射、生成、安装和调用核验。按当前用户映射与真实工具权限执行。
|
|
15
15
|
- 治理、编排与宿主权限分别有效。DSH 已内置本技能时使用其现有能力;不额外运行其他宿主安装器。
|
|
16
|
-
|
|
17
|
-
## 安装与配置
|
|
18
|
-
|
|
19
|
-
安装本技能和 `odai` 使规则与脚本可发现,不自动修改宿主配置。用户要求配置路由时:
|
|
20
|
-
|
|
21
|
-
1. 从宿主确认实际模型、能力与作用域。controller、planner、reviewer 显式映射,researcher 和 frontend 按需选择;不填造模型 ID。
|
|
22
|
-
2. 先用 `scripts/build-routing.mjs --help` 查看生成接口;治理安装位置不相邻时显式传入 `--governance-root`。
|
|
23
|
-
3. 需要持久安装、更新或卸载时使用 `scripts/install-routing.mjs --help` 对应入口,说明映射、写入范围与新会话生效条件。已有授权覆盖本次动作时直接执行;否则完成准备后取得授权。
|
|
24
|
-
4. 按安装结果在新会话核对真实角色和模型。生成成功只证明文件生成,不证明路由已调用。卸载与更新使用托管清单,遇到外部修改不覆盖。
|
|
25
|
-
|
|
26
|
-
没有宿主适配或无法取得所需能力时,继续安全可完成的部分,准确交付剩余缺口。不要把技能已安装、角色已配置或一次自报当成调用和收益证明。
|
|
16
|
+
- 用户要求为 Codex、Claude Code 或 Copilot 安装、更新、卸载或修复路由时读取 `references/install.md`;普通任务不需要它。
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "odai-orchestration",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"governanceContract":
|
|
4
|
+
"version": "0.2.0",
|
|
5
|
+
"governanceContract": 9,
|
|
6
6
|
"delegationFile": "contracts/delegation.md",
|
|
7
7
|
"roleFiles": {
|
|
8
8
|
"controller": "assets/routing-roles/controller.md",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"assets/claude-agents/agent.md",
|
|
34
34
|
"assets/copilot-agents/agent.md",
|
|
35
35
|
"references/orchestration.md",
|
|
36
|
+
"references/install.md",
|
|
36
37
|
"scripts/build-routing.mjs",
|
|
37
38
|
"scripts/install-routing.mjs",
|
|
38
39
|
"scripts/run-role.mjs",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 宿主路由的安装与配置
|
|
2
|
+
|
|
3
|
+
用户要求为 Codex、Claude Code 或 Copilot 安装、更新、卸载或修复职责路由时读取。安装本技能和 `odai` 只使规则与脚本可发现,不自动修改宿主配置;DSH 已内置编排时使用其现有能力,不运行这里的安装器。
|
|
4
|
+
|
|
5
|
+
1. 从宿主确认实际模型、能力与作用域。controller、planner、reviewer 显式映射,researcher 和 frontend 按需选择,不从其他职责继承映射;从真实模型目录核对,不虚构模型 ID。默认当前项目,跨项目作用域须明确授权。
|
|
6
|
+
2. 先用 `scripts/build-routing.mjs --help` 查看生成接口;治理安装位置不相邻时显式传入 `--governance-root`。
|
|
7
|
+
3. 需要持久安装、更新或卸载时使用 `scripts/install-routing.mjs --help` 对应入口,说明映射、写入范围与新会话生效条件。已有授权覆盖本次动作时直接执行;否则完成准备后取得授权。
|
|
8
|
+
4. 按安装结果在新会话核对真实角色和模型的实际调用。生成文件和配置成功只证明文件生成,不证明路由已调用。托管清单负责更新、漂移检查、卸载与恢复,遇到外部修改不覆盖。
|
|
9
|
+
|
|
10
|
+
安装只启用按缺口选择的分工,不注入每轮必走流程。没有宿主适配或无法取得所需能力时,治理仍独立工作:继续安全可完成的部分,准确交付剩余缺口;不要把技能已安装、角色已配置或一次自报当成调用和收益证明。
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
## 任务包与回交
|
|
17
17
|
|
|
18
|
-
-
|
|
19
|
-
- reviewer
|
|
18
|
+
- 默认使用新鲜独立上下文。给清受托问题、范围、有效用户决定与职责合同;原文及取代关系、基线、依赖、原件、工具结果、未决项和停止条件只带本次判断所需部分。注明用户主要语言,不复制完整总控会话,不裁掉必要要求或安全边界,不把清单当必填表。
|
|
19
|
+
- reviewer 的包标明被审对象与版本,按审查属性提供相关问答、规划、实际 diff 或执行回执;缺项保留未判定,不为凑齐材料额外制造工作。固定证据包保留不可变原件;宿主允许时可补读范围内、能绑定被审版本的源码,但补读不证明执行。所需规则不可访问时不得冒充已提供。
|
|
20
20
|
- 只有无法可靠裁剪的既往交互本身构成决定性证据,宿主可核实继承范围,且收益足以支持额外上下文与延迟时才继承会话;继承范围未知时不使用 fork。
|
|
21
21
|
- 再次交接只补增量、原 finding 与受影响证据,按治理的 verification reference 判断证据是否仍有效;截断先修交接。
|
|
22
22
|
- 回交区分实际产物、已验证结果与建议。总控核实贡献并整合;稳定分工须有重复使用依据,质量或成本改善须有可比证据,不按角色与调用数量衡量价值。
|
|
@@ -33,9 +33,3 @@
|
|
|
33
33
|
- 只读制作返回可应用补丁或具体方案;提供基线、目标文件、原件、允许变化、保持项和验收。总控核对并应用后才算落盘,组合验证后才算通过。研究、规划和审查不会因只读就变成补丁制作责任。
|
|
34
34
|
- 直接写入须有真实宿主支持、授权、精确写域与可核对隔离。必读规则不可访问或无法确认同版时退回只读。多个写入者保持同一基线;路径重叠或依赖紧密时串行,独立时才使用 worktree 等隔离。
|
|
35
35
|
- review 只读。修复按已确认 finding 逐项回交,不为变绿改验收,不把新建议顺带加入写域。
|
|
36
|
-
|
|
37
|
-
## 配置宿主
|
|
38
|
-
|
|
39
|
-
仅在用户要求安装、更新、卸载或修复路由时使用配套安装器。默认当前项目,跨项目作用域须明确授权;从真实模型目录核对映射,不虚构模型 ID。researcher 和 frontend 不从其他职责继承映射。
|
|
40
|
-
|
|
41
|
-
安装只启用按缺口选择的分工,不注入每轮必走流程。托管清单负责更新、漂移检查、卸载与恢复;外部修改不可覆盖。新会话中核对角色与模型的实际调用,生成文件和配置成功不冒充调用成功。没有可用路由时,治理仍独立工作。
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export const RUNTIME_CONTRACT:
|
|
1
|
+
export const RUNTIME_CONTRACT: 9;
|
|
2
2
|
export const MANIFEST_SCHEMA: 1;
|
|
3
3
|
export const ORCHESTRATION_URL: URL;
|
|
4
4
|
export const ROLE_NAMES: readonly ["controller", "researcher", "planner", "reviewer", "frontend"];
|
|
5
|
-
export const REFERENCE_NAMES: readonly ["dao", "planning", "craft", "verification", "
|
|
5
|
+
export const REFERENCE_NAMES: readonly ["dao", "planning", "craft", "verification", "memory", "leverage", "care", "human-safety", "orchestration"];
|
|
6
6
|
export type RoleName = typeof ROLE_NAMES[number];
|
|
7
7
|
export type ReferenceName = typeof REFERENCE_NAMES[number];
|
|
8
8
|
export interface OrchestrationManifest {
|
|
9
9
|
readonly schemaVersion: 1;
|
|
10
10
|
readonly name: "odai-orchestration";
|
|
11
11
|
readonly version: string;
|
|
12
|
-
readonly governanceContract:
|
|
12
|
+
readonly governanceContract: 9;
|
|
13
13
|
readonly delegationFile: string;
|
|
14
14
|
readonly roleFiles: Readonly<Record<RoleName, string>>;
|
|
15
15
|
readonly referenceFiles: Readonly<Record<"orchestration", string>>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Trusted, data-only orchestration compiler. Governance loads independently.
|
|
2
|
-
export const RUNTIME_CONTRACT =
|
|
2
|
+
export const RUNTIME_CONTRACT = 9;
|
|
3
3
|
export const MANIFEST_SCHEMA = 1;
|
|
4
4
|
export const ORCHESTRATION_URL = new URL("../", import.meta.url);
|
|
5
5
|
export const ROLE_NAMES = Object.freeze(["controller", "researcher", "planner", "reviewer", "frontend"]);
|
|
6
|
-
export const REFERENCE_NAMES = Object.freeze(["dao", "planning", "craft", "verification", "
|
|
6
|
+
export const REFERENCE_NAMES = Object.freeze(["dao", "planning", "craft", "verification", "memory", "leverage", "care", "human-safety", "orchestration"]);
|
|
7
7
|
const REQUIRED_REFERENCES = { controller: ["orchestration"], researcher: [], planner: ["planning"], reviewer: ["verification"], frontend: ["craft"] };
|
|
8
8
|
function object(value, label) {
|
|
9
9
|
if (!value || typeof value !== "object" || Array.isArray(value)) throw new TypeError(`${label} must be an object`);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, renameSync,
|
|
5
|
-
rmSync, unlinkSync, writeFileSync,
|
|
5
|
+
rmdirSync, rmSync, unlinkSync, writeFileSync,
|
|
6
6
|
} from "node:fs";
|
|
7
7
|
import { homedir, tmpdir } from "node:os";
|
|
8
8
|
import path from "node:path";
|
|
@@ -52,60 +52,70 @@ const previous = loadManifest(manifestPath);
|
|
|
52
52
|
assertSafeDestination(configRoot, layout, Object.keys(previous?.files || {}));
|
|
53
53
|
assertManagedState(configRoot, layout, previous);
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
if (hasMappingArgs(args)) fail("--uninstall 不接受模型、推理档或 policy 参数");
|
|
57
|
-
if (!previous) returnResult({ status: "not-installed", host: args.host, scope: args.scope, target: targetRoot, configRoot, requiresNewSession: false });
|
|
58
|
-
const removed = uninstall(configRoot, manifestPath, previous);
|
|
59
|
-
returnResult({ status: "uninstalled", host: args.host, scope: args.scope, target: targetRoot, configRoot, removed, requiresNewSession: true });
|
|
60
|
-
}
|
|
55
|
+
returnResult(main());
|
|
61
56
|
|
|
62
|
-
|
|
63
|
-
if (args.
|
|
64
|
-
if (args
|
|
65
|
-
if (!
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
57
|
+
function main() {
|
|
58
|
+
if (args.uninstall) {
|
|
59
|
+
if (hasMappingArgs(args)) fail("--uninstall 不接受模型、推理档或 policy 参数");
|
|
60
|
+
if (!previous) return { status: "not-installed", host: args.host, scope: args.scope, target: targetRoot, configRoot, requiresNewSession: false };
|
|
61
|
+
const removed = uninstall(configRoot, manifestPath, previous);
|
|
62
|
+
return { status: "uninstalled", host: args.host, scope: args.scope, target: targetRoot, configRoot, removed, requiresNewSession: true };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
for (const role of requiredRoles) if (!args[`${role}Model`]) fail(`缺少 --${role}-model`);
|
|
66
|
+
if (args.researcherEffort && !args.researcherModel) fail("--researcher-effort 需要同时提供 --researcher-model");
|
|
67
|
+
if (args.frontendEffort && !args.frontendModel) fail("--frontend-effort 需要同时提供 --frontend-model");
|
|
68
|
+
if (!existsSync(builder)) fail(`缺少路由生成器:${builder}`);
|
|
69
|
+
|
|
70
|
+
const generatedRoot = mkdtempSync(path.join(tmpdir(), `odai-${args.host}-routing-install-`));
|
|
71
|
+
const snapshots = new Map();
|
|
72
|
+
const newDirectories = [];
|
|
73
|
+
try {
|
|
74
|
+
const generated = buildAdapter(generatedRoot, configRoot);
|
|
75
|
+
const files = collectGeneratedFiles(generatedRoot, layout);
|
|
76
|
+
const originalFiles = prepareOriginalFiles(configRoot, previous, files);
|
|
77
|
+
const settings = planSettings(configRoot, layout, previous);
|
|
78
|
+
for (const relative of directoryAncestors([...files.keys(), manifestName, ...(settings ? [settings.file] : [])])) {
|
|
79
|
+
if (!existsSync(path.join(configRoot, relative))) newDirectories.push(relative);
|
|
80
|
+
}
|
|
81
|
+
const candidates = new Set([...layout.managedFiles, ...layout.retiredFiles, ...Object.keys(previous?.files || {}), manifestName]);
|
|
82
|
+
for (const relative of candidates) snapshot(configRoot, relative, snapshots);
|
|
83
|
+
if (settings) snapshot(configRoot, settings.file, snapshots);
|
|
84
|
+
for (const [relative, content] of files) atomicWrite(path.join(configRoot, relative), content);
|
|
85
|
+
if (settings) atomicWrite(path.join(configRoot, settings.file), Buffer.from(`${JSON.stringify(settings.value, null, 2)}\n`));
|
|
86
|
+
removeObsolete(configRoot, previous, files);
|
|
87
|
+
const manifest = {
|
|
88
|
+
version: 13,
|
|
89
|
+
id: "odai-routing-installation",
|
|
90
|
+
host: args.host,
|
|
91
|
+
scope: args.scope,
|
|
92
|
+
target: targetRoot,
|
|
93
|
+
installedAt: new Date().toISOString(),
|
|
94
|
+
generatedFrom: "skills/odai-orchestration/scripts/install-routing.mjs",
|
|
95
|
+
governance: generated.governance,
|
|
96
|
+
orchestration: generated.orchestration,
|
|
97
|
+
mapping: generated.mapping,
|
|
98
|
+
routingPolicy: generated.routing_policy,
|
|
99
|
+
activation: generated.activation,
|
|
100
|
+
files: Object.fromEntries([...files].map(([relative, content]) => [relative, sha256(content)])),
|
|
101
|
+
originalFiles,
|
|
102
|
+
createdDirectories: [...new Set([...(previous?.createdDirectories || []), ...newDirectories])],
|
|
103
|
+
settings: settings?.manifest || null,
|
|
104
|
+
};
|
|
105
|
+
atomicWrite(manifestPath, Buffer.from(`${JSON.stringify(manifest, null, 2)}\n`));
|
|
106
|
+
assertManagedState(configRoot, layout, manifest);
|
|
107
|
+
return {
|
|
108
|
+
status: previous ? "updated" : "installed", host: args.host, scope: args.scope,
|
|
109
|
+
target: targetRoot, configRoot, mapping: generated.mapping, routingPolicy: generated.routing_policy,
|
|
110
|
+
activation: generated.activation, requiresNewSession: true,
|
|
111
|
+
};
|
|
112
|
+
} catch (error) {
|
|
113
|
+
restore(configRoot, snapshots);
|
|
114
|
+
removeCreatedDirectories(configRoot, newDirectories);
|
|
115
|
+
throw error;
|
|
116
|
+
} finally {
|
|
117
|
+
rmSync(generatedRoot, { recursive: true, force: true });
|
|
118
|
+
}
|
|
109
119
|
}
|
|
110
120
|
|
|
111
121
|
function buildAdapter(outputRoot, root) {
|
|
@@ -310,6 +320,14 @@ function assertManagedState(root, layoutValue, manifest) {
|
|
|
310
320
|
fail("旧路由包含当前宿主不支持的设置记录");
|
|
311
321
|
}
|
|
312
322
|
const accepted = new Set([...(layoutValue.knownFiles || layoutValue.managedFiles), ...layoutValue.retiredFiles]);
|
|
323
|
+
if (manifest.createdDirectories !== undefined) {
|
|
324
|
+
const allowed = directoryAncestors([...accepted, manifestName, ...(expectedSetting ? [expectedSetting.file] : [])]);
|
|
325
|
+
if (!Array.isArray(manifest.createdDirectories)
|
|
326
|
+
|| manifest.createdDirectories.some(relative => typeof relative !== "string" || !allowed.has(relative))) {
|
|
327
|
+
fail("旧路由包含无效的托管目录记录");
|
|
328
|
+
}
|
|
329
|
+
assertSafeDestination(root, layoutValue, manifest.createdDirectories);
|
|
330
|
+
}
|
|
313
331
|
for (const [relative, expected] of Object.entries(manifest.files || {})) {
|
|
314
332
|
if (!accepted.has(relative)) fail(`旧路由包含未知文件:${relative}`);
|
|
315
333
|
const file = path.join(root, relative);
|
|
@@ -348,13 +366,16 @@ function uninstall(root, manifestPathValue, manifest) {
|
|
|
348
366
|
for (const relative of files) snapshot(root, relative, snapshots);
|
|
349
367
|
if (settingPlan) snapshot(root, settingPlan.relative, snapshots);
|
|
350
368
|
snapshot(root, manifestName, snapshots);
|
|
369
|
+
const removedDirectories = [];
|
|
351
370
|
|
|
352
371
|
try {
|
|
353
372
|
for (const [relative, content] of plannedFiles) applyFileState(path.join(root, relative), content);
|
|
354
373
|
if (settingPlan) applyFileState(path.join(root, settingPlan.relative), settingPlan.content);
|
|
355
374
|
unlinkSync(manifestPathValue);
|
|
375
|
+
removeCreatedDirectories(root, manifest.createdDirectories || [], removedDirectories);
|
|
356
376
|
} catch (error) {
|
|
357
377
|
try {
|
|
378
|
+
for (const relative of [...removedDirectories].reverse()) mkdirSync(path.join(root, relative), { recursive: true });
|
|
358
379
|
restore(root, snapshots);
|
|
359
380
|
} catch (restoreError) {
|
|
360
381
|
throw new AggregateError([error, restoreError], "路由卸载失败且无法完整回滚;请检查现有托管清单与文件状态");
|
|
@@ -376,6 +397,30 @@ function planSettingRestore(root, spec) {
|
|
|
376
397
|
};
|
|
377
398
|
}
|
|
378
399
|
|
|
400
|
+
function directoryAncestors(files) {
|
|
401
|
+
const directories = new Set(["."]);
|
|
402
|
+
for (const relative of files) {
|
|
403
|
+
let directory = path.dirname(relative);
|
|
404
|
+
while (directory !== ".") {
|
|
405
|
+
directories.add(directory);
|
|
406
|
+
directory = path.dirname(directory);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return directories;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function removeCreatedDirectories(root, directories, removed = []) {
|
|
413
|
+
const depth = relative => relative === "." ? 0 : relative.split(/[\\/]/u).length;
|
|
414
|
+
for (const relative of [...new Set(directories)].sort((a, b) => depth(b) - depth(a))) {
|
|
415
|
+
try {
|
|
416
|
+
rmdirSync(path.join(root, relative));
|
|
417
|
+
removed.push(relative);
|
|
418
|
+
} catch (error) {
|
|
419
|
+
if (!["ENOENT", "ENOTEMPTY", "EEXIST"].includes(error?.code)) throw error;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
379
424
|
function applyFileState(file, content) {
|
|
380
425
|
if (content === null) rmSync(file, { force: true });
|
|
381
426
|
else atomicWrite(file, content);
|
|
@@ -447,5 +492,5 @@ Usage:
|
|
|
447
492
|
安装后用户只需正常使用 odai。总控是唯一持续任务线程并负责实施整合;planner、reviewer 以及可选 researcher、frontend 只在能改变结果时启动。researcher 与 frontend 映射默认不配置。更新会安全移除旧版 advisor、implementer、worker、executor 和 stage runner 托管文件。`);
|
|
448
493
|
}
|
|
449
494
|
|
|
450
|
-
function returnResult(value) { process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
495
|
+
function returnResult(value) { process.stdout.write(`${JSON.stringify(value, null, 2)}\n`); }
|
|
451
496
|
function fail(message) { throw new Error(message); }
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import type { SkillBundle } from "./skill-bundle.mjs";
|
|
2
|
-
import type { DshAgent, RuntimeTool, UnknownRecord } from "./runtime-types.mjs";
|
|
3
|
-
type StateAction = "activate" | "rollback" | "deactivate";
|
|
4
|
-
type AuthorizationLevel = "standard" | "breaking";
|
|
5
|
-
export interface GenerationAuthorization {
|
|
6
|
-
readonly action: "propose" | "rebase";
|
|
7
|
-
readonly phrase: string;
|
|
8
|
-
readonly turn: number;
|
|
9
|
-
readonly eventSeq: number;
|
|
10
|
-
readonly messageId: string;
|
|
11
|
-
}
|
|
12
|
-
interface HistoryEvent {
|
|
13
|
-
readonly revision: number;
|
|
14
|
-
readonly action: StateAction;
|
|
15
|
-
readonly from: string | null;
|
|
16
|
-
readonly to: string | null;
|
|
17
|
-
readonly at: string;
|
|
18
|
-
readonly evidence: readonly string[];
|
|
19
|
-
}
|
|
20
|
-
export interface SkillEvolutionState {
|
|
21
|
-
readonly schemaVersion: 1;
|
|
22
|
-
readonly revision: number;
|
|
23
|
-
readonly activeGenerationId?: string;
|
|
24
|
-
readonly history: readonly HistoryEvent[];
|
|
25
|
-
}
|
|
26
|
-
export interface GenerationSummary extends UnknownRecord {
|
|
27
|
-
generationId: string;
|
|
28
|
-
parentGenerationId?: string;
|
|
29
|
-
createdAt: string;
|
|
30
|
-
objective: string;
|
|
31
|
-
baseDigest: string;
|
|
32
|
-
resultDigest: string;
|
|
33
|
-
skillVersion: string;
|
|
34
|
-
runtimeContract: unknown;
|
|
35
|
-
changedPaths: readonly string[];
|
|
36
|
-
authorizationLevel: AuthorizationLevel;
|
|
37
|
-
activationPhrase: string;
|
|
38
|
-
breakingReasons: readonly string[];
|
|
39
|
-
creationAuthorization?: GenerationAuthorization;
|
|
40
|
-
}
|
|
41
|
-
export interface RebaseConflict {
|
|
42
|
-
readonly path: string;
|
|
43
|
-
readonly replacement: number;
|
|
44
|
-
readonly reason: string;
|
|
45
|
-
}
|
|
46
|
-
interface SelectionEvolutionState extends UnknownRecord {
|
|
47
|
-
status?: string;
|
|
48
|
-
generationId?: string;
|
|
49
|
-
baseDigest?: string;
|
|
50
|
-
upstreamDigest?: string;
|
|
51
|
-
rebaseRequired?: boolean;
|
|
52
|
-
hostOverride?: boolean;
|
|
53
|
-
}
|
|
54
|
-
export interface EvolutionSelection {
|
|
55
|
-
readonly mode: string;
|
|
56
|
-
readonly status: string;
|
|
57
|
-
readonly reasonCode: string;
|
|
58
|
-
readonly detail?: string;
|
|
59
|
-
readonly bundle: SkillBundle;
|
|
60
|
-
readonly candidate?: SkillBundle;
|
|
61
|
-
readonly rejections: readonly {
|
|
62
|
-
readonly source: string;
|
|
63
|
-
readonly reasonCode: string;
|
|
64
|
-
readonly detail?: string;
|
|
65
|
-
}[];
|
|
66
|
-
readonly upstream?: EvolutionSelection;
|
|
67
|
-
readonly evolution?: Readonly<SelectionEvolutionState>;
|
|
68
|
-
}
|
|
69
|
-
export interface EvolutionToolArguments extends UnknownRecord {
|
|
70
|
-
action?: unknown;
|
|
71
|
-
path?: unknown;
|
|
72
|
-
generationId?: unknown;
|
|
73
|
-
objective?: unknown;
|
|
74
|
-
expectedBundleDigest?: unknown;
|
|
75
|
-
expectedUpstreamDigest?: unknown;
|
|
76
|
-
changes?: unknown;
|
|
77
|
-
}
|
|
78
|
-
export interface EvolutionToolResult extends UnknownRecord {
|
|
79
|
-
action: string;
|
|
80
|
-
status: string;
|
|
81
|
-
error?: string;
|
|
82
|
-
path?: string;
|
|
83
|
-
bundleDigest?: string;
|
|
84
|
-
proposalPhrase?: string;
|
|
85
|
-
attemptId?: string;
|
|
86
|
-
conflicts?: readonly RebaseConflict[];
|
|
87
|
-
sha256?: string;
|
|
88
|
-
content?: string;
|
|
89
|
-
requiresNextTurn?: boolean;
|
|
90
|
-
generations?: readonly GenerationSummary[];
|
|
91
|
-
activeGenerationId?: string;
|
|
92
|
-
active?: GenerationSummary & {
|
|
93
|
-
rebaseRequired: boolean;
|
|
94
|
-
};
|
|
95
|
-
generation?: GenerationSummary;
|
|
96
|
-
}
|
|
97
|
-
interface CreateEvolutionToolOptions {
|
|
98
|
-
currentSelectionFor?: (agent: DshAgent) => EvolutionSelection;
|
|
99
|
-
selection?: EvolutionSelection;
|
|
100
|
-
onChanged?: (agent: DshAgent, result: EvolutionToolResult) => void;
|
|
101
|
-
now?: () => string;
|
|
102
|
-
disabled?: boolean;
|
|
103
|
-
}
|
|
104
|
-
export declare function readSkillEvolutionState(root: string): Readonly<SkillEvolutionState>;
|
|
105
|
-
export declare function resolveSkillEvolutionRoot(configuredPath: unknown, env?: Readonly<Record<string, string | undefined>>): string;
|
|
106
|
-
export declare function skillEvolutionDisabled(env?: Readonly<Record<string, string | undefined>>): boolean;
|
|
107
|
-
export declare function applySkillEvolutionSelection(upstream: EvolutionSelection, root: string, options?: {
|
|
108
|
-
disabled?: boolean;
|
|
109
|
-
}): EvolutionSelection;
|
|
110
|
-
export declare function createSkillEvolutionTool(root: string, options?: CreateEvolutionToolOptions): RuntimeTool<EvolutionToolArguments, EvolutionToolResult>;
|
|
111
|
-
export {};
|
|
112
|
-
//# sourceMappingURL=skill-evolution.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-evolution.d.mts","sourceRoot":"","sources":["../src/skill-evolution.mts"],"names":[],"mappings":"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"}
|