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/README.md CHANGED
@@ -336,7 +336,7 @@ You can also check status anytime with:
336
336
  | `unpaywall_download` | Download open access PDFs by DOI via Unpaywall API. Non-OA papers are silently skipped (no failure). |
337
337
  | `github_search` | Search GitHub repositories. Returns repo name, description, stars, URL. Supports language filtering and sorting. |
338
338
  | `paper_browser` | Paginated browsing of large paper files (.tex/.md) to avoid loading thousands of lines into context. Returns specified line range with navigation info. |
339
- | `scientify_cron_job` | Manage scheduled Scientify jobs from the model (`upsert`/`list`/`remove`). Main fields: `action`, `scope`, `schedule`, `topic`, `project`, `message`, `max_papers`, `recency_days`, `candidate_pool`, `score_weights`, `sources`, `channel`, `to`, `no_deliver`, `job_id`. |
339
+ | `scientify_cron_job` | Manage scheduled Scientify jobs from the model (`upsert`/`list`/`remove`). Main fields: `action`, `scope`, `schedule`, `topic`, `project`, `message`, `max_papers`, `recency_days`, `candidate_pool`, `score_weights`, `sources`, `channel`, `to`, `no_deliver`, `run_now`, `job_id`. `run_now=true` also returns a `status_json` snapshot for research tasks. |
340
340
  | `scientify_literature_state` | Persistent incremental state for subscriptions: `prepare` dedupe context (+ memory hints), `record` pushed papers + project `knowledge_state` artifacts (including `paper_notes` deep-reading fields and full-text cleanup run logs), `feedback` lightweight preference memory, and `status` inspection with traceable logs. |
341
341
 
342
342
  ### Commands (direct, no LLM)
@@ -352,6 +352,7 @@ You can also check status anytime with:
352
352
  | `/research-subscribe ...` | Create/update scheduled Scientify jobs (supports `daily`, `weekly`, `every`, `at`, `cron`; options: `--channel`, `--to`, `--topic`, `--project`, `--message`, `--max-papers`, `--recency-days`, `--candidate-pool`, `--score-weights`, `--sources`, `--no-deliver`) |
353
353
  | `/research-subscriptions` | Show your scheduled Scientify jobs |
354
354
  | `/research-unsubscribe [job-id]` | Remove your scheduled Scientify jobs (or a specific job) |
355
+ | `/metabolism-status` | Compatibility alias view over project `knowledge_state` summary |
355
356
 
356
357
  `/research-subscribe` examples:
357
358
  - `/research-subscribe daily 09:00 Asia/Shanghai` (auto-deliver to current chat sender/channel when possible)
@@ -381,6 +382,7 @@ Behavior notes:
381
382
  - Full-text files should be downloaded to a temporary directory and cleaned after each run; cleanup result is tracked in `knowledge_state` run logs.
382
383
  - Storage: subscription jobs are stored in OpenClaw cron storage; knowledge artifacts are stored in project workspace files.
383
384
  - Global inspect: `openclaw cron list --all --json`
385
+ - Compatibility aliases: `openclaw research init/list/status/delete` and `/metabolism-status` are retained for migration, but internally use the same unified `projects/*/knowledge_state` architecture.
384
386
 
385
387
  ---
386
388
 
package/README.zh.md CHANGED
@@ -336,7 +336,7 @@ openclaw gateway
336
336
  | `unpaywall_download` | 通过 Unpaywall API 按 DOI 下载开放获取 PDF。非 OA 论文跳过不报错。 |
337
337
  | `github_search` | 搜索 GitHub 仓库,返回仓库名、描述、star 数、URL。支持语言过滤和排序。 |
338
338
  | `paper_browser` | 分页浏览大型论文文件(.tex/.md),避免一次性加载数千行到上下文。返回指定行范围和导航信息。 |
339
- | `scientify_cron_job` | 由模型管理 Scientify 定时任务(`upsert`/`list`/`remove`)。主要参数:`action`、`scope`、`schedule`、`topic`、`project`、`message`、`max_papers`、`recency_days`、`candidate_pool`、`score_weights`、`sources`、`channel`、`to`、`no_deliver`、`job_id`。 |
339
+ | `scientify_cron_job` | 由模型管理 Scientify 定时任务(`upsert`/`list`/`remove`)。主要参数:`action`、`scope`、`schedule`、`topic`、`project`、`message`、`max_papers`、`recency_days`、`candidate_pool`、`score_weights`、`sources`、`channel`、`to`、`no_deliver`、`run_now`、`job_id`。当 `run_now=true` 且是研究任务时,还会返回 `status_json` 快照。 |
340
340
  | `scientify_literature_state` | 订阅增量状态工具:`prepare` 获取去重上下文(含记忆提示)、`record` 记录已推送论文 + 项目级 `knowledge_state` 产物(含 `paper_notes` 深读字段与全文临时清理日志)、`feedback` 写入轻量偏好记忆、`status` 查看状态与可追溯日志。 |
341
341
 
342
342
  ### Commands(直接执行,不经 LLM)
@@ -352,6 +352,7 @@ openclaw gateway
352
352
  | `/research-subscribe ...` | 创建/更新定时 Scientify 任务(支持 `daily`、`weekly`、`every`、`at`、`cron`;可选参数:`--channel`、`--to`、`--topic`、`--project`、`--message`、`--max-papers`、`--recency-days`、`--candidate-pool`、`--score-weights`、`--sources`、`--no-deliver`) |
353
353
  | `/research-subscriptions` | 查看你的 Scientify 定时任务 |
354
354
  | `/research-unsubscribe [job-id]` | 取消你的 Scientify 定时任务(或删除指定任务) |
355
+ | `/metabolism-status` | 兼容别名:查看项目 `knowledge_state` 摘要 |
355
356
 
356
357
  `/research-subscribe` 示例:
357
358
  - `/research-subscribe daily 09:00 Asia/Shanghai`(默认尽量推送到当前消息来源的用户/频道)
@@ -381,6 +382,7 @@ openclaw gateway
381
382
  - 全文文件建议下载到临时目录并在每轮后清理,清理结果会写入 `knowledge_state` 的 run log。
382
383
  - 存储位置:订阅任务保存在 OpenClaw cron 存储中;知识状态产物写入项目 workspace 文件。
383
384
  - 全局查看:`openclaw cron list --all --json`
385
+ - 兼容别名:`openclaw research init/list/status/delete` 与 `/metabolism-status` 保留用于迁移,内部都走统一的 `projects/*/knowledge_state` 架构。
384
386
 
385
387
  ---
386
388
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAwClD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QAgJtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAuClD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QA6ItD"}
package/dist/index.js CHANGED
@@ -15,7 +15,6 @@ import { createSkillInjectionHook } from "./src/hooks/inject-skill.js";
15
15
  import { createResearchModeHook } from "./src/hooks/research-mode.js";
16
16
  import { createScientifyCronAutofillHook } from "./src/hooks/scientify-cron-autofill.js";
17
17
  import { createScientifyMessageTrackerHook, createScientifySignaturePromptHook, createScientifyUsageCleanupHook, createScientifyUsageTrackerHook, } from "./src/hooks/scientify-signature.js";
18
- import { createCronSkillInjectionHook } from "./src/hooks/cron-skill-inject.js";
19
18
  import { registerResearchCli } from "./src/cli/research.js";
20
19
  import { handleMetabolismStatus } from "./src/commands/metabolism-status.js";
21
20
  // Default: check every hour
@@ -130,14 +129,12 @@ export default function register(api) {
130
129
  api.on("before_agent_start", createScientifySignaturePromptHook(), {
131
130
  priority: 90,
132
131
  });
133
- // Inject SKILL.md into cron session messages (for metabolism heartbeat).
134
- api.on("before_agent_start", createCronSkillInjectionHook());
135
132
  // Register CLI commands: openclaw research init/list/status/delete
136
133
  registerResearchCli(api);
137
- // Register metabolism chat commands
134
+ // Compatibility alias command over unified knowledge_state
138
135
  api.registerCommand({
139
136
  name: "metabolism-status",
140
- description: "Show knowledge metabolism status (day, topics, hypotheses)",
137
+ description: "Compatibility alias: show continuous research engine status",
141
138
  acceptsArgs: false,
142
139
  requireAuth: false,
143
140
  handler: handleMetabolismStatus,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Register the `openclaw research` CLI command.
3
+ * Compatibility alias over unified project/cron architecture.
3
4
  */
4
5
  export declare function registerResearchCli(api: {
5
6
  registerCli: (registrar: unknown, opts?: {
6
7
  commands?: string[];
7
8
  }) => void;
8
- source: string;
9
9
  }): void;
10
10
  //# sourceMappingURL=research.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../src/cli/research.ts"],"names":[],"mappings":"AAiSA;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE;IAAE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,QA4DnG"}
1
+ {"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../src/cli/research.ts"],"names":[],"mappings":"AA6KA;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE;IAAE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAA;CAAE,QA4CnF"}
@@ -1,283 +1,179 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import os from "node:os";
4
- import { renderBootstrapMd, renderSoulMd, renderAgentsMd } from "../templates/bootstrap.js";
5
4
  const OPENCLAW_HOME = path.join(os.homedir(), ".openclaw");
6
- const OPENCLAW_CONFIG = path.join(OPENCLAW_HOME, "openclaw.json");
5
+ const PROJECTS_ROOT = path.join(OPENCLAW_HOME, "workspace", "projects");
6
+ const ACTIVE_FILE = path.join(PROJECTS_ROOT, ".active");
7
7
  const CRON_JOBS_PATH = path.join(OPENCLAW_HOME, "cron", "jobs.json");
8
- function readOpenClawConfig() {
9
- try {
10
- return JSON.parse(fs.readFileSync(OPENCLAW_CONFIG, "utf-8"));
11
- }
12
- catch {
13
- return {};
14
- }
15
- }
16
- function writeOpenClawConfig(config) {
17
- fs.writeFileSync(OPENCLAW_CONFIG, JSON.stringify(config, null, 2) + "\n");
8
+ function ensureProjectsRoot() {
9
+ fs.mkdirSync(PROJECTS_ROOT, { recursive: true });
18
10
  }
19
11
  function readCronJobs() {
20
12
  try {
21
- return JSON.parse(fs.readFileSync(CRON_JOBS_PATH, "utf-8"));
13
+ const raw = fs.readFileSync(CRON_JOBS_PATH, "utf-8");
14
+ const parsed = JSON.parse(raw);
15
+ return Array.isArray(parsed.jobs) ? parsed.jobs : [];
22
16
  }
23
17
  catch {
24
- return { version: 1, jobs: [] };
18
+ return [];
25
19
  }
26
20
  }
27
- function writeCronJobs(data) {
28
- const dir = path.dirname(CRON_JOBS_PATH);
29
- fs.mkdirSync(dir, { recursive: true });
30
- fs.writeFileSync(CRON_JOBS_PATH, JSON.stringify(data, null, 2) + "\n");
21
+ function normalizeProjectId(raw) {
22
+ const v = raw.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
23
+ if (!v)
24
+ throw new Error("project id is empty after normalization");
25
+ return v;
31
26
  }
32
- function addCronJob(agentId) {
33
- const data = readCronJobs();
34
- const jobId = `${agentId}-metabolism`;
35
- // Avoid duplicates
36
- if (data.jobs.some((j) => j.jobId === jobId))
37
- return;
38
- data.jobs.push({
39
- name: `${agentId} daily metabolism`,
40
- jobId,
41
- schedule: { kind: "cron", expr: "0 6 * * *", tz: "Asia/Shanghai" },
42
- sessionTarget: "isolated",
43
- payload: {
44
- kind: "agentTurn",
45
- agentId,
46
- message: "执行每日知识新陈代谢。阅读 AGENTS.md 了解工作流,然后使用 /metabolism 技能完成今日代谢。",
47
- },
48
- delivery: { mode: "announce" },
49
- enabled: true,
50
- });
51
- writeCronJobs(data);
27
+ function listProjects() {
28
+ ensureProjectsRoot();
29
+ return fs
30
+ .readdirSync(PROJECTS_ROOT, { withFileTypes: true })
31
+ .filter((d) => d.isDirectory() && !d.name.startsWith("."))
32
+ .map((d) => d.name)
33
+ .sort();
52
34
  }
53
- function removeCronJob(agentId) {
54
- const data = readCronJobs();
55
- const jobId = `${agentId}-metabolism`;
56
- const before = data.jobs.length;
57
- data.jobs = data.jobs.filter((j) => j.jobId !== jobId);
58
- if (data.jobs.length < before) {
59
- writeCronJobs(data);
35
+ function getActiveProject() {
36
+ try {
37
+ const raw = fs.readFileSync(ACTIVE_FILE, "utf-8").trim();
38
+ return raw || undefined;
60
39
  }
61
- }
62
- function findPluginSkillsDir(entryDir) {
63
- // Walk up to find openclaw.plugin.json
64
- let dir = entryDir;
65
- for (;;) {
66
- if (fs.existsSync(path.join(dir, "openclaw.plugin.json"))) {
67
- return path.join(dir, "skills");
68
- }
69
- const parent = path.dirname(dir);
70
- if (parent === dir)
71
- break;
72
- dir = parent;
40
+ catch {
41
+ return undefined;
73
42
  }
74
- return path.join(entryDir, "skills");
75
43
  }
76
- function listResearchProjects() {
77
- const config = readOpenClawConfig();
78
- const agents = config.agents?.list ?? [];
79
- const projects = [];
80
- for (const agent of agents) {
81
- if (!agent.id.startsWith("research-"))
82
- continue;
83
- const projectId = agent.id.replace("research-", "");
84
- const workspace = agent.workspace
85
- ? agent.workspace.replace("~", os.homedir())
86
- : path.join(OPENCLAW_HOME, `workspace-${agent.id}`);
87
- let currentDay = 0;
88
- let createdAt = "";
89
- const configPath = path.join(workspace, "metabolism", "config.json");
90
- try {
91
- const mc = JSON.parse(fs.readFileSync(configPath, "utf-8"));
92
- currentDay = mc.currentDay ?? 0;
93
- createdAt = mc.createdAt ?? "";
94
- }
95
- catch {
96
- // config not yet created (pre-bootstrap)
97
- }
98
- projects.push({
99
- id: projectId,
100
- agentId: agent.id,
101
- workspace,
102
- currentDay,
103
- createdAt,
104
- });
105
- }
106
- return projects;
44
+ function setActiveProject(projectId) {
45
+ ensureProjectsRoot();
46
+ fs.writeFileSync(ACTIVE_FILE, `${projectId}\n`, "utf-8");
107
47
  }
108
- function initProject(id, pluginSkillsDir) {
109
- const agentId = `research-${id}`;
110
- const workspace = path.join(OPENCLAW_HOME, `workspace-${agentId}`);
111
- // Check if workspace already exists
112
- if (fs.existsSync(workspace)) {
113
- console.error(`Error: workspace already exists at ${workspace}`);
48
+ function initProject(rawId) {
49
+ const id = normalizeProjectId(rawId);
50
+ ensureProjectsRoot();
51
+ const projectDir = path.join(PROJECTS_ROOT, id);
52
+ if (fs.existsSync(projectDir)) {
53
+ console.error(`Error: project already exists at ${projectDir}`);
114
54
  process.exit(1);
115
55
  }
116
- // 1. Create workspace directory structure
117
56
  const dirs = [
118
- workspace,
119
- path.join(workspace, "metabolism"),
120
- path.join(workspace, "metabolism", "knowledge"),
121
- path.join(workspace, "metabolism", "diffs"),
122
- path.join(workspace, "metabolism", "hypotheses"),
123
- path.join(workspace, "metabolism", "log"),
124
- path.join(workspace, "skills", "metabolism"),
125
- path.join(workspace, "survey"),
126
- path.join(workspace, "papers"),
127
- path.join(workspace, "ideas"),
128
- path.join(workspace, "experiments"),
57
+ projectDir,
58
+ path.join(projectDir, "papers"),
59
+ path.join(projectDir, "survey"),
60
+ path.join(projectDir, "ideas"),
61
+ path.join(projectDir, "knowledge_state"),
129
62
  ];
130
- for (const dir of dirs) {
63
+ for (const dir of dirs)
131
64
  fs.mkdirSync(dir, { recursive: true });
132
- }
133
- // 2. Write bootstrap files
134
- fs.writeFileSync(path.join(workspace, "BOOTSTRAP.md"), renderBootstrapMd(id));
135
- fs.writeFileSync(path.join(workspace, "SOUL.md"), renderSoulMd(id));
136
- fs.writeFileSync(path.join(workspace, "AGENTS.md"), renderAgentsMd());
137
- // 3. Copy metabolism SKILL.md from plugin bundled skills
138
- const srcSkill = path.join(pluginSkillsDir, "metabolism", "SKILL.md");
139
- const dstSkill = path.join(workspace, "skills", "metabolism", "SKILL.md");
140
- if (fs.existsSync(srcSkill)) {
141
- fs.copyFileSync(srcSkill, dstSkill);
142
- }
143
- else {
144
- console.warn(`Warning: metabolism SKILL.md not found at ${srcSkill}`);
145
- }
146
- // 4. Modify openclaw.json
147
- const config = readOpenClawConfig();
148
- // Add agent to agents.list
149
- if (!config.agents)
150
- config.agents = {};
151
- const agents = config.agents;
152
- if (!agents.list)
153
- agents.list = [];
154
- // Check for duplicate
155
- if (agents.list.some((a) => a.id === agentId)) {
156
- console.error(`Error: agent '${agentId}' already exists in openclaw.json`);
157
- process.exit(1);
158
- }
159
- agents.list.push({
160
- id: agentId,
161
- workspace: `~/.openclaw/workspace-${agentId}`,
162
- });
163
- writeOpenClawConfig(config);
164
- // 5. Register daily metabolism cron job
165
- addCronJob(agentId);
166
- console.log(`\nResearch project '${id}' created successfully.\n`);
167
- console.log(` Agent ID: ${agentId}`);
168
- console.log(` Workspace: ${workspace}`);
169
- console.log(` Cron: daily metabolism at 06:00 (Asia/Shanghai)\n`);
170
- console.log("Next steps:");
171
- console.log(" 1. Restart Gateway to load the new agent");
172
- console.log(" 2. In Gateway web UI, create a Feishu group binding for this agent");
173
- console.log(" 3. Send a message in the Feishu group to start the BOOTSTRAP configuration");
65
+ const now = new Date().toISOString();
66
+ fs.writeFileSync(path.join(projectDir, "project.json"), JSON.stringify({ id, name: id, created: now, topics: [] }, null, 2) + "\n", "utf-8");
67
+ fs.writeFileSync(path.join(projectDir, "task.json"), JSON.stringify({ topic: id, created: now, mode: "continuous-research-engine" }, null, 2) + "\n", "utf-8");
68
+ if (!getActiveProject())
69
+ setActiveProject(id);
70
+ console.log(`\nResearch project '${id}' initialized under unified workspace.`);
71
+ console.log(` Path: ${projectDir}`);
72
+ console.log(" Note: use /research-subscribe ... --project <id> to create heartbeat schedules.\n");
174
73
  }
175
- function showStatus(id) {
176
- const projects = listResearchProjects();
177
- const project = projects.find((p) => p.id === id);
178
- if (!project) {
74
+ function showStatus(rawId) {
75
+ const id = normalizeProjectId(rawId);
76
+ const projectDir = path.join(PROJECTS_ROOT, id);
77
+ if (!fs.existsSync(projectDir)) {
179
78
  console.error(`Error: research project '${id}' not found`);
180
79
  process.exit(1);
181
80
  }
182
- const knowledgeDir = path.join(project.workspace, "metabolism", "knowledge");
183
- const hypothesesDir = path.join(project.workspace, "metabolism", "hypotheses");
184
- const diffsDir = path.join(project.workspace, "metabolism", "diffs");
185
- let topicCount = 0;
186
- let hypothesisCount = 0;
187
- let latestDiffs = [];
188
- try {
189
- topicCount = fs.readdirSync(knowledgeDir).filter((f) => f.startsWith("topic-")).length;
190
- }
191
- catch { /* empty */ }
81
+ const stateFile = path.join(projectDir, "knowledge_state", "state.json");
82
+ let streamCount = 0;
83
+ let totalRuns = 0;
84
+ let totalHypotheses = 0;
85
+ let lastStatus = "(unknown)";
86
+ let lastRunAtMs = 0;
192
87
  try {
193
- hypothesisCount = fs.readdirSync(hypothesesDir).filter((f) => f.endsWith(".md")).length;
88
+ const state = JSON.parse(fs.readFileSync(stateFile, "utf-8"));
89
+ const streams = Object.values(state.streams ?? {});
90
+ streamCount = streams.length;
91
+ for (const s of streams) {
92
+ totalRuns += Number.isFinite(s.totalRuns) ? Math.max(0, Math.floor(s.totalRuns)) : 0;
93
+ totalHypotheses += Number.isFinite(s.totalHypotheses) ? Math.max(0, Math.floor(s.totalHypotheses)) : 0;
94
+ const ts = Number.isFinite(s.lastRunAtMs) ? Math.floor(s.lastRunAtMs) : 0;
95
+ if (ts >= lastRunAtMs) {
96
+ lastRunAtMs = ts;
97
+ lastStatus = s.lastStatus ?? lastStatus;
98
+ }
99
+ }
194
100
  }
195
- catch { /* empty */ }
196
- try {
197
- latestDiffs = fs
198
- .readdirSync(diffsDir)
199
- .filter((f) => f.endsWith(".md"))
200
- .sort()
201
- .slice(-3);
101
+ catch {
102
+ // no state yet
202
103
  }
203
- catch { /* empty */ }
104
+ const cronJobs = readCronJobs();
105
+ const relatedJobs = cronJobs.filter((job) => {
106
+ const name = (job.name ?? "").toLowerCase();
107
+ const msg = (job.payload?.message ?? "").toLowerCase();
108
+ return name.includes(id) || msg.includes(`--project ${id}`) || msg.includes(`project_id=${id}`);
109
+ });
204
110
  console.log(`\nResearch Project: ${id}`);
205
- console.log(` Agent: ${project.agentId}`);
206
- console.log(` Workspace: ${project.workspace}`);
207
- console.log(` Day: ${project.currentDay}`);
208
- console.log(` Topics: ${topicCount}`);
209
- console.log(` Hypotheses: ${hypothesisCount}`);
210
- if (latestDiffs.length > 0) {
211
- console.log(` Recent diffs: ${latestDiffs.join(", ")}`);
212
- }
213
- if (project.createdAt) {
214
- console.log(` Created: ${project.createdAt}`);
111
+ console.log(` Path: ${projectDir}`);
112
+ console.log(` Streams: ${streamCount}`);
113
+ console.log(` Total runs: ${totalRuns}`);
114
+ console.log(` Total hypotheses: ${totalHypotheses}`);
115
+ console.log(` Last status: ${lastStatus}`);
116
+ console.log(` Last run: ${lastRunAtMs > 0 ? new Date(lastRunAtMs).toISOString() : "(none)"}`);
117
+ console.log(` Related cron jobs: ${relatedJobs.length}`);
118
+ for (const job of relatedJobs.slice(0, 5)) {
119
+ console.log(` - ${job.id ?? job.jobId ?? "(unknown-id)"} ${job.name ?? ""}`);
120
+ }
121
+ if (relatedJobs.length > 5) {
122
+ console.log(` ... (${relatedJobs.length - 5} more)`);
215
123
  }
216
124
  }
217
- function deleteProject(id) {
218
- const agentId = `research-${id}`;
219
- const workspace = path.join(OPENCLAW_HOME, `workspace-${agentId}`);
220
- // Remove workspace
221
- if (fs.existsSync(workspace)) {
222
- fs.rmSync(workspace, { recursive: true, force: true });
223
- console.log(`Deleted workspace: ${workspace}`);
125
+ function deleteProject(rawId) {
126
+ const id = normalizeProjectId(rawId);
127
+ const projectDir = path.join(PROJECTS_ROOT, id);
128
+ if (!fs.existsSync(projectDir)) {
129
+ console.error(`Error: project '${id}' not found`);
130
+ process.exit(1);
224
131
  }
225
- // Remove from openclaw.json
226
- const config = readOpenClawConfig();
227
- const agents = config.agents;
228
- if (agents?.list) {
229
- agents.list = agents.list.filter((a) => a.id !== agentId);
132
+ fs.rmSync(projectDir, { recursive: true, force: true });
133
+ if (getActiveProject() === id) {
134
+ try {
135
+ fs.unlinkSync(ACTIVE_FILE);
136
+ }
137
+ catch {
138
+ // ignore
139
+ }
230
140
  }
231
- // Remove cron job
232
- removeCronJob(agentId);
233
- writeOpenClawConfig(config);
234
- console.log(`Removed agent '${agentId}' from openclaw.json`);
235
- console.log(`\nNote: If you created a Feishu group binding, remove it manually in the Gateway web UI.`);
141
+ console.log(`Deleted project: ${id}`);
142
+ console.log("Note: cron jobs are not auto-removed. Use /research-unsubscribe or openclaw cron list/remove.");
236
143
  }
237
144
  /**
238
145
  * Register the `openclaw research` CLI command.
146
+ * Compatibility alias over unified project/cron architecture.
239
147
  */
240
148
  export function registerResearchCli(api) {
241
- const entryDir = path.dirname(api.source);
242
149
  api.registerCli(({ program }) => {
243
150
  const cmd = program.command("research");
244
- cmd.description("Manage CKM research projects");
245
- const pluginSkillsDir = findPluginSkillsDir(entryDir);
246
- // openclaw research init <id>
151
+ cmd.description("Manage continuous research engine projects (compatibility alias)");
247
152
  const initCmd = cmd.command("init <id>");
248
- initCmd.description("Create a new research project agent + workspace");
249
- initCmd.action((id) => {
250
- initProject(String(id), pluginSkillsDir);
251
- });
252
- // openclaw research list
153
+ initCmd.description("Initialize a project under ~/.openclaw/workspace/projects/<id>");
154
+ initCmd.action((id) => initProject(String(id)));
253
155
  const listCmd = cmd.command("list");
254
- listCmd.description("List all research projects");
156
+ listCmd.description("List unified workspace projects");
255
157
  listCmd.action(() => {
256
- const projects = listResearchProjects();
158
+ const projects = listProjects();
159
+ const active = getActiveProject();
257
160
  if (projects.length === 0) {
258
- console.log("No research projects found.");
161
+ console.log("No projects found.");
259
162
  return;
260
163
  }
261
- console.log("\nResearch Projects:\n");
262
- for (const p of projects) {
263
- const configured = p.currentDay > 0 || p.createdAt ? "" : " (pending BOOTSTRAP)";
264
- console.log(` ${p.id} Day ${p.currentDay}${configured}`);
265
- console.log(` ${p.workspace}`);
164
+ console.log("\nProjects:\n");
165
+ for (const id of projects) {
166
+ const marker = id === active ? "*" : " ";
167
+ console.log(` ${marker} ${id}`);
266
168
  }
267
169
  console.log();
268
170
  });
269
- // openclaw research status <id>
270
171
  const statusCmd = cmd.command("status <id>");
271
- statusCmd.description("Show research project metabolism status");
272
- statusCmd.action((id) => {
273
- showStatus(String(id));
274
- });
275
- // openclaw research delete <id>
172
+ statusCmd.description("Show project status from unified knowledge_state");
173
+ statusCmd.action((id) => showStatus(String(id)));
276
174
  const deleteCmd = cmd.command("delete <id>");
277
- deleteCmd.description("Delete a research project (agent + workspace + cron)");
278
- deleteCmd.action((id) => {
279
- deleteProject(String(id));
280
- });
175
+ deleteCmd.description("Delete a project from unified workspace (compatibility)");
176
+ deleteCmd.action((id) => deleteProject(String(id)));
281
177
  }, { commands: ["research"] });
282
178
  }
283
179
  //# sourceMappingURL=research.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/cli/research.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/cli/research.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACxE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACxD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AASrE,SAAS,kBAAkB;IACzB,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACvD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3G,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY;IACnB,kBAAkB,EAAE,CAAC;IACrB,OAAO,EAAE;SACN,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACnD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,GAAG,IAAI,SAAS,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,kBAAkB,EAAE,CAAC;IACrB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,SAAS,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACrC,kBAAkB,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG;QACX,UAAU;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC;KACzC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAC1E,OAAO,CACR,CAAC;IACF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAC/F,OAAO,CACR,CAAC;IAEF,IAAI,CAAC,gBAAgB,EAAE;QAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,wCAAwC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACzE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,UAAU,GAAG,WAAW,CAAC;IAC7B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAE3D,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnD,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxG,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;gBACtB,WAAW,GAAG,EAAE,CAAC;gBACjB,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,cAAc,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;AAC/G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAkF;IAElF,GAAG,CAAC,WAAW,CACb,CAAC,EAAE,OAAO,EAAuD,EAAE,EAAE;QACnE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAMrC,CAAC;QACF,GAAG,CAAC,WAAW,CAAC,kEAAkE,CAAC,CAAC;QAEpF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO,CAAC,WAAW,CAAC,gEAAgE,CAAC,CAAC;QACtF,OAAO,CAAC,MAAM,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAClB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7C,SAAS,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC;QAC1E,SAAS,CAAC,MAAM,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7C,SAAS,CAAC,WAAW,CAAC,yDAAyD,CAAC,CAAC;QACjF,SAAS,CAAC,MAAM,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAC3B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { PluginCommandContext, PluginCommandResult } from "openclaw";
2
2
  /**
3
- * /metabolism-status — Show knowledge metabolism status
3
+ * /metabolism-status — compatibility alias of continuous research engine status.
4
4
  */
5
- export declare function handleMetabolismStatus(_ctx: PluginCommandContext): PluginCommandResult;
5
+ export declare function handleMetabolismStatus(ctx: PluginCommandContext): PluginCommandResult;
6
6
  //# sourceMappingURL=metabolism-status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metabolism-status.d.ts","sourceRoot":"","sources":["../../../src/commands/metabolism-status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA6E1E;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,mBAAmB,CA0CtF"}
1
+ {"version":3,"file":"metabolism-status.d.ts","sourceRoot":"","sources":["../../../src/commands/metabolism-status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA6D1E;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,oBAAoB,GAAG,mBAAmB,CAsErF"}