diff --git a/bonsai/Bonsai.config b/bonsai/Bonsai.config
index aa5ce67..4380150 100644
--- a/bonsai/Bonsai.config
+++ b/bonsai/Bonsai.config
@@ -4,7 +4,8 @@
-
+
+
@@ -89,6 +90,7 @@
+
@@ -137,7 +139,8 @@
-
+
+
diff --git a/src/DataSchemas/aind_behavior_just_frames.json b/src/DataSchemas/aind_behavior_just_frames.json
index 4dbce36..a007f66 100644
--- a/src/DataSchemas/aind_behavior_just_frames.json
+++ b/src/DataSchemas/aind_behavior_just_frames.json
@@ -3,7 +3,7 @@
"AindJustFramesRig": {
"properties": {
"aind_behavior_services_pkg_version": {
- "default": "0.13.0",
+ "default": "0.13.7",
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
"title": "aind_behavior_services package version",
"type": "string"
@@ -266,7 +266,7 @@
"SatelliteRig": {
"properties": {
"aind_behavior_services_pkg_version": {
- "default": "0.13.0",
+ "default": "0.13.7",
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
"title": "aind_behavior_services package version",
"type": "string"
@@ -344,14 +344,14 @@
"Session": {
"properties": {
"aind_behavior_services_pkg_version": {
- "default": "0.13.0",
+ "default": "0.13.7",
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
"title": "aind_behavior_services package version",
"type": "string"
},
"version": {
- "const": "0.13.0",
- "default": "0.13.0",
+ "const": "0.13.7",
+ "default": "0.13.7",
"title": "Version",
"type": "string"
},
@@ -916,13 +916,13 @@
"type": "integer"
},
"container_extension": {
- "default": "mp4",
+ "default": "mkv",
"description": "Container extension",
"title": "Container Extension",
"type": "string"
},
"output_arguments": {
- "default": "-vf \"scale=out_color_matrix=bt709:out_range=full,format=bgr24,scale=out_range=full\" -c:v h264_nvenc -pix_fmt yuv420p -color_range full -colorspace bt709 -color_trc linear -tune hq -preset p4 -rc vbr -cq 12 -b:v 0M -metadata author=\"Allen Institute for Neural Dynamics\" -maxrate 700M -bufsize 350M",
+ "default": "-vf \"scale=out_range=full,setparams=range=full:colorspace=bt709:color_primaries=bt709:color_trc=linear\" -c:v h264_nvenc -pix_fmt yuv420p -color_range full -colorspace bt709 -color_trc linear -tune hq -preset p3 -rc vbr -cq 18 -b:v 0M -metadata author=\"Allen Institute for Neural Dynamics\" -maxrate 700M -bufsize 350M -f matroska -write_crc32 0",
"description": "Output arguments",
"title": "Output Arguments",
"type": "string"
diff --git a/src/DataSchemas/aind_physiology_fip_message_protocol.json b/src/DataSchemas/aind_physiology_fip_message_protocol.json
index b1b45bf..ac31fb9 100644
--- a/src/DataSchemas/aind_physiology_fip_message_protocol.json
+++ b/src/DataSchemas/aind_physiology_fip_message_protocol.json
@@ -29,7 +29,8 @@
"status"
],
"title": "HeartbeatPayload",
- "type": "object"
+ "type": "object",
+ "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.HeartbeatPayload"
},
"HeartbeatStatus": {
"description": "Enumeration of possible heartbeat status values.\n\nRepresents the health status of a system component,\nwith higher values indicating more severe issues.\n\nExamples:\n ```python\n HeartbeatStatus.OK # \n HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True\n int(HeartbeatStatus.ERROR) # 2\n ```",
@@ -46,7 +47,8 @@
"Warning",
"Error",
"Critical"
- ]
+ ],
+ "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.HeartbeatStatus"
},
"LogLevel": {
"description": "Enumeration of log levels for the logging system.\n\nFollows standard Python logging levels with integer values\nthat allow for easy comparison and filtering.\n\nExamples:\n ```python\n LogLevel.ERROR > LogLevel.WARNING # True\n LogLevel.DEBUG.value # 10\n str(LogLevel.INFO) # 'LogLevel.INFO'\n ```",
@@ -67,7 +69,8 @@
"Info",
"Debug",
"Notset"
- ]
+ ],
+ "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.LogLevel"
},
"LogPayload": {
"description": "Payload for log messages containing logging information.\n\nThis payload carries log data including the message content,\nseverity level, optional context, and application version.\n\nAttributes:\n message: The actual log message text\n level: Severity level of the log entry\n context: Optional additional data related to the log\n application_version: Version of the application generating the log\n\nExamples:\n ```python\n log_payload = LogPayload(\n message=\"System startup complete\",\n level=LogLevel.INFO,\n context={\"operator\": \"John Doe\"},\n application_version=\"1.0.0\"\n )\n print(log_payload.level) # LogLevel.INFO\n ```",
@@ -117,7 +120,8 @@
"message"
],
"title": "LogPayload",
- "type": "object"
+ "type": "object",
+ "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.LogPayload"
},
"Message": {
"$ref": "#/$defs/_Message_Any_",
@@ -131,7 +135,8 @@
"event"
],
"title": "MessageType",
- "type": "string"
+ "type": "string",
+ "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType"
},
"RegisteredMessages": {
"properties": {
diff --git a/src/Extensions.csproj b/src/Extensions.csproj
index 47de4a4..9456ef7 100644
--- a/src/Extensions.csproj
+++ b/src/Extensions.csproj
@@ -12,6 +12,7 @@
+
\ No newline at end of file
diff --git a/src/Extensions/AindBehaviorJustFrames.Generated.cs b/src/Extensions/AindBehaviorJustFrames.Generated.cs
index 665be64..44d5b96 100644
--- a/src/Extensions/AindBehaviorJustFrames.Generated.cs
+++ b/src/Extensions/AindBehaviorJustFrames.Generated.cs
@@ -41,7 +41,7 @@ public partial class AindJustFramesRig
public AindJustFramesRig()
{
- _aindBehaviorServicesPkgVersion = "0.13.0";
+ _aindBehaviorServicesPkgVersion = "0.13.7";
_version = "0.5.1";
_harpBehavior = new HarpBehavior();
_satelliteRigs = new System.Collections.Generic.List();
@@ -873,7 +873,7 @@ public partial class SatelliteRig
public SatelliteRig()
{
- _aindBehaviorServicesPkgVersion = "0.13.0";
+ _aindBehaviorServicesPkgVersion = "0.13.7";
_version = "0.5.1";
_zmqProtocolConfig = new NetworkConfig();
_zmqTriggerConfig = new NetworkConfig();
@@ -1126,8 +1126,8 @@ public partial class Session
public Session()
{
- _aindBehaviorServicesPkgVersion = "0.13.0";
- _version = "0.13.0";
+ _aindBehaviorServicesPkgVersion = "0.13.7";
+ _version = "0.13.7";
_experimenter = new System.Collections.Generic.List();
_allowDirtyRepo = false;
_skipHardwareValidation = false;
@@ -2213,8 +2213,8 @@ public partial class VideoWriterFfmpeg : VideoWriter
public VideoWriterFfmpeg()
{
_frameRate = 30;
- _containerExtension = "mp4";
- _outputArguments = "-vf \"scale=out_color_matrix=bt709:out_range=full,format=bgr24,scale=out_range=full\" -c:v h264_nvenc -pix_fmt yuv420p -color_range full -colorspace bt709 -color_trc linear -tune hq -preset p4 -rc vbr -cq 12 -b:v 0M -metadata author=\"Allen Institute for Neural Dynamics\" -maxrate 700M -bufsize 350M";
+ _containerExtension = "mkv";
+ _outputArguments = "-vf \"scale=out_range=full,setparams=range=full:colorspace=bt709:color_primaries=bt709:color_trc=linear\" -c:v h264_nvenc -pix_fmt yuv420p -color_range full -colorspace bt709 -color_trc linear -tune hq -preset p3 -rc vbr -cq 18 -b:v 0M -metadata author=\"Allen Institute for Neural Dynamics\" -maxrate 700M -bufsize 350M -f matroska -write_crc32 0";
_inputArguments = "-colorspace bt709 -color_primaries bt709 -color_range full -color_trc linear";
}
diff --git a/src/Extensions/AindPhysiologyFipMessageProtocol.Generated.cs b/src/Extensions/AindPhysiologyFipMessageProtocol.Generated.cs
index 74253e5..04bef8e 100644
--- a/src/Extensions/AindPhysiologyFipMessageProtocol.Generated.cs
+++ b/src/Extensions/AindPhysiologyFipMessageProtocol.Generated.cs
@@ -9,376 +9,13 @@ namespace AindJustFramesSchemas.MessageProtocol
{
#pragma warning disable // Disable all warnings
- ///
- /// Payload for heartbeat messages indicating system health status.
- ///
- ///Heartbeat messages are used to monitor the health and availability
- ///of system components. They include a status indicator and optional
- ///context information.
- ///
- ///Attributes:
- /// context: Optional additional data about the system state
- /// status: Current health status of the component
- ///
- ///Examples:
- /// ```python
- /// heartbeat = HeartbeatPayload(
- /// status=HeartbeatStatus.OK,
- /// context={"cpu_usage": 0.25, "memory_usage": 0.60}
- /// )
- /// print(heartbeat.status) # HeartbeatStatus.OK
- ///
- /// warning_heartbeat = HeartbeatPayload(
- /// status=HeartbeatStatus.WARNING,
- /// context={"disk_space_low": True}
- /// )
- /// ```
- ///
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
- [System.ComponentModel.DescriptionAttribute(@"Payload for heartbeat messages indicating system health status.
-
- Heartbeat messages are used to monitor the health and availability
- of system components. They include a status indicator and optional
- context information.
-
- Attributes:
- context: Optional additional data about the system state
- status: Current health status of the component
-
- Examples:
- ```python
- heartbeat = HeartbeatPayload(
- status=HeartbeatStatus.OK,
- context={""cpu_usage"": 0.25, ""memory_usage"": 0.60}
- )
- print(heartbeat.status) # HeartbeatStatus.OK
-
- warning_heartbeat = HeartbeatPayload(
- status=HeartbeatStatus.WARNING,
- context={""disk_space_low"": True}
- )
- ```")]
- [Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)]
- [Bonsai.CombinatorAttribute(MethodName="Generate")]
- public partial class HeartbeatPayload : RegisteredPayload
- {
-
- private object _context;
-
- private HeartbeatStatus _status;
-
- public HeartbeatPayload()
- {
- }
-
- protected HeartbeatPayload(HeartbeatPayload other) :
- base(other)
- {
- _context = other._context;
- _status = other._status;
- }
-
- ///
- /// Additional context for the heartbeat message.
- ///
- [System.Xml.Serialization.XmlIgnoreAttribute()]
- [Newtonsoft.Json.JsonPropertyAttribute("context")]
- [System.ComponentModel.DescriptionAttribute("Additional context for the heartbeat message.")]
- public object Context
- {
- get
- {
- return _context;
- }
- set
- {
- _context = value;
- }
- }
-
- ///
- /// The status of the heartbeat message
- ///
- [System.Xml.Serialization.XmlIgnoreAttribute()]
- [Newtonsoft.Json.JsonPropertyAttribute("status", Required=Newtonsoft.Json.Required.Always)]
- [System.ComponentModel.DescriptionAttribute("The status of the heartbeat message")]
- public HeartbeatStatus Status
- {
- get
- {
- return _status;
- }
- set
- {
- _status = value;
- }
- }
-
- public System.IObservable Generate()
- {
- return System.Reactive.Linq.Observable.Defer(() => System.Reactive.Linq.Observable.Return(new HeartbeatPayload(this)));
- }
-
- public System.IObservable Generate(System.IObservable source)
- {
- return System.Reactive.Linq.Observable.Select(source, _ => new HeartbeatPayload(this));
- }
-
- protected override bool PrintMembers(System.Text.StringBuilder stringBuilder)
- {
- if (base.PrintMembers(stringBuilder))
- {
- stringBuilder.Append(", ");
- }
- stringBuilder.Append("Context = " + _context + ", ");
- stringBuilder.Append("Status = " + _status);
- return true;
- }
- }
-
-
- ///
- /// Enumeration of possible heartbeat status values.
- ///
- ///Represents the health status of a system component,
- ///with higher values indicating more severe issues.
- ///
- ///Examples:
- /// ```python
- /// HeartbeatStatus.OK #
- /// HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True
- /// int(HeartbeatStatus.ERROR) # 2
- /// ```
- ///
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
- public enum HeartbeatStatus
- {
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="0")]
- Ok = 0,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="1")]
- Warning = 1,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="2")]
- Error = 2,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="3")]
- Critical = 3,
- }
-
-
- ///
- /// Enumeration of log levels for the logging system.
- ///
- ///Follows standard Python logging levels with integer values
- ///that allow for easy comparison and filtering.
- ///
- ///Examples:
- /// ```python
- /// LogLevel.ERROR > LogLevel.WARNING # True
- /// LogLevel.DEBUG.value # 10
- /// str(LogLevel.INFO) # 'LogLevel.INFO'
- /// ```
- ///
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
- public enum LogLevel
- {
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="50")]
- Critical = 50,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="40")]
- Error = 40,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="30")]
- Warning = 30,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="20")]
- Info = 20,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="10")]
- Debug = 10,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="0")]
- Notset = 0,
- }
-
-
- ///
- /// Payload for log messages containing logging information.
- ///
- ///This payload carries log data including the message content,
- ///severity level, optional context, and application version.
- ///
- ///Attributes:
- /// message: The actual log message text
- /// level: Severity level of the log entry
- /// context: Optional additional data related to the log
- /// application_version: Version of the application generating the log
- ///
- ///Examples:
- /// ```python
- /// log_payload = LogPayload(
- /// message="System startup complete",
- /// level=LogLevel.INFO,
- /// context={"operator": "John Doe"},
- /// application_version="1.0.0"
- /// )
- /// print(log_payload.level) # LogLevel.INFO
- /// ```
- ///
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
- [System.ComponentModel.DescriptionAttribute(@"Payload for log messages containing logging information.
-
- This payload carries log data including the message content,
- severity level, optional context, and application version.
-
- Attributes:
- message: The actual log message text
- level: Severity level of the log entry
- context: Optional additional data related to the log
- application_version: Version of the application generating the log
-
- Examples:
- ```python
- log_payload = LogPayload(
- message=""System startup complete"",
- level=LogLevel.INFO,
- context={""operator"": ""John Doe""},
- application_version=""1.0.0""
- )
- print(log_payload.level) # LogLevel.INFO
- ```")]
- [Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)]
- [Bonsai.CombinatorAttribute(MethodName="Generate")]
- public partial class LogPayload : RegisteredPayload
- {
-
- private string _message;
-
- private LogLevel _level;
-
- private object _context;
-
- private string _applicationVersion;
-
- public LogPayload()
- {
- _level = AindJustFramesSchemas.MessageProtocol.LogLevel.Debug;
- }
-
- protected LogPayload(LogPayload other) :
- base(other)
- {
- _message = other._message;
- _level = other._level;
- _context = other._context;
- _applicationVersion = other._applicationVersion;
- }
-
- ///
- /// The message of the log
- ///
- [Newtonsoft.Json.JsonPropertyAttribute("message", Required=Newtonsoft.Json.Required.Always)]
- [System.ComponentModel.DescriptionAttribute("The message of the log")]
- public string Message
- {
- get
- {
- return _message;
- }
- set
- {
- _message = value;
- }
- }
-
- ///
- /// The level of the log message
- ///
- [System.Xml.Serialization.XmlIgnoreAttribute()]
- [Newtonsoft.Json.JsonPropertyAttribute("level")]
- [System.ComponentModel.DescriptionAttribute("The level of the log message")]
- public LogLevel Level
- {
- get
- {
- return _level;
- }
- set
- {
- _level = value;
- }
- }
-
- ///
- /// Additional context for the log message
- ///
- [System.Xml.Serialization.XmlIgnoreAttribute()]
- [Newtonsoft.Json.JsonPropertyAttribute("context")]
- [System.ComponentModel.DescriptionAttribute("Additional context for the log message")]
- public object Context
- {
- get
- {
- return _context;
- }
- set
- {
- _context = value;
- }
- }
-
- ///
- /// The version of the application
- ///
- [Newtonsoft.Json.JsonPropertyAttribute("application_version")]
- [System.ComponentModel.DescriptionAttribute("The version of the application")]
- public string ApplicationVersion
- {
- get
- {
- return _applicationVersion;
- }
- set
- {
- _applicationVersion = value;
- }
- }
-
- public System.IObservable Generate()
- {
- return System.Reactive.Linq.Observable.Defer(() => System.Reactive.Linq.Observable.Return(new LogPayload(this)));
- }
-
- public System.IObservable Generate(System.IObservable source)
- {
- return System.Reactive.Linq.Observable.Select(source, _ => new LogPayload(this));
- }
-
- protected override bool PrintMembers(System.Text.StringBuilder stringBuilder)
- {
- if (base.PrintMembers(stringBuilder))
- {
- stringBuilder.Append(", ");
- }
- stringBuilder.Append("Message = " + _message + ", ");
- stringBuilder.Append("Level = " + _level + ", ");
- stringBuilder.Append("Context = " + _context + ", ");
- stringBuilder.Append("ApplicationVersion = " + _applicationVersion);
- return true;
- }
- }
-
-
[System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
[Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)]
[Bonsai.CombinatorAttribute(MethodName="Generate")]
public partial class Message
{
- private MessageType _messageType;
+ private AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType _messageType;
private int _protocolVersion;
@@ -410,7 +47,7 @@ protected Message(Message other)
[System.Xml.Serialization.XmlIgnoreAttribute()]
[Newtonsoft.Json.JsonPropertyAttribute("message_type", Required=Newtonsoft.Json.Required.Always)]
- public MessageType MessageType
+ public AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType MessageType
{
get
{
@@ -559,39 +196,13 @@ public override string ToString()
}
- ///
- /// Enumeration of possible message types in the protocol.
- ///
- ///Examples:
- /// ```python
- /// MessageType.REQUEST # 'request'
- /// MessageType.REPLY # 'reply'
- /// MessageType.EVENT # 'event'
- /// ```
- ///
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
- [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
- public enum MessageType
- {
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="request")]
- Request = 0,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="reply")]
- Reply = 1,
-
- [System.Runtime.Serialization.EnumMemberAttribute(Value="event")]
- Event = 2,
- }
-
-
[System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
[Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)]
[Bonsai.CombinatorAttribute(MethodName="Generate")]
public partial class RegisteredMessages
{
- private MessageType _messageType;
+ private AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType _messageType;
private int _protocolVersion;
@@ -623,7 +234,7 @@ protected RegisteredMessages(RegisteredMessages other)
[System.Xml.Serialization.XmlIgnoreAttribute()]
[Newtonsoft.Json.JsonPropertyAttribute("message_type", Required=Newtonsoft.Json.Required.Always)]
- public MessageType MessageType
+ public AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType MessageType
{
get
{
@@ -774,8 +385,8 @@ public override string ToString()
[System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
[Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "payload_type")]
- [JsonInheritanceAttribute("HeartbeatPayload", typeof(HeartbeatPayload))]
- [JsonInheritanceAttribute("LogPayload", typeof(LogPayload))]
+ [JsonInheritanceAttribute("HeartbeatPayload", typeof(AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.HeartbeatPayload))]
+ [JsonInheritanceAttribute("LogPayload", typeof(AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.LogPayload))]
[JsonInheritanceAttribute("Start", typeof(StartPayload))]
[JsonInheritanceAttribute("Stop", typeof(StopPayload))]
public abstract partial class RegisteredPayload
@@ -1013,8 +624,8 @@ private string GetSubtypeDiscriminator(System.Type objectType)
[System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.6.1.0 (Newtonsoft.Json v13.0.0.0)")]
[System.ComponentModel.DefaultPropertyAttribute("Type")]
[Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Combinator)]
- [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
- [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
public partial class MatchRegisteredPayload : Bonsai.Expressions.SingleArgumentExpressionBuilder
@@ -1071,16 +682,6 @@ private System.IObservable Process(System.IObservable source)
return System.Reactive.Linq.Observable.Select(source, value => Newtonsoft.Json.JsonConvert.SerializeObject(value, formatting));
}
- public System.IObservable Process(System.IObservable source)
- {
- return Process(source);
- }
-
- public System.IObservable Process(System.IObservable source)
- {
- return Process(source);
- }
-
public System.IObservable Process(System.IObservable source)
{
return Process(source);
@@ -1115,8 +716,6 @@ public System.IObservable Process(System.IObservable source
[System.ComponentModel.DescriptionAttribute("Deserializes a sequence of JSON strings into data model objects.")]
[System.ComponentModel.DefaultPropertyAttribute("Type")]
[Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Transform)]
- [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
- [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
@@ -1127,7 +726,7 @@ public partial class DeserializeFromJson : Bonsai.Expressions.SingleArgumentExpr
public DeserializeFromJson()
{
- Type = new Bonsai.Expressions.TypeMapping();
+ Type = new Bonsai.Expressions.TypeMapping();
}
public Bonsai.Expressions.TypeMapping Type { get; set; }
diff --git a/src/Extensions/BuildRegisteredMessage.cs b/src/Extensions/BuildRegisteredMessage.cs
index 90b46ec..e96206e 100644
--- a/src/Extensions/BuildRegisteredMessage.cs
+++ b/src/Extensions/BuildRegisteredMessage.cs
@@ -1,10 +1,9 @@
-using Bonsai;
+using Bonsai;
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
-using AindJustFramesSchemas.MessageProtocol;
using System.Reactive;
[Combinator]
@@ -12,8 +11,8 @@
[WorkflowElementCategory(ElementCategory.Transform)]
public class BuildRegisteredMessage
{
- private MessageType messageType = MessageType.Event;
- public MessageType MessageType
+ private AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType messageType = AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType.Event;
+ public AllenNeuralDynamics.AindBehaviorServices.MessageProtocol.MessageType MessageType
{
get { return messageType; }
set { messageType = value; }
@@ -28,16 +27,16 @@ public string RigName
set { rigName = value; }
}
- public IObservable Process(IObservable source)
+ public IObservable Process(IObservable source)
{
- return Process(source.Select(value => new Timestamped(value, DateTimeOffset.UtcNow)));
+ return Process(source.Select(value => new Timestamped(value, DateTimeOffset.UtcNow)));
}
- public IObservable Process(IObservable> source)
+ public IObservable Process(IObservable> source)
{
string hostname = Environment.MachineName;
string processId = System.Diagnostics.Process.GetCurrentProcess().Id.ToString();
- return source.Select(value => new RegisteredMessages()
+ return source.Select(value => new AindJustFramesSchemas.MessageProtocol.RegisteredMessages()
{
MessageType = MessageType,
ProtocolVersion = protocolVersion,
diff --git a/src/Extensions/HarpDevices.bonsai b/src/Extensions/HarpDevices.bonsai
index a8664a3..ec257d7 100644
--- a/src/Extensions/HarpDevices.bonsai
+++ b/src/Extensions/HarpDevices.bonsai
@@ -215,6 +215,11 @@
>tcp://localhost:5557
+
+
+ TaskPoolScheduler
+
+
Last.Buffer
@@ -234,6 +239,7 @@
+
diff --git a/src/Extensions/TryParseRegisteredMessage.cs b/src/Extensions/TryParseRegisteredMessage.cs
index 36ea778..3b4bf5d 100644
--- a/src/Extensions/TryParseRegisteredMessage.cs
+++ b/src/Extensions/TryParseRegisteredMessage.cs
@@ -1,17 +1,16 @@
-using Bonsai;
+using Bonsai;
using System;
using System.ComponentModel;
using System.Linq;
using System.Reactive.Linq;
using NetMQ;
-using AindJustFramesSchemas.MessageProtocol;
[Combinator]
[Description("Tries to parse NetMQFrame as RegisteredMessages and filters out invalid messages")]
[WorkflowElementCategory(ElementCategory.Combinator)]
public class TryParseRegisteredMessages
{
- public IObservable Process(IObservable source)
+ public IObservable Process(IObservable source)
{
return source
.Select(frame => frame.ConvertToString())
@@ -19,7 +18,7 @@ public IObservable Process(IObservable source)
{
try
{
- return Newtonsoft.Json.JsonConvert.DeserializeObject(messageString);
+ return Newtonsoft.Json.JsonConvert.DeserializeObject(messageString);
}
catch
{
diff --git a/src/Extensions/ZeroMQ.bonsai b/src/Extensions/ZeroMQ.bonsai
index 12409bd..bbbc3f0 100644
--- a/src/Extensions/ZeroMQ.bonsai
+++ b/src/Extensions/ZeroMQ.bonsai
@@ -155,7 +155,7 @@
-
+
BroadcastRequest
@@ -515,7 +515,7 @@
Out
-
+
Out
@@ -823,7 +823,7 @@
Out
-
+
Out
diff --git a/uv.lock b/uv.lock
index 773c557..f5ceb66 100644
--- a/uv.lock
+++ b/uv.lock
@@ -146,35 +146,36 @@ aind-services = [
[[package]]
name = "aind-data-schema"
-version = "2.6.0"
+version = "2.7.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aind-data-schema-models" },
{ name = "pydantic" },
{ name = "pydantic-extra-types" },
+ { name = "tzdata" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/3e/04/fb661b20352d9768f1a777f5a26a4948ebeb40b49c6d0ddbe2004351aa97/aind_data_schema-2.6.0.tar.gz", hash = "sha256:921bf9e45a4d9671f883a79219119841de3d907928568c0f6f610d029ab2babf", size = 901339, upload-time = "2026-03-09T18:25:36.958Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/5f/20/adea7aec869cdc84a820414988a32ed5b1fdc20e0ce7c6f145b1b4486275/aind_data_schema-2.7.1.tar.gz", hash = "sha256:ad21d009f801a33baa52f7d28f00be03698adf04502334f428670ccfacc1a48d", size = 912389, upload-time = "2026-05-07T01:48:41.855Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/a5/71/905924fa2483bb4bcc08218cc43119a790a859e695a1c28253711b11ec0d/aind_data_schema-2.6.0-py3-none-any.whl", hash = "sha256:dfc868930c9e2ee2fe8ca40ef3dc2d0502db59e44bd76c577fdecde77d73ac48", size = 92081, upload-time = "2026-03-09T18:25:35.332Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/5b/ea2ec6ff2a0e9258a4aa97075f30bb0040c4c875a421aa2837c314192773/aind_data_schema-2.7.1-py3-none-any.whl", hash = "sha256:e81fd92bcd4d479f9a6636b054f18635bd20fb20b6f82159af9b66beac2963fe", size = 93639, upload-time = "2026-05-07T01:48:40.236Z" },
]
[[package]]
name = "aind-data-schema-models"
-version = "5.4.5"
+version = "5.5.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "importlib-resources" },
{ name = "pydantic" },
{ name = "requests" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/38/72/7271bcf1053b771a9aa832a2026a9b7bb9ebbe9f618297dd21b93044e749/aind_data_schema_models-5.4.5.tar.gz", hash = "sha256:cb91300ed33f77f6ccb30c28bf1085a6ec856f0c99afa47cf66d48d918dc07de", size = 341353, upload-time = "2026-04-20T22:58:37.536Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/8e/7c/389a8d4f17de32fe83b3259f77dbf78e117595554ffe61efc7167787d6d9/aind_data_schema_models-5.5.2.tar.gz", hash = "sha256:945d193111770ae59472ee92b0032b649dec4668008fcb4bff2f0cff3871ae72", size = 341524, upload-time = "2026-05-08T03:58:09.931Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/0a/5d/892c2d9f94195828a11981ef2be2c5b05f49ff3d4cc93f79af6e67e5a716/aind_data_schema_models-5.4.5-py3-none-any.whl", hash = "sha256:f61275eb4145c3fb1e65374978f79e85a021a7e0dc9f05156c883037b0211660", size = 310151, upload-time = "2026-04-20T22:58:36.235Z" },
+ { url = "https://files.pythonhosted.org/packages/c6/06/8336be65450d232de8abaf6d3353a877de296dc303c4f4483d67c08cc907/aind_data_schema_models-5.5.2-py3-none-any.whl", hash = "sha256:6ec4aa02549b2ce0c21e8205dc470cdabddf1346c7cb2b6afd195334325e85f3", size = 310311, upload-time = "2026-05-08T03:58:08.486Z" },
]
[[package]]
name = "aind-data-transfer-service"
-version = "2.0.6"
+version = "2.0.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aind-data-schema-models" },
@@ -184,9 +185,9 @@ dependencies = [
{ name = "python-json-logger" },
{ name = "pyyaml" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/73/fb/6289d23cca5fb2aa347661f839f9eadb62fdb7203ec39535e229573d84ed/aind_data_transfer_service-2.0.6.tar.gz", hash = "sha256:00c2e6d39a30b552ba8aa4750f8454fad1f528aeefcc254ea229b4f888d3eb10", size = 37307, upload-time = "2026-04-09T00:55:03.91Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/df/3d/29da56f8c944142d7fe5c7a164177687edee1c474add38060a2b0f2550b1/aind_data_transfer_service-2.0.8.tar.gz", hash = "sha256:fc4627766fe4635a5af6b46d31ab81d335185435db23e44eaa262ccc2b857577", size = 37322, upload-time = "2026-05-04T17:38:07.143Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/6e/e4/0e5b8f91d170cf04441ffe5b03eda04298f3ecfb99ac219df24030a5aca0/aind_data_transfer_service-2.0.6-py3-none-any.whl", hash = "sha256:5eb85814687c33af3572a2ea02c82f8b76a8687283f1c641b8a633ccd5720b52", size = 23243, upload-time = "2026-04-09T00:55:02.419Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/8c/09a539d82bd54a05699c8ddbbd9c14f674edd4d34aac37da22d547042e48/aind_data_transfer_service-2.0.8-py3-none-any.whl", hash = "sha256:31644d156a523093f593499f4a9d8d7c91e449f63a3ff86419996b6beebfcdfc", size = 23243, upload-time = "2026-05-04T17:38:06.19Z" },
]
[[package]]
@@ -604,7 +605,7 @@ wheels = [
[[package]]
name = "contraqctor"
-version = "0.5.3"
+version = "0.5.7"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aind-behavior-services" },
@@ -621,27 +622,27 @@ dependencies = [
{ name = "scipy" },
{ name = "semver" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/95/33/e0dfd99fc23ab1ac6162b496727edef844e9279e13a969b05a1b4b05d426/contraqctor-0.5.3.tar.gz", hash = "sha256:0d11e4cf50acf01288b5ed66053211105c3a716fe8a31d63bcc2bf423037ac20", size = 54226, upload-time = "2025-11-10T17:31:19.497Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/9f/db/462e9992cf98faf9b5a7eb8ff9906d7812266df377a0d4790c968610fd40/contraqctor-0.5.7.tar.gz", hash = "sha256:04c7540fb6d7f8c4f20d14e8e0f301cd80cff218254e1692b4bcfd8a13a48a7b", size = 55942, upload-time = "2026-05-08T19:58:29.611Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b4/9a/94fa67d2aecf7703a68be18b97b8d1af09ec9c26c73b2c21d5e881e46353/contraqctor-0.5.3-py3-none-any.whl", hash = "sha256:9306521efd6165007409319be39d4a8d9e286028693237584dbfc9f87e974292", size = 67638, upload-time = "2025-11-10T17:31:18.482Z" },
+ { url = "https://files.pythonhosted.org/packages/da/ca/7037a0bcbf4431fcce48f6b1033df0c8172e047c35531c0b78438aecb2ff/contraqctor-0.5.7-py3-none-any.whl", hash = "sha256:78b40003a79f1bf8071f89af1c970e856ea2ad10d93baffc8e3a5cd078a2cc62", size = 69247, upload-time = "2026-05-08T19:58:30.692Z" },
]
[[package]]
name = "cryptography"
-version = "47.0.0"
+version = "48.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/ef/b2/7ffa7fe8207a8c42147ffe70c3e360b228160c1d85dc3faff16aaa3244c0/cryptography-47.0.0.tar.gz", hash = "sha256:9f8e55fe4e63613a5e1cc5819030f27b97742d720203a087802ce4ce9ceb52bb", size = 830863, upload-time = "2026-04-24T19:54:57.056Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/54/ed/5f524db1fade9c013aa618e1c99c6ed05e8ffc9ceee6cda22fed22dda3f4/cryptography-47.0.0-cp311-abi3-win32.whl", hash = "sha256:7fda2f02c9015db3f42bb8a22324a454516ed10a8c29ca6ece6cdbb5efe2a203", size = 3258581, upload-time = "2026-04-24T19:53:31.058Z" },
- { url = "https://files.pythonhosted.org/packages/b2/dc/1b901990b174786569029f67542b3edf72ac068b6c3c8683c17e6a2f5363/cryptography-47.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:f5c3296dab66202f1b18a91fa266be93d6aa0c2806ea3d67762c69f60adc71aa", size = 3775309, upload-time = "2026-04-24T19:53:33.054Z" },
- { url = "https://files.pythonhosted.org/packages/31/98/dc4ad376ac5f1a1a7d4a83f7b0c6f2bcad36b5d2d8f30aeb482d3a7d9582/cryptography-47.0.0-cp314-cp314t-win32.whl", hash = "sha256:6eebcaf0df1d21ce1f90605c9b432dd2c4f4ab665ac29a40d5e3fc68f51b5e63", size = 3237158, upload-time = "2026-04-24T19:54:02.606Z" },
- { url = "https://files.pythonhosted.org/packages/bc/da/97f62d18306b5133468bc3f8cc73a3111e8cdc8cf8d3e69474d6e5fd2d1b/cryptography-47.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:51c9313e90bd1690ec5a75ed047c27c0b8e6c570029712943d6116ef9a90620b", size = 3758706, upload-time = "2026-04-24T19:54:04.433Z" },
- { url = "https://files.pythonhosted.org/packages/06/bd/0a9d3edbf5eadbac926d7b9b3cd0c4be584eeeae4a003d24d9eda4affbbd/cryptography-47.0.0-cp38-abi3-win32.whl", hash = "sha256:ed67ea4e0cfb5faa5bc7ecb6e2b8838f3807a03758eec239d6c21c8769355310", size = 3248487, upload-time = "2026-04-24T19:54:33.494Z" },
- { url = "https://files.pythonhosted.org/packages/60/80/5681af756d0da3a599b7bdb586fac5a1540f1bcefd2717a20e611ddade45/cryptography-47.0.0-cp38-abi3-win_amd64.whl", hash = "sha256:835d2d7f47cdc53b3224e90810fb1d36ca94ea29cc1801fb4c1bc43876735769", size = 3755737, upload-time = "2026-04-24T19:54:35.408Z" },
- { url = "https://files.pythonhosted.org/packages/ab/9c/51f28c3550276bcf35660703ba0ab829a90b88be8cd98a71ef23c2413913/cryptography-47.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:cffbba3392df0fa8629bb7f43454ee2925059ee158e23c54620b9063912b86c8", size = 3698916, upload-time = "2026-04-24T19:54:49.782Z" },
+ { url = "https://files.pythonhosted.org/packages/04/70/e5a1b41d325f797f39427aa44ef8baf0be500065ab6d8e10369d850d4a4f/cryptography-48.0.0-cp311-abi3-win32.whl", hash = "sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4", size = 3294868, upload-time = "2026-05-04T22:58:06.467Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/ac/8ac51b4a5fc5932eb7ee5c517ba7dc8cd834f0048962b6b352f00f41ebf9/cryptography-48.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7", size = 3817107, upload-time = "2026-05-04T22:58:08.845Z" },
+ { url = "https://files.pythonhosted.org/packages/75/54/cc6d0f3deac3e81c7f847e8a189a12b6cdd65059b43dad25d4316abd849a/cryptography-48.0.0-cp314-cp314t-win32.whl", hash = "sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f", size = 3270954, upload-time = "2026-05-04T22:58:38.791Z" },
+ { url = "https://files.pythonhosted.org/packages/49/67/cc947e288c0758a4e5473d1dcb743037ab7785541265a969240b8885441a/cryptography-48.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12", size = 3797313, upload-time = "2026-05-04T22:58:40.746Z" },
+ { url = "https://files.pythonhosted.org/packages/b8/23/6e6f32143ab5d8b36ca848a502c4bcd477ae75b9e1677e3530d669062578/cryptography-48.0.0-cp39-abi3-win32.whl", hash = "sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd", size = 3279117, upload-time = "2026-05-04T22:59:12.019Z" },
+ { url = "https://files.pythonhosted.org/packages/9d/9a/0fea98a70cf1749d41d738836f6349d97945f7c89433a259a6c2642eefeb/cryptography-48.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8", size = 3792100, upload-time = "2026-05-04T22:59:14.884Z" },
+ { url = "https://files.pythonhosted.org/packages/a2/ca/7e8365deec19afb2b2c7be7c1c0aa8f99633b54e90c570999acda93260fc/cryptography-48.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:db63bf618e5dea46c07de12e900fe1cdd2541e6dc9dbae772a70b7d4d4765f6a", size = 3739536, upload-time = "2026-05-04T22:59:29.61Z" },
]
[[package]]
@@ -782,14 +783,14 @@ wheels = [
[[package]]
name = "gitpython"
-version = "3.1.49"
+version = "3.1.50"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "gitdb" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/e1/63/210aaa302d6a0a78daa67c5c15bbac2cad361722841278b0209b6da20855/gitpython-3.1.49.tar.gz", hash = "sha256:42f9399c9eb33fc581014bedd76049dfbaf6375aa2a5754575966387280315e1", size = 219367, upload-time = "2026-04-29T00:31:20.478Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz", hash = "sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size = 219798, upload-time = "2026-05-06T04:01:26.571Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fd/6f/b842bfa6f21d6f87c57f9abf7194225e55279d96d869775e19e9f7236fc5/gitpython-3.1.49-py3-none-any.whl", hash = "sha256:024b0422d7f84d15cd794844e029ffebd4c5d42a7eb9b936b458697ef550a02c", size = 212190, upload-time = "2026-04-29T00:31:18.412Z" },
+ { url = "https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl", hash = "sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size = 212507, upload-time = "2026-05-06T04:01:23.799Z" },
]
[[package]]
@@ -807,11 +808,11 @@ wheels = [
[[package]]
name = "idna"
-version = "3.13"
+version = "3.14"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, upload-time = "2026-04-22T16:42:42.314Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/05/b1/efac073e0c297ecf2fb33c346989a529d4e19164f1759102dee5953ee17e/idna-3.14.tar.gz", hash = "sha256:466d810d7a2cc1022bea9b037c39728d51ae7dad40d480fc9b7d7ecf98ba8ee3", size = 198272, upload-time = "2026-05-10T20:32:15.935Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, upload-time = "2026-04-22T16:42:40.909Z" },
+ { url = "https://files.pythonhosted.org/packages/6c/3c/3f62dee257eb3d6b2c1ef2a09d36d9793c7111156a73b5654d2c2305e5ce/idna-3.14-py3-none-any.whl", hash = "sha256:e677eaf072e290f7b725f9acf0b3a2bd55f9fd6f7c70abe5f0e34823d0accf69", size = 72184, upload-time = "2026-05-10T20:32:14.295Z" },
]
[[package]]
@@ -1063,14 +1064,14 @@ wheels = [
[[package]]
name = "markdown-it-py"
-version = "4.0.0"
+version = "4.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "mdurl" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" },
+ { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" },
]
[[package]]
@@ -1213,14 +1214,14 @@ wheels = [
[[package]]
name = "mdit-py-plugins"
-version = "0.5.0"
+version = "0.6.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "markdown-it-py" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655, upload-time = "2025-08-11T07:25:49.083Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/d8/3d/e0e8d9d1cee04f758120915e2b2a3a07eb41f8cf4654b4734788a522bcd1/mdit_py_plugins-0.6.0.tar.gz", hash = "sha256:2436f14a7295837ac9228a36feeabda867c4abc488c8d019ad5c0bda88eee040", size = 56025, upload-time = "2026-05-07T12:20:42.295Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205, upload-time = "2025-08-11T07:25:47.597Z" },
+ { url = "https://files.pythonhosted.org/packages/71/d6/48f5b9e44e2e760855d7b489b1317cd7620e82dcb73197961e5cc1391348/mdit_py_plugins-0.6.0-py3-none-any.whl", hash = "sha256:f7e7a25d8b616fee99cb1e330da73451d11a8061baf39bb9663ab9ce0e005b90", size = 66655, upload-time = "2026-05-07T12:20:41.226Z" },
]
[[package]]
@@ -1663,16 +1664,16 @@ wheels = [
[[package]]
name = "pydantic-settings"
-version = "2.14.0"
+version = "2.14.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pydantic" },
{ name = "python-dotenv" },
{ name = "typing-inspection" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/42/98/c8345dccdc31de4228c039a98f6467a941e39558da41c1744fbe29fa5666/pydantic_settings-2.14.0.tar.gz", hash = "sha256:24285fd4b0e0c06507dd9fdfd331ee23794305352aaec8fc4eb92d4047aeb67d", size = 235709, upload-time = "2026-04-20T13:37:40.293Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa", size = 235551, upload-time = "2026-05-08T13:40:06.542Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/01/dd/bebff3040138f00ae8a102d426b27349b9a49acc310fcae7f92112d867e3/pydantic_settings-2.14.0-py3-none-any.whl", hash = "sha256:fc8d5d692eb7092e43c8647c1c35a3ecd00e040fcf02ed86f4cb5458ca62182e", size = 60940, upload-time = "2026-04-20T13:37:38.586Z" },
+ { url = "https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de", size = 60964, upload-time = "2026-05-08T13:40:04.958Z" },
]
[[package]]
@@ -2293,7 +2294,7 @@ wheels = [
[[package]]
name = "typer"
-version = "0.25.0"
+version = "0.25.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "annotated-doc" },
@@ -2301,9 +2302,9 @@ dependencies = [
{ name = "rich" },
{ name = "shellingham" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/7b/27/ede8cec7596e0041ba7e7b80b47d132562f56ff454313a16f6084e555c9f/typer-0.25.0.tar.gz", hash = "sha256:123eaf9f19bb40fd268310e12a542c0c6b4fab9c98d9d23342a01ff95e3ce930", size = 120150, upload-time = "2026-04-26T08:46:14.767Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/e4/51/9aed62104cea109b820bbd6c14245af756112017d309da813ef107d42e7e/typer-0.25.1.tar.gz", hash = "sha256:9616eb8853a09ffeabab1698952f33c6f29ffdbceb4eaeecf571880e8d7664cc", size = 122276, upload-time = "2026-04-30T19:32:16.964Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/9a/72/193d4e586ec5a4db834a36bbeb47641a62f951f114ffd0fe5b1b46e8d56f/typer-0.25.0-py3-none-any.whl", hash = "sha256:ac01b48823d3db9a83c9e164338057eadbb1c9957a2a6b4eeb486669c560b5dc", size = 55993, upload-time = "2026-04-26T08:46:15.889Z" },
+ { url = "https://files.pythonhosted.org/packages/3f/f9/2b3ff4e56e5fa7debfaf9eb135d0da96f3e9a1d5b27222223c7296336e5f/typer-0.25.1-py3-none-any.whl", hash = "sha256:75caa44ed46a03fb2dab8808753ffacdbfea88495e74c85a28c5eefcf5f39c89", size = 58409, upload-time = "2026-04-30T19:32:18.271Z" },
]
[[package]]
@@ -2338,18 +2339,18 @@ wheels = [
[[package]]
name = "urllib3"
-version = "2.6.3"
+version = "2.7.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
]
[[package]]
name = "wcwidth"
-version = "0.6.0"
+version = "0.7.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/2c/ee/afaf0f85a9a18fe47a67f1e4422ed6cf1fe642f0ae0a2f81166231303c52/wcwidth-0.7.0.tar.gz", hash = "sha256:90e3a7ea092341c44b99562e75d09e4d5160fe7a3974c6fb842a101a95e7eed0", size = 182132, upload-time = "2026-05-02T16:04:12.653Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" },
+ { url = "https://files.pythonhosted.org/packages/41/52/e465037f5375f43533d1a80b6923955201596a99142ed524d77b571a1418/wcwidth-0.7.0-py3-none-any.whl", hash = "sha256:5d69154c429a82910e241c738cd0e2976fac8a2dd47a1a805f4afed1c0f136f2", size = 110825, upload-time = "2026-05-02T16:04:11.033Z" },
]