{
  "revision": "6f341b4e6d356dd28d1a90ec65e220b98a9bbb96",
  "resources": [
    {
      "source": "providers/agents/deploy/chart/files/schemas/agents.agents.faros.sh.yaml",
      "schema": {
        "apiVersion": "apis.kcp.io/v1alpha1",
        "kind": "APIResourceSchema",
        "metadata": {
          "name": "v260802-57900880.agents.agents.faros.sh"
        },
        "spec": {
          "group": "agents.faros.sh",
          "names": {
            "kind": "Agent",
            "listKind": "AgentList",
            "plural": "agents",
            "shortNames": [
              "agt"
            ],
            "singular": "agent"
          },
          "scope": "Cluster",
          "versions": [
            {
              "additionalPrinterColumns": [
                {
                  "jsonPath": ".spec.displayName",
                  "name": "DisplayName",
                  "type": "string"
                },
                {
                  "jsonPath": ".status.phase",
                  "name": "Phase",
                  "type": "string"
                },
                {
                  "jsonPath": ".metadata.creationTimestamp",
                  "name": "Age",
                  "type": "date"
                }
              ],
              "name": "v1alpha1",
              "schema": {
                "description": "Agent is a persistent, long-running personal assistant scoped to a Faros\nworkspace. It chats, runs scheduled work on its own clock, uses tools, and\nkeeps durable memory. Runtime state (transcripts, runs) lives in the\nprovider's store; this resource holds the durable configuration.",
                "properties": {
                  "apiVersion": {
                    "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                    "type": "string"
                  },
                  "metadata": {
                    "type": "object"
                  },
                  "spec": {
                    "description": "AgentSpec is the user-authored agent configuration.",
                    "properties": {
                      "autonomy": {
                        "default": "ask",
                        "description": "Autonomy is the agent's default posture toward taking action: \"suggest\"\ndrafts but never acts, \"ask\" acts after approval, \"auto\" acts freely\nwithin the tool policy. Per-trigger requireApproval lists refine it.",
                        "enum": [
                          "suggest",
                          "ask",
                          "auto"
                        ],
                        "type": "string"
                      },
                      "budget": {
                        "description": "Budget caps spend over a rolling window. On breach the provider suspends\nschedules and background runs and notifies the user; interactive chat\nstays available.",
                        "properties": {
                          "tokenLimit": {
                            "description": "TokenLimit is the token ceiling for the window. Zero disables the token\ncap.",
                            "format": "int64",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "usdLimit": {
                            "description": "USDLimit is the spend ceiling in US dollars for the window. Zero disables\nthe cost cap.",
                            "type": "string"
                          },
                          "window": {
                            "default": "month",
                            "description": "Window is the rolling budget period: \"day\" or \"month\".",
                            "enum": [
                              "day",
                              "month"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "channels": {
                        "description": "Channels binds named messaging channels to the agent. The channel marked\nPrimary (or, failing that, the first entry) is the default notify target\nfor output that does not name a channel \u2014 the notify/ask tools, approval\nrequests, and schedules/triggers with no ChannelRef. Schedules and\nTriggers may deliver to any channel by referencing its Name. An agent also\nreceives inbound messages on every channel's Connection, so a user can\ntalk to it from more than one place (e.g. Telegram and Discord).",
                        "items": {
                          "description": "AgentChannel binds one logical channel role to a messaging Connection.",
                          "properties": {
                            "connectionRef": {
                              "description": "ConnectionRef names the messaging Connection (telegram/slack/discord/smtp)\nthat backs this channel.",
                              "maxLength": 253,
                              "type": "string"
                            },
                            "name": {
                              "description": "Name is the logical channel role referenced by schedules and triggers,\ne.g. \"primary\", \"incidents\", \"news\". Unique within the agent.",
                              "maxLength": 63,
                              "minLength": 1,
                              "type": "string"
                            },
                            "primary": {
                              "description": "Primary marks this channel as the agent's default notify target. Exactly\none channel should be primary; when none is marked the first entry is\ntreated as primary.",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "connectionRef",
                            "name"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "delegates": {
                        "description": "Delegates lists the names of other Agents this agent may spawn as\nsub-agents via the core \"delegate\" tool. Empty disables delegation.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "description": {
                        "description": "Description is a short summary of what this agent is for.",
                        "maxLength": 2048,
                        "type": "string"
                      },
                      "displayName": {
                        "description": "DisplayName is the human-readable agent name.",
                        "maxLength": 128,
                        "minLength": 1,
                        "type": "string"
                      },
                      "limits": {
                        "description": "Limits bounds a single run.",
                        "properties": {
                          "maxConcurrentSpawns": {
                            "description": "MaxConcurrentSpawns caps how many spawned workers execute at the same\ntime; the rest queue. Zero uses the provider default (4); the provider caps\nit at 8 regardless.",
                            "format": "int32",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "maxSpawnsPerRun": {
                            "description": "MaxSpawnsPerRun caps how many scoped workers one run may start with the\n\"spawn\" tool. Zero uses the provider default (10); the provider caps it at\n20 regardless.",
                            "format": "int32",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "maxToolTurns": {
                            "description": "MaxToolTurns caps tool-call iterations in one run. Zero uses the provider\ndefault.",
                            "format": "int32",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "timeoutSeconds": {
                            "description": "TimeoutSeconds is the wall-clock budget for one run. Zero uses the\nprovider default watchdog (3600s).",
                            "format": "int32",
                            "minimum": 0,
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "memory": {
                        "description": "Memory configures long-term memory behavior.",
                        "properties": {
                          "enabled": {
                            "default": true,
                            "description": "Enabled turns on long-term memory notes. Defaults to true.",
                            "type": "boolean"
                          },
                          "maxNotes": {
                            "description": "MaxNotes bounds how many memory notes may be injected into a run's\ncontext. Zero uses the provider default.",
                            "format": "int32",
                            "minimum": 0,
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "modelFallbacks": {
                        "description": "ModelFallbacks is an ordered list of additional model-credential names\ntried, in order, when the primary chat model (models[\"chat\"]) fails to\nrespond \u2014 a provider outage, rate limit, timeout, or connection error.\nThe first credential that responds is used. Streaming only falls back\nbefore the first token is emitted. Empty means no fallback.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "models": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "Models maps run purposes to named profiles in the tenant's model\ncredentials Secret (faros-agents-llm). Recognized purposes: \"chat\"\n(interactive, strong), \"background\" (schedules/heartbeats, cheap),\n\"compaction\" (summarization). An empty map falls back to the \"chat\"\nprofile for every purpose.",
                        "type": "object"
                      },
                      "systemPrompt": {
                        "description": "SystemPrompt is the agent's persona and standing instructions, injected\nat the head of every run.",
                        "maxLength": 32768,
                        "type": "string"
                      },
                      "tools": {
                        "description": "Tools grants tool families and connections to the agent, per trigger\nclass. Unattended runs (schedule/heartbeat/wakeup) default to read-only.",
                        "properties": {
                          "background": {
                            "description": "Background applies to schedule, heartbeat, and wakeup runs. Defaults to\nread-only families plus notify when unset.",
                            "properties": {
                              "connections": {
                                "description": "Connections names Connection resources whose tools are exposed.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "families": {
                                "description": "Families names built-in tool families to enable: \"core\", \"web\",\n\"github\", \"mcp\", \"files\", \"edges\", \"spawn\". \"spawn\" lets a run fan out to\nscoped workers (the same agent on sub-tasks, with a subset of this grant)\nand join their answers \u2014 the basis of a research pass.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "requireApproval": {
                                "description": "RequireApproval lists tool names (or \"*\" family wildcards like \"github:*\")\nthat must be approved by the user before they run.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "toolsets": {
                                "description": "Toolsets names shared Toolset resources whose families, connections, and\napproval rules are merged into this grant. Lets many agents link one\nreusable bundle.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              }
                            },
                            "type": "object"
                          },
                          "interactive": {
                            "description": "Interactive applies to chat and channel-triggered runs, where a human is\npresent to approve risky actions.",
                            "properties": {
                              "connections": {
                                "description": "Connections names Connection resources whose tools are exposed.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "families": {
                                "description": "Families names built-in tool families to enable: \"core\", \"web\",\n\"github\", \"mcp\", \"files\", \"edges\", \"spawn\". \"spawn\" lets a run fan out to\nscoped workers (the same agent on sub-tasks, with a subset of this grant)\nand join their answers \u2014 the basis of a research pass.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "requireApproval": {
                                "description": "RequireApproval lists tool names (or \"*\" family wildcards like \"github:*\")\nthat must be approved by the user before they run.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "toolsets": {
                                "description": "Toolsets names shared Toolset resources whose families, connections, and\napproval rules are merged into this grant. Lets many agents link one\nreusable bundle.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "displayName"
                    ],
                    "type": "object"
                  },
                  "status": {
                    "description": "AgentStatus is the observed agent state.",
                    "properties": {
                      "lastRunAt": {
                        "description": "LastRunAt is when the agent most recently executed.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "phase": {
                        "description": "Phase is Ready or Suspended.",
                        "type": "string"
                      },
                      "suspendedReason": {
                        "description": "SuspendedReason explains a Suspended phase (e.g. \"budget exceeded\").",
                        "type": "string"
                      },
                      "updatedAt": {
                        "description": "UpdatedAt reflects the latest configuration mutation.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "usage": {
                        "description": "Usage reports the current rolling-window consumption.",
                        "properties": {
                          "tokens": {
                            "description": "Tokens consumed in the current window.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "usd": {
                            "description": "USD spent in the current window.",
                            "type": "string"
                          },
                          "windowStart": {
                            "description": "WindowStart is when the current budget window began.",
                            "format": "date-time",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "served": true,
              "storage": true,
              "subresources": {
                "status": {}
              }
            }
          ]
        }
      }
    },
    {
      "source": "providers/agents/deploy/chart/files/schemas/connections.agents.faros.sh.yaml",
      "schema": {
        "apiVersion": "apis.kcp.io/v1alpha1",
        "kind": "APIResourceSchema",
        "metadata": {
          "name": "v260731-8b9a2703.connections.agents.faros.sh"
        },
        "spec": {
          "group": "agents.faros.sh",
          "names": {
            "kind": "Connection",
            "listKind": "ConnectionList",
            "plural": "connections",
            "shortNames": [
              "conn"
            ],
            "singular": "connection"
          },
          "scope": "Cluster",
          "versions": [
            {
              "additionalPrinterColumns": [
                {
                  "jsonPath": ".spec.type",
                  "name": "Type",
                  "type": "string"
                },
                {
                  "jsonPath": ".status.phase",
                  "name": "Phase",
                  "type": "string"
                },
                {
                  "jsonPath": ".metadata.creationTimestamp",
                  "name": "Age",
                  "type": "date"
                }
              ],
              "name": "v1alpha1",
              "schema": {
                "description": "Connection is a named credential to an external system. The secret material\nlives in a tenant-workspace Secret (faros-agents-conn-<name>); this resource\ncarries only the type and non-secret configuration.",
                "properties": {
                  "apiVersion": {
                    "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                    "type": "string"
                  },
                  "metadata": {
                    "type": "object"
                  },
                  "spec": {
                    "description": "ConnectionSpec is the user-authored connection configuration.",
                    "properties": {
                      "auth": {
                        "default": "secret",
                        "description": "Auth selects how credentials are obtained: \"secret\" (default) reads a\nstatic token from the referenced Secret; \"oauth\" runs the provider's\nauthorize/callback flow and refreshes the token automatically.",
                        "enum": [
                          "secret",
                          "oauth"
                        ],
                        "type": "string"
                      },
                      "baseURL": {
                        "description": "BaseURL is the endpoint for http, mcp, and self-hosted github/slack\nconnections. Ignored by types that have a fixed endpoint.",
                        "maxLength": 2048,
                        "type": "string"
                      },
                      "channel": {
                        "description": "Channel identifies the destination for messaging connections: a Telegram\nchat ID, a Slack channel ID, or an email address for smtp.",
                        "maxLength": 253,
                        "type": "string"
                      },
                      "config": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "Config carries additional non-secret, type-specific settings.",
                        "type": "object"
                      },
                      "displayName": {
                        "description": "DisplayName is a human-readable label for the connection.",
                        "maxLength": 128,
                        "type": "string"
                      },
                      "oauth": {
                        "description": "OAuth configures the flow when Auth is \"oauth\". Ignored otherwise.",
                        "properties": {
                          "authorizeURL": {
                            "description": "AuthorizeURL and TokenURL override the provider preset endpoints (for\nself-hosted GitHub Enterprise or Slack, or a custom provider).",
                            "maxLength": 2048,
                            "type": "string"
                          },
                          "provider": {
                            "description": "Provider names the OAuth provider preset: \"github\", \"google\", \"slack\".",
                            "enum": [
                              "github",
                              "google",
                              "slack"
                            ],
                            "type": "string"
                          },
                          "scopes": {
                            "description": "Scopes requested during authorization.",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "tokenURL": {
                            "maxLength": 2048,
                            "type": "string"
                          }
                        },
                        "required": [
                          "provider"
                        ],
                        "type": "object"
                      },
                      "secretRef": {
                        "description": "SecretRef names the tenant-workspace Secret holding this connection's\ncredentials. Defaults to faros-agents-conn-<connection-name> when empty.",
                        "maxLength": 253,
                        "type": "string"
                      },
                      "type": {
                        "description": "Type selects the integration: github, mcp, websearch, http, telegram,\nslack, smtp, or discord.",
                        "enum": [
                          "github",
                          "mcp",
                          "websearch",
                          "edges",
                          "http",
                          "telegram",
                          "slack",
                          "smtp",
                          "discord"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  "status": {
                    "description": "ConnectionStatus is the observed connection state.",
                    "properties": {
                      "message": {
                        "description": "Message explains a non-Ready phase.",
                        "type": "string"
                      },
                      "oauthConnected": {
                        "description": "OAuthConnected reports whether an oauth-auth connection has a valid,\nrefreshable token. Always false for secret-auth connections.",
                        "type": "boolean"
                      },
                      "phase": {
                        "description": "Phase is Ready when the referenced Secret exists and validates, or Error.",
                        "type": "string"
                      },
                      "tokenExpiresAt": {
                        "description": "TokenExpiresAt is when the current OAuth access token expires.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "updatedAt": {
                        "description": "UpdatedAt reflects the latest status observation.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "webhookPath": {
                        "description": "WebhookPath is the hub-relative inbound webhook path for messaging\nconnections that receive events (telegram, slack). Empty for outbound-only\nor non-messaging types.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "served": true,
              "storage": true,
              "subresources": {
                "status": {}
              }
            }
          ]
        }
      }
    },
    {
      "source": "providers/agents/deploy/chart/files/schemas/schedules.agents.faros.sh.yaml",
      "schema": {
        "apiVersion": "apis.kcp.io/v1alpha1",
        "kind": "APIResourceSchema",
        "metadata": {
          "name": "v260801-3863009e.schedules.agents.faros.sh"
        },
        "spec": {
          "group": "agents.faros.sh",
          "names": {
            "kind": "Schedule",
            "listKind": "ScheduleList",
            "plural": "schedules",
            "shortNames": [
              "sched"
            ],
            "singular": "schedule"
          },
          "scope": "Cluster",
          "versions": [
            {
              "additionalPrinterColumns": [
                {
                  "jsonPath": ".spec.agentRef",
                  "name": "Agent",
                  "type": "string"
                },
                {
                  "jsonPath": ".spec.type",
                  "name": "Type",
                  "type": "string"
                },
                {
                  "jsonPath": ".spec.schedule",
                  "name": "Schedule",
                  "type": "string"
                },
                {
                  "jsonPath": ".status.nextRun",
                  "name": "NextRun",
                  "type": "string"
                },
                {
                  "jsonPath": ".spec.suspend",
                  "name": "Suspended",
                  "type": "boolean"
                }
              ],
              "name": "v1alpha1",
              "schema": {
                "description": "Schedule triggers an agent to run on its own clock: a recurring cron\ntask, a one-shot wakeup, or a periodic heartbeat. The provider's in-process\nscheduler owns fire times and reliability; this resource is the spec.",
                "properties": {
                  "apiVersion": {
                    "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                    "type": "string"
                  },
                  "metadata": {
                    "type": "object"
                  },
                  "spec": {
                    "description": "ScheduleSpec is the user-authored schedule configuration.",
                    "properties": {
                      "agentRef": {
                        "description": "AgentRef names the Agent this schedule drives.",
                        "maxLength": 253,
                        "minLength": 1,
                        "type": "string"
                      },
                      "channelRef": {
                        "description": "ChannelRef names the agent channel this schedule's output is delivered to\n(a Name in the agent's spec.channels). Empty means the agent's primary\nchannel. Lets, e.g., a \"daily-news\" cron post to a dedicated news channel.",
                        "maxLength": 63,
                        "type": "string"
                      },
                      "checklist": {
                        "description": "Checklist is the standing markdown the agent reviews on each heartbeat\npulse. Only used for heartbeat schedules.",
                        "maxLength": 32768,
                        "type": "string"
                      },
                      "retry": {
                        "description": "Retry overrides the default retry policy for runs from this schedule.",
                        "properties": {
                          "maxAttempts": {
                            "description": "MaxAttempts is the number of tries for a transient failure before the run\nis marked failed. Zero uses the provider default (3).",
                            "format": "int32",
                            "minimum": 0,
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "runAt": {
                        "description": "RunAt is the one-shot fire time for wakeup schedules (RFC3339).",
                        "format": "date-time",
                        "type": "string"
                      },
                      "schedule": {
                        "description": "Schedule is a 5-field cron expression for cron and heartbeat types. For\nwakeup type it is empty and RunAt is used instead.",
                        "maxLength": 253,
                        "type": "string"
                      },
                      "suspend": {
                        "description": "Suspend halts firing without deleting the schedule.",
                        "type": "boolean"
                      },
                      "task": {
                        "description": "Task is the prompt run on each fire for cron and wakeup schedules.",
                        "maxLength": 32768,
                        "type": "string"
                      },
                      "timeZone": {
                        "description": "TimeZone is the IANA timezone the cron expression is evaluated in (e.g.\n\"Europe/Vilnius\"). Empty means UTC.",
                        "maxLength": 64,
                        "type": "string"
                      },
                      "type": {
                        "description": "Type is cron, wakeup, or heartbeat.",
                        "enum": [
                          "cron",
                          "wakeup",
                          "heartbeat"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "agentRef",
                      "type"
                    ],
                    "type": "object"
                  },
                  "status": {
                    "description": "ScheduleStatus is the observed schedule state.",
                    "properties": {
                      "consecutiveFailures": {
                        "description": "ConsecutiveFailures counts back-to-back failed runs; drives extended\nbackoff and eventual disable.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "disabledReason": {
                        "description": "DisabledReason is set when the scheduler disables the schedule on a\npermanent error (revoked credential, deleted agent).",
                        "type": "string"
                      },
                      "lastRun": {
                        "description": "LastRun is the most recent fire time.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRunID": {
                        "description": "LastRunID references the Run produced by the most recent fire.",
                        "maxLength": 128,
                        "type": "string"
                      },
                      "nextRun": {
                        "description": "NextRun is the next planned fire time.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "observedGeneration": {
                        "description": "ObservedGeneration is the spec generation the scheduler last reconciled.\nWhen it lags metadata.generation the schedule was edited, and the\nscheduler re-derives NextRun from the new spec instead of honoring the\nstale value computed from the previous cron/timezone/runAt.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "served": true,
              "storage": true,
              "subresources": {
                "status": {}
              }
            }
          ]
        }
      }
    },
    {
      "source": "providers/agents/deploy/chart/files/schemas/toolsets.agents.faros.sh.yaml",
      "schema": {
        "apiVersion": "apis.kcp.io/v1alpha1",
        "kind": "APIResourceSchema",
        "metadata": {
          "name": "v260714-8e565fc.toolsets.agents.faros.sh"
        },
        "spec": {
          "group": "agents.faros.sh",
          "names": {
            "kind": "Toolset",
            "listKind": "ToolsetList",
            "plural": "toolsets",
            "shortNames": [
              "ts"
            ],
            "singular": "toolset"
          },
          "scope": "Cluster",
          "versions": [
            {
              "additionalPrinterColumns": [
                {
                  "jsonPath": ".spec.displayName",
                  "name": "Display",
                  "type": "string"
                }
              ],
              "name": "v1alpha1",
              "schema": {
                "description": "Toolset is a named, reusable bundle of tool grants \u2014 built-in families plus\nconnection-backed tools and approval rules \u2014 that many Agents can link and\nshare. An agent references toolsets from its per-class tool policy; at run\ntime their families/connections/approval are merged into the agent's grant.",
                "properties": {
                  "apiVersion": {
                    "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                    "type": "string"
                  },
                  "metadata": {
                    "type": "object"
                  },
                  "spec": {
                    "description": "ToolsetSpec is the user-authored bundle definition.",
                    "properties": {
                      "connections": {
                        "description": "Connections names Connection resources (e.g. mcp/github) whose tools this\ntoolset exposes.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "description": {
                        "description": "Description explains what the toolset is for.",
                        "maxLength": 1024,
                        "type": "string"
                      },
                      "displayName": {
                        "description": "DisplayName is a human-friendly label.",
                        "maxLength": 253,
                        "type": "string"
                      },
                      "families": {
                        "description": "Families names built-in tool families to include: \"core\", \"web\",\n\"github\", \"mcp\", \"edges\".",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "requireApproval": {
                        "description": "RequireApproval lists tool names (or wildcards like \"github:*\") that must\nbe approved by the user before they run.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "status": {
                    "description": "ToolsetStatus is the observed toolset state.",
                    "properties": {
                      "usedBy": {
                        "description": "UsedBy counts the agents currently linking this toolset. Informational.",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "served": true,
              "storage": true,
              "subresources": {
                "status": {}
              }
            }
          ]
        }
      }
    },
    {
      "source": "providers/agents/deploy/chart/files/schemas/triggers.agents.faros.sh.yaml",
      "schema": {
        "apiVersion": "apis.kcp.io/v1alpha1",
        "kind": "APIResourceSchema",
        "metadata": {
          "name": "v260724-50c73a4.triggers.agents.faros.sh"
        },
        "spec": {
          "group": "agents.faros.sh",
          "names": {
            "kind": "Trigger",
            "listKind": "TriggerList",
            "plural": "triggers",
            "shortNames": [
              "trig"
            ],
            "singular": "trigger"
          },
          "scope": "Cluster",
          "versions": [
            {
              "additionalPrinterColumns": [
                {
                  "jsonPath": ".spec.agentRef",
                  "name": "Agent",
                  "type": "string"
                },
                {
                  "jsonPath": ".spec.source",
                  "name": "Source",
                  "type": "string"
                },
                {
                  "jsonPath": ".status.lastFired",
                  "name": "LastFired",
                  "type": "date"
                },
                {
                  "jsonPath": ".spec.suspend",
                  "name": "Suspended",
                  "type": "boolean"
                }
              ],
              "name": "v1alpha1",
              "schema": {
                "description": "Trigger fires an agent run on an external event \u2014 the event-based half\nof automation, complementing the time-based Schedule. Webhook sources\nget a hub-routed inbound endpoint; other sources subscribe through a\nConnection.",
                "properties": {
                  "apiVersion": {
                    "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                    "type": "string"
                  },
                  "metadata": {
                    "type": "object"
                  },
                  "spec": {
                    "description": "TriggerSpec is the user-authored trigger configuration.",
                    "properties": {
                      "agentRef": {
                        "description": "AgentRef names the Agent this trigger drives.",
                        "maxLength": 253,
                        "minLength": 1,
                        "type": "string"
                      },
                      "channelRef": {
                        "description": "ChannelRef names the agent channel this trigger's output is delivered to\n(a Name in the agent's spec.channels). Empty means the agent's primary\nchannel. Lets, e.g., an \"incidents\" trigger post to a dedicated channel.",
                        "maxLength": 63,
                        "type": "string"
                      },
                      "connectionRef": {
                        "description": "ConnectionRef names the Connection backing non-webhook sources (channel,\ngithub, connection). Empty for webhook sources.",
                        "maxLength": 253,
                        "type": "string"
                      },
                      "filter": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "Filter narrows which events fire the trigger. Keys are source-specific:\ne.g. \"eventType\" and \"labels\" for github, \"match\" (regex) for channel,\n\"path\" or \"header.<name>\" for webhook.",
                        "type": "object"
                      },
                      "source": {
                        "description": "Source is where events come from: webhook or github. Both provision a\nhub-routed webhook endpoint and fire on inbound delivery.",
                        "enum": [
                          "webhook",
                          "github"
                        ],
                        "type": "string"
                      },
                      "suspend": {
                        "description": "Suspend halts firing without deleting the trigger.",
                        "type": "boolean"
                      },
                      "task": {
                        "description": "Task is the prompt run when the trigger fires. The event payload is made\navailable to the run as additional input.",
                        "maxLength": 32768,
                        "type": "string"
                      }
                    },
                    "required": [
                      "agentRef",
                      "source"
                    ],
                    "type": "object"
                  },
                  "status": {
                    "description": "TriggerStatus is the observed trigger state.",
                    "properties": {
                      "consecutiveFailures": {
                        "description": "ConsecutiveFailures counts back-to-back failed runs from this trigger.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "disabledReason": {
                        "description": "DisabledReason is set when the provider disables the trigger on a\npermanent error (deleted agent, revoked connection).",
                        "type": "string"
                      },
                      "lastFired": {
                        "description": "LastFired is the most recent time an event fired a run.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRunID": {
                        "description": "LastRunID references the Run produced by the most recent event.",
                        "maxLength": 128,
                        "type": "string"
                      },
                      "webhookPath": {
                        "description": "WebhookPath is the hub-relative inbound endpoint for webhook sources.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "served": true,
              "storage": true,
              "subresources": {
                "status": {}
              }
            }
          ]
        }
      }
    }
  ]
}
