sema-core 1.0.11 → 1.0.13
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.
- package/README.md +6 -11
- package/dist/core/Conversation.d.ts +6 -1
- package/dist/core/Conversation.d.ts.map +1 -1
- package/dist/core/Conversation.js +72 -28
- package/dist/core/Conversation.js.map +1 -1
- package/dist/core/RunTools.d.ts.map +1 -1
- package/dist/core/RunTools.js +1 -1
- package/dist/core/RunTools.js.map +1 -1
- package/dist/core/SemaCore.d.ts +16 -0
- package/dist/core/SemaCore.d.ts.map +1 -1
- package/dist/core/SemaCore.js +30 -3
- package/dist/core/SemaCore.js.map +1 -1
- package/dist/core/SemaEngine.d.ts +2 -18
- package/dist/core/SemaEngine.d.ts.map +1 -1
- package/dist/core/SemaEngine.js +101 -131
- package/dist/core/SemaEngine.js.map +1 -1
- package/dist/events/EventSystem.d.ts.map +1 -1
- package/dist/events/EventSystem.js +6 -2
- package/dist/events/EventSystem.js.map +1 -1
- package/dist/events/types.d.ts +60 -13
- package/dist/events/types.d.ts.map +1 -1
- package/dist/events/types.js +0 -1
- package/dist/events/types.js.map +1 -1
- package/dist/manager/ConfManager.d.ts.map +1 -1
- package/dist/manager/ConfManager.js +3 -1
- package/dist/manager/ConfManager.js.map +1 -1
- package/dist/manager/CronManager.d.ts +52 -0
- package/dist/manager/CronManager.d.ts.map +1 -0
- package/dist/manager/CronManager.js +426 -0
- package/dist/manager/CronManager.js.map +1 -0
- package/dist/manager/PermissionManager.d.ts +1 -1
- package/dist/manager/PermissionManager.d.ts.map +1 -1
- package/dist/manager/PermissionManager.js +63 -12
- package/dist/manager/PermissionManager.js.map +1 -1
- package/dist/manager/StateManager.d.ts +79 -11
- package/dist/manager/StateManager.d.ts.map +1 -1
- package/dist/manager/StateManager.js +287 -4
- package/dist/manager/StateManager.js.map +1 -1
- package/dist/manager/TaskManager.d.ts +106 -0
- package/dist/manager/TaskManager.d.ts.map +1 -0
- package/dist/manager/TaskManager.js +664 -0
- package/dist/manager/TaskManager.js.map +1 -0
- package/dist/services/agents/defaultBuiltInAgentsConfs.js +3 -3
- package/dist/services/agents/defaultBuiltInAgentsConfs.js.map +1 -1
- package/dist/services/agents/systemReminder.d.ts.map +1 -1
- package/dist/services/agents/systemReminder.js +8 -118
- package/dist/services/agents/systemReminder.js.map +1 -1
- package/dist/services/api/adapt/anthropic.js +2 -2
- package/dist/services/api/adapt/anthropic.js.map +1 -1
- package/dist/services/api/adapt/openai.js +2 -2
- package/dist/services/api/adapt/openai.js.map +1 -1
- package/dist/services/api/adapt/util.d.ts +1 -1
- package/dist/services/api/adapt/util.d.ts.map +1 -1
- package/dist/services/api/adapt/util.js +2 -2
- package/dist/services/api/adapt/util.js.map +1 -1
- package/dist/services/api/cache.d.ts.map +1 -1
- package/dist/services/api/cache.js +1 -3
- package/dist/services/api/cache.js.map +1 -1
- package/dist/services/api/queryLLM.d.ts.map +1 -1
- package/dist/services/api/queryLLM.js +5 -0
- package/dist/services/api/queryLLM.js.map +1 -1
- package/dist/services/commands/runCommand.d.ts.map +1 -1
- package/dist/services/commands/runCommand.js +12 -0
- package/dist/services/commands/runCommand.js.map +1 -1
- package/dist/services/mcp/MCPManager.d.ts.map +1 -1
- package/dist/services/mcp/MCPManager.js +6 -1
- package/dist/services/mcp/MCPManager.js.map +1 -1
- package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
- package/dist/services/plugins/pluginsManager.js +8 -1
- package/dist/services/plugins/pluginsManager.js.map +1 -1
- package/dist/services/rules/rulesManager.d.ts +51 -0
- package/dist/services/rules/rulesManager.d.ts.map +1 -0
- package/dist/services/rules/rulesManager.js +192 -0
- package/dist/services/rules/rulesManager.js.map +1 -0
- package/dist/tools/Agent/Agent.d.ts +19 -11
- package/dist/tools/Agent/Agent.d.ts.map +1 -1
- package/dist/tools/Agent/Agent.js +249 -72
- package/dist/tools/Agent/Agent.js.map +1 -1
- package/dist/tools/Agent/prompt.d.ts.map +1 -1
- package/dist/tools/Agent/prompt.js +7 -9
- package/dist/tools/Agent/prompt.js.map +1 -1
- package/dist/tools/Bash/Bash.d.ts +21 -11
- package/dist/tools/Bash/Bash.d.ts.map +1 -1
- package/dist/tools/Bash/Bash.js +74 -17
- package/dist/tools/Bash/Bash.js.map +1 -1
- package/dist/tools/Bash/prompt.d.ts.map +1 -1
- package/dist/tools/Bash/prompt.js +53 -70
- package/dist/tools/Bash/prompt.js.map +1 -1
- package/dist/tools/Bash/utils.d.ts +5 -1
- package/dist/tools/Bash/utils.d.ts.map +1 -1
- package/dist/tools/Bash/utils.js +24 -4
- package/dist/tools/Bash/utils.js.map +1 -1
- package/dist/tools/CronCreate/CronCreate.d.ts +68 -0
- package/dist/tools/CronCreate/CronCreate.d.ts.map +1 -0
- package/dist/tools/CronCreate/CronCreate.js +75 -0
- package/dist/tools/CronCreate/CronCreate.js.map +1 -0
- package/dist/tools/CronCreate/prompt.d.ts +3 -0
- package/dist/tools/CronCreate/prompt.d.ts.map +1 -0
- package/dist/tools/CronCreate/prompt.js +41 -0
- package/dist/tools/CronCreate/prompt.js.map +1 -0
- package/dist/tools/CronDelete/CronDelete.d.ts +45 -0
- package/dist/tools/CronDelete/CronDelete.d.ts.map +1 -0
- package/dist/tools/CronDelete/CronDelete.js +51 -0
- package/dist/tools/CronDelete/CronDelete.js.map +1 -0
- package/dist/tools/CronDelete/prompt.d.ts +3 -0
- package/dist/tools/CronDelete/prompt.d.ts.map +1 -0
- package/dist/tools/CronDelete/prompt.js +6 -0
- package/dist/tools/CronDelete/prompt.js.map +1 -0
- package/dist/tools/CronList/CronList.d.ts +33 -0
- package/dist/tools/CronList/CronList.d.ts.map +1 -0
- package/dist/tools/CronList/CronList.js +55 -0
- package/dist/tools/CronList/CronList.js.map +1 -0
- package/dist/tools/CronList/prompt.d.ts +3 -0
- package/dist/tools/CronList/prompt.d.ts.map +1 -0
- package/dist/tools/CronList/prompt.js +6 -0
- package/dist/tools/CronList/prompt.js.map +1 -0
- package/dist/tools/Edit/Edit.d.ts.map +1 -1
- package/dist/tools/Edit/Edit.js +7 -3
- package/dist/tools/Edit/Edit.js.map +1 -1
- package/dist/tools/Edit/utils.d.ts.map +1 -1
- package/dist/tools/Edit/utils.js +14 -5
- package/dist/tools/Edit/utils.js.map +1 -1
- package/dist/tools/Grep/Grep.d.ts +4 -4
- package/dist/tools/NotebookEdit/NotebookEdit.js +1 -1
- package/dist/tools/NotebookEdit/NotebookEdit.js.map +1 -1
- package/dist/tools/Read/Read.d.ts +74 -3
- package/dist/tools/Read/Read.d.ts.map +1 -1
- package/dist/tools/Read/Read.js +188 -18
- package/dist/tools/Read/Read.js.map +1 -1
- package/dist/tools/Read/prompt.d.ts +1 -1
- package/dist/tools/Read/prompt.d.ts.map +1 -1
- package/dist/tools/Read/prompt.js +2 -1
- package/dist/tools/Read/prompt.js.map +1 -1
- package/dist/tools/Skill/Skill.d.ts +2 -1
- package/dist/tools/Skill/Skill.d.ts.map +1 -1
- package/dist/tools/Skill/Skill.js +3 -2
- package/dist/tools/Skill/Skill.js.map +1 -1
- package/dist/tools/TaskCreate/TaskCreate.d.ts +54 -0
- package/dist/tools/TaskCreate/TaskCreate.d.ts.map +1 -0
- package/dist/tools/TaskCreate/TaskCreate.js +51 -0
- package/dist/tools/TaskCreate/TaskCreate.js.map +1 -0
- package/dist/tools/TaskCreate/prompt.d.ts +3 -0
- package/dist/tools/TaskCreate/prompt.d.ts.map +1 -0
- package/dist/tools/TaskCreate/prompt.js +45 -0
- package/dist/tools/TaskCreate/prompt.js.map +1 -0
- package/dist/tools/TaskGet/TaskGet.d.ts +34 -0
- package/dist/tools/TaskGet/TaskGet.d.ts.map +1 -0
- package/dist/tools/TaskGet/TaskGet.js +57 -0
- package/dist/tools/TaskGet/TaskGet.js.map +1 -0
- package/dist/tools/TaskGet/prompt.d.ts +3 -0
- package/dist/tools/TaskGet/prompt.d.ts.map +1 -0
- package/dist/tools/TaskGet/prompt.js +26 -0
- package/dist/tools/TaskGet/prompt.js.map +1 -0
- package/dist/tools/TaskList/TaskList.d.ts +27 -0
- package/dist/tools/TaskList/TaskList.d.ts.map +1 -0
- package/dist/tools/TaskList/TaskList.js +56 -0
- package/dist/tools/TaskList/TaskList.js.map +1 -0
- package/dist/tools/TaskList/prompt.d.ts +3 -0
- package/dist/tools/TaskList/prompt.d.ts.map +1 -0
- package/dist/tools/TaskList/prompt.js +25 -0
- package/dist/tools/TaskList/prompt.js.map +1 -0
- package/dist/tools/TaskOutput/TaskOutput.d.ts +58 -0
- package/dist/tools/TaskOutput/TaskOutput.d.ts.map +1 -0
- package/dist/tools/TaskOutput/TaskOutput.js +95 -0
- package/dist/tools/TaskOutput/TaskOutput.js.map +1 -0
- package/dist/tools/TaskStop/TaskStop.d.ts +50 -0
- package/dist/tools/TaskStop/TaskStop.d.ts.map +1 -0
- package/dist/tools/TaskStop/TaskStop.js +69 -0
- package/dist/tools/TaskStop/TaskStop.js.map +1 -0
- package/dist/tools/TaskUpdate/TaskUpdate.d.ts +88 -0
- package/dist/tools/TaskUpdate/TaskUpdate.d.ts.map +1 -0
- package/dist/tools/TaskUpdate/TaskUpdate.js +115 -0
- package/dist/tools/TaskUpdate/TaskUpdate.js.map +1 -0
- package/dist/tools/TaskUpdate/prompt.d.ts +3 -0
- package/dist/tools/TaskUpdate/prompt.d.ts.map +1 -0
- package/dist/tools/TaskUpdate/prompt.js +80 -0
- package/dist/tools/TaskUpdate/prompt.js.map +1 -0
- package/dist/tools/WebFetch/WebFetch.d.ts +62 -0
- package/dist/tools/WebFetch/WebFetch.d.ts.map +1 -0
- package/dist/tools/WebFetch/WebFetch.js +143 -0
- package/dist/tools/WebFetch/WebFetch.js.map +1 -0
- package/dist/tools/WebFetch/prompt.d.ts +4 -0
- package/dist/tools/WebFetch/prompt.d.ts.map +1 -0
- package/dist/tools/WebFetch/prompt.js +38 -0
- package/dist/tools/WebFetch/prompt.js.map +1 -0
- package/dist/tools/WebFetch/utils.d.ts +20 -0
- package/dist/tools/WebFetch/utils.d.ts.map +1 -0
- package/dist/tools/WebFetch/utils.js +223 -0
- package/dist/tools/WebFetch/utils.js.map +1 -0
- package/dist/tools/Write/Write.js +1 -1
- package/dist/tools/Write/Write.js.map +1 -1
- package/dist/tools/base/Tool.d.ts +1 -0
- package/dist/tools/base/Tool.d.ts.map +1 -1
- package/dist/tools/base/tools.d.ts +4 -2
- package/dist/tools/base/tools.d.ts.map +1 -1
- package/dist/tools/base/tools.js +61 -14
- package/dist/tools/base/tools.js.map +1 -1
- package/dist/types/cron.d.ts +21 -0
- package/dist/types/cron.d.ts.map +1 -0
- package/dist/types/cron.js +6 -0
- package/dist/types/cron.js.map +1 -0
- package/dist/types/index.d.ts +9 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/rule.d.ts +8 -0
- package/dist/types/rule.d.ts.map +1 -0
- package/dist/types/rule.js +3 -0
- package/dist/types/rule.js.map +1 -0
- package/dist/types/task.d.ts +93 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +3 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/todoTask.d.ts +29 -0
- package/dist/types/todoTask.d.ts.map +1 -0
- package/dist/types/todoTask.js +6 -0
- package/dist/types/todoTask.js.map +1 -0
- package/dist/util/assembleTools.d.ts +6 -0
- package/dist/util/assembleTools.d.ts.map +1 -0
- package/dist/util/assembleTools.js +17 -0
- package/dist/util/assembleTools.js.map +1 -0
- package/dist/util/btw.d.ts +6 -0
- package/dist/util/btw.d.ts.map +1 -0
- package/dist/util/btw.js +80 -0
- package/dist/util/btw.js.map +1 -0
- package/dist/util/compact.d.ts +16 -4
- package/dist/util/compact.d.ts.map +1 -1
- package/dist/util/compact.js +12 -18
- package/dist/util/compact.js.map +1 -1
- package/dist/util/cron.d.ts +17 -0
- package/dist/util/cron.d.ts.map +1 -0
- package/dist/util/cron.js +82 -0
- package/dist/util/cron.js.map +1 -0
- package/dist/util/file.d.ts +16 -0
- package/dist/util/file.d.ts.map +1 -1
- package/dist/util/file.js +55 -0
- package/dist/util/file.js.map +1 -1
- package/dist/util/fileReference.d.ts.map +1 -1
- package/dist/util/fileReference.js +10 -1
- package/dist/util/fileReference.js.map +1 -1
- package/dist/util/format.d.ts +6 -0
- package/dist/util/format.d.ts.map +1 -1
- package/dist/util/format.js +17 -0
- package/dist/util/format.js.map +1 -1
- package/dist/util/history.d.ts +4 -1
- package/dist/util/history.d.ts.map +1 -1
- package/dist/util/history.js +9 -5
- package/dist/util/history.js.map +1 -1
- package/dist/util/inputQueue.d.ts +19 -0
- package/dist/util/inputQueue.d.ts.map +1 -0
- package/dist/util/inputQueue.js +30 -0
- package/dist/util/inputQueue.js.map +1 -0
- package/dist/util/message.d.ts +4 -0
- package/dist/util/message.d.ts.map +1 -1
- package/dist/util/message.js +27 -0
- package/dist/util/message.js.map +1 -1
- package/dist/util/pdf.d.ts +83 -0
- package/dist/util/pdf.d.ts.map +1 -0
- package/dist/util/pdf.js +472 -0
- package/dist/util/pdf.js.map +1 -0
- package/dist/util/process.d.ts +10 -0
- package/dist/util/process.d.ts.map +1 -0
- package/dist/util/process.js +88 -0
- package/dist/util/process.js.map +1 -0
- package/dist/util/savePath.d.ts +0 -11
- package/dist/util/savePath.d.ts.map +1 -1
- package/dist/util/savePath.js +0 -17
- package/dist/util/savePath.js.map +1 -1
- package/dist/util/shell.d.ts +10 -1
- package/dist/util/shell.d.ts.map +1 -1
- package/dist/util/shell.js +89 -34
- package/dist/util/shell.js.map +1 -1
- package/dist/util/topic.d.ts +7 -0
- package/dist/util/topic.d.ts.map +1 -1
- package/dist/util/topic.js +40 -0
- package/dist/util/topic.js.map +1 -1
- package/package.json +2 -1
- package/dist/services/command/customCommands.d.ts +0 -1
- package/dist/services/command/customCommands.d.ts.map +0 -1
- package/dist/services/command/customCommands.js +0 -197
- package/dist/services/command/customCommands.js.map +0 -1
- package/dist/services/command/runCommand.d.ts +0 -18
- package/dist/services/command/runCommand.d.ts.map +0 -1
- package/dist/services/command/runCommand.js +0 -147
- package/dist/services/command/runCommand.js.map +0 -1
- package/dist/services/plugins/customCommands.d.ts +0 -29
- package/dist/services/plugins/customCommands.d.ts.map +0 -1
- package/dist/services/plugins/customCommands.js +0 -227
- package/dist/services/plugins/customCommands.js.map +0 -1
- package/dist/services/skill/skillLoader.d.ts +0 -17
- package/dist/services/skill/skillLoader.d.ts.map +0 -1
- package/dist/services/skill/skillLoader.js +0 -122
- package/dist/services/skill/skillLoader.js.map +0 -1
- package/dist/services/skill/skillParser.d.ts +0 -15
- package/dist/services/skill/skillParser.d.ts.map +0 -1
- package/dist/services/skill/skillParser.js +0 -66
- package/dist/services/skill/skillParser.js.map +0 -1
- package/dist/services/skill/skillRegistry.d.ts +0 -34
- package/dist/services/skill/skillRegistry.d.ts.map +0 -1
- package/dist/services/skill/skillRegistry.js +0 -98
- package/dist/services/skill/skillRegistry.js.map +0 -1
- package/dist/services/skill/skillsManager.d.ts +0 -79
- package/dist/services/skill/skillsManager.d.ts.map +0 -1
- package/dist/services/skill/skillsManager.js +0 -289
- package/dist/services/skill/skillsManager.js.map +0 -1
- package/dist/tools/Task/Task.d.ts +0 -59
- package/dist/tools/Task/Task.d.ts.map +0 -1
- package/dist/tools/Task/Task.js +0 -212
- package/dist/tools/Task/Task.js.map +0 -1
- package/dist/tools/Task/prompt.d.ts +0 -6
- package/dist/tools/Task/prompt.d.ts.map +0 -1
- package/dist/tools/Task/prompt.js +0 -75
- package/dist/tools/Task/prompt.js.map +0 -1
- package/dist/util/frontmatter.d.ts +0 -35
- package/dist/util/frontmatter.d.ts.map +0 -1
- package/dist/util/frontmatter.js +0 -119
- package/dist/util/frontmatter.js.map +0 -1
- package/dist/util/rules.d.ts +0 -6
- package/dist/util/rules.d.ts.map +0 -1
- package/dist/util/rules.js +0 -162
- package/dist/util/rules.js.map +0 -1
- package/dist/util/systemReminder.d.ts +0 -10
- package/dist/util/systemReminder.d.ts.map +0 -1
- package/dist/util/systemReminder.js +0 -177
- package/dist/util/systemReminder.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CronCreate.d.ts","sourceRoot":"","sources":["../../../src/tools/CronCreate/CronCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;EAKf,CAAA;AAEF,KAAK,GAAG,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AAEpH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;yBAchB,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,gBACpB,GAAG;;;;;;;gCAkBS,GAAG;iCAOF,GAAG;;;;;2BAST,GAAG;+CAK6B,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,iBACjE,GAAG;;;;;CAYmB,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CronCreateTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const prompt_1 = require("./prompt");
|
|
6
|
+
const CronManager_1 = require("../../manager/CronManager");
|
|
7
|
+
const cron_1 = require("../../util/cron");
|
|
8
|
+
const StateManager_1 = require("../../manager/StateManager");
|
|
9
|
+
const inputSchema = zod_1.z.strictObject({
|
|
10
|
+
cron: zod_1.z.string().describe("Standard 5-field cron expression in local time: \"M H DoM Mon DoW\" (e.g. \"*/5 * * * *\" = every 5 minutes, \"30 14 28 2 *\" = Feb 28 at 2:30pm local once)."),
|
|
11
|
+
prompt: zod_1.z.string().describe("The prompt to enqueue at each fire time."),
|
|
12
|
+
recurring: zod_1.z.boolean().optional().describe("true (default) = fire on every cron match until deleted or auto-expired after 7 days. false = fire once at the next match, then auto-delete. Use false for \"remind me at X\" one-shot requests with pinned minute/hour/dom/month."),
|
|
13
|
+
durable: zod_1.z.boolean().optional().describe("true = persist to .sema/scheduled_tasks.json and survive restarts. false (default) = in-memory only, dies when this Claude session ends. Use true only when the user asks the task to survive across sessions."),
|
|
14
|
+
});
|
|
15
|
+
exports.CronCreateTool = {
|
|
16
|
+
name: prompt_1.TOOL_NAME_FOR_PROMPT,
|
|
17
|
+
description() {
|
|
18
|
+
return prompt_1.DESCRIPTION;
|
|
19
|
+
},
|
|
20
|
+
inputSchema,
|
|
21
|
+
isReadOnly() {
|
|
22
|
+
return false;
|
|
23
|
+
},
|
|
24
|
+
canRunConcurrently() {
|
|
25
|
+
return true;
|
|
26
|
+
},
|
|
27
|
+
async validateInput(input, agentContext) {
|
|
28
|
+
if (agentContext.agentId !== StateManager_1.MAIN_AGENT_ID) {
|
|
29
|
+
return { result: false, message: 'CronCreate can only be used by the main agent' };
|
|
30
|
+
}
|
|
31
|
+
if (!(0, cron_1.parseCronExpression)(input.cron)) {
|
|
32
|
+
return { result: false, message: `Invalid cron expression: "${input.cron}". Use 5-field format: "M H DoM Mon DoW"` };
|
|
33
|
+
}
|
|
34
|
+
const next = (0, cron_1.calcNextFireAt)(input.cron, Date.now());
|
|
35
|
+
if (next === null || next - Date.now() > 31 * 24 * 60 * 60 * 1000) {
|
|
36
|
+
return { result: false, message: 'Cron expression must have at least one match within 31 days' };
|
|
37
|
+
}
|
|
38
|
+
if ((0, CronManager_1.getCronManager)().listTasks().length >= CronManager_1.CronManager.MAX_TASKS) {
|
|
39
|
+
return { result: false, message: `Maximum number of cron tasks (${CronManager_1.CronManager.MAX_TASKS}) reached` };
|
|
40
|
+
}
|
|
41
|
+
return { result: true };
|
|
42
|
+
},
|
|
43
|
+
genResultForAssistant(data) {
|
|
44
|
+
const kind = data.recurring ? 'recurring' : 'one-shot';
|
|
45
|
+
const parts = [`Scheduled ${kind} job ${data.id} (${data.humanSchedule}).`];
|
|
46
|
+
if (data.durable)
|
|
47
|
+
parts.push('Persisted to .sema/scheduled_tasks.json.');
|
|
48
|
+
if (data.recurring)
|
|
49
|
+
parts.push('Auto-expires after 7 days. Use CronDelete to cancel sooner.');
|
|
50
|
+
return parts.join(' ');
|
|
51
|
+
},
|
|
52
|
+
genToolResultMessage(output) {
|
|
53
|
+
const raw = `${output.cron}: ${output.prompt}`;
|
|
54
|
+
const title = raw.length > 50 ? raw.slice(0, 49) + '…' : raw;
|
|
55
|
+
return {
|
|
56
|
+
title,
|
|
57
|
+
summary: `Scheduled ${output.id} (${output.humanSchedule})`,
|
|
58
|
+
content: '',
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
getDisplayTitle(input) {
|
|
62
|
+
return `CronCreate: ${input?.cron ?? ''}`;
|
|
63
|
+
},
|
|
64
|
+
async *call({ cron, prompt, recurring = true, durable = false }, _agentContext) {
|
|
65
|
+
const id = (0, CronManager_1.getCronManager)().createTask(cron, prompt, recurring, durable);
|
|
66
|
+
const humanSchedule = (0, cron_1.cronToHuman)(cron);
|
|
67
|
+
const data = { id, cron, prompt, humanSchedule, recurring, durable };
|
|
68
|
+
yield {
|
|
69
|
+
type: 'result',
|
|
70
|
+
data,
|
|
71
|
+
resultForAssistant: `Cron job ${id} created. Schedule: ${humanSchedule}. Recurring: ${recurring}. Durable: ${durable}.`,
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=CronCreate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CronCreate.js","sourceRoot":"","sources":["../../../src/tools/CronCreate/CronCreate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const TOOL_NAME_FOR_PROMPT = "CronCreate";
|
|
2
|
+
export declare const DESCRIPTION = "Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.\n\nUses standard 5-field cron in the user's local timezone: minute hour day-of-month month day-of-week. \"0 9 * * *\" means 9am local \u2014 no timezone conversion needed.\n\n## One-shot tasks (recurring: false)\n\nFor \"remind me at X\" or \"at <time>, do Y\" requests \u2014 fire once then auto-delete.\nPin minute/hour/day-of-month/month to specific values:\n \"remind me at 2:30pm today to check the deploy\" \u2192 cron: \"30 14 <today_dom> <today_month> *\", recurring: false\n \"tomorrow morning, run the smoke test\" \u2192 cron: \"57 8 <tomorrow_dom> <tomorrow_month> *\", recurring: false\n\n## Recurring jobs (recurring: true, the default)\n\nFor \"every N minutes\" / \"every hour\" / \"weekdays at 9am\" requests:\n \"*/5 * * * *\" (every 5 min), \"0 * * * *\" (hourly), \"0 9 * * 1-5\" (weekdays at 9am local)\n\n## Avoid the :00 and :30 minute marks when the task allows it\n\nEvery user who asks for \"9am\" gets `0 9`, and every user who asks for \"hourly\" gets `0 *` \u2014 which means requests from across the planet land on the API at the same instant. When the user's request is approximate, pick a minute that is NOT 0 or 30:\n \"every morning around 9\" \u2192 \"57 8 * * *\" or \"3 9 * * *\" (not \"0 9 * * *\")\n \"hourly\" \u2192 \"7 * * * *\" (not \"0 * * * *\")\n \"in an hour or so, remind me to...\" \u2192 pick whatever minute you land on, don't round\n\nOnly use minute 0 or 30 when the user names that exact time and clearly means it (\"at 9:00 sharp\", \"at half past\", coordinating with a meeting). When in doubt, nudge a few minutes early or late \u2014 the user will not notice, and the fleet will.\n\n## Durability\n\nBy default (durable: false) the job lives only in this Sema session \u2014 nothing is written to disk, and the job is gone when Sema exits. Pass durable: true to write to .sema/scheduled_tasks.json so the job survives restarts. Only use durable: true when the user explicitly asks for the task to persist (\"keep doing this every day\", \"set this up permanently\"). Most \"remind me in 5 minutes\" / \"check back in an hour\" requests should stay session-only.\n\n## Runtime behavior\n\nDurable jobs persist to .sema/scheduled_tasks.json and survive session restarts \u2014 on next launch they resume automatically. Session-only jobs die with the process. \n\nRecurring tasks auto-expire after 7 days \u2014 they fire one final time, then are deleted. This bounds session lifetime. Tell the user about the 7-day limit when scheduling recurring jobs.\n\nReturns a job ID you can pass to CronDelete.";
|
|
3
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/tools/CronCreate/prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAA;AAEhD,eAAO,MAAM,WAAW,mnFAmCqB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DESCRIPTION = exports.TOOL_NAME_FOR_PROMPT = void 0;
|
|
4
|
+
exports.TOOL_NAME_FOR_PROMPT = 'CronCreate';
|
|
5
|
+
exports.DESCRIPTION = `Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
|
|
6
|
+
|
|
7
|
+
Uses standard 5-field cron in the user's local timezone: minute hour day-of-month month day-of-week. "0 9 * * *" means 9am local — no timezone conversion needed.
|
|
8
|
+
|
|
9
|
+
## One-shot tasks (recurring: false)
|
|
10
|
+
|
|
11
|
+
For "remind me at X" or "at <time>, do Y" requests — fire once then auto-delete.
|
|
12
|
+
Pin minute/hour/day-of-month/month to specific values:
|
|
13
|
+
"remind me at 2:30pm today to check the deploy" → cron: "30 14 <today_dom> <today_month> *", recurring: false
|
|
14
|
+
"tomorrow morning, run the smoke test" → cron: "57 8 <tomorrow_dom> <tomorrow_month> *", recurring: false
|
|
15
|
+
|
|
16
|
+
## Recurring jobs (recurring: true, the default)
|
|
17
|
+
|
|
18
|
+
For "every N minutes" / "every hour" / "weekdays at 9am" requests:
|
|
19
|
+
"*/5 * * * *" (every 5 min), "0 * * * *" (hourly), "0 9 * * 1-5" (weekdays at 9am local)
|
|
20
|
+
|
|
21
|
+
## Avoid the :00 and :30 minute marks when the task allows it
|
|
22
|
+
|
|
23
|
+
Every user who asks for "9am" gets \`0 9\`, and every user who asks for "hourly" gets \`0 *\` — which means requests from across the planet land on the API at the same instant. When the user's request is approximate, pick a minute that is NOT 0 or 30:
|
|
24
|
+
"every morning around 9" → "57 8 * * *" or "3 9 * * *" (not "0 9 * * *")
|
|
25
|
+
"hourly" → "7 * * * *" (not "0 * * * *")
|
|
26
|
+
"in an hour or so, remind me to..." → pick whatever minute you land on, don't round
|
|
27
|
+
|
|
28
|
+
Only use minute 0 or 30 when the user names that exact time and clearly means it ("at 9:00 sharp", "at half past", coordinating with a meeting). When in doubt, nudge a few minutes early or late — the user will not notice, and the fleet will.
|
|
29
|
+
|
|
30
|
+
## Durability
|
|
31
|
+
|
|
32
|
+
By default (durable: false) the job lives only in this Sema session — nothing is written to disk, and the job is gone when Sema exits. Pass durable: true to write to .sema/scheduled_tasks.json so the job survives restarts. Only use durable: true when the user explicitly asks for the task to persist ("keep doing this every day", "set this up permanently"). Most "remind me in 5 minutes" / "check back in an hour" requests should stay session-only.
|
|
33
|
+
|
|
34
|
+
## Runtime behavior
|
|
35
|
+
|
|
36
|
+
Durable jobs persist to .sema/scheduled_tasks.json and survive session restarts — on next launch they resume automatically. Session-only jobs die with the process.
|
|
37
|
+
|
|
38
|
+
Recurring tasks auto-expire after 7 days — they fire one final time, then are deleted. This bounds session lifetime. Tell the user about the 7-day limit when scheduling recurring jobs.
|
|
39
|
+
|
|
40
|
+
Returns a job ID you can pass to CronDelete.`;
|
|
41
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/tools/CronCreate/prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,YAAY,CAAA;AAEnC,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAmCkB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const inputSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
}, "strict", z.ZodTypeAny, {
|
|
5
|
+
id: string;
|
|
6
|
+
}, {
|
|
7
|
+
id: string;
|
|
8
|
+
}>;
|
|
9
|
+
type Out = {
|
|
10
|
+
id: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const CronDeleteTool: {
|
|
13
|
+
name: string;
|
|
14
|
+
description(): string;
|
|
15
|
+
inputSchema: z.ZodObject<{
|
|
16
|
+
id: z.ZodString;
|
|
17
|
+
}, "strict", z.ZodTypeAny, {
|
|
18
|
+
id: string;
|
|
19
|
+
}, {
|
|
20
|
+
id: string;
|
|
21
|
+
}>;
|
|
22
|
+
isReadOnly(): false;
|
|
23
|
+
canRunConcurrently(): true;
|
|
24
|
+
validateInput(input: z.infer<typeof inputSchema>): Promise<{
|
|
25
|
+
result: false;
|
|
26
|
+
message: string;
|
|
27
|
+
} | {
|
|
28
|
+
result: true;
|
|
29
|
+
message?: undefined;
|
|
30
|
+
}>;
|
|
31
|
+
genResultForAssistant(data: Out): string;
|
|
32
|
+
genToolResultMessage(output: Out): {
|
|
33
|
+
title: string;
|
|
34
|
+
summary: string;
|
|
35
|
+
content: string;
|
|
36
|
+
};
|
|
37
|
+
getDisplayTitle(input: any): string;
|
|
38
|
+
call({ id }: z.infer<typeof inputSchema>): AsyncGenerator<{
|
|
39
|
+
type: "result";
|
|
40
|
+
data: Out;
|
|
41
|
+
resultForAssistant: string;
|
|
42
|
+
}, void, unknown>;
|
|
43
|
+
};
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=CronDelete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CronDelete.d.ts","sourceRoot":"","sources":["../../../src/tools/CronDelete/CronDelete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,QAAA,MAAM,WAAW;;;;;;EAEf,CAAA;AAEF,KAAK,GAAG,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzB,eAAO,MAAM,cAAc;;;;;;;;;;;;yBAaE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;;;gCAO1B,GAAG;iCAGF,GAAG;;;;;2BAOT,GAAG;iBAIN,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;CAUR,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CronDeleteTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const prompt_1 = require("./prompt");
|
|
6
|
+
const CronManager_1 = require("../../manager/CronManager");
|
|
7
|
+
const inputSchema = zod_1.z.strictObject({
|
|
8
|
+
id: zod_1.z.string().describe('Job ID returned by CronCreate'),
|
|
9
|
+
});
|
|
10
|
+
exports.CronDeleteTool = {
|
|
11
|
+
name: prompt_1.TOOL_NAME_FOR_PROMPT,
|
|
12
|
+
description() {
|
|
13
|
+
return prompt_1.DESCRIPTION;
|
|
14
|
+
},
|
|
15
|
+
inputSchema,
|
|
16
|
+
isReadOnly() {
|
|
17
|
+
return false;
|
|
18
|
+
},
|
|
19
|
+
canRunConcurrently() {
|
|
20
|
+
return true;
|
|
21
|
+
},
|
|
22
|
+
async validateInput(input) {
|
|
23
|
+
if (!(0, CronManager_1.getCronManager)().findTask(input.id)) {
|
|
24
|
+
return { result: false, message: `Cron job not found: ${input.id}` };
|
|
25
|
+
}
|
|
26
|
+
return { result: true };
|
|
27
|
+
},
|
|
28
|
+
genResultForAssistant(data) {
|
|
29
|
+
return `Cancelled job ${data.id}.`;
|
|
30
|
+
},
|
|
31
|
+
genToolResultMessage(output) {
|
|
32
|
+
return {
|
|
33
|
+
title: output.id,
|
|
34
|
+
summary: `Cancelled: ${output.id}`,
|
|
35
|
+
content: '',
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
getDisplayTitle(input) {
|
|
39
|
+
return `CronDelete: ${input?.id ?? ''}`;
|
|
40
|
+
},
|
|
41
|
+
async *call({ id }) {
|
|
42
|
+
(0, CronManager_1.getCronManager)().deleteTask(id);
|
|
43
|
+
const data = { id };
|
|
44
|
+
yield {
|
|
45
|
+
type: 'result',
|
|
46
|
+
data,
|
|
47
|
+
resultForAssistant: `Cron job ${id} has been cancelled.`,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=CronDelete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CronDelete.js","sourceRoot":"","sources":["../../../src/tools/CronDelete/CronDelete.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEvB,qCAA4D;AAC5D,2DAA0D;AAE1D,MAAM,WAAW,GAAG,OAAC,CAAC,YAAY,CAAC;IACjC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACzD,CAAC,CAAA;AAIW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,6BAAoB;IAC1B,WAAW;QACT,OAAO,oBAAW,CAAA;IACpB,CAAC;IACD,WAAW;IACX,UAAU;QACR,OAAO,KAAK,CAAA;IACd,CAAC;IACD,kBAAkB;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAkC;QACpD,IAAI,CAAC,IAAA,4BAAc,GAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAA;QACtE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACzB,CAAC;IAED,qBAAqB,CAAC,IAAS;QAC7B,OAAO,iBAAiB,IAAI,CAAC,EAAE,GAAG,CAAA;IACpC,CAAC;IACD,oBAAoB,CAAC,MAAW;QAC9B,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,OAAO,EAAE,cAAc,MAAM,CAAC,EAAE,EAAE;YAClC,OAAO,EAAE,EAAE;SACZ,CAAA;IACH,CAAC;IACD,eAAe,CAAC,KAAU;QACxB,OAAO,eAAe,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAA+B;QAC7C,IAAA,4BAAc,GAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAQ,EAAE,EAAE,EAAE,CAAA;QAExB,MAAM;YACJ,IAAI,EAAE,QAAiB;YACvB,IAAI;YACJ,kBAAkB,EAAE,YAAY,EAAE,sBAAsB;SACzD,CAAA;IACH,CAAC;CACsC,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const TOOL_NAME_FOR_PROMPT = "CronDelete";
|
|
2
|
+
export declare const DESCRIPTION = "Cancel a cron job previously scheduled with CronCreate. Removes it from .sema/scheduled_tasks.json (durable jobs) or the in-memory session store (session-only jobs).";
|
|
3
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/tools/CronDelete/prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAA;AAEhD,eAAO,MAAM,WAAW,0KAA0K,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DESCRIPTION = exports.TOOL_NAME_FOR_PROMPT = void 0;
|
|
4
|
+
exports.TOOL_NAME_FOR_PROMPT = 'CronDelete';
|
|
5
|
+
exports.DESCRIPTION = `Cancel a cron job previously scheduled with CronCreate. Removes it from .sema/scheduled_tasks.json (durable jobs) or the in-memory session store (session-only jobs).`;
|
|
6
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/tools/CronDelete/prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,YAAY,CAAA;AAEnC,QAAA,WAAW,GAAG,uKAAuK,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
type JobInfo = {
|
|
3
|
+
id: string;
|
|
4
|
+
cron: string;
|
|
5
|
+
humanSchedule: string;
|
|
6
|
+
prompt: string;
|
|
7
|
+
recurring: boolean;
|
|
8
|
+
durable: boolean;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
};
|
|
11
|
+
type Out = {
|
|
12
|
+
jobs: JobInfo[];
|
|
13
|
+
};
|
|
14
|
+
export declare const CronListTool: {
|
|
15
|
+
name: string;
|
|
16
|
+
description(): string;
|
|
17
|
+
inputSchema: z.ZodObject<{}, "strict", z.ZodTypeAny, {}, {}>;
|
|
18
|
+
isReadOnly(): true;
|
|
19
|
+
canRunConcurrently(): true;
|
|
20
|
+
genResultForAssistant(data: Out): string;
|
|
21
|
+
genToolResultMessage(output: Out): {
|
|
22
|
+
title: string;
|
|
23
|
+
summary: string;
|
|
24
|
+
content: string;
|
|
25
|
+
};
|
|
26
|
+
getDisplayTitle(): string;
|
|
27
|
+
call(): AsyncGenerator<{
|
|
28
|
+
type: "result";
|
|
29
|
+
data: Out;
|
|
30
|
+
}, void, unknown>;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=CronList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CronList.d.ts","sourceRoot":"","sources":["../../../src/tools/CronList/CronList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,KAAK,OAAO,GAAG;IACb,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AACD,KAAK,GAAG,GAAG;IAAE,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAAA;AAE9B,eAAO,MAAM,YAAY;;;;;;gCAaK,GAAG;iCAOF,GAAG;;;;;;;;;;CA8BO,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CronListTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const prompt_1 = require("./prompt");
|
|
6
|
+
const CronManager_1 = require("../../manager/CronManager");
|
|
7
|
+
const inputSchema = zod_1.z.strictObject({});
|
|
8
|
+
exports.CronListTool = {
|
|
9
|
+
name: prompt_1.TOOL_NAME_FOR_PROMPT,
|
|
10
|
+
description() {
|
|
11
|
+
return prompt_1.DESCRIPTION;
|
|
12
|
+
},
|
|
13
|
+
inputSchema,
|
|
14
|
+
isReadOnly() {
|
|
15
|
+
return true;
|
|
16
|
+
},
|
|
17
|
+
canRunConcurrently() {
|
|
18
|
+
return true;
|
|
19
|
+
},
|
|
20
|
+
genResultForAssistant(data) {
|
|
21
|
+
if (data.jobs.length === 0)
|
|
22
|
+
return 'No active cron jobs.';
|
|
23
|
+
const lines = data.jobs.map(j => `${j.id} — ${j.humanSchedule} (${j.recurring ? 'recurring' : 'one-shot'})${j.enabled ? '' : ' [DISABLED]'}: ${j.prompt}`);
|
|
24
|
+
return `Active cron jobs (${data.jobs.length}):\n${lines.join('\n')}`;
|
|
25
|
+
},
|
|
26
|
+
genToolResultMessage(output) {
|
|
27
|
+
return {
|
|
28
|
+
title: '',
|
|
29
|
+
summary: `${output.jobs.length} active job(s)`,
|
|
30
|
+
content: output.jobs.map(j => `${j.id} ${j.humanSchedule}`).join('\n'),
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
getDisplayTitle() {
|
|
34
|
+
return 'CronList';
|
|
35
|
+
},
|
|
36
|
+
async *call() {
|
|
37
|
+
const cronManager = (0, CronManager_1.getCronManager)();
|
|
38
|
+
const tasks = cronManager.listTasks();
|
|
39
|
+
const jobs = tasks.map(t => ({
|
|
40
|
+
id: t.id,
|
|
41
|
+
cron: t.cron,
|
|
42
|
+
humanSchedule: t.cronToHuman,
|
|
43
|
+
prompt: t.prompt,
|
|
44
|
+
recurring: t.recurring,
|
|
45
|
+
durable: t.durable,
|
|
46
|
+
enabled: cronManager.isTaskEnabled(t.id),
|
|
47
|
+
}));
|
|
48
|
+
const data = { jobs };
|
|
49
|
+
yield {
|
|
50
|
+
type: 'result',
|
|
51
|
+
data,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=CronList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CronList.js","sourceRoot":"","sources":["../../../src/tools/CronList/CronList.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEvB,qCAA4D;AAC5D,2DAA0D;AAE1D,MAAM,WAAW,GAAG,OAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;AAazB,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,6BAAoB;IAC1B,WAAW;QACT,OAAO,oBAAW,CAAA;IACpB,CAAC;IACD,WAAW;IACX,UAAU;QACR,OAAO,IAAI,CAAA;IACb,CAAC;IACD,kBAAkB;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qBAAqB,CAAC,IAAS;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,sBAAsB,CAAA;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,MAAM,EAAE,CAC9H,CAAA;QACD,OAAO,qBAAqB,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IACvE,CAAC;IACD,oBAAoB,CAAC,MAAW;QAC9B,OAAO;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB;YAC9C,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACvE,CAAA;IACH,CAAC;IACD,eAAe;QACb,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,CAAC,IAAI;QACT,MAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAA;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,IAAI,GAAc,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,aAAa,EAAE,CAAC,CAAC,WAAW;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC,CAAC,CAAC,CAAA;QAEH,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,CAAA;QAC1B,MAAM;YACJ,IAAI,EAAE,QAAiB;YACvB,IAAI;SACL,CAAA;IACH,CAAC;CACsC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/tools/CronList/prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,aAAa,CAAA;AAE9C,eAAO,MAAM,WAAW,6GAA6G,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DESCRIPTION = exports.TOOL_NAME_FOR_PROMPT = void 0;
|
|
4
|
+
exports.TOOL_NAME_FOR_PROMPT = 'CronList';
|
|
5
|
+
exports.DESCRIPTION = `List all cron jobs scheduled via CronCreate, both durable (.sema/scheduled_tasks.json) and session-only.`;
|
|
6
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/tools/CronList/prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,UAAU,CAAA;AAEjC,QAAA,WAAW,GAAG,0GAA0G,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Edit.d.ts","sourceRoot":"","sources":["../../../src/tools/Edit/Edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAQ,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAiBrD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;EAKf,CAAA;AAEF,MAAM,MAAM,EAAE,GAAG,OAAO,WAAW,CAAA;AAcnC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Edit.d.ts","sourceRoot":"","sources":["../../../src/tools/Edit/Edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAQ,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAiBrD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;EAKf,CAAA;AAEF,MAAM,MAAM,EAAE,GAAG,OAAO,WAAW,CAAA;AAcnC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyNX,MAAM;mBACL,MAAM;mBACN,MAAM;sBACH,MAAM;yBACH,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;qBA3KT,GAAG;;;;;;qBA2G2D,GAAG;;;;;;;;;;;;kBA4DrE,MAAM;mBACL,MAAM;mBACN,MAAM;sBACH,MAAM;yBACH,IAAI,EAAE;;CAE1B,CAAA;AAED,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAYxC"}
|
package/dist/tools/Edit/Edit.js
CHANGED
|
@@ -119,7 +119,7 @@ exports.FileEditTool = {
|
|
|
119
119
|
if (!readTimestamp) {
|
|
120
120
|
return {
|
|
121
121
|
result: false,
|
|
122
|
-
message: 'File
|
|
122
|
+
message: 'File must be read first',
|
|
123
123
|
meta: {
|
|
124
124
|
isFilePathAbsolute: String((0, path_1.isAbsolute)(file_path)),
|
|
125
125
|
},
|
|
@@ -136,7 +136,11 @@ exports.FileEditTool = {
|
|
|
136
136
|
}
|
|
137
137
|
const enc = (0, file_1.detectFileEncoding)(fullFilePath);
|
|
138
138
|
const file = (0, fs_1.readFileSync)(fullFilePath, enc);
|
|
139
|
-
|
|
139
|
+
const lineEndings = (0, file_1.detectLineEndings)(fullFilePath);
|
|
140
|
+
const normalizedOldString = lineEndings === 'CRLF'
|
|
141
|
+
? old_string.replace(/\r\n/g, '\n').replace(/\n/g, '\r\n')
|
|
142
|
+
: old_string.replace(/\r\n/g, '\n');
|
|
143
|
+
if (!file.includes(normalizedOldString)) {
|
|
140
144
|
return {
|
|
141
145
|
result: false,
|
|
142
146
|
message: `String to replace not found in file.`,
|
|
@@ -145,7 +149,7 @@ exports.FileEditTool = {
|
|
|
145
149
|
},
|
|
146
150
|
};
|
|
147
151
|
}
|
|
148
|
-
const matches = file.split(
|
|
152
|
+
const matches = file.split(normalizedOldString).length - 1;
|
|
149
153
|
if (matches > 1 && !replace_all) {
|
|
150
154
|
return {
|
|
151
155
|
result: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Edit.js","sourceRoot":"","sources":["../../../src/tools/Edit/Edit.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Edit.js","sourceRoot":"","sources":["../../../src/tools/Edit/Edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/Edit/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAA;AAGhC;;;GAGG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,OAAe,GAC3B;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/Edit/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAA;AAGhC;;;GAGG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,OAAe,GAC3B;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAqDxC"}
|
package/dist/tools/Edit/utils.js
CHANGED
|
@@ -21,20 +21,29 @@ function applyEdit(file_path, old_string, new_string, replace_all = false) {
|
|
|
21
21
|
// Edit existing file
|
|
22
22
|
const enc = (0, file_1.detectFileEncoding)(fullFilePath);
|
|
23
23
|
originalFile = (0, fs_1.readFileSync)(fullFilePath, enc);
|
|
24
|
+
const lineEndings = (0, file_1.detectLineEndings)(fullFilePath);
|
|
25
|
+
const normalizedOldString = lineEndings === 'CRLF'
|
|
26
|
+
? old_string.replace(/\r\n/g, '\n').replace(/\n/g, '\r\n')
|
|
27
|
+
: old_string.replace(/\r\n/g, '\n');
|
|
28
|
+
const normalizedNewString = lineEndings === 'CRLF'
|
|
29
|
+
? new_string.replace(/\r\n/g, '\n').replace(/\n/g, '\r\n')
|
|
30
|
+
: new_string.replace(/\r\n/g, '\n');
|
|
24
31
|
const replaceFunc = replace_all
|
|
25
32
|
? (str, search, replacement) => str.replaceAll(search, replacement)
|
|
26
33
|
: (str, search, replacement) => str.replace(search, replacement);
|
|
27
34
|
if (new_string === '') {
|
|
28
|
-
if (!
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
if (!normalizedOldString.endsWith('\n') &&
|
|
36
|
+
!normalizedOldString.endsWith('\r\n') &&
|
|
37
|
+
(originalFile.includes(normalizedOldString + '\r\n') || originalFile.includes(normalizedOldString + '\n'))) {
|
|
38
|
+
const suffix = lineEndings === 'CRLF' ? '\r\n' : '\n';
|
|
39
|
+
updatedFile = replaceFunc(originalFile, normalizedOldString + suffix, new_string);
|
|
31
40
|
}
|
|
32
41
|
else {
|
|
33
|
-
updatedFile = replaceFunc(originalFile,
|
|
42
|
+
updatedFile = replaceFunc(originalFile, normalizedOldString, new_string);
|
|
34
43
|
}
|
|
35
44
|
}
|
|
36
45
|
else {
|
|
37
|
-
updatedFile = replaceFunc(originalFile,
|
|
46
|
+
updatedFile = replaceFunc(originalFile, normalizedOldString, normalizedNewString);
|
|
38
47
|
}
|
|
39
48
|
if (updatedFile === originalFile) {
|
|
40
49
|
throw new Error('Original and edited file match exactly. Failed to apply edit.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/Edit/utils.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/Edit/utils.ts"],"names":[],"mappings":";;AASA,8BA0DC;AAnED,2BAAiC;AACjC,0CAA0F;AAE1F,0CAA0C;AAE1C;;;GAGG;AACH,SAAgB,SAAS,CACvB,SAAiB,EACjB,UAAkB,EAClB,UAAkB,EAClB,cAAuB,KAAK;IAE5B,MAAM,YAAY,GAAG,IAAA,wBAAiB,EAAC,SAAS,CAAC,CAAA;IAEjD,IAAI,YAAY,CAAA;IAChB,IAAI,WAAW,CAAA;IACf,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,kBAAkB;QAClB,YAAY,GAAG,EAAE,CAAA;QACjB,WAAW,GAAG,UAAU,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,qBAAqB;QACrB,MAAM,GAAG,GAAG,IAAA,yBAAkB,EAAC,YAAY,CAAC,CAAA;QAC5C,YAAY,GAAG,IAAA,iBAAY,EAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,IAAA,wBAAiB,EAAC,YAAY,CAAC,CAAA;QACnD,MAAM,mBAAmB,GAAG,WAAW,KAAK,MAAM;YAChD,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;YAC1D,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACrC,MAAM,mBAAmB,GAAG,WAAW,KAAK,MAAM;YAChD,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;YAC1D,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,WAAW;YAC7B,CAAC,CAAC,CAAC,GAAW,EAAE,MAAc,EAAE,WAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;YAC3F,CAAC,CAAC,CAAC,GAAW,EAAE,MAAc,EAAE,WAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAE1F,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACtB,IACE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrC,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,EAC1G,CAAC;gBACD,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;gBACrD,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,mBAAmB,GAAG,MAAM,EAAE,UAAU,CAAC,CAAA;YACnF,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC;QACrB,QAAQ,EAAE,SAAS;QACnB,YAAY,EAAE,YAAY;QAC1B,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,WAAW;KACpB,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;AAC/B,CAAC"}
|
|
@@ -28,13 +28,13 @@ export declare const GrepTool: {
|
|
|
28
28
|
pattern: string;
|
|
29
29
|
path?: string | undefined;
|
|
30
30
|
type?: string | undefined;
|
|
31
|
+
'-n'?: boolean | undefined;
|
|
31
32
|
offset?: number | undefined;
|
|
32
33
|
'-C'?: number | undefined;
|
|
33
34
|
glob?: string | undefined;
|
|
34
35
|
output_mode?: "content" | "files_with_matches" | "count" | undefined;
|
|
35
36
|
'-A'?: number | undefined;
|
|
36
37
|
'-B'?: number | undefined;
|
|
37
|
-
'-n'?: boolean | undefined;
|
|
38
38
|
'-i'?: boolean | undefined;
|
|
39
39
|
head_limit?: number | undefined;
|
|
40
40
|
multiline?: boolean | undefined;
|
|
@@ -42,13 +42,13 @@ export declare const GrepTool: {
|
|
|
42
42
|
pattern: string;
|
|
43
43
|
path?: string | undefined;
|
|
44
44
|
type?: string | undefined;
|
|
45
|
+
'-n'?: boolean | undefined;
|
|
45
46
|
offset?: number | undefined;
|
|
46
47
|
'-C'?: number | undefined;
|
|
47
48
|
glob?: string | undefined;
|
|
48
49
|
output_mode?: "content" | "files_with_matches" | "count" | undefined;
|
|
49
50
|
'-A'?: number | undefined;
|
|
50
51
|
'-B'?: number | undefined;
|
|
51
|
-
'-n'?: boolean | undefined;
|
|
52
52
|
'-i'?: boolean | undefined;
|
|
53
53
|
head_limit?: number | undefined;
|
|
54
54
|
multiline?: boolean | undefined;
|
|
@@ -64,13 +64,13 @@ export declare const GrepTool: {
|
|
|
64
64
|
pattern: string;
|
|
65
65
|
path?: string | undefined;
|
|
66
66
|
type?: string | undefined;
|
|
67
|
+
'-n'?: boolean | undefined;
|
|
67
68
|
offset?: number | undefined;
|
|
68
69
|
'-C'?: number | undefined;
|
|
69
70
|
glob?: string | undefined;
|
|
70
71
|
output_mode?: "content" | "files_with_matches" | "count" | undefined;
|
|
71
72
|
'-A'?: number | undefined;
|
|
72
73
|
'-B'?: number | undefined;
|
|
73
|
-
'-n'?: boolean | undefined;
|
|
74
74
|
'-i'?: boolean | undefined;
|
|
75
75
|
head_limit?: number | undefined;
|
|
76
76
|
multiline?: boolean | undefined;
|
|
@@ -79,13 +79,13 @@ export declare const GrepTool: {
|
|
|
79
79
|
pattern: string;
|
|
80
80
|
path?: string | undefined;
|
|
81
81
|
type?: string | undefined;
|
|
82
|
+
'-n'?: boolean | undefined;
|
|
82
83
|
offset?: number | undefined;
|
|
83
84
|
'-C'?: number | undefined;
|
|
84
85
|
glob?: string | undefined;
|
|
85
86
|
output_mode?: "content" | "files_with_matches" | "count" | undefined;
|
|
86
87
|
'-A'?: number | undefined;
|
|
87
88
|
'-B'?: number | undefined;
|
|
88
|
-
'-n'?: boolean | undefined;
|
|
89
89
|
'-i'?: boolean | undefined;
|
|
90
90
|
head_limit?: number | undefined;
|
|
91
91
|
multiline?: boolean | undefined;
|
|
@@ -140,7 +140,7 @@ exports.NotebookEditTool = {
|
|
|
140
140
|
if (!readTimestamp) {
|
|
141
141
|
return {
|
|
142
142
|
result: false,
|
|
143
|
-
message: 'File
|
|
143
|
+
message: 'File must be read first',
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
146
|
const lastWriteTime = (0, fs_1.statSync)(fullPath).mtimeMs;
|