veryfront 0.1.973 → 0.1.975

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 (108) hide show
  1. package/esm/cli/commands/schedule/command-help.d.ts +3 -0
  2. package/esm/cli/commands/schedule/command-help.d.ts.map +1 -0
  3. package/esm/cli/commands/schedule/command-help.js +24 -0
  4. package/esm/cli/commands/schedule/handler.d.ts +3 -0
  5. package/esm/cli/commands/schedule/handler.d.ts.map +1 -0
  6. package/esm/cli/commands/schedule/handler.js +55 -0
  7. package/esm/cli/commands/schedules/command-help.d.ts +3 -0
  8. package/esm/cli/commands/schedules/command-help.d.ts.map +1 -0
  9. package/esm/cli/commands/schedules/command-help.js +16 -0
  10. package/esm/cli/commands/schedules/handler.d.ts +3 -0
  11. package/esm/cli/commands/schedules/handler.d.ts.map +1 -0
  12. package/esm/cli/commands/schedules/handler.js +19 -0
  13. package/esm/cli/commands/trigger-utils.d.ts +19 -0
  14. package/esm/cli/commands/trigger-utils.d.ts.map +1 -0
  15. package/esm/cli/commands/trigger-utils.js +50 -0
  16. package/esm/cli/commands/webhook/command-help.d.ts +3 -0
  17. package/esm/cli/commands/webhook/command-help.d.ts.map +1 -0
  18. package/esm/cli/commands/webhook/command-help.js +24 -0
  19. package/esm/cli/commands/webhook/handler.d.ts +3 -0
  20. package/esm/cli/commands/webhook/handler.d.ts.map +1 -0
  21. package/esm/cli/commands/webhook/handler.js +55 -0
  22. package/esm/cli/commands/webhooks/command-help.d.ts +3 -0
  23. package/esm/cli/commands/webhooks/command-help.d.ts.map +1 -0
  24. package/esm/cli/commands/webhooks/command-help.js +16 -0
  25. package/esm/cli/commands/webhooks/handler.d.ts +3 -0
  26. package/esm/cli/commands/webhooks/handler.d.ts.map +1 -0
  27. package/esm/cli/commands/webhooks/handler.js +19 -0
  28. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  29. package/esm/cli/help/command-definitions.js +8 -0
  30. package/esm/cli/router.d.ts.map +1 -1
  31. package/esm/cli/router.js +8 -0
  32. package/esm/deno.d.ts +14 -0
  33. package/esm/deno.js +15 -1
  34. package/esm/src/agent/runtime/model-resolution.d.ts +1 -0
  35. package/esm/src/agent/runtime/model-resolution.d.ts.map +1 -1
  36. package/esm/src/agent/runtime/model-resolution.js +4 -1
  37. package/esm/src/agent/runtime/provider-tool-compat.d.ts.map +1 -1
  38. package/esm/src/agent/runtime/provider-tool-compat.js +33 -2
  39. package/esm/src/agent/types.d.ts +1 -1
  40. package/esm/src/config/schemas/config.schema.d.ts +24 -0
  41. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  42. package/esm/src/config/schemas/config.schema.js +24 -0
  43. package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
  44. package/esm/src/discovery/discovery-engine.js +11 -1
  45. package/esm/src/discovery/handlers/index.d.ts +2 -0
  46. package/esm/src/discovery/handlers/index.d.ts.map +1 -1
  47. package/esm/src/discovery/handlers/index.js +2 -0
  48. package/esm/src/discovery/handlers/schedule-handler.d.ts +4 -0
  49. package/esm/src/discovery/handlers/schedule-handler.d.ts.map +1 -0
  50. package/esm/src/discovery/handlers/schedule-handler.js +8 -0
  51. package/esm/src/discovery/handlers/webhook-handler.d.ts +4 -0
  52. package/esm/src/discovery/handlers/webhook-handler.d.ts.map +1 -0
  53. package/esm/src/discovery/handlers/webhook-handler.js +8 -0
  54. package/esm/src/discovery/project-discovery-config.d.ts +4 -0
  55. package/esm/src/discovery/project-discovery-config.d.ts.map +1 -1
  56. package/esm/src/discovery/project-discovery-config.js +4 -0
  57. package/esm/src/discovery/types.d.ts +6 -0
  58. package/esm/src/discovery/types.d.ts.map +1 -1
  59. package/esm/src/platform/cloud/resolver.d.ts +1 -1
  60. package/esm/src/platform/cloud/resolver.d.ts.map +1 -1
  61. package/esm/src/platform/cloud/resolver.js +1 -1
  62. package/esm/src/provider/index.d.ts +1 -1
  63. package/esm/src/provider/index.js +1 -1
  64. package/esm/src/provider/veryfront-cloud/model-catalog.d.ts +1 -1
  65. package/esm/src/provider/veryfront-cloud/model-catalog.d.ts.map +1 -1
  66. package/esm/src/provider/veryfront-cloud/model-catalog.js +8 -1
  67. package/esm/src/schedule/discovery.d.ts +13 -0
  68. package/esm/src/schedule/discovery.d.ts.map +1 -0
  69. package/esm/src/schedule/discovery.js +12 -0
  70. package/esm/src/schedule/factory.d.ts +3 -0
  71. package/esm/src/schedule/factory.d.ts.map +1 -0
  72. package/esm/src/schedule/factory.js +48 -0
  73. package/esm/src/schedule/index.d.ts +25 -0
  74. package/esm/src/schedule/index.d.ts.map +1 -0
  75. package/esm/src/schedule/index.js +22 -0
  76. package/esm/src/schedule/types.d.ts +21 -0
  77. package/esm/src/schedule/types.d.ts.map +1 -0
  78. package/esm/src/schedule/types.js +9 -0
  79. package/esm/src/trigger/discovery.d.ts +31 -0
  80. package/esm/src/trigger/discovery.d.ts.map +1 -0
  81. package/esm/src/trigger/discovery.js +115 -0
  82. package/esm/src/trigger/index.d.ts +30 -0
  83. package/esm/src/trigger/index.d.ts.map +1 -0
  84. package/esm/src/trigger/index.js +26 -0
  85. package/esm/src/trigger/local-runner.d.ts +20 -0
  86. package/esm/src/trigger/local-runner.d.ts.map +1 -0
  87. package/esm/src/trigger/local-runner.js +92 -0
  88. package/esm/src/trigger/target.d.ts +7 -0
  89. package/esm/src/trigger/target.d.ts.map +1 -0
  90. package/esm/src/trigger/target.js +8 -0
  91. package/esm/src/trigger/validation.d.ts +3 -0
  92. package/esm/src/trigger/validation.d.ts.map +1 -0
  93. package/esm/src/trigger/validation.js +36 -0
  94. package/esm/src/utils/version-constant.d.ts +1 -1
  95. package/esm/src/utils/version-constant.js +1 -1
  96. package/esm/src/webhook/discovery.d.ts +13 -0
  97. package/esm/src/webhook/discovery.d.ts.map +1 -0
  98. package/esm/src/webhook/discovery.js +12 -0
  99. package/esm/src/webhook/factory.d.ts +3 -0
  100. package/esm/src/webhook/factory.d.ts.map +1 -0
  101. package/esm/src/webhook/factory.js +58 -0
  102. package/esm/src/webhook/index.d.ts +29 -0
  103. package/esm/src/webhook/index.d.ts.map +1 -0
  104. package/esm/src/webhook/index.js +26 -0
  105. package/esm/src/webhook/types.d.ts +26 -0
  106. package/esm/src/webhook/types.d.ts.map +1 -0
  107. package/esm/src/webhook/types.js +8 -0
  108. package/package.json +13 -1
@@ -34,8 +34,8 @@ export function getProviderToolProfile(model) {
34
34
  if (provider === "anthropic") {
35
35
  return { provider: "anthropic", sanitizeSchema: true };
36
36
  }
37
- if (provider === "moonshot") {
38
- return { provider: "moonshot", sanitizeSchema: false };
37
+ if (provider === "moonshot" || provider === "moonshotai") {
38
+ return { provider: "moonshot", sanitizeSchema: true };
39
39
  }
40
40
  return { provider: "unknown", sanitizeSchema: false };
41
41
  }
@@ -227,6 +227,34 @@ function sanitizeGoogleSchemaValue(value) {
227
227
  }
228
228
  return sanitized;
229
229
  }
230
+ function sanitizeMoonshotSchemaValue(value) {
231
+ if (Array.isArray(value)) {
232
+ return value.map((item) => sanitizeMoonshotSchemaValue(item));
233
+ }
234
+ if (!isPlainRecord(value)) {
235
+ return value;
236
+ }
237
+ const sanitized = {};
238
+ for (const [key, child] of Object.entries(value)) {
239
+ if (key === "$ref" && typeof child === "string") {
240
+ sanitized.$ref = child.replace(/^#\/definitions\//, "#/$defs/");
241
+ continue;
242
+ }
243
+ if (key === "definitions") {
244
+ sanitized.$defs = sanitizeMoonshotSchemaValue(child);
245
+ continue;
246
+ }
247
+ if (key === "properties" && isPlainRecord(child)) {
248
+ sanitized.properties = Object.fromEntries(Object.entries(child).map(([propertyName, propertySchema]) => [
249
+ propertyName,
250
+ sanitizeMoonshotSchemaValue(propertySchema),
251
+ ]));
252
+ continue;
253
+ }
254
+ sanitized[key] = sanitizeMoonshotSchemaValue(child);
255
+ }
256
+ return sanitized;
257
+ }
230
258
  /**
231
259
  * Normalize a provider tool input schema so every function tool has a
232
260
  * provider-safe JSON Schema object at the root. Remote/MCP tools can omit the
@@ -253,5 +281,8 @@ export function sanitizeProviderToolSchema(schema, options = {}) {
253
281
  if (profile.provider === "google") {
254
282
  return sanitizeGoogleSchemaValue(propertyKeySafeSchema);
255
283
  }
284
+ if (profile.provider === "moonshot") {
285
+ return sanitizeMoonshotSchemaValue(propertyKeySafeSchema);
286
+ }
256
287
  return propertyKeySafeSchema;
257
288
  }
@@ -89,7 +89,7 @@ export interface AgentConfig {
89
89
  /**
90
90
  * Optional model string in "provider/model" format.
91
91
  *
92
- * When omitted or set to `"auto"`, Veryfront chooses the runtime default:
92
+ * When omitted, Veryfront uses `openai/gpt-5.4-nano`. Set `"auto"` to choose
93
93
  * Veryfront Cloud when bootstrap credentials are present, otherwise a
94
94
  * configured direct provider key when one exists.
95
95
  */
@@ -313,6 +313,18 @@ export declare const getVeryfrontConfigSchema: () => import("../../internal-agen
313
313
  paths: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
314
314
  }>> | undefined>;
315
315
  }>> | undefined>;
316
+ schedules: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
317
+ discovery: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
318
+ enabled: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
319
+ paths: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
320
+ }>> | undefined>;
321
+ }>> | undefined>;
322
+ webhooks: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
323
+ discovery: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
324
+ enabled: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
325
+ paths: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
326
+ }>> | undefined>;
327
+ }>> | undefined>;
316
328
  evals: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
317
329
  discovery: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
318
330
  enabled: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
@@ -723,6 +735,18 @@ export declare const veryfrontConfigSchema: import("../../internal-agents/schema
723
735
  paths: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
724
736
  }>> | undefined>;
725
737
  }>> | undefined>;
738
+ schedules: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
739
+ discovery: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
740
+ enabled: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
741
+ paths: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
742
+ }>> | undefined>;
743
+ }>> | undefined>;
744
+ webhooks: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
745
+ discovery: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
746
+ enabled: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
747
+ paths: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
748
+ }>> | undefined>;
749
+ }>> | undefined>;
726
750
  evals: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
727
751
  discovery: import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
728
752
  enabled: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/config/schemas/config.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/config/schemas/config.schema.ts"],"names":[],"mappings":"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"}
@@ -479,6 +479,30 @@ export const getVeryfrontConfigSchema = defineSchema((v) => v
479
479
  })
480
480
  .partial()
481
481
  .optional(),
482
+ schedules: v
483
+ .object({
484
+ discovery: v
485
+ .object({
486
+ enabled: v.boolean().optional(),
487
+ paths: v.array(v.string()).optional(),
488
+ })
489
+ .partial()
490
+ .optional(),
491
+ })
492
+ .partial()
493
+ .optional(),
494
+ webhooks: v
495
+ .object({
496
+ discovery: v
497
+ .object({
498
+ enabled: v.boolean().optional(),
499
+ paths: v.array(v.string()).optional(),
500
+ })
501
+ .partial()
502
+ .optional(),
503
+ })
504
+ .partial()
505
+ .optional(),
482
506
  evals: v
483
507
  .object({
484
508
  discovery: v
@@ -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;AAwIpB;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA2FnF"}
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"}
@@ -10,7 +10,7 @@ import { ensureError } from "../errors/veryfront-error.js";
10
10
  import { registerSkill, skillRegistry } from "../skill/registry.js";
11
11
  import { importModule } from "./transpiler.js";
12
12
  import { findTypeScriptFiles } from "./file-discovery.js";
13
- import { agentHandler, discoverSkills, evalHandler, promptHandler, resourceHandler, taskHandler, toolHandler, workflowHandler, workHandler, } from "./handlers/index.js";
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
16
  import { join } from "../platform/compat/path/index.js";
@@ -115,6 +115,8 @@ export async function discoverAll(config) {
115
115
  workflows: new Map(),
116
116
  works: new Map(),
117
117
  tasks: new Map(),
118
+ schedules: new Map(),
119
+ webhooks: new Map(),
118
120
  evals: new Map(),
119
121
  errors: [],
120
122
  };
@@ -166,6 +168,14 @@ export async function discoverAll(config) {
166
168
  for (const dir of config.taskDirs ?? ["tasks"]) {
167
169
  await discoverItems(`${baseDir}/${dir}`, result, context, taskHandler, config.verbose);
168
170
  }
171
+ // Discover schedules
172
+ for (const dir of config.scheduleDirs ?? ["schedules"]) {
173
+ await discoverItems(`${baseDir}/${dir}`, result, context, scheduleHandler, config.verbose);
174
+ }
175
+ // Discover webhooks
176
+ for (const dir of config.webhookDirs ?? ["webhooks"]) {
177
+ await discoverItems(`${baseDir}/${dir}`, result, context, webhookHandler, config.verbose);
178
+ }
169
179
  // Discover eval definitions
170
180
  for (const dir of config.evalDirs ?? ["evals"]) {
171
181
  await discoverItems(`${baseDir}/${dir}`, result, context, evalHandler, config.verbose);
@@ -10,6 +10,8 @@ export { promptHandler } from "./prompt-handler.js";
10
10
  export { workflowHandler } from "./workflow-handler.js";
11
11
  export { workHandler } from "./work-handler.js";
12
12
  export { taskHandler } from "./task-handler.js";
13
+ export { scheduleHandler } from "./schedule-handler.js";
14
+ export { webhookHandler } from "./webhook-handler.js";
13
15
  export { evalHandler } from "./eval-handler.js";
14
16
  export { discoverSkills } from "./skill-handler.js";
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
@@ -10,5 +10,7 @@ export { promptHandler } from "./prompt-handler.js";
10
10
  export { workflowHandler } from "./workflow-handler.js";
11
11
  export { workHandler } from "./work-handler.js";
12
12
  export { taskHandler } from "./task-handler.js";
13
+ export { scheduleHandler } from "./schedule-handler.js";
14
+ export { webhookHandler } from "./webhook-handler.js";
13
15
  export { evalHandler } from "./eval-handler.js";
14
16
  export { discoverSkills } from "./skill-handler.js";
@@ -0,0 +1,4 @@
1
+ import type { ScheduleDefinition } from "../../schedule/index.js";
2
+ import type { DiscoveryHandler } from "../types.js";
3
+ export declare const scheduleHandler: DiscoveryHandler<ScheduleDefinition>;
4
+ //# sourceMappingURL=schedule-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/schedule-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,kBAAkB,CAMhE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { isScheduleDefinition } from "../../schedule/index.js";
2
+ export const scheduleHandler = {
3
+ typeName: "schedule",
4
+ validate: (item) => isScheduleDefinition(item),
5
+ getId: (definition) => definition.id,
6
+ register: (_id, definition) => definition,
7
+ getResultMap: (result) => result.schedules,
8
+ };
@@ -0,0 +1,4 @@
1
+ import type { WebhookDefinition } from "../../webhook/index.js";
2
+ import type { DiscoveryHandler } from "../types.js";
3
+ export declare const webhookHandler: DiscoveryHandler<WebhookDefinition>;
4
+ //# sourceMappingURL=webhook-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/webhook-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,iBAAiB,CAM9D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { isWebhookDefinition } from "../../webhook/index.js";
2
+ export const webhookHandler = {
3
+ typeName: "webhook",
4
+ validate: (item) => isWebhookDefinition(item),
5
+ getId: (definition) => definition.id,
6
+ register: (_id, definition) => definition,
7
+ getResultMap: (result) => result.webhooks,
8
+ };
@@ -10,6 +10,8 @@ export declare const DEFAULT_PROJECT_DISCOVERY_DIRS: {
10
10
  workflowDirs: string[];
11
11
  workDirs: string[];
12
12
  taskDirs: string[];
13
+ scheduleDirs: string[];
14
+ webhookDirs: string[];
13
15
  evalDirs: string[];
14
16
  };
15
17
  type ProjectDiscoveryConfigInput = {
@@ -27,6 +29,8 @@ export type ProjectDiscoveryConfig = DiscoveryConfig & {
27
29
  workflowDirs: string[];
28
30
  workDirs: string[];
29
31
  taskDirs: string[];
32
+ scheduleDirs: string[];
33
+ webhookDirs: string[];
30
34
  evalDirs: string[];
31
35
  };
32
36
  export declare function createProjectDiscoveryConfig(input: ProjectDiscoveryConfigInput): ProjectDiscoveryConfig;
@@ -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;;;;;;;;;;CAU1C,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,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAgBF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CA4CxB"}
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"}
@@ -7,6 +7,8 @@ export const DEFAULT_PROJECT_DISCOVERY_DIRS = {
7
7
  workflowDirs: ["workflows"],
8
8
  workDirs: ["work"],
9
9
  taskDirs: ["tasks"],
10
+ scheduleDirs: ["schedules"],
11
+ webhookDirs: ["webhooks"],
10
12
  evalDirs: ["evals"],
11
13
  };
12
14
  function isDiscoveryEnabled(discovery) {
@@ -30,6 +32,8 @@ export function createProjectDiscoveryConfig(input) {
30
32
  workflowDirs: resolveDiscoveryPaths(aiConfig?.workflows?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.workflowDirs),
31
33
  workDirs: resolveDiscoveryPaths(aiConfig?.work?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.workDirs),
32
34
  taskDirs: resolveDiscoveryPaths(aiConfig?.tasks?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.taskDirs),
35
+ scheduleDirs: resolveDiscoveryPaths(aiConfig?.schedules?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.scheduleDirs),
36
+ webhookDirs: resolveDiscoveryPaths(aiConfig?.webhooks?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.webhookDirs),
33
37
  evalDirs: resolveDiscoveryPaths(aiConfig?.evals?.discovery, DEFAULT_PROJECT_DISCOVERY_DIRS.evalDirs),
34
38
  fsAdapter: input.fsAdapter,
35
39
  verbose: input.verbose ?? false,
@@ -12,6 +12,8 @@ import type { WorkDefinition } from "../work/index.js";
12
12
  import type { Workflow } from "../workflow/types.js";
13
13
  import type { TaskDefinition } from "../task/types.js";
14
14
  import type { EvalDefinition } from "../eval/index.js";
15
+ import type { ScheduleDefinition } from "../schedule/index.js";
16
+ import type { WebhookDefinition } from "../webhook/index.js";
15
17
  import type { Platform } from "../platform/core-platform.js";
16
18
  import type { FileSystemAdapter } from "../platform/adapters/base.js";
17
19
  /**
@@ -39,6 +41,8 @@ export interface DiscoveryConfig {
39
41
  workflowDirs?: string[];
40
42
  workDirs?: string[];
41
43
  taskDirs?: string[];
44
+ scheduleDirs?: string[];
45
+ webhookDirs?: string[];
42
46
  evalDirs?: string[];
43
47
  verbose?: boolean;
44
48
  fsAdapter?: FileSystemAdapter;
@@ -55,6 +59,8 @@ export interface DiscoveryResult {
55
59
  workflows: Map<string, Workflow>;
56
60
  works: Map<string, WorkDefinition>;
57
61
  tasks: Map<string, TaskDefinition>;
62
+ schedules: Map<string, ScheduleDefinition>;
63
+ webhooks: Map<string, WebhookDefinition>;
58
64
  evals: Map<string, EvalDefinition>;
59
65
  errors: Array<{
60
66
  file: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const DEFAULT_VERYFRONT_CLOUD_MODEL = "veryfront-cloud/anthropic/claude-sonnet-4-6";
1
+ export declare const DEFAULT_VERYFRONT_CLOUD_MODEL = "veryfront-cloud/openai/gpt-5.4-nano";
2
2
  export declare const DEFAULT_VERYFRONT_CLOUD_EMBEDDING_MODEL = "veryfront-cloud/openai/text-embedding-3-small";
3
3
  export interface VeryfrontCloudBootstrap {
4
4
  apiBaseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/cloud/resolver.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,6BAA6B,gDAAgD,CAAC;AAC3F,eAAO,MAAM,uCAAuC,kDACH,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAyDD,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,SAAS,CAEjE;AAED,wBAAgB,0BAA0B,IAAI,uBAAuB,CAOpE;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAgBjD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAKtD;AAED,wBAAgB,sCAAsC,IAAI,MAAM,CAK/D"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/cloud/resolver.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AACnF,eAAO,MAAM,uCAAuC,kDACH,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAyDD,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,SAAS,CAEjE;AAED,wBAAgB,0BAA0B,IAAI,uBAAuB,CAOpE;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAgBjD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAKtD;AAED,wBAAgB,sCAAsC,IAAI,MAAM,CAK/D"}
@@ -15,7 +15,7 @@ function getApiBaseUrlEnv() {
15
15
  return getHostEnv("VERYFRONT_API_BASE_URL") ??
16
16
  getHostEnv("VERYFRONT_API_URL")?.replace("/graphql", "/api") ?? DEFAULT_API_BASE_URL;
17
17
  }
18
- export const DEFAULT_VERYFRONT_CLOUD_MODEL = "veryfront-cloud/anthropic/claude-sonnet-4-6";
18
+ export const DEFAULT_VERYFRONT_CLOUD_MODEL = "veryfront-cloud/openai/gpt-5.4-nano";
19
19
  export const DEFAULT_VERYFRONT_CLOUD_EMBEDDING_MODEL = "veryfront-cloud/openai/text-embedding-3-small";
20
20
  function getRuntimeBootstrap() {
21
21
  if (!isRuntimeConfigInitialized()) {
@@ -7,7 +7,7 @@
7
7
  * ```ts
8
8
  * import { resolveModel } from "veryfront/provider";
9
9
  *
10
- * const model = resolveModel("veryfront-cloud/openai/gpt-5.2");
10
+ * const model = resolveModel("veryfront-cloud/openai/gpt-5.4-nano");
11
11
  * ```
12
12
  */
13
13
  import "../../_dnt.polyfills.js";
@@ -7,7 +7,7 @@
7
7
  * ```ts
8
8
  * import { resolveModel } from "veryfront/provider";
9
9
  *
10
- * const model = resolveModel("veryfront-cloud/openai/gpt-5.2");
10
+ * const model = resolveModel("veryfront-cloud/openai/gpt-5.4-nano");
11
11
  * ```
12
12
  */
13
13
  import "../../_dnt.polyfills.js";
@@ -14,7 +14,7 @@ export type VeryfrontCloudChatModel = {
14
14
  thinkingBudgetTokens?: number;
15
15
  };
16
16
  /** Default value for Veryfront Cloud model ID. */
17
- export declare const DEFAULT_VERYFRONT_CLOUD_MODEL_ID = "opus";
17
+ export declare const DEFAULT_VERYFRONT_CLOUD_MODEL_ID = "gpt-5.4-nano";
18
18
  /** Shared Veryfront Cloud model prefix value. */
19
19
  export declare const VERYFRONT_CLOUD_MODEL_PREFIX = "veryfront-cloud/";
20
20
  export declare function isSupportedMistralModelId(modelId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/veryfront-cloud/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,4DAA4D;AAC5D,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,gCAAgC,SAAS,CAAC;AACvD,iDAAiD;AACjD,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAe/D,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElE;AAED,gDAAgD;AAChD,eAAO,MAAM,2BAA2B,EAAE,uBAAuB,EA2DhE,CAAC;AAEF,kCAAkC;AAClC,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAEvF;AAED,2CAA2C;AAC3C,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,8CAA8C;AAC9C,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,SAAS,CAGrC;AAED,qDAAqD;AACrD,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,GACd,wBAAwB,CAe1B;AAED,yDAAyD;AACzD,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,MAAM,GACd,wBAAwB,GAAG,SAAS,CAMtC;AAED,yCAAyC;AACzC,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBnE;AAED,iDAAiD;AACjD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,GAAG,SAAS,CAsBpB;AAED,+CAA+C;AAC/C,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,iCAAiC,GAAG,SAAS,CAc/C;AAED,qEAAqE;AACrE,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iCAAiC,GAAG,SAAS,GACtD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAoCrC;AAkBD,gDAAgD;AAChD,wBAAgB,mCAAmC,IAAI,KAAK,CAAC;IAC3D,QAAQ,EAAE,wBAAwB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC,CAAC,CAMD;AAED,gDAAgD;AAChD,eAAO,MAAM,kCAAkC,4CAAsC,CAAC"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/veryfront-cloud/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,4DAA4D;AAC5D,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,gCAAgC,iBAAiB,CAAC;AAC/D,iDAAiD;AACjD,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAe/D,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElE;AAED,gDAAgD;AAChD,eAAO,MAAM,2BAA2B,EAAE,uBAAuB,EAkEhE,CAAC;AAEF,kCAAkC;AAClC,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAEvF;AAED,2CAA2C;AAC3C,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,8CAA8C;AAC9C,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,SAAS,CAGrC;AAED,qDAAqD;AACrD,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,GACd,wBAAwB,CAe1B;AAED,yDAAyD;AACzD,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,MAAM,GACd,wBAAwB,GAAG,SAAS,CAMtC;AAED,yCAAyC;AACzC,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBnE;AAED,iDAAiD;AACjD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,GAAG,SAAS,CAsBpB;AAED,+CAA+C;AAC/C,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,iCAAiC,GAAG,SAAS,CAc/C;AAED,qEAAqE;AACrE,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iCAAiC,GAAG,SAAS,GACtD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAoCrC;AAkBD,gDAAgD;AAChD,wBAAgB,mCAAmC,IAAI,KAAK,CAAC;IAC3D,QAAQ,EAAE,wBAAwB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC,CAAC,CAMD;AAED,gDAAgD;AAChD,eAAO,MAAM,kCAAkC,4CAAsC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** Default value for Veryfront Cloud model ID. */
2
- export const DEFAULT_VERYFRONT_CLOUD_MODEL_ID = "opus";
2
+ export const DEFAULT_VERYFRONT_CLOUD_MODEL_ID = "gpt-5.4-nano";
3
3
  /** Shared Veryfront Cloud model prefix value. */
4
4
  export const VERYFRONT_CLOUD_MODEL_PREFIX = "veryfront-cloud/";
5
5
  const VERYFRONT_CLOUD_GATEWAY_MODEL_PROVIDER_PREFIXES = [
@@ -49,6 +49,13 @@ export const VERYFRONT_CLOUD_CHAT_MODELS = [
49
49
  name: "GPT-5.5",
50
50
  description: "Most capable OpenAI model",
51
51
  },
52
+ {
53
+ id: "gpt-5.4-nano",
54
+ modelId: "openai/gpt-5.4-nano",
55
+ provider: "openai",
56
+ name: "GPT-5.4 Nano",
57
+ description: "Default model for fast everyday tasks",
58
+ },
52
59
  {
53
60
  id: "gemini-3.1-pro-preview",
54
61
  modelId: "google-ai-studio/gemini-3.1-pro-preview",
@@ -0,0 +1,13 @@
1
+ import type { RuntimeAdapter } from "../platform/index.js";
2
+ import type { VeryfrontConfig } from "../config/index.js";
3
+ import { type SourceTriggerDiscoveryResult } from "../trigger/discovery.js";
4
+ import { type ScheduleDefinition } from "./types.js";
5
+ export interface ScheduleDiscoveryOptions {
6
+ projectDir: string;
7
+ adapter: RuntimeAdapter;
8
+ config?: VeryfrontConfig;
9
+ schedulesDir?: string;
10
+ }
11
+ export type ScheduleDiscoveryResult = SourceTriggerDiscoveryResult<ScheduleDefinition>;
12
+ export declare function discoverSchedules(options: ScheduleDiscoveryOptions): Promise<ScheduleDiscoveryResult>;
13
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/src/schedule/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;AAEvF,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CASlC"}
@@ -0,0 +1,12 @@
1
+ import { discoverSourceTriggers, } from "../trigger/discovery.js";
2
+ import { isScheduleDefinition } from "./types.js";
3
+ export async function discoverSchedules(options) {
4
+ return await discoverSourceTriggers({
5
+ projectDir: options.projectDir,
6
+ adapter: options.adapter,
7
+ config: options.config,
8
+ triggerDir: options.schedulesDir ?? "schedules",
9
+ sourceKind: "schedule",
10
+ validate: isScheduleDefinition,
11
+ });
12
+ }
@@ -0,0 +1,3 @@
1
+ import type { ScheduleConfig, ScheduleDefinition } from "./types.js";
2
+ export declare function schedule(config: ScheduleConfig): ScheduleDefinition;
3
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/schedule/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkBhG,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAsCnE"}
@@ -0,0 +1,48 @@
1
+ import { isTriggerTarget } from "../trigger/target.js";
2
+ import { assertSerializable, validateTriggerId } from "../trigger/validation.js";
3
+ const CONCURRENCY_POLICIES = new Set(["Allow", "Forbid", "Replace"]);
4
+ function requireString(value, label) {
5
+ if (typeof value !== "string" || value.trim().length === 0) {
6
+ throw new Error(`${label} is required.`);
7
+ }
8
+ return value;
9
+ }
10
+ function validatePositiveInteger(value, label) {
11
+ if (value === undefined)
12
+ return;
13
+ if (!Number.isInteger(value) || Number(value) <= 0) {
14
+ throw new Error(`${label} must be a positive integer.`);
15
+ }
16
+ }
17
+ export function schedule(config) {
18
+ const id = requireString(config.id, "Schedule id");
19
+ validateTriggerId(id, "Schedule");
20
+ const scheduleExpression = config.schedule ?? config.cron;
21
+ const normalizedSchedule = requireString(scheduleExpression, "Schedule cron");
22
+ if (!isTriggerTarget(config.target)) {
23
+ throw new Error("Schedule target must specify a valid task, workflow, or agent id.");
24
+ }
25
+ if (config.concurrencyPolicy !== undefined &&
26
+ !CONCURRENCY_POLICIES.has(config.concurrencyPolicy)) {
27
+ throw new Error("Schedule concurrencyPolicy must be Allow, Forbid, or Replace.");
28
+ }
29
+ validatePositiveInteger(config.timeoutSeconds, "Schedule timeoutSeconds");
30
+ validatePositiveInteger(config.backoffLimit, "Schedule backoffLimit");
31
+ validatePositiveInteger(config.maxRuns, "Schedule maxRuns");
32
+ assertSerializable(config.input, "Schedule input");
33
+ return {
34
+ id,
35
+ ...(config.name === undefined ? {} : { name: config.name }),
36
+ ...(config.description === undefined ? {} : { description: config.description }),
37
+ schedule: normalizedSchedule,
38
+ ...(config.timezone === undefined ? {} : { timezone: config.timezone }),
39
+ target: { kind: config.target.kind, id: config.target.id },
40
+ ...(config.input === undefined ? {} : { input: config.input }),
41
+ ...(config.timeoutSeconds === undefined ? {} : { timeoutSeconds: config.timeoutSeconds }),
42
+ ...(config.backoffLimit === undefined ? {} : { backoffLimit: config.backoffLimit }),
43
+ ...(config.concurrencyPolicy === undefined
44
+ ? {}
45
+ : { concurrencyPolicy: config.concurrencyPolicy }),
46
+ ...(config.maxRuns === undefined ? {} : { maxRuns: config.maxRuns }),
47
+ };
48
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Source-defined schedules for Veryfront projects.
3
+ *
4
+ * @module schedule
5
+ *
6
+ * @example Run a workflow every weekday morning
7
+ * ```ts
8
+ * import { schedule } from "veryfront/schedule";
9
+ *
10
+ * export default schedule({
11
+ * id: "daily-support-triage",
12
+ * schedule: "0 9 * * 1-5",
13
+ * timezone: "Europe/Stockholm",
14
+ * target: { kind: "workflow", id: "escalate-ticket" },
15
+ * input: { severity: "high" },
16
+ * });
17
+ * ```
18
+ */
19
+ import "../../_dnt.polyfills.js";
20
+ export { schedule } from "./factory.js";
21
+ export type { ScheduleConcurrencyPolicy, ScheduleConfig, ScheduleDefinition } from "./types.js";
22
+ export { isScheduleDefinition } from "./types.js";
23
+ export { discoverSchedules } from "./discovery.js";
24
+ export type { ScheduleDiscoveryOptions, ScheduleDiscoveryResult } from "./discovery.js";
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/schedule/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,YAAY,EAAE,yBAAyB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Source-defined schedules for Veryfront projects.
3
+ *
4
+ * @module schedule
5
+ *
6
+ * @example Run a workflow every weekday morning
7
+ * ```ts
8
+ * import { schedule } from "veryfront/schedule";
9
+ *
10
+ * export default schedule({
11
+ * id: "daily-support-triage",
12
+ * schedule: "0 9 * * 1-5",
13
+ * timezone: "Europe/Stockholm",
14
+ * target: { kind: "workflow", id: "escalate-ticket" },
15
+ * input: { severity: "high" },
16
+ * });
17
+ * ```
18
+ */
19
+ import "../../_dnt.polyfills.js";
20
+ export { schedule } from "./factory.js";
21
+ export { isScheduleDefinition } from "./types.js";
22
+ export { discoverSchedules } from "./discovery.js";
@@ -0,0 +1,21 @@
1
+ import type { TriggerTarget } from "../trigger/target.js";
2
+ export type ScheduleConcurrencyPolicy = "Allow" | "Forbid" | "Replace";
3
+ export interface ScheduleDefinition {
4
+ id: string;
5
+ name?: string;
6
+ description?: string;
7
+ schedule: string;
8
+ timezone?: string;
9
+ target: TriggerTarget;
10
+ input?: Record<string, unknown>;
11
+ timeoutSeconds?: number;
12
+ backoffLimit?: number;
13
+ concurrencyPolicy?: ScheduleConcurrencyPolicy;
14
+ maxRuns?: number;
15
+ }
16
+ export type ScheduleConfig = Omit<ScheduleDefinition, "schedule"> & {
17
+ cron?: string;
18
+ schedule?: string;
19
+ };
20
+ export declare function isScheduleDefinition(value: unknown): value is ScheduleDefinition;
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/schedule/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAShF"}
@@ -0,0 +1,9 @@
1
+ export function isScheduleDefinition(value) {
2
+ if (!value || typeof value !== "object")
3
+ return false;
4
+ const definition = value;
5
+ return (typeof definition.id === "string" &&
6
+ typeof definition.schedule === "string" &&
7
+ definition.target !== null &&
8
+ typeof definition.target === "object");
9
+ }