@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
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Base CRUD Service
3
+ * DRY: Reusable CRUD operations for all release automation entities
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Base CRUD Service Implementation
8
+ * DRY: Provides common CRUD operations
9
+ */
10
+ export class BaseCrudService {
11
+ /**
12
+ * Validate and parse input using Zod
13
+ */
14
+ validateCreate(input) {
15
+ return this.createSchema.parse(input);
16
+ }
17
+ validateUpdate(input) {
18
+ return this.updateSchema.parse(input);
19
+ }
20
+ validateFilter(input) {
21
+ return this.filterSchema.parse(input || {});
22
+ }
23
+ validateEntity(entity) {
24
+ return this.entitySchema.parse(entity);
25
+ }
26
+ /**
27
+ * Helper: Calculate pagination metadata
28
+ */
29
+ calculatePagination(total, page, perPage) {
30
+ return {
31
+ page,
32
+ perPage,
33
+ total,
34
+ totalPages: Math.ceil(total / perPage),
35
+ };
36
+ }
37
+ /**
38
+ * Helper: Validate ID format
39
+ */
40
+ validateId(id) {
41
+ if (typeof id === 'string' && id.length === 0) {
42
+ throw new Error('ID cannot be empty');
43
+ }
44
+ if (typeof id === 'number' && id <= 0) {
45
+ throw new Error('ID must be positive');
46
+ }
47
+ }
48
+ /**
49
+ * Helper: Handle not found errors
50
+ */
51
+ throwNotFound(resource, id) {
52
+ throw new Error(`${resource} with ID ${id} not found`);
53
+ }
54
+ /**
55
+ * Helper: Handle validation errors
56
+ */
57
+ handleValidationError(error) {
58
+ if (error instanceof z.ZodError) {
59
+ const details = error.issues.map((e) => ({
60
+ path: e.path.join('.'),
61
+ message: e.message,
62
+ }));
63
+ throw new Error(`Validation failed: ${details.map((d) => d.message).join(', ')}`);
64
+ }
65
+ throw error;
66
+ }
67
+ }
68
+ //# sourceMappingURL=base-crud.service.js.map
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Automated Changelog Generator from Milestone Issues
4
+ * Generates changelog from closed issues in a milestone
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=generate-changelog.d.ts.map
@@ -0,0 +1,288 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Automated Changelog Generator from Milestone Issues
4
+ * Generates changelog from closed issues in a milestone
5
+ */
6
+ import { Gitlab } from '@gitbeaker/rest';
7
+ import { writeFileSync } from 'fs';
8
+ import { execSync } from 'child_process';
9
+ // CI_SERVER_HOST is just 'gitlab.com' without protocol - ensure we have the full URL
10
+ const gitlabHost = process.env.CI_SERVER_HOST
11
+ ? process.env.CI_SERVER_HOST.startsWith('http')
12
+ ? process.env.CI_SERVER_HOST
13
+ : `https://${process.env.CI_SERVER_HOST}`
14
+ : 'https://gitlab.com';
15
+ const gitlab = new Gitlab({
16
+ host: gitlabHost,
17
+ token: process.env.GITLAB_PUSH_TOKEN || process.env.CI_JOB_TOKEN,
18
+ });
19
+ const projectId = process.env.CI_PROJECT_ID;
20
+ /**
21
+ * Categorize issues by type based on labels and title
22
+ */
23
+ function categorizeIssue(issue) {
24
+ const title = issue.title.toLowerCase();
25
+ const labels = issue.labels.map((l) => l.toLowerCase());
26
+ // Check labels first
27
+ if (labels.some((l) => l.includes('breaking')))
28
+ return 'breaking';
29
+ if (labels.some((l) => l.includes('feature') || l.includes('enhancement')))
30
+ return 'features';
31
+ if (labels.some((l) => l.includes('bug') || l.includes('fix')))
32
+ return 'fixes';
33
+ if (labels.some((l) => l.includes('security')))
34
+ return 'security';
35
+ if (labels.some((l) => l.includes('performance')))
36
+ return 'performance';
37
+ if (labels.some((l) => l.includes('documentation') || l.includes('docs')))
38
+ return 'documentation';
39
+ if (labels.some((l) => l.includes('deprecation')))
40
+ return 'deprecations';
41
+ // Check title patterns
42
+ if (title.startsWith('feat:') || title.startsWith('feature:'))
43
+ return 'features';
44
+ if (title.startsWith('fix:'))
45
+ return 'fixes';
46
+ if (title.startsWith('docs:'))
47
+ return 'documentation';
48
+ if (title.startsWith('perf:'))
49
+ return 'performance';
50
+ if (title.startsWith('security:'))
51
+ return 'security';
52
+ return 'other';
53
+ }
54
+ /**
55
+ * Generate emoji for category
56
+ */
57
+ function getCategoryEmoji(category) {
58
+ const emojiMap = {
59
+ breaking: '💥',
60
+ features: '✨',
61
+ fixes: '🐛',
62
+ security: '🔒',
63
+ performance: '⚡',
64
+ documentation: '📚',
65
+ deprecations: '⚠️',
66
+ other: '🔧',
67
+ };
68
+ return emojiMap[category] || '🔧';
69
+ }
70
+ /**
71
+ * Get category title
72
+ */
73
+ function getCategoryTitle(category) {
74
+ const titleMap = {
75
+ breaking: 'Breaking Changes',
76
+ features: 'Features',
77
+ fixes: 'Bug Fixes',
78
+ security: 'Security',
79
+ performance: 'Performance',
80
+ documentation: 'Documentation',
81
+ deprecations: 'Deprecations',
82
+ other: 'Other Changes',
83
+ };
84
+ return titleMap[category] || 'Other Changes';
85
+ }
86
+ /**
87
+ * Fetch all issues for a milestone
88
+ */
89
+ async function fetchMilestoneIssues(milestoneId) {
90
+ try {
91
+ const issues = (await gitlab.Issues.all({
92
+ projectId,
93
+ milestoneId: milestoneId.toString(),
94
+ state: 'closed',
95
+ perPage: 100,
96
+ }));
97
+ return issues.map((issue) => ({
98
+ iid: issue.iid,
99
+ title: issue.title,
100
+ labels: issue.labels || [],
101
+ web_url: issue.web_url,
102
+ author: issue.author,
103
+ closed_at: issue.closed_at,
104
+ }));
105
+ }
106
+ catch (error) {
107
+ console.error('Error fetching milestone issues:', error);
108
+ return [];
109
+ }
110
+ }
111
+ /**
112
+ * Fetch milestone data
113
+ */
114
+ async function fetchMilestone(milestoneId) {
115
+ try {
116
+ const milestone = (await gitlab.ProjectMilestones.show(projectId, milestoneId));
117
+ return {
118
+ id: milestone.id,
119
+ title: milestone.title,
120
+ description: milestone.description || '',
121
+ state: milestone.state,
122
+ due_date: milestone.due_date,
123
+ web_url: milestone.web_url,
124
+ };
125
+ }
126
+ catch (error) {
127
+ console.error('Error fetching milestone:', error);
128
+ return null;
129
+ }
130
+ }
131
+ /**
132
+ * Generate changelog content
133
+ */
134
+ function generateChangelog(milestone, issues, version) {
135
+ const releaseDate = new Date().toISOString().split('T')[0];
136
+ // Group issues by category
137
+ const categorized = {};
138
+ issues.forEach((issue) => {
139
+ const category = categorizeIssue(issue);
140
+ if (!categorized[category]) {
141
+ categorized[category] = [];
142
+ }
143
+ categorized[category].push(issue);
144
+ });
145
+ // Sort categories by importance
146
+ const categoryOrder = [
147
+ 'breaking',
148
+ 'security',
149
+ 'features',
150
+ 'fixes',
151
+ 'performance',
152
+ 'deprecations',
153
+ 'documentation',
154
+ 'other',
155
+ ];
156
+ let changelog = `# Changelog - v${version}\n\n`;
157
+ changelog += `**Release Date:** ${releaseDate}\n\n`;
158
+ changelog += `**Milestone:** [${milestone.title}](${milestone.web_url})\n\n`;
159
+ if (milestone.description) {
160
+ changelog += `## Overview\n\n${milestone.description}\n\n`;
161
+ }
162
+ changelog += `## What's Changed\n\n`;
163
+ // Generate sections for each category
164
+ categoryOrder.forEach((category) => {
165
+ if (categorized[category] && categorized[category].length > 0) {
166
+ const emoji = getCategoryEmoji(category);
167
+ const title = getCategoryTitle(category);
168
+ changelog += `### ${emoji} ${title}\n\n`;
169
+ categorized[category].forEach((issue) => {
170
+ const cleanTitle = issue.title
171
+ .replace(/^(feat|fix|docs|perf|security|chore|refactor|test|build|ci):\s*/i, '')
172
+ .trim();
173
+ changelog += `- ${cleanTitle} ([#${issue.iid}](${issue.web_url}))\n`;
174
+ });
175
+ changelog += `\n`;
176
+ }
177
+ });
178
+ // Add statistics
179
+ changelog += `## Statistics\n\n`;
180
+ changelog += `- **Total Issues Closed:** ${issues.length}\n`;
181
+ const contributors = new Set(issues.map((i) => i.author.username));
182
+ changelog += `- **Contributors:** ${contributors.size}\n`;
183
+ if (milestone.due_date) {
184
+ changelog += `- **Planned Release Date:** ${milestone.due_date}\n`;
185
+ }
186
+ changelog += `- **Actual Release Date:** ${releaseDate}\n\n`;
187
+ // Add contributors list
188
+ if (contributors.size > 0) {
189
+ changelog += `## Contributors\n\n`;
190
+ changelog += `Thanks to all contributors who made this release possible:\n\n`;
191
+ Array.from(contributors)
192
+ .sort()
193
+ .forEach((username) => {
194
+ changelog += `- @${username}\n`;
195
+ });
196
+ changelog += `\n`;
197
+ }
198
+ // Add links
199
+ changelog += `## Links\n\n`;
200
+ changelog += `- [Milestone](${milestone.web_url})\n`;
201
+ changelog += `- [Full Changelog](https://gitlab.com/${process.env.CI_PROJECT_PATH}/-/compare/v${getPreviousVersion(version)}...v${version})\n`;
202
+ changelog += `- [npm Package](https://www.npmjs.com/package/@bluefly/openstandardagents/v/${version})\n`;
203
+ changelog += `- [Documentation](https://openstandardagents.org/)\n`;
204
+ return changelog;
205
+ }
206
+ /**
207
+ * Get previous version (simple implementation)
208
+ */
209
+ function getPreviousVersion(version) {
210
+ try {
211
+ const tags = execSync('git tag --sort=-version:refname')
212
+ .toString()
213
+ .trim()
214
+ .split('\n')
215
+ .filter((tag) => tag.startsWith('v') && tag !== `v${version}`);
216
+ return tags[0] || '0.0.0';
217
+ }
218
+ catch (error) {
219
+ return '0.0.0';
220
+ }
221
+ }
222
+ /**
223
+ * Main execution
224
+ */
225
+ async function main() {
226
+ const milestoneId = process.env.MILESTONE_ID || process.env.CI_MILESTONE_ID;
227
+ const version = process.env.RELEASE_VERSION || process.env.CI_COMMIT_TAG?.replace(/^v/, '');
228
+ const outputPath = process.env.CHANGELOG_OUTPUT || './RELEASE_NOTES.md';
229
+ if (!milestoneId) {
230
+ console.error('❌ ERROR: MILESTONE_ID not set');
231
+ process.exit(1);
232
+ }
233
+ if (!version) {
234
+ console.error('❌ ERROR: RELEASE_VERSION not set');
235
+ process.exit(1);
236
+ }
237
+ console.log('📝 Generating Changelog');
238
+ console.log('======================');
239
+ console.log(`Milestone ID: ${milestoneId}`);
240
+ console.log(`Version: v${version}`);
241
+ console.log('');
242
+ // Fetch milestone data
243
+ console.log('Fetching milestone data...');
244
+ const milestone = await fetchMilestone(parseInt(milestoneId));
245
+ if (!milestone) {
246
+ console.error('❌ ERROR: Failed to fetch milestone');
247
+ process.exit(1);
248
+ }
249
+ console.log(`Milestone: ${milestone.title}`);
250
+ console.log(`State: ${milestone.state}`);
251
+ console.log('');
252
+ // Fetch issues
253
+ console.log('Fetching closed issues...');
254
+ const issues = await fetchMilestoneIssues(parseInt(milestoneId));
255
+ console.log(`Found ${issues.length} closed issues`);
256
+ console.log('');
257
+ if (issues.length === 0) {
258
+ console.warn('⚠️ WARNING: No closed issues found in milestone');
259
+ }
260
+ // Generate changelog
261
+ console.log('Generating changelog...');
262
+ const changelog = generateChangelog(milestone, issues, version);
263
+ // Write to file
264
+ writeFileSync(outputPath, changelog, 'utf-8');
265
+ console.log(`✅ Changelog written to: ${outputPath}`);
266
+ console.log('');
267
+ console.log('Preview:');
268
+ console.log('--------');
269
+ console.log(changelog);
270
+ // Also export to environment
271
+ console.log('');
272
+ console.log('Exported environment variables:');
273
+ console.log(`CHANGELOG_PATH=${outputPath}`);
274
+ console.log(`ISSUE_COUNT=${issues.length}`);
275
+ console.log(`MILESTONE_TITLE=${milestone.title}`);
276
+ // Write dotenv file for GitLab CI
277
+ const envContent = `CHANGELOG_PATH=${outputPath}
278
+ ISSUE_COUNT=${issues.length}
279
+ MILESTONE_TITLE=${milestone.title}
280
+ MILESTONE_URL=${milestone.web_url}
281
+ `;
282
+ writeFileSync('changelog.env', envContent, 'utf-8');
283
+ }
284
+ main().catch((error) => {
285
+ console.error('❌ Changelog generation failed:', error);
286
+ process.exit(1);
287
+ });
288
+ //# sourceMappingURL=generate-changelog.js.map
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Auto-increment dev tag on successful merge to development
4
+ * Runs in CI after merge
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=increment-dev-tag.d.ts.map
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Auto-increment dev tag on successful merge to development
4
+ * Runs in CI after merge
5
+ */
6
+ import { Gitlab } from '@gitbeaker/rest';
7
+ import { execSync } from 'child_process';
8
+ const gitlab = new Gitlab({
9
+ token: process.env.GITLAB_TOKEN || process.env.CI_JOB_TOKEN,
10
+ });
11
+ async function incrementDevTag() {
12
+ const projectId = process.env.CI_PROJECT_ID;
13
+ const commitSha = process.env.CI_COMMIT_SHA;
14
+ const commitMessage = process.env.CI_COMMIT_MESSAGE || '';
15
+ const commitAuthor = process.env.GITLAB_USER_NAME || 'GitLab CI';
16
+ const pipelineUrl = process.env.CI_PIPELINE_URL || '';
17
+ // Get current milestone from package.json
18
+ const packageJson = JSON.parse(execSync('cat package.json').toString());
19
+ const version = packageJson.version; // e.g., "0.2.6-dev.5"
20
+ if (!version.includes('-dev.')) {
21
+ console.log('Not a dev version, skipping');
22
+ return;
23
+ }
24
+ // Extract base version and increment
25
+ const [baseVersion, devPart] = version.split('-dev.');
26
+ const currentNum = parseInt(devPart);
27
+ const nextNum = currentNum + 1;
28
+ const nextVersion = `${baseVersion}-dev.${nextNum}`;
29
+ const tagName = `v${nextVersion}`;
30
+ // Get commit details for rich tag description
31
+ const commitDate = new Date().toISOString();
32
+ const shortSha = commitSha.substring(0, 8);
33
+ // Get recent commits since last tag
34
+ let recentCommits = '';
35
+ try {
36
+ const lastTag = `v${baseVersion}-dev.${currentNum}`;
37
+ recentCommits = execSync(`git log ${lastTag}..HEAD --oneline --no-merges`)
38
+ .toString()
39
+ .trim();
40
+ }
41
+ catch {
42
+ recentCommits = execSync('git log -5 --oneline --no-merges')
43
+ .toString()
44
+ .trim();
45
+ }
46
+ // Create rich tag description
47
+ const tagDescription = `# Development Release ${tagName}
48
+
49
+ **Auto-generated development tag** - ${commitDate}
50
+
51
+ ## 📦 Version Information
52
+ - **Version**: ${nextVersion}
53
+ - **Base Version**: ${baseVersion}
54
+ - **Dev Iteration**: ${nextNum}
55
+ - **Commit**: ${shortSha}
56
+ - **Author**: ${commitAuthor}
57
+
58
+ ## 🔗 Links
59
+ - **Pipeline**: ${pipelineUrl}
60
+ - **Commit**: https://gitlab.com/blueflyio/openstandardagents/-/commit/${commitSha}
61
+
62
+ ## 📝 Recent Changes
63
+ \`\`\`
64
+ ${recentCommits}
65
+ \`\`\`
66
+
67
+ ## ⚠️ Development Release
68
+ This is a development release and should not be used in production.
69
+ - Not published to npm
70
+ - May contain breaking changes
71
+ - For testing and development only
72
+
73
+ ## 🚀 Next Steps
74
+ When milestone is complete and closed:
75
+ 1. RC tag will be created automatically
76
+ 2. MR to main will be created
77
+ 3. After approval, production release will be triggered
78
+ `;
79
+ // Create new tag (correct API signature: projectId, tagName, ref, options)
80
+ await gitlab.Tags.create(projectId, tagName, commitSha, {
81
+ message: tagDescription,
82
+ });
83
+ console.log(`✅ Created tag: ${tagName}`);
84
+ // Update package.json version
85
+ execSync(`npm version ${nextVersion} --no-git-tag-version`);
86
+ // Commit version bump
87
+ execSync('git config user.name "GitLab CI"');
88
+ execSync('git config user.email "ci@gitlab.com"');
89
+ execSync('git add package.json package-lock.json');
90
+ execSync(`git commit -m "chore: bump version to ${nextVersion} [skip ci]"`);
91
+ execSync('git push origin development');
92
+ console.log(`✅ Bumped version to: ${nextVersion}`);
93
+ // Check if milestone is complete and create MR if needed
94
+ await checkMilestoneAndCreateMR(projectId, baseVersion);
95
+ }
96
+ async function checkMilestoneAndCreateMR(projectId, version) {
97
+ try {
98
+ // Find milestone for this version
99
+ const milestones = await gitlab.ProjectMilestones.all(projectId, {
100
+ state: 'closed',
101
+ search: version,
102
+ });
103
+ if (milestones.length === 0) {
104
+ console.log('ℹ️ No closed milestone found, skipping MR creation');
105
+ return;
106
+ }
107
+ const milestone = milestones[0];
108
+ // Check if MR already exists
109
+ const existingMRs = await gitlab.MergeRequests.all({
110
+ projectId,
111
+ sourceBranch: 'development',
112
+ targetBranch: 'main',
113
+ state: 'opened',
114
+ });
115
+ if (existingMRs.length > 0) {
116
+ console.log('ℹ️ MR already exists, skipping');
117
+ return;
118
+ }
119
+ // Create MR to main
120
+ const mr = await gitlab.MergeRequests.create(projectId, 'development', 'main', `Release ${version}`, {
121
+ description: `## 🚀 Release ${version}
122
+
123
+ **Milestone**: ${milestone.title}
124
+ **Status**: Ready for Release
125
+
126
+ ### ✅ Pre-Release Checklist
127
+ - [x] All milestone issues closed
128
+ - [x] All tests passing
129
+ - [x] Security scans passed
130
+ - [x] Documentation updated
131
+ - [x] Changelog updated
132
+
133
+ ### 📋 Approval Required
134
+ - [ ] Technical Lead approval
135
+ - [ ] Security Lead approval
136
+ - [ ] Product Owner approval
137
+ - [ ] Release Manager approval
138
+
139
+ ### 🎯 Release Actions (Manual Triggers)
140
+ After all approvals, use pipeline buttons to:
141
+ 1. 🚀 Release to npm
142
+ 2. 🐙 Release to GitHub
143
+ 3. 🌐 Deploy Website
144
+ 4. 📢 Announce Release
145
+
146
+ **DO NOT MERGE MANUALLY** - This MR will auto-merge after successful release.
147
+ `,
148
+ removeSourceBranch: false,
149
+ squash: false,
150
+ labels: 'release,automation',
151
+ milestoneId: milestone.id,
152
+ });
153
+ console.log(`✅ Created MR: !${mr.iid} - ${mr.web_url}`);
154
+ }
155
+ catch (error) {
156
+ console.log('ℹ️ Could not create MR:', error);
157
+ }
158
+ }
159
+ incrementDevTag().catch(console.error);
160
+ //# sourceMappingURL=increment-dev-tag.js.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Release Automation - Main Export
3
+ * CRUD, DRY, OpenAPI, Zod-based release automation system
4
+ */
5
+ export * from './schemas/release.schema.js';
6
+ export * from './base-crud.service.js';
7
+ export * from './release.service.js';
8
+ export * from './milestone.service.js';
9
+ export * from './tag.service.js';
10
+ export * from './merge-request.service.js';
11
+ export * from './webhook.service.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Release Automation - Main Export
3
+ * CRUD, DRY, OpenAPI, Zod-based release automation system
4
+ */
5
+ export * from './schemas/release.schema.js';
6
+ export * from './base-crud.service.js';
7
+ export * from './release.service.js';
8
+ export * from './milestone.service.js';
9
+ export * from './tag.service.js';
10
+ export * from './merge-request.service.js';
11
+ export * from './webhook.service.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Merge Request CRUD Service
3
+ * Implements full CRUD operations for merge requests
4
+ */
5
+ import { type MergeRequest, type CreateMergeRequestRequest, type UpdateMergeRequestRequest } from './schemas/release.schema.js';
6
+ import { BaseCrudService } from './base-crud.service.js';
7
+ import { z } from 'zod';
8
+ /**
9
+ * Merge Request Filter Input
10
+ */
11
+ declare const MergeRequestFilterSchema: z.ZodObject<{
12
+ state: z.ZodOptional<z.ZodEnum<{
13
+ closed: "closed";
14
+ opened: "opened";
15
+ merged: "merged";
16
+ locked: "locked";
17
+ }>>;
18
+ page: z.ZodDefault<z.ZodNumber>;
19
+ perPage: z.ZodDefault<z.ZodNumber>;
20
+ }, z.core.$strip>;
21
+ type MergeRequestFilter = z.infer<typeof MergeRequestFilterSchema>;
22
+ /**
23
+ * Merge Request Service - CRUD operations
24
+ */
25
+ export declare class MergeRequestService extends BaseCrudService<MergeRequest, CreateMergeRequestRequest, UpdateMergeRequestRequest, MergeRequestFilter> {
26
+ protected createSchema: z.ZodObject<{
27
+ sourceBranch: z.ZodString;
28
+ targetBranch: z.ZodString;
29
+ title: z.ZodString;
30
+ description: z.ZodOptional<z.ZodString>;
31
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
32
+ milestoneId: z.ZodOptional<z.ZodNumber>;
33
+ }, z.core.$strip>;
34
+ protected updateSchema: z.ZodObject<{
35
+ title: z.ZodOptional<z.ZodString>;
36
+ description: z.ZodOptional<z.ZodString>;
37
+ state: z.ZodOptional<z.ZodEnum<{
38
+ closed: "closed";
39
+ opened: "opened";
40
+ merged: "merged";
41
+ locked: "locked";
42
+ }>>;
43
+ labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
44
+ }, z.core.$strip>;
45
+ protected filterSchema: z.ZodObject<{
46
+ state: z.ZodOptional<z.ZodEnum<{
47
+ closed: "closed";
48
+ opened: "opened";
49
+ merged: "merged";
50
+ locked: "locked";
51
+ }>>;
52
+ page: z.ZodDefault<z.ZodNumber>;
53
+ perPage: z.ZodDefault<z.ZodNumber>;
54
+ }, z.core.$strip>;
55
+ protected entitySchema: z.ZodObject<{
56
+ id: z.ZodNumber;
57
+ title: z.ZodString;
58
+ description: z.ZodOptional<z.ZodString>;
59
+ sourceBranch: z.ZodString;
60
+ targetBranch: z.ZodString;
61
+ state: z.ZodEnum<{
62
+ closed: "closed";
63
+ opened: "opened";
64
+ merged: "merged";
65
+ locked: "locked";
66
+ }>;
67
+ mergeStatus: z.ZodOptional<z.ZodEnum<{
68
+ can_be_merged: "can_be_merged";
69
+ cannot_be_merged: "cannot_be_merged";
70
+ checking: "checking";
71
+ unchecked: "unchecked";
72
+ }>>;
73
+ createdAt: z.ZodString;
74
+ updatedAt: z.ZodString;
75
+ mergedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
77
+ approvals: z.ZodDefault<z.ZodObject<{
78
+ required: z.ZodDefault<z.ZodNumber>;
79
+ received: z.ZodDefault<z.ZodNumber>;
80
+ }, z.core.$strip>>;
81
+ }, z.core.$strip>;
82
+ private gitlab;
83
+ private projectId;
84
+ constructor(gitlabToken: string, projectId?: string | number);
85
+ /**
86
+ * Create a new merge request
87
+ */
88
+ create(input: CreateMergeRequestRequest): Promise<MergeRequest>;
89
+ /**
90
+ * Read merge request by ID
91
+ */
92
+ read(id: string | number): Promise<MergeRequest | null>;
93
+ /**
94
+ * Update merge request
95
+ */
96
+ update(id: string | number, input: UpdateMergeRequestRequest): Promise<MergeRequest>;
97
+ /**
98
+ * Delete merge request
99
+ */
100
+ delete(id: string | number): Promise<void>;
101
+ /**
102
+ * List merge requests with filtering and pagination
103
+ */
104
+ list(filters?: MergeRequestFilter): Promise<{
105
+ items: MergeRequest[];
106
+ pagination: {
107
+ page: number;
108
+ perPage: number;
109
+ total: number;
110
+ totalPages: number;
111
+ };
112
+ }>;
113
+ /**
114
+ * Helper: Get merge request approvals
115
+ */
116
+ private getApprovals;
117
+ }
118
+ export {};
119
+ //# sourceMappingURL=merge-request.service.d.ts.map