@bluefly/openstandardagents 0.2.5-RC → 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 (365) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
  5. package/.github/workflows/dependabot-comment.yml +34 -0
  6. package/.github/workflows/pr-comment.yml +33 -0
  7. package/.husky/pre-commit +5 -0
  8. package/.kiro/config.json +21 -0
  9. package/.kiro/settings/mcp.json +61 -0
  10. package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
  11. package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
  12. package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
  13. package/.kiro/specs/{website-design-audit → website-brand-identity}/design.md +381 -0
  14. package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
  15. package/.kiro/specs/website-brand-identity/tasks.md +981 -0
  16. package/.version.json +2 -2
  17. package/.wiki-config.json +24 -0
  18. package/CHANGELOG.md +34 -18
  19. package/CODEOWNERS +75 -0
  20. package/CONTRIBUTING.md +1 -1
  21. package/README.md +176 -239
  22. package/bin/ossa-dev +42 -0
  23. package/bin/ossa-export +32 -0
  24. package/bin/ossa-generate +60 -0
  25. package/bin/ossa-health +40 -0
  26. package/bin/ossa-init +26 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/repositories/schema.repository.d.ts +6 -1
  32. package/dist/repositories/schema.repository.d.ts.map +1 -1
  33. package/dist/repositories/schema.repository.js +63 -36
  34. package/dist/repositories/schema.repository.js.map +1 -1
  35. package/dist/services/github-sync/github-client.d.ts +14 -0
  36. package/dist/services/github-sync/github-client.d.ts.map +1 -0
  37. package/dist/services/github-sync/github-client.js +41 -0
  38. package/dist/services/github-sync/github-client.js.map +1 -0
  39. package/dist/services/github-sync/gitlab-client.d.ts +17 -0
  40. package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
  41. package/dist/services/github-sync/gitlab-client.js +42 -0
  42. package/dist/services/github-sync/gitlab-client.js.map +1 -0
  43. package/dist/services/github-sync/schemas.d.ts +46 -0
  44. package/dist/services/github-sync/schemas.d.ts.map +1 -0
  45. package/dist/services/github-sync/schemas.js +36 -0
  46. package/dist/services/github-sync/schemas.js.map +1 -0
  47. package/dist/services/github-sync/sync.service.d.ts +27 -0
  48. package/dist/services/github-sync/sync.service.d.ts.map +1 -0
  49. package/dist/services/github-sync/sync.service.js +99 -0
  50. package/dist/services/github-sync/sync.service.js.map +1 -0
  51. package/dist/services/migration.service.d.ts +4 -3
  52. package/dist/services/migration.service.d.ts.map +1 -1
  53. package/dist/services/migration.service.js +11 -10
  54. package/dist/services/migration.service.js.map +1 -1
  55. package/dist/services/release-automation/release.service.js +1 -1
  56. package/dist/services/release-automation/release.service.js.map +1 -1
  57. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  58. package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
  59. package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
  60. package/dist/services/runtime/claude/capability-mapper.js +245 -0
  61. package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
  62. package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
  63. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
  64. package/dist/services/runtime/claude/claude-adapter.js +287 -0
  65. package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
  66. package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
  67. package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
  68. package/dist/services/runtime/claude/manifest-parser.js +169 -0
  69. package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
  70. package/dist/services/runtime/claude/types.d.ts +115 -0
  71. package/dist/services/runtime/claude/types.d.ts.map +1 -0
  72. package/dist/services/runtime/claude/types.js +6 -0
  73. package/dist/services/runtime/claude/types.js.map +1 -0
  74. package/dist/services/validation.service.d.ts.map +1 -1
  75. package/dist/services/validation.service.js +12 -1
  76. package/dist/services/validation.service.js.map +1 -1
  77. package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
  78. package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
  79. package/dist/spec/v0.2.6/README.md +72 -0
  80. package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  81. package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  82. package/dist/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
  83. package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  84. package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  85. package/dist/spec/v0.2.6-dev/README.md +75 -0
  86. package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  87. package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  88. package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  89. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  90. package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
  91. package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  92. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  93. package/dist/spec/v0.2.8/README.md +72 -0
  94. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  95. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  96. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  97. package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
  98. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  99. package/dist/types/index.d.ts +3 -2
  100. package/dist/types/index.d.ts.map +1 -1
  101. package/dist/utils/index.d.ts +6 -0
  102. package/dist/utils/index.d.ts.map +1 -0
  103. package/dist/utils/index.js +6 -0
  104. package/dist/utils/index.js.map +1 -0
  105. package/dist/utils/version.d.ts +68 -0
  106. package/dist/utils/version.d.ts.map +1 -0
  107. package/dist/utils/version.js +156 -0
  108. package/dist/utils/version.js.map +1 -0
  109. package/docs/brand-guide/01-brand-overview.md +37 -0
  110. package/docs/brand-guide/02-logo-usage.md +43 -0
  111. package/docs/brand-guide/03-color-palette.md +70 -0
  112. package/docs/brand-guide/04-typography.md +82 -0
  113. package/docs/brand-guide/05-voice-and-tone.md +108 -0
  114. package/docs/brand-guide/06-visual-elements.md +137 -0
  115. package/docs/brand-guide/07-application-examples.md +153 -0
  116. package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
  117. package/docs/brand-guide/OssaLogo/brand.af +0 -0
  118. package/docs/brand-guide/README.md +107 -0
  119. package/docs/comparison.md +315 -0
  120. package/docs/operations/automation-roadmap.md +245 -0
  121. package/docs/operations/github-sync-strategy.md +357 -0
  122. package/eslint-report.json +1 -0
  123. package/examples/adk-integration/code-review-workflow.yml +1 -1
  124. package/examples/adk-integration/customer-support.yml +1 -1
  125. package/examples/adk-integration/data-pipeline.yml +1 -1
  126. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  127. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  128. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  129. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  130. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  131. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  132. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  133. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  134. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  135. package/examples/anthropic/claude-assistant.ossa.json +5 -4
  136. package/examples/autogen/multi-agent.ossa.json +6 -4
  137. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  138. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  139. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  140. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  141. package/examples/crewai/research-team.ossa.json +14 -5
  142. package/examples/cursor/code-review-agent.ossa.json +21 -6
  143. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  144. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  145. package/examples/extensions/drupal-v1.yml +1 -1
  146. package/examples/extensions/kagent-v1.yml +1 -1
  147. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  148. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  149. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  150. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  151. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  152. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  153. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  154. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  155. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  156. package/examples/langchain/chain-agent.ossa.json +21 -5
  157. package/examples/langflow/workflow-agent.ossa.json +2 -3
  158. package/examples/langgraph/state-machine-agent.ossa.json +2 -3
  159. package/examples/llamaindex/rag-agent.ossa.json +2 -3
  160. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  161. package/examples/multi-agent/README.md +74 -0
  162. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  163. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  164. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  165. package/examples/openai/basic-agent.ossa.yaml +1 -1
  166. package/examples/openai/multi-tool-agent.ossa.json +33 -10
  167. package/examples/openai/swarm-agent.ossa.json +18 -5
  168. package/examples/production/document-analyzer-openai.yml +1 -1
  169. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  170. package/examples/spec-examples/audit-agent.yml +1 -1
  171. package/examples/spec-examples/chat-agent.yml +1 -1
  172. package/examples/spec-examples/compliance-agent.yml +1 -1
  173. package/examples/spec-examples/monitoring-agent.yml +1 -1
  174. package/examples/spec-examples/workflow-agent.yml +1 -1
  175. package/examples/templates/ossa-compliance.yaml +1 -1
  176. package/examples/vercel/edge-agent.ossa.json +5 -4
  177. package/gl-code-quality-report.json +62 -0
  178. package/llms-ctx-full.txt +39 -0
  179. package/llms-ctx.txt +39 -0
  180. package/llms.txt +47 -0
  181. package/openapi/github-sync.yaml +115 -0
  182. package/package.json +26 -4
  183. package/scripts/README.md +103 -0
  184. package/scripts/auto-rebase-mrs.ts +106 -0
  185. package/scripts/batch-dependabot.sh +57 -0
  186. package/scripts/configure-gitlab-branch-protection.ts +95 -0
  187. package/scripts/create-issue-helper.ts +238 -0
  188. package/scripts/create-milestone-issue.ts +73 -0
  189. package/scripts/eslint-to-codequality.cjs +34 -0
  190. package/scripts/fix-schema-formats.js +82 -0
  191. package/scripts/generate-agents-catalog.ts +77 -0
  192. package/scripts/generate-api-docs.ts +218 -0
  193. package/scripts/generate-cli-docs.ts +410 -0
  194. package/scripts/generate-config-docs.ts +109 -0
  195. package/scripts/generate-errors-docs.ts +76 -0
  196. package/scripts/generate-examples-docs.ts +99 -0
  197. package/scripts/generate-llms-ctx.sh +17 -0
  198. package/scripts/generate-schema-docs.ts +317 -0
  199. package/scripts/generate-types-docs.ts +48 -0
  200. package/scripts/lowercase-docs.ts +43 -0
  201. package/scripts/manage-milestone-mrs.ts +279 -0
  202. package/scripts/rebase-all-mrs.sh +75 -0
  203. package/scripts/sync-github-pr.sh +48 -0
  204. package/scripts/sync-version.js +32 -0
  205. package/scripts/sync-wiki.sh +50 -0
  206. package/scripts/validate-all.js +127 -0
  207. package/scripts/validate-schema.ts +2 -1
  208. package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
  209. package/spec/v0.2.6/CHANGELOG.md +401 -0
  210. package/spec/v0.2.6/README.md +72 -0
  211. package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  212. package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  213. package/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
  214. package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  215. package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  216. package/spec/v0.2.6-dev/README.md +75 -0
  217. package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  218. package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  219. package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  220. package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  221. package/spec/v0.2.7/core/agentgraph.md +324 -0
  222. package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  223. package/spec/v0.2.8/CHANGELOG.md +401 -0
  224. package/spec/v0.2.8/README.md +72 -0
  225. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  226. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  227. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  228. package/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
  229. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  230. package/test-results/junit.xml +299 -0
  231. package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
  232. package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
  233. package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
  234. package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
  235. package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
  236. package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
  237. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  238. package/docs/issue-19-completion-summary.md +0 -648
  239. package/docs/issue-19-validation.md +0 -351
  240. package/scripts/lib/exec.ts +0 -37
  241. package/scripts/lib/file-ops.ts +0 -58
  242. package/scripts/lib/version.ts +0 -83
  243. package/website/.lighthouserc.ts +0 -24
  244. package/website/.prettierrc +0 -10
  245. package/website/Dockerfile +0 -30
  246. package/website/app/about/page.tsx +0 -295
  247. package/website/app/blog/[slug]/page.tsx +0 -208
  248. package/website/app/blog/page.tsx +0 -249
  249. package/website/app/design-guide/page.tsx +0 -511
  250. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  251. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  252. package/website/app/ecosystem/page.tsx +0 -375
  253. package/website/app/examples/page.tsx +0 -133
  254. package/website/app/globals.scss +0 -135
  255. package/website/app/layout.tsx +0 -106
  256. package/website/app/license/page.tsx +0 -183
  257. package/website/app/not-found.tsx +0 -18
  258. package/website/app/page.tsx +0 -474
  259. package/website/app/playground/page.tsx +0 -487
  260. package/website/app/robots.ts +0 -19
  261. package/website/app/rss.xml/route.ts +0 -74
  262. package/website/app/schema/page.tsx +0 -1001
  263. package/website/app/sitemap.ts +0 -56
  264. package/website/app/specification/page.tsx +0 -287
  265. package/website/components/InstallCommand.tsx +0 -96
  266. package/website/components/Logo.tsx +0 -97
  267. package/website/components/StructuredData.tsx +0 -65
  268. package/website/components/docs/DocsSearch.tsx +0 -104
  269. package/website/components/docs/DocsSidebar.tsx +0 -155
  270. package/website/components/docs/MarkdownContent.tsx +0 -401
  271. package/website/components/docs/VersionSelector.tsx +0 -105
  272. package/website/components/examples/ExamplesViewer.tsx +0 -293
  273. package/website/components/layout/Footer.tsx +0 -116
  274. package/website/components/layout/Header.tsx +0 -168
  275. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  276. package/website/components/schema/SchemaExplorer.tsx +0 -213
  277. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  278. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  279. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  280. package/website/content/blog/introducing-ossa-framework.md +0 -328
  281. package/website/content/blog/ossa-production-results.md +0 -279
  282. package/website/content/blog/welcome-to-ossa.md +0 -43
  283. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  284. package/website/content/docs/00-HOME.md +0 -153
  285. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +0 -107
  286. package/website/content/docs/Examples.md +0 -71
  287. package/website/content/docs/OpenAPI-Extensions.md +0 -934
  288. package/website/content/docs/adapters/openai-adapter.md +0 -693
  289. package/website/content/docs/architecture/execution-flow.md +0 -335
  290. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  291. package/website/content/docs/architecture/overview.md +0 -121
  292. package/website/content/docs/architecture/stack-integration.md +0 -461
  293. package/website/content/docs/changelog.md +0 -246
  294. package/website/content/docs/contributing.md +0 -599
  295. package/website/content/docs/core-concepts/Project-Structure.md +0 -348
  296. package/website/content/docs/ecosystem/framework-support.md +0 -819
  297. package/website/content/docs/ecosystem/overview.md +0 -366
  298. package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +0 -107
  299. package/website/content/docs/examples/Migration-Guides.md +0 -214
  300. package/website/content/docs/for-audiences/Architects.md +0 -224
  301. package/website/content/docs/for-audiences/Developers.md +0 -220
  302. package/website/content/docs/for-audiences/Enterprises.md +0 -256
  303. package/website/content/docs/for-audiences/Students-Researchers.md +0 -122
  304. package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
  305. package/website/content/docs/getting-started/First-Agent.md +0 -196
  306. package/website/content/docs/getting-started/Hello-World.md +0 -184
  307. package/website/content/docs/getting-started/Installation.md +0 -155
  308. package/website/content/docs/getting-started/index.md +0 -92
  309. package/website/content/docs/getting-started/running-agents.md +0 -309
  310. package/website/content/docs/getting-started.md +0 -91
  311. package/website/content/docs/integrations/aiflow.md +0 -104
  312. package/website/content/docs/integrations/drupal.md +0 -105
  313. package/website/content/docs/migration-guides/00-INDEX.md +0 -76
  314. package/website/content/docs/migration-guides/README.md +0 -133
  315. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  316. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  317. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  318. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  319. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  320. package/website/content/docs/migration-guides/index.md +0 -133
  321. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  322. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  323. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  324. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  325. package/website/content/docs/openapi-extensions/examples.md +0 -550
  326. package/website/content/docs/openapi-extensions/index.md +0 -551
  327. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  328. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  329. package/website/content/docs/ossa-compliant-badge.md +0 -251
  330. package/website/content/docs/pre-release/index.md +0 -175
  331. package/website/content/docs/quick-reference.md +0 -17
  332. package/website/content/docs/readme.md +0 -35
  333. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  334. package/website/content/docs/schema-reference/autonomy.md +0 -568
  335. package/website/content/docs/schema-reference/constraints.md +0 -543
  336. package/website/content/docs/schema-reference/index.md +0 -176
  337. package/website/content/docs/schema-reference/llm-config.md +0 -445
  338. package/website/content/docs/schema-reference/observability.md +0 -654
  339. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  340. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  341. package/website/content/docs/schema-reference/tools.md +0 -628
  342. package/website/content/docs/templates/blog-post.md +0 -43
  343. package/website/content/docs/use-cases/00-index.md +0 -395
  344. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  345. package/website/content/docs/use-cases/customer-support.md +0 -1234
  346. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  347. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  348. package/website/content/docs/versioning.md +0 -288
  349. package/website/lib/version.ts +0 -35
  350. package/website/lib/versions.json +0 -78
  351. package/website/next.config.ts +0 -18
  352. package/website/nginx.conf +0 -32
  353. package/website/package-lock.json +0 -9679
  354. package/website/package.json +0 -59
  355. package/website/postcss.config.mjs +0 -9
  356. package/website/scripts/fetch-versions.js +0 -166
  357. package/website/scripts/generate-examples-index.js +0 -163
  358. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  359. package/website/scripts/sync-version.js +0 -72
  360. package/website/scripts/sync-wiki.ts +0 -322
  361. package/website/scripts/upload-wiki.ts +0 -199
  362. package/website/styles/_variables.scss +0 -36
  363. package/website/tailwind.config.ts +0 -136
  364. /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
  365. /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
@@ -0,0 +1 @@
1
+ [{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/export.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/generate.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/github-sync.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/gitlab-agent.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/import.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/init.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/migrate.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/release.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/run.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/schema.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/setup.command.ts","messages":[{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'options' is defined but never used. Allowed unused args must match /^_/u.","line":214,"column":15,"nodeType":null,"messageId":"unusedVar","endLine":214,"endColumn":22}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * OSSA Setup Command\n * Professional setup commands for branch protection and release automation\n * Follows DRY, OpenAPI, Zod, CRUD principles\n */\n\nimport chalk from 'chalk';\nimport { Command } from 'commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { z } from 'zod';\n\n/**\n * Zod Schema for Setup Options\n */\nconst SetupOptionsSchema = z.object({\n force: z.boolean().optional().default(false),\n verbose: z.boolean().optional().default(false),\n});\n\ntype SetupOptions = z.infer<typeof SetupOptionsSchema>;\n\n/**\n * Base Setup Service (DRY)\n */\nclass SetupService {\n protected projectRoot: string;\n\n constructor() {\n this.projectRoot = this.findProjectRoot();\n }\n\n protected findProjectRoot(): string {\n let current = process.cwd();\n for (let i = 0; i < 10; i++) {\n const packageJson = path.join(current, 'package.json');\n if (fs.existsSync(packageJson)) {\n return current;\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return process.cwd();\n }\n\n protected log(message: string, type: 'info' | 'success' | 'warning' | 'error' = 'info'): void {\n const colors = {\n info: chalk.blue,\n success: chalk.green,\n warning: chalk.yellow,\n error: chalk.red,\n };\n console.log(colors[type](message));\n }\n\n protected exec(command: string, options?: { cwd?: string; silent?: boolean }): string {\n try {\n const result = execSync(command, {\n cwd: options?.cwd || this.projectRoot,\n encoding: 'utf-8',\n stdio: options?.silent ? 'pipe' : 'inherit',\n });\n return result.toString();\n } catch {\n throw new Error(`Command failed: ${command}`);\n }\n }\n\n protected fileExists(filePath: string): boolean {\n return fs.existsSync(path.resolve(this.projectRoot, filePath));\n }\n\n protected ensureDirectory(dirPath: string): void {\n const fullPath = path.resolve(this.projectRoot, dirPath);\n if (!fs.existsSync(fullPath)) {\n fs.mkdirSync(fullPath, { recursive: true });\n }\n }\n}\n\n/**\n * Branch Protection Setup Service\n */\nclass BranchProtectionService extends SetupService {\n private readonly protectedBranches = ['main', 'development'];\n private readonly hooksDir = '.git/hooks';\n private readonly hookFile = 'post-checkout';\n\n async setup(options: SetupOptions): Promise<void> {\n this.log('🔒 Setting up branch protection for main and development...', 'info');\n this.log('');\n\n // Ensure hooks directory exists\n this.ensureDirectory(this.hooksDir);\n\n // Create post-checkout hook\n await this.createPostCheckoutHook(options.force);\n\n // Configure git hooks path\n this.exec('git config core.hooksPath .git/hooks', { silent: true });\n\n this.log('');\n this.log('✅ Branch protection installed!', 'success');\n this.log('');\n this.log(`Protected branches: ${this.protectedBranches.join(', ')}`);\n this.log('');\n this.log(\n 'The hook will automatically switch you back if you try to checkout these branches.'\n );\n this.log('');\n }\n\n private async createPostCheckoutHook(force: boolean): Promise<void> {\n const hookPath = path.resolve(this.projectRoot, this.hooksDir, this.hookFile);\n\n if (fs.existsSync(hookPath) && !force) {\n this.log(`✅ Post-checkout hook already exists`, 'info');\n // Ensure it's executable\n fs.chmodSync(hookPath, 0o755);\n return;\n }\n\n const hookContent = this.generateHookContent();\n fs.writeFileSync(hookPath, hookContent, { mode: 0o755 });\n\n this.log(`✅ Created post-checkout hook`, 'success');\n }\n\n private generateHookContent(): string {\n return `#!/bin/bash\n#\n# Git Post-Checkout Hook\n# Prevents checking out main and development branches locally\n# Enforces feature branch workflow\n#\n\n# Post-checkout hook receives:\n# $1 = previous HEAD\n# $2 = new HEAD\n# $3 = flag (0=file checkout, 1=branch checkout)\n\n# Only block branch checkouts, not file checkouts\nif [ \"$3\" != \"1\" ]; then\n exit 0\nfi\n\n# Get current branch name\nCURRENT_BRANCH=$(git branch --show-current 2>/dev/null)\n\n# Protected branches that cannot be checked out locally\nPROTECTED_BRANCHES=\"main development\"\n\n# Check if we're on a protected branch\nfor PROTECTED in $PROTECTED_BRANCHES; do\n if [ \"$CURRENT_BRANCH\" = \"$PROTECTED\" ]; then\n echo \"\"\n echo \"❌ ERROR: Cannot work on '$PROTECTED' branch locally\"\n echo \"\"\n echo \"This project enforces a feature branch workflow:\"\n echo \" • Work is done on feature branches\"\n echo \" • Feature branches → merge to development (via MR)\"\n echo \" • Development → merge to main (via MR)\"\n echo \"\"\n echo \"Switching you back to your previous branch...\"\n echo \"\"\n \n # Switch back to previous branch or a safe default\n PREVIOUS_BRANCH=$(git reflog | grep \"checkout:\" | head -2 | tail -1 | awk '{print $NF}' | sed 's|.*:||')\n \n if [ -n \"$PREVIOUS_BRANCH\" ] && [ \"$PREVIOUS_BRANCH\" != \"$PROTECTED\" ]; then\n git checkout \"$PREVIOUS_BRANCH\" 2>/dev/null\n echo \"✅ Switched back to: $PREVIOUS_BRANCH\"\n else\n # Try to find a feature branch\n FEATURE_BRANCH=$(git branch -a | grep -E \"feat/|feature/\" | head -1 | sed 's|.*/||' | xargs)\n if [ -n \"$FEATURE_BRANCH\" ]; then\n git checkout \"$FEATURE_BRANCH\" 2>/dev/null\n echo \"✅ Switched to feature branch: $FEATURE_BRANCH\"\n else\n echo \"⚠️ Could not auto-switch. Please manually checkout a feature branch:\"\n echo \" git checkout -b feat/your-feature development\"\n fi\n fi\n \n echo \"\"\n echo \"To work on this project:\"\n echo \" 1. Create a feature branch: git checkout -b feat/your-feature development\"\n echo \" 2. Make your changes\"\n echo \" 3. Push and create a merge request\"\n echo \"\"\n echo \"If you need to view $PROTECTED:\"\n echo \" • Use: git worktree add ../project-$PROTECTED $PROTECTED\"\n echo \" • Or view on GitLab: https://gitlab.com/blueflyio/openstandardagents/-/tree/$PROTECTED\"\n echo \"\"\n exit 1\n fi\ndone\n\n# Allow checkout\nexit 0\n`;\n }\n}\n\n/**\n * Release Automation Setup Service\n */\nclass ReleaseAutomationService extends SetupService {\n private readonly requiredDependencies = ['@gitbeaker/rest', '@octokit/rest'];\n private readonly requiredEnvVars = ['GITLAB_TOKEN', 'NPM_TOKEN', 'GITHUB_TOKEN'];\n\n async setup(options: SetupOptions): Promise<void> {\n this.log('🚀 Release Automation Setup', 'info');\n this.log('==============================', 'info');\n this.log('');\n\n // Check branch\n await this.checkBranch();\n\n // Check dependencies\n await this.checkDependencies();\n\n // Check CI/CD variables\n this.checkCICDVariables();\n\n // Check webhooks\n this.checkWebhooks();\n\n // Run tests\n await this.runTests();\n\n this.log('');\n this.log('==============================', 'info');\n this.log('✅ Setup checks complete!', 'success');\n this.log('');\n this.log('Next steps:');\n this.log(' 1. Configure webhooks in GitLab UI');\n this.log(' 2. Set CI/CD variables in GitLab UI');\n this.log(' 3. Create test milestone: v0.2.8-test');\n this.log(' 4. Verify automation works');\n this.log('');\n }\n\n private async checkBranch(): Promise<void> {\n try {\n const branch = this.exec('git branch --show-current', { silent: true }).trim();\n if (branch !== 'development') {\n this.log(\n `⚠️ Warning: Not on development branch (current: ${branch})`,\n 'warning'\n );\n this.log(' Switch to development first: git checkout development', 'warning');\n throw new Error('Must be on development branch');\n }\n this.log('✅ On development branch', 'success');\n this.log('');\n } catch (error) {\n if (error instanceof Error && error.message === 'Must be on development branch') {\n throw error;\n }\n throw new Error('Failed to check git branch');\n }\n }\n\n private async checkDependencies(): Promise<void> {\n this.log('📦 Checking dependencies...', 'info');\n\n for (const dep of this.requiredDependencies) {\n try {\n this.exec(`npm list ${dep}`, { silent: true });\n this.log(` ✅ ${dep}`, 'success');\n } catch {\n this.log(` ❌ ${dep} not found`, 'error');\n this.log(' Run: npm install', 'error');\n throw new Error(`Missing dependency: ${dep}`);\n }\n }\n\n this.log('✅ Dependencies installed', 'success');\n this.log('');\n }\n\n private checkCICDVariables(): void {\n this.log('🔐 Checking CI/CD variables...', 'info');\n this.log('');\n this.log('Required variables (set in GitLab UI):');\n for (const varName of this.requiredEnvVars) {\n const exists = !!process.env[varName];\n const status = exists ? '✅' : '❌';\n this.log(` ${status} ${varName}${exists ? ' (set)' : ' (missing)'}`);\n }\n this.log('');\n this.log('To set these:');\n this.log(' 1. Go to: Settings → CI/CD → Variables');\n this.log(' 2. Add each variable');\n this.log(' 3. Mark as \\'Protected\\' and \\'Masked\\'');\n this.log('');\n }\n\n private checkWebhooks(): void {\n this.log('🔗 Webhooks to configure:', 'info');\n this.log('');\n this.log('Webhook 1: Milestone Events');\n this.log(' URL: https://your-webhook-endpoint.com/milestone');\n this.log(' Trigger: Milestone events');\n this.log('');\n this.log('Webhook 2: Push Events');\n this.log(' URL: https://your-webhook-endpoint.com/push');\n this.log(' Trigger: Push events (development branch)');\n this.log('');\n this.log('To configure:');\n this.log(' Go to: Settings → Webhooks');\n this.log('');\n }\n\n private async runTests(): Promise<void> {\n this.log('🧪 Running tests...', 'info');\n try {\n this.exec('npm test', { silent: false });\n this.log('✅ All tests passing', 'success');\n } catch {\n this.log('❌ Tests failed', 'error');\n throw new Error('Tests failed');\n }\n }\n}\n\n/**\n * Main Setup Command\n */\nexport const setupCommand = new Command('setup')\n .description('Setup OSSA project tools and automation')\n .option('-f, --force', 'Force overwrite existing configuration')\n .option('-v, --verbose', 'Verbose output');\n\n/**\n * Branch Protection Subcommand\n */\nconst branchProtectionSubcommand = new Command('branch-protection')\n .alias('bp')\n .description('Setup git hooks to prevent checking out main/development locally')\n .option('-f, --force', 'Force overwrite existing hooks')\n .option('-v, --verbose', 'Verbose output')\n .action(async (options: { force?: boolean; verbose?: boolean }) => {\n try {\n const validated = SetupOptionsSchema.parse(options);\n const service = new BranchProtectionService();\n await service.setup(validated);\n } catch (error) {\n if (error instanceof z.ZodError) {\n console.error(chalk.red('Validation error:'), error.issues);\n process.exit(1);\n }\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n/**\n * Release Automation Subcommand\n */\nconst releaseAutomationSubcommand = new Command('release-automation')\n .alias('ra')\n .description('Setup release automation (dependencies, CI/CD variables, webhooks)')\n .option('-f, --force', 'Force setup even if checks fail')\n .option('-v, --verbose', 'Verbose output')\n .action(async (options: { force?: boolean; verbose?: boolean }) => {\n try {\n const validated = SetupOptionsSchema.parse(options);\n const service = new ReleaseAutomationService();\n await service.setup(validated);\n } catch (error) {\n if (error instanceof z.ZodError) {\n console.error(chalk.red('Validation error:'), error.issues);\n process.exit(1);\n }\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// Register subcommands\nsetupCommand.addCommand(branchProtectionSubcommand);\nsetupCommand.addCommand(releaseAutomationSubcommand);\n\n","usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/sync.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/commands/validate.command.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/cli/index.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/di-container.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/index.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/repositories/manifest.repository.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/repositories/schema.repository.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/generation.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/github-sync/github-client.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/github-sync/gitlab-client.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/github-sync/schemas.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/github-sync/sync.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/gitlab-agent.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/migration.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/base-crud.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/index.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/merge-request.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/milestone.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/release.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/schemas/release.schema.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/tag.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/release-automation/webhook.service.ts","messages":[{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'project' is assigned a value but never used.","line":50,"column":15,"nodeType":null,"messageId":"unusedVar","endLine":50,"endColumn":22},{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'project' is assigned a value but never used.","line":117,"column":13,"nodeType":null,"messageId":"unusedVar","endLine":117,"endColumn":20},{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'project' is assigned a value but never used.","line":145,"column":13,"nodeType":null,"messageId":"unusedVar","endLine":145,"endColumn":20}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Webhook Service\n * Handles GitLab webhooks with Zod validation\n */\n\nimport {\n MilestoneWebhookPayloadSchema,\n PushWebhookPayloadSchema,\n WebhookResponseSchema,\n type MilestoneWebhookPayload,\n type PushWebhookPayload,\n type WebhookResponse,\n} from './schemas/release.schema.js';\nimport { ReleaseService } from './release.service.js';\nimport { MilestoneService } from './milestone.service.js';\nimport { TagService } from './tag.service.js';\nimport { MergeRequestService } from './merge-request.service.js';\n\n/**\n * Webhook Service\n * DRY: Centralized webhook handling\n */\nexport class WebhookService {\n private releaseService: ReleaseService;\n private milestoneService: MilestoneService;\n private tagService: TagService;\n private mergeRequestService: MergeRequestService;\n\n constructor(\n gitlabToken: string,\n projectId: string | number = process.env.CI_PROJECT_ID || ''\n ) {\n this.releaseService = new ReleaseService(gitlabToken, projectId);\n this.milestoneService = new MilestoneService(gitlabToken, projectId);\n this.tagService = new TagService(gitlabToken, projectId);\n this.mergeRequestService = new MergeRequestService(gitlabToken, projectId);\n }\n\n /**\n * Handle milestone webhook\n */\n async handleMilestoneWebhook(\n payload: unknown\n ): Promise<WebhookResponse> {\n try {\n // Validate payload with Zod\n const validated = MilestoneWebhookPayloadSchema.parse(payload);\n const actions: WebhookResponse['actions'] = [];\n\n const { project, object_attributes: milestone } = validated;\n\n // Determine if this is a create or close event\n const isNewMilestone =\n milestone.state === 'active' &&\n new Date(milestone.created_at).getTime() ===\n new Date(milestone.updated_at).getTime();\n\n if (isNewMilestone) {\n // Milestone created - create dev tag and branch\n const action = await this.handleMilestoneCreate(validated);\n if (action) actions.push(action);\n } else if (milestone.state === 'closed') {\n // Milestone closed - create RC\n const action = await this.handleMilestoneClose(validated);\n if (action) actions.push(action);\n }\n\n return WebhookResponseSchema.parse({\n success: true,\n message: `Milestone ${milestone.title} processed`,\n actions,\n });\n } catch (error) {\n return WebhookResponseSchema.parse({\n success: false,\n message: `Webhook processing failed: ${error}`,\n actions: [],\n });\n }\n }\n\n /**\n * Handle push webhook\n */\n async handlePushWebhook(payload: unknown): Promise<WebhookResponse> {\n try {\n // Validate payload with Zod\n const validated = PushWebhookPayloadSchema.parse(payload);\n const actions: WebhookResponse['actions'] = [];\n\n // Only process development branch pushes\n if (validated.ref === 'refs/heads/development') {\n const action = await this.handleDevelopmentPush(validated);\n if (action) actions.push(action);\n }\n\n return WebhookResponseSchema.parse({\n success: true,\n message: 'Push webhook processed',\n actions,\n });\n } catch (error) {\n return WebhookResponseSchema.parse({\n success: false,\n message: `Webhook processing failed: ${error}`,\n actions: [],\n });\n }\n }\n\n /**\n * Handle milestone creation\n */\n private async handleMilestoneCreate(\n payload: MilestoneWebhookPayload\n ): Promise<{ type: string; status: string; details?: Record<string, unknown> } | null> {\n const { project, object_attributes: milestone } = payload;\n const version = milestone.title.replace(/^v/, '');\n\n // Create initial dev tag\n const devTag = `v${version}-dev.0`;\n await this.tagService.create({\n name: devTag,\n ref: 'development',\n message: `Initial dev tag for ${milestone.title}`,\n });\n\n return {\n type: 'milestone_created',\n status: 'success',\n details: {\n milestoneId: milestone.id,\n tag: devTag,\n version,\n },\n };\n }\n\n /**\n * Handle milestone closure\n */\n private async handleMilestoneClose(\n payload: MilestoneWebhookPayload\n ): Promise<{ type: string; status: string; details?: Record<string, unknown> } | null> {\n const { project, object_attributes: milestone } = payload;\n const version = milestone.title.replace(/^v/, '');\n\n // Get milestone statistics\n const milestoneData = await this.milestoneService.read(milestone.id);\n if (!milestoneData) {\n throw new Error(`Milestone ${milestone.id} not found`);\n }\n\n // Check all issues are closed\n if (milestoneData.statistics.openIssues > 0) {\n throw new Error(\n `Cannot create RC: ${milestoneData.statistics.openIssues} issues still open`\n );\n }\n\n // Create RC tag\n const rcTag = `v${version}-rc.1`;\n await this.tagService.create({\n name: rcTag,\n ref: 'development',\n message: `Release candidate for ${milestone.title}`,\n });\n\n // Create MR: development → main\n const mr = await this.mergeRequestService.create({\n sourceBranch: 'development',\n targetBranch: 'main',\n title: `Release ${milestone.title}`,\n description: `Release candidate ${rcTag} for milestone ${milestone.title}`,\n labels: ['release', 'automation'],\n milestoneId: milestone.id,\n });\n\n return {\n type: 'milestone_closed',\n status: 'success',\n details: {\n milestoneId: milestone.id,\n rcTag,\n mergeRequestId: mr.id,\n },\n };\n }\n\n /**\n * Handle development branch push\n */\n private async handleDevelopmentPush(\n payload: PushWebhookPayload\n ): Promise<{ type: string; status: string; details?: Record<string, unknown> } | null> {\n // Auto-increment dev tag\n // This would be implemented based on current version detection\n // For now, return success\n\n return {\n type: 'dev_tag_incremented',\n status: 'success',\n details: {\n branch: payload.ref,\n commits: payload.commits.length,\n },\n };\n }\n}\n\n","usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/runtime/claude/capability-mapper.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/runtime/claude/claude-adapter.ts","messages":[{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'options' is defined but never used. Allowed unused args must match /^_/u.","line":268,"column":5,"nodeType":null,"messageId":"unusedVar","endLine":268,"endColumn":12}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Claude Runtime Adapter\n * Runs OSSA agents using Anthropic's Claude API\n */\n\nimport Anthropic from '@anthropic-ai/sdk';\nimport { ManifestParser } from './manifest-parser.js';\nimport { CapabilityMapper } from './capability-mapper.js';\nimport type {\n OssaManifestWithAnthropic,\n ClaudeMessage,\n ClaudeRunOptions,\n ClaudeAdapterConfig,\n AgentInfo,\n ToolHandler,\n ClaudeTool,\n} from './types.js';\n\n/**\n * Claude adapter for executing OSSA agents\n */\nexport class ClaudeAdapter {\n private client: Anthropic;\n private parser: ManifestParser;\n private mapper: CapabilityMapper;\n private messages: ClaudeMessage[] = [];\n private conversationHistory: Anthropic.MessageParam[] = [];\n\n constructor(config: ClaudeAdapterConfig) {\n // Initialize Anthropic client\n this.client = new Anthropic({\n apiKey: config.apiKey || process.env.ANTHROPIC_API_KEY,\n });\n\n // Initialize parser and mapper\n this.parser = new ManifestParser(config.manifest);\n this.mapper = new CapabilityMapper();\n\n // Validate manifest\n const validation = this.parser.validate();\n if (!validation.valid) {\n throw new Error(\n `Invalid OSSA manifest: ${validation.errors.join(', ')}`\n );\n }\n\n // Check if Anthropic integration is enabled\n if (!this.parser.isAnthropicEnabled()) {\n console.warn(\n 'Warning: Anthropic extension is disabled in manifest'\n );\n }\n\n // Initialize tools\n this.initializeTools();\n }\n\n /**\n * Initialize tools from manifest\n */\n private initializeTools(): void {\n // Map Claude extension tools first (highest priority)\n const anthropicExt = this.parser.getAnthropicExtension();\n if (anthropicExt?.tools) {\n this.mapper.mapClaudeTools(anthropicExt.tools);\n }\n\n // Map OSSA spec tools\n const specTools = this.parser.getSpecTools();\n this.mapper.mapOssaTools(specTools);\n\n // Map MCP capabilities if any\n for (const tool of specTools) {\n if (tool.type === 'mcp' && tool.capabilities) {\n this.mapper.mapMcpCapabilities(tool.capabilities);\n } else if (tool.type === 'http') {\n this.mapper.mapHttpTool(tool);\n }\n }\n }\n\n /**\n * Register a tool handler\n */\n registerToolHandler(name: string, handler: ToolHandler): boolean {\n return this.mapper.registerToolHandler(name, handler);\n }\n\n /**\n * Execute a tool call\n */\n private async executeTool(\n name: string,\n input: Record<string, unknown>\n ): Promise<string> {\n const tool = this.mapper.getTool(name);\n if (!tool) {\n return JSON.stringify({\n error: `Tool '${name}' not found`,\n });\n }\n\n if (tool.handler) {\n try {\n return await tool.handler(input);\n } catch (error) {\n return JSON.stringify({\n error: `Error executing ${name}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n\n // Default: return placeholder response\n return JSON.stringify({\n message: `Tool '${name}' executed`,\n input,\n note: 'No handler registered for this tool',\n });\n }\n\n /**\n * Initialize the conversation\n */\n initialize(): void {\n this.messages = [];\n this.conversationHistory = [];\n }\n\n /**\n * Send a message and get a response\n */\n async chat(\n userMessage: string,\n options?: ClaudeRunOptions\n ): Promise<string> {\n // Add user message to history\n this.conversationHistory.push({\n role: 'user',\n content: userMessage,\n });\n\n const tools = this.mapper.getClaudeTools();\n let turnCount = 0;\n const maxTurns = options?.maxTurns || 10;\n\n while (turnCount < maxTurns) {\n turnCount++;\n\n if (options?.verbose) {\n console.log(`\\n[Turn ${turnCount}/${maxTurns}]`);\n }\n\n // Call Claude API\n const response = await this.client.messages.create({\n model: this.parser.getModel(),\n max_tokens: this.parser.getMaxTokens(),\n temperature: this.parser.getTemperature(),\n system: this.parser.getSystemPrompt(),\n messages: this.conversationHistory,\n tools: tools.length > 0 ? tools : undefined,\n stop_sequences: this.parser.getStopSequences(),\n });\n\n if (options?.verbose) {\n console.log(\n ` Model: ${response.model}, Stop: ${response.stop_reason}`\n );\n console.log(\n ` Tokens: ${response.usage.input_tokens} in, ${response.usage.output_tokens} out`\n );\n }\n\n // Add assistant response to history\n this.conversationHistory.push({\n role: 'assistant',\n content: response.content,\n });\n\n // Check if we need to execute tools\n const toolUses = response.content.filter(\n (block) => block.type === 'tool_use'\n );\n\n if (toolUses.length > 0) {\n if (options?.verbose) {\n console.log(` [Executing ${toolUses.length} tool(s)...]`);\n }\n\n // Execute all tool calls\n const toolResults: Array<{\n type: 'tool_result';\n tool_use_id: string;\n content: string;\n }> = [];\n\n for (const toolUse of toolUses) {\n if (toolUse.type !== 'tool_use') continue;\n\n const { id, name, input } = toolUse;\n\n if (options?.verbose) {\n console.log(\n ` → ${name}(${JSON.stringify(input).substring(0, 100)}...)`\n );\n }\n\n const result = await this.executeTool(\n name,\n input as Record<string, unknown>\n );\n\n if (options?.verbose) {\n console.log(\n ` ← ${result.substring(0, 100)}${result.length > 100 ? '...' : ''}`\n );\n }\n\n toolResults.push({\n type: 'tool_result',\n tool_use_id: id,\n content: result,\n });\n }\n\n // Add tool results to conversation\n this.conversationHistory.push({\n role: 'user',\n content: toolResults,\n });\n\n // Continue the loop to get final response\n continue;\n }\n\n // Check if we have a text response\n const textBlocks = response.content.filter(\n (block) => block.type === 'text'\n );\n\n if (textBlocks.length > 0) {\n return textBlocks\n .map((block) => (block.type === 'text' ? block.text : ''))\n .join('\\n');\n }\n\n // No text and no tool calls - unexpected\n if (response.stop_reason === 'end_turn') {\n return '';\n }\n\n // Max tokens or stop sequence reached\n if (\n response.stop_reason === 'max_tokens' ||\n response.stop_reason === 'stop_sequence'\n ) {\n return '[Response truncated due to length limit]';\n }\n }\n\n return '[Max turns reached without completion]';\n }\n\n /**\n * Stream a response (for future implementation)\n */\n async chatStream(\n userMessage: string,\n options?: ClaudeRunOptions\n ): Promise<AsyncIterable<string>> {\n // Add user message to history\n this.conversationHistory.push({\n role: 'user',\n content: userMessage,\n });\n\n const tools = this.mapper.getClaudeTools();\n\n const stream = await this.client.messages.stream({\n model: this.parser.getModel(),\n max_tokens: this.parser.getMaxTokens(),\n temperature: this.parser.getTemperature(),\n system: this.parser.getSystemPrompt(),\n messages: this.conversationHistory,\n tools: tools.length > 0 ? tools : undefined,\n });\n\n // Return async generator\n return (async function* () {\n for await (const chunk of stream) {\n if (\n chunk.type === 'content_block_delta' &&\n chunk.delta.type === 'text_delta'\n ) {\n yield chunk.delta.text;\n }\n }\n })();\n }\n\n /**\n * Get agent information\n */\n getAgentInfo(): AgentInfo {\n const metadata = this.parser.getMetadata();\n const tools = Array.from(this.mapper.getTools().keys());\n\n return {\n name: metadata.name,\n model: this.parser.getModel(),\n tools,\n provider: 'anthropic',\n };\n }\n\n /**\n * Get conversation history\n */\n getConversationHistory(): Anthropic.MessageParam[] {\n return this.conversationHistory;\n }\n\n /**\n * Clear conversation history\n */\n clearHistory(): void {\n this.conversationHistory = [];\n this.messages = [];\n }\n\n /**\n * Get available tools\n */\n getTools(): ClaudeTool[] {\n return this.mapper.getClaudeTools();\n }\n\n /**\n * Get the Anthropic client (for advanced usage)\n */\n getClient(): Anthropic {\n return this.client;\n }\n\n /**\n * Get the manifest parser\n */\n getParser(): ManifestParser {\n return this.parser;\n }\n\n /**\n * Get the capability mapper\n */\n getMapper(): CapabilityMapper {\n return this.mapper;\n }\n\n /**\n * Create a Claude adapter from a manifest file\n */\n static async fromFile(\n manifestPath: string,\n apiKey?: string\n ): Promise<ClaudeAdapter> {\n const fs = await import('fs/promises');\n const manifestContent = await fs.readFile(manifestPath, 'utf-8');\n const manifest = JSON.parse(\n manifestContent\n ) as OssaManifestWithAnthropic;\n\n return new ClaudeAdapter({\n manifest,\n apiKey,\n });\n }\n\n /**\n * Create a Claude adapter from a manifest object\n */\n static fromManifest(\n manifest: OssaManifestWithAnthropic,\n apiKey?: string\n ): ClaudeAdapter {\n return new ClaudeAdapter({\n manifest,\n apiKey,\n });\n }\n}\n","usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/runtime/claude/manifest-parser.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/runtime/claude/types.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/runtime/openai.adapter.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validation.service.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/anthropic.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/autogen.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/crewai.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/cursor.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/index.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/langchain.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/langflow.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/langgraph.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/llamaindex.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/openai.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/services/validators/vercel-ai.validator.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/types/index.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/types/openapi-extensions.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/utils/index.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/Users/flux423/Sites/LLM/openstandardagents/src/utils/version.ts","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]}]
@@ -1,7 +1,7 @@
1
1
  # Example: ADK Code Review Workflow with OSSA Agents
2
2
  # This demonstrates how OSSA agents work with ADK orchestration patterns
3
3
 
4
- apiVersion: '@ossa/v0.1.9'
4
+ apiVersion: ossa/v0.2.8
5
5
  kind: Workflow
6
6
  metadata:
7
7
  name: code-review-workflow
@@ -1,7 +1,7 @@
1
1
  # Example: ADK Customer Support System with OSSA Agents
2
2
  # Demonstrates Coordinator and Dispatcher patterns
3
3
 
4
- apiVersion: '@ossa/v0.1.9'
4
+ apiVersion: ossa/v0.2.8
5
5
  kind: Workflow
6
6
  metadata:
7
7
  name: customer-support-system
@@ -1,7 +1,7 @@
1
1
  # Example: ADK Data Processing Pipeline with OSSA Agents
2
2
  # Demonstrates LoopAgent and ConditionalAgent patterns
3
3
 
4
- apiVersion: '@ossa/v0.1.9'
4
+ apiVersion: ossa/v0.2.8
5
5
  kind: Workflow
6
6
  metadata:
7
7
  name: data-processing-pipeline
@@ -1,7 +1,7 @@
1
1
  # Hybrid Model Strategy: Fast Local Planning + Premium Development
2
2
  # Demonstrates using fast Ollama models for planning agents and Claude for development
3
3
 
4
- apiVersion: ossa.io/v0.1.9
4
+ apiVersion: ossa/v0.2.8
5
5
  kind: Workflow
6
6
  metadata:
7
7
  name: hybrid-development-workflow
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: code-quality-critic
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: policy-compliance-governor
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: multi-system-integrator
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: decision-arbitration-judge
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: system-performance-monitor
@@ -20,7 +20,7 @@
20
20
  # ============================================================================
21
21
 
22
22
  # OSSA manifest version - defines the schema and features available
23
- apiVersion: ossa.io/v0.1.9
23
+ apiVersion: ossa/v0.2.8
24
24
 
25
25
  # Kind declares this as an Agent manifest (vs. Bridge, Tool, etc.)
26
26
  kind: Agent
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9-alpha.1
1
+ apiVersion: ossa/v0.2.8-alpha.1
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: financial-data-processor
@@ -1,4 +1,4 @@
1
- apiVersion: ossa.io/v0.1.9
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: data-processing-worker
@@ -1,5 +1,5 @@
1
1
  {
2
- "apiVersion": "ossa/v0.2",
2
+ "apiVersion": "ossa/v0.2.8",
3
3
  "kind": "Agent",
4
4
  "metadata": {
5
5
  "name": "claude-assistant",
@@ -34,12 +34,13 @@
34
34
  "description": "Mathematical expression to evaluate"
35
35
  }
36
36
  },
37
- "required": ["expression"]
37
+ "required": [
38
+ "expression"
39
+ ]
38
40
  }
39
41
  }
40
42
  ],
41
43
  "streaming": false
42
44
  }
43
45
  }
44
- }
45
-
46
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "apiVersion": "ossa/v0.2",
2
+ "apiVersion": "ossa/v0.2.8",
3
3
  "kind": "Agent",
4
4
  "metadata": {
5
5
  "name": "autogen-assistant",
@@ -28,10 +28,12 @@
28
28
  },
29
29
  "max_consecutive_auto_reply": 10,
30
30
  "groupchat": {
31
- "agents": ["user_proxy", "assistant"],
31
+ "agents": [
32
+ "user_proxy",
33
+ "assistant"
34
+ ],
32
35
  "max_round": 20
33
36
  }
34
37
  }
35
38
  }
36
- }
37
-
39
+ }
@@ -0,0 +1,78 @@
1
+ apiVersion: ossa/v0.2.8
2
+ kind: Agent
3
+ metadata:
4
+ name: claude-code-reviewer
5
+ version: 1.0.0
6
+ description: Claude Code agent for TypeScript/Node.js code review
7
+
8
+ spec:
9
+ role: |
10
+ You are a senior code reviewer specializing in TypeScript, Node.js,
11
+ and OSSA specification compliance. Review code for quality, security,
12
+ and adherence to best practices.
13
+
14
+ llm:
15
+ provider: anthropic
16
+ model: claude-sonnet-4-5-20250929
17
+ temperature: 0.2
18
+ max_tokens: 16384
19
+
20
+ capabilities:
21
+ - name: review_code
22
+ description: Review code changes for quality and security
23
+ input_schema:
24
+ type: object
25
+ properties:
26
+ file_paths:
27
+ type: array
28
+ items:
29
+ type: string
30
+ focus_areas:
31
+ type: array
32
+ items:
33
+ type: string
34
+ enum: [security, performance, types, tests, docs]
35
+ required: [file_paths]
36
+
37
+ - name: suggest_improvements
38
+ description: Suggest code improvements and refactoring
39
+ input_schema:
40
+ type: object
41
+ properties:
42
+ file_path:
43
+ type: string
44
+ improvement_type:
45
+ type: string
46
+ enum: [refactor, optimize, simplify, secure]
47
+ required: [file_path, improvement_type]
48
+
49
+ constraints:
50
+ max_file_size: 100000
51
+ allowed_extensions:
52
+ - .ts
53
+ - .tsx
54
+ - .js
55
+ - .json
56
+ - .yaml
57
+ - .yml
58
+
59
+ extensions:
60
+ claude_code:
61
+ enabled: true
62
+ agent_type: reviewer
63
+ capabilities:
64
+ - file_read
65
+ - grep_search
66
+ - glob_search
67
+ review_focus:
68
+ - type_safety
69
+ - error_handling
70
+ - security_vulnerabilities
71
+ - code_clarity
72
+ - test_coverage
73
+
74
+ anthropic:
75
+ enabled: true
76
+ model: claude-sonnet-4-5-20250929
77
+ max_tokens: 16384
78
+ temperature: 0.2
@@ -0,0 +1,80 @@
1
+ apiVersion: ossa/v0.2.8
2
+ kind: Agent
3
+ metadata:
4
+ name: ossa-validator
5
+ version: 1.0.0
6
+ description: Claude Code agent for OSSA manifest validation and generation
7
+
8
+ spec:
9
+ role: |
10
+ You are an OSSA specification expert that helps users validate,
11
+ create, and migrate AI agent manifests to the OSSA standard.
12
+
13
+ llm:
14
+ provider: anthropic
15
+ model: claude-sonnet-4-5-20250929
16
+ temperature: 0.3
17
+ max_tokens: 8192
18
+
19
+ capabilities:
20
+ - name: validate
21
+ description: Validate OSSA manifests against schema
22
+ input_schema:
23
+ type: object
24
+ properties:
25
+ manifest_path:
26
+ type: string
27
+ description: Path to OSSA manifest file
28
+ required: [manifest_path]
29
+
30
+ - name: generate
31
+ description: Generate OSSA manifests from templates
32
+ input_schema:
33
+ type: object
34
+ properties:
35
+ agent_type:
36
+ type: string
37
+ enum: [chat, workflow, compliance, worker]
38
+ name:
39
+ type: string
40
+ required: [agent_type, name]
41
+
42
+ - name: migrate
43
+ description: Migrate manifests between OSSA versions
44
+ input_schema:
45
+ type: object
46
+ properties:
47
+ source_path:
48
+ type: string
49
+ target_version:
50
+ type: string
51
+ default: "0.2.8"
52
+ required: [source_path]
53
+
54
+ tools:
55
+ - name: ossa_validate
56
+ description: Run OSSA CLI validation
57
+ handler: bash
58
+ command: npm run cli -- validate ${manifest_path}
59
+
60
+ - name: ossa_generate
61
+ description: Generate new OSSA manifest
62
+ handler: bash
63
+ command: npm run cli -- generate ${agent_type} --name "${name}"
64
+
65
+ extensions:
66
+ claude_code:
67
+ enabled: true
68
+ agent_type: specialist
69
+ capabilities:
70
+ - file_read
71
+ - file_write
72
+ - bash_execute
73
+ allowed_commands:
74
+ - "npm run cli --"
75
+ - "npm run test"
76
+ - "npm run build"
77
+ workspace_paths:
78
+ - "spec/"
79
+ - "examples/"
80
+ - "src/"
@@ -1,3 +1,4 @@
1
+ apiVersion: ossa/v0.2.8
1
2
  ossaVersion: "1.0"
2
3
 
3
4
  agent:
@@ -1,4 +1,4 @@
1
- apiVersion: ossa/v1
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: agent-router
@@ -1,5 +1,5 @@
1
1
  {
2
- "apiVersion": "ossa/v0.2",
2
+ "apiVersion": "ossa/v0.2.8",
3
3
  "kind": "Agent",
4
4
  "metadata": {
5
5
  "name": "research-agent",
@@ -18,7 +18,14 @@
18
18
  "type": "http",
19
19
  "name": "web_search",
20
20
  "endpoint": "https://api.search.example.com",
21
- "capabilities": ["search", "retrieve"]
21
+ "capabilities": [
22
+ {
23
+ "name": "search"
24
+ },
25
+ {
26
+ "name": "retrieve"
27
+ }
28
+ ]
22
29
  }
23
30
  ]
24
31
  },
@@ -29,8 +36,10 @@
29
36
  "role": "Research Specialist",
30
37
  "goal": "Gather comprehensive and accurate information on assigned research topics",
31
38
  "backstory": "You are an expert researcher with years of experience in information gathering and analysis. You excel at finding reliable sources and synthesizing complex information.",
32
- "tools": ["web_search", "document_analyzer"]
39
+ "tools": [
40
+ "web_search",
41
+ "document_analyzer"
42
+ ]
33
43
  }
34
44
  }
35
- }
36
-
45
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "apiVersion": "ossa/v0.2",
2
+ "apiVersion": "ossa/v0.2.8",
3
3
  "kind": "Agent",
4
4
  "metadata": {
5
5
  "name": "code-review-agent",
@@ -18,7 +18,17 @@
18
18
  "type": "mcp",
19
19
  "name": "analyze_code",
20
20
  "server": "code-reviewer",
21
- "capabilities": ["review", "suggest", "explain"]
21
+ "capabilities": [
22
+ {
23
+ "name": "review"
24
+ },
25
+ {
26
+ "name": "suggest"
27
+ },
28
+ {
29
+ "name": "explain"
30
+ }
31
+ ]
22
32
  }
23
33
  ]
24
34
  },
@@ -28,8 +38,14 @@
28
38
  "agent_type": "composer",
29
39
  "workspace_config": {
30
40
  "rules_file": ".cursor/.cursorrules",
31
- "context_files": ["src/**/*.ts", "tests/**/*.ts"],
32
- "ignore_patterns": ["node_modules/**", "dist/**"]
41
+ "context_files": [
42
+ "src/**/*.ts",
43
+ "tests/**/*.ts"
44
+ ],
45
+ "ignore_patterns": [
46
+ "node_modules/**",
47
+ "dist/**"
48
+ ]
33
49
  },
34
50
  "capabilities": {
35
51
  "code_generation": false,
@@ -43,5 +59,4 @@
43
59
  }
44
60
  }
45
61
  }
46
- }
47
-
62
+ }
@@ -37,6 +37,7 @@
37
37
  # ============================================================================
38
38
 
39
39
  # OSSA specification version - defines which features are available
40
+ apiVersion: ossa/v0.2.8
40
41
  ossaVersion: "1.0"
41
42
 
42
43
  # Agent metadata and configuration
@@ -1,4 +1,4 @@
1
- apiVersion: ossa/v1
1
+ apiVersion: ossa/v0.2.8
2
2
  kind: Agent
3
3
  metadata:
4
4
  name: gitlab-ml-recommender
@@ -2,7 +2,7 @@
2
2
  # Extension specification for Drupal LLM Platform deployment
3
3
  # Compatible with Drupal 10+ and llm-platform modules
4
4
 
5
- apiVersion: ossa/v1
5
+ apiVersion: ossa/v0.2.8
6
6
  kind: ExtensionSchema
7
7
  metadata:
8
8
  name: drupal-extension
@@ -2,7 +2,7 @@
2
2
  # Production-grade specification for Kubernetes-native agent deployment
3
3
  # Compatible with kagent.dev/v1alpha1 CRDs
4
4
 
5
- apiVersion: ossa/v1
5
+ apiVersion: ossa/v0.2.8
6
6
  kind: ExtensionSchema
7
7
  metadata:
8
8
  name: kagent-extension
@@ -32,7 +32,7 @@
32
32
  #
33
33
  # ============================================================================
34
34
 
35
- apiVersion: ossa/v0.2
35
+ apiVersion: ossa/v0.2.8
36
36
  kind: Agent
37
37
 
38
38
  metadata:
@@ -36,7 +36,7 @@
36
36
  # ----------------------------------------------------------------------------
37
37
  # Coordinates the workflow, delegates tasks to worker agents, and aggregates results
38
38
 
39
- apiVersion: ossa/v0.2
39
+ apiVersion: ossa/v0.2.8
40
40
  kind: Agent
41
41
 
42
42
  metadata:
@@ -154,7 +154,7 @@ spec:
154
154
  # Specialized agent for research tasks
155
155
 
156
156
  ---
157
- apiVersion: ossa/v0.2
157
+ apiVersion: ossa/v0.2.8
158
158
  kind: Agent
159
159
 
160
160
  metadata:
@@ -221,7 +221,7 @@ spec:
221
221
  # Specialized agent for data analysis
222
222
 
223
223
  ---
224
- apiVersion: ossa/v0.2
224
+ apiVersion: ossa/v0.2.8
225
225
  kind: Agent
226
226
 
227
227
  metadata:
@@ -282,7 +282,7 @@ spec:
282
282
  # Specialized agent for content creation
283
283
 
284
284
  ---
285
- apiVersion: ossa/v0.2
285
+ apiVersion: ossa/v0.2.8
286
286
  kind: Agent
287
287
 
288
288
  metadata:
@@ -2,7 +2,7 @@
2
2
  # Compliance Validator Agent
3
3
  # Domain: compliance.validation.continuous
4
4
 
5
- apiVersion: ossa/v1
5
+ apiVersion: ossa/v0.2.8
6
6
  kind: Agent
7
7
  metadata:
8
8
  name: compliance-validator