@bluefly/openstandardagents 0.4.6 → 0.4.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 (300) hide show
  1. package/.version.json +3 -3
  2. package/CHANGELOG.md +16 -0
  3. package/README.md +1 -0
  4. package/dist/.version.json +3 -3
  5. package/dist/adapters/mcp/converter.js +4 -3
  6. package/dist/adapters/npm/adapter.js +2 -1
  7. package/dist/adapters/openai-agents/adapter.js +1 -1
  8. package/dist/cli/commands/config.command.d.ts +7 -0
  9. package/dist/cli/commands/config.command.js +92 -0
  10. package/dist/cli/commands/migrate.command.js +1 -1
  11. package/dist/cli/commands/sign.command.d.ts +3 -0
  12. package/dist/cli/commands/sign.command.js +42 -0
  13. package/dist/cli/commands/skills.command.js +4 -6
  14. package/dist/config/cli-config.d.ts +33 -0
  15. package/dist/config/cli-config.js +107 -0
  16. package/dist/mcp-server/index.js +0 -0
  17. package/dist/package.json +8 -9
  18. package/dist/services/governance/cedar-provider.js +2 -1
  19. package/dist/services/release-automation/base-crud.service.d.ts +93 -0
  20. package/dist/services/release-automation/base-crud.service.js +68 -0
  21. package/dist/services/release-automation/generate-changelog.d.ts +7 -0
  22. package/dist/services/release-automation/generate-changelog.js +288 -0
  23. package/dist/services/release-automation/increment-dev-tag.d.ts +7 -0
  24. package/dist/services/release-automation/increment-dev-tag.js +160 -0
  25. package/dist/services/release-automation/index.d.ts +12 -0
  26. package/dist/services/release-automation/index.js +12 -0
  27. package/dist/services/release-automation/merge-request.service.d.ts +119 -0
  28. package/dist/services/release-automation/merge-request.service.js +212 -0
  29. package/dist/services/release-automation/milestone.service.d.ts +104 -0
  30. package/dist/services/release-automation/milestone.service.js +207 -0
  31. package/dist/services/release-automation/release-agent.service.d.ts +39 -0
  32. package/dist/services/release-automation/release-agent.service.js +43 -0
  33. package/dist/services/release-automation/release-buttons.d.ts +7 -0
  34. package/dist/services/release-automation/release-buttons.js +207 -0
  35. package/dist/services/release-automation/release.service.d.ts +118 -0
  36. package/dist/services/release-automation/release.service.js +207 -0
  37. package/dist/services/release-automation/schemas/release.schema.d.ts +299 -0
  38. package/dist/services/release-automation/schemas/release.schema.js +272 -0
  39. package/dist/services/release-automation/tag.service.d.ts +99 -0
  40. package/dist/services/release-automation/tag.service.js +183 -0
  41. package/dist/services/release-automation/webhook.service.d.ts +37 -0
  42. package/dist/services/release-automation/webhook.service.js +187 -0
  43. package/dist/skills/test-skill/README.md +36 -0
  44. package/dist/skills/test-skill/SKILL.md +31 -0
  45. package/dist/skills/test-skill/index.d.ts +31 -0
  46. package/dist/skills/test-skill/install.js +44 -0
  47. package/dist/skills/test-skill/package.json +36 -0
  48. package/dist/spec/reference/reference-agents/compliance-auditor/manifest.ossa.yaml +1 -1
  49. package/dist/spec/reference/reference-agents/doc-agent/manifest.ossa.yaml +1 -1
  50. package/dist/spec/reference/reference-agents/mr-reviewer/manifest.ossa.yaml +1 -1
  51. package/dist/spec/reference/reference-agents/ossa-validator-v0.3/manifest.ossa.yaml +1 -1
  52. package/dist/spec/reference/reference-agents/pipeline-fixer/manifest.ossa.yaml +1 -1
  53. package/dist/spec/reference/reference-agents/release-orchestrator/manifest.ossa.yaml +1 -1
  54. package/dist/spec/uadp/README.md +393 -0
  55. package/dist/spec/uadp/openapi.yaml +387 -0
  56. package/dist/spec/uadp/schemas/uadp-agents-response.schema.json +68 -0
  57. package/dist/spec/uadp/schemas/uadp-federation-response.schema.json +46 -0
  58. package/dist/spec/uadp/schemas/uadp-manifest.schema.json +82 -0
  59. package/dist/spec/uadp/schemas/uadp-skills-response.schema.json +72 -0
  60. package/dist/spec/v0.4/agent-card.schema.json +1 -1
  61. package/dist/spec/v0.4/agent.schema.json +15 -15
  62. package/dist/spec/v0.4/extensions/a2a/a2a.schema.json +1 -1
  63. package/dist/spec/v0.4/extensions/ag2/ag2.schema.json +1 -1
  64. package/dist/spec/v0.4/extensions/crewai/crewai.schema.json +1 -1
  65. package/dist/spec/v0.4/extensions/kagent/kagent.schema.json +1 -1
  66. package/dist/spec/v0.4/extensions/langchain/langchain.schema.json +1 -1
  67. package/dist/spec/v0.4/extensions/langgraph/langgraph.schema.json +1 -1
  68. package/dist/spec/v0.4/extensions/mcp/mcp.schema.json +1 -1
  69. package/dist/spec/v0.5/agent-card.schema.json +477 -0
  70. package/dist/spec/v0.5/agent.schema.json +1556 -0
  71. package/dist/spec/v0.5/conformance/profiles/baseline.json +19 -0
  72. package/dist/spec/v0.5/conformance/profiles/enterprise.json +20 -0
  73. package/dist/spec/v0.5/extensions/a2a/README.md +193 -0
  74. package/dist/spec/v0.5/extensions/a2a/a2a.schema.json +77 -0
  75. package/dist/spec/v0.5/extensions/ag2/ag2.schema.json +277 -0
  76. package/dist/spec/v0.5/extensions/cognition/cognition.schema.json +94 -0
  77. package/dist/spec/v0.5/extensions/cognition/thought-node.schema.json +80 -0
  78. package/dist/spec/v0.5/extensions/crewai/crewai.schema.json +256 -0
  79. package/dist/spec/v0.5/extensions/drupal/drupal.schema.json +318 -0
  80. package/dist/spec/v0.5/extensions/evals/evals.schema.json +597 -0
  81. package/dist/spec/v0.5/extensions/governance/governance-extension.yaml +161 -0
  82. package/dist/spec/v0.5/extensions/identity/identity.schema.json +302 -0
  83. package/dist/spec/v0.5/extensions/kagent/README.md +315 -0
  84. package/dist/spec/v0.5/extensions/kagent/kagent.schema.json +624 -0
  85. package/dist/spec/v0.5/extensions/langchain/langchain.schema.json +243 -0
  86. package/dist/spec/v0.5/extensions/langgraph/langgraph.schema.json +211 -0
  87. package/dist/spec/v0.5/extensions/mcp/README.md +276 -0
  88. package/dist/spec/v0.5/extensions/mcp/mcp.schema.json +84 -0
  89. package/dist/spec/v0.5/extensions/memory/memory.schema.json +7 -0
  90. package/dist/spec/v0.5/extensions/team/team.schema.json +304 -0
  91. package/dist/spec/v0.5/extensions/token-efficiency/token-efficiency.schema.json +47 -0
  92. package/dist/spec/v0.5/mcp.schema.json +1 -0
  93. package/dist/spec/v0.5/skill.schema.json +1 -0
  94. package/dist/spec/v0.5/validator.schema.json +282 -0
  95. package/dist/validation/error-codes.js +1 -1
  96. package/examples/a2a/agent-handoff.ossa.yaml +1 -1
  97. package/examples/a2a/service-discovery.ossa.yaml +1 -1
  98. package/examples/adapters/drupal-eca-mapping.yaml +1 -1
  99. package/examples/adapters/drupal-eca-task.yaml +1 -1
  100. package/examples/adapters/drupal-flowdrop-mapping.yaml +1 -1
  101. package/examples/adapters/drupal-maestro-mapping.yaml +1 -1
  102. package/examples/adapters/mistral-agent.yaml +1 -1
  103. package/examples/adapters/symfony-messenger-task.yaml +1 -1
  104. package/examples/adapters/symfony-messenger-workflow.yaml +1 -1
  105. package/examples/adk-integration/code-review-workflow.yml +1 -1
  106. package/examples/adk-integration/customer-support.yml +1 -1
  107. package/examples/adk-integration/data-pipeline.yml +1 -1
  108. package/examples/advanced/reasoning-agent.yaml +1 -1
  109. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  110. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  111. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  112. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  113. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  114. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  115. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  116. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  117. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  118. package/examples/agent-taxonomy-example.ossa.yaml +1 -1
  119. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +1 -1
  120. package/examples/agents/02-code-review-agent/agent.ossa.yaml +1 -1
  121. package/examples/agents/03-data-analysis-agent/agent.ossa.yaml +1 -1
  122. package/examples/agents/04-content-moderator/agent.ossa.yaml +1 -1
  123. package/examples/agents/05-sales-assistant/agent.ossa.yaml +1 -1
  124. package/examples/agents/06-devops-agent/agent.ossa.yaml +1 -1
  125. package/examples/agents/07-research-assistant/agent.ossa.yaml +1 -1
  126. package/examples/agents/08-email-triage-agent/agent.ossa.yaml +1 -1
  127. package/examples/agents/09-security-scanner/agent.ossa.yaml +1 -1
  128. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +1 -1
  129. package/examples/agents/architecture-healer-enterprise.yaml +1 -1
  130. package/examples/agents/dependency-healer-npm.yaml +1 -1
  131. package/examples/agents/spec-healer-openapi.yaml +1 -1
  132. package/examples/agents/wiki-healer-production.yaml +1 -1
  133. package/examples/agents-md/monorepo-agent.ossa.yaml +1 -1
  134. package/examples/agentscope/react-assistant/README.md +111 -0
  135. package/examples/agentscope/react-assistant/agent.ossa.yaml +132 -0
  136. package/examples/agentscope/react-assistant/skills/code-analysis/SKILL.md +18 -0
  137. package/examples/agentscope/react-assistant/skills/question-answering/SKILL.md +18 -0
  138. package/examples/autonomous-evolution/self-evolving-agent.ossa.yaml +1 -1
  139. package/examples/bridges/.gitlab-ci.yml +2 -2
  140. package/examples/build-once-use-everywhere/agent.ossa.yaml +1 -1
  141. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  142. package/examples/claude-code/ossa-validator.ossa.yaml +1 -1
  143. package/examples/common_npm/agent-router.ossa.yaml +1 -1
  144. package/examples/contracts/data-consumer.ossa.yaml +1 -1
  145. package/examples/contracts/data-producer-v2.ossa.yaml +1 -1
  146. package/examples/contracts/data-producer.ossa.yaml +1 -1
  147. package/examples/drupal/QUICKSTART.md +17 -3
  148. package/examples/drupal/ai_agents_agentscope/README.md +62 -0
  149. package/examples/drupal/ai_agents_agentscope/ai_agents_agentscope.info.yml +13 -0
  150. package/examples/drupal/ai_agents_agentscope/ai_agents_agentscope.services.yml +4 -0
  151. package/examples/drupal/ai_agents_agentscope/config/install/ai_agents_agentscope.settings.yml +3 -0
  152. package/examples/drupal/ai_agents_agentscope/config/schema/ai_agents_agentscope.schema.yml +14 -0
  153. package/examples/drupal/ai_agents_agentscope/src/AgentScopeRuntime.php +11 -0
  154. package/examples/drupal/ai_agents_agentscope/src/Plugin/AiAgent/AgentScopeAgent.php +10 -0
  155. package/examples/drupal/ai_agents_agentscope/src/Plugin/AiProvider/AgentScopeProvider.php +217 -0
  156. package/examples/drupal/ai_agents_agentscope/src/Plugin/Derivative/AgentScopeDeriver.php +10 -0
  157. package/examples/drupal/ai_agents_agentscope/src/Service/AgentScopeAdapter.php +9 -0
  158. package/examples/drupal/content-moderator.ossa.yaml +1 -1
  159. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
  160. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +1 -1
  161. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +1 -1
  162. package/examples/extensions/agents-md-advanced.yml +1 -1
  163. package/examples/extensions/agents-md-basic.yml +1 -1
  164. package/examples/extensions/agents-md-sync.yml +1 -1
  165. package/examples/extensions/agents-md-v1.yml +1 -1
  166. package/examples/extensions/drupal-v1.yml +1 -1
  167. package/examples/extensions/encryption-multi-provider.yaml +4 -4
  168. package/examples/extensions/kagent-v1.yml +1 -1
  169. package/examples/extensions/knowledge-sources.yaml +1 -1
  170. package/examples/extensions/mcp-full-featured.yaml +1 -1
  171. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  172. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  173. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  174. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  175. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  176. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  177. package/examples/gitlab-agents/daily-code-scan/.gitlab-ci.yml +2 -2
  178. package/examples/gitlab-agents/duo-comment-responder/.gitlab-ci.yml +2 -2
  179. package/examples/gitlab-agents/mr-reviewer/.gitlab-ci.yml +2 -2
  180. package/examples/gitlab-agents/pipeline-auto-fix/.gitlab-ci.yml +2 -2
  181. package/examples/gitlab-agents/pre-commit-quality-check/.gitlab-ci.yml +2 -2
  182. package/examples/gitlab-agents/pre-push-validation/.gitlab-ci.yml +2 -2
  183. package/examples/hierarchical-agent.ossa.yaml +1 -1
  184. package/examples/infrastructure/token-rotation/manifest.ossa.yaml +1 -1
  185. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +1 -1
  186. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  187. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  188. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  189. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -1
  190. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  191. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  192. package/examples/knowledge-graph/drupal-agent-with-kg.ossa.yaml +1 -1
  193. package/examples/mcp/browser-puppeteer.ossa.yaml +1 -1
  194. package/examples/mcp/database-mcp.ossa.yaml +1 -1
  195. package/examples/mcp/filesystem-mcp.ossa.yaml +1 -1
  196. package/examples/messaging/dependency-healer.ossa.yaml +1 -1
  197. package/examples/messaging/incident-responder.ossa.yaml +1 -1
  198. package/examples/messaging/routing-rules.ossa.yaml +1 -1
  199. package/examples/messaging/security-scanner.ossa.yaml +1 -1
  200. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  201. package/examples/migrations/langchain/01-python-react-agent-after.ossa.yaml +1 -1
  202. package/examples/migrations/langchain/02-typescript-conversational-after.ossa.yaml +1 -1
  203. package/examples/migrations/langchain/03-sequential-chain-after.ossa.yaml +1 -1
  204. package/examples/migrations/langchain/04-config-based-after.ossa.yaml +1 -1
  205. package/examples/migrations/swarm-to-ossa/after-handoffs.ossa.yaml +6 -6
  206. package/examples/migrations/swarm-to-ossa/after-triage-agent.ossa.yaml +3 -3
  207. package/examples/mr-reviewer-with-governance.ossa.yaml +1 -1
  208. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  209. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  210. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  211. package/examples/multi-agent-research-workflow.ossa.yaml +1 -1
  212. package/examples/multi-platform/single-manifest/agent.ossa.yaml +1 -1
  213. package/examples/observability/activity-stream-full.yaml +1 -1
  214. package/examples/openai/basic-agent.ossa.yaml +1 -1
  215. package/examples/ossa-templates/01-code-assistant.ossa.yaml +1 -1
  216. package/examples/ossa-templates/02-security-scanner.ossa.yaml +1 -1
  217. package/examples/ossa-templates/03-ci-pipeline.ossa.yaml +1 -1
  218. package/examples/ossa-templates/04-code-reviewer.ossa.yaml +1 -1
  219. package/examples/ossa-templates/05-doc-generator.ossa.yaml +1 -1
  220. package/examples/ossa-templates/06-compliance-validator.ossa.yaml +1 -1
  221. package/examples/ossa-templates/07-workflow-orchestrator.ossa.yaml +1 -1
  222. package/examples/ossa-templates/08-content-writer.ossa.yaml +1 -1
  223. package/examples/ossa-templates/09-test-generator.ossa.yaml +1 -1
  224. package/examples/ossa-templates/10-data-transformer.ossa.yaml +1 -1
  225. package/examples/ossa-templates/11-react-performance-expert.ossa.yaml +1 -1
  226. package/examples/ossa-templates/12-typescript-type-safety-expert.ossa.yaml +1 -1
  227. package/examples/ossa-templates/13-accessibility-champion.ossa.yaml +1 -1
  228. package/examples/ossa-templates/14-security-hardening-agent.ossa.yaml +1 -1
  229. package/examples/pipeline-agent.ossa.yaml +1 -1
  230. package/examples/production/document-analyzer-openai.yml +1 -1
  231. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +1 -1
  232. package/examples/production-ready/02-code-review-agent/agent.ossa.yaml +1 -1
  233. package/examples/production-ready/03-data-analysis-agent/agent.ossa.yaml +1 -1
  234. package/examples/production-ready/04-content-moderator/agent.ossa.yaml +1 -1
  235. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +1 -1
  236. package/examples/production-ready/06-devops-agent/agent.ossa.yaml +1 -1
  237. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +1 -1
  238. package/examples/production-ready/08-email-triage-agent/agent.ossa.yaml +1 -1
  239. package/examples/production-ready/09-security-scanner/agent.ossa.yaml +1 -1
  240. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +1 -1
  241. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  242. package/examples/real-world/gitlab-cicd-optimizer.ossa.yaml +1 -1
  243. package/examples/real-world/rag-documentation-assistant.ossa.yaml +1 -1
  244. package/examples/registry/agents/code-reviewer/agent.yaml +1 -1
  245. package/examples/registry/agents/security-scanner/agent.yaml +1 -1
  246. package/examples/runtime-adapters/bedrock-claude-example.ossa.yaml +1 -1
  247. package/examples/schema/reusable-components.yaml +1 -1
  248. package/examples/showcase/ci-pipeline.ossa.yaml +1 -1
  249. package/examples/showcase/code-assistant.ossa.yaml +1 -1
  250. package/examples/showcase/code-reviewer.ossa.yaml +1 -1
  251. package/examples/showcase/compliance-checker.ossa.yaml +1 -1
  252. package/examples/showcase/compliance-validator.ossa.yaml +1 -1
  253. package/examples/showcase/content-writer.ossa.yaml +1 -1
  254. package/examples/showcase/customer-support.ossa.yaml +1 -1
  255. package/examples/showcase/data-processing-pipeline.ossa.yaml +1 -1
  256. package/examples/showcase/data-transformer.ossa.yaml +1 -1
  257. package/examples/showcase/doc-generator.ossa.yaml +1 -1
  258. package/examples/showcase/full-power-agent.ossa.yaml +1 -1
  259. package/examples/showcase/security-scanner-enhanced.ossa.yaml +1 -1
  260. package/examples/showcase/security-scanner.ossa.yaml +1 -1
  261. package/examples/showcase/team-leader.ossa.yaml +1 -1
  262. package/examples/showcase/test-generator.ossa.yaml +1 -1
  263. package/examples/showcase/workflow-orchestrator.ossa.yaml +1 -1
  264. package/examples/skills-example.ossa.yaml +1 -1
  265. package/examples/swarm-agent.ossa.yaml +1 -1
  266. package/examples/tasks/batch-email-sender.yaml +1 -1
  267. package/examples/tasks/data-transform.yaml +1 -1
  268. package/examples/tasks/publish-content.yaml +1 -1
  269. package/examples/team-agent.ossa.yaml +1 -1
  270. package/examples/templates/ossa-compliance.yaml +1 -1
  271. package/examples/unified/security-scanner.ossa.yaml +1 -1
  272. package/examples/workflows/batch-email-campaign.yaml +1 -1
  273. package/examples/workflows/content-review-publish.yaml +1 -1
  274. package/examples/workflows/simple-etl.yaml +1 -1
  275. package/package.json +6 -7
  276. package/spec/reference/reference-agents/compliance-auditor/manifest.ossa.yaml +1 -1
  277. package/spec/reference/reference-agents/doc-agent/manifest.ossa.yaml +1 -1
  278. package/spec/reference/reference-agents/mr-reviewer/manifest.ossa.yaml +1 -1
  279. package/spec/reference/reference-agents/ossa-validator-v0.3/manifest.ossa.yaml +1 -1
  280. package/spec/reference/reference-agents/pipeline-fixer/manifest.ossa.yaml +1 -1
  281. package/spec/reference/reference-agents/release-orchestrator/manifest.ossa.yaml +1 -1
  282. package/spec/v0.4/agent-card.schema.json +1 -1
  283. package/spec/v0.4/agent.schema.json +84 -15
  284. package/spec/v0.4/extensions/a2a/a2a.schema.json +1 -1
  285. package/spec/v0.4/extensions/ag2/ag2.schema.json +1 -1
  286. package/spec/v0.4/extensions/crewai/crewai.schema.json +1 -1
  287. package/spec/v0.4/extensions/kagent/kagent.schema.json +1 -1
  288. package/spec/v0.4/extensions/langchain/langchain.schema.json +1 -1
  289. package/spec/v0.4/extensions/langgraph/langgraph.schema.json +1 -1
  290. package/spec/v0.4/extensions/mcp/mcp.schema.json +1 -1
  291. package/templates/agent-types/claude-agent.ossa.yaml +1 -1
  292. package/templates/agent-types/kagent.ossa.yaml +1 -1
  293. package/templates/agent-types/langchain-agent.ossa.yaml +1 -1
  294. package/templates/agent-types/openapi-agent.ossa.yaml +1 -1
  295. package/templates/agent-types/swarm-agents.ossa.yaml +1 -1
  296. package/templates/ci-cd/gitlab-ci.deploy.yml +2 -2
  297. package/templates/validators/capability-compatibility.ossa.yaml +1 -1
  298. package/templates/validators/coordination-consistency.ossa.yaml +1 -1
  299. package/templates/validators/pattern-requirements.ossa.yaml +1 -1
  300. package/templates/validators/transport-compatibility.ossa.yaml +1 -1
package/.version.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
- "current": "0.4.6",
3
- "latest_stable": "0.4.6",
4
- "spec_version": "0.4.6",
2
+ "current": "0.4.7",
3
+ "latest_stable": "0.4.7",
4
+ "spec_version": "0.4.7",
5
5
  "spec_path": "spec/v0.4",
6
6
  "schema_file": "agent.schema.json"
7
7
  }
package/CHANGELOG.md CHANGED
@@ -7,8 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+ - **AgentScope integration**: Add AgentScope as supported agent framework with Python adapter, Drupal module, MCP server, A2A endpoint, and example manifests
12
+
13
+ ## [0.4.7] - 2026-03-06
14
+
15
+ ### Fixed
16
+ - **CLI broken import**: Removed `!dist/services/release-automation/` from package `files` exclusion — the core CLI (`release.command.ts`) imports `ReleaseAgentService` from that directory, so excluding it broke `ossa release` at runtime in v0.4.6
17
+
10
18
  ## [0.4.6] - 2026-03-05
11
19
 
20
+ ### Added
21
+ - **`ossa config` command** — Get/set CLI config persisted to `~/.ossa/config.json` (overridable with `OSSA_CONFIG_PATH`). Env vars override config when running commands.
22
+ - `ossa config set <key> <value>` — set a key (e.g. `SKILLS_PATH`, `BLUEFLY_SKILLS_CATALOG`)
23
+ - `ossa config get [key]` — get value or config file path
24
+ - `ossa config list` — list all keys in config file
25
+ - `ossa config unset <key>` — remove key from config file
26
+ - **Config-driven skills path** — `ossa skills add` and both wizards (interactive and API-first) resolve the default skills directory from config file then env (`SKILLS_PATH`, `BLUEFLY_SKILLS_PATH`), then `~/.claude/skills`. Use `ossa config set SKILLS_PATH /path/to/skills` so you no longer need to set env or pass `--path` every time.
27
+
12
28
  ### Changed
13
29
  - Updated package version from 0.4.5 to 0.4.6
14
30
  - Updated all version references throughout codebase
package/README.md CHANGED
@@ -473,6 +473,7 @@ ossa export --list-platforms
473
473
  | `claude-skills` | beta | 3 files | - | Claude Skills format with team support |
474
474
  | `mobile-agent` | alpha | 1 file | - | Mobile LLM platform export |
475
475
  | `symfony` | alpha | 1 file | - | Symfony bundle for PHP-based agents |
476
+ | `agentscope` | alpha | 10 files | agentscope | AgentScope ReAct assistant for Drupal AI Agents |
476
477
 
477
478
  Every export includes `agent.ossa.yaml` (the source manifest) for provenance.
478
479
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "current": "0.4.6",
3
- "latest_stable": "0.4.6",
4
- "spec_version": "0.4.6",
2
+ "current": "0.4.7",
3
+ "latest_stable": "0.4.7",
4
+ "spec_version": "0.4.7",
5
5
  "spec_path": "spec/v0.4",
6
6
  "schema_file": "agent.schema.json"
7
7
  }
@@ -1,5 +1,6 @@
1
- // OSSA v{{VERSION}} - MCP (Model Context Protocol) Export Adapter
1
+ // OSSA - MCP (Model Context Protocol) Export Adapter
2
2
  import { BaseAdapter, } from '../base/adapter.interface.js';
3
+ import { SPEC_VERSION } from '../../version.js';
3
4
  /**
4
5
  * MCP export adapter - generates JSON-RPC 2.0 MCP servers
5
6
  * Compatible with Claude Code, Cursor, and other MCP clients
@@ -9,9 +10,9 @@ export class MCPAdapter extends BaseAdapter {
9
10
  displayName = 'MCP Server';
10
11
  description = 'Export OSSA agents as Model Context Protocol servers';
11
12
  status = 'production';
12
- supportedVersions = ['0.3.6', '0.4.x', '0.4.6'];
13
+ supportedVersions = ['0.3.6', '0.4.x', SPEC_VERSION];
13
14
  version = '1.0.0';
14
- supportedOssaVersions = ['0.3.6', '0.4.x', '0.4.6'];
15
+ supportedOssaVersions = ['0.3.6', '0.4.x', SPEC_VERSION];
15
16
  outputFormat = ['typescript'];
16
17
  async export(manifest, options) {
17
18
  return this.convert(manifest, options || {});
@@ -6,6 +6,7 @@
6
6
  * DRY: Uses shared libraries for license, validation, README, package.json
7
7
  */
8
8
  import { getApiVersion } from '../../utils/version.js';
9
+ import { SPEC_VERSION } from '../../version.js';
9
10
  import { BaseAdapter } from '../base/adapter.interface.js';
10
11
  import { generateLicense, generateReadme, sanitizePackageName, } from '../base/common-file-generator.js';
11
12
  import { isValidSemver } from '../base/manifest-validator.js';
@@ -18,7 +19,7 @@ export class NPMAdapter extends BaseAdapter {
18
19
  displayName = 'NPM Package';
19
20
  description = 'Export agent as installable npm package';
20
21
  status = 'production';
21
- supportedVersions = ['v0.3.6', 'v0.4.x', 'v0.4.6'];
22
+ supportedVersions = ['v0.3.6', 'v0.4.x', `v${SPEC_VERSION}`];
22
23
  converter = new NPMConverter();
23
24
  _skillsService;
24
25
  /**
@@ -62,7 +62,7 @@ export class OpenAIAgentsAdapter extends BaseAdapter {
62
62
  files.push(this.createManifestFile(manifest));
63
63
  return this.createResult(true, files, undefined, {
64
64
  duration: Date.now() - startTime,
65
- version: '0.4.6',
65
+ version: SPEC_VERSION,
66
66
  warnings: [],
67
67
  });
68
68
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ossa config set <key> <value> | get [key] | list | unset <key>
3
+ * Persists to ~/.ossa/config.json. process.env overrides config file when reading.
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const configCommand: Command;
7
+ //# sourceMappingURL=config.command.d.ts.map
@@ -0,0 +1,92 @@
1
+ /**
2
+ * ossa config set <key> <value> | get [key] | list | unset <key>
3
+ * Persists to ~/.ossa/config.json. process.env overrides config file when reading.
4
+ */
5
+ import { Command } from 'commander';
6
+ import chalk from 'chalk';
7
+ import { getConfigPath, getConfigValue, setConfigValue, unsetConfigValue, listConfig, } from '../../config/cli-config.js';
8
+ export const configCommand = new Command('config')
9
+ .description('Get or set OSSA CLI config (stored in ~/.ossa/config.json). Env vars override config when running commands.')
10
+ .configureHelp({ sortSubcommands: true });
11
+ configCommand
12
+ .command('set <key> <value>')
13
+ .description('Set a config key (e.g. SKILLS_PATH, BLUEFLY_SKILLS_CATALOG)')
14
+ .action((key, value) => {
15
+ if (!key || !value) {
16
+ console.error(chalk.red('Usage: ossa config set <key> <value>'));
17
+ process.exit(1);
18
+ }
19
+ setConfigValue(key, value);
20
+ console.log(chalk.gray(`Config: ${getConfigPath()}`));
21
+ console.log(chalk.green(`${key}=${value}`));
22
+ });
23
+ configCommand
24
+ .command('get [key]')
25
+ .description('Get a config value (env overrides file). Omit key to show config path.')
26
+ .action((key) => {
27
+ if (!key) {
28
+ console.log(getConfigPath());
29
+ return;
30
+ }
31
+ const v = getConfigValue(key);
32
+ if (v === undefined || v === '') {
33
+ console.log('');
34
+ process.exit(1);
35
+ }
36
+ console.log(v);
37
+ });
38
+ configCommand
39
+ .command('list')
40
+ .description('List all keys and values stored in the config file')
41
+ .option('-q, --quiet', 'Only print keys')
42
+ .action((opts) => {
43
+ const data = listConfig();
44
+ const keys = Object.keys(data).sort();
45
+ if (keys.length === 0) {
46
+ console.log(chalk.gray('No keys in config file. Use: ossa config set SKILLS_PATH <path>'));
47
+ console.log(chalk.gray('Config path: ' + getConfigPath()));
48
+ return;
49
+ }
50
+ if (opts.quiet) {
51
+ keys.forEach((k) => console.log(k));
52
+ return;
53
+ }
54
+ console.log(chalk.gray('Config: ' + getConfigPath() + '\n'));
55
+ keys.forEach((k) => {
56
+ const val = data[k];
57
+ const display = val.length > 60 ? val.slice(0, 57) + '...' : val;
58
+ console.log(` ${chalk.cyan(k)}=${display}`);
59
+ });
60
+ });
61
+ configCommand
62
+ .command('unset <key>')
63
+ .description('Remove a key from the config file')
64
+ .action((key) => {
65
+ const removed = unsetConfigValue(key);
66
+ if (removed) {
67
+ console.log(chalk.green(`Removed ${key}`));
68
+ }
69
+ else {
70
+ console.log(chalk.yellow(`Key not in config: ${key}`));
71
+ process.exit(1);
72
+ }
73
+ });
74
+ configCommand.addHelpText('after', `
75
+ Known keys (you can set any key; these are commonly used):
76
+ SKILLS_PATH Directory for skills add/list (e.g. /Volumes/AgentPlatform/services/marketplace/skills)
77
+ BLUEFLY_SKILLS_MARKETPLACE Set to 1 to prefer marketplace skills path in MCP
78
+ BLUEFLY_SKILLS_CATALOG Path to marketplace-skills-catalog.json
79
+ BLUEFLY_SKILLS_PATH Alias for skills path
80
+ OSSA_WEBAGENTS_API_URL OSSA UI / agent builder API base URL
81
+ OSSA_CONFIG_PATH Override config file path
82
+ MCP_URL MCP server URL
83
+ GITLAB_URL GitLab instance URL
84
+ GITLAB_TOKEN GitLab token (prefer env for secrets)
85
+
86
+ Examples:
87
+ ossa config set SKILLS_PATH /Volumes/AgentPlatform/services/marketplace/skills
88
+ ossa config get SKILLS_PATH
89
+ ossa config list
90
+ ossa config unset SKILLS_PATH
91
+ `);
92
+ //# sourceMappingURL=config.command.js.map
@@ -17,7 +17,7 @@ import { addGlobalOptions, addMutationOptions, shouldUseColor, ExitCode, } from
17
17
  export const migrateCommand = new Command('migrate')
18
18
  .description('Migrate OSSA manifests between spec versions')
19
19
  .argument('<source>', 'Path to source OSSA manifest file')
20
- .option('--to <version>', 'Target OSSA version (e.g., 0.3.6, 0.4.6)', getVersion())
20
+ .option('--to <version>', 'Target OSSA version (e.g., 0.3.6, 0.4.x)', getVersion())
21
21
  .option('--list', 'List available migration transforms')
22
22
  .option('--validate', 'Validate converted manifest', true);
23
23
  // Apply production-grade standard options
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const signCommand: Command;
3
+ //# sourceMappingURL=sign.command.d.ts.map
@@ -0,0 +1,42 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as yaml from 'js-yaml';
4
+ import * as path from 'path';
5
+ import { signAgentManifest } from '../../services/trust/trust.service.js';
6
+ export const signCommand = new Command('sign')
7
+ .description('Cryptographically sign an OSSA manifest using an Ed25519 private key')
8
+ .argument('<manifest>', 'Path to the OSSA manifest file (.yaml or .json)')
9
+ .requiredOption('-k, --private-key <hex>', 'Ed25519 private key in hex format')
10
+ .option('-i, --issuer <did>', 'Optional DID of the signing entity (e.g. did:web:example.com)')
11
+ .option('-o, --output <file>', 'Optional output file path. Defaults to overwriting the input file.')
12
+ .action(async (manifestPath, options) => {
13
+ try {
14
+ const fullPath = path.resolve(process.cwd(), manifestPath);
15
+ if (!fs.existsSync(fullPath)) {
16
+ console.error(`Error: Manifest file not found at ${fullPath}`);
17
+ process.exit(1);
18
+ }
19
+ const isJson = fullPath.endsWith('.json');
20
+ const content = fs.readFileSync(fullPath, 'utf-8');
21
+ let manifest;
22
+ try {
23
+ manifest = isJson ? JSON.parse(content) : yaml.load(content);
24
+ }
25
+ catch (e) {
26
+ console.error(`Error parsing manifest: ${e instanceof Error ? e.message : 'Unknown error'}`);
27
+ process.exit(1);
28
+ }
29
+ const signedManifest = await signAgentManifest(manifest, options.privateKey, options.issuer);
30
+ const outputContent = isJson
31
+ ? JSON.stringify(signedManifest, null, 2)
32
+ : yaml.dump(signedManifest, { noRefs: true, indent: 2 });
33
+ const outputPath = options.output ? path.resolve(process.cwd(), options.output) : fullPath;
34
+ fs.writeFileSync(outputPath, outputContent, 'utf-8');
35
+ console.log(`Successfully signed manifest. Output saved to ${outputPath}`);
36
+ }
37
+ catch (e) {
38
+ console.error(`Error signing manifest: ${e instanceof Error ? e.message : 'Unknown error'}`);
39
+ process.exit(1);
40
+ }
41
+ });
42
+ //# sourceMappingURL=sign.command.js.map
@@ -7,10 +7,11 @@ import { Command } from 'commander';
7
7
  import * as fs from 'fs/promises';
8
8
  import * as path from 'path';
9
9
  import { z } from 'zod';
10
+ import { getSkillsPathDefault } from '../../config/cli-config.js';
10
11
  import { container } from '../../di-container.js';
11
12
  import { ManifestRepository } from '../../repositories/manifest.repository.js';
13
+ import { SkillsExportService, SkillsGeneratorService, SkillsInstallService, SkillsResearchService, } from '../../services/skills-pipeline/index.js';
12
14
  import { ClaudeSkillsService } from '../../services/skills/claude-skills.service.js';
13
- import { SkillsResearchService, SkillsGeneratorService, SkillsExportService, SkillsInstallService, } from '../../services/skills-pipeline/index.js';
14
15
  const AgentPathSchema = z.string().min(1);
15
16
  const SkillPathSchema = z.string().min(1);
16
17
  /** Parse skills.sh URL into GitHub repo URL + skill name. e.g. https://skills.sh/sparkfabrik/sf-awesome-copilot/drupal-cache-maxage -> { repoUrl, skill } */
@@ -179,17 +180,14 @@ skillsCommandGroup
179
180
  skillsCommandGroup
180
181
  .command('add <repo-url>')
181
182
  .option('--skill <name>', 'Skill name (subdir in repo, e.g. drupal-cache-maxage). Not needed when repo-url is a skills.sh URL.', '')
182
- .option('--path <dir>', 'Target directory to install into', process.env.SKILLS_PATH ||
183
- (process.env.HOME
184
- ? `${process.env.HOME}/.claude/skills`
185
- : '.claude/skills'))
183
+ .option('--path <dir>', 'Target directory to install into (default: config SKILLS_PATH or ~/.claude/skills)', '')
186
184
  .option('--ref <ref>', 'Git ref (branch/tag/sha)', 'HEAD')
187
185
  .option('--dry-run', 'Show what would be installed without writing', false)
188
186
  .description('Install a Claude Skill from a GitHub repo or from skills.sh URL')
189
187
  .action(async (repoUrl, options) => {
190
188
  try {
191
189
  const installService = container.get(SkillsInstallService);
192
- const targetPath = options.path;
190
+ const targetPath = options.path || getSkillsPathDefault();
193
191
  let resolvedRepoUrl = repoUrl;
194
192
  let resolvedSkill = options.skill ?? '';
195
193
  const skillsSh = parseSkillsShUrl(repoUrl);
@@ -0,0 +1,33 @@
1
+ /**
2
+ * OSSA CLI config file (e.g. ~/.ossa/config.json).
3
+ * Values here override defaults; process.env overrides config file.
4
+ * Use: ossa config set SKILLS_PATH /path/to/skills
5
+ */
6
+ export type ConfigRecord = Record<string, string>;
7
+ /**
8
+ * Config file path (for display).
9
+ */
10
+ export declare function getConfigPath(): string;
11
+ /**
12
+ * Get a config value. Resolution: process.env[key] then config file.
13
+ */
14
+ export declare function getConfigValue(key: string): string | undefined;
15
+ /**
16
+ * Set a config value (writes to config file). Does not set process.env.
17
+ */
18
+ export declare function setConfigValue(key: string, value: string): void;
19
+ /**
20
+ * Remove a key from the config file.
21
+ */
22
+ export declare function unsetConfigValue(key: string): boolean;
23
+ /**
24
+ * List all keys and values from the config file (not env).
25
+ */
26
+ export declare function listConfig(): ConfigRecord;
27
+ /** Known keys documented in `ossa config --help`. */
28
+ export declare const KNOWN_KEYS: readonly ["SKILLS_PATH", "BLUEFLY_SKILLS_MARKETPLACE", "BLUEFLY_SKILLS_CATALOG", "BLUEFLY_SKILLS_PATH", "OSSA_WEBAGENTS_API_URL", "OSSA_CONFIG_PATH", "MCP_URL", "GITLAB_URL", "GITLAB_TOKEN"];
29
+ /**
30
+ * Default directory for skills add/list. Resolution: config SKILLS_PATH, then env SKILLS_PATH/BLUEFLY_SKILLS_PATH, then ~/.claude/skills.
31
+ */
32
+ export declare function getSkillsPathDefault(): string;
33
+ //# sourceMappingURL=cli-config.d.ts.map
@@ -0,0 +1,107 @@
1
+ /**
2
+ * OSSA CLI config file (e.g. ~/.ossa/config.json).
3
+ * Values here override defaults; process.env overrides config file.
4
+ * Use: ossa config set SKILLS_PATH /path/to/skills
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { homedir } from 'os';
9
+ const OSSA_DIR = process.env.OSSA_CONFIG_DIR || path.join(homedir(), '.ossa');
10
+ const CONFIG_FILE = process.env.OSSA_CONFIG_PATH || path.join(OSSA_DIR, 'config.json');
11
+ function ensureDir(dir) {
12
+ if (!fs.existsSync(dir)) {
13
+ fs.mkdirSync(dir, { recursive: true });
14
+ }
15
+ }
16
+ function loadRaw() {
17
+ if (!fs.existsSync(CONFIG_FILE)) {
18
+ return {};
19
+ }
20
+ try {
21
+ const raw = fs.readFileSync(CONFIG_FILE, 'utf-8');
22
+ const data = JSON.parse(raw);
23
+ if (data && typeof data === 'object' && !Array.isArray(data)) {
24
+ const out = {};
25
+ for (const [k, v] of Object.entries(data)) {
26
+ if (typeof v === 'string')
27
+ out[k] = v;
28
+ else if (v != null)
29
+ out[k] = String(v);
30
+ }
31
+ return out;
32
+ }
33
+ }
34
+ catch {
35
+ // ignore
36
+ }
37
+ return {};
38
+ }
39
+ function saveRaw(data) {
40
+ ensureDir(path.dirname(CONFIG_FILE));
41
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(data, null, 2) + '\n', 'utf-8');
42
+ }
43
+ /**
44
+ * Config file path (for display).
45
+ */
46
+ export function getConfigPath() {
47
+ return CONFIG_FILE;
48
+ }
49
+ /**
50
+ * Get a config value. Resolution: process.env[key] then config file.
51
+ */
52
+ export function getConfigValue(key) {
53
+ const envVal = process.env[key];
54
+ if (envVal !== undefined && envVal !== '') {
55
+ return envVal;
56
+ }
57
+ const data = loadRaw();
58
+ return data[key];
59
+ }
60
+ /**
61
+ * Set a config value (writes to config file). Does not set process.env.
62
+ */
63
+ export function setConfigValue(key, value) {
64
+ const data = loadRaw();
65
+ data[key] = value;
66
+ saveRaw(data);
67
+ }
68
+ /**
69
+ * Remove a key from the config file.
70
+ */
71
+ export function unsetConfigValue(key) {
72
+ const data = loadRaw();
73
+ if (!(key in data))
74
+ return false;
75
+ delete data[key];
76
+ saveRaw(data);
77
+ return true;
78
+ }
79
+ /**
80
+ * List all keys and values from the config file (not env).
81
+ */
82
+ export function listConfig() {
83
+ return loadRaw();
84
+ }
85
+ /** Known keys documented in `ossa config --help`. */
86
+ export const KNOWN_KEYS = [
87
+ 'SKILLS_PATH',
88
+ 'BLUEFLY_SKILLS_MARKETPLACE',
89
+ 'BLUEFLY_SKILLS_CATALOG',
90
+ 'BLUEFLY_SKILLS_PATH',
91
+ 'OSSA_WEBAGENTS_API_URL',
92
+ 'OSSA_CONFIG_PATH',
93
+ 'MCP_URL',
94
+ 'GITLAB_URL',
95
+ 'GITLAB_TOKEN',
96
+ ];
97
+ /**
98
+ * Default directory for skills add/list. Resolution: config SKILLS_PATH, then env SKILLS_PATH/BLUEFLY_SKILLS_PATH, then ~/.claude/skills.
99
+ */
100
+ export function getSkillsPathDefault() {
101
+ return (getConfigValue('SKILLS_PATH') ||
102
+ getConfigValue('BLUEFLY_SKILLS_PATH') ||
103
+ process.env.SKILLS_PATH ||
104
+ process.env.BLUEFLY_SKILLS_PATH ||
105
+ (process.env.HOME ? `${process.env.HOME}/.claude/skills` : '.claude/skills'));
106
+ }
107
+ //# sourceMappingURL=cli-config.js.map
File without changes
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluefly/openstandardagents",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "exports": {
5
5
  "./schema": "./spec/v0.4/agent.schema.json",
6
6
  "./schema/v0.4": "./spec/v0.4/agent.schema.json",
@@ -114,7 +114,6 @@
114
114
  "files": [
115
115
  "dist/",
116
116
  "!dist/dev-cli/",
117
- "!dist/services/release-automation/",
118
117
  "!dist/sdks/python-generator/",
119
118
  "!dist/sdks/typescript/",
120
119
  "!dist/**/*.js.map",
@@ -143,7 +142,7 @@
143
142
  },
144
143
  "homepage": "https://openstandardagents.org",
145
144
  "scripts": {
146
- "// ─────────────────────────────────────────────────────────────────────────────": "",
145
+ "// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500": "",
147
146
  "// BUILD & DEVELOPMENT": "",
148
147
  "mcp": "node dist/mcp-server/index.js",
149
148
  "prebuild": "npm run docs:process",
@@ -227,7 +226,7 @@
227
226
  "prepare": "lefthook install || true",
228
227
  "postinstall": "node bin/postinstall || true",
229
228
  "// RELEASE & PUBLISH": "",
230
- "prepublishOnly": "publint && npm run build",
229
+ "prepublishOnly": "publint && npm run test:unit && npm run build",
231
230
  "validate:deps": "depcheck --ignore-dirs=examples --ignores='@anthropic-ai/claude-agent-sdk,@langchain/openai,@openai/agents,@temporalio/activity,@temporalio/workflow,pino-pretty,readline,@types/*,ts-jest,eslint*,prettier*,lefthook,jest*,vitest,semantic-release*,@semantic-release/*,keep-a-changelog,jest-junit,publint,conventional-changelog-conventionalcommits,ajv-cli,json-schema-to-typescript,json-schema-to-zod,ts-node,@playwright/test,@langchain/anthropic,@langchain/core,langchain'",
232
231
  "validate:package": "publint",
233
232
  "publish:dry-run": "npm publish --dry-run",
@@ -350,15 +349,15 @@
350
349
  "ajv-formats"
351
350
  ],
352
351
  "engines": {
353
- "node": ">=16.20.0 || >=18.0.0 || >=20.0.0 || >=22.0.0",
354
- "npm": ">=8.0.0"
352
+ "node": ">=20.0.0",
353
+ "npm": ">=10.0.0"
355
354
  },
356
355
  "volta": {
357
- "node": "18.20.8",
358
- "npm": "10.9.4"
356
+ "node": "22.19.0",
357
+ "npm": "11.10.0"
359
358
  },
360
359
  "bundleDependencies": [
361
360
  "ajv",
362
361
  "ajv-formats"
363
362
  ]
364
- }
363
+ }
@@ -1,3 +1,4 @@
1
+ import { SPEC_VERSION } from '../../version.js';
1
2
  /**
2
3
  * Cedar Governance Provider
3
4
  *
@@ -7,7 +8,7 @@
7
8
  */
8
9
  export class CedarGovernanceProvider {
9
10
  name = 'cedar';
10
- version = 'v0.4.6';
11
+ version = `v${SPEC_VERSION}`;
11
12
  /**
12
13
  * Checks if the agent's governance config satisfies basic Cedar alignment.
13
14
  * e.g., missing clearance levels when policies require them.
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Base CRUD Service
3
+ * DRY: Reusable CRUD operations for all release automation entities
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Generic CRUD operations interface
8
+ */
9
+ export interface ICrudService<T, CreateInput, UpdateInput, FilterInput> {
10
+ /**
11
+ * Create a new entity
12
+ */
13
+ create(input: CreateInput): Promise<T>;
14
+ /**
15
+ * Read entity by ID
16
+ */
17
+ read(id: string | number): Promise<T | null>;
18
+ /**
19
+ * Update entity
20
+ */
21
+ update(id: string | number, input: UpdateInput): Promise<T>;
22
+ /**
23
+ * Delete entity
24
+ */
25
+ delete(id: string | number): Promise<void>;
26
+ /**
27
+ * List entities with filtering and pagination
28
+ */
29
+ list(filters?: FilterInput): Promise<{
30
+ items: T[];
31
+ pagination: {
32
+ page: number;
33
+ perPage: number;
34
+ total: number;
35
+ totalPages: number;
36
+ };
37
+ }>;
38
+ }
39
+ /**
40
+ * Base CRUD Service Implementation
41
+ * DRY: Provides common CRUD operations
42
+ */
43
+ export declare abstract class BaseCrudService<T, CreateInput, UpdateInput, FilterInput> implements ICrudService<T, CreateInput, UpdateInput, FilterInput> {
44
+ protected abstract createSchema: z.ZodSchema<CreateInput>;
45
+ protected abstract updateSchema: z.ZodSchema<UpdateInput> | z.ZodNever;
46
+ protected abstract filterSchema: z.ZodSchema<FilterInput>;
47
+ protected abstract entitySchema: z.ZodSchema<T>;
48
+ /**
49
+ * Validate and parse input using Zod
50
+ */
51
+ protected validateCreate(input: unknown): CreateInput;
52
+ protected validateUpdate(input: unknown): UpdateInput;
53
+ protected validateFilter(input: unknown): FilterInput;
54
+ protected validateEntity(entity: unknown): T;
55
+ /**
56
+ * Abstract methods to be implemented by subclasses
57
+ */
58
+ abstract create(input: CreateInput): Promise<T>;
59
+ abstract read(id: string | number): Promise<T | null>;
60
+ abstract update(id: string | number, input: UpdateInput): Promise<T>;
61
+ abstract delete(id: string | number): Promise<void>;
62
+ abstract list(filters?: FilterInput): Promise<{
63
+ items: T[];
64
+ pagination: {
65
+ page: number;
66
+ perPage: number;
67
+ total: number;
68
+ totalPages: number;
69
+ };
70
+ }>;
71
+ /**
72
+ * Helper: Calculate pagination metadata
73
+ */
74
+ protected calculatePagination(total: number, page: number, perPage: number): {
75
+ page: number;
76
+ perPage: number;
77
+ total: number;
78
+ totalPages: number;
79
+ };
80
+ /**
81
+ * Helper: Validate ID format
82
+ */
83
+ protected validateId(id: string | number): void;
84
+ /**
85
+ * Helper: Handle not found errors
86
+ */
87
+ protected throwNotFound(resource: string, id: string | number): never;
88
+ /**
89
+ * Helper: Handle validation errors
90
+ */
91
+ protected handleValidationError(error: unknown): never;
92
+ }
93
+ //# sourceMappingURL=base-crud.service.d.ts.map