veryfront 0.1.995 → 0.1.997

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 (49) hide show
  1. package/esm/cli/commands/schedule/handler.d.ts.map +1 -1
  2. package/esm/cli/commands/schedule/handler.js +3 -1
  3. package/esm/cli/commands/task/command.d.ts.map +1 -1
  4. package/esm/cli/commands/task/command.js +18 -9
  5. package/esm/cli/commands/webhook/handler.d.ts.map +1 -1
  6. package/esm/cli/commands/webhook/handler.js +3 -1
  7. package/esm/cli/commands/workflow/command.d.ts.map +1 -1
  8. package/esm/cli/commands/workflow/command.js +5 -1
  9. package/esm/cli/shared/project-source-context.d.ts +1 -0
  10. package/esm/cli/shared/project-source-context.d.ts.map +1 -1
  11. package/esm/cli/shared/project-source-context.js +6 -1
  12. package/esm/deno.d.ts +1 -0
  13. package/esm/deno.js +2 -1
  14. package/esm/src/agent/project/agent-runtime.d.ts +5 -0
  15. package/esm/src/agent/project/agent-runtime.d.ts.map +1 -1
  16. package/esm/src/agent/project/agent-runtime.js +3 -1
  17. package/esm/src/channels/control-plane.d.ts +1 -1
  18. package/esm/src/channels/control-plane.d.ts.map +1 -1
  19. package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
  20. package/esm/src/discovery/discovery-engine.js +23 -31
  21. package/esm/src/discovery/handlers/task-handler.d.ts.map +1 -1
  22. package/esm/src/discovery/handlers/task-handler.js +4 -1
  23. package/esm/src/discovery/project-discovery-config.d.ts.map +1 -1
  24. package/esm/src/discovery/project-discovery-config.js +5 -1
  25. package/esm/src/server/handlers/request/api/project-discovery.d.ts +2 -1
  26. package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
  27. package/esm/src/server/handlers/request/api/project-discovery.js +3 -1
  28. package/esm/src/server/handlers/request/project-run-execute.handler.d.ts +2 -8
  29. package/esm/src/server/handlers/request/project-run-execute.handler.d.ts.map +1 -1
  30. package/esm/src/server/handlers/request/project-run-execute.handler.js +3 -8
  31. package/esm/src/task/discovery.d.ts +22 -6
  32. package/esm/src/task/discovery.d.ts.map +1 -1
  33. package/esm/src/task/discovery.js +11 -3
  34. package/esm/src/task/index.d.ts +27 -0
  35. package/esm/src/task/index.d.ts.map +1 -0
  36. package/esm/src/task/index.js +22 -0
  37. package/esm/src/task/project-runtime.d.ts +19 -0
  38. package/esm/src/task/project-runtime.d.ts.map +1 -0
  39. package/esm/src/task/project-runtime.js +42 -0
  40. package/esm/src/task/runner.d.ts +10 -2
  41. package/esm/src/task/runner.d.ts.map +1 -1
  42. package/esm/src/trigger/local-runner.d.ts +1 -0
  43. package/esm/src/trigger/local-runner.d.ts.map +1 -1
  44. package/esm/src/trigger/local-runner.js +11 -17
  45. package/esm/src/utils/version-constant.d.ts +1 -1
  46. package/esm/src/utils/version-constant.js +1 -1
  47. package/esm/src/workflow/worker/dynamic-run-entrypoint.d.ts.map +1 -1
  48. package/esm/src/workflow/worker/dynamic-run-entrypoint.js +2 -0
  49. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/schedule/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA4BxD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/schedule/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA4BxD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC3E"}
@@ -23,7 +23,8 @@ export async function handleScheduleCommand(args) {
23
23
  const opts = parseArgsOrThrow(parseScheduleArgs, "schedule", args);
24
24
  const projectDir = dntShim.Deno.cwd();
25
25
  const input = opts.input ? await readJsonFile(opts.input, "--input JSON file") : undefined;
26
- await withProjectSourceContext(projectDir, async ({ adapter, config, projectId }) => {
26
+ await withProjectSourceContext(projectDir, async (context) => {
27
+ const { adapter, config, configCacheKey, projectId } = context;
27
28
  const result = await discoverSchedules({ projectDir, adapter, config });
28
29
  if (result.errors.length > 0) {
29
30
  throw new Error(`Schedule discovery failed: ${result.errors[0]?.message}`);
@@ -36,6 +37,7 @@ export async function handleScheduleCommand(args) {
36
37
  projectDir,
37
38
  adapter,
38
39
  config,
40
+ cacheKey: configCacheKey,
39
41
  projectId,
40
42
  target: schedule.target,
41
43
  input: input ?? schedule.input ?? {},
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/command.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FrE"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/command.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAahD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGrE"}
@@ -10,8 +10,15 @@ import { exitProcess } from "../../utils/index.js";
10
10
  import { withProjectSourceContext } from "../../shared/project-source-context.js";
11
11
  import { sanitizeRunOutputForLogging } from "../../utils/sanitize-run-output.js";
12
12
  import { writeRunResultIfConfigured } from "../../utils/write-run-result.js";
13
+ function logRuntimeDiscoveryWarnings(errors, debug) {
14
+ if (errors.length === 0 || !debug)
15
+ return;
16
+ for (const err of errors) {
17
+ cliLogger.warn(` Warning: ${err.file}: ${err.error.message}`);
18
+ }
19
+ }
13
20
  export async function taskCommand(options) {
14
- const { discoverTasks } = await import("../../../src/task/discovery.js");
21
+ const { discoverProjectTaskRuntime, findProjectRuntimeTask, listProjectRuntimeTasks } = await import("../../../src/task/project-runtime.js");
15
22
  const { runTask } = await import("../../../src/task/runner.js");
16
23
  const taskName = options.name;
17
24
  if (!taskName) {
@@ -20,27 +27,29 @@ export async function taskCommand(options) {
20
27
  return;
21
28
  }
22
29
  const projectDir = dntShim.Deno.cwd();
23
- await withProjectSourceContext(projectDir, async ({ adapter, config, projectId, proxyContext }) => {
30
+ await withProjectSourceContext(projectDir, async ({ adapter, config, configCacheKey, projectId, proxyContext }) => {
24
31
  const sourceLabel = proxyContext?.branchRef
25
32
  ? `branch ${proxyContext.branchRef}`
26
33
  : proxyContext
27
34
  ? "main"
28
35
  : `${projectDir}/tasks/...`;
29
36
  cliLogger.info(`Discovering tasks in ${sourceLabel}`);
30
- const { tasks, errors } = await discoverTasks({
37
+ const discovery = await discoverProjectTaskRuntime({
31
38
  projectDir,
32
39
  adapter,
33
40
  config,
41
+ fsAdapter: adapter.fs,
42
+ cacheKey: configCacheKey,
34
43
  debug: options.debug,
35
44
  });
36
- if (errors.length > 0 && options.debug) {
37
- for (const err of errors) {
38
- cliLogger.warn(` Warning: ${err.filePath}: ${err.error}`);
39
- }
40
- }
41
- const task = tasks.find((t) => t.id === taskName);
45
+ logRuntimeDiscoveryWarnings(discovery.errors, options.debug);
46
+ const task = findProjectRuntimeTask(discovery, taskName);
42
47
  if (!task) {
43
48
  cliLogger.error(`Task "${taskName}" not found.`);
49
+ if (discovery.errors.length > 0 && !options.debug) {
50
+ cliLogger.warn("Some project files could not be loaded. Re-run with --debug for details.");
51
+ }
52
+ const tasks = listProjectRuntimeTasks(discovery);
44
53
  if (tasks.length > 0) {
45
54
  cliLogger.info("Available tasks:");
46
55
  for (const t of tasks) {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/webhook/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA4BxD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC1E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/webhook/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA4BxD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC1E"}
@@ -23,7 +23,8 @@ export async function handleWebhookCommand(args) {
23
23
  const opts = parseArgsOrThrow(parseWebhookArgs, "webhook", args);
24
24
  const projectDir = dntShim.Deno.cwd();
25
25
  const payload = await readJsonFile(opts.payload, "--payload JSON file");
26
- await withProjectSourceContext(projectDir, async ({ adapter, config, projectId }) => {
26
+ await withProjectSourceContext(projectDir, async (context) => {
27
+ const { adapter, config, configCacheKey, projectId } = context;
27
28
  const result = await discoverWebhooks({ projectDir, adapter, config });
28
29
  if (result.errors.length > 0) {
29
30
  throw new Error(`Webhook discovery failed: ${result.errors[0]?.message}`);
@@ -36,6 +37,7 @@ export async function handleWebhookCommand(args) {
36
37
  projectDir,
37
38
  adapter,
38
39
  config,
40
+ cacheKey: configCacheKey,
39
41
  projectId,
40
42
  target: webhook.target,
41
43
  input: payload,
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/workflow/command.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAO1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,2BAA2B;IACnC,2BAA2B,CAAC,EAAE,OAAO,2BAA2B,CAAC;CAClE;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,sBAAsB,EAAE,GAC/B,MAAM,EAAE,CAUV;AAuFD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,IAAI,CAAC,CA8Ff"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/workflow/command.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAO1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,2BAA2B;IACnC,2BAA2B,CAAC,EAAE,OAAO,2BAA2B,CAAC;CAClE;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,sBAAsB,EAAE,GAC/B,MAAM,EAAE,CAUV;AAuFD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAkGf"}
@@ -109,7 +109,8 @@ export async function runWorkflowCommand(options, dependencies = {}) {
109
109
  const projectDir = options.projectDir ?? dntShim.Deno.cwd();
110
110
  const discoverRuntime = dependencies.discoverProjectAgentRuntime ??
111
111
  discoverProjectAgentRuntime;
112
- await withProjectSourceContext(projectDir, async ({ adapter, proxyContext }) => {
112
+ await withProjectSourceContext(projectDir, async (context) => {
113
+ const { adapter, config, configCacheKey, proxyContext } = context;
113
114
  const sourceLabel = proxyContext?.branchRef
114
115
  ? `branch ${proxyContext.branchRef}`
115
116
  : proxyContext
@@ -119,6 +120,9 @@ export async function runWorkflowCommand(options, dependencies = {}) {
119
120
  const discovery = await discoverRuntime({
120
121
  projectDir,
121
122
  adapter,
123
+ config,
124
+ fsAdapter: adapter.fs,
125
+ cacheKey: configCacheKey,
122
126
  verbose: options.debug,
123
127
  });
124
128
  const workflows = [...discovery.workflows.values()];
@@ -10,6 +10,7 @@ export interface ProjectSourceExecutionContext {
10
10
  adapter: RuntimeAdapter;
11
11
  config: VeryfrontConfig;
12
12
  projectDir: string;
13
+ configCacheKey?: string;
13
14
  projectId?: string;
14
15
  proxyContext?: ProxyProjectSourceContext;
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-source-context.d.ts","sourceRoot":"","sources":["../../../src/cli/shared/project-source-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAGrC,UAAU,yBAAyB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,wBAAgB,4BAA4B,IAAI,yBAAyB,GAAG,IAAI,CAkB/E;AAWD,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,2DAMxB;AAED,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1D,OAAO,CAAC,CAAC,CAAC,CAyCZ"}
1
+ {"version":3,"file":"project-source-context.d.ts","sourceRoot":"","sources":["../../../src/cli/shared/project-source-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAGrC,UAAU,yBAAyB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,wBAAgB,4BAA4B,IAAI,yBAAyB,GAAG,IAAI,CAkB/E;AAiBD,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,2DAMxB;AAED,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1D,OAAO,CAAC,CAAC,CAAC,CA2CZ"}
@@ -18,9 +18,12 @@ export function getProxyProjectSourceContext() {
18
18
  };
19
19
  }
20
20
  async function loadProjectConfig(projectDir, adapter, proxyContext) {
21
- const cacheKey = proxyContext?.projectId ?? proxyContext?.projectSlug;
21
+ const cacheKey = getProjectSourceConfigCacheKey(proxyContext);
22
22
  return await getConfig(projectDir, adapter, cacheKey ? { cacheKey } : undefined);
23
23
  }
24
+ function getProjectSourceConfigCacheKey(proxyContext) {
25
+ return proxyContext?.projectId ?? proxyContext?.projectSlug;
26
+ }
24
27
  export async function applyProjectSourceRuntimeAuth(projectDir, config) {
25
28
  return await applyRuntimeAuthContext({
26
29
  projectDir,
@@ -42,6 +45,7 @@ export async function withProjectSourceContext(projectDir, run) {
42
45
  adapter,
43
46
  config,
44
47
  projectDir,
48
+ configCacheKey: getProjectSourceConfigCacheKey(proxyContext),
45
49
  projectId: proxyContext.projectId,
46
50
  proxyContext,
47
51
  });
@@ -55,6 +59,7 @@ export async function withProjectSourceContext(projectDir, run) {
55
59
  adapter,
56
60
  config,
57
61
  projectDir,
62
+ configCacheKey: getProjectSourceConfigCacheKey(proxyContext ?? undefined),
58
63
  projectId: proxyContext?.projectId,
59
64
  proxyContext: proxyContext ?? undefined,
60
65
  });
package/esm/deno.d.ts CHANGED
@@ -42,6 +42,7 @@ declare namespace _default {
42
42
  "./runs": string;
43
43
  "./skill": string;
44
44
  "./trigger": string;
45
+ "./task": string;
45
46
  "./schedule": string;
46
47
  "./webhook": string;
47
48
  "./mcp": string;
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.995",
3
+ "version": "0.1.997",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -98,6 +98,7 @@ export default {
98
98
  "./runs": "./src/runs/index.ts",
99
99
  "./skill": "./src/skill/index.ts",
100
100
  "./trigger": "./src/trigger/index.ts",
101
+ "./task": "./src/task/index.ts",
101
102
  "./schedule": "./src/schedule/index.ts",
102
103
  "./webhook": "./src/webhook/index.ts",
103
104
  "./mcp": "./src/mcp/index.ts",
@@ -1,5 +1,7 @@
1
1
  import type { DiscoveryResult } from "../../discovery/types.js";
2
+ import { type VeryfrontConfig } from "../../config/index.js";
2
3
  import type { RuntimeAdapter } from "../../platform/adapters/base.js";
4
+ import type { FileSystemAdapter } from "../../platform/adapters/base.js";
3
5
  import type { RuntimeAgentMarkdownDefinition } from "../runtime/agent-definition.js";
4
6
  import type { Agent } from "../types.js";
5
7
  /** Public API contract for project agent runtime agent source. */
@@ -13,6 +15,9 @@ export type ProjectAgentRuntimeAgentIdCandidates = {
13
15
  export type DiscoverProjectAgentRuntimeInput = {
14
16
  projectDir: string;
15
17
  adapter: RuntimeAdapter;
18
+ config?: VeryfrontConfig | null;
19
+ fsAdapter?: FileSystemAdapter;
20
+ cacheKey?: string;
16
21
  verbose?: boolean;
17
22
  };
18
23
  /** Clear project agent runtime registries. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/project/agent-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAQhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAKrF,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,aAAa,CAAC;AAEtD,kEAAkE;AAClE,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1E,yEAAyE;AACzE,MAAM,MAAM,oCAAoC,GAAG;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAuBF,8CAA8C;AAC9C,wBAAgB,kCAAkC,IAAI,IAAI,CAMzD;AAED,6CAA6C;AAC7C,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,eAAe,CAAC,CAW1B;AAED,4DAA4D;AAC5D,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,KAAK,EACnB,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAOT;AAED,kDAAkD;AAClD,wBAAsB,qCAAqC,CACzD,YAAY,EAAE,KAAK,GAClB,OAAO,CAAC,8BAA8B,CAAC,CA0BzC;AAED,wDAAwD;AACxD,wBAAgB,uCAAuC,CACrD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,GAClE,oCAAoC,CAgBtC;AAED,iEAAiE;AACjE,wBAAgB,4CAA4C,CAC1D,KAAK,EAAE,oCAAoC,GAC1C,MAAM,CAKR;AAED,sDAAsD;AACtD,wBAAgB,uCAAuC,CAAC,KAAK,EAAE;IAC7D,UAAU,EAAE,oCAAoC,CAAC;IACjD,MAAM,EAAE,8BAA8B,CAAC;CACxC,GAAG,MAAM,GAAG,IAAI,CAiBhB"}
1
+ {"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/project/agent-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOhE,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAKrF,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,aAAa,CAAC;AAEtD,kEAAkE;AAClE,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1E,yEAAyE;AACzE,MAAM,MAAM,oCAAoC,GAAG;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,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,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAuBF,8CAA8C;AAC9C,wBAAgB,kCAAkC,IAAI,IAAI,CAMzD;AAED,6CAA6C;AAC7C,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,eAAe,CAAC,CAiB1B;AAED,4DAA4D;AAC5D,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,KAAK,EACnB,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAOT;AAED,kDAAkD;AAClD,wBAAsB,qCAAqC,CACzD,YAAY,EAAE,KAAK,GAClB,OAAO,CAAC,8BAA8B,CAAC,CA0BzC;AAED,wDAAwD;AACxD,wBAAgB,uCAAuC,CACrD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,GAClE,oCAAoC,CAgBtC;AAED,iEAAiE;AACjE,wBAAgB,4CAA4C,CAC1D,KAAK,EAAE,oCAAoC,GAC1C,MAAM,CAKR;AAED,sDAAsD;AACtD,wBAAgB,uCAAuC,CAAC,KAAK,EAAE;IAC7D,UAAU,EAAE,oCAAoC,CAAC;IACjD,MAAM,EAAE,8BAA8B,CAAC;CACxC,GAAG,MAAM,GAAG,IAAI,CAiBhB"}
@@ -31,10 +31,12 @@ export function clearProjectAgentRuntimeRegistries() {
31
31
  /** Discover project agent runtime helper. */
32
32
  export async function discoverProjectAgentRuntime(input) {
33
33
  clearProjectAgentRuntimeRegistries();
34
- const config = await getConfig(input.projectDir, input.adapter);
34
+ const config = input.config ??
35
+ await getConfig(input.projectDir, input.adapter, input.cacheKey ? { cacheKey: input.cacheKey } : undefined);
35
36
  const discoveryOptions = createProjectDiscoveryConfig({
36
37
  projectDir: input.projectDir,
37
38
  config,
39
+ fsAdapter: input.fsAdapter,
38
40
  verbose: input.verbose,
39
41
  });
40
42
  return await discoverAll(discoveryOptions);
@@ -264,7 +264,7 @@ export type DispatchClaims = InferSchema<ReturnType<typeof getDispatchClaimsSche
264
264
  export type ControlPlaneClaims = InferSchema<ReturnType<typeof getControlPlaneClaimsSchema>>;
265
265
  /** Public API contract for runtime agent discovery deps. */
266
266
  export interface RuntimeAgentDiscoveryDeps {
267
- ensureProjectDiscovery: (ctx: HandlerContext) => Promise<void>;
267
+ ensureProjectDiscovery: (ctx: HandlerContext) => Promise<unknown>;
268
268
  getAgent: (id: string) => Agent | undefined;
269
269
  getAllAgentIds: () => string[];
270
270
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../../src/src/channels/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../../src/src/channels/control-plane.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-engine.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/discovery-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EAEhB,MAAM,YAAY,CAAC;AA0IpB;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAuGnF"}
1
+ {"version":3,"file":"discovery-engine.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/discovery-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EAEhB,MAAM,YAAY,CAAC;AAkKpB;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA8JnF"}
@@ -13,7 +13,6 @@ import { findTypeScriptFiles } from "./file-discovery.js";
13
13
  import { agentHandler, discoverSkills, evalHandler, promptHandler, resourceHandler, scheduleHandler, taskHandler, toolHandler, webhookHandler, workflowHandler, workHandler, } from "./handlers/index.js";
14
14
  import { discoverRuntimeAgentMarkdownDefinitions } from "./handlers/runtime-agent-markdown-handler.js";
15
15
  import { filenameToId } from "./discovery-utils.js";
16
- import { join } from "../platform/compat/path/index.js";
17
16
  const logger = agentLogger.component("discovery");
18
17
  function isIndexModule(file) {
19
18
  const normalized = file.replace("file://", "");
@@ -26,6 +25,11 @@ function compareDiscoveryFiles(a, b) {
26
25
  return aIsIndex ? 1 : -1;
27
26
  return a.localeCompare(b);
28
27
  }
28
+ function resolveDiscoveryDir(baseDir, dir) {
29
+ if (baseDir === "")
30
+ return dir;
31
+ return `${baseDir}/${dir}`;
32
+ }
29
33
  function collectDiscoveryCandidates(module, handler) {
30
34
  const defaultItem = module.default;
31
35
  if (handler.validate(defaultItem)) {
@@ -96,6 +100,11 @@ async function discoverItems(dir, result, context, handler, verbose) {
96
100
  }
97
101
  }
98
102
  }
103
+ async function discoverConfiguredItems(dirs, defaultDirs, baseDir, result, context, handler, verbose) {
104
+ for (const dir of dirs ?? defaultDirs) {
105
+ await discoverItems(resolveDiscoveryDir(baseDir, dir), result, context, handler, verbose);
106
+ }
107
+ }
99
108
  /**
100
109
  * Discover all items in configured directories
101
110
  */
@@ -121,9 +130,7 @@ export async function discoverAll(config) {
121
130
  errors: [],
122
131
  };
123
132
  // Discover tools
124
- for (const dir of config.toolDirs ?? ["tools"]) {
125
- await discoverItems(`${baseDir}/${dir}`, result, context, toolHandler, config.verbose);
126
- }
133
+ await discoverConfiguredItems(config.toolDirs, ["tools"], baseDir, result, context, toolHandler, config.verbose);
127
134
  // Clear stale skills before any skill registration so deleted/renamed
128
135
  // skills are removed. Global skills are discovered BEFORE agents so that
129
136
  // directory-agent colocated skills (registered during agent discovery)
@@ -132,7 +139,7 @@ export async function discoverAll(config) {
132
139
  skillRegistry.clear();
133
140
  // Discover skills (parallel path — markdown-based, not TypeScript import)
134
141
  for (const dir of config.skillDirs ?? ["skills"]) {
135
- const skillResult = await discoverSkills(join(baseDir, dir), context, config.verbose);
142
+ const skillResult = await discoverSkills(resolveDiscoveryDir(baseDir, dir), context, config.verbose);
136
143
  for (const [id, skill] of skillResult.skills) {
137
144
  if (result.skills.has(id)) {
138
145
  logger.warn(`Duplicate skill "${id}" across discovery roots; keeping first registration`);
@@ -145,40 +152,25 @@ export async function discoverAll(config) {
145
152
  }
146
153
  // Discover agents
147
154
  for (const dir of config.agentDirs ?? ["agents"]) {
148
- await discoverItems(`${baseDir}/${dir}`, result, context, agentHandler, config.verbose);
149
- await discoverRuntimeAgentMarkdownDefinitions(`${baseDir}/${dir}`, result, context);
155
+ const agentDir = resolveDiscoveryDir(baseDir, dir);
156
+ await discoverItems(agentDir, result, context, agentHandler, config.verbose);
157
+ await discoverRuntimeAgentMarkdownDefinitions(agentDir, result, context);
150
158
  }
151
159
  // Discover resources
152
- for (const dir of config.resourceDirs ?? ["resources"]) {
153
- await discoverItems(`${baseDir}/${dir}`, result, context, resourceHandler, config.verbose);
154
- }
160
+ await discoverConfiguredItems(config.resourceDirs, ["resources"], baseDir, result, context, resourceHandler, config.verbose);
155
161
  // Discover prompts
156
- for (const dir of config.promptDirs ?? ["prompts"]) {
157
- await discoverItems(`${baseDir}/${dir}`, result, context, promptHandler, config.verbose);
158
- }
162
+ await discoverConfiguredItems(config.promptDirs, ["prompts"], baseDir, result, context, promptHandler, config.verbose);
159
163
  // Discover workflows
160
- for (const dir of config.workflowDirs ?? ["workflows"]) {
161
- await discoverItems(`${baseDir}/${dir}`, result, context, workflowHandler, config.verbose);
162
- }
164
+ await discoverConfiguredItems(config.workflowDirs, ["workflows"], baseDir, result, context, workflowHandler, config.verbose);
163
165
  // Discover Work definitions
164
- for (const dir of config.workDirs ?? ["work"]) {
165
- await discoverItems(`${baseDir}/${dir}`, result, context, workHandler, config.verbose);
166
- }
166
+ await discoverConfiguredItems(config.workDirs, ["work"], baseDir, result, context, workHandler, config.verbose);
167
167
  // Discover tasks
168
- for (const dir of config.taskDirs ?? ["tasks"]) {
169
- await discoverItems(`${baseDir}/${dir}`, result, context, taskHandler, config.verbose);
170
- }
168
+ await discoverConfiguredItems(config.taskDirs, ["tasks"], baseDir, result, context, taskHandler, config.verbose);
171
169
  // Discover schedules
172
- for (const dir of config.scheduleDirs ?? ["schedules"]) {
173
- await discoverItems(`${baseDir}/${dir}`, result, context, scheduleHandler, config.verbose);
174
- }
170
+ await discoverConfiguredItems(config.scheduleDirs, ["schedules"], baseDir, result, context, scheduleHandler, config.verbose);
175
171
  // Discover webhooks
176
- for (const dir of config.webhookDirs ?? ["webhooks"]) {
177
- await discoverItems(`${baseDir}/${dir}`, result, context, webhookHandler, config.verbose);
178
- }
172
+ await discoverConfiguredItems(config.webhookDirs, ["webhooks"], baseDir, result, context, webhookHandler, config.verbose);
179
173
  // Discover eval definitions
180
- for (const dir of config.evalDirs ?? ["evals"]) {
181
- await discoverItems(`${baseDir}/${dir}`, result, context, evalHandler, config.verbose);
182
- }
174
+ await discoverConfiguredItems(config.evalDirs, ["evals"], baseDir, result, context, evalHandler, config.verbose);
183
175
  return result;
184
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/task-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAUxD,CAAC"}
1
+ {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/task-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAaxD,CAAC"}
@@ -6,8 +6,11 @@ export const taskHandler = {
6
6
  typeName: "task",
7
7
  validate: (item) => isTaskDefinition(item),
8
8
  getId: (_task, file, dir) => {
9
+ const normalizedFile = file.startsWith("file://") ? file.slice("file://".length) : file;
9
10
  const prefix = dir.endsWith("/") ? dir : `${dir}/`;
10
- const relative = file.startsWith(prefix) ? file.slice(prefix.length) : file;
11
+ const relative = normalizedFile.startsWith(prefix)
12
+ ? normalizedFile.slice(prefix.length)
13
+ : normalizedFile;
11
14
  return relative.replace(/\.(ts|tsx|js|jsx)$/, "");
12
15
  },
13
16
  register: (_id, task) => task,
@@ -1 +1 @@
1
- {"version":3,"file":"project-discovery-config.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/project-discovery-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,8BAA8B;;;;;;;;;;;;CAY1C,CAAC;AAOF,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAAG;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAgBF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CAoDxB"}
1
+ {"version":3,"file":"project-discovery-config.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/project-discovery-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,8BAA8B;;;;;;;;;;;;CAY1C,CAAC;AAOF,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAAG;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAwBF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CAoDxB"}
@@ -20,10 +20,14 @@ function resolveDiscoveryPaths(discovery, defaultPaths) {
20
20
  }
21
21
  return discovery?.paths ?? defaultPaths;
22
22
  }
23
+ function resolveProjectDiscoveryBaseDir(projectDir, config) {
24
+ const fsType = config?.fs?.type ?? "local";
25
+ return fsType === "github" || fsType === "veryfront-api" ? "" : projectDir;
26
+ }
23
27
  export function createProjectDiscoveryConfig(input) {
24
28
  const aiConfig = input.config?.ai;
25
29
  return {
26
- baseDir: input.projectDir,
30
+ baseDir: resolveProjectDiscoveryBaseDir(input.projectDir, input.config),
27
31
  toolDirs: resolveDiscoveryPaths(aiConfig?.tools?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.toolDirs),
28
32
  agentDirs: resolveDiscoveryPaths(aiConfig?.agents?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.agentDirs),
29
33
  skillDirs: resolveDiscoveryPaths(aiConfig?.skills?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.skillDirs),
@@ -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<void>;
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":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkDrD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyE/E"}
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 { type DiscoveredTask } from "../../../task/discovery.js";
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<void>;
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":"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"}
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 { findTaskById } from "../../../task/discovery.js";
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 task = await deps.findTaskById(taskId, {
155
- projectDir: ctx.projectDir,
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,
@@ -23,7 +23,11 @@ import type { RuntimeAdapter } from "../platform/index.js";
23
23
  import type { VeryfrontConfig } from "../config/index.js";
24
24
  import type { TaskDefinition } from "./types.js";
25
25
  /**
26
- * Discovered task info
26
+ * Discovered task info.
27
+ *
28
+ * @deprecated Use project runtime discovery helpers from `veryfront/task`
29
+ * instead. Runtime discovery keeps tasks, tools, agents, and cloud runs on the
30
+ * same project discovery path.
27
31
  */
28
32
  export interface DiscoveredTask {
29
33
  /** Task ID derived from file path (e.g., "sync-data" from tasks/sync-data.ts) */
@@ -38,7 +42,9 @@ export interface DiscoveredTask {
38
42
  definition: TaskDefinition;
39
43
  }
40
44
  /**
41
- * Options for task discovery
45
+ * Options for file-based task discovery.
46
+ *
47
+ * @deprecated Use `discoverProjectTaskRuntime` instead.
42
48
  */
43
49
  export interface TaskDiscoveryOptions {
44
50
  /** Project directory */
@@ -53,7 +59,9 @@ export interface TaskDiscoveryOptions {
53
59
  debug?: boolean;
54
60
  }
55
61
  /**
56
- * Result of task discovery
62
+ * Result of file-based task discovery.
63
+ *
64
+ * @deprecated Use `DiscoveryResult` from project runtime discovery instead.
57
65
  */
58
66
  export interface TaskDiscoveryResult {
59
67
  /** All discovered tasks */
@@ -65,15 +73,23 @@ export interface TaskDiscoveryResult {
65
73
  }>;
66
74
  }
67
75
  /**
68
- * Derive task ID from file path (e.g., "tasks/sync-data.ts" "sync-data")
76
+ * Derive task ID from file path (e.g., "tasks/sync-data.ts" -> "sync-data").
77
+ *
78
+ * @deprecated Use project runtime task IDs from `discoverProjectTaskRuntime`
79
+ * instead.
69
80
  */
70
81
  export declare function deriveTaskId(filePath: string, tasksDir: string): string;
71
82
  /**
72
- * Discover all tasks in a project
83
+ * Discover all tasks in a project with the legacy file-based path.
84
+ *
85
+ * @deprecated Use `discoverProjectTaskRuntime` instead.
73
86
  */
74
87
  export declare function discoverTasks(options: TaskDiscoveryOptions): Promise<TaskDiscoveryResult>;
75
88
  /**
76
- * Find a specific task by ID, short-circuiting discovery once found.
89
+ * Find a specific task by ID through the legacy file-based path.
90
+ *
91
+ * @deprecated Use `discoverProjectTaskRuntime` and `findProjectRuntimeTask`
92
+ * instead.
77
93
  */
78
94
  export declare function findTaskById(taskId: string, options: TaskDiscoveryOptions): Promise<DiscoveredTask | null>;
79
95
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +1 @@
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"}
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;;;;;;GAMG;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;;;;GAIG;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;;;;GAIG;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;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAiE9B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAuChC"}
@@ -83,7 +83,10 @@ function logDiscoveredTask(task, debug) {
83
83
  }
84
84
  }
85
85
  /**
86
- * Derive task ID from file path (e.g., "tasks/sync-data.ts" "sync-data")
86
+ * Derive task ID from file path (e.g., "tasks/sync-data.ts" -> "sync-data").
87
+ *
88
+ * @deprecated Use project runtime task IDs from `discoverProjectTaskRuntime`
89
+ * instead.
87
90
  */
88
91
  export function deriveTaskId(filePath, tasksDir) {
89
92
  // Remove the tasks dir prefix and extension
@@ -96,7 +99,9 @@ export function deriveTaskId(filePath, tasksDir) {
96
99
  return relative.replace(/\.(ts|tsx|js|jsx)$/, "");
97
100
  }
98
101
  /**
99
- * Discover all tasks in a project
102
+ * Discover all tasks in a project with the legacy file-based path.
103
+ *
104
+ * @deprecated Use `discoverProjectTaskRuntime` instead.
100
105
  */
101
106
  export async function discoverTasks(options) {
102
107
  const { projectDir, adapter, config, tasksDir = "tasks", debug = false, } = options;
@@ -147,7 +152,10 @@ export async function discoverTasks(options) {
147
152
  }
148
153
  }
149
154
  /**
150
- * Find a specific task by ID, short-circuiting discovery once found.
155
+ * Find a specific task by ID through the legacy file-based path.
156
+ *
157
+ * @deprecated Use `discoverProjectTaskRuntime` and `findProjectRuntimeTask`
158
+ * instead.
151
159
  */
152
160
  export async function findTaskById(taskId, options) {
153
161
  const { projectDir, adapter, config, tasksDir = "tasks", debug = false, } = options;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Source-defined tasks for Veryfront projects.
3
+ *
4
+ * @module task
5
+ *
6
+ * @example Define a task in tasks/sync-data.ts
7
+ * ```ts
8
+ * import type { TaskContext } from "veryfront/task";
9
+ *
10
+ * export default {
11
+ * name: "Sync external data",
12
+ * async run(ctx: TaskContext) {
13
+ * return { synced: 42 };
14
+ * },
15
+ * };
16
+ * ```
17
+ */
18
+ import "../../_dnt.polyfills.js";
19
+ export type { TaskContext, TaskDefinition } from "./types.js";
20
+ export { isTaskDefinition } from "./types.js";
21
+ export { deriveTaskId, discoverTasks, findTaskById } from "./discovery.js";
22
+ export type { DiscoveredTask, TaskDiscoveryOptions, TaskDiscoveryResult } from "./discovery.js";
23
+ export { runTask } from "./runner.js";
24
+ export type { RunnableTask, RunTaskOptions, TaskRunResult } from "./runner.js";
25
+ export { discoverProjectTaskRuntime, findProjectRuntimeTask, formatProjectRuntimeDiscoveryErrors, listProjectRuntimeTasks, } from "./project-runtime.js";
26
+ export type { ProjectTaskRuntimeOptions } from "./project-runtime.js";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/task/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,mCAAmC,EACnC,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Source-defined tasks for Veryfront projects.
3
+ *
4
+ * @module task
5
+ *
6
+ * @example Define a task in tasks/sync-data.ts
7
+ * ```ts
8
+ * import type { TaskContext } from "veryfront/task";
9
+ *
10
+ * export default {
11
+ * name: "Sync external data",
12
+ * async run(ctx: TaskContext) {
13
+ * return { synced: 42 };
14
+ * },
15
+ * };
16
+ * ```
17
+ */
18
+ import "../../_dnt.polyfills.js";
19
+ export { isTaskDefinition } from "./types.js";
20
+ export { deriveTaskId, discoverTasks, findTaskById } from "./discovery.js";
21
+ export { runTask } from "./runner.js";
22
+ export { discoverProjectTaskRuntime, findProjectRuntimeTask, formatProjectRuntimeDiscoveryErrors, listProjectRuntimeTasks, } from "./project-runtime.js";
@@ -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
+ }
@@ -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 { DiscoveredTask } from "./discovery.js";
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: DiscoveredTask;
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;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,IAAI,EAAE,cAAc,CAAC;IAErB,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
+ {"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"}
@@ -5,6 +5,7 @@ export interface RunTriggerTargetOptions {
5
5
  projectDir: string;
6
6
  adapter: RuntimeAdapter;
7
7
  config?: VeryfrontConfig;
8
+ cacheKey?: string;
8
9
  projectId?: string;
9
10
  target: TriggerTarget;
10
11
  input?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"local-runner.d.ts","sourceRoot":"","sources":["../../../src/src/trigger/local-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1D,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,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;AAyFD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAYjC"}
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 { discoverTasks } from "../task/discovery.js";
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 runTaskTarget(options) {
16
- const { tasks, errors } = await discoverTasks({
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
- if (errors.length > 0) {
23
- throw new Error(`Task discovery failed: ${errors[0]?.filePath}: ${errors[0]?.error}`);
24
- }
25
- const task = tasks.find((candidate) => candidate.id === options.target.id);
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 discoverProjectAgentRuntime({
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,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.995";
2
+ export declare const VERSION = "0.1.997";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.995";
4
+ export const VERSION = "0.1.997";
@@ -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,CAmIjB;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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.995",
3
+ "version": "0.1.997",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
@@ -149,6 +149,10 @@
149
149
  "import": "./esm/src/trigger/index.js",
150
150
  "types": "./esm/src/trigger/index.d.ts"
151
151
  },
152
+ "./task": {
153
+ "import": "./esm/src/task/index.js",
154
+ "types": "./esm/src/task/index.d.ts"
155
+ },
152
156
  "./schedule": {
153
157
  "import": "./esm/src/schedule/index.js",
154
158
  "types": "./esm/src/schedule/index.d.ts"