@siming-org/opencode-plugin 0.1.15 → 0.1.17

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 (48) hide show
  1. package/README.md +38 -4
  2. package/dist/fetch-assets.d.ts +26 -0
  3. package/dist/fetch-assets.d.ts.map +1 -1
  4. package/dist/fetch-assets.js +54 -0
  5. package/dist/fetch-assets.js.map +1 -1
  6. package/dist/host-api.d.ts +12 -1
  7. package/dist/host-api.d.ts.map +1 -1
  8. package/dist/host-api.js.map +1 -1
  9. package/dist/register/skills.d.ts +6 -4
  10. package/dist/register/skills.d.ts.map +1 -1
  11. package/dist/register/skills.js +7 -2
  12. package/dist/register/skills.js.map +1 -1
  13. package/dist/register/todo-suite.d.ts +28 -0
  14. package/dist/register/todo-suite.d.ts.map +1 -0
  15. package/dist/register/todo-suite.js +133 -0
  16. package/dist/register/todo-suite.js.map +1 -0
  17. package/dist/server/index.d.ts.map +1 -1
  18. package/dist/server/index.js +44 -3
  19. package/dist/server/index.js.map +1 -1
  20. package/dist/task-discipline-prompt.d.ts +1 -0
  21. package/dist/task-discipline-prompt.d.ts.map +1 -1
  22. package/dist/task-discipline-prompt.js +13 -4
  23. package/dist/task-discipline-prompt.js.map +1 -1
  24. package/dist/todo/config.d.ts +21 -0
  25. package/dist/todo/config.d.ts.map +1 -0
  26. package/dist/todo/config.js +272 -0
  27. package/dist/todo/config.js.map +1 -0
  28. package/dist/todo/counter.d.ts +14 -0
  29. package/dist/todo/counter.d.ts.map +1 -0
  30. package/dist/todo/counter.js +19 -0
  31. package/dist/todo/counter.js.map +1 -0
  32. package/dist/todo/nudge-log.d.ts +5 -0
  33. package/dist/todo/nudge-log.d.ts.map +1 -0
  34. package/dist/todo/nudge-log.js +45 -0
  35. package/dist/todo/nudge-log.js.map +1 -0
  36. package/dist/todo/prompt.d.ts +9 -0
  37. package/dist/todo/prompt.d.ts.map +1 -0
  38. package/dist/todo/prompt.js +18 -0
  39. package/dist/todo/prompt.js.map +1 -0
  40. package/dist/todo/rate-limit.d.ts +7 -0
  41. package/dist/todo/rate-limit.d.ts.map +1 -0
  42. package/dist/todo/rate-limit.js +20 -0
  43. package/dist/todo/rate-limit.js.map +1 -0
  44. package/dist/todo/task-planning-skill.d.ts +9 -0
  45. package/dist/todo/task-planning-skill.d.ts.map +1 -0
  46. package/dist/todo/task-planning-skill.js +59 -0
  47. package/dist/todo/task-planning-skill.js.map +1 -0
  48. package/package.json +2 -2
@@ -0,0 +1,18 @@
1
+ /**
2
+ * todo 三件套内置常量(技术方案 §4.7):
3
+ * - TODO_SYSTEM_PROMPT:注入主会话 system 的常驻短规则(PRD §8.1 逐字,含标题行);
4
+ * - DEFAULT_NUDGE_TEXT:尾部注入的默认提醒文案(PRD §8.3 逐字,含「非用户输入」标识)。
5
+ * 常量只承载 todo 规则本身,不提及 todoNudge 配置(PRD 规则 14 尾款)。
6
+ */
7
+ export const TODO_SYSTEM_PROMPT = `## 任务清单(todos)
8
+
9
+ 相对复杂的任务必须先用 todowrite 建清单。判据是完成它需要的独立步骤数,不是请求的说法:预计 3 步以上、涉及多个文件或命令、需要多方面调查核对、或有先后依赖的,哪怕只是一句「看看/查查/分析一下」,也先建清单;只有一步就能给出答案的简单问答、单步操作不建。
10
+
11
+ - 拆分:怎么拆由你按任务实际内容决定;一条对应一个能独立推进、能看出是否完成的步骤。粒度要合适,不能粗到「整个功能」或「整个 DAG 节点」一条。
12
+ - siming 流程任务:只拆当前 DAG 节点内部的步骤,最少 3 项、不设上限(按节点实际复杂度评估,该多少就多少);不要把多个节点合并进同一张清单。
13
+ - 状态:开始做时标 in_progress,阶段性完成后标 completed;更新保持相对及时。
14
+ - 推进:串行、并行、跳着做都由你决定,不要求按清单顺序推进;同时在进行的条目数量不做限制。
15
+ - 维护:发现新步骤随时追加;执行中发现任务比预想复杂(步骤多、要多线核对)时立即补建清单,不等提醒;放弃的项标 cancelled 并写原因;旧清单完成、切换任务或切换节点时整张替换,不复用旧条目。
16
+ - 收尾:给最终答复前顺手核对清单,状态与实际进度一致即可,不必为了清零而改状态。`;
17
+ export const DEFAULT_NUDGE_TEXT = '[todo-nudge 自动提醒,非用户输入] 复杂任务建议用 todos 跟踪;子项完成后顺手更新状态。';
18
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/todo/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;0CASQ,CAAC;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,uDAAuD,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 同类事件限频闸(todo 套件内部共用):
3
+ * 配置告警、handler 异常、日志写失败均要求「同类 60s 一条」(技术方案 §4.1/§4.3/§4.5),
4
+ * 避免每请求级错误刷屏宿主日志。返回 true = 本次应输出。
5
+ */
6
+ export declare function createRateLimiter(intervalMs: number): (key: string) => boolean;
7
+ //# sourceMappingURL=rate-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/todo/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAW9E"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 同类事件限频闸(todo 套件内部共用):
3
+ * 配置告警、handler 异常、日志写失败均要求「同类 60s 一条」(技术方案 §4.1/§4.3/§4.5),
4
+ * 避免每请求级错误刷屏宿主日志。返回 true = 本次应输出。
5
+ */
6
+ export function createRateLimiter(intervalMs) {
7
+ const lastAt = new Map();
8
+ return (key) => {
9
+ const now = Date.now();
10
+ const prev = lastAt.get(key);
11
+ if (prev !== undefined && now - prev < intervalMs)
12
+ return false;
13
+ // 防膨胀:键数异常量级时整体重置(限频窗口短,重置代价可忽略)
14
+ if (lastAt.size >= 256)
15
+ lastAt.clear();
16
+ lastAt.set(key, now);
17
+ return true;
18
+ };
19
+ }
20
+ //# sourceMappingURL=rate-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/todo/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,OAAO,CAAC,GAAW,EAAW,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,UAAU;YAAE,OAAO,KAAK,CAAC;QAChE,iCAAiC;QACjC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;YAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `task-planning` 技能内置常量(技术方案 §4.7,PRD §8.2 逐字):
3
+ * 形态镜像 guide-skill.ts——path 为合成展示路径(宿主消费内嵌 content,不落盘读取),
4
+ * 与 references 物化根同源。随插件版本发布,不做运行时拉取。
5
+ */
6
+ import type { HostSkillInfo } from '../host-api.js';
7
+ export declare const TASK_PLANNING_SKILL_NAME = "task-planning";
8
+ export declare function taskPlanningSkillInfo(referencesRoot: string): HostSkillInfo;
9
+ //# sourceMappingURL=task-planning-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-planning-skill.d.ts","sourceRoot":"","sources":["../../src/todo/task-planning-skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AAExD,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAS3E"}
@@ -0,0 +1,59 @@
1
+ import { skillDisplayPath } from '../host-api.js';
2
+ export const TASK_PLANNING_SKILL_NAME = 'task-planning';
3
+ export function taskPlanningSkillInfo(referencesRoot) {
4
+ return {
5
+ id: TASK_PLANNING_SKILL_NAME,
6
+ name: TASK_PLANNING_SKILL_NAME,
7
+ description: '多步骤任务开始前建立并维护 todo 清单;执行中相对及时地更新状态,任务边界变化时整张替换。用于 3 步以上、多文件多命令、有先后依赖或用户要求先规划再执行的任务。',
8
+ path: skillDisplayPath(referencesRoot, TASK_PLANNING_SKILL_NAME),
9
+ content: TASK_PLANNING_CONTENT,
10
+ };
11
+ }
12
+ const TASK_PLANNING_CONTENT = `# task-planning
13
+
14
+ ## 何时使用
15
+
16
+ - 任务预计 3 步以上,或涉及多个文件、多个命令、多方面调查核对、有先后依赖;
17
+ - 用户要求「先规划再执行」;
18
+ - 长任务执行中需要让进度对用户可见。
19
+
20
+ 判据是完成它需要的独立步骤数,不是请求的说法:一句「看看/查查/分析一下」只要答案需要多步调查取证,同样先建;只有一步就能给出答案的简单问答、单步操作不建。
21
+
22
+ ## 建清单
23
+
24
+ 1. 先拆步骤再动手:每条写清要做什么、做到什么程度,便于判断是否完成。
25
+ 2. 怎么拆由你决定:一条对应一个能独立推进的步骤;粒度要合适,不要粗到「整个功能」或「整个 DAG 节点」一条。
26
+ 3. siming 流程任务:只拆**当前 DAG 节点内部**的步骤,最少 3 项、不设上限,由你按节点实际复杂度评估。
27
+ - 不要把整个节点写成一条(如「完成技术方案」);
28
+ - 不要把多个节点合并进同一张清单;
29
+ - 节点切换时整张替换清单,旧节点条目退场。
30
+ 4. 首次用 todowrite 提交完整清单;后续随进展更新即可。
31
+
32
+ ## 维护节奏
33
+
34
+ - 开始做时标 in_progress,阶段性完成后标 completed;更新保持相对及时。
35
+ - 推进顺序(串行、并行、跳着做)由你决定;同时在进行的条目数量不做限制。
36
+ - 执行中发现新步骤 → 追加;原步骤不再需要 → 标 cancelled 并写原因。
37
+ - 执行中发现任务比预想复杂(步骤多、要多线核对)→ 立即补建清单,不等提醒。
38
+ - 已完成项可以保留作为进度记录,不必为了整洁删除。
39
+
40
+ ## 边界与切换
41
+
42
+ - 旧任务结束或节点切换 → 整张替换,不复用旧条目。
43
+ - 同一会话开始新任务 → 新建清单。
44
+ - 子代理有自己的清单,不继承主会话清单。
45
+
46
+ ## 收尾检查
47
+
48
+ 给最终答复前顺手核对清单:
49
+
50
+ - 状态与实际进度一致即可;没做完的项标 cancelled 或说明后续处理;
51
+ - 未验证的步骤不要标 completed;
52
+ - 不需要为了「清零」而改状态。
53
+
54
+ ## 常见问题
55
+
56
+ - 只在开头建一次清单,之后不再更新;
57
+ - 整个功能或整个节点一条 todo(粒度太粗,看不出进度);
58
+ - 旧清单完成后不复位,新任务沿用旧列表。`;
59
+ //# sourceMappingURL=task-planning-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-planning-skill.js","sourceRoot":"","sources":["../../src/todo/task-planning-skill.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAExD,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,OAAO;QACL,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,qFAAqF;QACvF,IAAI,EAAE,gBAAgB,CAAC,cAAc,EAAE,wBAAwB,CAAC;QAChE,OAAO,EAAE,qBAAqB;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA8CR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siming-org/opencode-plugin",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "opencode v2 plugin for siming: registers MCP task tools (siming_*), onboarding guide skill, siming_cli/siming_refresh tools, and global+project skills/subagents pulled live from the siming server",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "jsonc-parser": "^3.3.1",
17
17
  "zod": "^4.4.3",
18
- "@siming-org/cli": "0.8.16"
18
+ "@siming-org/cli": "0.8.18"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@opencode-ai/plugin": "^1.18.35",