scientify 1.12.0 → 1.12.2

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 (61) hide show
  1. package/README.md +3 -1
  2. package/README.zh.md +3 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/cli/research.d.ts +1 -1
  7. package/dist/src/cli/research.d.ts.map +1 -1
  8. package/dist/src/cli/research.js +123 -227
  9. package/dist/src/cli/research.js.map +1 -1
  10. package/dist/src/commands/metabolism-status.d.ts +2 -2
  11. package/dist/src/commands/metabolism-status.d.ts.map +1 -1
  12. package/dist/src/commands/metabolism-status.js +75 -72
  13. package/dist/src/commands/metabolism-status.js.map +1 -1
  14. package/dist/src/commands.d.ts.map +1 -1
  15. package/dist/src/commands.js +55 -0
  16. package/dist/src/commands.js.map +1 -1
  17. package/dist/src/hooks/research-mode.d.ts +1 -1
  18. package/dist/src/hooks/research-mode.d.ts.map +1 -1
  19. package/dist/src/hooks/research-mode.js +67 -24
  20. package/dist/src/hooks/research-mode.js.map +1 -1
  21. package/dist/src/hooks/scientify-signature.d.ts.map +1 -1
  22. package/dist/src/hooks/scientify-signature.js +5 -2
  23. package/dist/src/hooks/scientify-signature.js.map +1 -1
  24. package/dist/src/knowledge-state/render.d.ts +9 -1
  25. package/dist/src/knowledge-state/render.d.ts.map +1 -1
  26. package/dist/src/knowledge-state/render.js +132 -33
  27. package/dist/src/knowledge-state/render.js.map +1 -1
  28. package/dist/src/knowledge-state/store.d.ts.map +1 -1
  29. package/dist/src/knowledge-state/store.js +545 -38
  30. package/dist/src/knowledge-state/store.js.map +1 -1
  31. package/dist/src/knowledge-state/types.d.ts +31 -0
  32. package/dist/src/knowledge-state/types.d.ts.map +1 -1
  33. package/dist/src/literature/subscription-state.d.ts +2 -0
  34. package/dist/src/literature/subscription-state.d.ts.map +1 -1
  35. package/dist/src/literature/subscription-state.js +586 -7
  36. package/dist/src/literature/subscription-state.js.map +1 -1
  37. package/dist/src/research-subscriptions/constants.d.ts +1 -1
  38. package/dist/src/research-subscriptions/constants.js +1 -1
  39. package/dist/src/research-subscriptions/parse.d.ts.map +1 -1
  40. package/dist/src/research-subscriptions/parse.js +10 -0
  41. package/dist/src/research-subscriptions/parse.js.map +1 -1
  42. package/dist/src/research-subscriptions/prompt.d.ts +1 -1
  43. package/dist/src/research-subscriptions/prompt.d.ts.map +1 -1
  44. package/dist/src/research-subscriptions/prompt.js +144 -195
  45. package/dist/src/research-subscriptions/prompt.js.map +1 -1
  46. package/dist/src/research-subscriptions/types.d.ts +1 -0
  47. package/dist/src/research-subscriptions/types.d.ts.map +1 -1
  48. package/dist/src/templates/bootstrap.d.ts.map +1 -1
  49. package/dist/src/templates/bootstrap.js +19 -32
  50. package/dist/src/templates/bootstrap.js.map +1 -1
  51. package/dist/src/tools/scientify-cron.d.ts +6 -2
  52. package/dist/src/tools/scientify-cron.d.ts.map +1 -1
  53. package/dist/src/tools/scientify-cron.js +396 -12
  54. package/dist/src/tools/scientify-cron.js.map +1 -1
  55. package/dist/src/tools/scientify-literature-state.d.ts +12 -0
  56. package/dist/src/tools/scientify-literature-state.d.ts.map +1 -1
  57. package/dist/src/tools/scientify-literature-state.js +159 -45
  58. package/dist/src/tools/scientify-literature-state.js.map +1 -1
  59. package/openclaw.plugin.json +2 -4
  60. package/package.json +1 -1
  61. package/skills/research-subscription/SKILL.md +23 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scientify",
3
- "version": "1.12.0",
3
+ "version": "1.12.2",
4
4
  "description": "Scientify - AI-powered research workflow automation for OpenClaw. Includes idea generation, literature review, research pipeline skills, and arxiv tool.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,6 +25,19 @@ Use this skill when the user asks for:
25
25
 
26
26
  Do not stop at explanation.
27
27
  Create a real cron job via `scientify_cron_job`.
28
+ Do not claim "still running/in progress" unless you created a real async handle (cron job id or task id). If no handle exists, finish the run in the same turn.
29
+ Default policy is fast/non-blocking: always complete retrieve -> filter -> read -> record -> status in this turn when possible.
30
+ User-facing output should be concise Markdown; keep tool-call JSON minimal (only required persistence fields).
31
+ For high-effort strict-quality runs that are unlikely to finish in one turn, start real async execution instead of replying "not executed":
32
+ - if user forbids schedule creation, prefer `sessions_spawn` and return task id
33
+ - otherwise prefer `scientify_cron_job` with `run_now: true` and return job id
34
+ If user asks "create/start a research task now and return raw status JSON", call `scientify_cron_job` (`action=upsert`, `run_now=true`) and return the tool-provided `status_json` directly (do not synthesize JSON text).
35
+ If current turn is already cron-triggered, never call `scientify_cron_job` again from inside that run (avoid nested cron/run_now recursion).
36
+ When using `scientify_literature_state`, keep `scope/topic` consistent across prepare -> record -> status (reuse prepare output; do not replace scope with project id).
37
+ If user gave hard constraints (for example exact/min core paper count), do not return status `ok` unless satisfied; otherwise persist `degraded_quality` with unmet reasons.
38
+ If at least one paper was selected/read, never downgrade the run to `empty` only because strict gates are unmet; persist selected papers with `degraded_quality`.
39
+ In strict profile (only when explicitly requested), do not lower `required_core_papers` below `max_papers` to force-pass quality gates. If selected papers are insufficient, broaden retrieval queries first (aliases/variants/seminal terms), then degrade if still insufficient.
40
+ If strict constraints cannot be fully satisfied in this turn, do not refuse execution; persist a `degraded_quality` run with explicit unmet reasons.
28
41
 
29
42
  ## Tool to call
30
43
 
@@ -33,6 +46,7 @@ Create a real cron job via `scientify_cron_job`.
33
46
  - `action: "upsert"`: create or update a schedule
34
47
  - `action: "list"`: show current schedules
35
48
  - `action: "remove"`: cancel schedules
49
+ - Optional `run_now: true` (upsert only): trigger one immediate execution right after creation and return a real handle
36
50
 
37
51
  Routing rules:
38
52
 
@@ -65,6 +79,7 @@ For `action: "upsert"`, set `schedule` to one of:
65
79
  - Optional aliases: `webui`, `tui` (both map to `last`)
66
80
  - Optional `to`: channel-specific user or chat id (required only for concrete channels like `feishu`/`telegram`, not for `last`/`webui`/`tui`)
67
81
  - Optional `no_deliver: true`: run in background without push
82
+ - `no_deliver` only disables delivery; research runs still must call `scientify_literature_state.record` to persist state
68
83
 
69
84
  If the user does not specify destination, leave `channel` and `to` unset to use default routing.
70
85
 
@@ -81,6 +96,7 @@ For selected core papers, prefer full-text reading first:
81
96
  - `research_goal`, `approach`, `methodology_design`
82
97
  - `key_contributions`, `practical_insights`, `must_understand_points`, `limitations`
83
98
  - `evidence_anchors` (section/locator/claim/quote when possible)
99
+ - Do not fill placeholders like `N/A`, `not provided`, `unknown`; omit field if unavailable, or use `unread_reason` when full text was not read.
84
100
  - If full text is unavailable, set `full_text_read=false` with explicit `unread_reason`.
85
101
  - After persisting `record`, clean temporary files and report cleanup via `run_log.temp_cleanup_status`.
86
102
  - Quality guardrails for research runs:
@@ -88,10 +104,17 @@ For selected core papers, prefer full-text reading first:
88
104
  - evidence-binding rate >= 90% (key conclusions should be backed by section+locator+quote)
89
105
  - citation error rate < 2%
90
106
  - if full text is missing, do not keep high-confidence conclusions
107
+ - Reflection guardrail:
108
+ - when `knowledge_changes` has BRIDGE (or REVISE+CONFIRM contradiction signal), execute at least one immediate reflection query and write it into `exploration_trace`
109
+ - do not emit BRIDGE unless `evidence_ids` resolve to this run's papers and include at least one full-text-backed paper
110
+ - Hypothesis gate:
111
+ - avoid speculative guesses; each hypothesis should include >=2 `evidence_ids`, `dependency_path` length >=2, and novelty/feasibility/impact scores
91
112
  If an incremental pass returns no unseen papers, run one fallback representative pass before returning empty.
92
113
  If user gives explicit preference feedback during follow-up (read/skip/star style intent, source preference, direction preference),
93
114
  persist it via `scientify_literature_state` action=`feedback` (backend-only memory, not user-facing by default).
94
115
  If the user asks "which papers did you push just now?", call `scientify_literature_state` action=`status` first and answer from `recent_papers` + `knowledge_state_summary` (do not claim you must re-search unless status is empty).
116
+ After each research `record`, call `scientify_literature_state` action=`status` and include `run_id`/`latest_run_id` in your reply for traceability.
117
+ Each research cycle should use a unique `run_id` (cron run id preferred, otherwise timestamp-based) to avoid idempotent no-op writes.
95
118
 
96
119
  ## Message field (plain reminder)
97
120