sophhub 0.2.3 → 0.2.4

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 (107) hide show
  1. package/package.json +1 -1
  2. package/skills/consensus/skill.json +20 -0
  3. package/skills/consensus/src/SKILL.md +93 -0
  4. package/skills/deepwiki/skill.json +20 -0
  5. package/skills/deepwiki/src/SKILL.md +45 -0
  6. package/skills/deepwiki/src/_meta.json +6 -0
  7. package/skills/deepwiki/src/scripts/deepwiki.js +135 -0
  8. package/skills/feishu-bitable/skill.json +20 -0
  9. package/skills/feishu-bitable/src/CHECKLIST.md +150 -0
  10. package/skills/feishu-bitable/src/README.md +178 -0
  11. package/skills/feishu-bitable/src/SKILL.md +113 -0
  12. package/skills/feishu-bitable/src/_meta.json +6 -0
  13. package/skills/feishu-bitable/src/api.js +381 -0
  14. package/skills/feishu-bitable/src/bin/cli.js +284 -0
  15. package/skills/feishu-bitable/src/description.md +143 -0
  16. package/skills/feishu-bitable/src/examples/create-records.json +52 -0
  17. package/skills/feishu-bitable/src/examples/create-table.json +64 -0
  18. package/skills/feishu-bitable/src/package-lock.json +324 -0
  19. package/skills/feishu-bitable/src/package.json +33 -0
  20. package/skills/feishu-bitable/src/publish-config.json +14 -0
  21. package/skills/feishu-bitable/src/test-simple.js +61 -0
  22. package/skills/feishu-bitable/src/utils.js +261 -0
  23. package/skills/google-maps/skill.json +20 -0
  24. package/skills/google-maps/src/SKILL.md +237 -0
  25. package/skills/google-maps/src/_meta.json +6 -0
  26. package/skills/google-maps/src/lib/map_helper.py +912 -0
  27. package/skills/large-task-router/skill.json +20 -0
  28. package/skills/large-task-router/src/SKILL.md +79 -0
  29. package/skills/large-task-router/src/templates/plan.md +74 -0
  30. package/skills/skillhub/skill.json +11 -4
  31. package/skills/skillhub/src/SKILL.md +11 -1
  32. package/skills/sophnet-dailynews/skill.json +20 -0
  33. package/skills/sophnet-dailynews/src/SKILL.md +179 -0
  34. package/skills/sophnet-dailynews/src/cache.json +151 -0
  35. package/skills/sophnet-dailynews/src/sources.json +230 -0
  36. package/skills/sophnet-schedule/skill.json +20 -0
  37. package/skills/sophnet-schedule/src/ARCHITECTURE.md +321 -0
  38. package/skills/sophnet-schedule/src/IMPROVEMENTS.md +145 -0
  39. package/skills/sophnet-schedule/src/SKILL.md +1050 -0
  40. package/skills/sophnet-schedule/src/_meta.json +6 -0
  41. package/skills/sophnet-schedule/src/api/__init__.py +0 -0
  42. package/skills/sophnet-schedule/src/api/models.py +245 -0
  43. package/skills/sophnet-schedule/src/apps/add_event.py +237 -0
  44. package/skills/sophnet-schedule/src/apps/check_reminders.py +112 -0
  45. package/skills/sophnet-schedule/src/apps/check_roc.py +246 -0
  46. package/skills/sophnet-schedule/src/apps/generate_daily_plan.py +342 -0
  47. package/skills/sophnet-schedule/src/apps/import_events.py +216 -0
  48. package/skills/sophnet-schedule/src/apps/monitor_calendar_changes.py +140 -0
  49. package/skills/sophnet-schedule/src/apps/register_tasks.py +169 -0
  50. package/skills/sophnet-schedule/src/apps/sync_roc_to_gcal.py +174 -0
  51. package/skills/sophnet-schedule/src/compat.py +66 -0
  52. package/skills/sophnet-schedule/src/config/__init__.py +0 -0
  53. package/skills/sophnet-schedule/src/config/reminder_rules.yaml +96 -0
  54. package/skills/sophnet-schedule/src/config/roc_events.yaml +44 -0
  55. package/skills/sophnet-schedule/src/config/settings.py +133 -0
  56. package/skills/sophnet-schedule/src/config/task_registry.yaml +92 -0
  57. package/skills/sophnet-schedule/src/docs/FRONTEND_INTEGRATION_GUIDE.md +437 -0
  58. package/skills/sophnet-schedule/src/gcal/__init__.py +0 -0
  59. package/skills/sophnet-schedule/src/gcal/client.py +374 -0
  60. package/skills/sophnet-schedule/src/gcal/models.py +91 -0
  61. package/skills/sophnet-schedule/src/requirements.txt +6 -0
  62. package/skills/sophnet-schedule/src/scripts/setup_gcal_token.py +85 -0
  63. package/skills/sophnet-schedule/src/server.py +669 -0
  64. package/skills/sophnet-schedule/src/services/__init__.py +0 -0
  65. package/skills/sophnet-schedule/src/services/calendar_backend.py +139 -0
  66. package/skills/sophnet-schedule/src/services/conflict_detector.py +96 -0
  67. package/skills/sophnet-schedule/src/services/datetime_utils.py +117 -0
  68. package/skills/sophnet-schedule/src/services/event_classifier.py +100 -0
  69. package/skills/sophnet-schedule/src/services/event_diff.py +160 -0
  70. package/skills/sophnet-schedule/src/services/google_integration.py +500 -0
  71. package/skills/sophnet-schedule/src/services/job_store.py +100 -0
  72. package/skills/sophnet-schedule/src/services/local_event_store.py +266 -0
  73. package/skills/sophnet-schedule/src/services/reminder_planner.py +116 -0
  74. package/skills/sophnet-schedule/src/services/runtime_utils.py +31 -0
  75. package/skills/sophnet-schedule/src/services/table_parser.py +286 -0
  76. package/skills/sophnet-schedule/src/services/task_builder.py +167 -0
  77. package/skills/sophnet-schedule/src/services/time_window.py +72 -0
  78. package/skills/sophnet-stock/skill.json +20 -0
  79. package/skills/sophnet-stock/src/App-Plan.md +442 -0
  80. package/skills/sophnet-stock/src/README.md +214 -0
  81. package/skills/sophnet-stock/src/SKILL.md +236 -0
  82. package/skills/sophnet-stock/src/TODO.md +394 -0
  83. package/skills/sophnet-stock/src/_meta.json +6 -0
  84. package/skills/sophnet-stock/src/docs/ARCHITECTURE.md +408 -0
  85. package/skills/sophnet-stock/src/docs/CONCEPT.md +233 -0
  86. package/skills/sophnet-stock/src/docs/HOT_SCANNER.md +288 -0
  87. package/skills/sophnet-stock/src/docs/README.md +95 -0
  88. package/skills/sophnet-stock/src/docs/USAGE.md +465 -0
  89. package/skills/sophnet-stock/src/scripts/analyze_stock.py +2565 -0
  90. package/skills/sophnet-stock/src/scripts/dividends.py +365 -0
  91. package/skills/sophnet-stock/src/scripts/hot_scanner.py +582 -0
  92. package/skills/sophnet-stock/src/scripts/portfolio.py +548 -0
  93. package/skills/sophnet-stock/src/scripts/rumor_scanner.py +342 -0
  94. package/skills/sophnet-stock/src/scripts/test_stock_analysis.py +409 -0
  95. package/skills/sophnet-stock/src/scripts/watchlist.py +336 -0
  96. package/skills/xiaohongshu/skill.json +20 -0
  97. package/skills/xiaohongshu/src/SKILL.md +91 -0
  98. package/skills/xiaohongshu/src/_meta.json +6 -0
  99. package/skills/xiaohongshu/src/assets/card.html +216 -0
  100. package/skills/xiaohongshu/src/assets/cover.html +82 -0
  101. package/skills/xiaohongshu/src/assets/example.md +84 -0
  102. package/skills/xiaohongshu/src/assets/styles.css +318 -0
  103. package/skills/xiaohongshu/src/scripts/render_xhs_v2.py +737 -0
  104. package/skills/xiaohongshu/src/scripts/sign_server.py +158 -0
  105. package/skills/xiaohongshu/src/scripts/stealth.min.js +7 -0
  106. package/skills/xiaohongshu/src/scripts/xhs_tool.py +186 -0
  107. package/skills/xiaohongshu/src/workflow.py +185 -0
@@ -0,0 +1,145 @@
1
+ # sophnet-schedule 改进记录
2
+
3
+ ## 2026-04-03 改进:提醒注册状态反馈
4
+
5
+ ### 问题描述
6
+
7
+ 之前的实现中,`add_event.py` 和 `import_events.py` 在注册 OpenClaw Cron 提醒任务时,如果失败会静默处理,用户和 Agent 无法知道提醒是否成功注册。
8
+
9
+ ### 改进内容
10
+
11
+ #### 1. **add_event.py 改进**
12
+
13
+ **改进前**:
14
+ ```python
15
+ def _register_reminder(...) -> None:
16
+ try:
17
+ if append_job_if_absent(payload):
18
+ logger.warning(f"✅ 提醒任务已注册: {name}")
19
+ except Exception as e:
20
+ logger.warning(f"注册提醒失败(不影响日历写入): {e}")
21
+ ```
22
+
23
+ **改进后**:
24
+ ```python
25
+ def _register_reminder(...) -> dict:
26
+ """返回提醒注册状态"""
27
+ try:
28
+ if append_job_if_absent(payload):
29
+ return {"registered": True, "existed": False, "error": None}
30
+ else:
31
+ return {"registered": True, "existed": True, "error": None}
32
+ except Exception as e:
33
+ return {"registered": False, "existed": False, "error": str(e)}
34
+ ```
35
+
36
+ **返回 JSON 新增字段**:
37
+ - `reminder_registered` (bool): 提醒是否成功注册
38
+ - `reminder_existed` (bool): 提醒是否已存在
39
+ - `reminder_error` (str | null): 提醒注册错误信息
40
+
41
+ #### 2. **import_events.py 改进**
42
+
43
+ **改进前**:
44
+ ```python
45
+ if remind > 0:
46
+ try:
47
+ # ... 注册提醒 ...
48
+ append_job_if_absent(payload)
49
+ except Exception:
50
+ pass # 静默失败
51
+ ```
52
+
53
+ **改进后**:
54
+ ```python
55
+ if remind > 0:
56
+ try:
57
+ # ... 注册提醒 ...
58
+ if append_job_if_absent(payload):
59
+ reminder_status["registered"] = True
60
+ reminder_status["existed"] = False
61
+ else:
62
+ reminder_status["registered"] = True
63
+ reminder_status["existed"] = True
64
+ except Exception as e:
65
+ reminder_status["error"] = str(e)
66
+ ```
67
+
68
+ **每个事件返回结果新增字段**:
69
+ - `reminder_registered` (bool)
70
+ - `reminder_existed` (bool)
71
+ - `reminder_error` (str | null)
72
+
73
+ #### 3. **skill.md 文档更新**
74
+
75
+ - **Step 2**:添加了返回字段说明,包含提醒注册状态字段
76
+ - **Step 3**:更新了回复模板,根据提醒注册状态给出不同反馈
77
+ - **示例对话**:展示了提醒注册失败时的回复方式
78
+
79
+ ### 使用示例
80
+
81
+ **正常情况(提醒注册成功)**:
82
+ ```json
83
+ {
84
+ "ok": true,
85
+ "provider": "local",
86
+ "event_id": "local_xxx",
87
+ "reminder_registered": true,
88
+ "reminder_existed": false,
89
+ "reminder_error": null
90
+ }
91
+ ```
92
+
93
+ **提醒已存在**:
94
+ ```json
95
+ {
96
+ "ok": true,
97
+ "provider": "local",
98
+ "event_id": "local_xxx",
99
+ "reminder_registered": true,
100
+ "reminder_existed": true,
101
+ "reminder_error": null
102
+ }
103
+ ```
104
+
105
+ **提醒注册失败**:
106
+ ```json
107
+ {
108
+ "ok": true,
109
+ "provider": "local",
110
+ "event_id": "local_xxx",
111
+ "reminder_registered": false,
112
+ "reminder_existed": false,
113
+ "reminder_error": "Permission denied: cannot write to jobs.json"
114
+ }
115
+ ```
116
+
117
+ ### Agent 处理逻辑
118
+
119
+ Agent 在收到返回结果后,应该检查:
120
+ 1. `ok` - 日程是否写入成功
121
+ 2. `provider` - 写入到 Google Calendar 还是本地存储
122
+ 3. `reminder_registered` - 提醒是否注册成功
123
+ 4. `reminder_error` - 如果提醒注册失败,显示错误信息
124
+
125
+ 根据这些字段组合回复,让用户了解:
126
+ - 日程是否成功保存
127
+ - 保存到哪个位置(Google Calendar / 本地)
128
+ - 提醒是否成功注册
129
+ - 如果提醒失败,是什么原因
130
+
131
+ ### 测试验证
132
+
133
+ 运行测试:
134
+ ```bash
135
+ python3 tests/test_add_event.py
136
+ ```
137
+
138
+ 所有测试通过,包括新增的提醒注册状态字段验证。
139
+
140
+ ### 影响范围
141
+
142
+ - ✅ 向后兼容:新增字段不影响现有功能
143
+ - ✅ 测试覆盖:更新了测试用例
144
+ - ✅ 文档完整:更新了 skill.md
145
+ - ✅ 错误处理:改进了静默失败问题