mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
6aebbe9279
Major changes: 1. Core Architecture: Decoupled Bots from Users. Bots now have independent lifecycles, member management (bot_members), and dedicated configurations. 2. Channel Gateway: - Implemented a unified Channel Manager supporting Feishu, Telegram, and Local (Web/CLI) adapters. - Added message processing pipeline to normalize interactions across different platforms. - Introduced a Contact system for identity binding and guest access policies. 3. Database & Tooling: - Consolidated all migrations into 0001_init with updated schema for bots, channels, and contacts. - Optimized sqlc.yaml to automatically track the migrations directory. 4. Agent Enhancements: - Introduced ToolContext to provide Agents with platform-aware execution capabilities (e.g., messaging, contact lookups). - Added tool logging and fallback mechanisms for toolChoice execution. 5. UI & Docs: Updated frontend stores, UI components, and Swagger documentation to align with the new Bot-centric model.
73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package schedule
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
)
|
|
|
|
type Schedule struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Pattern string `json:"pattern"`
|
|
MaxCalls *int `json:"max_calls,omitempty"`
|
|
CurrentCalls int `json:"current_calls"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Enabled bool `json:"enabled"`
|
|
Command string `json:"command"`
|
|
BotID string `json:"bot_id"`
|
|
}
|
|
|
|
type NullableInt struct {
|
|
Value *int
|
|
Set bool
|
|
}
|
|
|
|
func (n NullableInt) IsZero() bool {
|
|
return !n.Set
|
|
}
|
|
|
|
func (n NullableInt) MarshalJSON() ([]byte, error) {
|
|
if !n.Set || n.Value == nil {
|
|
return []byte("null"), nil
|
|
}
|
|
return json.Marshal(*n.Value)
|
|
}
|
|
|
|
func (n *NullableInt) UnmarshalJSON(data []byte) error {
|
|
n.Set = true
|
|
if string(data) == "null" {
|
|
n.Value = nil
|
|
return nil
|
|
}
|
|
var value int
|
|
if err := json.Unmarshal(data, &value); err != nil {
|
|
return err
|
|
}
|
|
n.Value = &value
|
|
return nil
|
|
}
|
|
|
|
type CreateRequest struct {
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Pattern string `json:"pattern"`
|
|
MaxCalls NullableInt `json:"max_calls,omitempty"`
|
|
Command string `json:"command"`
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
}
|
|
|
|
type UpdateRequest struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
Pattern *string `json:"pattern,omitempty"`
|
|
MaxCalls NullableInt `json:"max_calls,omitempty"`
|
|
Command *string `json:"command,omitempty"`
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
}
|
|
|
|
type ListResponse struct {
|
|
Items []Schedule `json:"items"`
|
|
}
|