@bluefly/openstandardagents 0.2.7 → 0.2.9

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 (327) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.github/AGENTS.md +245 -0
  4. package/.github/agents/github-issue-triage.ossa.yaml +99 -0
  5. package/.github/agents/github-pr-triage.ossa.yaml +137 -0
  6. package/.github/workflows/issue-sync-to-gitlab.yml +138 -0
  7. package/.github/workflows/pr-triage-to-gitlab.yml +164 -0
  8. package/.version.json +2 -2
  9. package/.wiki-config.json +24 -0
  10. package/CHANGELOG.md +44 -18
  11. package/CODEOWNERS +75 -0
  12. package/CONTRIBUTING.md +103 -4
  13. package/README.md +178 -243
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/repositories/schema.repository.d.ts +6 -1
  19. package/dist/repositories/schema.repository.d.ts.map +1 -1
  20. package/dist/repositories/schema.repository.js +49 -27
  21. package/dist/repositories/schema.repository.js.map +1 -1
  22. package/dist/services/migration.service.d.ts +4 -3
  23. package/dist/services/migration.service.d.ts.map +1 -1
  24. package/dist/services/migration.service.js +11 -10
  25. package/dist/services/migration.service.js.map +1 -1
  26. package/dist/services/release-automation/release.service.js +1 -1
  27. package/dist/services/release-automation/release.service.js.map +1 -1
  28. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  29. package/dist/services/release-automation/webhook.service.js +3 -3
  30. package/dist/services/release-automation/webhook.service.js.map +1 -1
  31. package/dist/services/runtime/claude/claude-adapter.d.ts +1 -1
  32. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
  33. package/dist/services/runtime/claude/claude-adapter.js +2 -2
  34. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  35. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  36. package/dist/spec/v0.2.8/README.md +72 -0
  37. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  38. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  39. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  40. 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
  41. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  42. package/dist/spec/v0.2.9/a2a-protocol.md +1337 -0
  43. package/dist/spec/v0.2.9/agent.md +1946 -0
  44. package/dist/spec/v0.2.9/capabilities/index.yaml +25 -0
  45. package/dist/spec/v0.2.9/capabilities/memory.yaml +251 -0
  46. package/dist/spec/v0.2.9/capability-schema.md +576 -0
  47. package/dist/spec/v0.2.9/compliance-profiles.md +533 -0
  48. package/dist/spec/v0.2.9/conformance-testing.md +1527 -0
  49. package/dist/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  50. package/dist/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  51. package/dist/spec/v0.2.9/runtime-semantics.md +464 -0
  52. package/dist/spec/v0.2.9/security-model.md +1245 -0
  53. package/dist/spec/v0.2.9/semantic-conventions.md +347 -0
  54. package/dist/spec/v0.2.9/types.ts +522 -0
  55. package/dist/types/index.d.ts +3 -2
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/policy.d.ts +377 -0
  58. package/dist/types/policy.d.ts.map +1 -0
  59. package/dist/types/policy.js +84 -0
  60. package/dist/types/policy.js.map +1 -0
  61. package/dist/utils/index.d.ts +6 -0
  62. package/dist/utils/index.d.ts.map +1 -0
  63. package/dist/utils/index.js +6 -0
  64. package/dist/utils/index.js.map +1 -0
  65. package/dist/utils/version.d.ts +68 -0
  66. package/dist/utils/version.d.ts.map +1 -0
  67. package/dist/utils/version.js +156 -0
  68. package/dist/utils/version.js.map +1 -0
  69. package/docs/specs/policy-dsl.md +925 -0
  70. package/eslint-report.json +1 -0
  71. package/examples/adk-integration/code-review-workflow.yml +1 -1
  72. package/examples/adk-integration/customer-support.yml +1 -1
  73. package/examples/adk-integration/data-pipeline.yml +1 -1
  74. package/examples/advanced/reasoning-agent.yaml +136 -0
  75. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  76. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  77. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  78. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  79. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  80. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  81. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  82. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  83. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  84. package/examples/agents-md/code-agent.ossa.json +100 -0
  85. package/examples/agents-md/monorepo-agent.ossa.yaml +180 -0
  86. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  87. package/examples/autogen/multi-agent.ossa.json +1 -1
  88. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  89. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  90. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  91. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  92. package/examples/crewai/research-team.ossa.json +1 -1
  93. package/examples/cursor/code-review-agent.ossa.json +1 -1
  94. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  95. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  96. package/examples/extensions/agents-md-v1.yml +175 -0
  97. package/examples/extensions/drupal-v1.yml +1 -1
  98. package/examples/extensions/kagent-v1.yml +1 -1
  99. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  100. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  101. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  102. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  103. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  104. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  105. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  106. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  107. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  108. package/examples/langchain/chain-agent.ossa.json +1 -1
  109. package/examples/langflow/workflow-agent.ossa.json +1 -1
  110. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  111. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  112. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  113. package/examples/multi-agent/README.md +74 -0
  114. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  115. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  116. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  117. package/examples/openai/basic-agent.ossa.yaml +1 -1
  118. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  119. package/examples/openai/swarm-agent.ossa.json +1 -1
  120. package/examples/production/document-analyzer-openai.yml +1 -1
  121. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  122. package/examples/spec-examples/audit-agent.yml +1 -1
  123. package/examples/spec-examples/chat-agent.yml +1 -1
  124. package/examples/spec-examples/compliance-agent.yml +1 -1
  125. package/examples/spec-examples/monitoring-agent.yml +1 -1
  126. package/examples/spec-examples/workflow-agent.yml +1 -1
  127. package/examples/templates/ossa-compliance.yaml +1 -1
  128. package/examples/vercel/edge-agent.ossa.json +1 -1
  129. package/gl-code-quality-report.json +62 -0
  130. package/llms-ctx-full.txt +39 -0
  131. package/llms-ctx.txt +39 -0
  132. package/llms.txt +47 -0
  133. package/package.json +6 -3
  134. package/scripts/README.md +25 -0
  135. package/scripts/compliance-audit.ts +796 -0
  136. package/scripts/eslint-to-codequality.cjs +34 -0
  137. package/scripts/generate-agents-catalog.ts +2 -1
  138. package/scripts/generate-api-docs.ts +2 -1
  139. package/scripts/generate-examples-docs.ts +2 -1
  140. package/scripts/generate-llms-ctx.sh +17 -0
  141. package/scripts/generate-schema-docs.ts +31 -10
  142. package/scripts/sync-version.js +4 -12
  143. package/scripts/validate-schema.ts +2 -1
  144. package/spec/v0.2.8/CHANGELOG.md +401 -0
  145. package/spec/v0.2.8/README.md +72 -0
  146. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  147. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  148. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  149. package/spec/{v0.2.6-dev/ossa-0.2.6-dev.schema.json → v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  150. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  151. package/spec/v0.2.9/a2a-protocol.md +1337 -0
  152. package/spec/v0.2.9/agent.md +1946 -0
  153. package/spec/v0.2.9/capabilities/index.yaml +25 -0
  154. package/spec/v0.2.9/capabilities/memory.yaml +251 -0
  155. package/spec/v0.2.9/capability-schema.md +576 -0
  156. package/spec/v0.2.9/compliance-profiles.md +533 -0
  157. package/spec/v0.2.9/conformance-testing.md +1527 -0
  158. package/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  159. package/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  160. package/spec/v0.2.9/runtime-semantics.md +464 -0
  161. package/spec/v0.2.9/security-model.md +1245 -0
  162. package/spec/v0.2.9/semantic-conventions.md +347 -0
  163. package/spec/v0.2.9/types.ts +522 -0
  164. package/test-results/junit.xml +337 -0
  165. package/.github/workflows/pr-comment.yml +0 -33
  166. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  167. package/dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json +0 -1696
  168. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  169. package/scripts/lib/exec.ts +0 -37
  170. package/scripts/lib/file-ops.ts +0 -58
  171. package/scripts/lib/version.ts +0 -83
  172. package/website/.lighthouserc.ts +0 -24
  173. package/website/.prettierrc +0 -10
  174. package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
  175. package/website/Dockerfile +0 -30
  176. package/website/app/about/page.tsx +0 -304
  177. package/website/app/blog/[slug]/page.tsx +0 -208
  178. package/website/app/blog/page.tsx +0 -249
  179. package/website/app/design-guide/page.tsx +0 -511
  180. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  181. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  182. package/website/app/ecosystem/page.tsx +0 -410
  183. package/website/app/examples/page.tsx +0 -133
  184. package/website/app/globals.scss +0 -370
  185. package/website/app/layout.tsx +0 -106
  186. package/website/app/license/page.tsx +0 -183
  187. package/website/app/not-found.tsx +0 -18
  188. package/website/app/page.tsx +0 -686
  189. package/website/app/page.tsx.bak +0 -679
  190. package/website/app/page.tsx.bak2 +0 -649
  191. package/website/app/playground/page.tsx +0 -487
  192. package/website/app/robots.ts +0 -19
  193. package/website/app/rss.xml/route.ts +0 -74
  194. package/website/app/schema/page.tsx +0 -1001
  195. package/website/app/sitemap.ts +0 -56
  196. package/website/app/specification/page.tsx +0 -287
  197. package/website/components/InstallCommand.tsx +0 -96
  198. package/website/components/Logo.tsx +0 -97
  199. package/website/components/StructuredData.tsx +0 -65
  200. package/website/components/docs/DocsSearch.tsx +0 -104
  201. package/website/components/docs/DocsSidebar.tsx +0 -155
  202. package/website/components/docs/MarkdownContent.tsx +0 -401
  203. package/website/components/docs/VersionSelector.tsx +0 -105
  204. package/website/components/examples/ExamplesViewer.tsx +0 -293
  205. package/website/components/layout/Footer.tsx +0 -116
  206. package/website/components/layout/Header.tsx +0 -172
  207. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  208. package/website/components/schema/SchemaExplorer.tsx +0 -213
  209. package/website/components/ui/Badge.tsx +0 -82
  210. package/website/components/ui/Button.tsx +0 -116
  211. package/website/components/ui/Card.tsx +0 -167
  212. package/website/components/ui/Checkbox.tsx +0 -141
  213. package/website/components/ui/Input.tsx +0 -169
  214. package/website/components/ui/Radio.tsx +0 -141
  215. package/website/components/ui/Select.tsx +0 -182
  216. package/website/components/ui/Tag.tsx +0 -158
  217. package/website/components/ui/Textarea.tsx +0 -195
  218. package/website/components/ui/index.ts +0 -11
  219. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  220. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  221. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  222. package/website/content/blog/introducing-ossa-framework.md +0 -328
  223. package/website/content/blog/ossa-production-results.md +0 -279
  224. package/website/content/blog/welcome-to-ossa.md +0 -43
  225. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  226. package/website/content/docs/00-home.md +0 -153
  227. package/website/content/docs/adapters/openai-adapter.md +0 -693
  228. package/website/content/docs/agents/catalog.md +0 -28
  229. package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
  230. package/website/content/docs/api-reference/index.md +0 -38
  231. package/website/content/docs/api-reference/ossa-core-api.md +0 -634
  232. package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
  233. package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
  234. package/website/content/docs/architecture/execution-flow.md +0 -335
  235. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  236. package/website/content/docs/architecture/overview.md +0 -121
  237. package/website/content/docs/architecture/stack-integration.md +0 -461
  238. package/website/content/docs/changelog.md +0 -246
  239. package/website/content/docs/cli-reference/index.md +0 -111
  240. package/website/content/docs/cli-reference/ossa-agents.md +0 -70
  241. package/website/content/docs/cli-reference/ossa-export.md +0 -56
  242. package/website/content/docs/cli-reference/ossa-generate.md +0 -66
  243. package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
  244. package/website/content/docs/cli-reference/ossa-import.md +0 -56
  245. package/website/content/docs/cli-reference/ossa-init.md +0 -57
  246. package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
  247. package/website/content/docs/cli-reference/ossa-run.md +0 -66
  248. package/website/content/docs/cli-reference/ossa-schema.md +0 -57
  249. package/website/content/docs/cli-reference/ossa-setup.md +0 -57
  250. package/website/content/docs/cli-reference/ossa-validate.md +0 -66
  251. package/website/content/docs/configuration/index.md +0 -97
  252. package/website/content/docs/contributing.md +0 -599
  253. package/website/content/docs/deployment/github-mirroring.md +0 -924
  254. package/website/content/docs/documentation.md +0 -100
  255. package/website/content/docs/ecosystem/framework-support.md +0 -1361
  256. package/website/content/docs/ecosystem/overview.md +0 -366
  257. package/website/content/docs/errors/index.md +0 -10
  258. package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
  259. package/website/content/docs/examples/catalog.md +0 -300
  260. package/website/content/docs/for-audiences/students-researchers.md +0 -122
  261. package/website/content/docs/getting-started/index.md +0 -92
  262. package/website/content/docs/getting-started/installation.md +0 -155
  263. package/website/content/docs/getting-started/running-agents.md +0 -309
  264. package/website/content/docs/getting-started.md +0 -91
  265. package/website/content/docs/integrations/aiflow.md +0 -104
  266. package/website/content/docs/integrations/drupal.md +0 -105
  267. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  268. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  269. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  270. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  271. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  272. package/website/content/docs/migration-guides/index.md +0 -133
  273. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  274. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  275. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  276. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  277. package/website/content/docs/openapi-extensions/examples.md +0 -550
  278. package/website/content/docs/openapi-extensions/index.md +0 -551
  279. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  280. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  281. package/website/content/docs/ossa-compliant-badge.md +0 -251
  282. package/website/content/docs/pre-release/index.md +0 -175
  283. package/website/content/docs/quick-reference.md +0 -17
  284. package/website/content/docs/readme.md +0 -35
  285. package/website/content/docs/releases/v0.2.6.md +0 -99
  286. package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
  287. package/website/content/docs/schema-reference/agent-id.md +0 -52
  288. package/website/content/docs/schema-reference/agent-name.md +0 -50
  289. package/website/content/docs/schema-reference/agent-role.md +0 -54
  290. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  291. package/website/content/docs/schema-reference/agent-version.md +0 -50
  292. package/website/content/docs/schema-reference/autonomy.md +0 -568
  293. package/website/content/docs/schema-reference/constraints.md +0 -543
  294. package/website/content/docs/schema-reference/index.md +0 -45
  295. package/website/content/docs/schema-reference/llm-config.md +0 -445
  296. package/website/content/docs/schema-reference/observability.md +0 -654
  297. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  298. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  299. package/website/content/docs/schema-reference/tools.md +0 -628
  300. package/website/content/docs/templates/blog-post.md +0 -43
  301. package/website/content/docs/types-reference/index.md +0 -105
  302. package/website/content/docs/use-cases/00-index.md +0 -395
  303. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  304. package/website/content/docs/use-cases/customer-support.md +0 -1234
  305. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  306. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  307. package/website/content/docs/versioning.md +0 -288
  308. package/website/dev.sh +0 -53
  309. package/website/docker-compose.dev.yml +0 -36
  310. package/website/lib/version.ts +0 -35
  311. package/website/lib/versions.json +0 -103
  312. package/website/next.config.ts +0 -18
  313. package/website/nginx.conf +0 -32
  314. package/website/package-lock.json +0 -9679
  315. package/website/package.json +0 -59
  316. package/website/postcss.config.mjs +0 -9
  317. package/website/scripts/fetch-versions.js +0 -166
  318. package/website/scripts/generate-examples-index.js +0 -163
  319. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  320. package/website/scripts/sync-version.js +0 -72
  321. package/website/scripts/sync-wiki.ts +0 -322
  322. package/website/scripts/upload-wiki.ts +0 -199
  323. package/website/styles/_spacing.scss +0 -453
  324. package/website/styles/_tokens.scss +0 -245
  325. package/website/styles/_typography.scss +0 -361
  326. package/website/styles/_variables.scss +0 -287
  327. package/website/tailwind.config.ts +0 -170
@@ -0,0 +1,337 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <testsuites name="jest tests" tests="145" failures="0" errors="0" time="8.295">
3
+ <testsuite name="CrewAIValidator" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.487" tests="8">
4
+ <testcase classname="CrewAIValidator" name="should validate valid CrewAI extension" time="0.008">
5
+ </testcase>
6
+ <testcase classname="CrewAIValidator" name="should reject missing role" time="0">
7
+ </testcase>
8
+ <testcase classname="CrewAIValidator" name="should reject missing goal" time="0">
9
+ </testcase>
10
+ <testcase classname="CrewAIValidator" name="should validate all agent types" time="0">
11
+ </testcase>
12
+ <testcase classname="CrewAIValidator" name="should reject invalid agent_type" time="0.001">
13
+ </testcase>
14
+ <testcase classname="CrewAIValidator" name="should validate max_iterations" time="0">
15
+ </testcase>
16
+ <testcase classname="CrewAIValidator" name="should reject invalid max_iterations" time="0">
17
+ </testcase>
18
+ <testcase classname="CrewAIValidator" name="should return warnings for missing backstory" time="0">
19
+ </testcase>
20
+ </testsuite>
21
+ <testsuite name="MigrationService" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.48" tests="9">
22
+ <testcase classname="MigrationService › migrate" name="should handle v0.2.2 format" time="0.004">
23
+ </testcase>
24
+ <testcase classname="MigrationService › migrate" name="should migrate v1.0 to v0.2.2 with full metadata" time="0.003">
25
+ </testcase>
26
+ <testcase classname="MigrationService › migrate" name="should handle v1.0 with auto provider" time="0">
27
+ </testcase>
28
+ <testcase classname="MigrationService › migrate" name="should handle v1.0 with monitoring instead of observability" time="0.001">
29
+ </testcase>
30
+ <testcase classname="MigrationService › migrate" name="should handle v1.0 with deployment config" time="0.001">
31
+ </testcase>
32
+ <testcase classname="MigrationService › migrate" name="should handle v1.0 with runtime config" time="0">
33
+ </testcase>
34
+ <testcase classname="MigrationService › migrate" name="should handle v1.0 without version" time="0">
35
+ </testcase>
36
+ <testcase classname="MigrationService › migrate" name="should handle existing v0.2.2 format with all fields" time="0">
37
+ </testcase>
38
+ <testcase classname="MigrationService › migrate" name="should throw for unsupported format" time="0.01">
39
+ </testcase>
40
+ </testsuite>
41
+ <testsuite name="ManifestRepository" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.509" tests="5">
42
+ <testcase classname="ManifestRepository › load" name="should load YAML manifest" time="0.01">
43
+ </testcase>
44
+ <testcase classname="ManifestRepository › load" name="should load JSON manifest" time="0.003">
45
+ </testcase>
46
+ <testcase classname="ManifestRepository › load" name="should throw for missing file" time="0.007">
47
+ </testcase>
48
+ <testcase classname="ManifestRepository › save" name="should save as YAML" time="0.003">
49
+ </testcase>
50
+ <testcase classname="ManifestRepository › save" name="should save as JSON" time="0.001">
51
+ </testcase>
52
+ </testsuite>
53
+ <testsuite name="Platform Export Integration" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.591" tests="6">
54
+ <testcase classname="Platform Export Integration" name="should export to Cursor format" time="0.005">
55
+ </testcase>
56
+ <testcase classname="Platform Export Integration" name="should export to OpenAI format" time="0">
57
+ </testcase>
58
+ <testcase classname="Platform Export Integration" name="should export to CrewAI format" time="0">
59
+ </testcase>
60
+ <testcase classname="Platform Export Integration" name="should export to Anthropic format" time="0.001">
61
+ </testcase>
62
+ <testcase classname="Platform Export Integration" name="should export to LangChain format" time="0">
63
+ </testcase>
64
+ <testcase classname="Platform Export Integration" name="should handle missing extensions gracefully" time="0">
65
+ </testcase>
66
+ </testsuite>
67
+ <testsuite name="Platform Import Integration" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.617" tests="5">
68
+ <testcase classname="Platform Import Integration" name="should import from Cursor format" time="0.015">
69
+ </testcase>
70
+ <testcase classname="Platform Import Integration" name="should import from OpenAI format" time="0">
71
+ </testcase>
72
+ <testcase classname="Platform Import Integration" name="should import from CrewAI format" time="0">
73
+ </testcase>
74
+ <testcase classname="Platform Import Integration" name="should import from Anthropic format" time="0.001">
75
+ </testcase>
76
+ <testcase classname="Platform Import Integration" name="should handle missing optional fields" time="0">
77
+ </testcase>
78
+ </testsuite>
79
+ <testsuite name="GenerationService" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.116" tests="3">
80
+ <testcase classname="GenerationService › generate" name="should generate manifest from template" time="0.001">
81
+ </testcase>
82
+ <testcase classname="GenerationService › generate" name="should normalize agent ID" time="0">
83
+ </testcase>
84
+ <testcase classname="GenerationService › generate" name="should generate with capabilities" time="0">
85
+ </testcase>
86
+ </testsuite>
87
+ <testsuite name="All Examples Validation" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.718" tests="5">
88
+ <testcase classname="All Examples Validation › kAgent examples" name="should validate all kAgent examples" time="0.094">
89
+ </testcase>
90
+ <testcase classname="All Examples Validation › Generated manifests" name="should validate generated chat agent" time="0.045">
91
+ </testcase>
92
+ <testcase classname="All Examples Validation › Example directory structure" name="should have examples directory" time="0">
93
+ </testcase>
94
+ <testcase classname="All Examples Validation › Example directory structure" name="should have kagent examples" time="0">
95
+ </testcase>
96
+ <testcase classname="All Examples Validation › Example directory structure" name="should have kagent example files" time="0.001">
97
+ </testcase>
98
+ </testsuite>
99
+ <testsuite name="GitHubSyncService" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.204" tests="2">
100
+ <testcase classname="GitHubSyncService" name="should validate config with Zod" time="0.002">
101
+ </testcase>
102
+ <testcase classname="GitHubSyncService" name="should reject invalid config" time="0.025">
103
+ </testcase>
104
+ </testsuite>
105
+ <testsuite name="Schema Validation Integration" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.715" tests="4">
106
+ <testcase classname="Schema Validation Integration" name="should validate all example agents" time="0.134">
107
+ </testcase>
108
+ <testcase classname="Schema Validation Integration" name="should validate platform extensions" time="0">
109
+ </testcase>
110
+ <testcase classname="Schema Validation Integration" name="should catch platform-specific validation errors" time="0.001">
111
+ </testcase>
112
+ <testcase classname="Schema Validation Integration" name="should validate cross-platform compatibility" time="0">
113
+ </testcase>
114
+ </testsuite>
115
+ <testsuite name="AutoGenValidator" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.067" tests="3">
116
+ <testcase classname="AutoGenValidator › validate" name="should validate manifest without autogen extension" time="0">
117
+ </testcase>
118
+ <testcase classname="AutoGenValidator › validate" name="should validate with disabled autogen" time="0">
119
+ </testcase>
120
+ <testcase classname="AutoGenValidator › validate" name="should validate with valid autogen config" time="0">
121
+ </testcase>
122
+ </testsuite>
123
+ <testsuite name="OpenAIAdapter" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.21" tests="5">
124
+ <testcase classname="OpenAIAdapter › initialize" name="should initialize without error" time="0.001">
125
+ </testcase>
126
+ <testcase classname="OpenAIAdapter › registerToolHandler" name="should register tool handler" time="0">
127
+ </testcase>
128
+ <testcase classname="OpenAIAdapter › registerToolHandler" name="should register multiple handlers" time="0">
129
+ </testcase>
130
+ <testcase classname="OpenAIAdapter › getAgentInfo" name="should return agent info" time="0.001">
131
+ </testcase>
132
+ <testcase classname="OpenAIAdapter › getAgentInfo" name="should return empty tools array when no tools configured" time="0">
133
+ </testcase>
134
+ </testsuite>
135
+ <testsuite name="OpenAIValidator" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.073" tests="6">
136
+ <testcase classname="OpenAIValidator" name="should validate valid OpenAI extension" time="0.001">
137
+ </testcase>
138
+ <testcase classname="OpenAIValidator" name="should reject invalid model" time="0">
139
+ </testcase>
140
+ <testcase classname="OpenAIValidator" name="should validate all valid models" time="0">
141
+ </testcase>
142
+ <testcase classname="OpenAIValidator" name="should reject invalid guardrails values" time="0">
143
+ </testcase>
144
+ <testcase classname="OpenAIValidator" name="should validate memory configuration" time="0">
145
+ </testcase>
146
+ <testcase classname="OpenAIValidator" name="should reject invalid memory type" time="0">
147
+ </testcase>
148
+ </testsuite>
149
+ <testsuite name="SchemaRepository" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.065" tests="8">
150
+ <testcase classname="SchemaRepository › getAvailableVersions" name="should return array of versions" time="0.002">
151
+ </testcase>
152
+ <testcase classname="SchemaRepository › getAvailableVersions" name="should cache versions on subsequent calls" time="0.001">
153
+ </testcase>
154
+ <testcase classname="SchemaRepository › getCurrentVersion" name="should return current version" time="0.001">
155
+ </testcase>
156
+ <testcase classname="SchemaRepository › getSchema" name="should load schema for valid version" time="0.001">
157
+ </testcase>
158
+ <testcase classname="SchemaRepository › getSchema" name="should cache schema after first load" time="0">
159
+ </testcase>
160
+ <testcase classname="SchemaRepository › getSchema" name="should load different versions" time="0.001">
161
+ </testcase>
162
+ <testcase classname="SchemaRepository › getSchema" name="should throw for invalid version" time="0.01">
163
+ </testcase>
164
+ <testcase classname="SchemaRepository › clearCache" name="should clear cached schemas" time="0.002">
165
+ </testcase>
166
+ </testsuite>
167
+ <testsuite name="Run Command" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:16" time="0.024" tests="15">
168
+ <testcase classname="Run Command › Validation" name="should validate manifest by default" time="0">
169
+ </testcase>
170
+ <testcase classname="Run Command › Validation" name="should exit with error code 1 when validation fails" time="0">
171
+ </testcase>
172
+ <testcase classname="Run Command › Validation" name="should skip validation when --no-validate is used" time="0">
173
+ </testcase>
174
+ <testcase classname="Run Command › Runtime Selection" name="should use openai runtime by default" time="0.001">
175
+ </testcase>
176
+ <testcase classname="Run Command › Runtime Selection" name="should exit with error for unsupported runtime" time="0">
177
+ </testcase>
178
+ <testcase classname="Run Command › API Key Validation" name="should exit with error when OPENAI_API_KEY is not set" time="0">
179
+ </testcase>
180
+ <testcase classname="Run Command › API Key Validation" name="should proceed when OPENAI_API_KEY is set" time="0">
181
+ </testcase>
182
+ <testcase classname="Run Command › Single Message Mode" name="should execute single message and exit" time="0">
183
+ </testcase>
184
+ <testcase classname="Run Command › Single Message Mode" name="should pass verbose option to chat" time="0.001">
185
+ </testcase>
186
+ <testcase classname="Run Command › Single Message Mode" name="should pass maxTurns option to chat" time="0">
187
+ </testcase>
188
+ <testcase classname="Run Command › Error Handling" name="should handle manifest loading errors" time="0">
189
+ </testcase>
190
+ <testcase classname="Run Command › Error Handling" name="should handle chat errors gracefully" time="0">
191
+ </testcase>
192
+ <testcase classname="Run Command › Error Handling" name="should show stack trace in verbose mode" time="0">
193
+ </testcase>
194
+ <testcase classname="Run Command › Agent Info Display" name="should display agent name and model" time="0">
195
+ </testcase>
196
+ <testcase classname="Run Command › Agent Info Display" name="should display available tools" time="0.001">
197
+ </testcase>
198
+ </testsuite>
199
+ <testsuite name="AgentsMdExtension Schema" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:16" time="0.025" tests="11">
200
+ <testcase classname="AgentsMdExtension Schema" name="should accept valid agents_md extension" time="0">
201
+ </testcase>
202
+ <testcase classname="AgentsMdExtension Schema" name="should accept full agents_md configuration" time="0">
203
+ </testcase>
204
+ <testcase classname="AgentsMdExtension Schema" name="should support section source mappings" time="0">
205
+ </testcase>
206
+ <testcase classname="AgentsMdExtension Schema" name="should support custom output paths" time="0">
207
+ </testcase>
208
+ <testcase classname="AgentsMdExtension Schema" name="should support nested files for monorepos" time="0">
209
+ </testcase>
210
+ <testcase classname="AgentsMdExtension Schema" name="should support Cursor integration flag" time="0">
211
+ </testcase>
212
+ <testcase classname="AgentsMdSection Schema" name="should accept all section properties" time="0">
213
+ </testcase>
214
+ <testcase classname="AgentsMdSection Schema" name="should allow section with only custom content" time="0.001">
215
+ </testcase>
216
+ <testcase classname="AgentsMdSection Schema" name="should allow section with only source mapping" time="0">
217
+ </testcase>
218
+ <testcase classname="Bidirectional Mapping" name="should define OSSA to agents.md mappings" time="0">
219
+ </testcase>
220
+ <testcase classname="Bidirectional Mapping" name="should support agents.md to OSSA parsing" time="0">
221
+ </testcase>
222
+ </testsuite>
223
+ <testsuite name="LangChainValidator" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.046" tests="8">
224
+ <testcase classname="LangChainValidator" name="should validate valid LangChain extension" time="0">
225
+ </testcase>
226
+ <testcase classname="LangChainValidator" name="should validate all chain types" time="0">
227
+ </testcase>
228
+ <testcase classname="LangChainValidator" name="should reject invalid chain_type" time="0">
229
+ </testcase>
230
+ <testcase classname="LangChainValidator" name="should validate memory types" time="0.001">
231
+ </testcase>
232
+ <testcase classname="LangChainValidator" name="should reject invalid memory type" time="0">
233
+ </testcase>
234
+ <testcase classname="LangChainValidator" name="should validate callbacks array" time="0">
235
+ </testcase>
236
+ <testcase classname="LangChainValidator" name="should reject invalid callbacks type" time="0">
237
+ </testcase>
238
+ <testcase classname="LangChainValidator" name="should return warnings for missing memory" time="0">
239
+ </testcase>
240
+ </testsuite>
241
+ <testsuite name="agents.md Extension Integration" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.757" tests="6">
242
+ <testcase classname="agents.md Extension Integration" name="should validate agents_md extension in manifest" time="0.158">
243
+ </testcase>
244
+ <testcase classname="agents.md Extension Integration" name="should validate agents_md with Cursor extension integration" time="0">
245
+ </testcase>
246
+ <testcase classname="agents.md Extension Integration" name="should validate agents_md with nested files for monorepo" time="0">
247
+ </testcase>
248
+ <testcase classname="agents.md Extension Integration" name="should validate agents_md with bidirectional mapping" time="0.001">
249
+ </testcase>
250
+ <testcase classname="agents.md Extension Integration" name="should validate agents_md example manifests" time="0.009">
251
+ </testcase>
252
+ <testcase classname="agents.md Extension Integration" name="should validate custom sections array" time="0">
253
+ </testcase>
254
+ </testsuite>
255
+ <testsuite name="ValidationService" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="0.929" tests="8">
256
+ <testcase classname="ValidationService › validate" name="should validate valid manifest" time="0.112">
257
+ </testcase>
258
+ <testcase classname="ValidationService › validate" name="should reject invalid manifest" time="0.106">
259
+ </testcase>
260
+ <testcase classname="ValidationService › validate" name="should validate with specific version" time="0.042">
261
+ </testcase>
262
+ <testcase classname="ValidationService › validate" name="should use current version when not specified" time="0.033">
263
+ </testcase>
264
+ <testcase classname="ValidationService › validateMany" name="should validate multiple manifests" time="0.045">
265
+ </testcase>
266
+ <testcase classname="ValidationService › validateMany" name="should handle mixed valid and invalid manifests" time="0.032">
267
+ </testcase>
268
+ <testcase classname="ValidationService › validateMany" name="should handle empty array" time="0.001">
269
+ </testcase>
270
+ <testcase classname="ValidationService › validateMany" name="should use specified version" time="0.03">
271
+ </testcase>
272
+ </testsuite>
273
+ <testsuite name="ossa validate command" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="1.508" tests="4">
274
+ <testcase classname="ossa validate command" name="should validate a correct v1.0 manifest" time="0.512">
275
+ </testcase>
276
+ <testcase classname="ossa validate command" name="should report validation errors for invalid manifest" time="0.233">
277
+ </testcase>
278
+ <testcase classname="ossa validate command" name="should show verbose output when requested" time="0.228">
279
+ </testcase>
280
+ <testcase classname="ossa validate command" name="should show warnings for missing best practices" time="0.227">
281
+ </testcase>
282
+ </testsuite>
283
+ <testsuite name="ossa generate command" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="1.586" tests="6">
284
+ <testcase classname="ossa generate command" name="should generate a chat agent" time="0.389">
285
+ </testcase>
286
+ <testcase classname="ossa generate command" name="should generate workflow agent with correct capabilities" time="0.178">
287
+ </testcase>
288
+ <testcase classname="ossa generate command" name="should generate compliance agent with low temperature" time="0.165">
289
+ </testcase>
290
+ <testcase classname="ossa generate command" name="should use custom runtime type" time="0.163">
291
+ </testcase>
292
+ <testcase classname="ossa generate command" name="should normalize agent ID" time="0.165">
293
+ </testcase>
294
+ <testcase classname="ossa generate command" name="should create output directory if it does not exist" time="0.157">
295
+ </testcase>
296
+ </testsuite>
297
+ <testsuite name="Full Workflow E2E" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="2.468" tests="3">
298
+ <testcase classname="Full Workflow E2E" name="should complete workflow: generate → validate" time="0.7">
299
+ </testcase>
300
+ <testcase classname="Full Workflow E2E" name="should complete workflow: generate multiple → validate all" time="1.123">
301
+ </testcase>
302
+ <testcase classname="Full Workflow E2E" name="should handle full development cycle" time="0.345">
303
+ </testcase>
304
+ </testsuite>
305
+ <testsuite name="ossa run command" errors="0" failures="0" skipped="0" timestamp="2025-12-06T01:17:15" time="7.869" tests="15">
306
+ <testcase classname="ossa run command › Validation" name="should validate manifest before running" time="0.896">
307
+ </testcase>
308
+ <testcase classname="ossa run command › Validation" name="should skip validation with --no-validate flag" time="0.525">
309
+ </testcase>
310
+ <testcase classname="ossa run command › API Key Validation" name="should exit with error when OPENAI_API_KEY is not set" time="0.206">
311
+ </testcase>
312
+ <testcase classname="ossa run command › Runtime Selection" name="should use openai runtime by default" time="0.531">
313
+ </testcase>
314
+ <testcase classname="ossa run command › Runtime Selection" name="should reject unsupported runtime" time="0.199">
315
+ </testcase>
316
+ <testcase classname="ossa run command › Single Message Mode" name="should accept -m flag for single message" time="1.706">
317
+ </testcase>
318
+ <testcase classname="ossa run command › Single Message Mode" name="should accept --message flag for single message" time="0.51">
319
+ </testcase>
320
+ <testcase classname="ossa run command › Verbose Mode" name="should accept -v flag for verbose output" time="0.529">
321
+ </testcase>
322
+ <testcase classname="ossa run command › Verbose Mode" name="should accept --verbose flag" time="0.522">
323
+ </testcase>
324
+ <testcase classname="ossa run command › Max Turns Option" name="should accept --max-turns flag" time="0.534">
325
+ </testcase>
326
+ <testcase classname="ossa run command › Error Handling" name="should handle missing manifest file" time="0.142">
327
+ </testcase>
328
+ <testcase classname="ossa run command › Error Handling" name="should handle invalid YAML" time="0.143">
329
+ </testcase>
330
+ <testcase classname="ossa run command › Error Handling" name="should handle invalid JSON" time="0.142">
331
+ </testcase>
332
+ <testcase classname="ossa run command › Agent Info Display" name="should display agent name when loading" time="0.49">
333
+ </testcase>
334
+ <testcase classname="ossa run command › Example Manifests" name="should run with example OpenAI agent" time="0.487">
335
+ </testcase>
336
+ </testsuite>
337
+ </testsuites>
@@ -1,33 +0,0 @@
1
- name: PR Comment
2
-
3
- on:
4
- pull_request:
5
- types: [opened]
6
-
7
- jobs:
8
- comment:
9
- runs-on: ubuntu-latest
10
- steps:
11
- - name: Comment on PR
12
- uses: actions/github-script@v7
13
- with:
14
- script: |
15
- github.rest.issues.createComment({
16
- issue_number: context.issue.number,
17
- owner: context.repo.owner,
18
- repo: context.repo.repo,
19
- body: `👋 Thanks for your contribution!
20
-
21
- **Review Process:**
22
- 1. We'll review your PR here on GitHub
23
- 2. If approved, we'll sync it to our internal GitLab for final testing
24
- 3. Once merged on GitLab, changes will automatically sync back here
25
- 4. Your PR will auto-close when the changes appear in main
26
-
27
- **Timeline:** We aim to review within 48 hours.
28
-
29
- **Questions?** Feel free to ask in the comments or join our [Discord](https://discord.gg/ossa).
30
-
31
- ---
32
- *This is a public mirror of our GitLab repository. Development happens at [gitlab.com/blueflyio/openstandardagents](https://gitlab.com/blueflyio/openstandardagents).*`
33
- })
@@ -1,244 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * OSSA 0.2.5-RC Validation Tool
4
- * Validates power-suite modules' ossa.yaml files against OSSA 0.2.5-RC schema
5
- */
6
-
7
- import { readFileSync } from 'fs';
8
- import { resolve, dirname } from 'path';
9
- import { fileURLToPath } from 'url';
10
- import { parse as parseYaml } from 'yaml';
11
- import Ajv from 'ajv';
12
- import addFormats from 'ajv-formats';
13
- import chalk from 'chalk';
14
-
15
- // ES module __dirname equivalent
16
- const __filename = fileURLToPath(import.meta.url);
17
- const __dirname = dirname(__filename);
18
-
19
- // Load OSSA 0.2.5-RC schema
20
- const schemaPath = resolve(__dirname, '../spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json');
21
- const schema = JSON.parse(readFileSync(schemaPath, 'utf-8'));
22
-
23
- // Initialize AJV validator
24
- const ajv = new Ajv({
25
- allErrors: true,
26
- strict: false,
27
- validateFormats: true,
28
- verbose: true,
29
- });
30
-
31
- addFormats(ajv);
32
-
33
- // Note: The power-suite ossa.yaml files use a different format (project config)
34
- // than full agent manifests. This validator checks for OSSA 0.2.5-RC compliance
35
- // in the project configuration format.
36
-
37
- interface PowerSuiteOssaConfig {
38
- ossa?: {
39
- version: string;
40
- project?: {
41
- name: string;
42
- type: string;
43
- version: string;
44
- description: string;
45
- };
46
- metadata?: {
47
- reasoning?: boolean;
48
- compliance?: {
49
- frameworks?: string[];
50
- };
51
- };
52
- ecosystem?: {
53
- mesh_enabled?: boolean;
54
- protocol_enabled?: boolean;
55
- router_enabled?: boolean;
56
- tracer_enabled?: boolean;
57
- brain_enabled?: boolean;
58
- flows_enabled?: boolean;
59
- [key: string]: unknown;
60
- };
61
- [key: string]: unknown;
62
- };
63
- }
64
-
65
- /**
66
- * Validate OSSA 0.2.5-RC configuration format
67
- */
68
- function validatePowerSuiteConfig(config: PowerSuiteOssaConfig): {
69
- valid: boolean;
70
- errors: string[];
71
- warnings: string[];
72
- } {
73
- const errors: string[] = [];
74
- const warnings: string[] = [];
75
-
76
- if (!config.ossa) {
77
- errors.push('Missing top-level "ossa" key');
78
- return { valid: false, errors, warnings };
79
- }
80
-
81
- const { ossa } = config;
82
-
83
- // Check version
84
- if (!ossa.version) {
85
- errors.push('Missing ossa.version');
86
- } else if (!ossa.version.startsWith('0.2.5')) {
87
- errors.push(
88
- `Invalid ossa.version: expected "0.2.5" or "0.2.5-RC" or "0.2.5.x", got "${ossa.version}"`
89
- );
90
- }
91
-
92
- // Check project
93
- if (!ossa.project) {
94
- warnings.push('Missing ossa.project (recommended for identification)');
95
- } else {
96
- if (!ossa.project.name) {
97
- errors.push('Missing ossa.project.name');
98
- }
99
- if (!ossa.project.type) {
100
- warnings.push('Missing ossa.project.type');
101
- }
102
- }
103
-
104
- // Check metadata (OSSA 0.2.5-RC requirement)
105
- if (!ossa.metadata) {
106
- warnings.push(
107
- 'Missing ossa.metadata (OSSA 0.2.5-RC recommends metadata.reasoning)'
108
- );
109
- } else {
110
- if (ossa.metadata.reasoning === undefined) {
111
- warnings.push(
112
- 'OSSA 0.2.5-RC recommends metadata.reasoning: true for AI agents'
113
- );
114
- }
115
- if (!ossa.metadata.compliance?.frameworks) {
116
- warnings.push(
117
- 'OSSA 0.2.5-RC recommends metadata.compliance.frameworks array'
118
- );
119
- }
120
- }
121
-
122
- // Check ecosystem (power-suite integration)
123
- if (!ossa.ecosystem) {
124
- warnings.push(
125
- 'Missing ossa.ecosystem (power-suite integration configuration)'
126
- );
127
- } else {
128
- const ecosystem = ossa.ecosystem;
129
- const requiredModules = [
130
- 'mesh_enabled',
131
- 'protocol_enabled',
132
- 'router_enabled',
133
- 'tracer_enabled',
134
- 'brain_enabled',
135
- 'flows_enabled',
136
- ];
137
-
138
- for (const module of requiredModules) {
139
- if (ecosystem[module] === undefined) {
140
- warnings.push(
141
- `Consider setting ossa.ecosystem.${module} for power-suite integration`
142
- );
143
- }
144
- }
145
- }
146
-
147
- // Check compliance standards array
148
- if (ossa.compliance?.standards) {
149
- const standards = Array.isArray(ossa.compliance.standards)
150
- ? ossa.compliance.standards
151
- : Object.values(ossa.compliance.standards);
152
-
153
- if (!standards.includes('OSSA-0.2.5-RC') && !standards.includes('OSSA-0.2.5')) {
154
- errors.push(
155
- 'compliance.standards must include "OSSA-0.2.5-RC" or "OSSA-0.2.5" for v0.2.5-RC compliance'
156
- );
157
- }
158
- }
159
-
160
- return {
161
- valid: errors.length === 0,
162
- errors,
163
- warnings,
164
- };
165
- }
166
-
167
- /**
168
- * Validate a single ossa.yaml file
169
- */
170
- function validateFile(filePath: string): boolean {
171
- try {
172
- const content = readFileSync(filePath, 'utf-8');
173
- const config = parseYaml(content) as PowerSuiteOssaConfig;
174
-
175
- console.log(chalk.blue(`\nValidating: ${filePath}`));
176
- console.log(chalk.gray('─'.repeat(80)));
177
-
178
- const result = validatePowerSuiteConfig(config);
179
-
180
- if (result.valid) {
181
- console.log(chalk.green('✓ Valid OSSA 0.2.5-RC configuration'));
182
- } else {
183
- console.log(chalk.red('✗ Invalid OSSA 0.2.5-RC configuration'));
184
- result.errors.forEach((error) => {
185
- console.log(chalk.red(` ERROR: ${error}`));
186
- });
187
- }
188
-
189
- if (result.warnings.length > 0) {
190
- result.warnings.forEach((warning) => {
191
- console.log(chalk.yellow(` WARNING: ${warning}`));
192
- });
193
- }
194
-
195
- return result.valid;
196
- } catch (error) {
197
- console.error(chalk.red(`Failed to validate ${filePath}:`));
198
- console.error(error);
199
- return false;
200
- }
201
- }
202
-
203
- /**
204
- * Main validation function
205
- */
206
- function main() {
207
- const args = process.argv.slice(2);
208
-
209
- if (args.length === 0) {
210
- console.log(chalk.blue('OSSA 0.2.5-RC Power-Suite Validation Tool\n'));
211
- console.log('Usage:');
212
- console.log(' validate-ossa-0.2.5-RC.ts <file1.yaml> [file2.yaml] ...\n');
213
- console.log('Or validate all power-suite modules:');
214
- console.log(
215
- ' find ../common_npm -name "ossa.yaml" -o -path "*/config/ossa.yaml" | xargs validate-ossa-0.2.5-RC.ts'
216
- );
217
- process.exit(1);
218
- }
219
-
220
- let allValid = true;
221
- for (const filePath of args) {
222
- const valid = validateFile(resolve(filePath));
223
- if (!valid) {
224
- allValid = false;
225
- }
226
- }
227
-
228
- console.log(chalk.gray('\n' + '─'.repeat(80)));
229
- if (allValid) {
230
- console.log(chalk.green('\n✓ All files are OSSA 0.2.5-RC compliant'));
231
- process.exit(0);
232
- } else {
233
- console.log(chalk.red('\n✗ Some files failed validation'));
234
- process.exit(1);
235
- }
236
- }
237
-
238
- // Run if executed directly
239
- if (import.meta.url === `file://${process.argv[1]}`) {
240
- main();
241
- }
242
-
243
- export { validatePowerSuiteConfig, validateFile };
244
-