veryfront 0.1.994 → 0.1.996
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/esm/cli/commands/schedule/handler.d.ts.map +1 -1
- package/esm/cli/commands/schedule/handler.js +3 -1
- package/esm/cli/commands/task/command.d.ts.map +1 -1
- package/esm/cli/commands/task/command.js +18 -9
- package/esm/cli/commands/webhook/handler.d.ts.map +1 -1
- package/esm/cli/commands/webhook/handler.js +3 -1
- package/esm/cli/commands/workflow/command.d.ts.map +1 -1
- package/esm/cli/commands/workflow/command.js +5 -1
- package/esm/cli/shared/project-source-context.d.ts +1 -0
- package/esm/cli/shared/project-source-context.d.ts.map +1 -1
- package/esm/cli/shared/project-source-context.js +6 -1
- package/esm/deno.js +1 -1
- package/esm/src/agent/project/agent-runtime.d.ts +5 -0
- package/esm/src/agent/project/agent-runtime.d.ts.map +1 -1
- package/esm/src/agent/project/agent-runtime.js +3 -1
- package/esm/src/channels/control-plane.d.ts +1 -1
- package/esm/src/channels/control-plane.d.ts.map +1 -1
- package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
- package/esm/src/discovery/discovery-engine.js +23 -31
- package/esm/src/discovery/handlers/task-handler.d.ts.map +1 -1
- package/esm/src/discovery/handlers/task-handler.js +4 -1
- package/esm/src/discovery/project-discovery-config.d.ts.map +1 -1
- package/esm/src/discovery/project-discovery-config.js +5 -1
- package/esm/src/embedding/index.d.ts +1 -1
- package/esm/src/embedding/index.d.ts.map +1 -1
- package/esm/src/embedding/rag-store.d.ts.map +1 -1
- package/esm/src/embedding/rag-store.js +37 -0
- package/esm/src/embedding/types.d.ts +7 -0
- package/esm/src/embedding/types.d.ts.map +1 -1
- package/esm/src/embedding/upload-loader.d.ts +5 -4
- package/esm/src/embedding/upload-loader.d.ts.map +1 -1
- package/esm/src/embedding/upload-loader.js +5 -4
- package/esm/src/embedding/veryfront-cloud/rag-store.d.ts.map +1 -1
- package/esm/src/embedding/veryfront-cloud/rag-store.js +45 -5
- package/esm/src/server/handlers/request/api/project-discovery.d.ts +2 -1
- package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/project-discovery.js +3 -1
- package/esm/src/server/handlers/request/project-run-execute.handler.d.ts +2 -8
- package/esm/src/server/handlers/request/project-run-execute.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/project-run-execute.handler.js +3 -8
- package/esm/src/task/project-runtime.d.ts +19 -0
- package/esm/src/task/project-runtime.d.ts.map +1 -0
- package/esm/src/task/project-runtime.js +42 -0
- package/esm/src/task/runner.d.ts +10 -2
- package/esm/src/task/runner.d.ts.map +1 -1
- package/esm/src/trigger/local-runner.d.ts +1 -0
- package/esm/src/trigger/local-runner.d.ts.map +1 -1
- package/esm/src/trigger/local-runner.js +11 -17
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/worker/dynamic-run-entrypoint.d.ts.map +1 -1
- package/esm/src/workflow/worker/dynamic-run-entrypoint.js +2 -0
- package/package.json +1 -1
- package/esm/src/task/discovery.d.ts +0 -79
- package/esm/src/task/discovery.d.ts.map +0 -1
- package/esm/src/task/discovery.js +0 -184
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Task Discovery
|
|
3
|
-
*
|
|
4
|
-
* Discovers task definitions from user's project `tasks/` directory.
|
|
5
|
-
* Follows the same patterns as workflow-discovery.ts.
|
|
6
|
-
*
|
|
7
|
-
* Scans:
|
|
8
|
-
* - tasks/*.ts - task definition files
|
|
9
|
-
* - tasks/**\/*.ts - nested task files
|
|
10
|
-
*
|
|
11
|
-
* Task files should export a task definition:
|
|
12
|
-
* ```typescript
|
|
13
|
-
* export default {
|
|
14
|
-
* name: "Sync external data",
|
|
15
|
-
* run: async (ctx) => {
|
|
16
|
-
* console.log("Syncing data...")
|
|
17
|
-
* return { synced: 42 }
|
|
18
|
-
* }
|
|
19
|
-
* }
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
import { join } from "../../deps/jsr.io/@std/path/1.1.4/mod.js";
|
|
23
|
-
import { logger as baseLogger } from "../utils/index.js";
|
|
24
|
-
import { collectFiles } from "../utils/file-discovery.js";
|
|
25
|
-
import { importDiscoveryModule } from "../discovery/module-import.js";
|
|
26
|
-
import { isTaskDefinition } from "./types.js";
|
|
27
|
-
const logger = baseLogger.component("task-discovery");
|
|
28
|
-
const TASK_FILE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx"];
|
|
29
|
-
const TASK_IGNORE_PATTERNS = [
|
|
30
|
-
"node_modules",
|
|
31
|
-
".git",
|
|
32
|
-
"__tests__",
|
|
33
|
-
"*.test.*",
|
|
34
|
-
"*.spec.*",
|
|
35
|
-
];
|
|
36
|
-
function resolveTasksBaseDir(projectDir, tasksDir, config) {
|
|
37
|
-
const fsType = config?.fs?.type ?? "local";
|
|
38
|
-
return fsType === "github" || fsType === "veryfront-api" ? tasksDir : join(projectDir, tasksDir);
|
|
39
|
-
}
|
|
40
|
-
function toErrorMessage(error) {
|
|
41
|
-
return error instanceof Error ? error.message : String(error);
|
|
42
|
-
}
|
|
43
|
-
async function collectTaskFiles(baseDir, adapter) {
|
|
44
|
-
return await collectFiles({
|
|
45
|
-
baseDir,
|
|
46
|
-
extensions: [...TASK_FILE_EXTENSIONS],
|
|
47
|
-
recursive: true,
|
|
48
|
-
ignorePatterns: [...TASK_IGNORE_PATTERNS],
|
|
49
|
-
adapter,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
function extractTaskExport(module) {
|
|
53
|
-
const defaultExport = module.default;
|
|
54
|
-
if (isTaskDefinition(defaultExport)) {
|
|
55
|
-
return { exportName: "default", definition: defaultExport };
|
|
56
|
-
}
|
|
57
|
-
for (const [exportName, value] of Object.entries(module)) {
|
|
58
|
-
if (exportName !== "default" && isTaskDefinition(value)) {
|
|
59
|
-
return { exportName, definition: value };
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
async function loadTaskFromFile(filePath, id, adapter, projectDir) {
|
|
65
|
-
const module = await importDiscoveryModule(filePath, {
|
|
66
|
-
adapter,
|
|
67
|
-
projectDir,
|
|
68
|
-
});
|
|
69
|
-
const taskExport = extractTaskExport(module);
|
|
70
|
-
if (!taskExport)
|
|
71
|
-
return null;
|
|
72
|
-
return {
|
|
73
|
-
id,
|
|
74
|
-
name: taskExport.definition.name || id,
|
|
75
|
-
filePath,
|
|
76
|
-
exportName: taskExport.exportName,
|
|
77
|
-
definition: taskExport.definition,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
function logDiscoveredTask(task, debug) {
|
|
81
|
-
if (debug) {
|
|
82
|
-
logger.info(`Found task "${task.id}" in ${task.filePath} (export: ${task.exportName})`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Derive task ID from file path (e.g., "tasks/sync-data.ts" → "sync-data")
|
|
87
|
-
*/
|
|
88
|
-
export function deriveTaskId(filePath, tasksDir) {
|
|
89
|
-
// Remove the tasks dir prefix and extension
|
|
90
|
-
let relative = filePath;
|
|
91
|
-
const dirPrefix = tasksDir.endsWith("/") ? tasksDir : `${tasksDir}/`;
|
|
92
|
-
if (relative.startsWith(dirPrefix)) {
|
|
93
|
-
relative = relative.slice(dirPrefix.length);
|
|
94
|
-
}
|
|
95
|
-
// Remove extension
|
|
96
|
-
return relative.replace(/\.(ts|tsx|js|jsx)$/, "");
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Discover all tasks in a project
|
|
100
|
-
*/
|
|
101
|
-
export async function discoverTasks(options) {
|
|
102
|
-
const { projectDir, adapter, config, tasksDir = "tasks", debug = false, } = options;
|
|
103
|
-
const tasks = [];
|
|
104
|
-
const errors = [];
|
|
105
|
-
const baseDir = resolveTasksBaseDir(projectDir, tasksDir, config);
|
|
106
|
-
if (debug) {
|
|
107
|
-
logger.info(`Scanning ${baseDir} for tasks`);
|
|
108
|
-
}
|
|
109
|
-
try {
|
|
110
|
-
const dirExists = await adapter.fs.exists(baseDir);
|
|
111
|
-
if (!dirExists) {
|
|
112
|
-
if (debug) {
|
|
113
|
-
logger.info(`No tasks directory found at ${baseDir}`);
|
|
114
|
-
}
|
|
115
|
-
return { tasks, errors };
|
|
116
|
-
}
|
|
117
|
-
const files = await collectTaskFiles(baseDir, adapter);
|
|
118
|
-
if (debug) {
|
|
119
|
-
logger.info(`Found ${files.length} potential task files`);
|
|
120
|
-
}
|
|
121
|
-
for (const file of files) {
|
|
122
|
-
try {
|
|
123
|
-
const task = await loadTaskFromFile(file.path, deriveTaskId(file.path, baseDir), adapter, projectDir);
|
|
124
|
-
if (task) {
|
|
125
|
-
tasks.push(task);
|
|
126
|
-
logDiscoveredTask(task, debug);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
const errorMsg = toErrorMessage(error);
|
|
131
|
-
errors.push({ filePath: file.path, error: errorMsg });
|
|
132
|
-
if (debug) {
|
|
133
|
-
logger.warn(`Failed to load ${file.path}: ${errorMsg}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (debug) {
|
|
138
|
-
logger.info(`Discovered ${tasks.length} tasks`);
|
|
139
|
-
}
|
|
140
|
-
return { tasks, errors };
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
const errorMsg = toErrorMessage(error);
|
|
144
|
-
logger.error(`Task discovery failed: ${errorMsg}`);
|
|
145
|
-
errors.push({ filePath: baseDir, error: errorMsg });
|
|
146
|
-
return { tasks, errors };
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Find a specific task by ID, short-circuiting discovery once found.
|
|
151
|
-
*/
|
|
152
|
-
export async function findTaskById(taskId, options) {
|
|
153
|
-
const { projectDir, adapter, config, tasksDir = "tasks", debug = false, } = options;
|
|
154
|
-
const baseDir = resolveTasksBaseDir(projectDir, tasksDir, config);
|
|
155
|
-
try {
|
|
156
|
-
const dirExists = await adapter.fs.exists(baseDir);
|
|
157
|
-
if (!dirExists)
|
|
158
|
-
return null;
|
|
159
|
-
const files = await collectTaskFiles(baseDir, adapter);
|
|
160
|
-
for (const file of files) {
|
|
161
|
-
const id = deriveTaskId(file.path, baseDir);
|
|
162
|
-
if (id !== taskId)
|
|
163
|
-
continue;
|
|
164
|
-
try {
|
|
165
|
-
const task = await loadTaskFromFile(file.path, id, adapter, projectDir);
|
|
166
|
-
if (task) {
|
|
167
|
-
logDiscoveredTask(task, debug);
|
|
168
|
-
return task;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
const errorMsg = toErrorMessage(error);
|
|
173
|
-
if (debug) {
|
|
174
|
-
logger.warn(`Failed to load ${file.path}: ${errorMsg}`);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
const errorMsg = toErrorMessage(error);
|
|
181
|
-
logger.error(`Task discovery failed while finding "${taskId}": ${errorMsg}`);
|
|
182
|
-
}
|
|
183
|
-
return null;
|
|
184
|
-
}
|