scientify 1.9.0 → 1.10.1

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 (63) hide show
  1. package/README.md +29 -0
  2. package/README.zh.md +29 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +29 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/hooks/research-mode.d.ts.map +1 -1
  7. package/dist/src/hooks/research-mode.js +6 -0
  8. package/dist/src/hooks/research-mode.js.map +1 -1
  9. package/dist/src/hooks/scientify-cron-autofill.d.ts +15 -0
  10. package/dist/src/hooks/scientify-cron-autofill.d.ts.map +1 -0
  11. package/dist/src/hooks/scientify-cron-autofill.js +156 -0
  12. package/dist/src/hooks/scientify-cron-autofill.js.map +1 -0
  13. package/dist/src/hooks/scientify-signature.d.ts.map +1 -1
  14. package/dist/src/hooks/scientify-signature.js +4 -1
  15. package/dist/src/hooks/scientify-signature.js.map +1 -1
  16. package/dist/src/literature/subscription-state.d.ts +90 -0
  17. package/dist/src/literature/subscription-state.d.ts.map +1 -0
  18. package/dist/src/literature/subscription-state.js +521 -0
  19. package/dist/src/literature/subscription-state.js.map +1 -0
  20. package/dist/src/research-subscriptions/constants.d.ts +16 -0
  21. package/dist/src/research-subscriptions/constants.d.ts.map +1 -0
  22. package/dist/src/research-subscriptions/constants.js +59 -0
  23. package/dist/src/research-subscriptions/constants.js.map +1 -0
  24. package/dist/src/research-subscriptions/cron-client.d.ts +8 -0
  25. package/dist/src/research-subscriptions/cron-client.d.ts.map +1 -0
  26. package/dist/src/research-subscriptions/cron-client.js +81 -0
  27. package/dist/src/research-subscriptions/cron-client.js.map +1 -0
  28. package/dist/src/research-subscriptions/delivery.d.ts +10 -0
  29. package/dist/src/research-subscriptions/delivery.d.ts.map +1 -0
  30. package/dist/src/research-subscriptions/delivery.js +82 -0
  31. package/dist/src/research-subscriptions/delivery.js.map +1 -0
  32. package/dist/src/research-subscriptions/handlers.d.ts +6 -0
  33. package/dist/src/research-subscriptions/handlers.d.ts.map +1 -0
  34. package/dist/src/research-subscriptions/handlers.js +200 -0
  35. package/dist/src/research-subscriptions/handlers.js.map +1 -0
  36. package/dist/src/research-subscriptions/parse.d.ts +11 -0
  37. package/dist/src/research-subscriptions/parse.d.ts.map +1 -0
  38. package/dist/src/research-subscriptions/parse.js +478 -0
  39. package/dist/src/research-subscriptions/parse.js.map +1 -0
  40. package/dist/src/research-subscriptions/prompt.d.ts +5 -0
  41. package/dist/src/research-subscriptions/prompt.d.ts.map +1 -0
  42. package/dist/src/research-subscriptions/prompt.js +161 -0
  43. package/dist/src/research-subscriptions/prompt.js.map +1 -0
  44. package/dist/src/research-subscriptions/types.d.ts +65 -0
  45. package/dist/src/research-subscriptions/types.d.ts.map +1 -0
  46. package/dist/src/research-subscriptions/types.js +2 -0
  47. package/dist/src/research-subscriptions/types.js.map +1 -0
  48. package/dist/src/research-subscriptions.d.ts +2 -0
  49. package/dist/src/research-subscriptions.d.ts.map +1 -0
  50. package/dist/src/research-subscriptions.js +2 -0
  51. package/dist/src/research-subscriptions.js.map +1 -0
  52. package/dist/src/tools/scientify-cron.d.ts +62 -0
  53. package/dist/src/tools/scientify-cron.d.ts.map +1 -0
  54. package/dist/src/tools/scientify-cron.js +224 -0
  55. package/dist/src/tools/scientify-cron.js.map +1 -0
  56. package/dist/src/tools/scientify-literature-state.d.ts +70 -0
  57. package/dist/src/tools/scientify-literature-state.d.ts.map +1 -0
  58. package/dist/src/tools/scientify-literature-state.js +312 -0
  59. package/dist/src/tools/scientify-literature-state.js.map +1 -0
  60. package/openclaw.plugin.json +2 -1
  61. package/package.json +1 -1
  62. package/skills/_shared/workspace-spec.md +13 -0
  63. package/skills/research-subscription/SKILL.md +102 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/research-subscriptions/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { PluginLogger, PluginRuntime } from "openclaw";
2
+ export type ScheduleSpec = {
3
+ kind: "cron";
4
+ expr: string;
5
+ tz: string;
6
+ display: string;
7
+ } | {
8
+ kind: "every";
9
+ duration: string;
10
+ display: string;
11
+ } | {
12
+ kind: "at";
13
+ when: string;
14
+ display: string;
15
+ };
16
+ export type CronJob = {
17
+ id: string;
18
+ name?: string;
19
+ enabled?: boolean;
20
+ schedule?: {
21
+ kind?: string;
22
+ expr?: string;
23
+ tz?: string;
24
+ everyMs?: number;
25
+ at?: string;
26
+ };
27
+ delivery?: {
28
+ mode?: string;
29
+ channel?: string;
30
+ to?: string;
31
+ };
32
+ };
33
+ export type CronListResult = {
34
+ jobs?: CronJob[];
35
+ };
36
+ export type CronCommandDeps = {
37
+ runtime: PluginRuntime;
38
+ logger: PluginLogger;
39
+ };
40
+ export type DeliveryTarget = {
41
+ mode: "announce" | "none";
42
+ channel: string;
43
+ to?: string;
44
+ display: string;
45
+ };
46
+ export type ScoreWeights = {
47
+ relevance: number;
48
+ novelty: number;
49
+ authority: number;
50
+ actionability: number;
51
+ };
52
+ export type SubscriptionOptions = {
53
+ scheduleTokens: string[];
54
+ channelOverride?: string;
55
+ toOverride?: string;
56
+ noDeliver: boolean;
57
+ topic?: string;
58
+ message?: string;
59
+ maxPapers?: number;
60
+ recencyDays?: number;
61
+ sources?: string[];
62
+ candidatePool?: number;
63
+ scoreWeights?: ScoreWeights;
64
+ };
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/research-subscriptions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/research-subscriptions/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { createResearchSubscribeHandler, createResearchSubscriptionsHandler, createResearchUnsubscribeHandler, } from "./research-subscriptions/handlers.js";
2
+ //# sourceMappingURL=research-subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-subscriptions.d.ts","sourceRoot":"","sources":["../../src/research-subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,GACjC,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createResearchSubscribeHandler, createResearchSubscriptionsHandler, createResearchUnsubscribeHandler, } from "./research-subscriptions/handlers.js";
2
+ //# sourceMappingURL=research-subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-subscriptions.js","sourceRoot":"","sources":["../../src/research-subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,GACjC,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { PluginLogger, PluginRuntime } from "openclaw";
2
+ export declare const ScientifyCronToolSchema: import("@sinclair/typebox").TObject<{
3
+ action: import("@sinclair/typebox").TString;
4
+ scope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
5
+ schedule: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
+ topic: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
+ message: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ max_papers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
9
+ recency_days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
10
+ candidate_pool: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
11
+ score_weights: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
12
+ relevance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
13
+ novelty: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
14
+ authority: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
15
+ actionability: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
16
+ }>>;
17
+ sources: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
18
+ channel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ to: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ no_deliver: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
21
+ job_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
22
+ }>;
23
+ type CronToolDeps = {
24
+ runtime: PluginRuntime;
25
+ logger: PluginLogger;
26
+ };
27
+ export declare function createScientifyCronTool(deps: CronToolDeps): {
28
+ label: string;
29
+ name: string;
30
+ description: string;
31
+ parameters: import("@sinclair/typebox").TObject<{
32
+ action: import("@sinclair/typebox").TString;
33
+ scope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
34
+ schedule: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
35
+ topic: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
36
+ message: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
37
+ max_papers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
38
+ recency_days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
39
+ candidate_pool: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
40
+ score_weights: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
41
+ relevance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
42
+ novelty: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
43
+ authority: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
44
+ actionability: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
45
+ }>>;
46
+ sources: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
47
+ channel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
48
+ to: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ no_deliver: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
50
+ job_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
+ }>;
52
+ execute: (_toolCallId: string, rawArgs: unknown) => Promise<{
53
+ type: "tool_result";
54
+ content: {
55
+ type: "text";
56
+ text: string;
57
+ }[];
58
+ isError?: boolean;
59
+ }>;
60
+ };
61
+ export {};
62
+ //# sourceMappingURL=scientify-cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scientify-cron.d.ts","sourceRoot":"","sources":["../../../src/tools/scientify-cron.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA6C,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASvG,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;EA8ElC,CAAC;AAEH,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAyIF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;2BAWzB,MAAM,WAAW,OAAO;;;;;;;;EAwDxD"}
@@ -0,0 +1,224 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { normalizeDeliveryChannelOverride } from "../research-subscriptions/delivery.js";
3
+ import { createResearchSubscribeHandler, createResearchSubscriptionsHandler, createResearchUnsubscribeHandler, } from "../research-subscriptions.js";
4
+ import { Result } from "./result.js";
5
+ export const ScientifyCronToolSchema = Type.Object({
6
+ action: Type.String({
7
+ description: 'Action: "upsert" | "list" | "remove".',
8
+ }),
9
+ scope: Type.Optional(Type.String({
10
+ description: "Scope key for grouping jobs (e.g. user ID or thread ID). Default: global.",
11
+ })),
12
+ schedule: Type.Optional(Type.String({
13
+ description: 'Schedule expression for upsert. Examples: "daily 08:00 Asia/Shanghai", "weekly mon 09:00", "every 6h", "at 2m", "at 2026-03-04T08:00:00+08:00", "cron 0 9 * * * Asia/Shanghai".',
14
+ })),
15
+ topic: Type.Optional(Type.String({
16
+ description: "Optional research topic override used to build the scheduled task prompt.",
17
+ })),
18
+ message: Type.Optional(Type.String({
19
+ description: "Optional plain reminder content for non-research jobs. When set, the scheduled task sends this reminder instead of running the default literature workflow.",
20
+ })),
21
+ max_papers: Type.Optional(Type.Number({
22
+ description: "Optional max papers per run for research subscriptions (1-20).",
23
+ })),
24
+ recency_days: Type.Optional(Type.Number({
25
+ description: "Optional recency preference in days for research subscriptions.",
26
+ })),
27
+ candidate_pool: Type.Optional(Type.Number({
28
+ description: "Optional candidate pool size before Top-K selection (3-50).",
29
+ })),
30
+ score_weights: Type.Optional(Type.Object({
31
+ relevance: Type.Optional(Type.Number({ description: "Weight for topical relevance (0-100)." })),
32
+ novelty: Type.Optional(Type.Number({ description: "Weight for novelty/freshness (0-100)." })),
33
+ authority: Type.Optional(Type.Number({ description: "Weight for source authority (0-100)." })),
34
+ actionability: Type.Optional(Type.Number({ description: "Weight for practical actionability (0-100)." })),
35
+ })),
36
+ sources: Type.Optional(Type.Array(Type.String({
37
+ description: "Optional preferred search sources, e.g. ['arxiv','openalex'].",
38
+ }))),
39
+ channel: Type.Optional(Type.String({
40
+ description: 'Optional delivery channel override (e.g. "feishu", "telegram", "last", "webui", "tui"). "webui"/"tui" are aliases of "last". If set to a concrete channel (not "last"), provide `to` as well.',
41
+ })),
42
+ to: Type.Optional(Type.String({
43
+ description: 'Delivery target override (channel-specific user/chat id). Required when `channel` is a concrete value like "feishu" or "telegram".',
44
+ })),
45
+ no_deliver: Type.Optional(Type.Boolean({
46
+ description: "If true, run in background without push delivery.",
47
+ })),
48
+ job_id: Type.Optional(Type.String({
49
+ description: "Specific job id to remove (only used when action=remove).",
50
+ })),
51
+ });
52
+ function readStringParam(params, key) {
53
+ const value = params[key];
54
+ if (value === undefined || value === null)
55
+ return undefined;
56
+ const str = String(value).trim();
57
+ return str.length > 0 ? str : undefined;
58
+ }
59
+ function readBooleanParam(params, key) {
60
+ return params[key] === true;
61
+ }
62
+ function readNumberParam(params, key) {
63
+ const value = params[key];
64
+ if (typeof value !== "number" || !Number.isFinite(value))
65
+ return undefined;
66
+ return value;
67
+ }
68
+ function readScoreWeightsParam(params) {
69
+ const raw = params.score_weights;
70
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
71
+ return undefined;
72
+ const record = raw;
73
+ const entries = [];
74
+ const pushIfValid = (key) => {
75
+ const value = record[key];
76
+ if (typeof value !== "number" || !Number.isFinite(value))
77
+ return;
78
+ entries.push([key, value]);
79
+ };
80
+ pushIfValid("relevance");
81
+ pushIfValid("novelty");
82
+ pushIfValid("authority");
83
+ pushIfValid("actionability");
84
+ if (entries.length === 0)
85
+ return undefined;
86
+ return entries.map(([key, value]) => `${key}:${value}`).join(",");
87
+ }
88
+ function quoteArg(value) {
89
+ if (/^[a-zA-Z0-9_./:+-]+$/.test(value))
90
+ return value;
91
+ return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
92
+ }
93
+ function normalizeScope(raw) {
94
+ const base = (raw ?? "global")
95
+ .toLowerCase()
96
+ .replace(/[^a-z0-9_-]+/g, "-")
97
+ .replace(/-+/g, "-")
98
+ .replace(/^-|-$/g, "");
99
+ return base || "global";
100
+ }
101
+ function buildToolContext(scope, args, commandBody) {
102
+ return {
103
+ senderId: `tool_${scope}`,
104
+ channel: "tool",
105
+ isAuthorizedSender: true,
106
+ args,
107
+ commandBody,
108
+ config: {},
109
+ };
110
+ }
111
+ function getResultText(result) {
112
+ return result.text ?? result.error ?? "";
113
+ }
114
+ function getResultError(result) {
115
+ const maybe = result.error?.trim();
116
+ return maybe && maybe.length > 0 ? maybe : undefined;
117
+ }
118
+ function buildSubscribeArgs(params) {
119
+ const parts = [];
120
+ const schedule = readStringParam(params, "schedule") ?? "daily 09:00 Asia/Shanghai";
121
+ parts.push(schedule);
122
+ const topic = readStringParam(params, "topic");
123
+ if (topic) {
124
+ parts.push("--topic", quoteArg(topic));
125
+ }
126
+ const message = readStringParam(params, "message");
127
+ if (message) {
128
+ parts.push("--message", quoteArg(message));
129
+ }
130
+ const maxPapers = readNumberParam(params, "max_papers");
131
+ if (maxPapers !== undefined) {
132
+ parts.push("--max-papers", String(Math.floor(maxPapers)));
133
+ }
134
+ const recencyDays = readNumberParam(params, "recency_days");
135
+ if (recencyDays !== undefined) {
136
+ parts.push("--recency-days", String(Math.floor(recencyDays)));
137
+ }
138
+ const candidatePool = readNumberParam(params, "candidate_pool");
139
+ if (candidatePool !== undefined) {
140
+ parts.push("--candidate-pool", String(Math.floor(candidatePool)));
141
+ }
142
+ const scoreWeights = readScoreWeightsParam(params);
143
+ if (scoreWeights) {
144
+ parts.push("--score-weights", quoteArg(scoreWeights));
145
+ }
146
+ const rawSources = params.sources;
147
+ if (Array.isArray(rawSources)) {
148
+ const sources = rawSources
149
+ .filter((item) => typeof item === "string")
150
+ .map((item) => item.trim().toLowerCase())
151
+ .filter((item) => item.length > 0);
152
+ if (sources.length > 0) {
153
+ parts.push("--sources", quoteArg([...new Set(sources)].join(",")));
154
+ }
155
+ }
156
+ const channel = readStringParam(params, "channel");
157
+ if (channel) {
158
+ parts.push("--channel", quoteArg(normalizeDeliveryChannelOverride(channel)));
159
+ }
160
+ const to = readStringParam(params, "to");
161
+ if (to) {
162
+ parts.push("--to", quoteArg(to));
163
+ }
164
+ if (readBooleanParam(params, "no_deliver")) {
165
+ parts.push("--no-deliver");
166
+ }
167
+ return parts.join(" ");
168
+ }
169
+ export function createScientifyCronTool(deps) {
170
+ const subscribe = createResearchSubscribeHandler(deps);
171
+ const list = createResearchSubscriptionsHandler(deps);
172
+ const unsubscribe = createResearchUnsubscribeHandler(deps);
173
+ return {
174
+ label: "Scientify Cron",
175
+ name: "scientify_cron_job",
176
+ description: "Manage Scientify scheduled jobs (research digests or plain reminders). Supports create/update (upsert), list, and remove.",
177
+ parameters: ScientifyCronToolSchema,
178
+ execute: async (_toolCallId, rawArgs) => {
179
+ const params = rawArgs;
180
+ const action = (readStringParam(params, "action") ?? "").toLowerCase();
181
+ const scope = normalizeScope(readStringParam(params, "scope"));
182
+ try {
183
+ if (action === "upsert") {
184
+ const args = buildSubscribeArgs(params);
185
+ const ctx = buildToolContext(scope, args, `/research-subscribe ${args}`);
186
+ const res = await subscribe(ctx);
187
+ const err = getResultError(res);
188
+ if (err) {
189
+ return Result.err("operation_failed", err);
190
+ }
191
+ const text = getResultText(res);
192
+ return Result.ok({ action, scope, result: text });
193
+ }
194
+ if (action === "list") {
195
+ const ctx = buildToolContext(scope, "", "/research-subscriptions");
196
+ const res = await list(ctx);
197
+ const err = getResultError(res);
198
+ if (err) {
199
+ return Result.err("operation_failed", err);
200
+ }
201
+ const text = getResultText(res);
202
+ return Result.ok({ action, scope, result: text });
203
+ }
204
+ if (action === "remove") {
205
+ const jobId = readStringParam(params, "job_id") ?? "";
206
+ const ctx = buildToolContext(scope, jobId, jobId ? `/research-unsubscribe ${jobId}` : "/research-unsubscribe");
207
+ const res = await unsubscribe(ctx);
208
+ const err = getResultError(res);
209
+ if (err) {
210
+ return Result.err("operation_failed", err);
211
+ }
212
+ const text = getResultText(res);
213
+ return Result.ok({ action, scope, result: text });
214
+ }
215
+ return Result.err("invalid_params", 'Invalid action. Use one of: "upsert", "list", "remove".');
216
+ }
217
+ catch (error) {
218
+ deps.logger.warn(`[scientify-cron-tool] ${action || "unknown"} failed: ${error instanceof Error ? error.message : String(error)}`);
219
+ return Result.err("runtime_error", `scientify_cron_job failed: ${error instanceof Error ? error.message : String(error)}`);
220
+ }
221
+ },
222
+ };
223
+ }
224
+ //# sourceMappingURL=scientify-cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scientify-cron.js","sourceRoot":"","sources":["../../../src/tools/scientify-cron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export declare const ScientifyLiteratureStateToolSchema: import("@sinclair/typebox").TObject<{
2
+ action: import("@sinclair/typebox").TString;
3
+ scope: import("@sinclair/typebox").TString;
4
+ topic: import("@sinclair/typebox").TString;
5
+ preferences: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
6
+ max_papers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
7
+ recency_days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
8
+ sources: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
9
+ }>>;
10
+ papers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
11
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
14
+ score: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
15
+ reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ }>>>;
17
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
18
+ run_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ signal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
21
+ paper: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
22
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
23
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
+ }>>;
26
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
28
+ }>;
29
+ export declare function createScientifyLiteratureStateTool(): {
30
+ label: string;
31
+ name: string;
32
+ description: string;
33
+ parameters: import("@sinclair/typebox").TObject<{
34
+ action: import("@sinclair/typebox").TString;
35
+ scope: import("@sinclair/typebox").TString;
36
+ topic: import("@sinclair/typebox").TString;
37
+ preferences: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
38
+ max_papers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
39
+ recency_days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
40
+ sources: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
41
+ }>>;
42
+ papers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
43
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
44
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
45
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
46
+ score: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
47
+ reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
48
+ }>>>;
49
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
50
+ run_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
+ note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
52
+ signal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
53
+ paper: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
54
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
55
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
56
+ url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
57
+ }>>;
58
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
59
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
60
+ }>;
61
+ execute: (_toolCallId: string, rawArgs: unknown) => Promise<{
62
+ type: "tool_result";
63
+ content: {
64
+ type: "text";
65
+ text: string;
66
+ }[];
67
+ isError?: boolean;
68
+ }>;
69
+ };
70
+ //# sourceMappingURL=scientify-literature-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scientify-literature-state.d.ts","sourceRoot":"","sources":["../../../src/tools/scientify-literature-state.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuD7C,CAAC;AAsGH,wBAAgB,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAOjB,MAAM,WAAW,OAAO;;;;;;;;EAkKxD"}