Initial curated ITWorx_MCP_Hub source from 368fba691ea8d23403b4d56b53b5ec670d7c5020

This commit is contained in:
Public Source Publisher committed 2026-10-01 01:36:21 +02:00
commit cb5be898ea
663 files changed
+82674

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
# Declarative catalog
This directory is the desired-state source for ITWorx MCP Hub. Catalog documents use **JSON-compatible YAML**: every `.yaml` file is valid YAML 1.2 and also valid JSON. This deliberate restriction lets the design pack validate the catalog using only Python's standard library before `uv`, PyYAML, or application dependencies exist.
## Reconciliation rules
1. Parse and validate every document against `contracts/schemas/`.
2. Normalize slugs and endpoint aliases.
3. Resolve template references without reading secrets.
4. Calculate a deterministic desired-state hash.
5. Produce a preview with create/update/disable/no-op actions.
6. Reject destructive or privilege-expanding drift unless the active policy permits it.
7. Apply through the ContextForge adapter and Hub repositories.
8. Read back actual state and compare it with desired state.
9. Record an append-only audit event and reconciliation evidence.
Catalog files never contain credentials. They contain references such as `docker-secret://gitea_mcp_token` or `authentik-client://itworx-mcp-hub`.
## Verification states
- `verified`: discovered and tested against the real target;
- `unverified`: plausible desired state that must not be reported as live;
- `external-input-required`: implementation is complete but a credential, URL, or target mapping is unavailable;
- `fake-only`: deterministic fake is the current test binding.
The initial project files intentionally use discovery placeholders. `WP-145` replaces only facts it can prove and retains explicit placeholders for everything else.
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {"name": "AppOps Operator", "slug": "appops-operator"},
"spec": {
"description": "Bounded server inspection and typed AppOps operations governed by identity, binding and exact-target policy without shell or Docker socket access.",
"allowedRiskClasses": ["R0", "R1", "R2", "R3"],
"scopeTemplates": ["project:{project}:read", "project:{project}:write"],
"toolAllowPatterns": ["server.*"],
"toolDenyPatterns": ["server.*.admin", "server.shell.*", "server.secret.*", "server.docker.*"],
"environmentConstraints": {"productionWrites": true}
}
}
+42
View File
@@ -0,0 +1,42 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {
"name": "Developer",
"slug": "developer"
},
"spec": {
"description": "Read capabilities plus bounded non-production developer workflows. Write tools remain absent from v1.0.",
"allowedRiskClasses": [
"R0",
"R1",
"R2"
],
"scopeTemplates": [
"hub:catalog:read",
"project:{project}:read",
"project:{project}:develop"
],
"toolAllowPatterns": [
"project.status.get",
"knowledge.*",
"gitea.*.list",
"gitea.repository.get",
"gitea.code.search",
"gitea.file.read",
"deployment.project.status",
"deployment.stack.inspect"
],
"toolDenyPatterns": [
"*.delete",
"*.execute",
"*.restart",
"*.redeploy",
"*.rollback",
"database.query.*"
],
"environmentConstraints": {
"productionWrites": false
}
}
}
@@ -0,0 +1,43 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {
"name": "Gitea Controlled Writer",
"slug": "gitea-controlled-writer"
},
"spec": {
"description": "Bounded production writes through safe change branches, atomic changesets, managed validation, reviewed pull requests, verified exact-head merge and merged-branch cleanup.",
"allowedRiskClasses": ["R2", "R3"],
"scopeTemplates": ["project:{project}:read", "project:{project}:write"],
"toolAllowPatterns": [
"gitea.repository.create",
"gitea.branchprotection.ensure",
"gitea.portfolio.governance.apply",
"gitea.branch.create",
"gitea.issue.create",
"gitea.issue.update",
"gitea.issue.comment.create",
"gitea.file.create",
"gitea.file.update",
"gitea.file.delete",
"gitea.pullrequest.create",
"gitea.pullrequest.update",
"gitea.pullrequest.close",
"gitea.pullrequest.validation.ensure",
"gitea.pullrequest.sync",
"gitea.pullrequest.merge",
"gitea.branch.delete",
"gitea.changeset.apply",
"gitea.validation.run",
"gitea.workspace.run",
"gitea.orchestration.start"
],
"toolDenyPatterns": [
"gitea.repository.delete",
"gitea.*.admin",
"gitea.*.force*",
"gitea.repository.*.update"
],
"environmentConstraints": {"productionWrites": true}
}
}
@@ -0,0 +1,43 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {
"name": "Infrastructure Reader",
"slug": "infrastructure-reader"
},
"spec": {
"description": "Read-only Unraid and internal Hub observability with secret-safe output.",
"allowedRiskClasses": [
"R0",
"R1"
],
"scopeTemplates": [
"project:{project}:read",
"infra:unraid:read"
],
"toolAllowPatterns": [
"project.status.get",
"unraid.host.*",
"unraid.storage.*",
"unraid.container.list",
"unraid.container.inspect",
"unraid.container.health",
"unraid.container.logs",
"unraid.network.list",
"observability.health.summary",
"observability.logs.search"
],
"toolDenyPatterns": [
"*.create",
"*.update",
"*.delete",
"*.execute",
"*.restart",
"*.rotate",
"*.renew"
],
"environmentConstraints": {
"productionWrites": false
}
}
}
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {"name": "Knowledge Hub reviewed intake", "slug": "knowledge-intake"},
"spec": {
"description": "Read and compare Knowledge Hub content, then submit bounded document proposals for human review; no publication capability.",
"allowedRiskClasses": ["R1", "R2"],
"scopeTemplates": ["project:{project}:read", "project:{project}:write"],
"toolAllowPatterns": ["knowledge.ingestion.search", "knowledge.ingestion.context", "knowledge.ingestion.extract", "knowledge.workspace.roots", "knowledge.workspace.children", "knowledge.workspace.page", "knowledge.ingestion.analyze", "knowledge.ingestion.text_proposal", "knowledge.ingestion.submit", "knowledge.ingestion.status"],
"toolDenyPatterns": ["*.publish", "*.approve", "*.delete"],
"environmentConstraints": {"productionWrites": true}
}
}
@@ -0,0 +1,35 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {
"name": "Fleet Ops Reader",
"slug": "mobilityops-reader"
},
"spec": {
"description": "Read-only Fleet Ops operational summary, attention list, vehicle status and knowledge search.",
"allowedRiskClasses": [
"R0",
"R1"
],
"scopeTemplates": [
"hub:catalog:read",
"project:{project}:read"
],
"toolAllowPatterns": [
"project.status.get",
"mobilityops.*"
],
"toolDenyPatterns": [
"*.create",
"*.update",
"*.delete",
"*.execute",
"*.restart",
"*.redeploy",
"*.rollback"
],
"environmentConstraints": {
"productionWrites": false
}
}
}
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {"name": "OpenCode Governed Agent", "slug": "opencode-agent"},
"spec": {
"description": "Preview-gated asynchronous OpenCode jobs in explicitly registered workspaces and exact allowlisted models.",
"allowedRiskClasses": ["R0", "R1", "R2", "R3"],
"scopeTemplates": ["project:{project}:read", "project:{project}:write"],
"toolAllowPatterns": ["opencode.*"],
"toolDenyPatterns": ["opencode.*.shell*", "opencode.*.admin*", "opencode.*.provider*"],
"environmentConstraints": {"productionWrites": true}
}
}
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {"name": "OpenCode Read-Only Analysis", "slug": "opencode-analysis"},
"spec": {
"description": "Optional asynchronous plan analysis with a deliberately read-only workspace mount.",
"allowedRiskClasses": ["R0", "R1"],
"scopeTemplates": ["project:{project}:read"],
"toolAllowPatterns": ["opencode.analysis.*", "opencode.delivery.repositories.list", "opencode.delivery.jobs.list", "opencode.delivery.status", "opencode.delivery.result"],
"toolDenyPatterns": ["opencode.job.*", "opencode.analysis.*.shell*", "opencode.analysis.*.admin*"],
"environmentConstraints": {"productionWrites": false}
}
}
@@ -0,0 +1,40 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {
"name": "Production Observer",
"slug": "production-observer"
},
"spec": {
"description": "Sanitized production health, deployment state, metadata and bounded logs.",
"allowedRiskClasses": [
"R0",
"R1"
],
"scopeTemplates": [
"project:{project}:read",
"environment:prod:observe"
],
"toolAllowPatterns": [
"project.status.get",
"unraid.container.list",
"unraid.container.inspect",
"unraid.container.health",
"unraid.container.logs",
"unraid.project.summary",
"deployment.project.status",
"deployment.stack.inspect",
"observability.health.summary",
"observability.logs.search"
],
"toolDenyPatterns": [
"*.execute",
"*.restart",
"*.redeploy",
"*.rollback"
],
"environmentConstraints": {
"productionWrites": false
}
}
}
@@ -0,0 +1,73 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {
"name": "Project Reader",
"slug": "project-reader"
},
"spec": {
"description": "Project knowledge, repository metadata and sanitized health/log visibility without writes.",
"allowedRiskClasses": [
"R0",
"R1"
],
"scopeTemplates": [
"hub:catalog:read",
"project:{project}:read"
],
"toolAllowPatterns": [
"project.status.get",
"knowledge.*",
"gitea.capabilities.get",
"gitea.connection.check",
"gitea.selftest.run",
"gitea.repository.get",
"gitea.repository.context",
"gitea.repository.health",
"gitea.branchprotection.get",
"gitea.branchprotection.preview",
"gitea.branch.list",
"gitea.commit.list",
"gitea.commit.get",
"gitea.ref.compare",
"gitea.release.list",
"gitea.issue.list",
"gitea.issue.search",
"gitea.pullrequest.list",
"gitea.pullrequest.get",
"gitea.pullrequest.feedback",
"gitea.commitstatus.list",
"gitea.code.search",
"gitea.research.search",
"gitea.research.fetch",
"gitea.file.read",
"gitea.tree.list",
"gitea.changeset.preview",
"gitea.validation.get",
"gitea.validation.failure.get",
"gitea.validation.list",
"gitea.change.status",
"gitea.change.review",
"gitea.change.reconcile",
"gitea.workspace.status",
"gitea.portfolio.health",
"gitea.portfolio.governance.preview",
"gitea.portfolio.governance.verify",
"gitea.orchestration.plan",
"deployment.project.status",
"deployment.stack.inspect"
],
"toolDenyPatterns": [
"*.create",
"*.update",
"*.delete",
"*.execute",
"*.restart",
"*.redeploy",
"*.rollback"
],
"environmentConstraints": {
"productionWrites": false
}
}
}
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "CapabilityPack",
"metadata": {"name": "ProjectBrain Operator", "slug": "projectbrain-operator"},
"spec": {
"description": "Durable project context, review-safe memory, governed feature delivery and execution feedback through ProjectBrain.",
"allowedRiskClasses": ["R0", "R1", "R2"],
"scopeTemplates": ["project:{project}:read", "project:{project}:write"],
"toolAllowPatterns": ["projectbrain.*"],
"toolDenyPatterns": ["projectbrain.*.admin", "projectbrain.*.force*"],
"environmentConstraints": {"productionWrites": true}
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"CapabilityPack","metadata":{"name":"Google Stitch Designer","slug":"stitch-designer"},"spec":{"description":"Curated Google Stitch project and screen design workflow without credential exposure or destructive tools.","allowedRiskClasses":["R1","R2"],"scopeTemplates":["project:{project}:read","project:{project}:write"],"toolAllowPatterns":["stitch.*"],"toolDenyPatterns":["stitch.*.delete","stitch.*.admin"],"environmentConstraints":{"productionWrites":true}}}
+15
View File
@@ -0,0 +1,15 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {"name": "AppOps governed connector", "slug": "appops-default"},
"spec": {
"connectorType": "appops",
"image": "local-build://connector-appops",
"transport": "streamable-http",
"credentialReferences": ["docker-secret://appops_hub_service_token"],
"allowedNetworkTargets": ["config://APPOPS_ENDPOINT"],
"configuration": {"readOnly": false, "writeMode": "approval-then-typed-execute", "requestTimeoutSeconds": 60, "maxResponseBytes": 2097152},
"health": {"path": "/health/ready", "intervalSeconds": 30, "failureThreshold": 3},
"defaultRiskClasses": ["R0", "R1", "R2", "R3"]
}
}
+35
View File
@@ -0,0 +1,35 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Authentik Default",
"slug": "authentik-default"
},
"spec": {
"connectorType": "authentik",
"image": "local-build://connector-authentik",
"transport": "streamable-http",
"credentialReferences": [
"docker-secret://authentik_mcp_token"
],
"allowedNetworkTargets": [
"config://AUTHENTIK_BASE_URL"
],
"configuration": {
"readOnly": true,
"includeApplications": true,
"includeProviders": true,
"includeOutpostHealth": true,
"includeTokenValues": false
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
@@ -0,0 +1,39 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Database Metadata Default",
"slug": "database-metadata-default"
},
"spec": {
"connectorType": "database",
"image": "local-build://connector-database",
"transport": "streamable-http",
"credentialReferences": [
"docker-secret://project_database_readonly_dsn"
],
"allowedNetworkTargets": [
"catalog-project-binding://database"
],
"configuration": {
"mode": "metadata-only",
"statementTimeoutMs": 3000,
"maxRows": 100,
"allowSchemas": [],
"denySchemas": [
"pg_catalog",
"information_schema"
],
"allowAdHocQueries": false
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
@@ -0,0 +1,36 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Deployment Readonly Default",
"slug": "deployment-readonly-default"
},
"spec": {
"connectorType": "deployment",
"image": "local-build://connector-deployment",
"transport": "streamable-http",
"credentialReferences": [
"service-identity://docker-read-broker"
],
"allowedNetworkTargets": [
"service://docker-read-broker"
],
"configuration": {
"readOnly": true,
"discoverComposeMetadata": true,
"allowedActions": [
"status",
"inspect"
]
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
+37
View File
@@ -0,0 +1,37 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Gitea Default",
"slug": "gitea-default"
},
"spec": {
"connectorType": "gitea",
"image": "local-build://connector-gitea",
"transport": "streamable-http",
"credentialReferences": [
"docker-secret://gitea_mcp_token",
"docker-secret://gitea_mcp_write_token"
],
"allowedNetworkTargets": [
"config://GITEA_BASE_URL"
],
"configuration": {
"readOnly": false,
"writeMode": "pr-first",
"requestTimeoutSeconds": 15,
"maxPageSize": 100,
"exposePrivateRepoMetadata": "authorized-only"
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1",
"R2"
]
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {"name": "Knowledge Hub reviewed intake", "slug": "ingestion-default"},
"spec": {
"connectorType": "ingestion",
"image": "local-build://connector-ingestion",
"transport": "streamable-http",
"credentialReferences": ["docker-secret://knowledge_hub_ingestion_token"],
"allowedNetworkTargets": ["config://KNOWLEDGE_HUB_ENDPOINT"],
"configuration": {"maxFiles": 5, "maxFileBytes": 10485760, "maxTotalBytes": 26214400, "workspaceReadEnabled": false, "reviewRequired": true},
"health": {"path": "/health/ready", "intervalSeconds": 30, "failureThreshold": 3},
"defaultRiskClasses": ["R1", "R2"]
}
}
+34
View File
@@ -0,0 +1,34 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Knowledge Default",
"slug": "knowledge-default"
},
"spec": {
"connectorType": "knowledge",
"image": "local-build://connector-knowledge",
"transport": "streamable-http",
"credentialReferences": [],
"allowedNetworkTargets": [],
"configuration": {
"indexSecrets": false,
"maxDocumentBytes": 1048576,
"maxSearchResults": 20,
"allowedUriSchemes": [
"discovery",
"itworx-docs",
"itworx-git"
]
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
@@ -0,0 +1,33 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Fleet Ops read-only connector",
"slug": "mobilityops-default"
},
"spec": {
"connectorType": "mobilityops",
"image": "local-build://connector-mobilityops",
"transport": "streamable-http",
"credentialReferences": [
"docker-secret://mobilityops_service_token"
],
"allowedNetworkTargets": [
"config://MOBILITYOPS_ENDPOINT"
],
"configuration": {
"readOnly": true,
"requestTimeoutSeconds": 15,
"maxResponseBytes": 262144
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
@@ -0,0 +1,33 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Nginx Proxy Manager Default",
"slug": "nginx-proxy-manager-default"
},
"spec": {
"connectorType": "nginx-proxy-manager",
"image": "local-build://connector-nginx-proxy-manager",
"transport": "streamable-http",
"credentialReferences": [
"docker-secret://npm_mcp_token"
],
"allowedNetworkTargets": [
"config://NPM_BASE_URL"
],
"configuration": {
"readOnly": true,
"includeCertificates": true,
"exposeAccessLists": false
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
@@ -0,0 +1,34 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Observability Default",
"slug": "observability-default"
},
"spec": {
"connectorType": "observability",
"image": "local-build://connector-observability",
"transport": "streamable-http",
"credentialReferences": [
"docker-secret://observability_read_token"
],
"allowedNetworkTargets": [
"config://OBSERVABILITY_BASE_URL"
],
"configuration": {
"readOnly": true,
"maxLookbackHours": 24,
"maxLogEvents": 500,
"redactionProfile": "strict"
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {"name": "OpenCode governed job broker", "slug": "opencode-default"},
"spec": {
"connectorType": "opencode",
"image": "local-build://openchamber-mcp",
"transport": "streamable-http",
"credentialReferences": ["docker-secret://connector_identity_signing_key"],
"allowedNetworkTargets": ["service://opencode:4096"],
"configuration": {"readOnly": false, "writeMode": "preview-token-first", "requestTimeoutSeconds": 30, "maxResponseBytes": 1048576},
"health": {"path": "/ready", "intervalSeconds": 30, "failureThreshold": 3},
"defaultRiskClasses": ["R0", "R1", "R2"]
}
}
@@ -0,0 +1,15 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {"name": "OpenCode read-only analysis broker", "slug": "opencode-readonly-default"},
"spec": {
"connectorType": "opencode-readonly",
"image": "local-build://openchamber-mcp",
"transport": "streamable-http",
"credentialReferences": ["docker-secret://connector_identity_signing_key"],
"allowedNetworkTargets": ["service://opencode-readonly:4096"],
"configuration": {"readOnly": true, "agent": "plan", "workspaceMount": "read-only", "requestTimeoutSeconds": 30, "maxResponseBytes": 1048576},
"health": {"path": "/ready", "intervalSeconds": 30, "failureThreshold": 3},
"defaultRiskClasses": ["R0", "R1"]
}
}
@@ -0,0 +1,15 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {"name": "ProjectBrain governed connector", "slug": "projectbrain-default"},
"spec": {
"connectorType": "projectbrain",
"image": "local-build://connector-projectbrain",
"transport": "streamable-http",
"credentialReferences": ["docker-secret://projectbrain_hub_service_token"],
"allowedNetworkTargets": ["config://PROJECTBRAIN_ENDPOINT"],
"configuration": {"readOnly": false, "writeMode": "review-and-pr-first", "requestTimeoutSeconds": 30, "maxResponseBytes": 8388608},
"health": {"path": "/health/ready", "intervalSeconds": 30, "failureThreshold": 3},
"defaultRiskClasses": ["R0", "R1", "R2"]
}
}
+1
View File
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ConnectorTemplate","metadata":{"name":"Google Stitch governed connector","slug":"stitch-default"},"spec":{"connectorType":"stitch","image":"local-build://connector-stitch","transport":"streamable-http","credentialReferences":["docker-secret://stitch_api_key"],"allowedNetworkTargets":["service://stitch.googleapis.com/mcp"],"configuration":{"readOnly":false,"writeMode":"bounded-design-writes","requestTimeoutSeconds":120,"maxResponseBytes":1048576},"health":{"path":"/health/ready","intervalSeconds":30,"failureThreshold":3},"defaultRiskClasses":["R1","R2"]}}
+40
View File
@@ -0,0 +1,40 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ConnectorTemplate",
"metadata": {
"name": "Unraid Default",
"slug": "unraid-default"
},
"spec": {
"connectorType": "unraid",
"image": "local-build://connector-unraid",
"transport": "streamable-http",
"credentialReferences": [
"service-identity://docker-read-broker"
],
"allowedNetworkTargets": [
"service://docker-read-broker"
],
"configuration": {
"readOnly": true,
"allowedBrokerRoutes": [
"/v1/host",
"/v1/storage",
"/v1/containers",
"/v1/containers/{registered_id}",
"/v1/containers/{registered_id}/logs",
"/v1/networks"
],
"maxLogLines": 500
},
"health": {
"path": "/health/ready",
"intervalSeconds": 30,
"failureThreshold": 3
},
"defaultRiskClasses": [
"R0",
"R1"
]
}
}
@@ -0,0 +1,25 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "010 Deny Generic Privileged Tools",
"slug": "010-deny-generic-privileged-tools"
},
"spec": {
"priority": 10,
"description": "Irrevocably block generic shell, filesystem, Docker, SQL, secret and arbitrary HTTP capabilities.",
"match": {
"toolPatterns": [
"shell.*",
"filesystem.*",
"docker.raw_*",
"database.execute_*",
"secrets.*",
"http.request_*"
]
},
"conditions": {},
"decision": "deny_and_alert",
"terminal": true
}
}
@@ -0,0 +1,34 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "020 Project Scope Isolation",
"slug": "020-project-scope-isolation"
},
"spec": {
"priority": 20,
"description": "Require the token project claim, endpoint project and requested resource project to be identical.",
"match": {
"resourceTypes": [
"tool",
"resource",
"prompt"
]
},
"conditions": {
"allEqual": [
"claims.project",
"route.project",
"request.project"
],
"requiredClaims": [
"sub",
"aud",
"scope",
"project"
]
},
"decision": "allow_if_conditions",
"terminal": false
}
}
@@ -0,0 +1,24 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "030 Production Destructive Deny V1.1",
"slug": "030-production-destructive-deny-v1-1"
},
"spec": {
"priority": 30,
"description": "Reject administrative and unknown operations in production; bounded project-scoped R2/R3 operations require separate explicit allows.",
"match": {
"environmentClassifications": [
"production"
],
"riskClasses": [
"R4",
"RX"
]
},
"conditions": {},
"decision": "deny_and_alert",
"terminal": true
}
}
@@ -0,0 +1,45 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "035 Gitea Controlled Writes V1.1",
"slug": "035-gitea-controlled-writes-v1-1"
},
"spec": {
"priority": 35,
"description": "Allow the bounded Gitea R2 operations for the registered or account-discovered gitea-all production project and an enabled bound client.",
"match": {
"project": "gitea-all",
"environmentClassifications": ["production"],
"connectors": ["gitea"],
"riskClasses": ["R2"],
"toolPatterns": [
"gitea.repository.create",
"gitea.branchprotection.ensure",
"gitea.portfolio.governance.apply",
"gitea.branch.create",
"gitea.issue.create",
"gitea.issue.update",
"gitea.issue.comment.create",
"gitea.file.create",
"gitea.file.update",
"gitea.file.delete",
"gitea.pullrequest.create",
"gitea.pullrequest.update",
"gitea.pullrequest.close",
"gitea.pullrequest.validation.ensure",
"gitea.changeset.apply",
"gitea.validation.run",
"gitea.workspace.run",
"gitea.orchestration.start"
]
},
"conditions": {
"requireEnabledClient": true,
"requireBinding": true,
"maxArgumentBytes": 1200000
},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"Policy","metadata":{"name":"036 Gitea Loop Reviewed Lifecycle V1","slug":"036-gitea-loop-reviewed-lifecycle-v1"},"spec":{"priority":36,"description":"Allow SHA-fenced PR synchronization and exact-head verified merge for the bound ProjectBrain/Gitea delivery loop; connector safety gates remain mandatory.","match":{"project":"gitea-loop","environmentClassifications":["production"],"connectors":["gitea"],"riskClasses":["R3"],"toolPatterns":["gitea.pullrequest.sync","gitea.pullrequest.merge"]},"conditions":{"requireEnabledClient":true,"requireBinding":true,"maxArgumentBytes":65536},"decision":"allow_if_conditions","terminal":true}}
@@ -0,0 +1,30 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "036 Gitea Reviewed Lifecycle V1",
"slug": "036-gitea-reviewed-lifecycle-v1"
},
"spec": {
"priority": 36,
"description": "Allow SHA-fenced PR synchronization, verified exact-head merge and merged-branch cleanup only for the bound gitea-all production client; connector preconditions remain mandatory.",
"match": {
"project": "gitea-all",
"environmentClassifications": ["production"],
"connectors": ["gitea"],
"riskClasses": ["R3"],
"toolPatterns": [
"gitea.pullrequest.sync",
"gitea.pullrequest.merge",
"gitea.branch.delete"
]
},
"conditions": {
"requireEnabledClient": true,
"requireBinding": true,
"maxArgumentBytes": 65536
},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,19 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {"name": "037 ProjectBrain Governed Operations", "slug": "037-projectbrain-governed-operations"},
"spec": {
"priority": 37,
"description": "Allow ProjectBrain R2 mutations only for the bound gitea-all production client; ProjectBrain independently enforces review, approval, branch, SHA and validation gates.",
"match": {
"project": "gitea-all",
"environmentClassifications": ["production"],
"connectors": ["projectbrain"],
"riskClasses": ["R2"],
"toolPatterns": ["projectbrain.*"]
},
"conditions": {"requireEnabledClient": true, "requireBinding": true, "maxArgumentBytes": 1200000},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,29 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "038 ProjectBrain Analysis Operations",
"slug": "038-projectbrain-analysis-operations"
},
"spec": {
"priority": 38,
"description": "Allow only the bounded ProjectBrain analysis job mutations for clients that already hold an enabled inherited Gitea portfolio binding.",
"match": {
"project": "gitea-analysis",
"environmentClassifications": ["production"],
"connectors": ["projectbrain"],
"riskClasses": ["R2"],
"toolPatterns": [
"projectbrain.analysis.start",
"projectbrain.analysis.cancel"
]
},
"conditions": {
"requireEnabledClient": true,
"requireBinding": true,
"maxArgumentBytes": 65536
},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,20 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {"name": "039 ProjectBrain Finding Loop Operations", "slug": "039-projectbrain-finding-loop-operations"},
"spec": {
"priority": 39,
"description": "Allow bounded repository bootstrap plus ProjectBrain content, context, analysis, finding, autonomous-controller and approval-gated delivery mutations exposed by the gitea-loop profile.",
"match": {
"project": "gitea-loop",
"environmentClassifications": ["production"],
"connectors": ["gitea", "projectbrain"],
"riskClasses": ["R2"],
"toolPatterns": ["gitea.repository.create", "gitea.workspace.run", "gitea.branchprotection.ensure",
"gitea.pullrequest.validation.ensure", "projectbrain.analysis.start", "projectbrain.analysis.cancel", "projectbrain.portfolio.repository.reconcile", "projectbrain.portfolio.repository.exclusion.set", "projectbrain.brainstorm.save", "projectbrain.knowledge.save", "projectbrain.documentation.save", "projectbrain.memory.save", "projectbrain.contextpack.create", "projectbrain.feedback.record", "projectbrain.finding.*", "projectbrain.delivery.*", "projectbrain.autonomy.*"]
},
"conditions": {"requireEnabledClient": true, "requireBinding": true, "maxArgumentBytes": 1200000},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,19 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {"name": "040 OpenCode Governed Jobs", "slug": "040-opencode-governed-jobs"},
"spec": {
"priority": 40,
"description": "Allow managed Gitea workspace snapshots, preview-gated OpenCode jobs, and bounded delivery execution only for the separately bound openchamber-agent production client. Final acceptance remains external to OpenChamber.",
"match": {
"project": "openchamber-agent",
"environmentClassifications": ["production"],
"connectors": ["opencode"],
"riskClasses": ["R2", "R3"],
"toolPatterns": ["opencode.workspace.ensure", "opencode.job.start", "opencode.job.cancel", "opencode.delivery.control.start", "opencode.delivery.control.retry", "opencode.delivery.control.cancel"]
},
"conditions": {"requireEnabledClient": true, "requireBinding": true, "maxArgumentBytes": 65536},
"decision": "allow_if_conditions",
"terminal": true
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "040 Read Tool Allow",
"slug": "040-read-tool-allow"
},
"spec": {
"priority": 40,
"description": "Allow R0/R1 calls only when scope, capability pack, connector binding, input budget and output policy all pass.",
"match": {
"riskClasses": [
"R0",
"R1"
]
},
"conditions": {
"requireScope": true,
"requireCapabilityPack": true,
"requireConnectorBinding": true,
"requireInputValidation": true,
"requireOutputValidation": true,
"requireRedaction": true
},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,27 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {"name": "041 AppOps Governed Operations", "slug": "041-appops-governed-operations"},
"spec": {
"priority": 41,
"description": "Allow only bounded typed AppOps mutations after Hub identity, binding and AppOps exact-target policy checks; no generic shell, Docker socket or human-approval bypass is introduced.",
"match": {
"project": "server-ops",
"environmentClassifications": ["production"],
"connectors": ["appops"],
"riskClasses": ["R2", "R3"],
"toolPatterns": [
"server.operation.request",
"server.operation.execute",
"server.job.cancel",
"server.project.reconcile",
"server.deployment.target.enroll",
"server.deployment.apply",
"server.deployment.rollback"
]
},
"conditions": {"requireEnabledClient": true, "requireBinding": true, "maxArgumentBytes": 65536},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,31 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "042 Stitch Governed Design Writes",
"slug": "042-stitch-governed-design-writes"
},
"spec": {
"priority": 42,
"description": "Allow only bounded Stitch design creation and screen changes for the bound production Stitch project; deletion and administration remain denied.",
"match": {
"project": "stitch-design",
"environmentClassifications": ["production"],
"connectors": ["stitch"],
"riskClasses": ["R2"],
"toolPatterns": [
"stitch.project.create",
"stitch.screen.edit",
"stitch.screen.generate",
"stitch.screen.variants"
]
},
"conditions": {
"requireEnabledClient": true,
"requireBinding": true,
"maxArgumentBytes": 65536
},
"decision": "allow_if_conditions",
"terminal": true
}
}
@@ -0,0 +1,19 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {"name": "043 Knowledge Hub reviewed intake", "slug": "043-knowledge-intake-review-only"},
"spec": {
"priority": 43,
"description": "Allow only bounded document proposals for human review in the bound Knowledge Hub project.",
"match": {
"project": "knowledge-hub",
"environmentClassifications": ["production"],
"connectors": ["ingestion"],
"riskClasses": ["R2"],
"toolPatterns": ["knowledge.ingestion.analyze", "knowledge.ingestion.text_proposal", "knowledge.ingestion.submit"]
},
"conditions": {"requireEnabledClient": true, "requireBinding": true, "maxArgumentBytes": 3145728},
"decision": "allow_if_conditions",
"terminal": true
}
}
+25
View File
@@ -0,0 +1,25 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "050 Output Budget",
"slug": "050-output-budget"
},
"spec": {
"priority": 50,
"description": "Deny or truncate output beyond a tool-specific hard budget before returning it to a model.",
"match": {
"resourceTypes": [
"tool-result",
"resource-content"
]
},
"conditions": {
"maxDefaultBytes": 262144,
"maxDefaultItems": 500,
"redactionProfile": "strict"
},
"decision": "enforce",
"terminal": false
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "Global Default Deny",
"slug": "global-deny"
},
"spec": {
"priority": 0,
"description": "Deny every action unless a more specific allow policy and all security invariants match.",
"match": {},
"conditions": {},
"decision": "deny",
"terminal": false
}
}
+49
View File
@@ -0,0 +1,49 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "PromptManifest",
"metadata": {
"name": "Incident Triage",
"slug": "incident-triage"
},
"spec": {
"promptName": "incident-triage",
"description": "Triage a user-reported incident, gather bounded evidence, identify uncertainty and propose reversible operator actions without executing writes.",
"argumentsSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"focus": {
"type": [
"string",
"null"
],
"maxLength": 1000
},
"timeWindow": {
"type": [
"string",
"null"
],
"maxLength": 100
}
},
"required": []
},
"requiredScopes": [
"project:{project}:read"
],
"allowedToolPatterns": [
"project.status.*",
"deployment.*",
"unraid.container.*",
"observability.*",
"knowledge.*"
],
"messages": [
{
"role": "user",
"text": "Triage a user-reported incident, gather bounded evidence, identify uncertainty and propose reversible operator actions without executing writes. Show evidence, separate facts from inference, respect output limits, and do not perform or conceal write actions."
}
]
}
}
@@ -0,0 +1,48 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "PromptManifest",
"metadata": {
"name": "Project Health Review",
"slug": "project-health-review"
},
"spec": {
"promptName": "project-health-review",
"description": "Review project health using only authorized read-only status, deployment, container and observability capabilities.",
"argumentsSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"focus": {
"type": [
"string",
"null"
],
"maxLength": 1000
},
"timeWindow": {
"type": [
"string",
"null"
],
"maxLength": 100
}
},
"required": []
},
"requiredScopes": [
"project:{project}:read"
],
"allowedToolPatterns": [
"project.status.*",
"deployment.*",
"unraid.container.*",
"observability.health.*"
],
"messages": [
{
"role": "user",
"text": "Review project health using only authorized read-only status, deployment, container and observability capabilities. Show evidence, separate facts from inference, respect output limits, and do not perform or conceal write actions."
}
]
}
}
@@ -0,0 +1,48 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "PromptManifest",
"metadata": {
"name": "Release Readiness Review",
"slug": "release-readiness-review"
},
"spec": {
"promptName": "release-readiness-review",
"description": "Assess release readiness from repository, deployment, documentation and health evidence without publishing a release.",
"argumentsSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"focus": {
"type": [
"string",
"null"
],
"maxLength": 1000
},
"timeWindow": {
"type": [
"string",
"null"
],
"maxLength": 100
}
},
"required": []
},
"requiredScopes": [
"project:{project}:read"
],
"allowedToolPatterns": [
"knowledge.*",
"gitea.*",
"deployment.*",
"project.status.*"
],
"messages": [
{
"role": "user",
"text": "Assess release readiness from repository, deployment, documentation and health evidence without publishing a release. Show evidence, separate facts from inference, respect output limits, and do not perform or conceal write actions."
}
]
}
}
@@ -0,0 +1,46 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "PromptManifest",
"metadata": {
"name": "Repository Onboarding",
"slug": "repository-onboarding"
},
"spec": {
"promptName": "repository-onboarding",
"description": "Summarize an authorized repository, its documentation and current-state evidence for a new contributor.",
"argumentsSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"focus": {
"type": [
"string",
"null"
],
"maxLength": 1000
},
"timeWindow": {
"type": [
"string",
"null"
],
"maxLength": 100
}
},
"required": []
},
"requiredScopes": [
"project:{project}:read"
],
"allowedToolPatterns": [
"knowledge.*",
"gitea.*"
],
"messages": [
{
"role": "user",
"text": "Summarize an authorized repository, its documentation and current-state evidence for a new contributor. Show evidence, separate facts from inference, respect output limits, and do not perform or conceal write actions."
}
]
}
}
@@ -0,0 +1,48 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "PromptManifest",
"metadata": {
"name": "Security Posture Review",
"slug": "security-posture-review"
},
"spec": {
"promptName": "security-posture-review",
"description": "Review the project against ITWorx Hub security invariants using authorized metadata and explicitly cite missing evidence.",
"argumentsSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"focus": {
"type": [
"string",
"null"
],
"maxLength": 1000
},
"timeWindow": {
"type": [
"string",
"null"
],
"maxLength": 100
}
},
"required": []
},
"requiredScopes": [
"project:{project}:read"
],
"allowedToolPatterns": [
"knowledge.*",
"gitea.*",
"project.status.*",
"observability.health.*"
],
"messages": [
{
"role": "user",
"text": "Review the project against ITWorx Hub security invariants using authorized metadata and explicitly cite missing evidence. Show evidence, separate facts from inference, respect output limits, and do not perform or conceal write actions."
}
]
}
}
@@ -0,0 +1,111 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Deployment Project Status",
"slug": "deployment-project-status"
},
"spec": {
"canonicalName": "deployment.project.status",
"version": "1.0.0",
"connectorType": "deployment",
"description": "Return read-only deployment revision and service health for the current project.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"deploymentRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"revision": {
"type": [
"string",
"null"
],
"maxLength": 200
},
"sourceCommit": {
"type": [
"string",
"null"
],
"maxLength": 100
},
"status": {
"enum": [
"healthy",
"degraded",
"unavailable",
"unknown"
]
},
"services": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"containerRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"state": {
"type": "string",
"maxLength": 100
},
"health": {
"type": [
"string",
"null"
],
"maxLength": 100
}
},
"required": [
"name",
"containerRef",
"state",
"health"
]
}
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"deploymentRef",
"revision",
"sourceCommit",
"status",
"services",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
+101
View File
@@ -0,0 +1,101 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Deployment Stack Inspect",
"slug": "deployment-stack-inspect"
},
"spec": {
"canonicalName": "deployment.stack.inspect",
"version": "1.0.0",
"connectorType": "deployment",
"description": "Inspect a registered Compose deployment without exposing raw compose paths or write actions.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"deploymentRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
}
},
"required": [
"deploymentRef"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"deploymentRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"composeProject": {
"type": "string",
"maxLength": 200
},
"revision": {
"type": [
"string",
"null"
],
"maxLength": 200
},
"services": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"image": {
"type": "string",
"maxLength": 500
},
"containerRef": {
"type": [
"string",
"null"
],
"maxLength": 128
}
},
"required": [
"name",
"image",
"containerRef"
]
}
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"deploymentRef",
"composeProject",
"revision",
"services",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Branch Create", "slug": "gitea-branch-create"},
"spec": {
"canonicalName": "gitea.branch.create",
"version": "1.9.0",
"connectorType": "gitea",
"description": "Create any valid non-default branch from an existing safe ref. Never creates or modifies the default branch.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"branch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300},
"fromRef": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300}
},
"required": ["repositoryRef", "branch", "fromRef"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:write"]
}
}
+1
View File
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Branch Delete","slug":"gitea-branch-delete"},"spec":{"canonicalName":"gitea.branch.delete","version":"1.14.0","connectorType":"gitea","description":"Delete only a non-default branch whose matching PR is merged or closed, with an exact head SHA lock and no open PR reference.","riskClass":"R3","readOnly":false,"idempotent":false,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"branch":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"},"expectedHeadSha":{"type":"string","pattern":"^[0-9a-fA-F]{40,64}$"}},"required":["repositoryRef","branch","expectedHeadSha"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":15000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
+105
View File
@@ -0,0 +1,105 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Branch List",
"slug": "gitea-branch-list"
},
"spec": {
"canonicalName": "gitea.branch.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List bounded branch metadata for a registered repository.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 500,
"default": null
}
},
"required": [
"repositoryRef"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 300
},
"commitSha": {
"type": "string",
"pattern": "^[a-f0-9]{7,64}$"
},
"protected": {
"type": "boolean"
}
},
"required": [
"name",
"commitSha",
"protected"
]
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"items",
"nextCursor",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Branch Protection Ensure","slug":"gitea-branch-protection-ensure"},"spec":{"canonicalName":"gitea.branchprotection.ensure","version":"1.8.0","connectorType":"gitea","description":"Apply one unchanged governance preview and verify managed validation plus default-branch protection.","riskClass":"R2","readOnly":false,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"expectedPlanHash":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["repositoryRef","expectedPlanHash"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":30000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Branch Protection Get","slug":"gitea-branch-protection-get"},"spec":{"canonicalName":"gitea.branchprotection.get","version":"1.8.0","connectorType":"gitea","description":"Read the effective protection rule for a registered repository default branch.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"}},"required":["repositoryRef"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":20000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Branch Protection Preview","slug":"gitea-branch-protection-preview"},"spec":{"canonicalName":"gitea.branchprotection.preview","version":"1.8.0","connectorType":"gitea","description":"Preview the exact managed-validation and default-branch protection diff and return a plan hash.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"}},"required":["repositoryRef"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":20000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Capabilities Get","slug":"gitea-capabilities-get"},"spec":{"canonicalName":"gitea.capabilities.get","version":"1.8.0","connectorType":"gitea","description":"Return the current governed tool inventory and stable capability fingerprint for refresh checks.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"outputSchema":{"type":"object"},"limits":{"timeoutMs":10000,"maxOutputBytes":262144,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Change Reconcile","slug":"gitea-change-reconcile"},"spec":{"canonicalName":"gitea.change.reconcile","version":"1.12.0","connectorType":"gitea","description":"Compute the next durable delivery action from a consistent branch, pull-request and validation snapshot without mutation.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"branch":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"}},"required":["repositoryRef","branch"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":30000,"maxOutputBytes":262144,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+1
View File
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Change Review","slug":"gitea-change-review"},"spec":{"canonicalName":"gitea.change.review","version":"1.9.0","connectorType":"gitea","description":"Render branch, PR, comparison and validation state in the MCP Apps review surface.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"branch":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"}},"required":["repositoryRef","branch"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":30000,"maxOutputBytes":524288,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+1
View File
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Change Status","slug":"gitea-change-status"},"spec":{"canonicalName":"gitea.change.status","version":"1.10.0","connectorType":"gitea","description":"Use this to resume one branch from durable PR and validation state. Respect pollAfterMs and repeat only while terminal=false.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"branch":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"}},"required":["repositoryRef","branch"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":15000,"maxOutputBytes":131072,"maxItems":25},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+13
View File
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1", "kind": "ToolManifest",
"metadata": {"name": "Gitea Changeset Apply", "slug": "gitea-changeset-apply"},
"spec": {
"canonicalName": "gitea.changeset.apply", "version": "1.9.0", "connectorType": "gitea",
"description": "Atomically create, update, patch, move or delete up to 50 SHA-locked files in one commit on any valid non-default branch.",
"riskClass": "R2", "readOnly": false, "idempotent": false,
"inputSchema": {"type": "object", "additionalProperties": false, "properties": {"repositoryRef": {"type": "string"}, "branch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"}, "message": {"type": "string", "minLength": 1, "maxLength": 1000}, "operations": {"type": "array", "minItems": 1, "maxItems": 50, "items": {"type": "object"}}}, "required": ["repositoryRef", "branch", "message", "operations"]},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 60000, "maxOutputBytes": 262144, "maxItems": 50},
"redactionProfile": "documents", "requiredScopes": ["project:{project}:write"]
}
}
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1", "kind": "ToolManifest",
"metadata": {"name": "Gitea Changeset Preview", "slug": "gitea-changeset-preview"},
"spec": {
"canonicalName": "gitea.changeset.preview", "version": "1.9.0", "connectorType": "gitea",
"description": "Validate SHA locks and return the exact bounded multi-file diff before a changeset is applied.",
"riskClass": "R1", "readOnly": true, "idempotent": true,
"inputSchema": {"type": "object", "additionalProperties": false, "properties": {"repositoryRef": {"type": "string"}, "branch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"}, "operations": {"type": "array", "minItems": 1, "maxItems": 50, "items": {"type": "object"}}}, "required": ["repositoryRef", "branch", "operations"]},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 30000, "maxOutputBytes": 262144, "maxItems": 50},
"redactionProfile": "documents", "requiredScopes": ["project:{project}:read"]
}
}
+125
View File
@@ -0,0 +1,125 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Code Search",
"slug": "gitea-code-search"
},
"spec": {
"canonicalName": "gitea.code.search",
"version": "1.3.0",
"connectorType": "gitea",
"description": "Search actual UTF-8 code in one registered repository and return bounded line matches with file URIs.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"ref": {"type": ["string", "null"], "maxLength": 300},
"pathPrefix": {"type": "string", "maxLength": 2048, "default": ""},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 500,
"default": null
}
},
"required": [
"repositoryRef",
"query"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"fileUri": {
"type": "string",
"pattern": "^itworx-git://",
"maxLength": 2048
},
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"path": {
"type": "string",
"maxLength": 1000
},
"ref": {
"type": "string",
"maxLength": 300
},
"snippet": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"fileUri",
"repositoryRef",
"path",
"ref",
"snippet"
]
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"items",
"nextCursor",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 15000,
"maxOutputBytes": 196608,
"maxItems": 50
},
"redactionProfile": "documents",
"requiredScopes": [
"project:{project}:read"
]
}
}
+1
View File
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Commit Get","slug":"gitea-commit-get"},"spec":{"canonicalName":"gitea.commit.get","version":"1.4.0","connectorType":"gitea","description":"Inspect one commit with verification, statistics and a bounded affected-file list.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"ref":{"type":"string","minLength":1,"maxLength":300}},"required":["repositoryRef","ref"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":15000,"maxOutputBytes":262144,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+121
View File
@@ -0,0 +1,121 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Commit List",
"slug": "gitea-commit-list"
},
"spec": {
"canonicalName": "gitea.commit.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List bounded commit metadata for a registered repository and optional registered branch.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"branch": {
"type": [
"string",
"null"
],
"maxLength": 300
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 500,
"default": null
}
},
"required": [
"repositoryRef"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"sha": {
"type": "string",
"pattern": "^[a-f0-9]{7,64}$"
},
"summary": {
"type": "string",
"maxLength": 1000
},
"authorName": {
"type": [
"string",
"null"
],
"maxLength": 300
},
"committedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"sha",
"summary",
"authorName",
"committedAt"
]
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"items",
"nextCursor",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
@@ -0,0 +1,29 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Commit Status List", "slug": "gitea-commit-status-list"},
"spec": {
"canonicalName": "gitea.commitstatus.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List bounded CI and commit status metadata for an exact repository ref.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"ref": {"type": "string", "minLength": 1, "maxLength": 300},
"limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25},
"cursor": {"type": ["string", "null"], "maxLength": 500, "default": null}
},
"required": ["repositoryRef", "ref"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 10000, "maxOutputBytes": 262144, "maxItems": 100},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:read"]
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Connection Check","slug":"gitea-connection-check"},"spec":{"canonicalName":"gitea.connection.check","version":"1.8.0","connectorType":"gitea","description":"Verify scoped upstream access, repository discovery and the current capability fingerprint without exposing credentials.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"outputSchema":{"type":"object"},"limits":{"timeoutMs":20000,"maxOutputBytes":262144,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+30
View File
@@ -0,0 +1,30 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea File Create", "slug": "gitea-file-create"},
"spec": {
"canonicalName": "gitea.file.create",
"version": "1.9.0",
"connectorType": "gitea",
"description": "Create one bounded UTF-8 text file on any valid non-default branch; direct default-branch writes are rejected.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"path": {"type": "string", "minLength": 1, "maxLength": 2048},
"branch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300},
"content": {"type": "string", "maxLength": 200000},
"message": {"type": "string", "minLength": 1, "maxLength": 1000}
},
"required": ["repositoryRef", "path", "branch", "content", "message"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "documents",
"requiredScopes": ["project:{project}:write"]
}
}
+30
View File
@@ -0,0 +1,30 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea File Delete", "slug": "gitea-file-delete"},
"spec": {
"canonicalName": "gitea.file.delete",
"version": "1.9.0",
"connectorType": "gitea",
"description": "Delete one file from any valid non-default branch using the caller-supplied current SHA as an optimistic lock.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"path": {"type": "string", "minLength": 1, "maxLength": 2048},
"branch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300},
"message": {"type": "string", "minLength": 1, "maxLength": 1000},
"expectedSha": {"type": "string", "pattern": "^[0-9a-fA-F]{40,64}$"}
},
"required": ["repositoryRef", "path", "branch", "message", "expectedSha"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "documents",
"requiredScopes": ["project:{project}:write"]
}
}
+82
View File
@@ -0,0 +1,82 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea File Read",
"slug": "gitea-file-read"
},
"spec": {
"canonicalName": "gitea.file.read",
"version": "1.2.0",
"connectorType": "gitea",
"description": "Read one bounded file using a URI returned by an authorized repository tool, optionally from an explicit branch or ref.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"fileUri": {
"type": "string",
"pattern": "^itworx-git://",
"maxLength": 2048
},
"ref": {
"type": ["string", "null"],
"maxLength": 300
}
},
"required": [
"fileUri"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"fileUri": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"mimeType": {
"type": "string",
"maxLength": 100
},
"content": {
"type": "string",
"maxLength": 200000
},
"commitSha": {
"type": "string",
"pattern": "^[a-f0-9]{7,64}$"
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"fileUri",
"mimeType",
"content",
"commitSha",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 1
},
"redactionProfile": "documents",
"requiredScopes": [
"project:{project}:read"
]
}
}
+31
View File
@@ -0,0 +1,31 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea File Update", "slug": "gitea-file-update"},
"spec": {
"canonicalName": "gitea.file.update",
"version": "1.9.0",
"connectorType": "gitea",
"description": "Update one bounded UTF-8 text file on a change branch using the caller-supplied current SHA as an optimistic lock.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"path": {"type": "string", "minLength": 1, "maxLength": 2048},
"branch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300},
"content": {"type": "string", "maxLength": 200000},
"message": {"type": "string", "minLength": 1, "maxLength": 1000},
"expectedSha": {"type": "string", "pattern": "^[0-9a-fA-F]{40,64}$"}
},
"required": ["repositoryRef", "path", "branch", "content", "message", "expectedSha"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "documents",
"requiredScopes": ["project:{project}:write"]
}
}
@@ -0,0 +1,28 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Issue Comment Create", "slug": "gitea-issue-comment-create"},
"spec": {
"canonicalName": "gitea.issue.comment.create",
"version": "1.1.0",
"connectorType": "gitea",
"description": "Add one bounded comment to an existing Gitea issue or pull request when the user requested that external communication.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"number": {"type": "integer", "minimum": 1, "maximum": 2147483647},
"body": {"type": "string", "minLength": 1, "maxLength": 32000}
},
"required": ["repositoryRef", "number", "body"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:write"]
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Issue Create", "slug": "gitea-issue-create"},
"spec": {
"canonicalName": "gitea.issue.create",
"version": "1.1.0",
"connectorType": "gitea",
"description": "Create one issue in an explicitly registered repository when the user requested that external write.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"title": {"type": "string", "minLength": 1, "maxLength": 500},
"body": {"type": "string", "maxLength": 32000, "default": ""}
},
"required": ["repositoryRef", "title"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:write"]
}
}
+130
View File
@@ -0,0 +1,130 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Issue List",
"slug": "gitea-issue-list"
},
"spec": {
"canonicalName": "gitea.issue.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List issue metadata without creating or modifying issues.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"state": {
"enum": [
"open",
"closed",
"all"
],
"default": "open"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 500,
"default": null
}
},
"required": [
"repositoryRef"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string",
"maxLength": 500
},
"state": {
"enum": [
"open",
"closed"
]
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"labels": {
"type": "array",
"maxItems": 50,
"items": {
"type": "string",
"maxLength": 100
}
}
},
"required": [
"number",
"title",
"state",
"updatedAt",
"labels"
]
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"items",
"nextCursor",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
+98
View File
@@ -0,0 +1,98 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Portfolio Issue Search",
"slug": "gitea-issue-search"
},
"spec": {
"canonicalName": "gitea.issue.search",
"version": "1.0.0",
"connectorType": "gitea",
"description": "Search issue metadata across the scoped repository portfolio in one call.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"state": {
"enum": ["open", "closed", "all"],
"default": "open"
},
"excludeRepositoryNames": {
"type": "array",
"maxItems": 20,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"default": []
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 100
},
"cursor": {
"type": ["string", "null"],
"maxLength": 500,
"default": null
}
}
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "maxLength": 128},
"repositoryFullName": {"type": "string", "maxLength": 242},
"number": {"type": "integer", "minimum": 0},
"title": {"type": "string", "maxLength": 500},
"state": {"type": "string", "maxLength": 32},
"updatedAt": {"type": "string", "maxLength": 64},
"labels": {
"type": "array",
"maxItems": 20,
"items": {"type": "string", "maxLength": 100}
},
"sourceUri": {"type": "string", "maxLength": 2048}
},
"required": [
"repositoryRef",
"repositoryFullName",
"number",
"title",
"state",
"updatedAt",
"labels",
"sourceUri"
]
}
},
"nextCursor": {"type": ["string", "null"], "maxLength": 500},
"truncated": {"type": "boolean"},
"generatedAt": {"type": "string", "format": "date-time"}
},
"required": ["items", "nextCursor", "truncated", "generatedAt"]
},
"limits": {
"timeoutMs": 5000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:read"]
}
}
+30
View File
@@ -0,0 +1,30 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Issue Update", "slug": "gitea-issue-update"},
"spec": {
"canonicalName": "gitea.issue.update",
"version": "1.10.0",
"connectorType": "gitea",
"description": "Update, close or reopen one issue while explicitly excluding pull requests.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"number": {"type": "integer", "minimum": 1, "maximum": 2147483647},
"title": {"type": ["string", "null"], "minLength": 1, "maxLength": 500},
"body": {"type": ["string", "null"], "maxLength": 32000},
"state": {"type": ["string", "null"], "enum": ["open", "closed", null]}
},
"required": ["repositoryRef", "number"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "documents",
"requiredScopes": ["project:{project}:write"]
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Orchestration Plan","slug":"gitea-orchestration-plan"},"spec":{"canonicalName":"gitea.orchestration.plan","version":"1.5.0","connectorType":"gitea","description":"Preview exact default-branch SHAs and safe branches for a bounded multi-repository change.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRefs":{"type":"array","minItems":1,"maxItems":10,"uniqueItems":true,"items":{"type":"string"}},"branchSuffix":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,79}$"}},"required":["repositoryRefs","branchSuffix"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":60000,"maxOutputBytes":524288,"maxItems":10},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Orchestration Start","slug":"gitea-orchestration-start"},"spec":{"canonicalName":"gitea.orchestration.start","version":"1.5.0","connectorType":"gitea","description":"Create or resume one preflighted safe codex branch in each of at most ten repositories.","riskClass":"R2","readOnly":false,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRefs":{"type":"array","minItems":1,"maxItems":10,"uniqueItems":true,"items":{"type":"string"}},"branchSuffix":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,79}$"},"expectedOrchestrationId":{"type":"string","pattern":"^[0-9a-f]{24}$"}},"required":["repositoryRefs","branchSuffix","expectedOrchestrationId"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":60000,"maxOutputBytes":524288,"maxItems":10},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Portfolio Governance Apply","slug":"gitea-portfolio-governance-apply"},"spec":{"canonicalName":"gitea.portfolio.governance.apply","version":"1.8.0","connectorType":"gitea","description":"Apply and verify at most five exact repository governance plans in one bounded batch.","riskClass":"R2","readOnly":false,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"plans":{"type":"array","minItems":1,"maxItems":5,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"planHash":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["repositoryRef","planHash"]}}},"required":["plans"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":120000,"maxOutputBytes":524288,"maxItems":5},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Portfolio Governance Preview","slug":"gitea-portfolio-governance-preview"},"spec":{"canonicalName":"gitea.portfolio.governance.preview","version":"1.8.0","connectorType":"gitea","description":"Preview managed validation and branch protection for at most 25 explicit repositories.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRefs":{"type":"array","minItems":1,"maxItems":25,"uniqueItems":true,"items":{"type":"string"}}},"required":["repositoryRefs"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":60000,"maxOutputBytes":524288,"maxItems":25},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Portfolio Governance Verify","slug":"gitea-portfolio-governance-verify"},"spec":{"canonicalName":"gitea.portfolio.governance.verify","version":"1.8.0","connectorType":"gitea","description":"Verify managed validation and default-branch protection for at most 25 repositories.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRefs":{"type":"array","minItems":1,"maxItems":25,"uniqueItems":true,"items":{"type":"string"}}},"required":["repositoryRefs"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":60000,"maxOutputBytes":524288,"maxItems":25},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Portfolio Health","slug":"gitea-portfolio-health"},"spec":{"canonicalName":"gitea.portfolio.health","version":"1.5.0","connectorType":"gitea","description":"Run bounded repository health checks across an explicit set of at most 25 repositories.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRefs":{"type":"array","minItems":1,"maxItems":25,"uniqueItems":true,"items":{"type":"string"}}},"required":["repositoryRefs"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":60000,"maxOutputBytes":524288,"maxItems":25},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
@@ -0,0 +1,28 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Pull Request Close", "slug": "gitea-pull-request-close"},
"spec": {
"canonicalName": "gitea.pullrequest.close",
"version": "1.14.0",
"connectorType": "gitea",
"description": "Close one open pull request only when its exact current head SHA matches.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"number": {"type": "integer", "minimum": 1, "maximum": 2147483647},
"expectedHeadSha": {"type": "string", "pattern": "^[0-9a-fA-F]{40,64}$"}
},
"required": ["repositoryRef", "number", "expectedHeadSha"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:write"]
}
}
@@ -0,0 +1,30 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Pull Request Create", "slug": "gitea-pull-request-create"},
"spec": {
"canonicalName": "gitea.pullrequest.create",
"version": "1.9.0",
"connectorType": "gitea",
"description": "Open one pull request from any valid branch. This tool cannot merge the pull request.",
"riskClass": "R2",
"readOnly": false,
"idempotent": false,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"head": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300},
"base": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$", "maxLength": 300},
"title": {"type": "string", "minLength": 1, "maxLength": 500},
"body": {"type": "string", "maxLength": 32000, "default": ""}
},
"required": ["repositoryRef", "head", "base", "title"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:write"]
}
}
@@ -0,0 +1,13 @@
{
"apiVersion": "hub.example.com/v1alpha1", "kind": "ToolManifest",
"metadata": {"name": "Gitea Pull Request Feedback", "slug": "gitea-pull-request-feedback"},
"spec": {
"canonicalName": "gitea.pullrequest.feedback", "version": "1.3.0", "connectorType": "gitea",
"description": "Read review decisions and bounded inline feedback for one pull request.",
"riskClass": "R1", "readOnly": true, "idempotent": true,
"inputSchema": {"type": "object", "additionalProperties": false, "properties": {"repositoryRef": {"type": "string"}, "number": {"type": "integer", "minimum": 1}}, "required": ["repositoryRef", "number"]},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 100},
"redactionProfile": "documents", "requiredScopes": ["project:{project}:read"]
}
}
+27
View File
@@ -0,0 +1,27 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Pull Request Get", "slug": "gitea-pull-request-get"},
"spec": {
"canonicalName": "gitea.pullrequest.get",
"version": "1.0.0",
"connectorType": "gitea",
"description": "Read one pull request and a bounded changed-file summary without returning unrestricted patch content.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"number": {"type": "integer", "minimum": 1, "maximum": 2147483647}
},
"required": ["repositoryRef", "number"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 10000, "maxOutputBytes": 262144, "maxItems": 100},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:read"]
}
}
@@ -0,0 +1,28 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Pull Request List", "slug": "gitea-pull-request-list"},
"spec": {
"canonicalName": "gitea.pullrequest.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List pull-request metadata for a registered project repository without modifying it.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$"},
"limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25},
"cursor": {"type": ["string", "null"], "maxLength": 500, "default": null}
},
"required": ["repositoryRef"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 10000, "maxOutputBytes": 262144, "maxItems": 100},
"redactionProfile": "metadata",
"requiredScopes": ["project:{project}:read"]
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Pull Request Merge","slug":"gitea-pull-request-merge"},"spec":{"canonicalName":"gitea.pullrequest.merge","version":"1.4.0","connectorType":"gitea","description":"Merge a verified, canonical-PR-validated and SHA-locked safe-branch PR into the default branch.","riskClass":"R3","readOnly":false,"idempotent":false,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"number":{"type":"integer","minimum":1},"expectedHeadSha":{"type":"string","pattern":"^[0-9a-fA-F]{40,64}$"},"method":{"type":"string","enum":["merge","rebase","rebase-merge","squash","fast-forward-only"],"default":"squash"}},"required":["repositoryRef","number","expectedHeadSha"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":30000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Pull Request Sync","slug":"gitea-pull-request-sync"},"spec":{"canonicalName":"gitea.pullrequest.sync","version":"1.12.0","connectorType":"gitea","description":"Preview or merge/rebase an open pull-request after optimistic double-read fencing of its expected head and base SHAs; every execution invalidates validation state.","riskClass":"R3","readOnly":false,"idempotent":false,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"number":{"type":"integer","minimum":1},"expectedHeadSha":{"type":"string","pattern":"^[0-9a-fA-F]{40,64}$"},"expectedBaseSha":{"type":"string","pattern":"^[0-9a-fA-F]{40,64}$"},"strategy":{"type":"string","enum":["merge","rebase"]},"dryRun":{"type":"boolean"}},"required":["repositoryRef","number","expectedHeadSha","expectedBaseSha","strategy","dryRun"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":30000,"maxOutputBytes":262144,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Pull Request Update","slug":"gitea-pull-request-update"},"spec":{"canonicalName":"gitea.pullrequest.update","version":"1.4.0","connectorType":"gitea","description":"Update only the title or body of an open safe-branch PR with an exact head SHA lock.","riskClass":"R2","readOnly":false,"idempotent":false,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"number":{"type":"integer","minimum":1},"expectedHeadSha":{"type":"string","pattern":"^[0-9a-fA-F]{40,64}$"},"title":{"type":["string","null"],"minLength":1,"maxLength":500},"body":{"type":["string","null"],"maxLength":32000}},"required":["repositoryRef","number","expectedHeadSha"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":15000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea PR Validation Ensure","slug":"gitea-pullrequest-validation-ensure"},"spec":{"canonicalName":"gitea.pullrequest.validation.ensure","version":"1.15.0","connectorType":"gitea","description":"Reuse or trigger a real canonical full pull_request validation for an exact PR head.","riskClass":"R2","readOnly":false,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"number":{"type":"integer","minimum":1},"expectedHeadSha":{"type":"string","pattern":"^[0-9a-fA-F]{40,64}$"}},"required":["repositoryRef","number","expectedHeadSha"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":30000,"maxOutputBytes":262144,"maxItems":1},"redactionProfile":"documents","requiredScopes":["project:{project}:write"]}}
+1
View File
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Ref Compare","slug":"gitea-ref-compare"},"spec":{"canonicalName":"gitea.ref.compare","version":"1.4.0","connectorType":"gitea","description":"Compare two safe Git refs with bounded commit and changed-file projections.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"},"base":{"type":"string","minLength":1,"maxLength":300},"head":{"type":"string","minLength":1,"maxLength":300}},"required":["repositoryRef","base","head"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":20000,"maxOutputBytes":524288,"maxItems":200},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+117
View File
@@ -0,0 +1,117 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Release List",
"slug": "gitea-release-list"
},
"spec": {
"canonicalName": "gitea.release.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List releases and tags for a registered repository.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 500,
"default": null
}
},
"required": [
"repositoryRef"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"tag": {
"type": "string",
"maxLength": 300
},
"title": {
"type": "string",
"maxLength": 500
},
"draft": {
"type": "boolean"
},
"prerelease": {
"type": "boolean"
},
"publishedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"tag",
"title",
"draft",
"prerelease",
"publishedAt"
]
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"items",
"nextCursor",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
@@ -0,0 +1,14 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Repository Context", "slug": "gitea-repository-context"},
"spec": {
"canonicalName": "gitea.repository.context", "version": "1.4.0", "connectorType": "gitea",
"description": "Load a compact repository bootstrap context; use tree.list and file.read for additional detail.",
"riskClass": "R1", "readOnly": true, "idempotent": true,
"inputSchema": {"type": "object", "additionalProperties": false, "properties": {"repositoryRef": {"type": "string"}, "ref": {"type": ["string", "null"], "maxLength": 300}}, "required": ["repositoryRef"]},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 30000, "maxOutputBytes": 65536, "maxItems": 64},
"redactionProfile": "documents", "requiredScopes": ["project:{project}:read"]
}
}
@@ -0,0 +1,30 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Repository Create", "slug": "gitea-repository-create"},
"spec": {
"canonicalName": "gitea.repository.create",
"version": "1.8.0",
"connectorType": "gitea",
"description": "Create or idempotently reuse a branch-ready repository owned by the fixed server-side Gitea write owner. autoInit must be true; an existing empty repository is initialized and the default-branch head is verified before the stable repositoryRef is returned.",
"riskClass": "R2",
"readOnly": false,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,119}$"},
"description": {"type": "string", "maxLength": 2000},
"private": {"type": "boolean"},
"autoInit": {"type": "boolean", "const": true, "description": "Must be true so the default branch exists before the tool returns."},
"defaultBranch": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{0,299}$"}
},
"required": ["name", "description", "private", "autoInit", "defaultBranch"]
},
"outputSchema": {"type": "object"},
"limits": {"timeoutMs": 20000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "documents",
"requiredScopes": ["project:{project}:write"]
}
}
+95
View File
@@ -0,0 +1,95 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Repository Get",
"slug": "gitea-repository-get"
},
"spec": {
"canonicalName": "gitea.repository.get",
"version": "1.0.0",
"connectorType": "gitea",
"description": "Read metadata for a registered project repository.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
}
},
"required": [
"repositoryRef"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"name": {
"type": "string",
"maxLength": 200
},
"owner": {
"type": "string",
"maxLength": 200
},
"private": {
"type": "boolean"
},
"defaultBranch": {
"type": [
"string",
"null"
],
"maxLength": 200
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 2000
},
"updatedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"repositoryRef",
"name",
"owner",
"private",
"defaultBranch",
"description",
"updatedAt",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
@@ -0,0 +1 @@
{"apiVersion":"hub.example.com/v1alpha1","kind":"ToolManifest","metadata":{"name":"Gitea Repository Health","slug":"gitea-repository-health"},"spec":{"canonicalName":"gitea.repository.health","version":"1.4.0","connectorType":"gitea","description":"Audit branch protection, safe-branch sprawl, open pull requests and managed validation readiness.","riskClass":"R1","readOnly":true,"idempotent":true,"inputSchema":{"type":"object","additionalProperties":false,"properties":{"repositoryRef":{"type":"string"}},"required":["repositoryRef"]},"outputSchema":{"type":"object"},"limits":{"timeoutMs":20000,"maxOutputBytes":262144,"maxItems":100},"redactionProfile":"documents","requiredScopes":["project:{project}:read"]}}
+112
View File
@@ -0,0 +1,112 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {
"name": "Gitea Repository List",
"slug": "gitea-repository-list"
},
"spec": {
"canonicalName": "gitea.repository.list",
"version": "1.0.0",
"connectorType": "gitea",
"description": "List repositories registered for the current project without exposing credentials.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 500,
"default": null
}
},
"required": []
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"repositoryRef": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,127}$"
},
"name": {
"type": "string",
"maxLength": 200
},
"owner": {
"type": "string",
"maxLength": 200
},
"private": {
"type": "boolean"
},
"defaultBranch": {
"type": [
"string",
"null"
],
"maxLength": 200
}
},
"required": [
"repositoryRef",
"name",
"owner",
"private",
"defaultBranch"
]
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"truncated": {
"type": "boolean"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"items",
"nextCursor",
"truncated",
"generatedAt"
]
},
"limits": {
"timeoutMs": 10000,
"maxOutputBytes": 262144,
"maxItems": 100
},
"redactionProfile": "metadata",
"requiredScopes": [
"project:{project}:read"
]
}
}
+37
View File
@@ -0,0 +1,37 @@
{
"apiVersion": "hub.example.com/v1alpha1",
"kind": "ToolManifest",
"metadata": {"name": "Gitea Research Fetch", "slug": "gitea-research-fetch"},
"spec": {
"canonicalName": "gitea.research.fetch",
"connectorToolName": "fetch",
"exposedNames": ["fetch", "itworx-gitea-fetch"],
"version": "1.6.0",
"connectorType": "gitea",
"description": "Fetch one immutable repository document returned by research search using the standard Company Knowledge fetch contract.",
"riskClass": "R1",
"readOnly": true,
"idempotent": true,
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {"id": {"type": "string", "minLength": 1, "maxLength": 4096}},
"required": ["id"]
},
"outputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {"type": "string", "maxLength": 4096},
"title": {"type": "string", "maxLength": 512},
"text": {"type": "string", "maxLength": 200000},
"url": {"type": "string", "format": "uri", "maxLength": 4096},
"metadata": {"type": ["object", "null"]}
},
"required": ["id", "title", "text", "url", "metadata"]
},
"limits": {"timeoutMs": 30000, "maxOutputBytes": 262144, "maxItems": 1},
"redactionProfile": "documents",
"requiredScopes": ["project:{project}:read"]
}
}
Loaded 100 of 663 files, more files were not shown because too many files have changed in this diff. Show more