@sweny-ai/core 0.1.101 → 0.1.103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -275,6 +275,12 @@ export interface Node {
275
275
  eval_policy?: EvalPolicy;
276
276
  /** Default model for judge evaluators on this node. Overrides workflow-level `judge_model`. */
277
277
  judge_model?: string;
278
+ /**
279
+ * Execution model for this node's AI invocation. Resolves as
280
+ * `node.model ?? workflow.model ?? client default`. Free-text passthrough
281
+ * (no registry), consistent with `judge_model`.
282
+ */
283
+ model?: string;
278
284
  /** Machine-checked pre-conditions. Enforced by the executor before the LLM runs. */
279
285
  requires?: NodeRequires;
280
286
  /** Node-local retry on eval failure (with optional autonomous reflection). */
@@ -301,8 +307,14 @@ export interface Edge {
301
307
  /**
302
308
  * Workflow type discriminator. Cloud uses this to render runs in a
303
309
  * type-specific way. Adding a value requires a corresponding renderer.
310
+ *
311
+ * Single source of truth: the Zod enum (`workflowTypeZ`), the published
312
+ * JSON-schema enum (`workflowJsonSchema.properties.workflow_type.enum`),
313
+ * and the `WorkflowType` TS type are all derived from this tuple. See the
314
+ * contract test in `__tests__/contract-tests.test.ts` asserting they agree.
304
315
  */
305
- export type WorkflowType = "pr_review" | "e2e_test" | "content_generation" | "monitor" | "data_sync" | "generic";
316
+ export declare const WORKFLOW_TYPES: readonly ["pr_review", "e2e_test", "content_generation", "monitor", "data_sync", "generic"];
317
+ export type WorkflowType = (typeof WORKFLOW_TYPES)[number];
306
318
  /** A complete workflow definition. Pure data, fully serializable. */
307
319
  export interface Workflow {
308
320
  id: string;
@@ -320,6 +332,8 @@ export interface Workflow {
320
332
  context?: _Source[];
321
333
  /** Default model for judge evaluators across the workflow. Overridable per-node and per-evaluator. */
322
334
  judge_model?: string;
335
+ /** Default execution model for every node. Overridable per-node. Free-text passthrough. */
336
+ model?: string;
323
337
  /** Soft cap on expected judge calls per workflow run. Warning at load time when exceeded. */
324
338
  judge_budget?: number;
325
339
  /**
@@ -409,6 +423,23 @@ export type ExecutionEvent = {
409
423
  attempt: number;
410
424
  reason: string;
411
425
  preamble: string;
426
+ }
427
+ /**
428
+ * Non-fatal contract violation surfaced during node execution. Currently
429
+ * emitted when a source node declares output properties that the agent
430
+ * did not emit. The route eval view fills the missing keys with `null`
431
+ * so the LLM evaluator can't ghost-match conditions like "is undefined"
432
+ * or "is 0", but the operator still wants a loud signal in the log
433
+ * stream.
434
+ *
435
+ * `fields` lists the declared property names that were missing from the
436
+ * emitted data. `reason` is a short human-readable summary.
437
+ */
438
+ | {
439
+ type: "node:warning";
440
+ node: string;
441
+ reason: string;
442
+ fields: string[];
412
443
  } | {
413
444
  type: "route";
414
445
  from: string;
@@ -466,6 +497,12 @@ export interface Claude {
466
497
  maxTurns?: number;
467
498
  /** Built-in SDK tool names to disallow for this node (e.g. ["Bash"]). */
468
499
  disallowedTools?: string[];
500
+ /** Per-node execution model. Overrides the client default when set. Absent = no SDK model option emitted. */
501
+ model?: string;
502
+ /** Abort the query after this many ms. Default: no timeout (back-compat). */
503
+ timeoutMs?: number;
504
+ /** Caller-supplied abort signal. Aborting it interrupts the query. */
505
+ signal?: AbortSignal;
469
506
  }): Promise<NodeResult>;
470
507
  /** Evaluate a routing condition — pick one of N choices */
471
508
  evaluate(opts: {
@@ -475,6 +512,10 @@ export interface Claude {
475
512
  id: string;
476
513
  description: string;
477
514
  }[];
515
+ /** Abort the query after this many ms. Default: no timeout (back-compat). */
516
+ timeoutMs?: number;
517
+ /** Caller-supplied abort signal. Aborting it interrupts the query. */
518
+ signal?: AbortSignal;
478
519
  }): Promise<string>;
479
520
  /**
480
521
  * Single-completion free-text query. No tools, no output schema.
@@ -488,6 +529,10 @@ export interface Claude {
488
529
  instruction: string;
489
530
  context: Record<string, unknown>;
490
531
  model?: string;
532
+ /** Abort the query after this many ms. Default: no timeout (back-compat). */
533
+ timeoutMs?: number;
534
+ /** Caller-supplied abort signal. Aborting it interrupts the query. */
535
+ signal?: AbortSignal;
491
536
  }): Promise<string>;
492
537
  }
493
538
  export interface McpServerConfig {
package/dist/types.js CHANGED
@@ -50,6 +50,23 @@ export const EVAL_POLICIES = ["all_pass", "any_pass", "weighted"];
50
50
  export const REQUIRES_ON_FAIL = ["fail", "skip"];
51
51
  /** MCP server transport type. Inferred from command/url when omitted. */
52
52
  export const MCP_TRANSPORTS = ["stdio", "http"];
53
+ /**
54
+ * Workflow type discriminator. Cloud uses this to render runs in a
55
+ * type-specific way. Adding a value requires a corresponding renderer.
56
+ *
57
+ * Single source of truth: the Zod enum (`workflowTypeZ`), the published
58
+ * JSON-schema enum (`workflowJsonSchema.properties.workflow_type.enum`),
59
+ * and the `WorkflowType` TS type are all derived from this tuple. See the
60
+ * contract test in `__tests__/contract-tests.test.ts` asserting they agree.
61
+ */
62
+ export const WORKFLOW_TYPES = [
63
+ "pr_review",
64
+ "e2e_test",
65
+ "content_generation",
66
+ "monitor",
67
+ "data_sync",
68
+ "generic",
69
+ ];
53
70
  export const consoleLogger = {
54
71
  info: (msg, data) => console.log(`[info] ${msg}`, data ?? ""),
55
72
  warn: (msg, data) => console.warn(`[warn] ${msg}`, data ?? ""),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sweny-ai/core",
3
- "version": "0.1.101",
3
+ "version": "0.1.103",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "sweny": "./dist/cli/main.js"
@@ -61,11 +61,11 @@
61
61
  "zod": "^3.25.76"
62
62
  },
63
63
  "devDependencies": {
64
- "@anthropic-ai/claude-code": "^2.1.114",
65
- "ajv": "^8.18.0",
64
+ "@anthropic-ai/claude-code": "^2.1.150",
65
+ "ajv": "^8.20.0",
66
66
  "esbuild": "^0.28.0",
67
67
  "prettier": "^3.8.3",
68
- "vitest": "^4.1.4"
68
+ "vitest": "^4.1.7"
69
69
  },
70
70
  "publishConfig": {
71
71
  "access": "public"