[WIP] workflow builder

This commit is contained in:
2026-02-23 20:45:10 -06:00
parent d629da32fa
commit 53a3fbb6b1
66 changed files with 7887 additions and 1608 deletions

View File

@@ -15,145 +15,140 @@ parameter_format: dotenv
# Output format: json (structured data parsing enabled)
output_format: json
# Action parameters schema
# Action parameters schema (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
pack_paths:
type: array
description: "List of pack directory paths to build environments for"
items:
type: string
minItems: 1
packs_base_dir:
pack_paths:
type: array
description: "List of pack directory paths to build environments for"
required: true
items:
type: string
description: "Base directory where packs are installed"
default: "/opt/attune/packs"
python_version:
type: string
description: "Python version to use for virtualenvs"
default: "3.11"
nodejs_version:
type: string
description: "Node.js version to use"
default: "20"
skip_python:
type: boolean
description: "Skip building Python environments"
default: false
skip_nodejs:
type: boolean
description: "Skip building Node.js environments"
default: false
force_rebuild:
type: boolean
description: "Force rebuild of existing environments"
default: false
timeout:
type: integer
description: "Timeout in seconds for building each environment"
default: 600
minimum: 60
maximum: 3600
required:
- pack_paths
minItems: 1
packs_base_dir:
type: string
description: "Base directory where packs are installed"
default: "/opt/attune/packs"
python_version:
type: string
description: "Python version to use for virtualenvs"
default: "3.11"
nodejs_version:
type: string
description: "Node.js version to use"
default: "20"
skip_python:
type: boolean
description: "Skip building Python environments"
default: false
skip_nodejs:
type: boolean
description: "Skip building Node.js environments"
default: false
force_rebuild:
type: boolean
description: "Force rebuild of existing environments"
default: false
timeout:
type: integer
description: "Timeout in seconds for building each environment"
default: 600
minimum: 60
maximum: 3600
# Output schema: describes the JSON structure written to stdout
# Note: stdout/stderr/exit_code are captured automatically by the execution system
output_schema:
type: object
properties:
built_environments:
type: array
description: "List of successfully built environments"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Pack directory path"
environments:
type: object
description: "Built environments for this pack"
properties:
python:
type: object
description: "Python environment details"
properties:
virtualenv_path:
type: string
description: "Path to Python virtualenv"
requirements_installed:
type: boolean
description: "Whether requirements.txt was installed"
package_count:
type: integer
description: "Number of packages installed"
python_version:
type: string
description: "Python version used"
nodejs:
type: object
description: "Node.js environment details"
properties:
node_modules_path:
type: string
description: "Path to node_modules directory"
dependencies_installed:
type: boolean
description: "Whether package.json was installed"
package_count:
type: integer
description: "Number of packages installed"
nodejs_version:
type: string
description: "Node.js version used"
duration_ms:
type: integer
description: "Time taken to build environments in milliseconds"
failed_environments:
type: array
description: "List of packs where environment build failed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Pack directory path"
runtime:
type: string
description: "Runtime that failed (python or nodejs)"
error:
type: string
description: "Error message"
summary:
built_environments:
type: array
description: "List of successfully built environments"
items:
type: object
description: "Summary of environment build process"
properties:
total_packs:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Pack directory path"
environments:
type: object
description: "Built environments for this pack"
properties:
python:
type: object
description: "Python environment details"
properties:
virtualenv_path:
type: string
description: "Path to Python virtualenv"
requirements_installed:
type: boolean
description: "Whether requirements.txt was installed"
package_count:
type: integer
description: "Number of packages installed"
python_version:
type: string
description: "Python version used"
nodejs:
type: object
description: "Node.js environment details"
properties:
node_modules_path:
type: string
description: "Path to node_modules directory"
dependencies_installed:
type: boolean
description: "Whether package.json was installed"
package_count:
type: integer
description: "Number of packages installed"
nodejs_version:
type: string
description: "Node.js version used"
duration_ms:
type: integer
description: "Total number of packs processed"
success_count:
type: integer
description: "Number of packs with successful builds"
failure_count:
type: integer
description: "Number of packs with failed builds"
python_envs_built:
type: integer
description: "Number of Python environments built"
nodejs_envs_built:
type: integer
description: "Number of Node.js environments built"
total_duration_ms:
type: integer
description: "Total time taken for all builds in milliseconds"
description: "Time taken to build environments in milliseconds"
failed_environments:
type: array
description: "List of packs where environment build failed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Pack directory path"
runtime:
type: string
description: "Runtime that failed (python or nodejs)"
error:
type: string
description: "Error message"
summary:
type: object
description: "Summary of environment build process"
properties:
total_packs:
type: integer
description: "Total number of packs processed"
success_count:
type: integer
description: "Number of packs with successful builds"
failure_count:
type: integer
description: "Number of packs with failed builds"
python_envs_built:
type: integer
description: "Number of Python environments built"
nodejs_envs_built:
type: integer
description: "Number of Node.js environments built"
total_duration_ms:
type: integer
description: "Total time taken for all builds in milliseconds"
# Tags for categorization
tags:

View File

@@ -15,101 +15,96 @@ parameter_format: dotenv
# Output format: json (structured data parsing enabled)
output_format: json
# Action parameters schema
# Action parameters schema (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
packs:
type: array
description: "List of packs to download (git URLs, HTTP URLs, or pack refs)"
items:
type: string
minItems: 1
destination_dir:
packs:
type: array
description: "List of packs to download (git URLs, HTTP URLs, or pack refs)"
items:
type: string
description: "Destination directory for downloaded packs"
registry_url:
type: string
description: "Pack registry URL for resolving pack refs (optional)"
default: "https://registry.attune.io/index.json"
ref_spec:
type: string
description: "Git reference to checkout (branch, tag, or commit) - applies to all git URLs"
timeout:
type: integer
description: "Download timeout in seconds per pack"
default: 300
minimum: 10
maximum: 3600
verify_ssl:
type: boolean
description: "Verify SSL certificates for HTTPS downloads"
default: true
api_url:
type: string
description: "Attune API URL for making registry lookups"
default: "http://localhost:8080"
required:
- packs
- destination_dir
minItems: 1
required: true
destination_dir:
type: string
description: "Destination directory for downloaded packs"
required: true
registry_url:
type: string
description: "Pack registry URL for resolving pack refs (optional)"
default: "https://registry.attune.io/index.json"
ref_spec:
type: string
description: "Git reference to checkout (branch, tag, or commit) - applies to all git URLs"
timeout:
type: integer
description: "Download timeout in seconds per pack"
default: 300
minimum: 10
maximum: 3600
verify_ssl:
type: boolean
description: "Verify SSL certificates for HTTPS downloads"
default: true
api_url:
type: string
description: "Attune API URL for making registry lookups"
default: "http://localhost:8080"
# Output schema: describes the JSON structure written to stdout
# Note: stdout/stderr/exit_code are captured automatically by the execution system
output_schema:
type: object
properties:
downloaded_packs:
type: array
description: "List of successfully downloaded packs"
items:
type: object
properties:
source:
type: string
description: "Original pack source (URL or ref)"
source_type:
type: string
description: "Type of source"
enum:
- git
- http
- registry
pack_path:
type: string
description: "Local filesystem path to downloaded pack"
pack_ref:
type: string
description: "Pack reference (from pack.yaml)"
pack_version:
type: string
description: "Pack version (from pack.yaml)"
git_commit:
type: string
description: "Git commit hash (for git sources)"
checksum:
type: string
description: "Directory checksum"
failed_packs:
type: array
description: "List of packs that failed to download"
items:
type: object
properties:
source:
type: string
description: "Pack source that failed"
error:
type: string
description: "Error message"
total_count:
type: integer
description: "Total number of packs requested"
success_count:
type: integer
description: "Number of packs successfully downloaded"
failure_count:
type: integer
description: "Number of packs that failed"
downloaded_packs:
type: array
description: "List of successfully downloaded packs"
items:
type: object
properties:
source:
type: string
description: "Original pack source (URL or ref)"
source_type:
type: string
description: "Type of source"
enum:
- git
- http
- registry
pack_path:
type: string
description: "Local filesystem path to downloaded pack"
pack_ref:
type: string
description: "Pack reference (from pack.yaml)"
pack_version:
type: string
description: "Pack version (from pack.yaml)"
git_commit:
type: string
description: "Git commit hash (for git sources)"
checksum:
type: string
description: "Directory checksum"
failed_packs:
type: array
description: "List of packs that failed to download"
items:
type: object
properties:
source:
type: string
description: "Pack source that failed"
error:
type: string
description: "Error message"
total_count:
type: integer
description: "Total number of packs requested"
success_count:
type: integer
description: "Number of packs successfully downloaded"
failure_count:
type: integer
description: "Number of packs that failed"
# Tags for categorization
tags:

View File

@@ -19,13 +19,11 @@ parameter_format: dotenv
# Output format: text (no structured data parsing)
output_format: text
# Action parameters schema (standard JSON Schema format)
# Action parameters schema (StackStorm-style: inline required/secret per parameter)
parameters:
type: object
properties:
message:
type: string
description: "Message to echo (empty string if not provided)"
message:
type: string
description: "Message to echo (empty string if not provided)"
# Output schema: not applicable for text output format
# The action outputs plain text to stdout

View File

@@ -15,124 +15,119 @@ parameter_format: dotenv
# Output format: json (structured data parsing enabled)
output_format: json
# Action parameters schema
# Action parameters schema (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
pack_paths:
type: array
description: "List of pack directory paths to analyze"
items:
type: string
minItems: 1
skip_validation:
type: boolean
description: "Skip validation of pack.yaml schema"
default: false
api_url:
pack_paths:
type: array
description: "List of pack directory paths to analyze"
items:
type: string
description: "Attune API URL for checking installed packs"
default: "http://localhost:8080"
required:
- pack_paths
minItems: 1
required: true
skip_validation:
type: boolean
description: "Skip validation of pack.yaml schema"
default: false
api_url:
type: string
description: "Attune API URL for checking installed packs"
default: "http://localhost:8080"
# Output schema: describes the JSON structure written to stdout
# Note: stdout/stderr/exit_code are captured automatically by the execution system
output_schema:
type: object
properties:
dependencies:
type: array
description: "List of pack dependencies that need to be installed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference (e.g., 'core', 'slack')"
version_spec:
type: string
description: "Version specification (e.g., '>=1.0.0', '^2.1.0')"
required_by:
type: string
description: "Pack that requires this dependency"
already_installed:
type: boolean
description: "Whether this dependency is already installed"
runtime_requirements:
dependencies:
type: array
description: "List of pack dependencies that need to be installed"
items:
type: object
description: "Runtime environment requirements by pack"
additionalProperties:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
python:
type: object
description: "Python runtime requirements"
properties:
version:
type: string
description: "Python version requirement"
requirements_file:
type: string
description: "Path to requirements.txt"
nodejs:
type: object
description: "Node.js runtime requirements"
properties:
version:
type: string
description: "Node.js version requirement"
package_file:
type: string
description: "Path to package.json"
missing_dependencies:
type: array
description: "Pack dependencies that are not yet installed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
version_spec:
type: string
description: "Version specification"
required_by:
type: string
description: "Pack that requires this dependency"
analyzed_packs:
type: array
description: "List of packs that were analyzed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Path to pack directory"
has_dependencies:
type: boolean
description: "Whether pack has dependencies"
dependency_count:
type: integer
description: "Number of dependencies"
errors:
type: array
description: "Errors encountered during analysis"
items:
type: object
properties:
pack_path:
type: string
description: "Pack path where error occurred"
error:
type: string
description: "Error message"
properties:
pack_ref:
type: string
description: "Pack reference (e.g., 'core', 'slack')"
version_spec:
type: string
description: "Version specification (e.g., '>=1.0.0', '^2.1.0')"
required_by:
type: string
description: "Pack that requires this dependency"
already_installed:
type: boolean
description: "Whether this dependency is already installed"
runtime_requirements:
type: object
description: "Runtime environment requirements by pack"
additionalProperties:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
python:
type: object
description: "Python runtime requirements"
properties:
version:
type: string
description: "Python version requirement"
requirements_file:
type: string
description: "Path to requirements.txt"
nodejs:
type: object
description: "Node.js runtime requirements"
properties:
version:
type: string
description: "Node.js version requirement"
package_file:
type: string
description: "Path to package.json"
missing_dependencies:
type: array
description: "Pack dependencies that are not yet installed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
version_spec:
type: string
description: "Version specification"
required_by:
type: string
description: "Pack that requires this dependency"
analyzed_packs:
type: array
description: "List of packs that were analyzed"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Path to pack directory"
has_dependencies:
type: boolean
description: "Whether pack has dependencies"
dependency_count:
type: integer
description: "Number of dependencies"
errors:
type: array
description: "Errors encountered during analysis"
items:
type: object
properties:
pack_path:
type: string
description: "Pack path where error occurred"
error:
type: string
description: "Error message"
# Tags for categorization
tags:

View File

@@ -20,107 +20,102 @@ parameter_format: dotenv
# Output format: json (structured data parsing enabled)
output_format: json
# Action parameters schema (standard JSON Schema format)
# Action parameters schema (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
url:
type: string
description: "URL to send the request to"
method:
type: string
description: "HTTP method to use"
default: "GET"
enum:
- GET
- POST
- PUT
- PATCH
- DELETE
- HEAD
- OPTIONS
headers:
type: object
description: "HTTP headers to include in the request"
default: {}
body:
type: string
description: "Request body (for POST, PUT, PATCH methods)"
json_body:
type: object
description: "JSON request body (alternative to body parameter)"
query_params:
type: object
description: "URL query parameters as key-value pairs"
default: {}
timeout:
type: integer
description: "Request timeout in seconds"
default: 30
minimum: 1
maximum: 300
verify_ssl:
type: boolean
description: "Verify SSL certificates"
default: true
auth_type:
type: string
description: "Authentication type"
enum:
- none
- basic
- bearer
auth_username:
type: string
description: "Username for basic authentication"
auth_password:
type: string
description: "Password for basic authentication"
secret: true
auth_token:
type: string
description: "Bearer token for bearer authentication"
secret: true
follow_redirects:
type: boolean
description: "Follow HTTP redirects"
default: true
max_redirects:
type: integer
description: "Maximum number of redirects to follow"
default: 10
required:
- url
url:
type: string
description: "URL to send the request to"
required: true
method:
type: string
description: "HTTP method to use"
default: "GET"
enum:
- GET
- POST
- PUT
- PATCH
- DELETE
- HEAD
- OPTIONS
headers:
type: object
description: "HTTP headers to include in the request"
default: {}
body:
type: string
description: "Request body (for POST, PUT, PATCH methods)"
json_body:
type: object
description: "JSON request body (alternative to body parameter)"
query_params:
type: object
description: "URL query parameters as key-value pairs"
default: {}
timeout:
type: integer
description: "Request timeout in seconds"
default: 30
minimum: 1
maximum: 300
verify_ssl:
type: boolean
description: "Verify SSL certificates"
default: true
auth_type:
type: string
description: "Authentication type"
enum:
- none
- basic
- bearer
auth_username:
type: string
description: "Username for basic authentication"
auth_password:
type: string
description: "Password for basic authentication"
secret: true
auth_token:
type: string
description: "Bearer token for bearer authentication"
secret: true
follow_redirects:
type: boolean
description: "Follow HTTP redirects"
default: true
max_redirects:
type: integer
description: "Maximum number of redirects to follow"
default: 10
# Output schema: describes the JSON structure written to stdout
# Note: stdout/stderr/exit_code are captured automatically by the execution system
output_schema:
type: object
properties:
status_code:
type: integer
description: "HTTP status code"
headers:
type: object
description: "Response headers"
body:
type: string
description: "Response body as text"
json:
type: object
description: "Parsed JSON response (if applicable, null otherwise)"
elapsed_ms:
type: integer
description: "Request duration in milliseconds"
url:
type: string
description: "Final URL after redirects"
success:
type: boolean
description: "Whether the request was successful (2xx status code)"
error:
type: string
description: "Error message if request failed (only present on failure)"
status_code:
type: integer
description: "HTTP status code"
headers:
type: object
description: "Response headers"
body:
type: string
description: "Response body as text"
json:
type: object
description: "Parsed JSON response (if applicable, null otherwise)"
elapsed_ms:
type: integer
description: "Request duration in milliseconds"
url:
type: string
description: "Final URL after redirects"
success:
type: boolean
description: "Whether the request was successful (2xx status code)"
error:
type: string
description: "Error message if request failed (only present on failure)"
# Tags for categorization
tags:

View File

@@ -19,19 +19,17 @@ parameter_format: dotenv
# Output format: text (no structured data parsing)
output_format: text
# Action parameters schema (standard JSON Schema format)
# Action parameters schema (StackStorm-style inline format)
parameters:
type: object
properties:
message:
type: string
description: "Optional message to log (for debugging)"
exit_code:
type: integer
description: "Exit code to return (default: 0 for success)"
default: 0
minimum: 0
maximum: 255
message:
type: string
description: "Optional message to log (for debugging)"
exit_code:
type: integer
description: "Exit code to return (default: 0 for success)"
default: 0
minimum: 0
maximum: 255
# Output schema: not applicable for text output format
# The action outputs plain text to stdout

View File

@@ -15,173 +15,168 @@ parameter_format: dotenv
# Output format: json (structured data parsing enabled)
output_format: json
# Action parameters schema
# Action parameters schema (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
pack_paths:
type: array
description: "List of pack directory paths to register"
items:
type: string
minItems: 1
packs_base_dir:
pack_paths:
type: array
description: "List of pack directory paths to register"
items:
type: string
description: "Base directory where packs are permanently stored"
default: "/opt/attune/packs"
skip_validation:
type: boolean
description: "Skip schema validation of pack components"
default: false
skip_tests:
type: boolean
description: "Skip running pack tests before registration"
default: false
force:
type: boolean
description: "Force registration even if pack already exists (will replace)"
default: false
api_url:
type: string
description: "Attune API URL for registration calls"
default: "http://localhost:8080"
api_token:
type: string
description: "API authentication token"
secret: true
required:
- pack_paths
minItems: 1
required: true
packs_base_dir:
type: string
description: "Base directory where packs are permanently stored"
default: "/opt/attune/packs"
skip_validation:
type: boolean
description: "Skip schema validation of pack components"
default: false
skip_tests:
type: boolean
description: "Skip running pack tests before registration"
default: false
force:
type: boolean
description: "Force registration even if pack already exists (will replace)"
default: false
api_url:
type: string
description: "Attune API URL for registration calls"
default: "http://localhost:8080"
api_token:
type: string
description: "API authentication token"
secret: true
# Output schema: describes the JSON structure written to stdout
# Note: stdout/stderr/exit_code are captured automatically by the execution system
output_schema:
type: object
properties:
registered_packs:
type: array
description: "List of successfully registered packs"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_id:
type: integer
description: "Database ID of registered pack"
pack_version:
type: string
description: "Pack version"
storage_path:
type: string
description: "Permanent storage path"
components_registered:
type: object
description: "Count of registered components by type"
properties:
actions:
type: integer
description: "Number of actions registered"
sensors:
type: integer
description: "Number of sensors registered"
triggers:
type: integer
description: "Number of triggers registered"
rules:
type: integer
description: "Number of rules registered"
workflows:
type: integer
description: "Number of workflows registered"
policies:
type: integer
description: "Number of policies registered"
test_result:
type: object
description: "Pack test results (if tests were run)"
properties:
status:
type: string
description: "Test status"
enum:
- passed
- failed
- skipped
total_tests:
type: integer
description: "Total number of tests"
passed:
type: integer
description: "Number of passed tests"
failed:
type: integer
description: "Number of failed tests"
validation_results:
type: object
description: "Component validation results"
properties:
valid:
type: boolean
description: "Whether all components are valid"
errors:
type: array
description: "Validation errors found"
items:
type: object
properties:
component_type:
type: string
description: "Type of component"
component_file:
type: string
description: "File with validation error"
error:
type: string
description: "Error message"
failed_packs:
type: array
description: "List of packs that failed to register"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Pack directory path"
error:
type: string
description: "Error message"
error_stage:
type: string
description: "Stage where error occurred"
enum:
- validation
- testing
- database_registration
- file_copy
- api_call
summary:
registered_packs:
type: array
description: "List of successfully registered packs"
items:
type: object
description: "Summary of registration process"
properties:
total_packs:
pack_ref:
type: string
description: "Pack reference"
pack_id:
type: integer
description: "Total number of packs processed"
success_count:
type: integer
description: "Number of successfully registered packs"
failure_count:
type: integer
description: "Number of failed registrations"
total_components:
type: integer
description: "Total number of components registered"
duration_ms:
type: integer
description: "Total registration time in milliseconds"
description: "Database ID of registered pack"
pack_version:
type: string
description: "Pack version"
storage_path:
type: string
description: "Permanent storage path"
components_registered:
type: object
description: "Count of registered components by type"
properties:
actions:
type: integer
description: "Number of actions registered"
sensors:
type: integer
description: "Number of sensors registered"
triggers:
type: integer
description: "Number of triggers registered"
rules:
type: integer
description: "Number of rules registered"
workflows:
type: integer
description: "Number of workflows registered"
policies:
type: integer
description: "Number of policies registered"
test_result:
type: object
description: "Pack test results (if tests were run)"
properties:
status:
type: string
description: "Test status"
enum:
- passed
- failed
- skipped
total_tests:
type: integer
description: "Total number of tests"
passed:
type: integer
description: "Number of passed tests"
failed:
type: integer
description: "Number of failed tests"
validation_results:
type: object
description: "Component validation results"
properties:
valid:
type: boolean
description: "Whether all components are valid"
errors:
type: array
description: "Validation errors found"
items:
type: object
properties:
component_type:
type: string
description: "Type of component"
component_file:
type: string
description: "File with validation error"
error:
type: string
description: "Error message"
failed_packs:
type: array
description: "List of packs that failed to register"
items:
type: object
properties:
pack_ref:
type: string
description: "Pack reference"
pack_path:
type: string
description: "Pack directory path"
error:
type: string
description: "Error message"
error_stage:
type: string
description: "Stage where error occurred"
enum:
- validation
- testing
- database_registration
- file_copy
- api_call
summary:
type: object
description: "Summary of registration process"
properties:
total_packs:
type: integer
description: "Total number of packs processed"
success_count:
type: integer
description: "Number of successfully registered packs"
failure_count:
type: integer
description: "Number of failed registrations"
total_components:
type: integer
description: "Total number of components registered"
duration_ms:
type: integer
description: "Total registration time in milliseconds"
# Tags for categorization
tags:

View File

@@ -19,21 +19,18 @@ parameter_format: dotenv
# Output format: text (no structured data parsing)
output_format: text
# Action parameters schema (standard JSON Schema format)
# Action parameters (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
seconds:
type: integer
description: "Number of seconds to sleep"
default: 1
minimum: 0
maximum: 3600
message:
type: string
description: "Optional message to display before sleeping"
required:
- seconds
seconds:
type: integer
description: "Number of seconds to sleep"
required: true
default: 1
minimum: 0
maximum: 3600
message:
type: string
description: "Optional message to display before sleeping"
# Output schema: not applicable for text output format
# The action outputs plain text to stdout

View File

@@ -11,20 +11,18 @@ email: "core@attune.io"
# Pack is a system pack (shipped with Attune)
system: true
# Pack configuration schema (minimal for core pack)
# Pack configuration schema (StackStorm-style flat format)
conf_schema:
type: object
properties:
max_action_timeout:
type: integer
description: "Maximum timeout for action execution in seconds"
default: 300
minimum: 1
maximum: 3600
enable_debug_logging:
type: boolean
description: "Enable debug logging for core pack actions"
default: false
max_action_timeout:
type: integer
description: "Maximum timeout for action execution in seconds"
default: 300
minimum: 1
maximum: 3600
enable_debug_logging:
type: boolean
description: "Enable debug logging for core pack actions"
default: false
# Default pack configuration
config:

View File

@@ -18,16 +18,14 @@ trigger_types:
- core.crontimer
- core.datetimetimer
# Sensor configuration schema (standard JSON Schema format)
# Sensor configuration schema (StackStorm-style flat format)
parameters:
type: object
properties:
check_interval_seconds:
type: integer
description: "How often to check if triggers should fire (in seconds)"
default: 1
minimum: 1
maximum: 60
check_interval_seconds:
type: integer
description: "How often to check if triggers should fire (in seconds)"
default: 1
minimum: 1
maximum: 60
# Poll interval (how often the sensor checks for events)
poll_interval: 1

View File

@@ -9,60 +9,54 @@ enabled: true
# Trigger type
type: cron
# Parameter schema - configuration for the trigger instance (standard JSON Schema format)
# Parameter schema - configuration for the trigger instance (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
expression:
type: string
description: "Cron expression in standard format (second minute hour day month weekday)"
timezone:
type: string
description: "Timezone for cron schedule (e.g., 'UTC', 'America/New_York')"
default: "UTC"
description:
type: string
description: "Human-readable description of the schedule"
required:
- expression
expression:
type: string
description: "Cron expression in standard format (second minute hour day month weekday)"
required: true
timezone:
type: string
description: "Timezone for cron schedule (e.g., 'UTC', 'America/New_York')"
default: "UTC"
description:
type: string
description: "Human-readable description of the schedule"
# Payload schema - data emitted when trigger fires
output:
type: object
properties:
type:
type: string
const: cron
description: "Trigger type identifier"
fired_at:
type: string
format: date-time
description: "Timestamp when the trigger fired"
scheduled_at:
type: string
format: date-time
description: "Timestamp when the trigger was scheduled to fire"
expression:
type: string
description: "The cron expression that triggered this event"
timezone:
type: string
description: "Timezone used for scheduling"
next_fire_at:
type: string
format: date-time
description: "Timestamp when the trigger will fire next"
execution_count:
type: integer
description: "Number of times this trigger has fired"
sensor_ref:
type: string
description: "Reference to the sensor that generated this event"
required:
- type
- fired_at
- scheduled_at
- expression
type:
type: string
const: cron
description: "Trigger type identifier"
required: true
fired_at:
type: string
format: date-time
description: "Timestamp when the trigger fired"
required: true
scheduled_at:
type: string
format: date-time
description: "Timestamp when the trigger was scheduled to fire"
required: true
expression:
type: string
description: "The cron expression that triggered this event"
required: true
timezone:
type: string
description: "Timezone used for scheduling"
next_fire_at:
type: string
format: date-time
description: "Timestamp when the trigger will fire next"
execution_count:
type: integer
description: "Number of times this trigger has fired"
sensor_ref:
type: string
description: "Reference to the sensor that generated this event"
# Tags for categorization
tags:

View File

@@ -9,52 +9,46 @@ enabled: true
# Trigger type
type: one_shot
# Parameter schema - configuration for the trigger instance (standard JSON Schema format)
# Parameter schema - configuration for the trigger instance (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
fire_at:
type: string
description: "ISO 8601 timestamp when the timer should fire (e.g., '2024-12-31T23:59:59Z')"
timezone:
type: string
description: "Timezone for the datetime (e.g., 'UTC', 'America/New_York')"
default: "UTC"
description:
type: string
description: "Human-readable description of when this timer fires"
required:
- fire_at
fire_at:
type: string
description: "ISO 8601 timestamp when the timer should fire (e.g., '2024-12-31T23:59:59Z')"
required: true
timezone:
type: string
description: "Timezone for the datetime (e.g., 'UTC', 'America/New_York')"
default: "UTC"
description:
type: string
description: "Human-readable description of when this timer fires"
# Payload schema - data emitted when trigger fires
output:
type: object
properties:
type:
type: string
const: one_shot
description: "Trigger type identifier"
fire_at:
type: string
format: date-time
description: "Scheduled fire time"
fired_at:
type: string
format: date-time
description: "Actual fire time"
timezone:
type: string
description: "Timezone used for scheduling"
delay_ms:
type: integer
description: "Delay in milliseconds between scheduled and actual fire time"
sensor_ref:
type: string
description: "Reference to the sensor that generated this event"
required:
- type
- fire_at
- fired_at
type:
type: string
const: one_shot
description: "Trigger type identifier"
required: true
fire_at:
type: string
format: date-time
description: "Scheduled fire time"
required: true
fired_at:
type: string
format: date-time
description: "Actual fire time"
required: true
timezone:
type: string
description: "Timezone used for scheduling"
delay_ms:
type: integer
description: "Delay in milliseconds between scheduled and actual fire time"
sensor_ref:
type: string
description: "Reference to the sensor that generated this event"
# Tags for categorization
tags:

View File

@@ -9,51 +9,45 @@ enabled: true
# Trigger type
type: interval
# Parameter schema - configuration for the trigger instance (standard JSON Schema format)
# Parameter schema - configuration for the trigger instance (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
unit:
type: string
enum:
- seconds
- minutes
- hours
description: "Time unit for the interval"
default: "seconds"
interval:
type: integer
description: "Number of time units between each trigger"
default: 60
required:
- unit
- interval
unit:
type: string
enum:
- seconds
- minutes
- hours
description: "Time unit for the interval"
default: "seconds"
required: true
interval:
type: integer
description: "Number of time units between each trigger"
default: 60
required: true
# Payload schema - data emitted when trigger fires
output:
type: object
properties:
type:
type: string
const: interval
description: "Trigger type identifier"
interval_seconds:
type: integer
description: "Total interval in seconds"
fired_at:
type: string
format: date-time
description: "Timestamp when the trigger fired"
execution_count:
type: integer
description: "Number of times this trigger has fired"
sensor_ref:
type: string
description: "Reference to the sensor that generated this event"
required:
- type
- interval_seconds
- fired_at
type:
type: string
const: interval
description: "Trigger type identifier"
required: true
interval_seconds:
type: integer
description: "Total interval in seconds"
required: true
fired_at:
type: string
format: date-time
description: "Timestamp when the trigger fired"
required: true
execution_count:
type: integer
description: "Number of times this trigger has fired"
sensor_ref:
type: string
description: "Reference to the sensor that generated this event"
# Tags for categorization
tags:

View File

@@ -7,55 +7,52 @@ label: "Install Packs"
description: "Install one or more packs from git repositories, HTTP archives, or pack registry with automatic dependency resolution"
version: "1.0.0"
# Input parameters
# Input parameters (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
packs:
type: array
description: "List of packs to install (git URLs, HTTP URLs, or pack refs like 'slack@1.0.0')"
items:
type: string
minItems: 1
ref_spec:
packs:
type: array
description: "List of packs to install (git URLs, HTTP URLs, or pack refs like 'slack@1.0.0')"
items:
type: string
description: "Git reference to checkout for git URLs (branch, tag, or commit)"
skip_dependencies:
type: boolean
description: "Skip installing pack dependencies"
default: false
skip_tests:
type: boolean
description: "Skip running pack tests before registration"
default: false
skip_env_build:
type: boolean
description: "Skip building runtime environments (Python/Node.js)"
default: false
force:
type: boolean
description: "Force installation even if packs already exist or tests fail"
default: false
registry_url:
type: string
description: "Pack registry URL for resolving pack refs"
default: "https://registry.attune.io/index.json"
packs_base_dir:
type: string
description: "Base directory for permanent pack storage"
default: "/opt/attune/packs"
api_url:
type: string
description: "Attune API URL"
default: "http://localhost:8080"
timeout:
type: integer
description: "Timeout in seconds for the entire workflow"
default: 1800
minimum: 300
maximum: 7200
required:
- packs
minItems: 1
required: true
ref_spec:
type: string
description: "Git reference to checkout for git URLs (branch, tag, or commit)"
skip_dependencies:
type: boolean
description: "Skip installing pack dependencies"
default: false
skip_tests:
type: boolean
description: "Skip running pack tests before registration"
default: false
skip_env_build:
type: boolean
description: "Skip building runtime environments (Python/Node.js)"
default: false
force:
type: boolean
description: "Force installation even if packs already exist or tests fail"
default: false
registry_url:
type: string
description: "Pack registry URL for resolving pack refs"
default: "https://registry.attune.io/index.json"
packs_base_dir:
type: string
description: "Base directory for permanent pack storage"
default: "/opt/attune/packs"
api_url:
type: string
description: "Attune API URL"
default: "http://localhost:8080"
timeout:
type: integer
description: "Timeout in seconds for the entire workflow"
default: 1800
minimum: 300
maximum: 7200
# Workflow variables
vars:
@@ -218,55 +215,53 @@ tasks:
# Output schema
output_schema:
type: object
properties:
registered_packs:
type: array
description: "Successfully registered packs"
items:
type: object
properties:
pack_ref:
type: string
pack_id:
type: integer
pack_version:
type: string
storage_path:
type: string
components_count:
type: integer
failed_packs:
type: array
description: "Packs that failed to install"
items:
type: object
properties:
source:
type: string
error:
type: string
stage:
type: string
installed_dependencies:
type: array
description: "Pack dependencies that were installed"
items:
type: string
summary:
registered_packs:
type: array
description: "Successfully registered packs"
items:
type: object
description: "Installation summary"
properties:
total_requested:
pack_ref:
type: string
pack_id:
type: integer
success_count:
type: integer
failure_count:
type: integer
dependencies_installed:
type: integer
duration_seconds:
pack_version:
type: string
storage_path:
type: string
components_count:
type: integer
failed_packs:
type: array
description: "Packs that failed to install"
items:
type: object
properties:
source:
type: string
error:
type: string
stage:
type: string
installed_dependencies:
type: array
description: "Pack dependencies that were installed"
items:
type: string
summary:
type: object
description: "Installation summary"
properties:
total_requested:
type: integer
success_count:
type: integer
failure_count:
type: integer
dependencies_installed:
type: integer
duration_seconds:
type: integer
# Metadata
metadata:

View File

@@ -19,36 +19,29 @@ parameter_format: json
# Output format: jsonl (each line is a JSON object, collected into array)
output_format: jsonl
# Action parameters schema (standard JSON Schema format)
# Action parameters schema (StackStorm-style with inline required/secret)
parameters:
type: object
properties:
count:
type: integer
description: "Number of items to generate"
default: 5
minimum: 1
maximum: 100
count:
type: integer
description: "Number of items to generate"
default: 5
minimum: 1
maximum: 100
# Output schema: array of objects (required for jsonl format)
# Each line in stdout will be parsed as JSON and collected into this array
output_schema:
type: array
items:
type: object
properties:
id:
type: integer
description: "Item identifier"
value:
type: string
description: "Item value"
timestamp:
type: string
description: "ISO 8601 timestamp"
required:
- id
- value
id:
type: integer
description: "Item identifier"
required: true
value:
type: string
description: "Item value"
required: true
timestamp:
type: string
description: "ISO 8601 timestamp"
# Tags for categorization
tags:

View File

@@ -14,12 +14,10 @@ enabled: true
# Configuration schema
conf_schema:
type: object
properties:
example_setting:
type: string
description: "Example configuration setting"
default: "default_value"
example_setting:
type: string
description: "Example configuration setting"
default: "default_value"
# Default pack configuration
config: