@exaudeus/workrail 1.12.1 → 1.13.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exaudeus/workrail",
3
- "version": "1.12.1",
3
+ "version": "1.13.0",
4
4
  "description": "Step-by-step workflow enforcement for AI agents via MCP",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://workflowlookup.io/schemas/workflow/v0.2.0",
3
+ "$id": "https://workflowlookup.io/schemas/workflow/v0.3.0",
4
4
  "title": "Workflow Schema",
5
5
  "description": "Schema for defining workflows in the Workflow Orchestration System",
6
6
  "type": "object",
@@ -124,6 +124,16 @@
124
124
  }
125
125
  },
126
126
  "additionalProperties": false
127
+ },
128
+ "features": {
129
+ "type": "array",
130
+ "description": "Compiler features to apply to this workflow (e.g. wr.features.memory_context). Features inject content into promptBlocks at compile time.",
131
+ "items": {
132
+ "type": "string",
133
+ "minLength": 1,
134
+ "maxLength": 128
135
+ },
136
+ "uniqueItems": true
127
137
  }
128
138
  },
129
139
  "required": [
@@ -179,6 +189,7 @@
179
189
  "id": { "$ref": "#/$defs/stepId", "description": "Unique identifier for the step" },
180
190
  "title": { "type": "string", "minLength": 1, "maxLength": 128 },
181
191
  "prompt": { "type": "string", "minLength": 1, "maxLength": 8192 },
192
+ "promptBlocks": { "$ref": "#/$defs/promptBlocks" },
182
193
  "agentRole": { "type": "string", "minLength": 10, "maxLength": 1024 },
183
194
  "guidance": { "type": "array", "items": { "type": "string" } },
184
195
  "askForFiles": { "type": "boolean", "default": false },
@@ -190,9 +201,10 @@
190
201
  "notesOptional": { "type": "boolean", "description": "When true, output.notesMarkdown is not required for this step. Steps with outputContract are automatically exempt. Use sparingly for mechanical steps with no substantive work to document." },
191
202
  "functionDefinitions": { "type": "array", "items": { "$ref": "#/$defs/functionDefinition" } },
192
203
  "functionCalls": { "type": "array", "items": { "$ref": "#/$defs/functionCall" } },
193
- "functionReferences": { "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*\\(\\)$" } }
204
+ "functionReferences": { "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*\\(\\)$" } },
205
+ "templateCall": { "$ref": "#/$defs/templateCall" }
194
206
  },
195
- "required": ["id", "title", "prompt"],
207
+ "required": ["id", "title"],
196
208
  "additionalProperties": false
197
209
  },
198
210
  "loopStep": {
@@ -589,6 +601,83 @@
589
601
  },
590
602
  "required": ["name", "args"],
591
603
  "additionalProperties": false
604
+ },
605
+ "promptBlocks": {
606
+ "type": "object",
607
+ "description": "Structured prompt blocks. Alternative to raw prompt string. Rendered into prompt during compilation in deterministic order: goal, constraints, procedure, outputRequired, verify.",
608
+ "properties": {
609
+ "goal": { "$ref": "#/$defs/promptValue" },
610
+ "constraints": {
611
+ "type": "array",
612
+ "items": { "$ref": "#/$defs/promptValue" }
613
+ },
614
+ "procedure": {
615
+ "type": "array",
616
+ "items": { "$ref": "#/$defs/promptValue" }
617
+ },
618
+ "outputRequired": {
619
+ "type": "object",
620
+ "description": "Key-value pairs describing required outputs",
621
+ "additionalProperties": { "type": "string" }
622
+ },
623
+ "verify": {
624
+ "type": "array",
625
+ "items": { "$ref": "#/$defs/promptValue" }
626
+ }
627
+ },
628
+ "additionalProperties": false
629
+ },
630
+ "promptValue": {
631
+ "description": "A prompt value: either a plain string or an array of prompt parts (text and refs).",
632
+ "oneOf": [
633
+ { "type": "string" },
634
+ {
635
+ "type": "array",
636
+ "items": { "$ref": "#/$defs/promptPart" }
637
+ }
638
+ ]
639
+ },
640
+ "promptPart": {
641
+ "description": "A single part of a prompt value: literal text or a reference to a canonical WorkRail snippet.",
642
+ "oneOf": [
643
+ {
644
+ "type": "object",
645
+ "properties": {
646
+ "kind": { "const": "text" },
647
+ "text": { "type": "string" }
648
+ },
649
+ "required": ["kind", "text"],
650
+ "additionalProperties": false
651
+ },
652
+ {
653
+ "type": "object",
654
+ "properties": {
655
+ "kind": { "const": "ref" },
656
+ "refId": { "type": "string", "minLength": 1 }
657
+ },
658
+ "required": ["kind", "refId"],
659
+ "additionalProperties": false
660
+ }
661
+ ]
662
+ },
663
+ "templateCall": {
664
+ "type": "object",
665
+ "description": "Template call: expands this step into one or more steps at compile time.",
666
+ "properties": {
667
+ "templateId": {
668
+ "type": "string",
669
+ "description": "The template ID to expand (e.g. wr.templates.capability_probe)",
670
+ "minLength": 1,
671
+ "maxLength": 128
672
+ },
673
+ "args": {
674
+ "type": "object",
675
+ "description": "Arguments to pass to the template",
676
+ "additionalProperties": true
677
+ }
678
+ },
679
+ "required": ["templateId"],
680
+ "additionalProperties": false
592
681
  }
593
682
  }
594
683
  }