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
|
@@ -56,12 +56,26 @@ function buildDocumentFilePath(documentId, type) {
|
|
|
56
56
|
const extension = type?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "");
|
|
57
57
|
return `${DOCUMENTS_DIR}/${documentId}.${extension || "txt"}`;
|
|
58
58
|
}
|
|
59
|
+
function buildRefreshDocumentFilePath(documentId, type) {
|
|
60
|
+
const extension = type?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "");
|
|
61
|
+
return `${DOCUMENTS_DIR}/${documentId}.refresh-${dntShim.crypto.randomUUID()}.${extension || "txt"}`;
|
|
62
|
+
}
|
|
59
63
|
function isRecord(value) {
|
|
60
64
|
return typeof value === "object" && value !== null;
|
|
61
65
|
}
|
|
62
66
|
function toStringValue(value, fallback = "") {
|
|
63
67
|
return typeof value === "string" ? value : fallback;
|
|
64
68
|
}
|
|
69
|
+
function toPublicRagDocumentMeta(document) {
|
|
70
|
+
return {
|
|
71
|
+
id: document.id,
|
|
72
|
+
title: document.title,
|
|
73
|
+
source: document.source,
|
|
74
|
+
type: document.type,
|
|
75
|
+
createdAt: document.createdAt,
|
|
76
|
+
url: document.url,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
65
79
|
function buildDocumentChunks(sourceText, chunkTexts, metadata) {
|
|
66
80
|
let searchStart = 0;
|
|
67
81
|
return chunkTexts.map((content, index) => {
|
|
@@ -176,6 +190,7 @@ async function listRagDocuments(context) {
|
|
|
176
190
|
source: doc.source,
|
|
177
191
|
type: doc.type,
|
|
178
192
|
createdAt: new Date(doc.created_at).getTime(),
|
|
193
|
+
filePath: typeof doc.metadata?.filePath === "string" ? doc.metadata.filePath : undefined,
|
|
179
194
|
}));
|
|
180
195
|
}
|
|
181
196
|
async function upsertRagDocument(context, document) {
|
|
@@ -197,6 +212,28 @@ async function deleteRagDocument(context, documentId) {
|
|
|
197
212
|
// Document ingestion (chunks + embeddings + server-side record)
|
|
198
213
|
// ---------------------------------------------------------------------------
|
|
199
214
|
async function ingestDocument(context, config, title, text, meta) {
|
|
215
|
+
const documentId = dntShim.crypto.randomUUID();
|
|
216
|
+
await writeDocumentContent(context, config, documentId, title, text, meta);
|
|
217
|
+
return documentId;
|
|
218
|
+
}
|
|
219
|
+
async function refreshCloudDocument(context, config, documentId, text, meta) {
|
|
220
|
+
const documents = await listRagDocuments(context);
|
|
221
|
+
const existing = documents.find((doc) => doc.id === documentId);
|
|
222
|
+
if (!existing) {
|
|
223
|
+
throw INVALID_ARGUMENT.create({ detail: `RAG document not found: ${documentId}` });
|
|
224
|
+
}
|
|
225
|
+
const type = meta?.type ?? existing.type;
|
|
226
|
+
const previousFilePath = existing.filePath ?? buildDocumentFilePath(documentId, existing.type);
|
|
227
|
+
const filePath = buildRefreshDocumentFilePath(documentId, type);
|
|
228
|
+
await writeDocumentContent(context, config, documentId, meta?.title ?? existing.title, text, {
|
|
229
|
+
source: meta?.source ?? existing.source,
|
|
230
|
+
type,
|
|
231
|
+
}, { filePath });
|
|
232
|
+
if (previousFilePath !== filePath) {
|
|
233
|
+
await deleteFileChunks(context, previousFilePath);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async function writeDocumentContent(context, config, documentId, title, text, meta, options) {
|
|
200
237
|
if (text.length > MAX_TEXT_LENGTH) {
|
|
201
238
|
throw INVALID_ARGUMENT.create({
|
|
202
239
|
detail: `Upload text exceeds ${MAX_TEXT_LENGTH / 1024 / 1024} MB limit`,
|
|
@@ -206,8 +243,7 @@ async function ingestDocument(context, config, title, text, meta) {
|
|
|
206
243
|
if (chunkTexts.length === 0) {
|
|
207
244
|
throw INVALID_ARGUMENT.create({ detail: "Upload contains no extractable text" });
|
|
208
245
|
}
|
|
209
|
-
const
|
|
210
|
-
const filePath = buildDocumentFilePath(documentId, meta?.type);
|
|
246
|
+
const filePath = options?.filePath ?? buildDocumentFilePath(documentId, meta?.type);
|
|
211
247
|
const embedder = createEmbedder(config);
|
|
212
248
|
const vectors = await embedder.embedMany(chunkTexts);
|
|
213
249
|
const dimension = toSupportedDimension(vectors[0]?.length ?? 0);
|
|
@@ -243,7 +279,6 @@ async function ingestDocument(context, config, title, text, meta) {
|
|
|
243
279
|
type: meta?.type ?? "",
|
|
244
280
|
metadata: { filePath },
|
|
245
281
|
});
|
|
246
|
-
return documentId;
|
|
247
282
|
}
|
|
248
283
|
function createEmbedder(config) {
|
|
249
284
|
return embedding({
|
|
@@ -340,6 +375,10 @@ export function createVeryfrontCloudRagStore(config) {
|
|
|
340
375
|
const context = getCloudStoreContext(config);
|
|
341
376
|
return ingestDocument(context, config, title, text, meta);
|
|
342
377
|
},
|
|
378
|
+
async refreshDocument(id, text, meta) {
|
|
379
|
+
const context = getCloudStoreContext(config);
|
|
380
|
+
await refreshCloudDocument(context, config, id, text, meta);
|
|
381
|
+
},
|
|
343
382
|
async search(query, options) {
|
|
344
383
|
if (!query.trim())
|
|
345
384
|
return [];
|
|
@@ -376,7 +415,8 @@ export function createVeryfrontCloudRagStore(config) {
|
|
|
376
415
|
},
|
|
377
416
|
async listDocuments() {
|
|
378
417
|
const context = getCloudStoreContext(config);
|
|
379
|
-
|
|
418
|
+
const documents = await listRagDocuments(context);
|
|
419
|
+
return documents.map(toPublicRagDocumentMeta);
|
|
380
420
|
},
|
|
381
421
|
async removeDocument(id) {
|
|
382
422
|
const context = getCloudStoreContext(config);
|
|
@@ -387,7 +427,7 @@ export function createVeryfrontCloudRagStore(config) {
|
|
|
387
427
|
await deleteRagDocument(context, id);
|
|
388
428
|
// Best-effort cleanup of file chunks
|
|
389
429
|
if (target) {
|
|
390
|
-
const filePath = buildDocumentFilePath(id, target.type);
|
|
430
|
+
const filePath = target.filePath ?? buildDocumentFilePath(id, target.type);
|
|
391
431
|
try {
|
|
392
432
|
await deleteFileChunks(context, filePath);
|
|
393
433
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DiscoveryResult } from "../../../../discovery/index.js";
|
|
1
2
|
import type { HandlerContext } from "../../types.js";
|
|
2
3
|
/**
|
|
3
4
|
* Run primitive discovery (agents, tools) for a project if not already done.
|
|
@@ -5,5 +6,5 @@ import type { HandlerContext } from "../../types.js";
|
|
|
5
6
|
* the correct remote project files and the agent registry uses the
|
|
6
7
|
* correct project scope.
|
|
7
8
|
*/
|
|
8
|
-
export declare function ensureProjectDiscovery(ctx: HandlerContext): Promise<
|
|
9
|
+
export declare function ensureProjectDiscovery(ctx: HandlerContext): Promise<DiscoveryResult>;
|
|
9
10
|
//# sourceMappingURL=project-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-discovery.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/api/project-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-discovery.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/api/project-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAItE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkDrD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA8E1F"}
|
|
@@ -76,11 +76,12 @@ export async function ensureProjectDiscovery(ctx) {
|
|
|
76
76
|
else {
|
|
77
77
|
logger.info("Primitive discovery completed", logData);
|
|
78
78
|
}
|
|
79
|
+
return result;
|
|
79
80
|
})(),
|
|
80
81
|
};
|
|
81
82
|
discoveredProjects.set(key, discovery);
|
|
82
83
|
try {
|
|
83
|
-
await discovery.promise;
|
|
84
|
+
return await discovery.promise;
|
|
84
85
|
}
|
|
85
86
|
catch (error) {
|
|
86
87
|
// Allow retry on next request
|
|
@@ -90,6 +91,7 @@ export async function ensureProjectDiscovery(ctx) {
|
|
|
90
91
|
error: error instanceof Error ? error.message : String(error),
|
|
91
92
|
stack: error instanceof Error ? error.stack : undefined,
|
|
92
93
|
});
|
|
94
|
+
throw new Error(`Runtime discovery failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
95
|
}
|
|
94
96
|
finally {
|
|
95
97
|
if (!cacheCompletedDiscovery) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RuntimeAdapter } from "../../../platform/index.js";
|
|
2
2
|
import type { VeryfrontConfig } from "../../../config/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import type { DiscoveryResult } from "../../../discovery/index.js";
|
|
4
4
|
import { type RunTaskOptions, type TaskRunResult } from "../../../task/runner.js";
|
|
5
5
|
import { type DiscoveredEval } from "../../../eval/discovery.js";
|
|
6
6
|
import { type AgentServiceEvalAdapterConfig } from "../../../eval/agent-service.js";
|
|
@@ -55,12 +55,6 @@ interface WorkflowClientView {
|
|
|
55
55
|
destroy(): Promise<void>;
|
|
56
56
|
}
|
|
57
57
|
export interface ProjectRunExecuteHandlerDeps {
|
|
58
|
-
findTaskById(taskId: string, options: {
|
|
59
|
-
projectDir: string;
|
|
60
|
-
adapter: RuntimeAdapter;
|
|
61
|
-
config?: VeryfrontConfig;
|
|
62
|
-
debug?: boolean;
|
|
63
|
-
}): Promise<DiscoveredTask | null>;
|
|
64
58
|
runTask(options: RunTaskOptions): Promise<TaskRunResult>;
|
|
65
59
|
findWorkflowById(workflowId: string, options: {
|
|
66
60
|
projectDir: string;
|
|
@@ -78,7 +72,7 @@ export interface ProjectRunExecuteHandlerDeps {
|
|
|
78
72
|
runEval(definition: EvalDefinition, options: RunEvalOptions): Promise<EvalReport>;
|
|
79
73
|
createEvalAgentAdapter(config: AgentServiceEvalAdapterConfig): EvalAgentAdapter;
|
|
80
74
|
uploadEvalReport(input: EvalReportUploadInput): Promise<string | null>;
|
|
81
|
-
ensureProjectDiscovery(ctx: HandlerContext): Promise<
|
|
75
|
+
ensureProjectDiscovery(ctx: HandlerContext): Promise<DiscoveryResult>;
|
|
82
76
|
executeKnowledgeIngest(input: {
|
|
83
77
|
request: ProjectRunExecuteRequest;
|
|
84
78
|
ctx: HandlerContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-run-execute.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/project-run-execute.handler.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"project-run-execute.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/project-run-execute.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getEnvironmentConfig } from "../../../config/index.js";
|
|
|
4
4
|
import { ControlPlaneRequestError, verifyControlPlaneRequest, } from "../../../internal-agents/control-plane-auth.js";
|
|
5
5
|
import { INTERNAL_AGENT_CONTROL_PLANE_MAX_BODY_BYTES, InternalAgentRequestBodyTooLargeError, readInternalAgentRequestBody, } from "../../../internal-agents/request-body.js";
|
|
6
6
|
import { getHostEnv } from "../../../platform/compat/process.js";
|
|
7
|
-
import {
|
|
7
|
+
import { findProjectRuntimeTask } from "../../../task/project-runtime.js";
|
|
8
8
|
import { runTask } from "../../../task/runner.js";
|
|
9
9
|
import { findEvalById } from "../../../eval/discovery.js";
|
|
10
10
|
import { runEval } from "../../../eval/runner.js";
|
|
@@ -151,12 +151,8 @@ async function executeTaskRun(request, ctx, deps) {
|
|
|
151
151
|
if (taskId === "knowledge-ingest") {
|
|
152
152
|
throw new Error("Knowledge ingest must be executed through the knowledge ingest executor");
|
|
153
153
|
}
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
adapter: ctx.adapter,
|
|
157
|
-
config: ctx.config,
|
|
158
|
-
debug: ctx.debug,
|
|
159
|
-
});
|
|
154
|
+
const discovery = await deps.ensureProjectDiscovery(ctx);
|
|
155
|
+
const task = findProjectRuntimeTask(discovery, taskId);
|
|
160
156
|
if (!task) {
|
|
161
157
|
return {
|
|
162
158
|
success: false,
|
|
@@ -804,7 +800,6 @@ async function executeReleaseAssetBuildRun(input) {
|
|
|
804
800
|
}
|
|
805
801
|
}
|
|
806
802
|
const defaultDeps = {
|
|
807
|
-
findTaskById,
|
|
808
803
|
runTask,
|
|
809
804
|
findWorkflowById,
|
|
810
805
|
findEvalById,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DiscoveryResult } from "../discovery/index.js";
|
|
2
|
+
import type { RuntimeAdapter } from "../platform/index.js";
|
|
3
|
+
import type { FileSystemAdapter } from "../platform/adapters/base.js";
|
|
4
|
+
import type { VeryfrontConfig } from "../config/index.js";
|
|
5
|
+
import type { RunnableTask } from "./runner.js";
|
|
6
|
+
export interface ProjectTaskRuntimeOptions {
|
|
7
|
+
projectDir: string;
|
|
8
|
+
adapter: RuntimeAdapter;
|
|
9
|
+
config?: VeryfrontConfig | null;
|
|
10
|
+
fsAdapter?: FileSystemAdapter;
|
|
11
|
+
cacheKey?: string;
|
|
12
|
+
debug?: boolean;
|
|
13
|
+
throwOnErrors?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function formatProjectRuntimeDiscoveryErrors(errors: DiscoveryResult["errors"]): string[];
|
|
16
|
+
export declare function discoverProjectTaskRuntime(options: ProjectTaskRuntimeOptions): Promise<DiscoveryResult>;
|
|
17
|
+
export declare function findProjectRuntimeTask(discovery: DiscoveryResult, taskId: string): RunnableTask | null;
|
|
18
|
+
export declare function listProjectRuntimeTasks(discovery: DiscoveryResult): RunnableTask[];
|
|
19
|
+
//# sourceMappingURL=project-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-runtime.d.ts","sourceRoot":"","sources":["../../../src/src/task/project-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAChC,MAAM,EAAE,CAEV;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,eAAe,CAAC,CAqB1B;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,IAAI,CASrB;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,eAAe,GAAG,YAAY,EAAE,CAMlF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { discoverProjectAgentRuntime } from "../agent/project/agent-runtime.js";
|
|
2
|
+
function formatRuntimeDiscoveryError(error) {
|
|
3
|
+
return `${error.file}: ${error.error.message}`;
|
|
4
|
+
}
|
|
5
|
+
export function formatProjectRuntimeDiscoveryErrors(errors) {
|
|
6
|
+
return errors.map(formatRuntimeDiscoveryError);
|
|
7
|
+
}
|
|
8
|
+
export async function discoverProjectTaskRuntime(options) {
|
|
9
|
+
const discovery = await discoverProjectAgentRuntime({
|
|
10
|
+
projectDir: options.projectDir,
|
|
11
|
+
adapter: options.adapter,
|
|
12
|
+
config: options.config,
|
|
13
|
+
fsAdapter: options.fsAdapter,
|
|
14
|
+
cacheKey: options.cacheKey,
|
|
15
|
+
verbose: options.debug,
|
|
16
|
+
});
|
|
17
|
+
if (options.throwOnErrors && discovery.errors.length > 0) {
|
|
18
|
+
const lines = formatProjectRuntimeDiscoveryErrors(discovery.errors);
|
|
19
|
+
throw new Error([
|
|
20
|
+
`Runtime discovery failed with ${discovery.errors.length} errors:`,
|
|
21
|
+
...lines.map((line) => `- ${line}`),
|
|
22
|
+
].join("\n"));
|
|
23
|
+
}
|
|
24
|
+
return discovery;
|
|
25
|
+
}
|
|
26
|
+
export function findProjectRuntimeTask(discovery, taskId) {
|
|
27
|
+
const definition = discovery.tasks.get(taskId);
|
|
28
|
+
if (!definition)
|
|
29
|
+
return null;
|
|
30
|
+
return {
|
|
31
|
+
id: taskId,
|
|
32
|
+
name: definition.name || taskId,
|
|
33
|
+
definition,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function listProjectRuntimeTasks(discovery) {
|
|
37
|
+
return [...discovery.tasks].map(([id, definition]) => ({
|
|
38
|
+
id,
|
|
39
|
+
name: definition.name || id,
|
|
40
|
+
definition,
|
|
41
|
+
}));
|
|
42
|
+
}
|
package/esm/src/task/runner.d.ts
CHANGED
|
@@ -4,13 +4,21 @@
|
|
|
4
4
|
* Executes a discovered task by calling its run() function
|
|
5
5
|
* with the appropriate context.
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
7
|
+
import type { TaskDefinition } from "./types.js";
|
|
8
|
+
export interface RunnableTask {
|
|
9
|
+
/** Stable task id used by CLI, triggers, and cloud runs. */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Human-readable task name. */
|
|
12
|
+
name: string;
|
|
13
|
+
/** The task definition to execute. */
|
|
14
|
+
definition: TaskDefinition;
|
|
15
|
+
}
|
|
8
16
|
/**
|
|
9
17
|
* Options for running a task
|
|
10
18
|
*/
|
|
11
19
|
export interface RunTaskOptions {
|
|
12
20
|
/** The discovered task to run */
|
|
13
|
-
task:
|
|
21
|
+
task: RunnableTask;
|
|
14
22
|
/** Additional config to pass to the task */
|
|
15
23
|
config?: Record<string, unknown>;
|
|
16
24
|
/** Project ID (for cloud context) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/src/task/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/src/task/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IAEX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,IAAI,EAAE,YAAY,CAAC;IAEnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IAEjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runner.d.ts","sourceRoot":"","sources":["../../../src/src/trigger/local-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-runner.d.ts","sourceRoot":"","sources":["../../../src/src/trigger/local-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoFD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAYjC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { agentRegistry } from "../agent/composition/index.js";
|
|
2
|
-
import { discoverProjectAgentRuntime } from "../agent/project/agent-runtime.js";
|
|
3
2
|
import { toolRegistry } from "../tool/registry.js";
|
|
4
3
|
import { createWorkflowClient } from "../workflow/api/workflow-client.js";
|
|
5
|
-
import {
|
|
4
|
+
import { discoverProjectTaskRuntime, findProjectRuntimeTask, } from "../task/project-runtime.js";
|
|
6
5
|
import { runTask } from "../task/runner.js";
|
|
7
6
|
function toRecordInput(input) {
|
|
8
7
|
if (input === undefined)
|
|
@@ -12,17 +11,20 @@ function toRecordInput(input) {
|
|
|
12
11
|
}
|
|
13
12
|
return { payload: input };
|
|
14
13
|
}
|
|
15
|
-
async function
|
|
16
|
-
|
|
14
|
+
async function discoverRuntimeOrThrow(options) {
|
|
15
|
+
return await discoverProjectTaskRuntime({
|
|
17
16
|
projectDir: options.projectDir,
|
|
18
17
|
adapter: options.adapter,
|
|
19
18
|
config: options.config,
|
|
19
|
+
fsAdapter: options.adapter.fs,
|
|
20
|
+
cacheKey: options.cacheKey,
|
|
20
21
|
debug: options.debug,
|
|
22
|
+
throwOnErrors: true,
|
|
21
23
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const task =
|
|
24
|
+
}
|
|
25
|
+
async function runTaskTarget(options) {
|
|
26
|
+
const discovery = await discoverRuntimeOrThrow(options);
|
|
27
|
+
const task = findProjectRuntimeTask(discovery, options.target.id);
|
|
26
28
|
if (!task) {
|
|
27
29
|
throw new Error(`Task target "${options.target.id}" not found.`);
|
|
28
30
|
}
|
|
@@ -44,15 +46,7 @@ async function runTaskTarget(options) {
|
|
|
44
46
|
}
|
|
45
47
|
async function runWorkflowTarget(options) {
|
|
46
48
|
const start = Date.now();
|
|
47
|
-
const discovery = await
|
|
48
|
-
projectDir: options.projectDir,
|
|
49
|
-
adapter: options.adapter,
|
|
50
|
-
verbose: options.debug,
|
|
51
|
-
});
|
|
52
|
-
if (discovery.errors.length > 0) {
|
|
53
|
-
const first = discovery.errors[0];
|
|
54
|
-
throw new Error(`Runtime discovery failed: ${first?.file}: ${first?.error.message}`);
|
|
55
|
-
}
|
|
49
|
+
const discovery = await discoverRuntimeOrThrow(options);
|
|
56
50
|
const workflow = discovery.workflows.get(options.target.id);
|
|
57
51
|
if (!workflow) {
|
|
58
52
|
throw new Error(`Workflow target "${options.target.id}" not found.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-run-entrypoint.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/dynamic-run-entrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,uCAAuC;IACvC,OAAO,EAAE,eAAe,CAAC;IAEzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,kCAAkC,GACzC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"dynamic-run-entrypoint.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/dynamic-run-entrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,uCAAuC;IACvC,OAAO,EAAE,eAAe,CAAC;IAEzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,kCAAkC,GACzC,OAAO,CAAC,MAAM,CAAC,CAqIjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,yCAAyC;IACxD,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,gDAAgD;AAChD,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,yCAAyC,GACjD,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAchC"}
|
|
@@ -106,6 +106,8 @@ export async function runDynamicWorkflowRun(config) {
|
|
|
106
106
|
const discoveryResult = await discoverProjectAgentRuntime({
|
|
107
107
|
projectDir: "", // Root of project (relative paths with API)
|
|
108
108
|
adapter,
|
|
109
|
+
fsAdapter: adapter.fs,
|
|
110
|
+
cacheKey: tenant.projectId ?? tenant.projectSlug,
|
|
109
111
|
verbose: debug,
|
|
110
112
|
});
|
|
111
113
|
if (discoveryResult.errors.length > 0 && debug) {
|
package/package.json
CHANGED
|
@@ -1,79 +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 type { RuntimeAdapter } from "../platform/index.js";
|
|
23
|
-
import type { VeryfrontConfig } from "../config/index.js";
|
|
24
|
-
import type { TaskDefinition } from "./types.js";
|
|
25
|
-
/**
|
|
26
|
-
* Discovered task info
|
|
27
|
-
*/
|
|
28
|
-
export interface DiscoveredTask {
|
|
29
|
-
/** Task ID derived from file path (e.g., "sync-data" from tasks/sync-data.ts) */
|
|
30
|
-
id: string;
|
|
31
|
-
/** Human-readable name from task definition */
|
|
32
|
-
name: string;
|
|
33
|
-
/** File path where the task is defined */
|
|
34
|
-
filePath: string;
|
|
35
|
-
/** Export name (e.g., "default" or named export) */
|
|
36
|
-
exportName: string;
|
|
37
|
-
/** The task definition */
|
|
38
|
-
definition: TaskDefinition;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Options for task discovery
|
|
42
|
-
*/
|
|
43
|
-
export interface TaskDiscoveryOptions {
|
|
44
|
-
/** Project directory */
|
|
45
|
-
projectDir: string;
|
|
46
|
-
/** Runtime adapter for filesystem operations */
|
|
47
|
-
adapter: RuntimeAdapter;
|
|
48
|
-
/** Veryfront config (for import maps, etc.) */
|
|
49
|
-
config?: VeryfrontConfig;
|
|
50
|
-
/** Base directory for tasks (default: "tasks") */
|
|
51
|
-
tasksDir?: string;
|
|
52
|
-
/** Enable debug logging */
|
|
53
|
-
debug?: boolean;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Result of task discovery
|
|
57
|
-
*/
|
|
58
|
-
export interface TaskDiscoveryResult {
|
|
59
|
-
/** All discovered tasks */
|
|
60
|
-
tasks: DiscoveredTask[];
|
|
61
|
-
/** Errors encountered during discovery */
|
|
62
|
-
errors: Array<{
|
|
63
|
-
filePath: string;
|
|
64
|
-
error: string;
|
|
65
|
-
}>;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Derive task ID from file path (e.g., "tasks/sync-data.ts" → "sync-data")
|
|
69
|
-
*/
|
|
70
|
-
export declare function deriveTaskId(filePath: string, tasksDir: string): string;
|
|
71
|
-
/**
|
|
72
|
-
* Discover all tasks in a project
|
|
73
|
-
*/
|
|
74
|
-
export declare function discoverTasks(options: TaskDiscoveryOptions): Promise<TaskDiscoveryResult>;
|
|
75
|
-
/**
|
|
76
|
-
* Find a specific task by ID, short-circuiting discovery once found.
|
|
77
|
-
*/
|
|
78
|
-
export declare function findTaskById(taskId: string, options: TaskDiscoveryOptions): Promise<DiscoveredTask | null>;
|
|
79
|
-
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/src/task/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAajD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IAEb,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IAEnB,0BAA0B;IAC1B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,OAAO,EAAE,cAAc,CAAC;IAExB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2BAA2B;IAC3B,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB,0CAA0C;IAC1C,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAwED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAiE9B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAuChC"}
|