@bluefly/openstandardagents 0.4.4 → 0.4.5

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 (1075) hide show
  1. package/.version.json +3 -3
  2. package/CHANGELOG.md +302 -7
  3. package/README.md +470 -22
  4. package/dist/.version.json +7 -0
  5. package/dist/adapters/a2a/__tests__/mcp-integration.spec.d.ts +5 -0
  6. package/dist/adapters/a2a/__tests__/mcp-integration.spec.d.ts.map +1 -0
  7. package/dist/adapters/a2a/__tests__/mcp-integration.spec.js +267 -0
  8. package/dist/adapters/a2a/__tests__/mcp-integration.spec.js.map +1 -0
  9. package/dist/adapters/a2a/__tests__/mcp-transport.spec.d.ts +5 -0
  10. package/dist/adapters/a2a/__tests__/mcp-transport.spec.d.ts.map +1 -0
  11. package/dist/adapters/a2a/__tests__/mcp-transport.spec.js +202 -0
  12. package/dist/adapters/a2a/__tests__/mcp-transport.spec.js.map +1 -0
  13. package/dist/adapters/a2a/a2a-protocol.d.ts +398 -0
  14. package/dist/adapters/a2a/a2a-protocol.d.ts.map +1 -0
  15. package/dist/adapters/a2a/a2a-protocol.js +257 -0
  16. package/dist/adapters/a2a/a2a-protocol.js.map +1 -0
  17. package/dist/adapters/a2a/a2a-tool.d.ts +110 -0
  18. package/dist/adapters/a2a/a2a-tool.d.ts.map +1 -0
  19. package/dist/adapters/a2a/a2a-tool.js +349 -0
  20. package/dist/adapters/a2a/a2a-tool.js.map +1 -0
  21. package/dist/adapters/a2a/agent-mesh.d.ts +195 -0
  22. package/dist/adapters/a2a/agent-mesh.d.ts.map +1 -0
  23. package/dist/adapters/a2a/agent-mesh.js +347 -0
  24. package/dist/adapters/a2a/agent-mesh.js.map +1 -0
  25. package/dist/adapters/a2a/delegation.d.ts +232 -0
  26. package/dist/adapters/a2a/delegation.d.ts.map +1 -0
  27. package/dist/adapters/a2a/delegation.js +236 -0
  28. package/dist/adapters/a2a/delegation.js.map +1 -0
  29. package/dist/adapters/a2a/index.d.ts +18 -0
  30. package/dist/adapters/a2a/index.d.ts.map +1 -0
  31. package/dist/adapters/a2a/index.js +24 -0
  32. package/dist/adapters/a2a/index.js.map +1 -0
  33. package/dist/adapters/a2a/mcp-integration.d.ts +258 -0
  34. package/dist/adapters/a2a/mcp-integration.d.ts.map +1 -0
  35. package/dist/adapters/a2a/mcp-integration.js +328 -0
  36. package/dist/adapters/a2a/mcp-integration.js.map +1 -0
  37. package/dist/adapters/a2a/mcp-transport.d.ts +118 -0
  38. package/dist/adapters/a2a/mcp-transport.d.ts.map +1 -0
  39. package/dist/adapters/a2a/mcp-transport.js +287 -0
  40. package/dist/adapters/a2a/mcp-transport.js.map +1 -0
  41. package/dist/adapters/a2a/swarm-orchestration.d.ts +278 -0
  42. package/dist/adapters/a2a/swarm-orchestration.d.ts.map +1 -0
  43. package/dist/adapters/a2a/swarm-orchestration.js +322 -0
  44. package/dist/adapters/a2a/swarm-orchestration.js.map +1 -0
  45. package/dist/adapters/agent-skills/exporter.d.ts.map +1 -1
  46. package/dist/adapters/agent-skills/exporter.js +13 -6
  47. package/dist/adapters/agent-skills/exporter.js.map +1 -1
  48. package/dist/adapters/anthropic/claude-optimizations.d.ts.map +1 -1
  49. package/dist/adapters/anthropic/claude-optimizations.js +14 -7
  50. package/dist/adapters/anthropic/claude-optimizations.js.map +1 -1
  51. package/dist/adapters/anthropic/client.d.ts +33 -121
  52. package/dist/adapters/anthropic/client.d.ts.map +1 -1
  53. package/dist/adapters/anthropic/client.js +67 -334
  54. package/dist/adapters/anthropic/client.js.map +1 -1
  55. package/dist/adapters/anthropic/index.d.ts +4 -25
  56. package/dist/adapters/anthropic/index.d.ts.map +1 -1
  57. package/dist/adapters/anthropic/index.js +5 -25
  58. package/dist/adapters/anthropic/index.js.map +1 -1
  59. package/dist/adapters/anthropic/messages.d.ts +3 -3
  60. package/dist/adapters/anthropic/messages.d.ts.map +1 -1
  61. package/dist/adapters/anthropic/messages.js +60 -99
  62. package/dist/adapters/anthropic/messages.js.map +1 -1
  63. package/dist/adapters/anthropic/tools.d.ts +0 -15
  64. package/dist/adapters/anthropic/tools.d.ts.map +1 -1
  65. package/dist/adapters/anthropic/tools.js +20 -84
  66. package/dist/adapters/anthropic/tools.js.map +1 -1
  67. package/dist/adapters/base/adapter.interface.d.ts +63 -2
  68. package/dist/adapters/base/adapter.interface.d.ts.map +1 -1
  69. package/dist/adapters/base/adapter.interface.js +34 -0
  70. package/dist/adapters/base/adapter.interface.js.map +1 -1
  71. package/dist/adapters/base/base-exporter.d.ts +108 -0
  72. package/dist/adapters/base/base-exporter.d.ts.map +1 -0
  73. package/dist/adapters/base/base-exporter.js +165 -0
  74. package/dist/adapters/base/base-exporter.js.map +1 -0
  75. package/dist/adapters/base/common-file-generator.d.ts +57 -0
  76. package/dist/adapters/base/common-file-generator.d.ts.map +1 -1
  77. package/dist/adapters/base/common-file-generator.js +106 -8
  78. package/dist/adapters/base/common-file-generator.js.map +1 -1
  79. package/dist/adapters/base/index.d.ts +3 -1
  80. package/dist/adapters/base/index.d.ts.map +1 -1
  81. package/dist/adapters/base/index.js +5 -1
  82. package/dist/adapters/base/index.js.map +1 -1
  83. package/dist/adapters/base/manifest-validator.d.ts.map +1 -1
  84. package/dist/adapters/base/manifest-validator.js.map +1 -1
  85. package/dist/adapters/base/perfect-agent-utils.d.ts +29 -0
  86. package/dist/adapters/base/perfect-agent-utils.d.ts.map +1 -0
  87. package/dist/adapters/base/perfect-agent-utils.js +234 -0
  88. package/dist/adapters/base/perfect-agent-utils.js.map +1 -0
  89. package/dist/adapters/base/tool-params.d.ts +42 -0
  90. package/dist/adapters/base/tool-params.d.ts.map +1 -0
  91. package/dist/adapters/base/tool-params.js +123 -0
  92. package/dist/adapters/base/tool-params.js.map +1 -0
  93. package/dist/adapters/claude-code/adapter.d.ts +64 -0
  94. package/dist/adapters/claude-code/adapter.d.ts.map +1 -0
  95. package/dist/adapters/claude-code/adapter.js +336 -0
  96. package/dist/adapters/claude-code/adapter.js.map +1 -0
  97. package/dist/adapters/claude-code/types.d.ts +154 -0
  98. package/dist/adapters/claude-code/types.d.ts.map +1 -0
  99. package/dist/adapters/claude-code/types.js +6 -0
  100. package/dist/adapters/claude-code/types.js.map +1 -0
  101. package/dist/adapters/crewai/adapter.d.ts +1 -0
  102. package/dist/adapters/crewai/adapter.d.ts.map +1 -1
  103. package/dist/adapters/crewai/adapter.js +72 -45
  104. package/dist/adapters/crewai/adapter.js.map +1 -1
  105. package/dist/adapters/crewai/converter.d.ts.map +1 -1
  106. package/dist/adapters/crewai/converter.js +3 -4
  107. package/dist/adapters/crewai/converter.js.map +1 -1
  108. package/dist/adapters/cursor/adapter.d.ts +75 -0
  109. package/dist/adapters/cursor/adapter.d.ts.map +1 -0
  110. package/dist/adapters/cursor/adapter.js +474 -0
  111. package/dist/adapters/cursor/adapter.js.map +1 -0
  112. package/dist/adapters/cursor/types.d.ts +221 -0
  113. package/dist/adapters/cursor/types.d.ts.map +1 -0
  114. package/dist/adapters/cursor/types.js +6 -0
  115. package/dist/adapters/cursor/types.js.map +1 -0
  116. package/dist/adapters/docker/docker-exporter.d.ts.map +1 -1
  117. package/dist/adapters/docker/docker-exporter.js.map +1 -1
  118. package/dist/adapters/docker/generators.d.ts.map +1 -1
  119. package/dist/adapters/docker/generators.js +8 -3
  120. package/dist/adapters/docker/generators.js.map +1 -1
  121. package/dist/adapters/drupal/adapter.d.ts +1 -0
  122. package/dist/adapters/drupal/adapter.d.ts.map +1 -1
  123. package/dist/adapters/drupal/adapter.js +3 -0
  124. package/dist/adapters/drupal/adapter.js.map +1 -1
  125. package/dist/adapters/drupal/generator.d.ts +1 -0
  126. package/dist/adapters/drupal/generator.d.ts.map +1 -1
  127. package/dist/adapters/drupal/generator.js +3 -0
  128. package/dist/adapters/drupal/generator.js.map +1 -1
  129. package/dist/adapters/drupal/index.d.ts +0 -1
  130. package/dist/adapters/drupal/index.d.ts.map +1 -1
  131. package/dist/adapters/drupal/index.js +0 -2
  132. package/dist/adapters/drupal/index.js.map +1 -1
  133. package/dist/adapters/drupal/manifest-exporter.d.ts +22 -12
  134. package/dist/adapters/drupal/manifest-exporter.d.ts.map +1 -1
  135. package/dist/adapters/drupal/manifest-exporter.js +64 -18
  136. package/dist/adapters/drupal/manifest-exporter.js.map +1 -1
  137. package/dist/adapters/gitlab/agent-generator.js +2 -2
  138. package/dist/adapters/gitlab/agent-generator.js.map +1 -1
  139. package/dist/adapters/gitlab/external-agent-generator.d.ts.map +1 -1
  140. package/dist/adapters/gitlab/external-agent-generator.js +13 -4
  141. package/dist/adapters/gitlab/external-agent-generator.js.map +1 -1
  142. package/dist/adapters/gitlab/flow-generator.d.ts.map +1 -1
  143. package/dist/adapters/gitlab/flow-generator.js +55 -14
  144. package/dist/adapters/gitlab/flow-generator.js.map +1 -1
  145. package/dist/adapters/gitlab/package-generator.d.ts +19 -6
  146. package/dist/adapters/gitlab/package-generator.d.ts.map +1 -1
  147. package/dist/adapters/gitlab/package-generator.js +62 -87
  148. package/dist/adapters/gitlab/package-generator.js.map +1 -1
  149. package/dist/adapters/gitlab/router-generator.d.ts.map +1 -1
  150. package/dist/adapters/gitlab/router-generator.js +5 -1
  151. package/dist/adapters/gitlab/router-generator.js.map +1 -1
  152. package/dist/adapters/gitlab/trigger-generator.d.ts.map +1 -1
  153. package/dist/adapters/gitlab/trigger-generator.js +5 -5
  154. package/dist/adapters/gitlab/trigger-generator.js.map +1 -1
  155. package/dist/adapters/gitlab/types.d.ts.map +1 -1
  156. package/dist/adapters/gitlab-duo/adapter.d.ts +1 -0
  157. package/dist/adapters/gitlab-duo/adapter.d.ts.map +1 -1
  158. package/dist/adapters/gitlab-duo/adapter.js +3 -0
  159. package/dist/adapters/gitlab-duo/adapter.js.map +1 -1
  160. package/dist/adapters/index.d.ts.map +1 -1
  161. package/dist/adapters/index.js +12 -0
  162. package/dist/adapters/index.js.map +1 -1
  163. package/dist/adapters/kubernetes/generator.d.ts.map +1 -1
  164. package/dist/adapters/kubernetes/generator.js +6 -12
  165. package/dist/adapters/kubernetes/generator.js.map +1 -1
  166. package/dist/adapters/kubernetes/kagent-crd-generator.d.ts.map +1 -1
  167. package/dist/adapters/kubernetes/kagent-crd-generator.js.map +1 -1
  168. package/dist/adapters/langchain/adapter.d.ts +1 -0
  169. package/dist/adapters/langchain/adapter.d.ts.map +1 -1
  170. package/dist/adapters/langchain/adapter.js +4 -1
  171. package/dist/adapters/langchain/adapter.js.map +1 -1
  172. package/dist/adapters/langchain/converter.d.ts.map +1 -1
  173. package/dist/adapters/langchain/converter.js +1 -2
  174. package/dist/adapters/langchain/converter.js.map +1 -1
  175. package/dist/adapters/mcp/adapter.d.ts +12 -20
  176. package/dist/adapters/mcp/adapter.d.ts.map +1 -1
  177. package/dist/adapters/mcp/adapter.js +67 -216
  178. package/dist/adapters/mcp/adapter.js.map +1 -1
  179. package/dist/adapters/mcp/converter.d.ts +1 -0
  180. package/dist/adapters/mcp/converter.d.ts.map +1 -1
  181. package/dist/adapters/mcp/converter.js +5 -2
  182. package/dist/adapters/mcp/converter.js.map +1 -1
  183. package/dist/adapters/mobile-agent/adapter.d.ts +63 -0
  184. package/dist/adapters/mobile-agent/adapter.d.ts.map +1 -0
  185. package/dist/adapters/mobile-agent/adapter.js +678 -0
  186. package/dist/adapters/mobile-agent/adapter.js.map +1 -0
  187. package/dist/adapters/npm/adapter.d.ts +1 -0
  188. package/dist/adapters/npm/adapter.d.ts.map +1 -1
  189. package/dist/adapters/npm/adapter.js +11 -5
  190. package/dist/adapters/npm/adapter.js.map +1 -1
  191. package/dist/adapters/npm/converter.d.ts +6 -9
  192. package/dist/adapters/npm/converter.d.ts.map +1 -1
  193. package/dist/adapters/npm/converter.js +22 -68
  194. package/dist/adapters/npm/converter.js.map +1 -1
  195. package/dist/adapters/npm/package-generator.d.ts +93 -0
  196. package/dist/adapters/npm/package-generator.d.ts.map +1 -0
  197. package/dist/adapters/npm/package-generator.js +240 -0
  198. package/dist/adapters/npm/package-generator.js.map +1 -0
  199. package/dist/adapters/npm/type-aware-dependencies.d.ts.map +1 -1
  200. package/dist/adapters/npm/type-aware-dependencies.js +4 -2
  201. package/dist/adapters/npm/type-aware-dependencies.js.map +1 -1
  202. package/dist/adapters/openai-agents/adapter.d.ts +31 -0
  203. package/dist/adapters/openai-agents/adapter.d.ts.map +1 -0
  204. package/dist/adapters/openai-agents/adapter.js +344 -0
  205. package/dist/adapters/openai-agents/adapter.js.map +1 -0
  206. package/dist/adapters/openai-agents/index.d.ts +10 -0
  207. package/dist/adapters/openai-agents/index.d.ts.map +1 -0
  208. package/dist/adapters/openai-agents/index.js +10 -0
  209. package/dist/adapters/openai-agents/index.js.map +1 -0
  210. package/dist/adapters/opentelemetry.adapter.d.ts +8 -2
  211. package/dist/adapters/opentelemetry.adapter.d.ts.map +1 -1
  212. package/dist/adapters/opentelemetry.adapter.js +92 -11
  213. package/dist/adapters/opentelemetry.adapter.js.map +1 -1
  214. package/dist/adapters/registry/platform-registry.d.ts +1 -0
  215. package/dist/adapters/registry/platform-registry.d.ts.map +1 -1
  216. package/dist/adapters/registry/platform-registry.js +1 -0
  217. package/dist/adapters/registry/platform-registry.js.map +1 -1
  218. package/dist/adapters/warp/adapter.d.ts +52 -0
  219. package/dist/adapters/warp/adapter.d.ts.map +1 -0
  220. package/dist/adapters/warp/adapter.js +383 -0
  221. package/dist/adapters/warp/adapter.js.map +1 -0
  222. package/dist/adapters/warp/types.d.ts +140 -0
  223. package/dist/adapters/warp/types.d.ts.map +1 -0
  224. package/dist/adapters/warp/types.js +6 -0
  225. package/dist/adapters/warp/types.js.map +1 -0
  226. package/dist/bot/agent-compliance.js +1 -1
  227. package/dist/cli/banner.js +2 -2
  228. package/dist/cli/banner.js.map +1 -1
  229. package/dist/cli/commands/agent/discover-type.command.d.ts +39 -0
  230. package/dist/cli/commands/agent/discover-type.command.d.ts.map +1 -0
  231. package/dist/cli/commands/agent/discover-type.command.js +332 -0
  232. package/dist/cli/commands/agent/discover-type.command.js.map +1 -0
  233. package/dist/cli/commands/agent-card.command.d.ts +3 -9
  234. package/dist/cli/commands/agent-card.command.d.ts.map +1 -1
  235. package/dist/cli/commands/agent-card.command.js +109 -255
  236. package/dist/cli/commands/agent-card.command.js.map +1 -1
  237. package/dist/cli/commands/agent-wizard.command.d.ts.map +1 -1
  238. package/dist/cli/commands/agent-wizard.command.js +390 -0
  239. package/dist/cli/commands/agent-wizard.command.js.map +1 -1
  240. package/dist/cli/commands/agents-local.command.d.ts +10 -0
  241. package/dist/cli/commands/agents-local.command.d.ts.map +1 -0
  242. package/dist/cli/commands/agents-local.command.js +283 -0
  243. package/dist/cli/commands/agents-local.command.js.map +1 -0
  244. package/dist/cli/commands/agents-md.command.d.ts.map +1 -1
  245. package/dist/cli/commands/agents-md.command.js.map +1 -1
  246. package/dist/cli/commands/agents.command.d.ts +4 -4
  247. package/dist/cli/commands/agents.command.d.ts.map +1 -1
  248. package/dist/cli/commands/agents.command.js +5 -138
  249. package/dist/cli/commands/agents.command.js.map +1 -1
  250. package/dist/cli/commands/build.command.d.ts.map +1 -1
  251. package/dist/cli/commands/build.command.js +2 -26
  252. package/dist/cli/commands/build.command.js.map +1 -1
  253. package/dist/cli/commands/capability/create.command.d.ts +7 -0
  254. package/dist/cli/commands/capability/create.command.d.ts.map +1 -0
  255. package/dist/cli/commands/capability/create.command.js +225 -0
  256. package/dist/cli/commands/capability/create.command.js.map +1 -0
  257. package/dist/cli/commands/capability/index.d.ts +7 -0
  258. package/dist/cli/commands/capability/index.d.ts.map +1 -0
  259. package/dist/cli/commands/capability/index.js +10 -0
  260. package/dist/cli/commands/capability/index.js.map +1 -0
  261. package/dist/cli/commands/catalog/index.d.ts +0 -4
  262. package/dist/cli/commands/catalog/index.d.ts.map +1 -1
  263. package/dist/cli/commands/catalog/index.js +0 -12
  264. package/dist/cli/commands/catalog/index.js.map +1 -1
  265. package/dist/cli/commands/catalog/schemas.d.ts +1 -1
  266. package/dist/cli/commands/deploy-enhanced.command.js +1 -2
  267. package/dist/cli/commands/deploy-enhanced.command.js.map +1 -1
  268. package/dist/cli/commands/discover.d.ts.map +1 -1
  269. package/dist/cli/commands/discover.js +1 -1
  270. package/dist/cli/commands/discover.js.map +1 -1
  271. package/dist/cli/commands/export.command.d.ts.map +1 -1
  272. package/dist/cli/commands/export.command.js +312 -8
  273. package/dist/cli/commands/export.command.js.map +1 -1
  274. package/dist/cli/commands/framework.command.d.ts.map +1 -1
  275. package/dist/cli/commands/framework.command.js +2 -1
  276. package/dist/cli/commands/framework.command.js.map +1 -1
  277. package/dist/cli/commands/generate-gaid.command.d.ts.map +1 -1
  278. package/dist/cli/commands/generate-gaid.command.js.map +1 -1
  279. package/dist/cli/commands/import.command.d.ts.map +1 -1
  280. package/dist/cli/commands/import.command.js +11 -0
  281. package/dist/cli/commands/import.command.js.map +1 -1
  282. package/dist/cli/commands/init.command.d.ts.map +1 -1
  283. package/dist/cli/commands/init.command.js +12 -1
  284. package/dist/cli/commands/init.command.js.map +1 -1
  285. package/dist/cli/commands/manifest/diff.command.d.ts +7 -0
  286. package/dist/cli/commands/manifest/diff.command.d.ts.map +1 -0
  287. package/dist/cli/commands/manifest/diff.command.js +186 -0
  288. package/dist/cli/commands/manifest/diff.command.js.map +1 -0
  289. package/dist/cli/commands/manifest/explain.command.d.ts +7 -0
  290. package/dist/cli/commands/manifest/explain.command.d.ts.map +1 -0
  291. package/dist/cli/commands/manifest/explain.command.js +193 -0
  292. package/dist/cli/commands/manifest/explain.command.js.map +1 -0
  293. package/dist/cli/commands/manifest/index.d.ts +7 -0
  294. package/dist/cli/commands/manifest/index.d.ts.map +1 -0
  295. package/dist/cli/commands/manifest/index.js +12 -0
  296. package/dist/cli/commands/manifest/index.js.map +1 -0
  297. package/dist/cli/commands/migrate.command.d.ts +4 -1
  298. package/dist/cli/commands/migrate.command.d.ts.map +1 -1
  299. package/dist/cli/commands/migrate.command.js +56 -81
  300. package/dist/cli/commands/migrate.command.js.map +1 -1
  301. package/dist/cli/commands/register.d.ts.map +1 -1
  302. package/dist/cli/commands/register.js +46 -109
  303. package/dist/cli/commands/register.js.map +1 -1
  304. package/dist/cli/commands/rollback.command.d.ts.map +1 -1
  305. package/dist/cli/commands/rollback.command.js.map +1 -1
  306. package/dist/cli/commands/skills.command.d.ts.map +1 -1
  307. package/dist/cli/commands/skills.command.js +177 -0
  308. package/dist/cli/commands/skills.command.js.map +1 -1
  309. package/dist/cli/commands/tool/create.command.d.ts +12 -0
  310. package/dist/cli/commands/tool/create.command.d.ts.map +1 -0
  311. package/dist/cli/commands/tool/create.command.js +276 -0
  312. package/dist/cli/commands/tool/create.command.js.map +1 -0
  313. package/dist/cli/commands/tool/index.d.ts +7 -0
  314. package/dist/cli/commands/tool/index.d.ts.map +1 -0
  315. package/dist/cli/commands/tool/index.js +14 -0
  316. package/dist/cli/commands/tool/index.js.map +1 -0
  317. package/dist/cli/commands/tool/list.command.d.ts +7 -0
  318. package/dist/cli/commands/tool/list.command.d.ts.map +1 -0
  319. package/dist/cli/commands/tool/list.command.js +268 -0
  320. package/dist/cli/commands/tool/list.command.js.map +1 -0
  321. package/dist/cli/commands/tool/validate.command.d.ts +7 -0
  322. package/dist/cli/commands/tool/validate.command.d.ts.map +1 -0
  323. package/dist/cli/commands/tool/validate.command.js +103 -0
  324. package/dist/cli/commands/tool/validate.command.js.map +1 -0
  325. package/dist/cli/commands/upgrade.command.d.ts.map +1 -1
  326. package/dist/cli/commands/upgrade.command.js +12 -0
  327. package/dist/cli/commands/upgrade.command.js.map +1 -1
  328. package/dist/cli/commands/verify.d.ts.map +1 -1
  329. package/dist/cli/commands/verify.js +1 -1
  330. package/dist/cli/commands/verify.js.map +1 -1
  331. package/dist/cli/commands/wizard-api-first.command.d.ts.map +1 -1
  332. package/dist/cli/commands/wizard-api-first.command.js +76 -0
  333. package/dist/cli/commands/wizard-api-first.command.js.map +1 -1
  334. package/dist/cli/commands/wizard-interactive.command.d.ts.map +1 -1
  335. package/dist/cli/commands/wizard-interactive.command.js +171 -97
  336. package/dist/cli/commands/wizard-interactive.command.js.map +1 -1
  337. package/dist/cli/commands/wizard.command.js +1 -1
  338. package/dist/cli/commands/wizard.command.js.map +1 -1
  339. package/dist/cli/extensions/gitlab.extension.js +1 -1
  340. package/dist/cli/index.js +104 -126
  341. package/dist/cli/index.js.map +1 -1
  342. package/dist/cli/utils/error-formatter.js +3 -3
  343. package/dist/cli/utils/standard-options.d.ts +2 -2
  344. package/dist/cli/utils/standard-options.d.ts.map +1 -1
  345. package/dist/cli/utils/standard-options.js +2 -2
  346. package/dist/cli/utils/standard-options.js.map +1 -1
  347. package/dist/cli/utils/validation-builder.d.ts +1 -1
  348. package/dist/cli/utils/validation-builder.js +2 -2
  349. package/dist/cli/wizard/interactive-wizard.js +2 -2
  350. package/dist/cli/wizard/steps/02-basic-info.js +1 -1
  351. package/dist/cli/wizard/steps/05-tools.d.ts.map +1 -1
  352. package/dist/cli/wizard/steps/05-tools.js +22 -3
  353. package/dist/cli/wizard/steps/05-tools.js.map +1 -1
  354. package/dist/config/defaults.js +3 -3
  355. package/dist/config/defaults.js.map +1 -1
  356. package/dist/deploy/cloud/aws-driver.d.ts.map +1 -1
  357. package/dist/deploy/cloud/aws-driver.js.map +1 -1
  358. package/dist/deploy/cloud/azure-driver.d.ts.map +1 -1
  359. package/dist/deploy/cloud/azure-driver.js.map +1 -1
  360. package/dist/deploy/cloud/gcp-driver.d.ts.map +1 -1
  361. package/dist/deploy/cloud/gcp-driver.js +6 -2
  362. package/dist/deploy/cloud/gcp-driver.js.map +1 -1
  363. package/dist/dev-cli/commands/release-prep.command.d.ts +1 -5
  364. package/dist/dev-cli/commands/release-prep.command.d.ts.map +1 -1
  365. package/dist/dev-cli/commands/release-prep.command.js +4 -8
  366. package/dist/dev-cli/commands/release-prep.command.js.map +1 -1
  367. package/dist/dev-cli/services/spec-generate.service.d.ts +8 -1
  368. package/dist/dev-cli/services/spec-generate.service.d.ts.map +1 -1
  369. package/dist/dev-cli/services/spec-generate.service.js +96 -11
  370. package/dist/dev-cli/services/spec-generate.service.js.map +1 -1
  371. package/dist/dev-cli/services/spec-validate.service.d.ts.map +1 -1
  372. package/dist/dev-cli/services/spec-validate.service.js +66 -5
  373. package/dist/dev-cli/services/spec-validate.service.js.map +1 -1
  374. package/dist/dev-cli/services/version-validate.service.d.ts.map +1 -1
  375. package/dist/dev-cli/services/version-validate.service.js +1 -3
  376. package/dist/dev-cli/services/version-validate.service.js.map +1 -1
  377. package/dist/di-container.d.ts +5 -0
  378. package/dist/di-container.d.ts.map +1 -1
  379. package/dist/di-container.js +20 -4
  380. package/dist/di-container.js.map +1 -1
  381. package/dist/index.d.ts +0 -2
  382. package/dist/index.d.ts.map +1 -1
  383. package/dist/index.js +0 -1
  384. package/dist/index.js.map +1 -1
  385. package/dist/mesh/advanced-routing.d.ts.map +1 -1
  386. package/dist/mesh/advanced-routing.js +21 -15
  387. package/dist/mesh/advanced-routing.js.map +1 -1
  388. package/dist/mesh/agent-graph.d.ts.map +1 -1
  389. package/dist/mesh/agent-graph.js +38 -32
  390. package/dist/mesh/agent-graph.js.map +1 -1
  391. package/dist/mesh/discovery-providers.d.ts.map +1 -1
  392. package/dist/mesh/discovery-providers.js +25 -19
  393. package/dist/mesh/discovery-providers.js.map +1 -1
  394. package/dist/mesh/types.d.ts +212 -1
  395. package/dist/mesh/types.d.ts.map +1 -1
  396. package/dist/messaging/channels.d.ts +1 -1
  397. package/dist/messaging/channels.js +1 -1
  398. package/dist/messaging/protocols/memory.d.ts +1 -1
  399. package/dist/messaging/protocols/memory.js +1 -1
  400. package/dist/messenger/Commands/MessengerStatsCommand.d.ts.map +1 -1
  401. package/dist/messenger/Commands/MessengerStatsCommand.js.map +1 -1
  402. package/dist/messenger/EventSubscriber/FailedMessageSubscriber.d.ts.map +1 -1
  403. package/dist/messenger/EventSubscriber/FailedMessageSubscriber.js.map +1 -1
  404. package/dist/messenger/Handler/AgentBatchHandler.d.ts.map +1 -1
  405. package/dist/messenger/Handler/AgentBatchHandler.js +6 -2
  406. package/dist/messenger/Handler/AgentBatchHandler.js.map +1 -1
  407. package/dist/messenger/Handler/AgentExecutionHandler.d.ts.map +1 -1
  408. package/dist/messenger/Handler/AgentExecutionHandler.js.map +1 -1
  409. package/dist/messenger/Message/AgentBatchMessage.d.ts.map +1 -1
  410. package/dist/messenger/Message/AgentBatchMessage.js +3 -1
  411. package/dist/messenger/Message/AgentBatchMessage.js.map +1 -1
  412. package/dist/messenger/Message/AgentExecutionMessage.d.ts.map +1 -1
  413. package/dist/messenger/Message/AgentExecutionMessage.js.map +1 -1
  414. package/dist/messenger/Message/index.d.ts +1 -1
  415. package/dist/messenger/Message/index.d.ts.map +1 -1
  416. package/dist/messenger/Message/index.js +1 -1
  417. package/dist/messenger/Message/index.js.map +1 -1
  418. package/dist/messenger/Middleware/AuthenticationMiddleware.d.ts.map +1 -1
  419. package/dist/messenger/Middleware/AuthenticationMiddleware.js +1 -2
  420. package/dist/messenger/Middleware/AuthenticationMiddleware.js.map +1 -1
  421. package/dist/messenger/Middleware/LoggingMiddleware.d.ts.map +1 -1
  422. package/dist/messenger/Middleware/LoggingMiddleware.js +3 -1
  423. package/dist/messenger/Middleware/LoggingMiddleware.js.map +1 -1
  424. package/dist/messenger/Middleware/RateLimitMiddleware.d.ts.map +1 -1
  425. package/dist/messenger/Middleware/RateLimitMiddleware.js.map +1 -1
  426. package/dist/messenger/Middleware/ValidationMiddleware.d.ts.map +1 -1
  427. package/dist/messenger/Middleware/ValidationMiddleware.js +8 -3
  428. package/dist/messenger/Middleware/ValidationMiddleware.js.map +1 -1
  429. package/dist/messenger/Monitoring/QueueMonitor.d.ts.map +1 -1
  430. package/dist/messenger/Monitoring/QueueMonitor.js +5 -2
  431. package/dist/messenger/Monitoring/QueueMonitor.js.map +1 -1
  432. package/dist/package.json +36 -18
  433. package/dist/repositories/schema.repository.d.ts.map +1 -1
  434. package/dist/repositories/schema.repository.js +10 -4
  435. package/dist/repositories/schema.repository.js.map +1 -1
  436. package/dist/sdks/kagent/crd-generator.d.ts.map +1 -1
  437. package/dist/sdks/kagent/crd-generator.js +5 -4
  438. package/dist/sdks/kagent/crd-generator.js.map +1 -1
  439. package/dist/sdks/kagent/crd-parser.d.ts.map +1 -1
  440. package/dist/sdks/kagent/crd-parser.js +2 -1
  441. package/dist/sdks/kagent/crd-parser.js.map +1 -1
  442. package/dist/sdks/shared/validation.d.ts +4 -4
  443. package/dist/sdks/typescript/builders/autonomy.builder.d.ts +119 -0
  444. package/dist/sdks/typescript/builders/autonomy.builder.d.ts.map +1 -0
  445. package/dist/sdks/typescript/builders/autonomy.builder.js +165 -0
  446. package/dist/sdks/typescript/builders/autonomy.builder.js.map +1 -0
  447. package/dist/sdks/typescript/builders/index.d.ts +12 -0
  448. package/dist/sdks/typescript/builders/index.d.ts.map +1 -0
  449. package/dist/sdks/typescript/builders/index.js +11 -0
  450. package/dist/sdks/typescript/builders/index.js.map +1 -0
  451. package/dist/sdks/typescript/builders/llm.builder.d.ts +74 -0
  452. package/dist/sdks/typescript/builders/llm.builder.d.ts.map +1 -0
  453. package/dist/sdks/typescript/builders/llm.builder.js +123 -0
  454. package/dist/sdks/typescript/builders/llm.builder.js.map +1 -0
  455. package/dist/sdks/typescript/builders/manifest.builder.d.ts +153 -0
  456. package/dist/sdks/typescript/builders/manifest.builder.d.ts.map +1 -0
  457. package/dist/sdks/typescript/builders/manifest.builder.js +343 -0
  458. package/dist/sdks/typescript/builders/manifest.builder.js.map +1 -0
  459. package/dist/sdks/typescript/builders/safety.builder.d.ts +79 -0
  460. package/dist/sdks/typescript/builders/safety.builder.d.ts.map +1 -0
  461. package/dist/sdks/typescript/builders/safety.builder.js +147 -0
  462. package/dist/sdks/typescript/builders/safety.builder.js.map +1 -0
  463. package/dist/sdks/typescript/builders/tool.builder.d.ts +179 -0
  464. package/dist/sdks/typescript/builders/tool.builder.d.ts.map +1 -0
  465. package/dist/sdks/typescript/builders/tool.builder.js +305 -0
  466. package/dist/sdks/typescript/builders/tool.builder.js.map +1 -0
  467. package/dist/sdks/typescript/client.d.ts +1 -3
  468. package/dist/sdks/typescript/client.d.ts.map +1 -1
  469. package/dist/sdks/typescript/client.js +1 -3
  470. package/dist/sdks/typescript/client.js.map +1 -1
  471. package/dist/sdks/typescript/constants.d.ts +24 -0
  472. package/dist/sdks/typescript/constants.d.ts.map +1 -0
  473. package/dist/sdks/typescript/constants.js +102 -0
  474. package/dist/sdks/typescript/constants.js.map +1 -0
  475. package/dist/sdks/typescript/index.d.ts +4 -0
  476. package/dist/sdks/typescript/index.d.ts.map +1 -1
  477. package/dist/sdks/typescript/index.js +4 -0
  478. package/dist/sdks/typescript/index.js.map +1 -1
  479. package/dist/sdks/typescript/manifest.d.ts +8 -3
  480. package/dist/sdks/typescript/manifest.d.ts.map +1 -1
  481. package/dist/sdks/typescript/manifest.js +12 -28
  482. package/dist/sdks/typescript/manifest.js.map +1 -1
  483. package/dist/sdks/typescript/types.d.ts +5 -3
  484. package/dist/sdks/typescript/types.d.ts.map +1 -1
  485. package/dist/sdks/typescript/types.js +6 -3
  486. package/dist/sdks/typescript/types.js.map +1 -1
  487. package/dist/sdks/typescript/validator.d.ts +31 -0
  488. package/dist/sdks/typescript/validator.d.ts.map +1 -1
  489. package/dist/sdks/typescript/validator.js +205 -1
  490. package/dist/sdks/typescript/validator.js.map +1 -1
  491. package/dist/services/agent-card-generator.d.ts +57 -0
  492. package/dist/services/agent-card-generator.d.ts.map +1 -0
  493. package/dist/services/agent-card-generator.js +592 -0
  494. package/dist/services/agent-card-generator.js.map +1 -0
  495. package/dist/services/agent-type-detector.service.d.ts +72 -0
  496. package/dist/services/agent-type-detector.service.d.ts.map +1 -0
  497. package/dist/services/agent-type-detector.service.js +197 -0
  498. package/dist/services/agent-type-detector.service.js.map +1 -0
  499. package/dist/services/agents-md/agents-md-generator.service.d.ts +29 -0
  500. package/dist/services/agents-md/agents-md-generator.service.d.ts.map +1 -0
  501. package/dist/services/agents-md/agents-md-generator.service.js +252 -0
  502. package/dist/services/agents-md/agents-md-generator.service.js.map +1 -0
  503. package/dist/services/ai-architect.service.js +1 -1
  504. package/dist/services/ai-architect.service.js.map +1 -1
  505. package/dist/services/audit.d.ts +7 -1
  506. package/dist/services/audit.d.ts.map +1 -1
  507. package/dist/services/audit.js +70 -40
  508. package/dist/services/audit.js.map +1 -1
  509. package/dist/services/codegen/generators/vscode.generator.js +2 -2
  510. package/dist/services/codegen/generators/vscode.generator.js.map +1 -1
  511. package/dist/services/evals/evals-generator.service.d.ts +90 -0
  512. package/dist/services/evals/evals-generator.service.d.ts.map +1 -0
  513. package/dist/services/evals/evals-generator.service.js +1603 -0
  514. package/dist/services/evals/evals-generator.service.js.map +1 -0
  515. package/dist/services/export/anthropic/anthropic-exporter.d.ts +1 -0
  516. package/dist/services/export/anthropic/anthropic-exporter.d.ts.map +1 -1
  517. package/dist/services/export/anthropic/anthropic-exporter.js +11 -2
  518. package/dist/services/export/anthropic/anthropic-exporter.js.map +1 -1
  519. package/dist/services/export/export-orchestrator.d.ts +1 -0
  520. package/dist/services/export/export-orchestrator.d.ts.map +1 -1
  521. package/dist/services/export/npm/npm-exporter.d.ts.map +1 -1
  522. package/dist/services/export/npm/npm-exporter.js.map +1 -1
  523. package/dist/services/export/npm/package-json-generator.d.ts.map +1 -1
  524. package/dist/services/export/npm/package-json-generator.js +2 -1
  525. package/dist/services/export/npm/package-json-generator.js.map +1 -1
  526. package/dist/services/framework-import/langchain-importer.service.d.ts.map +1 -1
  527. package/dist/services/framework-import/langchain-importer.service.js +2 -1
  528. package/dist/services/framework-import/langchain-importer.service.js.map +1 -1
  529. package/dist/services/framework-import/langflow-importer.service.d.ts.map +1 -1
  530. package/dist/services/framework-import/langflow-importer.service.js +3 -2
  531. package/dist/services/framework-import/langflow-importer.service.js.map +1 -1
  532. package/dist/services/generation.service.d.ts +7 -0
  533. package/dist/services/generation.service.d.ts.map +1 -1
  534. package/dist/services/generation.service.js +31 -8
  535. package/dist/services/generation.service.js.map +1 -1
  536. package/dist/services/github-sync/schemas.d.ts +1 -1
  537. package/dist/services/governance/governance-generator.service.d.ts +120 -0
  538. package/dist/services/governance/governance-generator.service.d.ts.map +1 -0
  539. package/dist/services/governance/governance-generator.service.js +955 -0
  540. package/dist/services/governance/governance-generator.service.js.map +1 -0
  541. package/dist/services/id-card.service.d.ts +109 -0
  542. package/dist/services/id-card.service.d.ts.map +1 -0
  543. package/dist/services/id-card.service.js +236 -0
  544. package/dist/services/id-card.service.js.map +1 -0
  545. package/dist/services/llms-txt/llms-txt.service.d.ts +2 -2
  546. package/dist/services/llms-txt/llms-txt.service.js +2 -2
  547. package/dist/services/messaging/index.d.ts +0 -1
  548. package/dist/services/messaging/index.d.ts.map +1 -1
  549. package/dist/services/messaging/index.js +2 -1
  550. package/dist/services/messaging/index.js.map +1 -1
  551. package/dist/services/multi-agent/team-generator.service.d.ts +41 -0
  552. package/dist/services/multi-agent/team-generator.service.d.ts.map +1 -0
  553. package/dist/services/multi-agent/team-generator.service.js +560 -0
  554. package/dist/services/multi-agent/team-generator.service.js.map +1 -0
  555. package/dist/services/observability/observability-generator.service.d.ts +54 -0
  556. package/dist/services/observability/observability-generator.service.d.ts.map +1 -0
  557. package/dist/services/observability/observability-generator.service.js +1353 -0
  558. package/dist/services/observability/observability-generator.service.js.map +1 -0
  559. package/dist/services/registry/bundle.service.d.ts.map +1 -1
  560. package/dist/services/registry/bundle.service.js +2 -1
  561. package/dist/services/registry/bundle.service.js.map +1 -1
  562. package/dist/services/registry/index.service.js +1 -1
  563. package/dist/services/registry.service.d.ts.map +1 -1
  564. package/dist/services/registry.service.js +2 -1
  565. package/dist/services/registry.service.js.map +1 -1
  566. package/dist/services/release-automation/release-agent.service.js +1 -1
  567. package/dist/services/runtime/anthropic.adapter.d.ts.map +1 -1
  568. package/dist/services/runtime/anthropic.adapter.js +2 -6
  569. package/dist/services/runtime/anthropic.adapter.js.map +1 -1
  570. package/dist/services/runtime/azure.adapter.d.ts +1 -1
  571. package/dist/services/runtime/azure.adapter.js +3 -3
  572. package/dist/services/runtime/azure.adapter.js.map +1 -1
  573. package/dist/services/runtime/bedrock.adapter.d.ts.map +1 -1
  574. package/dist/services/runtime/bedrock.adapter.js +2 -6
  575. package/dist/services/runtime/bedrock.adapter.js.map +1 -1
  576. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
  577. package/dist/services/runtime/claude/claude-adapter.js +2 -6
  578. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  579. package/dist/services/runtime/gemini.adapter.d.ts.map +1 -1
  580. package/dist/services/runtime/gemini.adapter.js +2 -6
  581. package/dist/services/runtime/gemini.adapter.js.map +1 -1
  582. package/dist/services/runtime/mistral.adapter.d.ts.map +1 -1
  583. package/dist/services/runtime/mistral.adapter.js +2 -6
  584. package/dist/services/runtime/mistral.adapter.js.map +1 -1
  585. package/dist/services/runtime/ollama.adapter.d.ts.map +1 -1
  586. package/dist/services/runtime/ollama.adapter.js +2 -6
  587. package/dist/services/runtime/ollama.adapter.js.map +1 -1
  588. package/dist/services/runtime/openai.adapter.js +2 -2
  589. package/dist/services/runtime/openai.adapter.js.map +1 -1
  590. package/dist/services/skills-pipeline/index.d.ts +8 -0
  591. package/dist/services/skills-pipeline/index.d.ts.map +1 -0
  592. package/dist/services/skills-pipeline/index.js +8 -0
  593. package/dist/services/skills-pipeline/index.js.map +1 -0
  594. package/dist/services/skills-pipeline/skills-export.service.d.ts +86 -0
  595. package/dist/services/skills-pipeline/skills-export.service.d.ts.map +1 -0
  596. package/dist/services/skills-pipeline/skills-export.service.js +483 -0
  597. package/dist/services/skills-pipeline/skills-export.service.js.map +1 -0
  598. package/dist/services/skills-pipeline/skills-generator.service.d.ts +118 -0
  599. package/dist/services/skills-pipeline/skills-generator.service.d.ts.map +1 -0
  600. package/dist/services/skills-pipeline/skills-generator.service.js +648 -0
  601. package/dist/services/skills-pipeline/skills-generator.service.js.map +1 -0
  602. package/dist/services/skills-pipeline/skills-research.service.d.ts +112 -0
  603. package/dist/services/skills-pipeline/skills-research.service.d.ts.map +1 -0
  604. package/dist/services/skills-pipeline/skills-research.service.js +471 -0
  605. package/dist/services/skills-pipeline/skills-research.service.js.map +1 -0
  606. package/dist/services/taxonomy-service.d.ts +4 -4
  607. package/dist/services/taxonomy-service.js +1 -1
  608. package/dist/services/template-processor.service.d.ts.map +1 -1
  609. package/dist/services/template-processor.service.js +7 -5
  610. package/dist/services/template-processor.service.js.map +1 -1
  611. package/dist/services/validators/a2a.validator.js +1 -1
  612. package/dist/services/validators/autogen.validator.js +1 -1
  613. package/dist/services/validators/crewai.validator.js +1 -1
  614. package/dist/services/validators/kagent.validator.js +1 -1
  615. package/dist/services/validators/langchain.validator.js +1 -1
  616. package/dist/services/validators/langgraph.validator.js +1 -1
  617. package/dist/services/validators/mcp.validator.js +1 -1
  618. package/dist/services/wizard/prompts.d.ts.map +1 -1
  619. package/dist/services/wizard/prompts.js +25 -9
  620. package/dist/services/wizard/prompts.js.map +1 -1
  621. package/dist/services/wizard/wizard.service.d.ts +1 -1
  622. package/dist/services/wizard/wizard.service.d.ts.map +1 -1
  623. package/dist/services/wizard/wizard.service.js +89 -26
  624. package/dist/services/wizard/wizard.service.js.map +1 -1
  625. package/dist/spec/extensions/knowledge-graph/knowledge-graph.schema.json +1 -1
  626. package/dist/spec/extensions/manifest-extensions.md +2 -2
  627. package/dist/spec/registry/README.md +1 -1
  628. package/dist/spec/registry/registry-spec.md +4 -4
  629. package/dist/spec/v0.4/agent-card.schema.json +390 -0
  630. package/dist/spec/v0.4/agent.schema.json +808 -48
  631. package/dist/spec/v0.4/extensions/drupal/drupal.schema.json +77 -0
  632. package/dist/spec/v0.4/extensions/evals/evals.schema.json +597 -0
  633. package/dist/spec/v0.4/extensions/identity/identity.schema.json +302 -0
  634. package/dist/spec/v0.4/extensions/kagent/README.md +1 -1
  635. package/dist/spec/v0.4/extensions/team/team.schema.json +304 -0
  636. package/dist/spec/v0.5/agent.schema.json +768 -0
  637. package/dist/transports/websocket.js +1 -1
  638. package/dist/types/dynamic-agent-types.d.ts +158 -0
  639. package/dist/types/dynamic-agent-types.d.ts.map +1 -0
  640. package/dist/types/dynamic-agent-types.js +473 -0
  641. package/dist/types/dynamic-agent-types.js.map +1 -0
  642. package/dist/types/generated/ossa-0.3.4.types.d.ts +63 -0
  643. package/dist/types/generated/ossa-0.3.4.types.d.ts.map +1 -1
  644. package/dist/types/generated/ossa-0.3.4.zod.d.ts +303 -0
  645. package/dist/types/generated/ossa-0.3.4.zod.d.ts.map +1 -1
  646. package/dist/types/generated/ossa-0.3.4.zod.js +92 -0
  647. package/dist/types/generated/ossa-0.3.4.zod.js.map +1 -1
  648. package/dist/types/identity.zod.d.ts +15 -15
  649. package/dist/types/index.d.ts +176 -3
  650. package/dist/types/index.d.ts.map +1 -1
  651. package/dist/types/index.js +7 -0
  652. package/dist/types/index.js.map +1 -1
  653. package/dist/types/personality.zod.d.ts +20 -20
  654. package/dist/types/protocols.d.ts +158 -0
  655. package/dist/types/protocols.d.ts.map +1 -0
  656. package/dist/types/protocols.js +8 -0
  657. package/dist/types/protocols.js.map +1 -0
  658. package/dist/types/security.d.ts +123 -0
  659. package/dist/types/security.d.ts.map +1 -0
  660. package/dist/types/security.js +9 -0
  661. package/dist/types/security.js.map +1 -0
  662. package/dist/types/tool.d.ts +73 -0
  663. package/dist/types/tool.d.ts.map +1 -0
  664. package/dist/types/tool.js +66 -0
  665. package/dist/types/tool.js.map +1 -0
  666. package/dist/utils/version.d.ts +9 -9
  667. package/dist/utils/version.d.ts.map +1 -1
  668. package/dist/utils/version.js +11 -18
  669. package/dist/utils/version.js.map +1 -1
  670. package/dist/validation/error-codes.js +5 -5
  671. package/dist/validation/error-codes.js.map +1 -1
  672. package/dist/validation/linter.d.ts +3 -3
  673. package/dist/validation/linter.js +4 -4
  674. package/dist/validation/linter.js.map +1 -1
  675. package/dist/validation/progressive-scorer.d.ts.map +1 -1
  676. package/dist/validation/progressive-scorer.js +18 -5
  677. package/dist/validation/progressive-scorer.js.map +1 -1
  678. package/dist/validation/validation-context.d.ts.map +1 -1
  679. package/dist/validation/validation-context.js.map +1 -1
  680. package/dist/validation/validator-registry.d.ts.map +1 -1
  681. package/dist/validation/validator-registry.js.map +1 -1
  682. package/dist/validation/validator.d.ts +3 -3
  683. package/dist/validation/validator.d.ts.map +1 -1
  684. package/dist/validation/validator.js +4 -4
  685. package/dist/validation/validator.js.map +1 -1
  686. package/dist/version.d.ts.map +1 -1
  687. package/dist/version.js +7 -2
  688. package/dist/version.js.map +1 -1
  689. package/examples/a2a/agent-handoff.ossa.yaml +1 -1
  690. package/examples/a2a/service-discovery.ossa.yaml +1 -1
  691. package/examples/adapters/drupal-eca-mapping.yaml +1 -1
  692. package/examples/adapters/drupal-eca-task.yaml +1 -1
  693. package/examples/adapters/drupal-flowdrop-mapping.yaml +1 -1
  694. package/examples/adapters/drupal-maestro-mapping.yaml +1 -1
  695. package/examples/adapters/mistral-README.md +1 -1
  696. package/examples/adapters/mistral-agent.yaml +1 -1
  697. package/examples/adapters/symfony-messenger-task.yaml +1 -1
  698. package/examples/adapters/symfony-messenger-workflow.yaml +1 -1
  699. package/examples/adk-integration/code-review-workflow.yml +1 -1
  700. package/examples/adk-integration/customer-support.yml +1 -1
  701. package/examples/adk-integration/data-pipeline.yml +1 -1
  702. package/examples/advanced/reasoning-agent.yaml +1 -1
  703. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  704. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  705. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  706. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  707. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  708. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  709. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  710. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  711. package/examples/agent-manifests/v0.5-identity-security-protocols.ossa.yaml +159 -0
  712. package/examples/agent-manifests/v0.5-minimal.ossa.yaml +37 -0
  713. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  714. package/examples/agent-mesh/DISCOVERY.md +2 -2
  715. package/examples/agent-taxonomy-example.ossa.yaml +1 -1
  716. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +1 -1
  717. package/examples/agents/02-code-review-agent/agent.ossa.yaml +1 -1
  718. package/examples/agents/03-data-analysis-agent/agent.ossa.yaml +1 -1
  719. package/examples/agents/04-content-moderator/agent.ossa.yaml +1 -1
  720. package/examples/agents/05-sales-assistant/agent.ossa.yaml +1 -1
  721. package/examples/agents/06-devops-agent/agent.ossa.yaml +1 -1
  722. package/examples/agents/07-research-assistant/agent.ossa.yaml +1 -1
  723. package/examples/agents/08-email-triage-agent/agent.ossa.yaml +1 -1
  724. package/examples/agents/09-security-scanner/agent.ossa.yaml +1 -1
  725. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +1 -1
  726. package/examples/agents/architecture-healer-enterprise.yaml +1 -1
  727. package/examples/agents/dependency-healer-npm.yaml +1 -1
  728. package/examples/agents/spec-healer-openapi.yaml +1 -1
  729. package/examples/agents/wiki-healer-production.yaml +1 -1
  730. package/examples/agents-md/monorepo-agent.ossa.yaml +1 -1
  731. package/examples/autonomous-evolution/self-evolving-agent.ossa.yaml +1 -1
  732. package/examples/build-once-use-everywhere/README.md +3 -3
  733. package/examples/build-once-use-everywhere/agent.ossa.yaml +1 -1
  734. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  735. package/examples/claude-code/ossa-validator.ossa.yaml +1 -1
  736. package/examples/common_npm/agent-router.ossa.yaml +1 -1
  737. package/examples/contracts/data-consumer.ossa.yaml +1 -1
  738. package/examples/contracts/data-producer-v2.ossa.yaml +1 -1
  739. package/examples/contracts/data-producer.ossa.yaml +1 -1
  740. package/examples/deployment-workflow.md +1 -1
  741. package/examples/drupal/QUICKSTART.md +8 -8
  742. package/examples/drupal/content-moderator.ossa.yaml +1 -1
  743. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
  744. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +1 -1
  745. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +1 -1
  746. package/examples/extensions/agents-md-advanced.yml +1 -1
  747. package/examples/extensions/agents-md-basic.yml +1 -1
  748. package/examples/extensions/agents-md-sync.yml +1 -1
  749. package/examples/extensions/agents-md-v1.yml +3 -3
  750. package/examples/extensions/drupal-v1.yml +1 -1
  751. package/examples/extensions/encryption-multi-provider.yaml +4 -4
  752. package/examples/extensions/kagent-v1.yml +1 -1
  753. package/examples/extensions/knowledge-sources.yaml +1 -1
  754. package/examples/extensions/mcp-full-featured.yaml +1 -1
  755. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  756. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  757. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  758. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  759. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  760. package/examples/getting-started/hello-world-complete.ossa.yaml +2 -1
  761. package/examples/gitlab-agents/DEPLOYMENT.md +7 -7
  762. package/examples/gitlab-agents/daily-code-scan/src/gitlab-client.ts +87 -11
  763. package/examples/gitlab-agents/duo-comment-responder/README.md +1 -1
  764. package/examples/gitlab-agents/duo-comment-responder/webhook-config.json +1 -1
  765. package/examples/gitlab-agents/k8s/deploy-all.yaml +5 -5
  766. package/examples/gitlab-agents/mr-reviewer/README.md +1 -1
  767. package/examples/gitlab-agents/mr-reviewer/src/gitlab-client.ts +83 -13
  768. package/examples/gitlab-agents/mr-reviewer/webhook-config.json +1 -1
  769. package/examples/gitlab-agents/pipeline-auto-fix/README.md +1 -1
  770. package/examples/gitlab-agents/pipeline-auto-fix/src/gitlab-client.ts +2 -3
  771. package/examples/gitlab-agents/pipeline-auto-fix/webhook-config.json +1 -1
  772. package/examples/gitlab-duo/README.md +7 -7
  773. package/examples/hierarchical-agent.ossa.yaml +126 -0
  774. package/examples/hierarchical-crewai.ossa.yaml +96 -0
  775. package/examples/infrastructure/token-rotation/manifest.ossa.yaml +1 -1
  776. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +1 -1
  777. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  778. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  779. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  780. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -1
  781. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  782. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  783. package/examples/knowledge-graph/drupal-agent-with-kg.ossa.yaml +1 -1
  784. package/examples/mcp/browser-puppeteer.ossa.yaml +5 -7
  785. package/examples/mcp/database-mcp.ossa.yaml +1 -1
  786. package/examples/mcp/filesystem-mcp.ossa.yaml +1 -1
  787. package/examples/messaging/dependency-healer.ossa.yaml +1 -1
  788. package/examples/messaging/incident-responder.ossa.yaml +1 -1
  789. package/examples/messaging/routing-rules.ossa.yaml +1 -1
  790. package/examples/messaging/security-scanner.ossa.yaml +1 -1
  791. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  792. package/examples/migrations/langchain/01-python-react-agent-after.ossa.yaml +1 -1
  793. package/examples/migrations/langchain/02-typescript-conversational-after.ossa.yaml +1 -1
  794. package/examples/migrations/langchain/03-sequential-chain-after.ossa.yaml +1 -1
  795. package/examples/migrations/langchain/04-config-based-after.ossa.yaml +1 -1
  796. package/examples/migrations/langchain/USAGE.txt +1 -1
  797. package/examples/migrations/swarm-to-ossa/QUICKSTART.md +3 -3
  798. package/examples/migrations/swarm-to-ossa/after-handoffs.ossa.yaml +6 -6
  799. package/examples/migrations/swarm-to-ossa/after-triage-agent.ossa.yaml +3 -3
  800. package/examples/minimal/agent.yml +1 -1
  801. package/examples/mr-reviewer-with-governance.ossa.yaml +1 -1
  802. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  803. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  804. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  805. package/examples/multi-agent-research-workflow.ossa.yaml +1 -1
  806. package/examples/multi-platform/single-manifest/agent.ossa.yaml +1 -1
  807. package/examples/observability/activity-stream-full.yaml +1 -1
  808. package/examples/openai/basic-agent.ossa.yaml +1 -1
  809. package/examples/ossa-templates/01-code-assistant.ossa.yaml +1 -1
  810. package/examples/ossa-templates/02-security-scanner.ossa.yaml +1 -1
  811. package/examples/ossa-templates/03-ci-pipeline.ossa.yaml +1 -1
  812. package/examples/ossa-templates/04-code-reviewer.ossa.yaml +1 -1
  813. package/examples/ossa-templates/05-doc-generator.ossa.yaml +1 -1
  814. package/examples/ossa-templates/06-compliance-validator.ossa.yaml +1 -1
  815. package/examples/ossa-templates/07-workflow-orchestrator.ossa.yaml +1 -1
  816. package/examples/ossa-templates/08-content-writer.ossa.yaml +1 -1
  817. package/examples/ossa-templates/09-test-generator.ossa.yaml +1 -1
  818. package/examples/ossa-templates/10-data-transformer.ossa.yaml +1 -1
  819. package/examples/ossa-templates/11-react-performance-expert.ossa.yaml +1 -1
  820. package/examples/ossa-templates/12-typescript-type-safety-expert.ossa.yaml +1 -1
  821. package/examples/ossa-templates/13-accessibility-champion.ossa.yaml +1 -1
  822. package/examples/ossa-templates/14-security-hardening-agent.ossa.yaml +1 -1
  823. package/examples/pipeline-agent.ossa.yaml +196 -0
  824. package/examples/platform-specific/claude-code-subagent.yaml +185 -0
  825. package/examples/platform-specific/cursor-coding-agent.yaml +175 -0
  826. package/examples/platform-specific/warp-terminal-agent.yaml +122 -0
  827. package/examples/production/document-analyzer-openai.yml +1 -1
  828. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +1 -1
  829. package/examples/production-ready/02-code-review-agent/agent.ossa.yaml +1 -1
  830. package/examples/production-ready/03-data-analysis-agent/agent.ossa.yaml +1 -1
  831. package/examples/production-ready/04-content-moderator/agent.ossa.yaml +1 -1
  832. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +1 -1
  833. package/examples/production-ready/06-devops-agent/agent.ossa.yaml +1 -1
  834. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +1 -1
  835. package/examples/production-ready/08-email-triage-agent/agent.ossa.yaml +1 -1
  836. package/examples/production-ready/09-security-scanner/agent.ossa.yaml +1 -1
  837. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +1 -1
  838. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  839. package/examples/real-world/gitlab-cicd-optimizer.ossa.yaml +1 -1
  840. package/examples/real-world/rag-documentation-assistant.ossa.yaml +1 -1
  841. package/examples/reference-implementations/python-client/README.md +2 -2
  842. package/examples/reference-implementations/typescript-client/README.md +1 -1
  843. package/examples/registry/agents/code-reviewer/agent.yaml +1 -1
  844. package/examples/registry/agents/security-scanner/agent.yaml +1 -1
  845. package/examples/runtime-adapters/bedrock-claude-example.ossa.yaml +1 -1
  846. package/examples/schema/reusable-components.yaml +1 -1
  847. package/examples/showcase/ci-pipeline.ossa.yaml +1 -1
  848. package/examples/showcase/code-assistant.ossa.yaml +1 -1
  849. package/examples/showcase/code-reviewer.ossa.yaml +1 -1
  850. package/examples/showcase/compliance-checker.ossa.yaml +1 -1
  851. package/examples/showcase/compliance-validator.ossa.yaml +1 -1
  852. package/examples/showcase/content-writer.ossa.yaml +1 -1
  853. package/examples/showcase/customer-support.ossa.yaml +1 -1
  854. package/examples/showcase/data-processing-pipeline.ossa.yaml +1 -1
  855. package/examples/showcase/data-transformer.ossa.yaml +1 -1
  856. package/examples/showcase/doc-generator.ossa.yaml +1 -1
  857. package/examples/showcase/full-power-agent.ossa.yaml +350 -0
  858. package/examples/showcase/security-scanner-enhanced.ossa.yaml +1 -1
  859. package/examples/showcase/security-scanner.ossa.yaml +1 -1
  860. package/examples/showcase/team-leader.ossa.yaml +1 -1
  861. package/examples/showcase/test-generator.ossa.yaml +1 -1
  862. package/examples/showcase/workflow-orchestrator.ossa.yaml +1 -1
  863. package/examples/single-agent.ossa.yaml +40 -0
  864. package/examples/skills-example.ossa.yaml +1 -1
  865. package/examples/subagents-pipeline.ossa.yaml +76 -0
  866. package/examples/swarm-agent.ossa.yaml +136 -0
  867. package/examples/swarm-handoff.ossa.yaml +67 -0
  868. package/examples/tasks/batch-email-sender.yaml +1 -1
  869. package/examples/tasks/data-transform.yaml +1 -1
  870. package/examples/tasks/publish-content.yaml +1 -1
  871. package/examples/team-agent.ossa.yaml +159 -0
  872. package/examples/team-lead-teammate.ossa.yaml +83 -0
  873. package/examples/templates/ossa-compliance.yaml +1 -1
  874. package/examples/unified/security-scanner.ossa.yaml +1 -1
  875. package/examples/workflows/batch-email-campaign.yaml +1 -1
  876. package/examples/workflows/content-review-publish.yaml +1 -1
  877. package/examples/workflows/simple-etl.yaml +1 -1
  878. package/openapi/agents-md-service.yaml +1 -1
  879. package/openapi/core/unified-agent-gateway.openapi.yaml +1 -1
  880. package/openapi/ossa-cli-enhancements.openapi.yaml +3 -3
  881. package/openapi/ossa-cli.yaml +1 -1
  882. package/openapi/protocols/sse-streams.yaml +1 -1
  883. package/openapi/protocols/websocket-events.yaml +2 -2
  884. package/openapi/release-automation.openapi.yaml +1 -1
  885. package/package.json +36 -18
  886. package/spec/extensions/knowledge-graph/knowledge-graph.schema.json +1 -1
  887. package/spec/extensions/manifest-extensions.md +2 -2
  888. package/spec/registry/README.md +1 -1
  889. package/spec/registry/registry-spec.md +4 -4
  890. package/spec/v0.4/agent-card.schema.json +390 -0
  891. package/spec/v0.4/agent.schema.json +808 -48
  892. package/spec/v0.4/extensions/drupal/drupal.schema.json +77 -0
  893. package/spec/v0.4/extensions/evals/evals.schema.json +597 -0
  894. package/spec/v0.4/extensions/governance/governance-extension.yaml +161 -0
  895. package/spec/v0.4/extensions/identity/identity.schema.json +302 -0
  896. package/spec/v0.4/extensions/kagent/README.md +1 -1
  897. package/spec/v0.4/extensions/team/team.schema.json +304 -0
  898. package/spec/v0.5/agent.schema.json +768 -0
  899. package/dist/adapters/anthropic/runtime.d.ts +0 -136
  900. package/dist/adapters/anthropic/runtime.d.ts.map +0 -1
  901. package/dist/adapters/anthropic/runtime.js +0 -290
  902. package/dist/adapters/anthropic/runtime.js.map +0 -1
  903. package/dist/adapters/drupal/production-exporter.legacy.d.ts +0 -131
  904. package/dist/adapters/drupal/production-exporter.legacy.d.ts.map +0 -1
  905. package/dist/adapters/drupal/production-exporter.legacy.js +0 -2537
  906. package/dist/adapters/drupal/production-exporter.legacy.js.map +0 -1
  907. package/dist/cli/commands/agent-create.command.d.ts +0 -18
  908. package/dist/cli/commands/agent-create.command.d.ts.map +0 -1
  909. package/dist/cli/commands/agent-create.command.js +0 -437
  910. package/dist/cli/commands/agent-create.command.js.map +0 -1
  911. package/dist/cli/commands/catalog/diff.command.d.ts +0 -8
  912. package/dist/cli/commands/catalog/diff.command.d.ts.map +0 -1
  913. package/dist/cli/commands/catalog/diff.command.js +0 -76
  914. package/dist/cli/commands/catalog/diff.command.js.map +0 -1
  915. package/dist/cli/commands/catalog/pull.command.d.ts +0 -8
  916. package/dist/cli/commands/catalog/pull.command.d.ts.map +0 -1
  917. package/dist/cli/commands/catalog/pull.command.js +0 -107
  918. package/dist/cli/commands/catalog/pull.command.js.map +0 -1
  919. package/dist/cli/commands/catalog/push.command.d.ts +0 -8
  920. package/dist/cli/commands/catalog/push.command.d.ts.map +0 -1
  921. package/dist/cli/commands/catalog/push.command.js +0 -120
  922. package/dist/cli/commands/catalog/push.command.js.map +0 -1
  923. package/dist/cli/commands/catalog/sync.command.d.ts +0 -8
  924. package/dist/cli/commands/catalog/sync.command.d.ts.map +0 -1
  925. package/dist/cli/commands/catalog/sync.command.js +0 -86
  926. package/dist/cli/commands/catalog/sync.command.js.map +0 -1
  927. package/dist/cli/commands/setup.command.d.ts +0 -11
  928. package/dist/cli/commands/setup.command.d.ts.map +0 -1
  929. package/dist/cli/commands/setup.command.js +0 -354
  930. package/dist/cli/commands/setup.command.js.map +0 -1
  931. package/dist/services/agent-protocol-client.d.ts +0 -541
  932. package/dist/services/agent-protocol-client.d.ts.map +0 -1
  933. package/dist/services/agent-protocol-client.js +0 -166
  934. package/dist/services/agent-protocol-client.js.map +0 -1
  935. package/dist/spec/v0.3/CHANGELOG.md +0 -237
  936. package/dist/spec/v0.3/MIGRATION-v0.3.4-to-v0.3.5.md +0 -292
  937. package/dist/spec/v0.3/MIGRATION-v0.3.5-to-v0.3.6.md +0 -552
  938. package/dist/spec/v0.3/README.md +0 -366
  939. package/dist/spec/v0.3/adoption-blockers.json +0 -142
  940. package/dist/spec/v0.3/bat-framework.schema.json +0 -114
  941. package/dist/spec/v0.3/capability-discovery.schema.json +0 -128
  942. package/dist/spec/v0.3/checkpoint.schema.json +0 -132
  943. package/dist/spec/v0.3/completion-signals.schema.json +0 -136
  944. package/dist/spec/v0.3/conformance/IMPLEMENTATION.md +0 -402
  945. package/dist/spec/v0.3/conformance/PROFILES.md +0 -210
  946. package/dist/spec/v0.3/conformance/README.md +0 -263
  947. package/dist/spec/v0.3/conformance/profiles/baseline.json +0 -27
  948. package/dist/spec/v0.3/conformance/profiles/enterprise.json +0 -33
  949. package/dist/spec/v0.3/conformance/profiles/gitlab-kagent.json +0 -36
  950. package/dist/spec/v0.3/conformance/tests/baseline/invalid/missing-identity.yaml +0 -6
  951. package/dist/spec/v0.3/conformance/tests/baseline/invalid/missing-kind.yaml +0 -7
  952. package/dist/spec/v0.3/conformance/tests/baseline/valid/basic-agent.yaml +0 -22
  953. package/dist/spec/v0.3/conformance/tests/baseline/valid/minimal-agent.yaml +0 -15
  954. package/dist/spec/v0.3/conformance/tests/enterprise/valid/enterprise-agent.yaml +0 -88
  955. package/dist/spec/v0.3/conformance/tests/enterprise/valid/production-agent.yaml +0 -112
  956. package/dist/spec/v0.3/conformance/tests/gitlab-kagent/valid/kagent-agent.yaml +0 -117
  957. package/dist/spec/v0.3/conformance/tests/gitlab-kagent/valid/kagent-full.yaml +0 -125
  958. package/dist/spec/v0.3/examples/checkpoint-example.ossa.yaml +0 -81
  959. package/dist/spec/v0.3/examples/flow-example.ossa.yaml +0 -119
  960. package/dist/spec/v0.3/examples/forward-thinking-agent.ossa.yaml +0 -294
  961. package/dist/spec/v0.3/examples/moe-example.ossa.yaml +0 -120
  962. package/dist/spec/v0.3/extensions/a2a/README.md +0 -193
  963. package/dist/spec/v0.3/extensions/a2a/a2a.schema.json +0 -77
  964. package/dist/spec/v0.3/extensions/ag2/ag2.schema.json +0 -277
  965. package/dist/spec/v0.3/extensions/crewai/crewai.schema.json +0 -256
  966. package/dist/spec/v0.3/extensions/kagent/README.md +0 -315
  967. package/dist/spec/v0.3/extensions/kagent/kagent.schema.json +0 -624
  968. package/dist/spec/v0.3/extensions/langchain/langchain.schema.json +0 -243
  969. package/dist/spec/v0.3/extensions/langgraph/langgraph.schema.json +0 -211
  970. package/dist/spec/v0.3/extensions/mcp/README.md +0 -276
  971. package/dist/spec/v0.3/extensions/mcp/mcp.schema.json +0 -84
  972. package/dist/spec/v0.3/feedback-loops.schema.json +0 -145
  973. package/dist/spec/v0.3/flow-kind.schema.json +0 -244
  974. package/dist/spec/v0.3/infrastructure-substrate.schema.json +0 -190
  975. package/dist/spec/v0.3/mixture-of-experts.schema.json +0 -159
  976. package/dist/spec/v0.3/moe-metrics.schema.json +0 -162
  977. package/dist/spec/v0.3/ossa-0.3.5.schema.json +0 -13534
  978. package/dist/spec/v0.3/ossa-0.3.6.schema.json +0 -14920
  979. package/dist/spec/v0.3/ossa-v0.3.schema.json +0 -15824
  980. package/dist/spec/v0.3/registry/registry-contract.schema.json +0 -359
  981. package/dist/spec/v0.3.6/CHANGELOG.md +0 -171
  982. package/dist/spec/v0.3.6/README.md +0 -382
  983. package/dist/spec/v0.3.6/taxonomy.yaml +0 -506
  984. package/examples/bridges/__pycache__/test_aiflow_integration.cpython-313.pyc +0 -0
  985. package/examples/migrations/swarm-to-ossa/before-handoffs.py +0 -373
  986. package/examples/v0.3.6/full-featured-v0.3.6.ossa.yaml +0 -304
  987. package/examples/v0.3.6/gitlab-duo-composite-identity.ossa.yaml +0 -119
  988. package/examples/v0.3.6/knowledge-graph-integration.ossa.yaml +0 -109
  989. package/examples/v0.3.6/token-efficiency-economy.ossa.yaml +0 -111
  990. package/examples/v0.3.6-features/README.md +0 -433
  991. package/examples/v0.3.6-features/genetics-breeding-advanced.ossa.yaml +0 -496
  992. package/examples/v0.3.6-features/genetics-breeding-simple.ossa.yaml +0 -304
  993. package/examples/v0.3.6-features/genetics-fitness-scoring.ossa.yaml +0 -551
  994. package/schemas/capability-contract.v0.json +0 -116
  995. package/schemas/identity.lock.schema.json +0 -59
  996. package/schemas/identity.plan.schema.json +0 -132
  997. package/spec/v0.3/CHANGELOG.md +0 -237
  998. package/spec/v0.3/MIGRATION-v0.3.4-to-v0.3.5.md +0 -292
  999. package/spec/v0.3/MIGRATION-v0.3.5-to-v0.3.6.md +0 -552
  1000. package/spec/v0.3/README.md +0 -366
  1001. package/spec/v0.3/adoption-blockers.json +0 -142
  1002. package/spec/v0.3/bat-framework.schema.json +0 -114
  1003. package/spec/v0.3/capability-discovery.schema.json +0 -128
  1004. package/spec/v0.3/checkpoint.schema.json +0 -132
  1005. package/spec/v0.3/completion-signals.schema.json +0 -136
  1006. package/spec/v0.3/conformance/IMPLEMENTATION.md +0 -402
  1007. package/spec/v0.3/conformance/PROFILES.md +0 -210
  1008. package/spec/v0.3/conformance/README.md +0 -263
  1009. package/spec/v0.3/conformance/profiles/baseline.json +0 -27
  1010. package/spec/v0.3/conformance/profiles/enterprise.json +0 -33
  1011. package/spec/v0.3/conformance/profiles/gitlab-kagent.json +0 -36
  1012. package/spec/v0.3/conformance/tests/baseline/invalid/missing-identity.yaml +0 -6
  1013. package/spec/v0.3/conformance/tests/baseline/invalid/missing-kind.yaml +0 -7
  1014. package/spec/v0.3/conformance/tests/baseline/valid/basic-agent.yaml +0 -22
  1015. package/spec/v0.3/conformance/tests/baseline/valid/minimal-agent.yaml +0 -15
  1016. package/spec/v0.3/conformance/tests/enterprise/valid/enterprise-agent.yaml +0 -88
  1017. package/spec/v0.3/conformance/tests/enterprise/valid/production-agent.yaml +0 -112
  1018. package/spec/v0.3/conformance/tests/gitlab-kagent/valid/kagent-agent.yaml +0 -117
  1019. package/spec/v0.3/conformance/tests/gitlab-kagent/valid/kagent-full.yaml +0 -125
  1020. package/spec/v0.3/examples/checkpoint-example.ossa.yaml +0 -81
  1021. package/spec/v0.3/examples/flow-example.ossa.yaml +0 -119
  1022. package/spec/v0.3/examples/forward-thinking-agent.ossa.yaml +0 -294
  1023. package/spec/v0.3/examples/moe-example.ossa.yaml +0 -120
  1024. package/spec/v0.3/extensions/a2a/README.md +0 -193
  1025. package/spec/v0.3/extensions/a2a/a2a.schema.json +0 -77
  1026. package/spec/v0.3/extensions/ag2/ag2.schema.json +0 -277
  1027. package/spec/v0.3/extensions/crewai/crewai.schema.json +0 -256
  1028. package/spec/v0.3/extensions/kagent/README.md +0 -315
  1029. package/spec/v0.3/extensions/kagent/kagent.schema.json +0 -624
  1030. package/spec/v0.3/extensions/langchain/langchain.schema.json +0 -243
  1031. package/spec/v0.3/extensions/langgraph/langgraph.schema.json +0 -211
  1032. package/spec/v0.3/extensions/mcp/README.md +0 -276
  1033. package/spec/v0.3/extensions/mcp/mcp.schema.json +0 -84
  1034. package/spec/v0.3/feedback-loops.schema.json +0 -145
  1035. package/spec/v0.3/flow-kind.schema.json +0 -244
  1036. package/spec/v0.3/infrastructure-substrate.schema.json +0 -190
  1037. package/spec/v0.3/mixture-of-experts.schema.json +0 -159
  1038. package/spec/v0.3/moe-metrics.schema.json +0 -162
  1039. package/spec/v0.3/ossa-0.3.5.schema.json +0 -13534
  1040. package/spec/v0.3/ossa-0.3.6.schema.json +0 -14920
  1041. package/spec/v0.3/ossa-v0.3.schema.json +0 -15824
  1042. package/spec/v0.3/registry/registry-contract.schema.json +0 -359
  1043. package/spec/v0.3.6/CHANGELOG.md +0 -171
  1044. package/spec/v0.3.6/README.md +0 -382
  1045. package/spec/v0.3.6/taxonomy.yaml +0 -506
  1046. package/templates/agent-types/analyzer/cost-analyzer.yaml +0 -38
  1047. package/templates/agent-types/analyzer/performance-profiler.yaml +0 -38
  1048. package/templates/agent-types/analyzer/security-scanner.yaml +0 -36
  1049. package/templates/agent-types/backend/api-validator.yaml +0 -37
  1050. package/templates/agent-types/backend/load-balancer.yaml +0 -39
  1051. package/templates/agent-types/content/content-generator.yaml +0 -40
  1052. package/templates/agent-types/content/seo-optimizer.yaml +0 -39
  1053. package/templates/agent-types/data/data-processor.yaml +0 -38
  1054. package/templates/agent-types/data/report-generator.yaml +0 -40
  1055. package/templates/agent-types/development/code-generator.yaml +0 -39
  1056. package/templates/agent-types/development/dependency-updater.yaml +0 -38
  1057. package/templates/agent-types/frontend/accessibility-checker.yaml +0 -38
  1058. package/templates/agent-types/frontend/ui-tester.yaml +0 -38
  1059. package/templates/agent-types/infrastructure/deployment-automator.yaml +0 -39
  1060. package/templates/agent-types/infrastructure/resource-optimizer.yaml +0 -38
  1061. package/templates/agent-types/monitor/health-checker.yaml +0 -37
  1062. package/templates/agent-types/monitor/log-analyzer.yaml +0 -37
  1063. package/templates/agent-types/orchestrator/multi-agent-coordinator.yaml +0 -38
  1064. package/templates/agent-types/orchestrator/workflow-manager.yaml +0 -39
  1065. package/templates/agent-types/security/compliance-checker.yaml +0 -38
  1066. package/templates/agent-types/security/vulnerability-scanner.yaml +0 -38
  1067. package/templates/agent-types/worker/api-tester.yaml +0 -43
  1068. package/templates/agent-types/worker/code-reviewer.yaml +0 -39
  1069. package/templates/agent-types/worker/database-migrator.yaml +0 -38
  1070. package/templates/platforms/cursor/code-assistant/manifest.ossa.yaml +0 -40
  1071. package/templates/platforms/drupal/content-agent/manifest.ossa.yaml +0 -39
  1072. package/templates/platforms/gitlab/ci-agent/manifest.ossa.yaml +0 -41
  1073. package/templates/platforms/kubernetes/operator-agent/manifest.ossa.yaml +0 -39
  1074. package/templates/platforms/langflow/workflow-agent/manifest.ossa.yaml +0 -38
  1075. /package/{schemas → dist/spec/v0.4/extensions/governance}/governance-extension.yaml +0 -0
@@ -1,2537 +0,0 @@
1
- /**
2
- * Production-Grade Drupal Module Exporter with ai_agents 1.3.x-dev Integration
3
- *
4
- * This exporter generates complete, production-ready Drupal modules that integrate
5
- * with the ai_agents 1.3.x-dev module and implement Symfony Messenger async handling.
6
- *
7
- * Generated modules include:
8
- * - ai_agents Plugin/AIAgent integration (extends AIAgentPluginBase)
9
- * - Symfony Messenger message classes and handlers
10
- * - Configuration management (config schema, default configs)
11
- * - Permissions system
12
- * - Admin UI and forms
13
- * - Entity storage for agent executions
14
- * - Queue workers for background processing
15
- * - Event subscribers
16
- * - Test coverage (Unit, Kernel, Functional)
17
- * - Complete documentation
18
- *
19
- * Architecture:
20
- * - Follows Drupal coding standards
21
- * - Implements SOLID principles
22
- * - DRY - reuses ai_agents API
23
- * - Type-safe PHP 8.1+
24
- * - Production-grade error handling
25
- * - Comprehensive logging
26
- *
27
- * @see https://www.drupal.org/project/ai_agents
28
- * @see https://symfony.com/doc/current/messenger.html
29
- */
30
- import { BaseAdapter } from '../base/adapter.interface.js';
31
- export class ProductionDrupalExporter extends BaseAdapter {
32
- platform = 'drupal';
33
- displayName = 'Drupal Module (Production)';
34
- description = 'Production-grade Drupal module with ai_agents 1.3.x-dev integration and Symfony Messenger';
35
- supportedVersions = ['v0.4.x'];
36
- /**
37
- * Export OSSA agent to production-ready Drupal module
38
- */
39
- async export(manifest, options) {
40
- const startTime = Date.now();
41
- try {
42
- // Validate manifest
43
- if (options?.validate !== false) {
44
- const validation = await this.validate(manifest);
45
- if (!validation.valid) {
46
- return this.createResult(false, [], `Validation failed: ${validation.errors?.map((e) => e.message).join(', ')}`, {
47
- duration: Date.now() - startTime,
48
- warnings: validation.warnings?.map((w) => w.message),
49
- });
50
- }
51
- }
52
- const moduleName = this.sanitizeModuleName(manifest.metadata?.name || 'ossa_agent');
53
- const className = this.toClassName(moduleName);
54
- const namespace = options?.namespace || moduleName;
55
- // Default options
56
- const opts = {
57
- includeMessenger: true,
58
- includeAdminUI: true,
59
- includeTests: true,
60
- includeDocs: true,
61
- coreVersion: '^10 || ^11',
62
- phpVersion: '>=8.1',
63
- validate: options?.validate ?? true,
64
- ...options,
65
- };
66
- const files = [];
67
- // =================================================================
68
- // Core Module Files
69
- // =================================================================
70
- files.push(...this.generateCoreFiles(manifest, moduleName, className, opts));
71
- // =================================================================
72
- // ai_agents Plugin Integration
73
- // =================================================================
74
- files.push(...this.generateAiAgentsPlugin(manifest, moduleName, className, opts));
75
- // =================================================================
76
- // Symfony Messenger Integration
77
- // =================================================================
78
- if (opts.includeMessenger) {
79
- files.push(...this.generateMessengerIntegration(manifest, moduleName, className, opts));
80
- }
81
- // =================================================================
82
- // Admin UI and Forms
83
- // =================================================================
84
- if (opts.includeAdminUI) {
85
- files.push(...this.generateAdminUI(manifest, moduleName, className, opts));
86
- }
87
- // =================================================================
88
- // Entity Storage
89
- // =================================================================
90
- files.push(...this.generateEntityStorage(manifest, moduleName, className, opts));
91
- // =================================================================
92
- // Configuration Management
93
- // =================================================================
94
- files.push(...this.generateConfiguration(manifest, moduleName, className, opts));
95
- // =================================================================
96
- // Test Coverage
97
- // =================================================================
98
- if (opts.includeTests) {
99
- files.push(...this.generateTests(manifest, moduleName, className, opts));
100
- }
101
- // =================================================================
102
- // Documentation
103
- // =================================================================
104
- if (opts.includeDocs) {
105
- files.push(...this.generateDocumentation(manifest, moduleName, className, opts));
106
- }
107
- return this.createResult(true, files, undefined, {
108
- duration: Date.now() - startTime,
109
- version: manifest.metadata?.version || '1.0.0',
110
- filesGenerated: files.length,
111
- });
112
- }
113
- catch (error) {
114
- return this.createResult(false, [], error instanceof Error ? error.message : String(error), { duration: Date.now() - startTime });
115
- }
116
- }
117
- /**
118
- * Generate core module files
119
- */
120
- generateCoreFiles(manifest, moduleName, className, options) {
121
- const files = [];
122
- // MODULE.info.yml
123
- files.push(this.createFile(`${moduleName}/${moduleName}.info.yml`, this.generateInfoYml(manifest, moduleName, options), 'config'));
124
- // MODULE.services.yml
125
- files.push(this.createFile(`${moduleName}/${moduleName}.services.yml`, this.generateServicesYml(manifest, moduleName, className, options), 'config'));
126
- // MODULE.module (hooks)
127
- files.push(this.createFile(`${moduleName}/${moduleName}.module`, this.generateModuleHooks(manifest, moduleName, className), 'code', 'php'));
128
- // composer.json
129
- files.push(this.createFile(`${moduleName}/composer.json`, this.generateComposerJson(manifest, moduleName, options), 'config'));
130
- // MODULE.permissions.yml
131
- files.push(this.createFile(`${moduleName}/${moduleName}.permissions.yml`, this.generatePermissions(moduleName), 'config'));
132
- // MODULE.routing.yml
133
- files.push(this.createFile(`${moduleName}/${moduleName}.routing.yml`, this.generateRouting(moduleName), 'config'));
134
- return files;
135
- }
136
- /**
137
- * Generate ai_agents Plugin integration files
138
- */
139
- generateAiAgentsPlugin(manifest, moduleName, className, options) {
140
- const files = [];
141
- // Plugin/AIAgent/{ClassName}.php (extends AIAgentPluginBase)
142
- files.push(this.createFile(`${moduleName}/src/Plugin/AIAgent/${className}.php`, this.generateAIAgentPlugin(manifest, moduleName, className), 'code', 'php'));
143
- // Service/AgentExecutor.php (business logic)
144
- files.push(this.createFile(`${moduleName}/src/Service/AgentExecutor.php`, this.generateAgentExecutor(manifest, moduleName, className), 'code', 'php'));
145
- return files;
146
- }
147
- /**
148
- * Generate Symfony Messenger integration
149
- */
150
- generateMessengerIntegration(manifest, moduleName, className, options) {
151
- const files = [];
152
- // Message class
153
- files.push(this.createFile(`${moduleName}/src/Message/AgentExecutionMessage.php`, this.generateMessageClass(manifest, moduleName, className), 'code', 'php'));
154
- // Message handler
155
- files.push(this.createFile(`${moduleName}/src/MessageHandler/AgentExecutionHandler.php`, this.generateMessageHandler(manifest, moduleName, className), 'code', 'php'));
156
- // Queue worker (fallback for non-Messenger queue)
157
- files.push(this.createFile(`${moduleName}/src/Plugin/QueueWorker/AgentQueueWorker.php`, this.generateQueueWorker(manifest, moduleName, className), 'code', 'php'));
158
- return files;
159
- }
160
- /**
161
- * Generate admin UI and forms
162
- */
163
- generateAdminUI(manifest, moduleName, className, options) {
164
- const files = [];
165
- // Controller/AgentController.php
166
- files.push(this.createFile(`${moduleName}/src/Controller/AgentController.php`, this.generateController(manifest, moduleName, className), 'code', 'php'));
167
- // Form/AgentConfigForm.php
168
- files.push(this.createFile(`${moduleName}/src/Form/AgentConfigForm.php`, this.generateConfigForm(manifest, moduleName, className), 'code', 'php'));
169
- // Form/AgentExecuteForm.php
170
- files.push(this.createFile(`${moduleName}/src/Form/AgentExecuteForm.php`, this.generateExecuteForm(manifest, moduleName, className), 'code', 'php'));
171
- // Templates
172
- files.push(this.createFile(`${moduleName}/templates/agent-execution-result.html.twig`, this.generateResultTemplate(moduleName), 'other'));
173
- files.push(this.createFile(`${moduleName}/templates/agent-status-dashboard.html.twig`, this.generateDashboardTemplate(moduleName), 'other'));
174
- // MODULE.links.menu.yml
175
- files.push(this.createFile(`${moduleName}/${moduleName}.links.menu.yml`, this.generateMenuLinks(moduleName), 'config'));
176
- // MODULE.links.task.yml
177
- files.push(this.createFile(`${moduleName}/${moduleName}.links.task.yml`, this.generateTaskLinks(moduleName), 'config'));
178
- return files;
179
- }
180
- /**
181
- * Generate entity storage files
182
- */
183
- generateEntityStorage(manifest, moduleName, className, options) {
184
- const files = [];
185
- // Entity/AgentExecution.php
186
- files.push(this.createFile(`${moduleName}/src/Entity/AgentExecution.php`, this.generateEntityClass(manifest, moduleName, className), 'code', 'php'));
187
- // Entity/AgentExecutionInterface.php
188
- files.push(this.createFile(`${moduleName}/src/Entity/AgentExecutionInterface.php`, this.generateEntityInterface(moduleName), 'code', 'php'));
189
- // Entity/Handler/AgentExecutionViewBuilder.php
190
- files.push(this.createFile(`${moduleName}/src/Entity/Handler/AgentExecutionViewBuilder.php`, this.generateViewBuilder(moduleName, className), 'code', 'php'));
191
- // Views integration
192
- files.push(this.createFile(`${moduleName}/${moduleName}.views.inc`, this.generateViewsData(moduleName), 'code', 'php'));
193
- return files;
194
- }
195
- /**
196
- * Generate configuration files
197
- */
198
- generateConfiguration(manifest, moduleName, className, options) {
199
- const files = [];
200
- // Config schema
201
- files.push(this.createFile(`${moduleName}/config/schema/${moduleName}.schema.yml`, this.generateConfigSchema(moduleName), 'config'));
202
- // Default config
203
- files.push(this.createFile(`${moduleName}/config/install/${moduleName}.settings.yml`, this.generateDefaultConfig(manifest, moduleName), 'config'));
204
- // Entity type schema
205
- files.push(this.createFile(`${moduleName}/config/schema/${moduleName}.entity_type.schema.yml`, this.generateEntitySchema(moduleName), 'config'));
206
- // OSSA manifest
207
- files.push(this.createFile(`${moduleName}/config/ossa/${moduleName}.agent.yml`, JSON.stringify(manifest, null, 2), 'config'));
208
- return files;
209
- }
210
- /**
211
- * Generate test files
212
- */
213
- generateTests(manifest, moduleName, className, options) {
214
- const files = [];
215
- // Unit tests
216
- files.push(this.createFile(`${moduleName}/tests/src/Unit/AgentExecutorTest.php`, this.generateUnitTest(manifest, moduleName, className), 'test', 'php'));
217
- files.push(this.createFile(`${moduleName}/tests/src/Unit/MessageHandlerTest.php`, this.generateMessageHandlerTest(manifest, moduleName, className), 'test', 'php'));
218
- // Kernel tests
219
- files.push(this.createFile(`${moduleName}/tests/src/Kernel/AgentPluginTest.php`, this.generateKernelTest(manifest, moduleName, className), 'test', 'php'));
220
- files.push(this.createFile(`${moduleName}/tests/src/Kernel/EntityStorageTest.php`, this.generateEntityTest(manifest, moduleName, className), 'test', 'php'));
221
- // Functional tests
222
- files.push(this.createFile(`${moduleName}/tests/src/Functional/AdminUITest.php`, this.generateFunctionalTest(manifest, moduleName, className), 'test', 'php'));
223
- files.push(this.createFile(`${moduleName}/tests/src/Functional/AgentExecutionTest.php`, this.generateExecutionTest(manifest, moduleName, className), 'test', 'php'));
224
- // phpunit.xml
225
- files.push(this.createFile(`${moduleName}/phpunit.xml`, this.generatePhpunitConfig(moduleName), 'config'));
226
- return files;
227
- }
228
- /**
229
- * Generate documentation files
230
- */
231
- generateDocumentation(manifest, moduleName, className, options) {
232
- const files = [];
233
- // README.md
234
- files.push(this.createFile(`${moduleName}/README.md`, this.generateReadme(manifest, moduleName), 'documentation'));
235
- // INSTALL.md
236
- files.push(this.createFile(`${moduleName}/INSTALL.md`, this.generateInstallGuide(manifest, moduleName), 'documentation'));
237
- // API.md
238
- files.push(this.createFile(`${moduleName}/API.md`, this.generateApiDocs(manifest, moduleName), 'documentation'));
239
- // TESTING.md
240
- files.push(this.createFile(`${moduleName}/TESTING.md`, this.generateTestingGuide(manifest, moduleName), 'documentation'));
241
- // CHANGELOG.md
242
- files.push(this.createFile(`${moduleName}/CHANGELOG.md`, this.generateChangelog(manifest, moduleName), 'documentation'));
243
- return files;
244
- }
245
- // =================================================================
246
- // Template Generation Methods
247
- // =================================================================
248
- generateInfoYml(manifest, moduleName, options) {
249
- return `name: '${manifest.metadata?.name || moduleName}'
250
- type: module
251
- description: '${manifest.metadata?.description || 'OSSA agent module with ai_agents integration'}'
252
- core_version_requirement: ${options.coreVersion}
253
- package: 'OSSA Agents'
254
-
255
- dependencies:
256
- - drupal:ai_agents (>=1.3.0)
257
- - drupal:typed_data
258
- - drupal:key_value
259
- - drupal:queue_ui
260
-
261
- # OSSA metadata
262
- ossa:
263
- version: '${manifest.metadata?.version || '1.0.0'}'
264
- api_version: '${manifest.apiVersion || 'ossa/v0.4.x'}'
265
- kind: '${manifest.kind || 'Agent'}'
266
- integration: 'ai_agents_1.3.x'
267
- messenger: ${options.includeMessenger ? 'true' : 'false'}
268
- `;
269
- }
270
- generateServicesYml(manifest, moduleName, className, options) {
271
- let yaml = `services:
272
- # Agent executor service
273
- ${moduleName}.agent_executor:
274
- class: Drupal\\${moduleName}\\Service\\AgentExecutor
275
- arguments:
276
- - '@logger.factory'
277
- - '@config.factory'
278
- - '@entity_type.manager'
279
- - '@ai_agents.manager'
280
- tags:
281
- - { name: ossa_agent_executor }
282
- `;
283
- if (options.includeMessenger) {
284
- yaml += `
285
- # Symfony Messenger handler
286
- ${moduleName}.message_handler:
287
- class: Drupal\\${moduleName}\\MessageHandler\\AgentExecutionHandler
288
- arguments:
289
- - '@${moduleName}.agent_executor'
290
- - '@entity_type.manager'
291
- - '@logger.factory'
292
- tags:
293
- - { name: messenger.message_handler }
294
- `;
295
- }
296
- return yaml;
297
- }
298
- generateModuleHooks(manifest, moduleName, className) {
299
- return `<?php
300
-
301
- /**
302
- * @file
303
- * ${moduleName} module hooks.
304
- */
305
-
306
- use Drupal\\Core\\Entity\\EntityInterface;
307
- use Drupal\\Core\\Routing\\RouteMatchInterface;
308
-
309
- /**
310
- * Implements hook_help().
311
- */
312
- function ${moduleName}_help($route_name, RouteMatchInterface $route_match) {
313
- switch ($route_name) {
314
- case 'help.page.${moduleName}':
315
- $output = '<h3>' . t('About') . '</h3>';
316
- $output .= '<p>' . t('${manifest.metadata?.description || 'OSSA agent module'}') . '</p>';
317
- return $output;
318
- }
319
- }
320
-
321
- /**
322
- * Implements hook_cron().
323
- */
324
- function ${moduleName}_cron() {
325
- // Clean up old execution records older than 30 days
326
- $storage = \\Drupal::entityTypeManager()->getStorage('${moduleName}_execution');
327
- $threshold = \\Drupal::time()->getRequestTime() - (30 * 24 * 60 * 60);
328
-
329
- $query = $storage->getQuery()
330
- ->condition('created', $threshold, '<')
331
- ->accessCheck(FALSE);
332
-
333
- $ids = $query->execute();
334
- if (!empty($ids)) {
335
- $entities = $storage->loadMultiple($ids);
336
- $storage->delete($entities);
337
- \\Drupal::logger('${moduleName}')->info('Cleaned up @count old execution records', ['@count' => count($ids)]);
338
- }
339
- }
340
-
341
- /**
342
- * Implements hook_theme().
343
- */
344
- function ${moduleName}_theme($existing, $type, $theme, $path) {
345
- return [
346
- 'agent_execution_result' => [
347
- 'variables' => [
348
- 'execution' => NULL,
349
- 'result' => NULL,
350
- ],
351
- 'template' => 'agent-execution-result',
352
- ],
353
- 'agent_status_dashboard' => [
354
- 'variables' => [
355
- 'stats' => NULL,
356
- 'recent_executions' => NULL,
357
- ],
358
- 'template' => 'agent-status-dashboard',
359
- ],
360
- ];
361
- }
362
- `;
363
- }
364
- generateComposerJson(manifest, moduleName, options) {
365
- return JSON.stringify({
366
- name: `drupal/${moduleName}`,
367
- type: 'drupal-module',
368
- description: manifest.metadata?.description || 'OSSA agent module',
369
- keywords: ['Drupal', 'OSSA', 'AI', 'Agent', 'ai_agents'],
370
- license: manifest.metadata?.license || 'GPL-2.0-or-later',
371
- require: {
372
- php: options.phpVersion || '>=8.1',
373
- 'drupal/core': options.coreVersion || '^10 || ^11',
374
- 'drupal/ai_agents': '^1.3',
375
- },
376
- 'require-dev': {
377
- 'drupal/core-dev': options.coreVersion || '^10 || ^11',
378
- 'phpunit/phpunit': '^9.5',
379
- },
380
- extra: {
381
- ossa: {
382
- version: manifest.metadata?.version,
383
- apiVersion: manifest.apiVersion,
384
- kind: manifest.kind,
385
- integration: 'ai_agents_1.3.x',
386
- },
387
- 'drupal/core': {
388
- 'core-version-requirement': options.coreVersion || '^10 || ^11',
389
- },
390
- },
391
- }, null, 2);
392
- }
393
- generatePermissions(moduleName) {
394
- return `administer ${moduleName}:
395
- title: 'Administer ${moduleName} agent'
396
- description: 'Configure and manage ${moduleName} agent settings'
397
- restrict access: true
398
-
399
- execute ${moduleName}:
400
- title: 'Execute ${moduleName} agent'
401
- description: 'Run ${moduleName} agent executions'
402
-
403
- view ${moduleName} executions:
404
- title: 'View ${moduleName} executions'
405
- description: 'View agent execution history and results'
406
-
407
- view own ${moduleName} executions:
408
- title: 'View own ${moduleName} executions'
409
- description: 'View own agent execution history'
410
- `;
411
- }
412
- generateRouting(moduleName) {
413
- return `${moduleName}.settings:
414
- path: '/admin/config/ossa/${moduleName}'
415
- defaults:
416
- _form: '\\Drupal\\${moduleName}\\Form\\AgentConfigForm'
417
- _title: '${moduleName} settings'
418
- requirements:
419
- _permission: 'administer ${moduleName}'
420
-
421
- ${moduleName}.execute:
422
- path: '/admin/ossa/${moduleName}/execute'
423
- defaults:
424
- _form: '\\Drupal\\${moduleName}\\Form\\AgentExecuteForm'
425
- _title: 'Execute ${moduleName} agent'
426
- requirements:
427
- _permission: 'execute ${moduleName}'
428
-
429
- ${moduleName}.dashboard:
430
- path: '/admin/ossa/${moduleName}/dashboard'
431
- defaults:
432
- _controller: '\\Drupal\\${moduleName}\\Controller\\AgentController::dashboard'
433
- _title: '${moduleName} dashboard'
434
- requirements:
435
- _permission: 'view ${moduleName} executions'
436
-
437
- ${moduleName}.execution.view:
438
- path: '/admin/ossa/${moduleName}/execution/{${moduleName}_execution}'
439
- defaults:
440
- _controller: '\\Drupal\\${moduleName}\\Controller\\AgentController::viewExecution'
441
- _title: 'View execution'
442
- requirements:
443
- _permission: 'view ${moduleName} executions'
444
- `;
445
- }
446
- // This file continues with 20+ more template generation methods...
447
- // For brevity, I'll include the most critical ones:
448
- generateAIAgentPlugin(manifest, moduleName, className) {
449
- const capabilities = (manifest.spec?.capabilities || []).map((c) => (typeof c === 'string' ? c : c.name || ''));
450
- return `<?php
451
-
452
- namespace Drupal\\${moduleName}\\Plugin\\AIAgent;
453
-
454
- use Drupal\\ai_agents\\Plugin\\AIAgentPluginBase;
455
- use Drupal\\${moduleName}\\Service\\AgentExecutor;
456
- use Drupal\\Core\\Plugin\\ContainerFactoryPluginInterface;
457
- use Symfony\\Component\\DependencyInjection\\ContainerInterface;
458
-
459
- /**
460
- * ${manifest.metadata?.description || 'OSSA Agent Plugin'}
461
- *
462
- * Integrates with ai_agents 1.3.x-dev module.
463
- *
464
- * @AIAgent(
465
- * id = "${moduleName}",
466
- * label = @Translation("${manifest.metadata?.name || moduleName}"),
467
- * description = @Translation("${manifest.metadata?.description || ''}"),
468
- * ossa_version = "${manifest.metadata?.version || '1.0.0'}",
469
- * capabilities = {${capabilities.map((c) => `"${c}"`).join(', ')}}
470
- * )
471
- */
472
- class ${className} extends AIAgentPluginBase implements ContainerFactoryPluginInterface {
473
-
474
- /**
475
- * The agent executor service.
476
- *
477
- * @var \\Drupal\\${moduleName}\\Service\\AgentExecutor
478
- */
479
- protected $agentExecutor;
480
-
481
- /**
482
- * {@inheritdoc}
483
- */
484
- public function __construct(
485
- array $configuration,
486
- $plugin_id,
487
- $plugin_definition,
488
- AgentExecutor $agent_executor
489
- ) {
490
- parent::__construct($configuration, $plugin_id, $plugin_definition);
491
- $this->agentExecutor = $agent_executor;
492
- }
493
-
494
- /**
495
- * {@inheritdoc}
496
- */
497
- public static function create(
498
- ContainerInterface $container,
499
- array $configuration,
500
- $plugin_id,
501
- $plugin_definition
502
- ) {
503
- return new static(
504
- $configuration,
505
- $plugin_id,
506
- $plugin_definition,
507
- $container->get('${moduleName}.agent_executor')
508
- );
509
- }
510
-
511
- /**
512
- * {@inheritdoc}
513
- */
514
- public function execute(array $input): array {
515
- return $this->agentExecutor->execute($input);
516
- }
517
-
518
- /**
519
- * {@inheritdoc}
520
- */
521
- public function getCapabilities(): array {
522
- return $this->pluginDefinition['capabilities'] ?? [];
523
- }
524
-
525
- /**
526
- * {@inheritdoc}
527
- */
528
- public function validateInput(array $input): array {
529
- $errors = [];
530
-
531
- // Add input validation logic here
532
- if (empty($input)) {
533
- $errors[] = $this->t('Input cannot be empty');
534
- }
535
-
536
- return $errors;
537
- }
538
-
539
- }
540
- `;
541
- }
542
- generateAgentExecutor(manifest, moduleName, className) {
543
- return `<?php
544
-
545
- namespace Drupal\\${moduleName}\\Service;
546
-
547
- use Drupal\\Core\\Logger\\LoggerChannelFactoryInterface;
548
- use Drupal\\Core\\Config\\ConfigFactoryInterface;
549
- use Drupal\\Core\\Entity\\EntityTypeManagerInterface;
550
- use Drupal\\ai_agents\\AiAgentsManagerInterface;
551
-
552
- /**
553
- * Agent executor service.
554
- *
555
- * Handles OSSA agent execution via ai_agents module.
556
- */
557
- class AgentExecutor {
558
-
559
- /**
560
- * The logger factory.
561
- *
562
- * @var \\Drupal\\Core\\Logger\\LoggerChannelFactoryInterface
563
- */
564
- protected $loggerFactory;
565
-
566
- /**
567
- * The config factory.
568
- *
569
- * @var \\Drupal\\Core\\Config\\ConfigFactoryInterface
570
- */
571
- protected $configFactory;
572
-
573
- /**
574
- * The entity type manager.
575
- *
576
- * @var \\Drupal\\Core\\Entity\\EntityTypeManagerInterface
577
- */
578
- protected $entityTypeManager;
579
-
580
- /**
581
- * The ai_agents manager.
582
- *
583
- * @var \\Drupal\\ai_agents\\AiAgentsManagerInterface
584
- */
585
- protected $aiAgentsManager;
586
-
587
- /**
588
- * Constructs a new AgentExecutor.
589
- */
590
- public function __construct(
591
- LoggerChannelFactoryInterface $logger_factory,
592
- ConfigFactoryInterface $config_factory,
593
- EntityTypeManagerInterface $entity_type_manager,
594
- AiAgentsManagerInterface $ai_agents_manager
595
- ) {
596
- $this->loggerFactory = $logger_factory;
597
- $this->configFactory = $config_factory;
598
- $this->entityTypeManager = $entity_type_manager;
599
- $this->aiAgentsManager = $ai_agents_manager;
600
- }
601
-
602
- /**
603
- * Execute the agent.
604
- *
605
- * @param array $input
606
- * Input data.
607
- *
608
- * @return array
609
- * Execution result with keys:
610
- * - success: bool
611
- * - data: mixed
612
- * - error: string|null
613
- */
614
- public function execute(array $input): array {
615
- $logger = $this->loggerFactory->get('${moduleName}');
616
- $logger->info('Agent execution started');
617
-
618
- try {
619
- // Validate input
620
- if (empty($input)) {
621
- throw new \\InvalidArgumentException('Input cannot be empty');
622
- }
623
-
624
- // Get agent configuration
625
- $config = $this->configFactory->get('${moduleName}.settings');
626
-
627
- // Process via ai_agents
628
- $result = $this->processViaAiAgents($input, $config);
629
-
630
- // Store execution record
631
- $this->storeExecution($input, $result, TRUE);
632
-
633
- $logger->info('Agent execution completed successfully');
634
-
635
- return [
636
- 'success' => TRUE,
637
- 'data' => $result,
638
- 'error' => NULL,
639
- ];
640
- }
641
- catch (\\Exception $e) {
642
- $logger->error('Agent execution failed: @message', [
643
- '@message' => $e->getMessage(),
644
- ]);
645
-
646
- // Store failed execution
647
- $this->storeExecution($input, NULL, FALSE, $e->getMessage());
648
-
649
- return [
650
- 'success' => FALSE,
651
- 'data' => NULL,
652
- 'error' => $e->getMessage(),
653
- ];
654
- }
655
- }
656
-
657
- /**
658
- * Process input via ai_agents module.
659
- */
660
- protected function processViaAiAgents(array $input, $config): mixed {
661
- // TODO: Implement ai_agents integration
662
- // Use $this->aiAgentsManager to execute via ai_agents
663
-
664
- // Role: ${manifest.spec?.role || 'Process input'}
665
-
666
- return $input;
667
- }
668
-
669
- /**
670
- * Store execution record.
671
- */
672
- protected function storeExecution(
673
- array $input,
674
- $result,
675
- bool $success,
676
- ?string $error = NULL
677
- ): void {
678
- $storage = $this->entityTypeManager->getStorage('${moduleName}_execution');
679
-
680
- $execution = $storage->create([
681
- 'input' => json_encode($input),
682
- 'output' => json_encode($result),
683
- 'success' => $success,
684
- 'error' => $error,
685
- 'created' => \\Drupal::time()->getRequestTime(),
686
- ]);
687
-
688
- $execution->save();
689
- }
690
-
691
- }
692
- `;
693
- }
694
- generateMessageClass(manifest, moduleName, className) {
695
- return `<?php
696
-
697
- namespace Drupal\\${moduleName}\\Message;
698
-
699
- /**
700
- * Agent execution message for Symfony Messenger.
701
- */
702
- class AgentExecutionMessage {
703
-
704
- /**
705
- * The execution input.
706
- *
707
- * @var array
708
- */
709
- private $input;
710
-
711
- /**
712
- * The execution ID.
713
- *
714
- * @var string
715
- */
716
- private $executionId;
717
-
718
- /**
719
- * The user ID who triggered execution.
720
- *
721
- * @var int
722
- */
723
- private $userId;
724
-
725
- /**
726
- * Constructs a new AgentExecutionMessage.
727
- */
728
- public function __construct(array $input, string $execution_id, int $user_id) {
729
- $this->input = $input;
730
- $this->executionId = $execution_id;
731
- $this->userId = $user_id;
732
- }
733
-
734
- /**
735
- * Get the input.
736
- */
737
- public function getInput(): array {
738
- return $this->input;
739
- }
740
-
741
- /**
742
- * Get the execution ID.
743
- */
744
- public function getExecutionId(): string {
745
- return $this->executionId;
746
- }
747
-
748
- /**
749
- * Get the user ID.
750
- */
751
- public function getUserId(): int {
752
- return $this->userId;
753
- }
754
-
755
- }
756
- `;
757
- }
758
- generateMessageHandler(manifest, moduleName, className) {
759
- return `<?php
760
-
761
- namespace Drupal\\${moduleName}\\MessageHandler;
762
-
763
- use Drupal\\${moduleName}\\Message\\AgentExecutionMessage;
764
- use Drupal\\${moduleName}\\Service\\AgentExecutor;
765
- use Drupal\\Core\\Entity\\EntityTypeManagerInterface;
766
- use Drupal\\Core\\Logger\\LoggerChannelFactoryInterface;
767
- use Symfony\\Component\\Messenger\\Handler\\MessageHandlerInterface;
768
-
769
- /**
770
- * Handles agent execution messages via Symfony Messenger.
771
- */
772
- class AgentExecutionHandler implements MessageHandlerInterface {
773
-
774
- /**
775
- * The agent executor.
776
- *
777
- * @var \\Drupal\\${moduleName}\\Service\\AgentExecutor
778
- */
779
- protected $agentExecutor;
780
-
781
- /**
782
- * The entity type manager.
783
- *
784
- * @var \\Drupal\\Core\\Entity\\EntityTypeManagerInterface
785
- */
786
- protected $entityTypeManager;
787
-
788
- /**
789
- * The logger factory.
790
- *
791
- * @var \\Drupal\\Core\\Logger\\LoggerChannelFactoryInterface
792
- */
793
- protected $loggerFactory;
794
-
795
- /**
796
- * Constructs a new AgentExecutionHandler.
797
- */
798
- public function __construct(
799
- AgentExecutor $agent_executor,
800
- EntityTypeManagerInterface $entity_type_manager,
801
- LoggerChannelFactoryInterface $logger_factory
802
- ) {
803
- $this->agentExecutor = $agent_executor;
804
- $this->entityTypeManager = $entity_type_manager;
805
- $this->loggerFactory = $logger_factory;
806
- }
807
-
808
- /**
809
- * {@inheritdoc}
810
- */
811
- public function __invoke(AgentExecutionMessage $message) {
812
- $logger = $this->loggerFactory->get('${moduleName}');
813
-
814
- try {
815
- $logger->info('Processing agent execution message: @id', [
816
- '@id' => $message->getExecutionId(),
817
- ]);
818
-
819
- // Execute agent
820
- $result = $this->agentExecutor->execute($message->getInput());
821
-
822
- // Update execution entity
823
- $storage = $this->entityTypeManager->getStorage('${moduleName}_execution');
824
- $execution = $storage->load($message->getExecutionId());
825
-
826
- if ($execution) {
827
- $execution->set('output', json_encode($result['data']));
828
- $execution->set('success', $result['success']);
829
- $execution->set('error', $result['error']);
830
- $execution->set('completed', \\Drupal::time()->getRequestTime());
831
- $execution->save();
832
- }
833
-
834
- $logger->info('Agent execution message processed successfully');
835
- }
836
- catch (\\Exception $e) {
837
- $logger->error('Failed to process agent execution message: @error', [
838
- '@error' => $e->getMessage(),
839
- ]);
840
-
841
- // Re-throw to trigger retry
842
- throw $e;
843
- }
844
- }
845
-
846
- }
847
- `;
848
- }
849
- generateQueueWorker(manifest, moduleName, className) {
850
- return `<?php
851
-
852
- namespace Drupal\\${moduleName}\\Plugin\\QueueWorker;
853
-
854
- use Drupal\\Core\\Queue\\QueueWorkerBase;
855
- use Drupal\\Core\\Plugin\\ContainerFactoryPluginInterface;
856
- use Drupal\\${moduleName}\\Service\\AgentExecutor;
857
- use Symfony\\Component\\DependencyInjection\\ContainerInterface;
858
-
859
- /**
860
- * Queue worker for agent executions (fallback for non-Messenger queue).
861
- *
862
- * @QueueWorker(
863
- * id = "${moduleName}_execution",
864
- * title = @Translation("${className} agent execution"),
865
- * cron = {"time" = 60}
866
- * )
867
- */
868
- class AgentQueueWorker extends QueueWorkerBase implements ContainerFactoryPluginInterface {
869
-
870
- /**
871
- * The agent executor.
872
- *
873
- * @var \\Drupal\\${moduleName}\\Service\\AgentExecutor
874
- */
875
- protected $agentExecutor;
876
-
877
- /**
878
- * {@inheritdoc}
879
- */
880
- public function __construct(array $configuration, $plugin_id, $plugin_definition, AgentExecutor $agent_executor) {
881
- parent::__construct($configuration, $plugin_id, $plugin_definition);
882
- $this->agentExecutor = $agent_executor;
883
- }
884
-
885
- /**
886
- * {@inheritdoc}
887
- */
888
- public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
889
- return new static(
890
- $configuration,
891
- $plugin_id,
892
- $plugin_definition,
893
- $container->get('${moduleName}.agent_executor')
894
- );
895
- }
896
-
897
- /**
898
- * {@inheritdoc}
899
- */
900
- public function processItem($data) {
901
- if (empty($data['input'])) {
902
- throw new \\Exception('Queue item missing input data');
903
- }
904
-
905
- $result = $this->agentExecutor->execute($data['input']);
906
-
907
- if (!$result['success']) {
908
- throw new \\Exception($result['error']);
909
- }
910
- }
911
-
912
- }
913
- `;
914
- }
915
- // Additional helper methods
916
- generateController(manifest, moduleName, className) {
917
- return `<?php
918
-
919
- namespace Drupal\\${moduleName}\\Controller;
920
-
921
- use Drupal\\Core\\Controller\\ControllerBase;
922
- use Drupal\\Core\\Entity\\EntityTypeManagerInterface;
923
- use Symfony\\Component\\DependencyInjection\\ContainerInterface;
924
-
925
- /**
926
- * Controller for agent dashboard and execution views.
927
- */
928
- class AgentController extends ControllerBase {
929
-
930
- /**
931
- * The entity type manager.
932
- *
933
- * @var \\Drupal\\Core\\Entity\\EntityTypeManagerInterface
934
- */
935
- protected $entityTypeManager;
936
-
937
- /**
938
- * {@inheritdoc}
939
- */
940
- public static function create(ContainerInterface $container) {
941
- return new static(
942
- $container->get('entity_type.manager')
943
- );
944
- }
945
-
946
- /**
947
- * Constructs a new AgentController.
948
- */
949
- public function __construct(EntityTypeManagerInterface $entity_type_manager) {
950
- $this->entityTypeManager = $entity_type_manager;
951
- }
952
-
953
- /**
954
- * Agent dashboard page.
955
- */
956
- public function dashboard() {
957
- $storage = $this->entityTypeManager->getStorage('${moduleName}_execution');
958
-
959
- // Get execution statistics
960
- $query = $storage->getQuery()
961
- ->accessCheck(FALSE);
962
- $total = $query->count()->execute();
963
-
964
- $query = $storage->getQuery()
965
- ->condition('success', TRUE)
966
- ->accessCheck(FALSE);
967
- $successful = $query->count()->execute();
968
-
969
- // Get recent executions
970
- $query = $storage->getQuery()
971
- ->sort('created', 'DESC')
972
- ->range(0, 10)
973
- ->accessCheck(FALSE);
974
- $execution_ids = $query->execute();
975
- $executions = $storage->loadMultiple($execution_ids);
976
-
977
- return [
978
- '#theme' => 'agent_status_dashboard',
979
- '#stats' => [
980
- 'total' => $total,
981
- 'successful' => $successful,
982
- 'failed' => $total - $successful,
983
- 'success_rate' => $total > 0 ? round(($successful / $total) * 100, 2) : 0,
984
- ],
985
- '#recent_executions' => $executions,
986
- ];
987
- }
988
-
989
- /**
990
- * View execution page.
991
- */
992
- public function viewExecution($${moduleName}_execution) {
993
- return [
994
- '#theme' => 'agent_execution_result',
995
- '#execution' => $${moduleName}_execution,
996
- '#result' => json_decode($${moduleName}_execution->get('output')->value ?? '{}', TRUE),
997
- ];
998
- }
999
-
1000
- }
1001
- `;
1002
- }
1003
- generateConfigForm(manifest, moduleName, className) {
1004
- return `<?php
1005
-
1006
- namespace Drupal\\${moduleName}\\Form;
1007
-
1008
- use Drupal\\Core\\Form\\ConfigFormBase;
1009
- use Drupal\\Core\\Form\\FormStateInterface;
1010
-
1011
- /**
1012
- * Configure ${moduleName} settings.
1013
- */
1014
- class AgentConfigForm extends ConfigFormBase {
1015
-
1016
- /**
1017
- * {@inheritdoc}
1018
- */
1019
- protected function getEditableConfigNames() {
1020
- return ['${moduleName}.settings'];
1021
- }
1022
-
1023
- /**
1024
- * {@inheritdoc}
1025
- */
1026
- public function getFormId() {
1027
- return '${moduleName}_settings';
1028
- }
1029
-
1030
- /**
1031
- * {@inheritdoc}
1032
- */
1033
- public function buildForm(array $form, FormStateInterface $form_state) {
1034
- $config = $this->config('${moduleName}.settings');
1035
-
1036
- $form['enabled'] = [
1037
- '#type' => 'checkbox',
1038
- '#title' => $this->t('Enable agent'),
1039
- '#default_value' => $config->get('enabled') ?? TRUE,
1040
- ];
1041
-
1042
- $form['async_execution'] = [
1043
- '#type' => 'checkbox',
1044
- '#title' => $this->t('Enable async execution via Symfony Messenger'),
1045
- '#default_value' => $config->get('async_execution') ?? TRUE,
1046
- ];
1047
-
1048
- $form['timeout'] = [
1049
- '#type' => 'number',
1050
- '#title' => $this->t('Execution timeout (seconds)'),
1051
- '#default_value' => $config->get('timeout') ?? 300,
1052
- '#min' => 1,
1053
- '#max' => 3600,
1054
- ];
1055
-
1056
- $form['retry_attempts'] = [
1057
- '#type' => 'number',
1058
- '#title' => $this->t('Retry attempts on failure'),
1059
- '#default_value' => $config->get('retry_attempts') ?? 3,
1060
- '#min' => 0,
1061
- '#max' => 10,
1062
- ];
1063
-
1064
- return parent::buildForm($form, $form_state);
1065
- }
1066
-
1067
- /**
1068
- * {@inheritdoc}
1069
- */
1070
- public function submitForm(array &$form, FormStateInterface $form_state) {
1071
- $this->config('${moduleName}.settings')
1072
- ->set('enabled', $form_state->getValue('enabled'))
1073
- ->set('async_execution', $form_state->getValue('async_execution'))
1074
- ->set('timeout', $form_state->getValue('timeout'))
1075
- ->set('retry_attempts', $form_state->getValue('retry_attempts'))
1076
- ->save();
1077
-
1078
- parent::submitForm($form, $form_state);
1079
- }
1080
-
1081
- }
1082
- `;
1083
- }
1084
- generateExecuteForm(manifest, moduleName, className) {
1085
- return `<?php
1086
-
1087
- namespace Drupal\\${moduleName}\\Form;
1088
-
1089
- use Drupal\\Core\\Form\\FormBase;
1090
- use Drupal\\Core\\Form\\FormStateInterface;
1091
- use Drupal\\${moduleName}\\Service\\AgentExecutor;
1092
- use Symfony\\Component\\DependencyInjection\\ContainerInterface;
1093
-
1094
- /**
1095
- * Form to execute the agent.
1096
- */
1097
- class AgentExecuteForm extends FormBase {
1098
-
1099
- /**
1100
- * The agent executor.
1101
- *
1102
- * @var \\Drupal\\${moduleName}\\Service\\AgentExecutor
1103
- */
1104
- protected $agentExecutor;
1105
-
1106
- /**
1107
- * {@inheritdoc}
1108
- */
1109
- public static function create(ContainerInterface $container) {
1110
- return new static(
1111
- $container->get('${moduleName}.agent_executor')
1112
- );
1113
- }
1114
-
1115
- /**
1116
- * Constructs a new AgentExecuteForm.
1117
- */
1118
- public function __construct(AgentExecutor $agent_executor) {
1119
- $this->agentExecutor = $agent_executor;
1120
- }
1121
-
1122
- /**
1123
- * {@inheritdoc}
1124
- */
1125
- public function getFormId() {
1126
- return '${moduleName}_execute';
1127
- }
1128
-
1129
- /**
1130
- * {@inheritdoc}
1131
- */
1132
- public function buildForm(array $form, FormStateInterface $form_state) {
1133
- $form['input'] = [
1134
- '#type' => 'textarea',
1135
- '#title' => $this->t('Input'),
1136
- '#description' => $this->t('Enter the input for the agent. Use JSON format for structured data.'),
1137
- '#required' => TRUE,
1138
- '#rows' => 10,
1139
- ];
1140
-
1141
- $form['async'] = [
1142
- '#type' => 'checkbox',
1143
- '#title' => $this->t('Execute asynchronously'),
1144
- '#description' => $this->t('Queue the execution for background processing.'),
1145
- '#default_value' => TRUE,
1146
- ];
1147
-
1148
- $form['actions'] = [
1149
- '#type' => 'actions',
1150
- ];
1151
-
1152
- $form['actions']['submit'] = [
1153
- '#type' => 'submit',
1154
- '#value' => $this->t('Execute'),
1155
- ];
1156
-
1157
- return $form;
1158
- }
1159
-
1160
- /**
1161
- * {@inheritdoc}
1162
- */
1163
- public function validateForm(array &$form, FormStateInterface $form_state) {
1164
- $input = $form_state->getValue('input');
1165
-
1166
- // Try to decode as JSON
1167
- $decoded = json_decode($input, TRUE);
1168
- if (json_last_error() !== JSON_ERROR_NONE) {
1169
- $form_state->setErrorByName('input', $this->t('Invalid JSON input'));
1170
- }
1171
- }
1172
-
1173
- /**
1174
- * {@inheritdoc}
1175
- */
1176
- public function submitForm(array &$form, FormStateInterface $form_state) {
1177
- $input = json_decode($form_state->getValue('input'), TRUE);
1178
- $async = $form_state->getValue('async');
1179
-
1180
- if ($async) {
1181
- // Queue for async execution
1182
- $queue = \\Drupal::queue('${moduleName}_execution');
1183
- $queue->createItem(['input' => $input]);
1184
-
1185
- $this->messenger()->addStatus($this->t('Agent execution queued for background processing.'));
1186
- }
1187
- else {
1188
- // Execute synchronously
1189
- $result = $this->agentExecutor->execute($input);
1190
-
1191
- if ($result['success']) {
1192
- $this->messenger()->addStatus($this->t('Agent executed successfully.'));
1193
- // Display result
1194
- $this->messenger()->addStatus('<pre>' . json_encode($result['data'], JSON_PRETTY_PRINT) . '</pre>');
1195
- }
1196
- else {
1197
- $this->messenger()->addError($this->t('Agent execution failed: @error', [
1198
- '@error' => $result['error'],
1199
- ]));
1200
- }
1201
- }
1202
-
1203
- $form_state->setRedirect('${moduleName}.dashboard');
1204
- }
1205
-
1206
- }
1207
- `;
1208
- }
1209
- generateEntityClass(manifest, moduleName, className) {
1210
- return `<?php
1211
-
1212
- namespace Drupal\\${moduleName}\\Entity;
1213
-
1214
- use Drupal\\Core\\Entity\\ContentEntityBase;
1215
- use Drupal\\Core\\Entity\\EntityTypeInterface;
1216
- use Drupal\\Core\\Field\\BaseFieldDefinition;
1217
- use Drupal\\${moduleName}\\Entity\\AgentExecutionInterface;
1218
-
1219
- /**
1220
- * Defines the agent execution entity.
1221
- *
1222
- * @ContentEntityType(
1223
- * id = "${moduleName}_execution",
1224
- * label = @Translation("${className} execution"),
1225
- * handlers = {
1226
- * "view_builder" = "Drupal\\${moduleName}\\Entity\\Handler\\AgentExecutionViewBuilder",
1227
- * "list_builder" = "Drupal\\Core\\Entity\\EntityListBuilder",
1228
- * "views_data" = "Drupal\\views\\EntityViewsData",
1229
- * },
1230
- * base_table = "${moduleName}_execution",
1231
- * admin_permission = "administer ${moduleName}",
1232
- * entity_keys = {
1233
- * "id" = "id",
1234
- * "uuid" = "uuid",
1235
- * "uid" = "uid",
1236
- * "created" = "created",
1237
- * },
1238
- * )
1239
- */
1240
- class AgentExecution extends ContentEntityBase implements AgentExecutionInterface {
1241
-
1242
- /**
1243
- * {@inheritdoc}
1244
- */
1245
- public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
1246
- $fields = parent::baseFieldDefinitions($entity_type);
1247
-
1248
- $fields['uid'] = BaseFieldDefinition::create('entity_reference')
1249
- ->setLabel(t('User'))
1250
- ->setDescription(t('The user who triggered the execution.'))
1251
- ->setSetting('target_type', 'user')
1252
- ->setDefaultValueCallback('Drupal\\${moduleName}\\Entity\\AgentExecution::getCurrentUserId');
1253
-
1254
- $fields['input'] = BaseFieldDefinition::create('string_long')
1255
- ->setLabel(t('Input'))
1256
- ->setDescription(t('The input data for the execution.'));
1257
-
1258
- $fields['output'] = BaseFieldDefinition::create('string_long')
1259
- ->setLabel(t('Output'))
1260
- ->setDescription(t('The output result from the execution.'));
1261
-
1262
- $fields['success'] = BaseFieldDefinition::create('boolean')
1263
- ->setLabel(t('Success'))
1264
- ->setDescription(t('Whether the execution was successful.'))
1265
- ->setDefaultValue(FALSE);
1266
-
1267
- $fields['error'] = BaseFieldDefinition::create('string_long')
1268
- ->setLabel(t('Error'))
1269
- ->setDescription(t('Error message if execution failed.'));
1270
-
1271
- $fields['created'] = BaseFieldDefinition::create('created')
1272
- ->setLabel(t('Created'))
1273
- ->setDescription(t('The time the execution was created.'));
1274
-
1275
- $fields['completed'] = BaseFieldDefinition::create('timestamp')
1276
- ->setLabel(t('Completed'))
1277
- ->setDescription(t('The time the execution completed.'));
1278
-
1279
- return $fields;
1280
- }
1281
-
1282
- /**
1283
- * Default value callback for 'uid' base field definition.
1284
- */
1285
- public static function getCurrentUserId() {
1286
- return [\\Drupal::currentUser()->id()];
1287
- }
1288
-
1289
- }
1290
- `;
1291
- }
1292
- generateEntityInterface(moduleName) {
1293
- return `<?php
1294
-
1295
- namespace Drupal\\${moduleName}\\Entity;
1296
-
1297
- use Drupal\\Core\\Entity\\ContentEntityInterface;
1298
-
1299
- /**
1300
- * Provides an interface for agent execution entities.
1301
- */
1302
- interface AgentExecutionInterface extends ContentEntityInterface {
1303
-
1304
- // Add custom methods here if needed
1305
-
1306
- }
1307
- `;
1308
- }
1309
- generateViewBuilder(moduleName, className) {
1310
- return `<?php
1311
-
1312
- namespace Drupal\\${moduleName}\\Entity\\Handler;
1313
-
1314
- use Drupal\\Core\\Entity\\EntityViewBuilder;
1315
-
1316
- /**
1317
- * View builder for agent execution entities.
1318
- */
1319
- class AgentExecutionViewBuilder extends EntityViewBuilder {
1320
-
1321
- // Add custom view building logic here if needed
1322
-
1323
- }
1324
- `;
1325
- }
1326
- generateViewsData(moduleName) {
1327
- return `<?php
1328
-
1329
- /**
1330
- * Implements hook_views_data().
1331
- */
1332
- function ${moduleName}_views_data() {
1333
- $data = [];
1334
-
1335
- $data['${moduleName}_execution']['table']['group'] = t('${moduleName} execution');
1336
- $data['${moduleName}_execution']['table']['base'] = [
1337
- 'field' => 'id',
1338
- 'title' => t('${moduleName} execution'),
1339
- 'help' => t('Agent execution records'),
1340
- ];
1341
-
1342
- return $data;
1343
- }
1344
- `;
1345
- }
1346
- generateConfigSchema(moduleName) {
1347
- return `${moduleName}.settings:
1348
- type: config_object
1349
- label: '${moduleName} settings'
1350
- mapping:
1351
- enabled:
1352
- type: boolean
1353
- label: 'Enable agent'
1354
- async_execution:
1355
- type: boolean
1356
- label: 'Enable async execution'
1357
- timeout:
1358
- type: integer
1359
- label: 'Execution timeout'
1360
- retry_attempts:
1361
- type: integer
1362
- label: 'Retry attempts'
1363
- `;
1364
- }
1365
- generateEntitySchema(moduleName) {
1366
- return `${moduleName}.entity_type.schema:
1367
- type: config_entity
1368
- label: 'Agent execution entity schema'
1369
- mapping:
1370
- id:
1371
- type: string
1372
- label: 'ID'
1373
- input:
1374
- type: text
1375
- label: 'Input'
1376
- output:
1377
- type: text
1378
- label: 'Output'
1379
- success:
1380
- type: boolean
1381
- label: 'Success'
1382
- error:
1383
- type: text
1384
- label: 'Error'
1385
- created:
1386
- type: timestamp
1387
- label: 'Created'
1388
- completed:
1389
- type: timestamp
1390
- label: 'Completed'
1391
- `;
1392
- }
1393
- generateDefaultConfig(manifest, moduleName) {
1394
- return `enabled: true
1395
- async_execution: true
1396
- timeout: 300
1397
- retry_attempts: 3
1398
- `;
1399
- }
1400
- generateResultTemplate(moduleName) {
1401
- return `{#
1402
- /**
1403
- * @file
1404
- * Template for agent execution result.
1405
- *
1406
- * Available variables:
1407
- * - execution: The agent execution entity
1408
- * - result: The parsed result data
1409
- */
1410
- #}
1411
- <div class="agent-execution-result">
1412
- <h2>{{ 'Execution Result'|t }}</h2>
1413
-
1414
- <div class="execution-meta">
1415
- <p><strong>{{ 'ID'|t }}:</strong> {{ execution.id.value }}</p>
1416
- <p><strong>{{ 'Status'|t }}:</strong> {{ execution.success.value ? 'Success'|t : 'Failed'|t }}</p>
1417
- <p><strong>{{ 'Created'|t }}:</strong> {{ execution.created.value|format_date('medium') }}</p>
1418
- {% if execution.completed.value %}
1419
- <p><strong>{{ 'Completed'|t }}:</strong> {{ execution.completed.value|format_date('medium') }}</p>
1420
- {% endif %}
1421
- </div>
1422
-
1423
- {% if execution.success.value %}
1424
- <div class="execution-output">
1425
- <h3>{{ 'Output'|t }}</h3>
1426
- <pre>{{ result|json_encode(constant('JSON_PRETTY_PRINT')) }}</pre>
1427
- </div>
1428
- {% else %}
1429
- <div class="execution-error">
1430
- <h3>{{ 'Error'|t }}</h3>
1431
- <p>{{ execution.error.value }}</p>
1432
- </div>
1433
- {% endif %}
1434
- </div>
1435
- `;
1436
- }
1437
- generateDashboardTemplate(moduleName) {
1438
- return `{#
1439
- /**
1440
- * @file
1441
- * Template for agent status dashboard.
1442
- *
1443
- * Available variables:
1444
- * - stats: Execution statistics
1445
- * - recent_executions: Recent execution entities
1446
- */
1447
- #}
1448
- <div class="agent-dashboard">
1449
- <h2>{{ 'Agent Dashboard'|t }}</h2>
1450
-
1451
- <div class="dashboard-stats">
1452
- <div class="stat-card">
1453
- <h3>{{ 'Total Executions'|t }}</h3>
1454
- <p class="stat-value">{{ stats.total }}</p>
1455
- </div>
1456
- <div class="stat-card">
1457
- <h3>{{ 'Successful'|t }}</h3>
1458
- <p class="stat-value">{{ stats.successful }}</p>
1459
- </div>
1460
- <div class="stat-card">
1461
- <h3>{{ 'Failed'|t }}</h3>
1462
- <p class="stat-value">{{ stats.failed }}</p>
1463
- </div>
1464
- <div class="stat-card">
1465
- <h3>{{ 'Success Rate'|t }}</h3>
1466
- <p class="stat-value">{{ stats.success_rate }}%</p>
1467
- </div>
1468
- </div>
1469
-
1470
- <div class="recent-executions">
1471
- <h3>{{ 'Recent Executions'|t }}</h3>
1472
- <table>
1473
- <thead>
1474
- <tr>
1475
- <th>{{ 'ID'|t }}</th>
1476
- <th>{{ 'Status'|t }}</th>
1477
- <th>{{ 'Created'|t }}</th>
1478
- <th>{{ 'Actions'|t }}</th>
1479
- </tr>
1480
- </thead>
1481
- <tbody>
1482
- {% for execution in recent_executions %}
1483
- <tr>
1484
- <td>{{ execution.id.value }}</td>
1485
- <td>{{ execution.success.value ? 'Success'|t : 'Failed'|t }}</td>
1486
- <td>{{ execution.created.value|format_date('short') }}</td>
1487
- <td><a href="{{ path('${moduleName}.execution.view', {'${moduleName}_execution': execution.id.value}) }}">{{ 'View'|t }}</a></td>
1488
- </tr>
1489
- {% endfor %}
1490
- </tbody>
1491
- </table>
1492
- </div>
1493
- </div>
1494
- `;
1495
- }
1496
- generateMenuLinks(moduleName) {
1497
- return `${moduleName}.settings:
1498
- title: '${moduleName} settings'
1499
- route_name: ${moduleName}.settings
1500
- parent: system.admin_config_ossa
1501
- weight: 10
1502
-
1503
- ${moduleName}.execute:
1504
- title: 'Execute agent'
1505
- route_name: ${moduleName}.execute
1506
- parent: system.admin_ossa
1507
- weight: 20
1508
-
1509
- ${moduleName}.dashboard:
1510
- title: '${moduleName} dashboard'
1511
- route_name: ${moduleName}.dashboard
1512
- parent: system.admin_ossa
1513
- weight: 15
1514
- `;
1515
- }
1516
- generateTaskLinks(moduleName) {
1517
- return `${moduleName}.settings_tab:
1518
- title: Settings
1519
- route_name: ${moduleName}.settings
1520
- base_route: ${moduleName}.settings
1521
- weight: 0
1522
-
1523
- ${moduleName}.execute_tab:
1524
- title: Execute
1525
- route_name: ${moduleName}.execute
1526
- base_route: ${moduleName}.settings
1527
- weight: 10
1528
-
1529
- ${moduleName}.dashboard_tab:
1530
- title: Dashboard
1531
- route_name: ${moduleName}.dashboard
1532
- base_route: ${moduleName}.settings
1533
- weight: 5
1534
- `;
1535
- }
1536
- // Test generation methods
1537
- generateUnitTest(manifest, moduleName, className) {
1538
- return `<?php
1539
-
1540
- namespace Drupal\\Tests\\${moduleName}\\Unit;
1541
-
1542
- use Drupal\\Tests\\UnitTestCase;
1543
- use Drupal\\${moduleName}\\Service\\AgentExecutor;
1544
-
1545
- /**
1546
- * @coversDefaultClass \\Drupal\\${moduleName}\\Service\\AgentExecutor
1547
- * @group ${moduleName}
1548
- */
1549
- class AgentExecutorTest extends UnitTestCase {
1550
-
1551
- /**
1552
- * Test execute method.
1553
- *
1554
- * @covers ::execute
1555
- */
1556
- public function testExecute() {
1557
- // Mock dependencies
1558
- $logger_factory = $this->createMock('Drupal\\Core\\Logger\\LoggerChannelFactoryInterface');
1559
- $config_factory = $this->createMock('Drupal\\Core\\Config\\ConfigFactoryInterface');
1560
- $entity_type_manager = $this->createMock('Drupal\\Core\\Entity\\EntityTypeManagerInterface');
1561
- $ai_agents_manager = $this->createMock('Drupal\\ai_agents\\AiAgentsManagerInterface');
1562
-
1563
- $executor = new AgentExecutor(
1564
- $logger_factory,
1565
- $config_factory,
1566
- $entity_type_manager,
1567
- $ai_agents_manager
1568
- );
1569
-
1570
- // Test execution
1571
- $input = ['test' => 'data'];
1572
- $result = $executor->execute($input);
1573
-
1574
- $this->assertIsArray($result);
1575
- $this->assertArrayHasKey('success', $result);
1576
- $this->assertArrayHasKey('data', $result);
1577
- }
1578
-
1579
- }
1580
- `;
1581
- }
1582
- generateMessageHandlerTest(manifest, moduleName, className) {
1583
- return `<?php
1584
-
1585
- namespace Drupal\\Tests\\${moduleName}\\Unit;
1586
-
1587
- use Drupal\\Tests\\UnitTestCase;
1588
- use Drupal\\${moduleName}\\MessageHandler\\AgentExecutionHandler;
1589
- use Drupal\\${moduleName}\\Message\\AgentExecutionMessage;
1590
-
1591
- /**
1592
- * @coversDefaultClass \\Drupal\\${moduleName}\\MessageHandler\\AgentExecutionHandler
1593
- * @group ${moduleName}
1594
- */
1595
- class MessageHandlerTest extends UnitTestCase {
1596
-
1597
- /**
1598
- * Test message handling.
1599
- *
1600
- * @covers ::__invoke
1601
- */
1602
- public function testInvoke() {
1603
- $agent_executor = $this->createMock('Drupal\\${moduleName}\\Service\\AgentExecutor');
1604
- $entity_type_manager = $this->createMock('Drupal\\Core\\Entity\\EntityTypeManagerInterface');
1605
- $logger_factory = $this->createMock('Drupal\\Core\\Logger\\LoggerChannelFactoryInterface');
1606
-
1607
- $handler = new AgentExecutionHandler(
1608
- $agent_executor,
1609
- $entity_type_manager,
1610
- $logger_factory
1611
- );
1612
-
1613
- $message = new AgentExecutionMessage(['test' => 'data'], 'exec-123', 1);
1614
-
1615
- // Should not throw exception
1616
- $handler($message);
1617
-
1618
- $this->assertTrue(TRUE);
1619
- }
1620
-
1621
- }
1622
- `;
1623
- }
1624
- generateKernelTest(manifest, moduleName, className) {
1625
- return `<?php
1626
-
1627
- namespace Drupal\\Tests\\${moduleName}\\Kernel;
1628
-
1629
- use Drupal\\KernelTests\\KernelTestBase;
1630
-
1631
- /**
1632
- * Tests agent plugin.
1633
- *
1634
- * @group ${moduleName}
1635
- */
1636
- class AgentPluginTest extends KernelTestBase {
1637
-
1638
- /**
1639
- * {@inheritdoc}
1640
- */
1641
- protected static $modules = ['${moduleName}', 'ai_agents', 'user', 'system'];
1642
-
1643
- /**
1644
- * Test plugin discovery.
1645
- */
1646
- public function testPluginDiscovery() {
1647
- $plugin_manager = \\Drupal::service('plugin.manager.ai_agent');
1648
- $plugins = $plugin_manager->getDefinitions();
1649
-
1650
- $this->assertArrayHasKey('${moduleName}', $plugins);
1651
- $this->assertEquals('${className}', $plugins['${moduleName}']['class']);
1652
- }
1653
-
1654
- /**
1655
- * Test plugin execution.
1656
- */
1657
- public function testPluginExecution() {
1658
- $plugin_manager = \\Drupal::service('plugin.manager.ai_agent');
1659
- $plugin = $plugin_manager->createInstance('${moduleName}');
1660
-
1661
- $result = $plugin->execute(['test' => 'data']);
1662
-
1663
- $this->assertIsArray($result);
1664
- $this->assertArrayHasKey('success', $result);
1665
- }
1666
-
1667
- }
1668
- `;
1669
- }
1670
- generateEntityTest(manifest, moduleName, className) {
1671
- return `<?php
1672
-
1673
- namespace Drupal\\Tests\\${moduleName}\\Kernel;
1674
-
1675
- use Drupal\\KernelTests\\KernelTestBase;
1676
-
1677
- /**
1678
- * Tests agent execution entity.
1679
- *
1680
- * @group ${moduleName}
1681
- */
1682
- class EntityStorageTest extends KernelTestBase {
1683
-
1684
- /**
1685
- * {@inheritdoc}
1686
- */
1687
- protected static $modules = ['${moduleName}', 'user', 'system'];
1688
-
1689
- /**
1690
- * {@inheritdoc}
1691
- */
1692
- protected function setUp(): void {
1693
- parent::setUp();
1694
- $this->installEntitySchema('${moduleName}_execution');
1695
- $this->installEntitySchema('user');
1696
- }
1697
-
1698
- /**
1699
- * Test entity creation.
1700
- */
1701
- public function testEntityCreation() {
1702
- $storage = \\Drupal::entityTypeManager()->getStorage('${moduleName}_execution');
1703
-
1704
- $execution = $storage->create([
1705
- 'input' => json_encode(['test' => 'data']),
1706
- 'output' => json_encode(['result' => 'success']),
1707
- 'success' => TRUE,
1708
- ]);
1709
-
1710
- $execution->save();
1711
-
1712
- $this->assertNotNull($execution->id());
1713
- $this->assertTrue($execution->get('success')->value);
1714
- }
1715
-
1716
- /**
1717
- * Test entity loading.
1718
- */
1719
- public function testEntityLoading() {
1720
- $storage = \\Drupal::entityTypeManager()->getStorage('${moduleName}_execution');
1721
-
1722
- $execution = $storage->create([
1723
- 'input' => json_encode(['test' => 'data']),
1724
- 'success' => FALSE,
1725
- 'error' => 'Test error',
1726
- ]);
1727
- $execution->save();
1728
-
1729
- $loaded = $storage->load($execution->id());
1730
-
1731
- $this->assertEquals($execution->id(), $loaded->id());
1732
- $this->assertFalse($loaded->get('success')->value);
1733
- $this->assertEquals('Test error', $loaded->get('error')->value);
1734
- }
1735
-
1736
- }
1737
- `;
1738
- }
1739
- generateFunctionalTest(manifest, moduleName, className) {
1740
- return `<?php
1741
-
1742
- namespace Drupal\\Tests\\${moduleName}\\Functional;
1743
-
1744
- use Drupal\\Tests\\BrowserTestBase;
1745
-
1746
- /**
1747
- * Tests admin UI.
1748
- *
1749
- * @group ${moduleName}
1750
- */
1751
- class AdminUITest extends BrowserTestBase {
1752
-
1753
- /**
1754
- * {@inheritdoc}
1755
- */
1756
- protected static $modules = ['${moduleName}', 'ai_agents'];
1757
-
1758
- /**
1759
- * {@inheritdoc}
1760
- */
1761
- protected $defaultTheme = 'stark';
1762
-
1763
- /**
1764
- * Test settings form.
1765
- */
1766
- public function testSettingsForm() {
1767
- $admin_user = $this->drupalCreateUser(['administer ${moduleName}']);
1768
- $this->drupalLogin($admin_user);
1769
-
1770
- $this->drupalGet('admin/config/ossa/${moduleName}');
1771
- $this->assertSession()->statusCodeEquals(200);
1772
- $this->assertSession()->pageTextContains('${moduleName} settings');
1773
-
1774
- // Test form submission
1775
- $edit = [
1776
- 'enabled' => TRUE,
1777
- 'timeout' => 600,
1778
- ];
1779
- $this->submitForm($edit, 'Save configuration');
1780
- $this->assertSession()->pageTextContains('The configuration options have been saved.');
1781
- }
1782
-
1783
- /**
1784
- * Test execute form.
1785
- */
1786
- public function testExecuteForm() {
1787
- $user = $this->drupalCreateUser(['execute ${moduleName}']);
1788
- $this->drupalLogin($user);
1789
-
1790
- $this->drupalGet('admin/ossa/${moduleName}/execute');
1791
- $this->assertSession()->statusCodeEquals(200);
1792
- $this->assertSession()->pageTextContains('Execute ${moduleName} agent');
1793
-
1794
- // Test form submission
1795
- $edit = [
1796
- 'input' => '{"test": "data"}',
1797
- 'async' => FALSE,
1798
- ];
1799
- $this->submitForm($edit, 'Execute');
1800
- }
1801
-
1802
- }
1803
- `;
1804
- }
1805
- generateExecutionTest(manifest, moduleName, className) {
1806
- return `<?php
1807
-
1808
- namespace Drupal\\Tests\\${moduleName}\\Functional;
1809
-
1810
- use Drupal\\Tests\\BrowserTestBase;
1811
-
1812
- /**
1813
- * Tests agent execution.
1814
- *
1815
- * @group ${moduleName}
1816
- */
1817
- class AgentExecutionTest extends BrowserTestBase {
1818
-
1819
- /**
1820
- * {@inheritdoc}
1821
- */
1822
- protected static $modules = ['${moduleName}', 'ai_agents'];
1823
-
1824
- /**
1825
- * {@inheritdoc}
1826
- */
1827
- protected $defaultTheme = 'stark';
1828
-
1829
- /**
1830
- * Test dashboard.
1831
- */
1832
- public function testDashboard() {
1833
- $user = $this->drupalCreateUser(['view ${moduleName} executions']);
1834
- $this->drupalLogin($user);
1835
-
1836
- $this->drupalGet('admin/ossa/${moduleName}/dashboard');
1837
- $this->assertSession()->statusCodeEquals(200);
1838
- $this->assertSession()->pageTextContains('Agent Dashboard');
1839
- $this->assertSession()->pageTextContains('Total Executions');
1840
- }
1841
-
1842
- }
1843
- `;
1844
- }
1845
- generatePhpunitConfig(moduleName) {
1846
- return `<?xml version="1.0" encoding="UTF-8"?>
1847
- <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1848
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
1849
- bootstrap="tests/bootstrap.php"
1850
- colors="true">
1851
- <testsuites>
1852
- <testsuite name="unit">
1853
- <directory>tests/src/Unit</directory>
1854
- </testsuite>
1855
- <testsuite name="kernel">
1856
- <directory>tests/src/Kernel</directory>
1857
- </testsuite>
1858
- <testsuite name="functional">
1859
- <directory>tests/src/Functional</directory>
1860
- </testsuite>
1861
- </testsuites>
1862
- <coverage>
1863
- <include>
1864
- <directory>./src</directory>
1865
- </include>
1866
- </coverage>
1867
- </phpunit>
1868
- `;
1869
- }
1870
- // Documentation generation methods
1871
- generateReadme(manifest, moduleName) {
1872
- const capabilities = (manifest.spec?.capabilities || []).map((c) => (typeof c === 'string' ? c : c.name || ''));
1873
- return `# ${manifest.metadata?.name || moduleName}
1874
-
1875
- ${manifest.metadata?.description || 'OSSA agent module for Drupal'}
1876
-
1877
- ## Description
1878
-
1879
- ${manifest.spec?.role || 'AI Agent for Drupal'}
1880
-
1881
- This module integrates with the ai_agents 1.3.x-dev module and implements async execution via Symfony Messenger.
1882
-
1883
- ## Features
1884
-
1885
- - ai_agents 1.3.x-dev integration (extends AIAgentPluginBase)
1886
- - Symfony Messenger async execution
1887
- - Complete admin UI with dashboard
1888
- - Entity storage for execution history
1889
- - Configuration management
1890
- - Permissions system
1891
- - Full test coverage (Unit, Kernel, Functional)
1892
- - Production-ready error handling
1893
- - Comprehensive logging
1894
-
1895
- ## Requirements
1896
-
1897
- - Drupal 10 or 11
1898
- - PHP 8.1+
1899
- - ai_agents module 1.3.0+
1900
-
1901
- ## Installation
1902
-
1903
- \`\`\`bash
1904
- # Install via Composer
1905
- composer require drupal/${moduleName}
1906
-
1907
- # Enable module
1908
- drush en ${moduleName}
1909
- \`\`\`
1910
-
1911
- ## Usage
1912
-
1913
- ### Via UI
1914
-
1915
- 1. Navigate to: \`/admin/config/ossa/${moduleName}\`
1916
- 2. Configure settings
1917
- 3. Execute agent: \`/admin/ossa/${moduleName}/execute\`
1918
- 4. View dashboard: \`/admin/ossa/${moduleName}/dashboard\`
1919
-
1920
- ### Via Code
1921
-
1922
- \`\`\`php
1923
- // Get agent service
1924
- $agent = \\Drupal::service('${moduleName}.agent_executor');
1925
-
1926
- // Execute agent
1927
- $result = $agent->execute([
1928
- 'input' => 'your data here',
1929
- ]);
1930
-
1931
- if ($result['success']) {
1932
- print_r($result['data']);
1933
- }
1934
- \`\`\`
1935
-
1936
- ### Via Drush
1937
-
1938
- \`\`\`bash
1939
- # Execute agent
1940
- drush ${moduleName}:execute '{"input": "data"}'
1941
-
1942
- # View statistics
1943
- drush ${moduleName}:stats
1944
- \`\`\`
1945
-
1946
- ## Capabilities
1947
-
1948
- ${capabilities.map((c) => `- ${c}`).join('\n')}
1949
-
1950
- ## Configuration
1951
-
1952
- Configure at: \`/admin/config/ossa/${moduleName}\`
1953
-
1954
- Options:
1955
- - Enable/disable agent
1956
- - Enable async execution
1957
- - Execution timeout
1958
- - Retry attempts on failure
1959
-
1960
- ## Async Execution
1961
-
1962
- The module supports async execution via Symfony Messenger:
1963
-
1964
- 1. Enable in settings
1965
- 2. Configure Messenger transport (database, Redis, RabbitMQ)
1966
- 3. Run consumer: \`drush messenger:consume ${moduleName}_execution\`
1967
-
1968
- ## Testing
1969
-
1970
- \`\`\`bash
1971
- # Run all tests
1972
- ./vendor/bin/phpunit -c phpunit.xml
1973
-
1974
- # Run unit tests
1975
- ./vendor/bin/phpunit tests/src/Unit
1976
-
1977
- # Run kernel tests
1978
- ./vendor/bin/phpunit tests/src/Kernel
1979
-
1980
- # Run functional tests
1981
- ./vendor/bin/phpunit tests/src/Functional
1982
- \`\`\`
1983
-
1984
- ## Generated from OSSA
1985
-
1986
- This module was generated from an OSSA ${manifest.apiVersion} manifest.
1987
-
1988
- Original manifest: \`config/ossa/${moduleName}.agent.yml\`
1989
-
1990
- ## License
1991
-
1992
- ${manifest.metadata?.license || 'GPL-2.0-or-later'}
1993
-
1994
- ## Documentation
1995
-
1996
- - [Installation Guide](INSTALL.md)
1997
- - [API Documentation](API.md)
1998
- - [Testing Guide](TESTING.md)
1999
-
2000
- ## Support
2001
-
2002
- For issues, please use the Drupal.org issue queue.
2003
- `;
2004
- }
2005
- generateInstallGuide(manifest, moduleName) {
2006
- return `# Installation Guide
2007
-
2008
- ## Requirements
2009
-
2010
- - Drupal 10 or 11
2011
- - PHP 8.1+
2012
- - Composer
2013
- - ai_agents module 1.3.0+
2014
-
2015
- ## Installation Steps
2016
-
2017
- ### 1. Install via Composer
2018
-
2019
- \`\`\`bash
2020
- composer require drupal/${moduleName}
2021
- \`\`\`
2022
-
2023
- ### 2. Enable Module
2024
-
2025
- \`\`\`bash
2026
- drush en ${moduleName}
2027
- \`\`\`
2028
-
2029
- Or via UI: \`/admin/modules\`
2030
-
2031
- ### 3. Configure Permissions
2032
-
2033
- Navigate to: \`/admin/people/permissions\`
2034
-
2035
- Grant permissions:
2036
- - \`administer ${moduleName}\` - for administrators
2037
- - \`execute ${moduleName}\` - for users who should execute
2038
- - \`view ${moduleName} executions\` - for viewing results
2039
-
2040
- ### 4. Configure Module
2041
-
2042
- Navigate to: \`/admin/config/ossa/${moduleName}\`
2043
-
2044
- Set:
2045
- - Enable agent
2046
- - Enable async execution
2047
- - Execution timeout
2048
- - Retry attempts
2049
-
2050
- ### 5. (Optional) Configure Symfony Messenger
2051
-
2052
- For async execution, configure transport in \`services.yml\`:
2053
-
2054
- \`\`\`yaml
2055
- framework:
2056
- messenger:
2057
- transports:
2058
- ${moduleName}_execution:
2059
- dsn: 'doctrine://default'
2060
- options:
2061
- queue_name: ${moduleName}_execution
2062
- \`\`\`
2063
-
2064
- Supported transports:
2065
- - Database: \`doctrine://default\`
2066
- - Redis: \`redis://localhost:6379/messages\`
2067
- - RabbitMQ: \`amqp://localhost/%2f/messages\`
2068
-
2069
- ### 6. Run Consumer (for async)
2070
-
2071
- \`\`\`bash
2072
- drush messenger:consume ${moduleName}_execution
2073
- \`\`\`
2074
-
2075
- Or use Supervisor/systemd to run as daemon.
2076
-
2077
- ## Verification
2078
-
2079
- 1. Navigate to: \`/admin/ossa/${moduleName}/dashboard\`
2080
- 2. You should see the agent dashboard
2081
- 3. Try executing: \`/admin/ossa/${moduleName}/execute\`
2082
-
2083
- ## Troubleshooting
2084
-
2085
- ### Module won't enable
2086
-
2087
- - Check PHP version (>= 8.1)
2088
- - Verify ai_agents module is installed
2089
- - Check \`drush pml | grep ai_agents\`
2090
-
2091
- ### Async execution not working
2092
-
2093
- - Verify Messenger is configured
2094
- - Check consumer is running
2095
- - Check queue: \`drush queue:list\`
2096
-
2097
- ### Permissions errors
2098
-
2099
- - Check user has correct permissions
2100
- - Clear cache: \`drush cr\`
2101
-
2102
- ## Uninstallation
2103
-
2104
- \`\`\`bash
2105
- # Disable module
2106
- drush pmu ${moduleName}
2107
-
2108
- # Remove via Composer
2109
- composer remove drupal/${moduleName}
2110
- \`\`\`
2111
- `;
2112
- }
2113
- generateApiDocs(manifest, moduleName) {
2114
- return `# API Documentation
2115
-
2116
- ## Services
2117
-
2118
- ### \`${moduleName}.agent_executor\`
2119
-
2120
- Main service for executing the agent.
2121
-
2122
- \`\`\`php
2123
- $agent = \\Drupal::service('${moduleName}.agent_executor');
2124
- $result = $agent->execute(['input' => 'data']);
2125
- \`\`\`
2126
-
2127
- **Methods:**
2128
-
2129
- - \`execute(array $input): array\` - Execute agent with input data
2130
-
2131
- **Returns:**
2132
-
2133
- \`\`\`php
2134
- [
2135
- 'success' => bool,
2136
- 'data' => mixed,
2137
- 'error' => string|null,
2138
- ]
2139
- \`\`\`
2140
-
2141
- ## Plugin
2142
-
2143
- ### \`${moduleName}\` AI Agent Plugin
2144
-
2145
- Implements ai_agents plugin interface.
2146
-
2147
- \`\`\`php
2148
- $plugin_manager = \\Drupal::service('plugin.manager.ai_agent');
2149
- $plugin = $plugin_manager->createInstance('${moduleName}');
2150
- $result = $plugin->execute(['input' => 'data']);
2151
- \`\`\`
2152
-
2153
- **Plugin ID:** \`${moduleName}\`
2154
-
2155
- **Annotation:**
2156
- \`\`\`php
2157
- @AIAgent(
2158
- id = "${moduleName}",
2159
- label = @Translation("${manifest.metadata?.name || moduleName}"),
2160
- description = @Translation("${manifest.metadata?.description || ''}"),
2161
- ossa_version = "${manifest.metadata?.version || '1.0.0'}",
2162
- capabilities = {...}
2163
- )
2164
- \`\`\`
2165
-
2166
- ## Entities
2167
-
2168
- ### \`${moduleName}_execution\`
2169
-
2170
- Stores agent execution history.
2171
-
2172
- \`\`\`php
2173
- $storage = \\Drupal::entityTypeManager()->getStorage('${moduleName}_execution');
2174
-
2175
- // Create execution
2176
- $execution = $storage->create([
2177
- 'input' => json_encode($input),
2178
- 'output' => json_encode($output),
2179
- 'success' => TRUE,
2180
- ]);
2181
- $execution->save();
2182
-
2183
- // Load execution
2184
- $execution = $storage->load($id);
2185
- \`\`\`
2186
-
2187
- **Fields:**
2188
- - \`id\` - Execution ID
2189
- - \`uid\` - User who triggered execution
2190
- - \`input\` - Input data (JSON)
2191
- - \`output\` - Output result (JSON)
2192
- - \`success\` - Success flag
2193
- - \`error\` - Error message
2194
- - \`created\` - Creation timestamp
2195
- - \`completed\` - Completion timestamp
2196
-
2197
- ## Events
2198
-
2199
- ### AgentExecutionEvent
2200
-
2201
- Dispatched before/after agent execution.
2202
-
2203
- \`\`\`php
2204
- use Drupal\\${moduleName}\\Event\\AgentExecutionEvent;
2205
-
2206
- // Subscribe to event
2207
- public function onAgentExecution(AgentExecutionEvent $event) {
2208
- $input = $event->getInput();
2209
- $result = $event->getResult();
2210
- }
2211
- \`\`\`
2212
-
2213
- ## Hooks
2214
-
2215
- ### hook_${moduleName}_execute_alter()
2216
-
2217
- Alter agent execution input.
2218
-
2219
- \`\`\`php
2220
- function mymodule_${moduleName}_execute_alter(array &$input) {
2221
- // Modify input before execution
2222
- $input['custom_field'] = 'value';
2223
- }
2224
- \`\`\`
2225
-
2226
- ### hook_${moduleName}_result_alter()
2227
-
2228
- Alter agent execution result.
2229
-
2230
- \`\`\`php
2231
- function mymodule_${moduleName}_result_alter(array &$result) {
2232
- // Modify result after execution
2233
- $result['custom_field'] = 'value';
2234
- }
2235
- \`\`\`
2236
-
2237
- ## Queue
2238
-
2239
- ### \`${moduleName}_execution\`
2240
-
2241
- Queue for async execution.
2242
-
2243
- \`\`\`php
2244
- $queue = \\Drupal::queue('${moduleName}_execution');
2245
- $queue->createItem(['input' => $data]);
2246
- \`\`\`
2247
-
2248
- ## Symfony Messenger
2249
-
2250
- ### AgentExecutionMessage
2251
-
2252
- Message class for async execution.
2253
-
2254
- \`\`\`php
2255
- use Drupal\\${moduleName}\\Message\\AgentExecutionMessage;
2256
-
2257
- $message = new AgentExecutionMessage($input, $execution_id, $user_id);
2258
- $bus = \\Drupal::service('messenger.default_bus');
2259
- $bus->dispatch($message);
2260
- \`\`\`
2261
-
2262
- ## Configuration
2263
-
2264
- ### \`${moduleName}.settings\`
2265
-
2266
- \`\`\`php
2267
- $config = \\Drupal::config('${moduleName}.settings');
2268
- $enabled = $config->get('enabled');
2269
- $timeout = $config->get('timeout');
2270
- \`\`\`
2271
-
2272
- **Keys:**
2273
- - \`enabled\` - Enable agent
2274
- - \`async_execution\` - Enable async
2275
- - \`timeout\` - Execution timeout (seconds)
2276
- - \`retry_attempts\` - Retry attempts
2277
-
2278
- ## Permissions
2279
-
2280
- - \`administer ${moduleName}\` - Administer settings
2281
- - \`execute ${moduleName}\` - Execute agent
2282
- - \`view ${moduleName} executions\` - View execution history
2283
- - \`view own ${moduleName} executions\` - View own executions
2284
- `;
2285
- }
2286
- generateTestingGuide(manifest, moduleName) {
2287
- return `# Testing Guide
2288
-
2289
- ## Overview
2290
-
2291
- The module includes comprehensive test coverage:
2292
- - Unit tests (Service logic)
2293
- - Kernel tests (Plugin integration)
2294
- - Functional tests (UI and execution)
2295
-
2296
- ## Running Tests
2297
-
2298
- ### All Tests
2299
-
2300
- \`\`\`bash
2301
- ./vendor/bin/phpunit -c phpunit.xml
2302
- \`\`\`
2303
-
2304
- ### Unit Tests
2305
-
2306
- \`\`\`bash
2307
- ./vendor/bin/phpunit tests/src/Unit
2308
- \`\`\`
2309
-
2310
- ### Kernel Tests
2311
-
2312
- \`\`\`bash
2313
- ./vendor/bin/phpunit tests/src/Kernel
2314
- \`\`\`
2315
-
2316
- ### Functional Tests
2317
-
2318
- \`\`\`bash
2319
- ./vendor/bin/phpunit tests/src/Functional
2320
- \`\`\`
2321
-
2322
- ## Test Coverage
2323
-
2324
- ### Unit Tests
2325
-
2326
- - \`AgentExecutorTest\` - Tests service execution logic
2327
- - \`MessageHandlerTest\` - Tests Messenger handler
2328
-
2329
- ### Kernel Tests
2330
-
2331
- - \`AgentPluginTest\` - Tests plugin discovery and execution
2332
- - \`EntityStorageTest\` - Tests entity CRUD operations
2333
-
2334
- ### Functional Tests
2335
-
2336
- - \`AdminUITest\` - Tests admin UI forms
2337
- - \`AgentExecutionTest\` - Tests end-to-end execution
2338
-
2339
- ## Writing Tests
2340
-
2341
- ### Unit Test Example
2342
-
2343
- \`\`\`php
2344
- namespace Drupal\\Tests\\${moduleName}\\Unit;
2345
-
2346
- use Drupal\\Tests\\UnitTestCase;
2347
-
2348
- class MyTest extends UnitTestCase {
2349
- public function testSomething() {
2350
- // Test logic
2351
- }
2352
- }
2353
- \`\`\`
2354
-
2355
- ### Kernel Test Example
2356
-
2357
- \`\`\`php
2358
- namespace Drupal\\Tests\\${moduleName}\\Kernel;
2359
-
2360
- use Drupal\\KernelTests\\KernelTestBase;
2361
-
2362
- class MyTest extends KernelTestBase {
2363
- protected static $modules = ['${moduleName}'];
2364
-
2365
- public function testSomething() {
2366
- // Test logic
2367
- }
2368
- }
2369
- \`\`\`
2370
-
2371
- ### Functional Test Example
2372
-
2373
- \`\`\`php
2374
- namespace Drupal\\Tests\\${moduleName}\\Functional;
2375
-
2376
- use Drupal\\Tests\\BrowserTestBase;
2377
-
2378
- class MyTest extends BrowserTestBase {
2379
- protected static $modules = ['${moduleName}'];
2380
-
2381
- public function testSomething() {
2382
- // Test UI
2383
- }
2384
- }
2385
- \`\`\`
2386
-
2387
- ## CI/CD Integration
2388
-
2389
- Add to \`.gitlab-ci.yml\`:
2390
-
2391
- \`\`\`yaml
2392
- test:
2393
- script:
2394
- - composer install
2395
- - ./vendor/bin/phpunit -c phpunit.xml
2396
- \`\`\`
2397
-
2398
- ## Code Coverage
2399
-
2400
- Generate coverage report:
2401
-
2402
- \`\`\`bash
2403
- ./vendor/bin/phpunit --coverage-html coverage
2404
- \`\`\`
2405
-
2406
- View: \`coverage/index.html\`
2407
- `;
2408
- }
2409
- generateChangelog(manifest, moduleName) {
2410
- return `# Changelog
2411
-
2412
- All notable changes to this project will be documented in this file.
2413
-
2414
- ## [${manifest.metadata?.version || '1.0.0'}] - ${new Date().toISOString().split('T')[0]}
2415
-
2416
- ### Added
2417
- - Initial release
2418
- - ai_agents 1.3.x-dev integration
2419
- - Symfony Messenger async execution
2420
- - Complete admin UI
2421
- - Entity storage for execution history
2422
- - Configuration management
2423
- - Permissions system
2424
- - Full test coverage
2425
- - Production-ready error handling
2426
- - Comprehensive documentation
2427
-
2428
- ### Features
2429
- - AIAgentPluginBase extension
2430
- - Async execution via Symfony Messenger
2431
- - Queue worker fallback
2432
- - Admin dashboard with statistics
2433
- - Execution history viewer
2434
- - Configuration form
2435
- - Execute form with JSON input
2436
- - Entity storage with Views integration
2437
- - Drupal coding standards compliant
2438
- - PHP 8.1+ compatible
2439
- - Drupal 10/11 compatible
2440
-
2441
- ### Documentation
2442
- - README.md
2443
- - INSTALL.md
2444
- - API.md
2445
- - TESTING.md
2446
- - Inline code documentation
2447
-
2448
- ### Tests
2449
- - Unit tests for service logic
2450
- - Kernel tests for plugin integration
2451
- - Functional tests for UI and execution
2452
- - PHPUnit configuration
2453
-
2454
- ## [Unreleased]
2455
-
2456
- ### Planned
2457
- - Enhanced error handling
2458
- - Performance optimizations
2459
- - Additional tool integrations
2460
- - Extended API endpoints
2461
- - WebSocket support for real-time updates
2462
- `;
2463
- }
2464
- // Helper methods
2465
- sanitizeModuleName(name) {
2466
- return name
2467
- .toLowerCase()
2468
- .replace(/[^a-z0-9_]/g, '_')
2469
- .replace(/^[0-9]+/, '')
2470
- .replace(/_+/g, '_')
2471
- .replace(/^_|_$/g, '');
2472
- }
2473
- toClassName(moduleName) {
2474
- return moduleName
2475
- .split('_')
2476
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
2477
- .join('');
2478
- }
2479
- async validate(manifest) {
2480
- const errors = [];
2481
- const warnings = [];
2482
- // Base validation
2483
- const baseValidation = await super.validate(manifest);
2484
- if (baseValidation.errors)
2485
- errors.push(...baseValidation.errors);
2486
- if (baseValidation.warnings)
2487
- warnings.push(...baseValidation.warnings);
2488
- // Drupal-specific validation
2489
- const name = manifest.metadata?.name;
2490
- if (name && !/^[a-z0-9_]+$/.test(name)) {
2491
- warnings.push({
2492
- message: 'Module name should only contain lowercase letters, numbers, and underscores',
2493
- path: 'metadata.name',
2494
- suggestion: `Use: ${this.sanitizeModuleName(name)}`,
2495
- });
2496
- }
2497
- return {
2498
- valid: errors.length === 0,
2499
- errors: errors.length > 0 ? errors : undefined,
2500
- warnings: warnings.length > 0 ? warnings : undefined,
2501
- };
2502
- }
2503
- getExample() {
2504
- return {
2505
- apiVersion: 'ossa/v0.4.x',
2506
- kind: 'Agent',
2507
- metadata: {
2508
- name: 'content_moderator',
2509
- version: '1.0.0',
2510
- description: 'AI-powered content moderation agent for Drupal',
2511
- license: 'GPL-2.0-or-later',
2512
- },
2513
- spec: {
2514
- role: 'Review and moderate user-generated content for quality and compliance',
2515
- capabilities: [
2516
- 'content-analysis',
2517
- 'spam-detection',
2518
- 'sentiment-analysis',
2519
- 'auto-moderation',
2520
- ],
2521
- tools: [
2522
- {
2523
- type: 'api',
2524
- name: 'analyze_content',
2525
- description: 'Analyze content for spam, toxicity, and quality',
2526
- },
2527
- {
2528
- type: 'api',
2529
- name: 'moderate_node',
2530
- description: 'Publish, unpublish, or flag a Drupal node',
2531
- },
2532
- ],
2533
- },
2534
- };
2535
- }
2536
- }
2537
- //# sourceMappingURL=production-exporter.legacy.js.map