@bluefly/openstandardagents 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.version.json +2 -2
  4. package/.wiki-config.json +24 -0
  5. package/CHANGELOG.md +11 -18
  6. package/CODEOWNERS +75 -0
  7. package/CONTRIBUTING.md +1 -1
  8. package/README.md +171 -243
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/repositories/schema.repository.d.ts +6 -1
  14. package/dist/repositories/schema.repository.d.ts.map +1 -1
  15. package/dist/repositories/schema.repository.js +49 -27
  16. package/dist/repositories/schema.repository.js.map +1 -1
  17. package/dist/services/migration.service.d.ts +4 -3
  18. package/dist/services/migration.service.d.ts.map +1 -1
  19. package/dist/services/migration.service.js +11 -10
  20. package/dist/services/migration.service.js.map +1 -1
  21. package/dist/services/release-automation/release.service.js +1 -1
  22. package/dist/services/release-automation/release.service.js.map +1 -1
  23. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  24. package/dist/services/runtime/claude/claude-adapter.js +1 -1
  25. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  26. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  27. package/dist/spec/v0.2.8/README.md +72 -0
  28. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  29. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  30. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  31. package/{spec/v0.2.6-dev/ossa-0.2.5.schema.json → dist/spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  32. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  33. package/dist/types/index.d.ts +3 -2
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/utils/index.d.ts +6 -0
  36. package/dist/utils/index.d.ts.map +1 -0
  37. package/dist/utils/index.js +6 -0
  38. package/dist/utils/index.js.map +1 -0
  39. package/dist/utils/version.d.ts +68 -0
  40. package/dist/utils/version.d.ts.map +1 -0
  41. package/dist/utils/version.js +156 -0
  42. package/dist/utils/version.js.map +1 -0
  43. package/eslint-report.json +1 -0
  44. package/examples/adk-integration/code-review-workflow.yml +1 -1
  45. package/examples/adk-integration/customer-support.yml +1 -1
  46. package/examples/adk-integration/data-pipeline.yml +1 -1
  47. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  48. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  49. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  50. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  51. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  52. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  53. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  54. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  55. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  56. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  57. package/examples/autogen/multi-agent.ossa.json +1 -1
  58. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  59. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  60. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  61. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  62. package/examples/crewai/research-team.ossa.json +1 -1
  63. package/examples/cursor/code-review-agent.ossa.json +1 -1
  64. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  65. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  66. package/examples/extensions/drupal-v1.yml +1 -1
  67. package/examples/extensions/kagent-v1.yml +1 -1
  68. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  69. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  70. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  71. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  72. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  73. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  74. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  75. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  76. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  77. package/examples/langchain/chain-agent.ossa.json +1 -1
  78. package/examples/langflow/workflow-agent.ossa.json +1 -1
  79. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  80. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  81. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  82. package/examples/multi-agent/README.md +74 -0
  83. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  84. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  85. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  86. package/examples/openai/basic-agent.ossa.yaml +1 -1
  87. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  88. package/examples/openai/swarm-agent.ossa.json +1 -1
  89. package/examples/production/document-analyzer-openai.yml +1 -1
  90. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  91. package/examples/spec-examples/audit-agent.yml +1 -1
  92. package/examples/spec-examples/chat-agent.yml +1 -1
  93. package/examples/spec-examples/compliance-agent.yml +1 -1
  94. package/examples/spec-examples/monitoring-agent.yml +1 -1
  95. package/examples/spec-examples/workflow-agent.yml +1 -1
  96. package/examples/templates/ossa-compliance.yaml +1 -1
  97. package/examples/vercel/edge-agent.ossa.json +1 -1
  98. package/gl-code-quality-report.json +62 -0
  99. package/llms-ctx-full.txt +39 -0
  100. package/llms-ctx.txt +39 -0
  101. package/llms.txt +47 -0
  102. package/package.json +3 -2
  103. package/scripts/eslint-to-codequality.cjs +34 -0
  104. package/scripts/generate-llms-ctx.sh +17 -0
  105. package/scripts/generate-schema-docs.ts +31 -10
  106. package/scripts/sync-version.js +4 -12
  107. package/scripts/validate-schema.ts +2 -1
  108. package/spec/v0.2.8/CHANGELOG.md +401 -0
  109. package/spec/v0.2.8/README.md +72 -0
  110. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  111. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  112. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  113. package/{dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json → spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  114. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  115. package/test-results/junit.xml +299 -0
  116. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  117. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  118. package/scripts/lib/exec.ts +0 -37
  119. package/scripts/lib/file-ops.ts +0 -58
  120. package/scripts/lib/version.ts +0 -83
  121. package/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  122. package/website/.lighthouserc.ts +0 -24
  123. package/website/.prettierrc +0 -10
  124. package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
  125. package/website/Dockerfile +0 -30
  126. package/website/app/about/page.tsx +0 -304
  127. package/website/app/blog/[slug]/page.tsx +0 -208
  128. package/website/app/blog/page.tsx +0 -249
  129. package/website/app/design-guide/page.tsx +0 -511
  130. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  131. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  132. package/website/app/ecosystem/page.tsx +0 -410
  133. package/website/app/examples/page.tsx +0 -133
  134. package/website/app/globals.scss +0 -370
  135. package/website/app/layout.tsx +0 -106
  136. package/website/app/license/page.tsx +0 -183
  137. package/website/app/not-found.tsx +0 -18
  138. package/website/app/page.tsx +0 -686
  139. package/website/app/page.tsx.bak +0 -679
  140. package/website/app/page.tsx.bak2 +0 -649
  141. package/website/app/playground/page.tsx +0 -487
  142. package/website/app/robots.ts +0 -19
  143. package/website/app/rss.xml/route.ts +0 -74
  144. package/website/app/schema/page.tsx +0 -1001
  145. package/website/app/sitemap.ts +0 -56
  146. package/website/app/specification/page.tsx +0 -287
  147. package/website/components/InstallCommand.tsx +0 -96
  148. package/website/components/Logo.tsx +0 -97
  149. package/website/components/StructuredData.tsx +0 -65
  150. package/website/components/docs/DocsSearch.tsx +0 -104
  151. package/website/components/docs/DocsSidebar.tsx +0 -155
  152. package/website/components/docs/MarkdownContent.tsx +0 -401
  153. package/website/components/docs/VersionSelector.tsx +0 -105
  154. package/website/components/examples/ExamplesViewer.tsx +0 -293
  155. package/website/components/layout/Footer.tsx +0 -116
  156. package/website/components/layout/Header.tsx +0 -172
  157. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  158. package/website/components/schema/SchemaExplorer.tsx +0 -213
  159. package/website/components/ui/Badge.tsx +0 -82
  160. package/website/components/ui/Button.tsx +0 -116
  161. package/website/components/ui/Card.tsx +0 -167
  162. package/website/components/ui/Checkbox.tsx +0 -141
  163. package/website/components/ui/Input.tsx +0 -169
  164. package/website/components/ui/Radio.tsx +0 -141
  165. package/website/components/ui/Select.tsx +0 -182
  166. package/website/components/ui/Tag.tsx +0 -158
  167. package/website/components/ui/Textarea.tsx +0 -195
  168. package/website/components/ui/index.ts +0 -11
  169. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  170. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  171. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  172. package/website/content/blog/introducing-ossa-framework.md +0 -328
  173. package/website/content/blog/ossa-production-results.md +0 -279
  174. package/website/content/blog/welcome-to-ossa.md +0 -43
  175. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  176. package/website/content/docs/00-home.md +0 -153
  177. package/website/content/docs/adapters/openai-adapter.md +0 -693
  178. package/website/content/docs/agents/catalog.md +0 -28
  179. package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
  180. package/website/content/docs/api-reference/index.md +0 -38
  181. package/website/content/docs/api-reference/ossa-core-api.md +0 -634
  182. package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
  183. package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
  184. package/website/content/docs/architecture/execution-flow.md +0 -335
  185. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  186. package/website/content/docs/architecture/overview.md +0 -121
  187. package/website/content/docs/architecture/stack-integration.md +0 -461
  188. package/website/content/docs/changelog.md +0 -246
  189. package/website/content/docs/cli-reference/index.md +0 -111
  190. package/website/content/docs/cli-reference/ossa-agents.md +0 -70
  191. package/website/content/docs/cli-reference/ossa-export.md +0 -56
  192. package/website/content/docs/cli-reference/ossa-generate.md +0 -66
  193. package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
  194. package/website/content/docs/cli-reference/ossa-import.md +0 -56
  195. package/website/content/docs/cli-reference/ossa-init.md +0 -57
  196. package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
  197. package/website/content/docs/cli-reference/ossa-run.md +0 -66
  198. package/website/content/docs/cli-reference/ossa-schema.md +0 -57
  199. package/website/content/docs/cli-reference/ossa-setup.md +0 -57
  200. package/website/content/docs/cli-reference/ossa-validate.md +0 -66
  201. package/website/content/docs/configuration/index.md +0 -97
  202. package/website/content/docs/contributing.md +0 -599
  203. package/website/content/docs/deployment/github-mirroring.md +0 -924
  204. package/website/content/docs/documentation.md +0 -100
  205. package/website/content/docs/ecosystem/framework-support.md +0 -1361
  206. package/website/content/docs/ecosystem/overview.md +0 -366
  207. package/website/content/docs/errors/index.md +0 -10
  208. package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
  209. package/website/content/docs/examples/catalog.md +0 -300
  210. package/website/content/docs/for-audiences/students-researchers.md +0 -122
  211. package/website/content/docs/getting-started/index.md +0 -92
  212. package/website/content/docs/getting-started/installation.md +0 -155
  213. package/website/content/docs/getting-started/running-agents.md +0 -309
  214. package/website/content/docs/getting-started.md +0 -91
  215. package/website/content/docs/integrations/aiflow.md +0 -104
  216. package/website/content/docs/integrations/drupal.md +0 -105
  217. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  218. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  219. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  220. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  221. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  222. package/website/content/docs/migration-guides/index.md +0 -133
  223. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  224. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  225. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  226. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  227. package/website/content/docs/openapi-extensions/examples.md +0 -550
  228. package/website/content/docs/openapi-extensions/index.md +0 -551
  229. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  230. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  231. package/website/content/docs/ossa-compliant-badge.md +0 -251
  232. package/website/content/docs/pre-release/index.md +0 -175
  233. package/website/content/docs/quick-reference.md +0 -17
  234. package/website/content/docs/readme.md +0 -35
  235. package/website/content/docs/releases/v0.2.6.md +0 -99
  236. package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
  237. package/website/content/docs/schema-reference/agent-id.md +0 -52
  238. package/website/content/docs/schema-reference/agent-name.md +0 -50
  239. package/website/content/docs/schema-reference/agent-role.md +0 -54
  240. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  241. package/website/content/docs/schema-reference/agent-version.md +0 -50
  242. package/website/content/docs/schema-reference/autonomy.md +0 -568
  243. package/website/content/docs/schema-reference/constraints.md +0 -543
  244. package/website/content/docs/schema-reference/index.md +0 -45
  245. package/website/content/docs/schema-reference/llm-config.md +0 -445
  246. package/website/content/docs/schema-reference/observability.md +0 -654
  247. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  248. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  249. package/website/content/docs/schema-reference/tools.md +0 -628
  250. package/website/content/docs/templates/blog-post.md +0 -43
  251. package/website/content/docs/types-reference/index.md +0 -105
  252. package/website/content/docs/use-cases/00-index.md +0 -395
  253. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  254. package/website/content/docs/use-cases/customer-support.md +0 -1234
  255. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  256. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  257. package/website/content/docs/versioning.md +0 -288
  258. package/website/dev.sh +0 -53
  259. package/website/docker-compose.dev.yml +0 -36
  260. package/website/lib/version.ts +0 -35
  261. package/website/lib/versions.json +0 -103
  262. package/website/next.config.ts +0 -18
  263. package/website/nginx.conf +0 -32
  264. package/website/package-lock.json +0 -9679
  265. package/website/package.json +0 -59
  266. package/website/postcss.config.mjs +0 -9
  267. package/website/scripts/fetch-versions.js +0 -166
  268. package/website/scripts/generate-examples-index.js +0 -163
  269. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  270. package/website/scripts/sync-version.js +0 -72
  271. package/website/scripts/sync-wiki.ts +0 -322
  272. package/website/scripts/upload-wiki.ts +0 -199
  273. package/website/styles/_spacing.scss +0 -453
  274. package/website/styles/_tokens.scss +0 -245
  275. package/website/styles/_typography.scss +0 -361
  276. package/website/styles/_variables.scss +0 -287
  277. package/website/tailwind.config.ts +0 -170
@@ -1,487 +0,0 @@
1
- 'use client';
2
-
3
- import { useState } from 'react';
4
- import dynamic from 'next/dynamic';
5
- import { STABLE_VERSION, STABLE_VERSION_TAG } from '@/lib/version';
6
-
7
- const MonacoEditor = dynamic(() => import('@monaco-editor/react'), {
8
- ssr: false,
9
- });
10
-
11
- // Dynamic templates using current stable version
12
- const getTemplates = (version: string) => ({
13
- simple: `apiVersion: ossa/v${version}
14
- kind: Agent
15
-
16
- metadata:
17
- name: my-first-agent
18
- version: 1.0.0
19
- description: My first Open Standard Agents manifest
20
-
21
- spec:
22
- role: You are a helpful assistant
23
- llm:
24
- provider: openai
25
- model: gpt-4
26
- tools: []`,
27
-
28
- withTools: `apiVersion: ossa/v${version}
29
- kind: Agent
30
-
31
- metadata:
32
- name: agent-with-tools
33
- version: 1.0.0
34
- description: Agent with HTTP tools
35
-
36
- spec:
37
- role: You are a research assistant
38
- llm:
39
- provider: openai
40
- model: gpt-4
41
- tools:
42
- - type: http
43
- name: web_search
44
- endpoint: https://api.search.com/search
45
- method: GET`,
46
-
47
- autonomous: `apiVersion: ossa/v${version}
48
- kind: Agent
49
-
50
- metadata:
51
- name: autonomous-agent
52
- version: 1.0.0
53
- description: Agent with autonomy controls
54
-
55
- spec:
56
- role: You are an automated support agent
57
- llm:
58
- provider: anthropic
59
- model: claude-3-sonnet
60
- temperature: 0.7
61
- tools:
62
- - type: http
63
- name: ticket_api
64
- endpoint: https://api.tickets.com
65
- autonomy:
66
- level: L2
67
- approval_required:
68
- - delete_operations
69
- human_in_loop:
70
- notification_channels: [slack]`,
71
-
72
- fullStack: `apiVersion: ossa/v${version}
73
- kind: Agent
74
-
75
- metadata:
76
- name: full-stack-agent
77
- version: 2.0.0
78
- description: Complete agent with all features
79
- labels:
80
- team: engineering
81
- environment: production
82
-
83
- spec:
84
- role: |
85
- You are a senior DevOps engineer specializing in cloud infrastructure.
86
- Automate deployments, monitor systems, and resolve incidents.
87
-
88
- llm:
89
- provider: openai
90
- model: gpt-4-turbo
91
- temperature: 0.3
92
- max_tokens: 4000
93
-
94
- tools:
95
- - type: http
96
- name: deploy_api
97
- endpoint: https://api.deploy.io/v1/deploy
98
- method: POST
99
- auth:
100
- type: bearer
101
- - type: code
102
- name: analyze_logs
103
- language: python
104
- allowed_libraries: [pandas]
105
-
106
- taxonomy:
107
- domain: engineering
108
- subdomain: devops
109
- use_case: automation
110
-
111
- autonomy:
112
- level: L3
113
- approval_required:
114
- - production_deploy
115
- - delete_operations
116
-
117
- observability:
118
- logging:
119
- level: info
120
- include_prompts: true
121
- metrics:
122
- enabled: true
123
- tracing:
124
- enabled: true
125
-
126
- extensions:
127
- kagent:
128
- mesh_discovery: true`,
129
- });
130
-
131
- export default function PlaygroundPage() {
132
- const [templates] = useState(getTemplates(STABLE_VERSION));
133
- const [code, setCode] = useState(templates.simple);
134
- const [validationResult, setValidationResult] = useState<{
135
- valid: boolean;
136
- errors: Array<{ path: string; message: string }>;
137
- } | null>(null);
138
- const [isValidating, setIsValidating] = useState(false);
139
- const [activeTemplate, setActiveTemplate] = useState('simple');
140
-
141
- const handleValidate = async (): Promise<void> => {
142
- setIsValidating(true);
143
- try {
144
- // For static export, we'll use a client-side validation approach
145
- // Load schema and validate in browser - use dynamic version
146
- const schemaResponse = await fetch(`/schemas/ossa-${STABLE_VERSION}.schema.json`);
147
- if (!schemaResponse.ok) {
148
- throw new Error('Failed to load schema');
149
- }
150
- const schema = await schemaResponse.json();
151
-
152
- // Simple validation - in production, use a proper JSON Schema validator
153
- const parsed = code.includes('apiVersion:')
154
- ? (await import('yaml')).parse(code)
155
- : JSON.parse(code);
156
-
157
- // Basic validation checks
158
- const errors: Array<{ path: string; message: string }> = [];
159
-
160
- if (!parsed.apiVersion) {
161
- errors.push({ path: '', message: 'Missing required field: apiVersion' });
162
- }
163
- if (!parsed.kind) {
164
- errors.push({ path: '', message: 'Missing required field: kind' });
165
- }
166
- if (!parsed.metadata) {
167
- errors.push({ path: '', message: 'Missing required field: metadata' });
168
- }
169
- if (!parsed.spec) {
170
- errors.push({ path: '', message: 'Missing required field: spec' });
171
- }
172
-
173
- setValidationResult({
174
- valid: errors.length === 0,
175
- errors,
176
- });
177
- } catch (error) {
178
- setValidationResult({
179
- valid: false,
180
- errors: [
181
- {
182
- path: '',
183
- message: error instanceof Error ? error.message : 'Validation error',
184
- },
185
- ],
186
- });
187
- } finally {
188
- setIsValidating(false);
189
- }
190
- };
191
-
192
- const handleEditorChange = (value: string | undefined): void => {
193
- setCode(value || '');
194
- setValidationResult(null);
195
- };
196
-
197
- const downloadManifest = () => {
198
- const blob = new Blob([code], { type: 'text/yaml' });
199
- const url = URL.createObjectURL(blob);
200
- const a = document.createElement('a');
201
- a.href = url;
202
- a.download = 'agent.yaml';
203
- a.click();
204
- URL.revokeObjectURL(url);
205
- };
206
-
207
- const copyToClipboard = () => {
208
- navigator.clipboard.writeText(code);
209
- };
210
-
211
- const loadTemplate = (template: keyof typeof templates) => {
212
- setCode(templates[template]);
213
- setActiveTemplate(template);
214
- setValidationResult(null);
215
- };
216
-
217
- return (
218
- <>
219
- {/* Hero Section */}
220
- <div className="bg-gradient-to-br from-secondary via-primary to-accent text-white py-16 px-4">
221
- <div className="container mx-auto max-w-6xl text-center">
222
- <div className="inline-flex items-center justify-center w-20 h-20 bg-white/20 backdrop-blur-sm rounded-full mb-6">
223
- <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
224
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M14 10l-2 1m0 0l-2-1m2 1v2.5M20 7l-2 1m2-1l-2-1m2 1v2.5M14 4l-2-1-2 1M4 7l2-1M4 7l2 1M4 7v2.5M12 21l-2-1m2 1l2-1m-2 1v-2.5M6 18l-2-1v-2.5M18 18l2-1v-2.5" />
225
- </svg>
226
- </div>
227
- <h1 className="text-5xl font-bold mb-4">OSSA Playground</h1>
228
- <p className="text-xl text-white/90 mb-2">
229
- Write, validate, and test Open Standard Agents manifests in real-time
230
- </p>
231
- <p className="text-base text-white/80">
232
- Interactive editor with live validation and multiple templates
233
- </p>
234
- </div>
235
- </div>
236
-
237
- <div className="container mx-auto max-w-7xl px-4 py-12">
238
-
239
- {/* Quick Actions Bar */}
240
- <div className="mb-6 bg-gradient-to-r from-primary/5 to-secondary/5 rounded-xl p-4 border border-primary/20">
241
- <div className="flex flex-wrap gap-3 items-center justify-between">
242
- <div className="flex gap-3">
243
- <button
244
- onClick={handleValidate}
245
- disabled={isValidating}
246
- className="bg-gradient-to-r from-secondary via-primary to-accent text-white px-6 py-3 rounded-lg font-medium hover:shadow-lg transition-all disabled:opacity-50"
247
- >
248
- {isValidating ? 'Validating...' : 'Validate Manifest'}
249
- </button>
250
- <button
251
- onClick={downloadManifest}
252
- className="bg-white border-2 border-primary text-primary px-6 py-3 rounded-lg font-medium hover:bg-primary hover:text-white transition-all"
253
- >
254
- Download YAML
255
- </button>
256
- <button
257
- onClick={copyToClipboard}
258
- className="bg-white border-2 border-secondary text-secondary px-6 py-3 rounded-lg font-medium hover:bg-secondary hover:text-white transition-all"
259
- >
260
- Copy to Clipboard
261
- </button>
262
- </div>
263
- <div className="flex gap-2 items-center">
264
- <span className="text-sm text-gray-600 font-semibold">Lines: {code.split('\n').length}</span>
265
- <span className="text-sm text-gray-400">|</span>
266
- <span className="text-sm text-gray-600 font-semibold">Chars: {code.length}</span>
267
- </div>
268
- </div>
269
- </div>
270
-
271
- {/* Template Selector */}
272
- <div className="mb-6">
273
- <h2 className="text-2xl font-bold mb-4 text-gray-900">Quick Start Templates</h2>
274
- <div className="grid md:grid-cols-4 gap-4">
275
- <button
276
- onClick={() => loadTemplate('simple')}
277
- className={`p-4 rounded-xl border-2 text-left transition-all ${
278
- activeTemplate === 'simple'
279
- ? 'border-primary bg-primary/5 shadow-md'
280
- : 'border-gray-300 hover:border-primary/50 hover:shadow-md'
281
- }`}
282
- >
283
- <div className="font-bold mb-1">Simple Agent</div>
284
- <div className="text-sm text-gray-600">Basic manifest structure</div>
285
- </button>
286
-
287
- <button
288
- onClick={() => loadTemplate('withTools')}
289
- className={`p-4 rounded-xl border-2 text-left transition-all ${
290
- activeTemplate === 'withTools'
291
- ? 'border-primary bg-primary/5 shadow-md'
292
- : 'border-gray-300 hover:border-primary/50 hover:shadow-md'
293
- }`}
294
- >
295
- <div className="font-bold mb-1">With Tools</div>
296
- <div className="text-sm text-gray-600">HTTP API integration</div>
297
- </button>
298
-
299
- <button
300
- onClick={() => loadTemplate('autonomous')}
301
- className={`p-4 rounded-xl border-2 text-left transition-all ${
302
- activeTemplate === 'autonomous'
303
- ? 'border-primary bg-primary/5 shadow-md'
304
- : 'border-gray-300 hover:border-primary/50 hover:shadow-md'
305
- }`}
306
- >
307
- <div className="font-bold mb-1">Autonomous</div>
308
- <div className="text-sm text-gray-600">With autonomy controls</div>
309
- </button>
310
-
311
- <button
312
- onClick={() => loadTemplate('fullStack')}
313
- className={`p-4 rounded-xl border-2 text-left transition-all ${
314
- activeTemplate === 'fullStack'
315
- ? 'border-primary bg-primary/5 shadow-md'
316
- : 'border-gray-300 hover:border-primary/50 hover:shadow-md'
317
- }`}
318
- >
319
- <div className="font-bold mb-1">Full Stack</div>
320
- <div className="text-sm text-gray-600">Complete production setup</div>
321
- </button>
322
- </div>
323
- </div>
324
-
325
- <div className="grid lg:grid-cols-2 gap-6 mb-6">
326
- <div className="card border-2 border-gray-300">
327
- <div className="flex items-center justify-between mb-4">
328
- <h2 className="text-2xl font-semibold">Editor</h2>
329
- <span className="text-sm bg-gray-100 px-3 py-1 rounded-full">YAML Format</span>
330
- </div>
331
- <div className="border-2 border-gray-300 rounded-lg overflow-hidden shadow-md" style={{ height: '600px' }}>
332
- <MonacoEditor
333
- height="600px"
334
- defaultLanguage="yaml"
335
- value={code}
336
- onChange={handleEditorChange}
337
- theme="vs-dark"
338
- options={{
339
- minimap: { enabled: false },
340
- fontSize: 15,
341
- wordWrap: 'on',
342
- automaticLayout: true,
343
- lineNumbers: 'on',
344
- scrollBeyondLastLine: false,
345
- }}
346
- />
347
- </div>
348
- </div>
349
-
350
- <div className="card border-2 border-gray-300">
351
- <h2 className="text-2xl font-semibold mb-4">✓ Validation Results</h2>
352
-
353
- {validationResult === null ? (
354
- <div className="text-center py-16 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl border-2 border-dashed border-gray-300">
355
- <div className="text-6xl mb-4 text-gray-400">✓</div>
356
- <p className="text-gray-600 text-lg mb-2">Ready to validate</p>
357
- <p className="text-gray-500 text-sm">Click "Validate Manifest" above to check your OSSA manifest</p>
358
- </div>
359
- ) : validationResult.valid ? (
360
- <div className="bg-gradient-to-br from-green-50 to-emerald-50 border-2 border-green-300 rounded-xl p-6 shadow-lg">
361
- <div className="flex items-center mb-4">
362
- <div className="w-12 h-12 bg-green-500 rounded-full flex items-center justify-center mr-4">
363
- <svg
364
- className="w-7 h-7 text-white"
365
- fill="none"
366
- stroke="currentColor"
367
- viewBox="0 0 24 24"
368
- >
369
- <path
370
- strokeLinecap="round"
371
- strokeLinejoin="round"
372
- strokeWidth={3}
373
- d="M5 13l4 4L19 7"
374
- />
375
- </svg>
376
- </div>
377
- <div>
378
- <div className="text-2xl font-bold text-green-900 mb-1">
379
- Manifest is Valid! ✓
380
- </div>
381
- <p className="text-base text-green-800">
382
- Conforms to OSSA {STABLE_VERSION_TAG} specification
383
- </p>
384
- </div>
385
- </div>
386
-
387
- <div className="bg-white rounded-lg p-4 mt-4 border border-green-200">
388
- <div className="text-sm font-semibold text-gray-700 mb-3">✓ All Checks Passed:</div>
389
- <div className="space-y-2 text-sm text-gray-700">
390
- <div className="flex items-center">
391
- <span className="text-green-500 mr-2">✓</span>
392
- Required fields present
393
- </div>
394
- <div className="flex items-center">
395
- <span className="text-green-500 mr-2">✓</span>
396
- Correct data types
397
- </div>
398
- <div className="flex items-center">
399
- <span className="text-green-500 mr-2">✓</span>
400
- Value constraints met
401
- </div>
402
- <div className="flex items-center">
403
- <span className="text-green-500 mr-2">✓</span>
404
- Schema compliance verified
405
- </div>
406
- </div>
407
- </div>
408
-
409
- <div className="mt-4 pt-4 border-t border-green-200">
410
- <p className="text-sm text-green-800 font-semibold mb-2">✅ Ready for deployment</p>
411
- <p className="text-sm text-gray-700">
412
- This manifest can be used with kAgent, LangChain, CrewAI, OpenAI, and other OSSA-compatible frameworks.
413
- </p>
414
- </div>
415
- </div>
416
- ) : (
417
- <div className="bg-gradient-to-br from-red-50 to-pink-50 border-2 border-red-300 rounded-xl p-6 shadow-lg">
418
- <div className="flex items-center mb-4">
419
- <div className="w-12 h-12 bg-red-500 rounded-full flex items-center justify-center mr-4">
420
- <svg
421
- className="w-7 h-7 text-white"
422
- fill="none"
423
- stroke="currentColor"
424
- viewBox="0 0 24 24"
425
- >
426
- <path
427
- strokeLinecap="round"
428
- strokeLinejoin="round"
429
- strokeWidth={3}
430
- d="M6 18L18 6M6 6l12 12"
431
- />
432
- </svg>
433
- </div>
434
- <div>
435
- <div className="text-2xl font-bold text-red-900 mb-1">
436
- Validation Failed
437
- </div>
438
- <p className="text-base text-red-800">
439
- {validationResult.errors.length} error{validationResult.errors.length !== 1 ? 's' : ''} found
440
- </p>
441
- </div>
442
- </div>
443
-
444
- <div className="bg-white rounded-lg p-4 mt-4 border border-red-200 max-h-96 overflow-y-auto">
445
- <div className="text-sm font-semibold text-gray-700 mb-3">Errors to fix:</div>
446
- <div className="space-y-3">
447
- {validationResult.errors.map((error, index) => (
448
- <div key={index} className="border-l-4 border-red-400 pl-3 py-2">
449
- <div className="font-bold text-red-900 text-sm mb-1">
450
- {error.path ? `📍 ${error.path}` : '📍 Root level'}
451
- </div>
452
- <div className="text-gray-700 text-sm">{error.message}</div>
453
- </div>
454
- ))}
455
- </div>
456
- </div>
457
- </div>
458
- )}
459
-
460
- {/* Help Section */}
461
- <div className="mt-6 bg-gradient-to-br from-blue-50 to-cyan-50 rounded-xl p-5 border border-blue-200">
462
- <h3 className="font-bold text-blue-900 mb-3">Need Help?</h3>
463
- <div className="space-y-2 text-sm">
464
- <div className="bg-white rounded-lg p-3 border border-blue-100">
465
- <strong className="text-blue-900">View Schema Reference</strong>
466
- <p className="text-gray-700 mt-1">Complete documentation of all fields</p>
467
- <a href="/schema" className="text-blue-600 hover:underline mt-1 inline-block">Visit Schema Page →</a>
468
- </div>
469
- <div className="bg-white rounded-lg p-3 border border-blue-100">
470
- <strong className="text-blue-900">Browse Examples</strong>
471
- <p className="text-gray-700 mt-1">58+ real-world agent manifests</p>
472
- <a href="/examples" className="text-blue-600 hover:underline mt-1 inline-block">View Examples →</a>
473
- </div>
474
- <div className="bg-white rounded-lg p-3 border border-blue-100">
475
- <strong className="text-blue-900">Read Documentation</strong>
476
- <p className="text-gray-700 mt-1">Complete guides and tutorials</p>
477
- <a href="/docs" className="text-blue-600 hover:underline mt-1 inline-block">Read Docs →</a>
478
- </div>
479
- </div>
480
- </div>
481
- </div>
482
- </div>
483
- </div>
484
- </>
485
- );
486
- }
487
-
@@ -1,19 +0,0 @@
1
- import { MetadataRoute } from 'next';
2
-
3
- export const dynamic = 'force-static';
4
-
5
- export default function robots(): MetadataRoute.Robots {
6
- const baseUrl = 'https://openstandardagents.org';
7
-
8
- return {
9
- rules: [
10
- {
11
- userAgent: '*',
12
- allow: '/',
13
- disallow: ['/api/', '/_next/'],
14
- },
15
- ],
16
- sitemap: `${baseUrl}/sitemap.xml`,
17
- };
18
- }
19
-
@@ -1,74 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import matter from 'gray-matter';
4
-
5
- export const dynamic = 'force-static';
6
-
7
- function getAllPosts(): Array<{
8
- slug: string;
9
- title: string;
10
- date: string;
11
- author: string;
12
- excerpt: string;
13
- }> {
14
- const blogDir = path.join(process.cwd(), '../../content/blog');
15
-
16
- if (!fs.existsSync(blogDir)) {
17
- return [];
18
- }
19
-
20
- const files = fs.readdirSync(blogDir);
21
- return files
22
- .filter((file) => file.endsWith('.md'))
23
- .map((file) => {
24
- const filePath = path.join(blogDir, file);
25
- const fileContents = fs.readFileSync(filePath, 'utf8');
26
- const { data } = matter(fileContents);
27
-
28
- return {
29
- slug: file.replace(/\.md$/, ''),
30
- title: data.title || '',
31
- date: data.date || '',
32
- author: data.author || 'OSSA Team',
33
- excerpt: data.excerpt || '',
34
- };
35
- })
36
- .sort((a, b) => {
37
- return new Date(b.date).getTime() - new Date(a.date).getTime();
38
- });
39
- }
40
-
41
- export async function GET(): Promise<Response> {
42
- const posts = getAllPosts();
43
- const baseUrl = 'https://openstandardagents.org';
44
-
45
- const rss = `<?xml version="1.0" encoding="UTF-8"?>
46
- <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
47
- <channel>
48
- <title>OSSA Blog</title>
49
- <description>Latest news, updates, and insights about OSSA</description>
50
- <link>${baseUrl}</link>
51
- <atom:link href="${baseUrl}/rss.xml" rel="self" type="application/rss+xml"/>
52
- <language>en-us</language>
53
- ${posts
54
- .map(
55
- (post) => `
56
- <item>
57
- <title>${post.title}</title>
58
- <description>${post.excerpt}</description>
59
- <link>${baseUrl}/blog/${post.slug}</link>
60
- <pubDate>${new Date(post.date).toUTCString()}</pubDate>
61
- <author>${post.author}</author>
62
- </item>`
63
- )
64
- .join('')}
65
- </channel>
66
- </rss>`;
67
-
68
- return new Response(rss, {
69
- headers: {
70
- 'Content-Type': 'application/xml',
71
- },
72
- });
73
- }
74
-