@bluefly/openstandardagents 0.4.9 → 0.5.1

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 (259) hide show
  1. package/.version.json +3 -3
  2. package/CHANGELOG.md +35 -4
  3. package/README.md +77 -62
  4. package/dist/.version.json +3 -3
  5. package/dist/adapters/a2a/a2a-protocol.js +4 -2
  6. package/dist/adapters/a2a/a2a-tool.js +4 -2
  7. package/dist/adapters/a2a/mcp-integration.d.ts +2 -1
  8. package/dist/adapters/a2a/mcp-integration.js +6 -3
  9. package/dist/adapters/browser/browser-exporter.d.ts +26 -0
  10. package/dist/adapters/browser/browser-exporter.js +73 -0
  11. package/dist/adapters/browser/browser-runner.d.ts +23 -0
  12. package/dist/adapters/browser/browser-runner.js +46 -0
  13. package/dist/adapters/browser/index.d.ts +9 -0
  14. package/dist/adapters/browser/index.js +9 -0
  15. package/dist/adapters/claude-code/adapter.js +2 -2
  16. package/dist/adapters/docker/generators.js +19 -19
  17. package/dist/adapters/docker/index.d.ts +2 -0
  18. package/dist/adapters/docker/index.js +2 -0
  19. package/dist/adapters/docker/openclaw-bridge.d.ts +57 -0
  20. package/dist/adapters/docker/openclaw-bridge.js +173 -0
  21. package/dist/adapters/drupal/generator.js +76 -76
  22. package/dist/adapters/drupal/index.d.ts +1 -0
  23. package/dist/adapters/drupal/index.js +2 -0
  24. package/dist/adapters/drupal/twig-renderer.d.ts +23 -0
  25. package/dist/adapters/drupal/twig-renderer.js +99 -0
  26. package/dist/adapters/gitlab/agent-generator.js +2 -1
  27. package/dist/adapters/openai-agents/adapter.js +2 -2
  28. package/dist/api/index.js +2 -1
  29. package/dist/api/routes/mcp.router.js +3 -1
  30. package/dist/api/routes/wizard.router.js +3 -1
  31. package/dist/cli/commands/agent/discover-type.command.js +1 -1
  32. package/dist/cli/commands/agent-card.command.js +37 -10
  33. package/dist/cli/commands/agents-sync.command.d.ts +2 -2
  34. package/dist/cli/commands/agents-sync.command.js +27 -17
  35. package/dist/cli/commands/catalog/config.js +1 -1
  36. package/dist/cli/commands/catalog/validate.command.js +2 -2
  37. package/dist/cli/commands/config.command.js +2 -2
  38. package/dist/cli/commands/daemon.command.js +32 -8
  39. package/dist/cli/commands/discover.d.ts +1 -1
  40. package/dist/cli/commands/discover.js +16 -8
  41. package/dist/cli/commands/economics.command.d.ts +9 -0
  42. package/dist/cli/commands/economics.command.js +113 -0
  43. package/dist/cli/commands/export.command.js +6 -3
  44. package/dist/cli/commands/mcp.command.js +3 -1
  45. package/dist/cli/commands/memory.command.d.ts +18 -0
  46. package/dist/cli/commands/memory.command.js +168 -0
  47. package/dist/cli/commands/publish.command.js +7 -4
  48. package/dist/cli/commands/serve-builder-routes.js +1 -1
  49. package/dist/cli/commands/usie-skills.command.d.ts +24 -0
  50. package/dist/cli/commands/usie-skills.command.js +297 -0
  51. package/dist/cli/commands/validate.command.js +8 -1
  52. package/dist/cli/commands/verify.d.ts +3 -3
  53. package/dist/cli/commands/verify.js +12 -6
  54. package/dist/cli/commands/workspace.command.d.ts +1 -0
  55. package/dist/cli/commands/workspace.command.js +28 -4
  56. package/dist/cli/index.js +12 -0
  57. package/dist/cli/schema-driven/schema-loader.js +5 -5
  58. package/dist/cli/workspace-validate.d.ts +23 -0
  59. package/dist/cli/workspace-validate.js +117 -0
  60. package/dist/data/platform-matrix.js +1 -4
  61. package/dist/generated/types.d.ts +97 -97
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +2 -0
  64. package/dist/mcp-server/index.js +658 -982
  65. package/dist/mesh/discovery-gkg.d.ts +26 -0
  66. package/dist/mesh/discovery-gkg.js +92 -0
  67. package/dist/messenger/Handler/AgentBatchHandler.js +3 -2
  68. package/dist/messenger/Handler/AgentExecutionHandler.js +6 -1
  69. package/dist/package.json +43 -14
  70. package/dist/sdks/shared/types.d.ts +1 -1
  71. package/dist/services/agent-card-generator.js +6 -2
  72. package/dist/services/daemon/audit-log.service.js +3 -1
  73. package/dist/services/daemon/execution.service.js +8 -4
  74. package/dist/services/daemon/fs-watcher.service.js +6 -7
  75. package/dist/services/daemon/pairing.service.js +2 -1
  76. package/dist/services/daemon/skill-aggregator.service.js +105 -21
  77. package/dist/services/daemon/sse-endpoints.js +1 -1
  78. package/dist/services/daemon/ws-server.js +10 -3
  79. package/dist/services/export/langchain/langchain-exporter.js +2 -2
  80. package/dist/services/export/langchain/memory-generator.js +2 -2
  81. package/dist/services/export/testing/test-generator.js +1 -1
  82. package/dist/services/governance/cedar-provider.js +12 -8
  83. package/dist/services/governance/cedar-validator.service.js +1 -1
  84. package/dist/services/mcp/bridge.service.js +40 -9
  85. package/dist/services/openapi-extensions-validation.d.ts +20 -0
  86. package/dist/services/openapi-extensions-validation.js +193 -0
  87. package/dist/services/release-automation/merge-request.service.d.ts +4 -4
  88. package/dist/services/release-automation/release-buttons.js +3 -3
  89. package/dist/services/release-automation/schemas/release.schema.d.ts +3 -3
  90. package/dist/services/runtime/openai.adapter.d.ts +46 -13
  91. package/dist/services/runtime/openai.adapter.js +169 -131
  92. package/dist/services/skill-registry.service.d.ts +1 -1
  93. package/dist/services/skills-pipeline/skills-research.service.js +47 -7
  94. package/dist/services/taxonomy-service.d.ts +3 -3
  95. package/dist/services/trust/trust.service.js +6 -4
  96. package/dist/services/validation-zod.service.js +3 -22
  97. package/dist/services/validators/index.d.ts +1 -0
  98. package/dist/services/validators/index.js +1 -0
  99. package/dist/services/validators/registry.d.ts +21 -0
  100. package/dist/services/validators/registry.js +42 -0
  101. package/dist/skills/test-skill/package.json +1 -1
  102. package/dist/spec/extensions/cognition.schema.json +87 -0
  103. package/dist/spec/extensions/role-manifest.md +188 -0
  104. package/dist/spec/layer4-economics/duadp-examples.json +44 -0
  105. package/dist/spec/v0.4/agent.schema.json +14 -0
  106. package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
  107. package/dist/spec/v0.5/agent-builder-openapi.yaml +230 -0
  108. package/dist/spec/v0.5/agent.schema.json +34 -2
  109. package/dist/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
  110. package/dist/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
  111. package/dist/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
  112. package/dist/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
  113. package/dist/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
  114. package/dist/spec/v0.5/memory-hierarchy.yaml +120 -0
  115. package/dist/spec/v0.5/role.schema.json +268 -0
  116. package/dist/spec/v1/agent-card.schema.json +254 -0
  117. package/dist/types/cognition.zod.d.ts +312 -0
  118. package/dist/types/cognition.zod.js +223 -0
  119. package/dist/types/identity.zod.d.ts +5 -5
  120. package/dist/types/index.d.ts +54 -6
  121. package/dist/types/index.js +6 -2
  122. package/dist/types/personality.zod.d.ts +3 -3
  123. package/dist/types/role.d.ts +126 -0
  124. package/dist/types/role.js +38 -0
  125. package/dist/utils/http-client.d.ts +22 -0
  126. package/dist/utils/http-client.js +51 -0
  127. package/dist/utils/index.d.ts +3 -0
  128. package/dist/utils/index.js +3 -0
  129. package/dist/utils/proxy-resolver.d.ts +36 -0
  130. package/dist/utils/proxy-resolver.js +59 -0
  131. package/dist/utils/user-agent.d.ts +11 -0
  132. package/dist/utils/user-agent.js +17 -0
  133. package/dist/validation/validator.js +1 -1
  134. package/dist/validation/version-compliance.js +1 -1
  135. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
  136. package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
  137. package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
  138. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
  139. package/examples/agents/security-audit-agent.ossa.yaml +234 -0
  140. package/examples/agentscope/react-assistant/README.md +1 -1
  141. package/examples/agentscope/react-assistant/agent.ossa.yaml +37 -33
  142. package/examples/drupal/content-moderator.ossa.yaml +2 -2
  143. package/examples/drupal/drupal-contributor-agent/.eslintrc.json +58 -0
  144. package/examples/drupal/drupal-contributor-agent/.prettierrc.json +10 -0
  145. package/examples/drupal/drupal-contributor-agent/package.json +55 -0
  146. package/examples/drupal/drupal-contributor-agent/src/core/index.ts +10 -0
  147. package/examples/drupal/drupal-contributor-agent/src/index.ts +17 -0
  148. package/examples/drupal/drupal-contributor-agent/src/types/index.ts +180 -0
  149. package/examples/drupal/drupal-contributor-agent/tsconfig.json +36 -0
  150. package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
  151. package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
  152. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
  153. package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
  154. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
  155. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  156. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  157. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  158. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  159. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  160. package/examples/getting-started/README.md +3 -3
  161. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  162. package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
  163. package/examples/hierarchical-agent.ossa.yaml +10 -53
  164. package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
  165. package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
  166. package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
  167. package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
  168. package/examples/pipeline-agent.ossa.yaml +3 -3
  169. package/examples/platform-specific/claude-code-subagent.yaml +1 -1
  170. package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
  171. package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
  172. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
  173. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
  174. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
  175. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
  176. package/examples/roles/drupal-developer.role.yaml +37 -0
  177. package/examples/roles/platform-operator.role.yaml +28 -0
  178. package/examples/roles/security-auditor.role.yaml +27 -0
  179. package/examples/swarm-agent.ossa.yaml +13 -51
  180. package/examples/team-agent.ossa.yaml +12 -61
  181. package/examples/team-lead-teammate.ossa.yaml +12 -17
  182. package/openapi/agent-cognition-sessions.yaml +580 -0
  183. package/openapi/agent-communication.yaml +260 -212
  184. package/openapi/agent-crud.yaml +237 -207
  185. package/openapi/agent-discovery.yaml +119 -81
  186. package/openapi/agent-identity.yaml +219 -187
  187. package/openapi/agent-taxonomy.yaml +95 -38
  188. package/openapi/agents-md-service.yaml +103 -30
  189. package/openapi/cli/openapi.yaml +147 -40
  190. package/openapi/core/ossa-core-api.openapi.yaml +327 -271
  191. package/openapi/core/ossa-registry-api.openapi.yaml +299 -236
  192. package/openapi/core/ossa-registry.openapi.yaml +299 -159
  193. package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
  194. package/openapi/daemon-api.openapi.yaml +323 -181
  195. package/openapi/dev-cli/openapi.yaml +137 -113
  196. package/openapi/github-sync.yaml +62 -19
  197. package/openapi/marketplace-plugin.openapi.yaml +539 -466
  198. package/openapi/ossa-api.openapi.yaml +354 -213
  199. package/openapi/ossa-cli-enhancements.openapi.yaml +109 -90
  200. package/openapi/ossa-cli.yaml +260 -184
  201. package/openapi/protocols/sse-streams.yaml +66 -74
  202. package/openapi/protocols/websocket-events.yaml +61 -54
  203. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
  204. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
  205. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
  206. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
  207. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
  208. package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
  209. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
  210. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
  211. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
  212. package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
  213. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
  214. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
  215. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
  216. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
  217. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
  218. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
  219. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
  220. package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
  221. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
  222. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
  223. package/openapi/release-automation.openapi.yaml +48 -14
  224. package/openapi/schemas/common/agent.yaml +30 -29
  225. package/openapi/schemas/common/economics.yaml +98 -0
  226. package/openapi/schemas/common/errors.yaml +13 -3
  227. package/openapi/schemas/common/metadata.yaml +22 -7
  228. package/openapi/schemas/common/pagination.yaml +18 -6
  229. package/openapi/schemas/common/security.yaml +13 -5
  230. package/openapi/schemas/index.yaml +49 -42
  231. package/openapi/uadp-asyncapi.yaml +5 -3
  232. package/openapi/uadp-openapi.yaml +243 -165
  233. package/openapi/version-management.openapi.yaml +142 -135
  234. package/package.json +43 -14
  235. package/spec/extensions/cognition.schema.json +87 -0
  236. package/spec/extensions/role-manifest.md +188 -0
  237. package/spec/layer4-economics/duadp-examples.json +44 -0
  238. package/spec/v0.4/agent.schema.json +14 -0
  239. package/spec/v0.4/extensions/mcp/README.md +1 -1
  240. package/spec/v0.5/agent-builder-openapi.yaml +230 -0
  241. package/spec/v0.5/agent.schema.json +34 -2
  242. package/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
  243. package/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
  244. package/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
  245. package/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
  246. package/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
  247. package/spec/v0.5/memory-hierarchy.yaml +120 -0
  248. package/spec/v0.5/role.schema.json +268 -0
  249. package/spec/v1/agent-card.schema.json +254 -0
  250. package/dist/adapters/a2a/__tests__/mcp-integration.spec.d.ts +0 -5
  251. package/dist/adapters/a2a/__tests__/mcp-integration.spec.js +0 -268
  252. package/dist/adapters/a2a/__tests__/mcp-transport.spec.d.ts +0 -5
  253. package/dist/adapters/a2a/__tests__/mcp-transport.spec.js +0 -203
  254. package/dist/mcp-server/__tests__/mcp-server.spec.d.ts +0 -8
  255. package/dist/mcp-server/__tests__/mcp-server.spec.js +0 -557
  256. package/dist/validation/__tests__/error-codes.test.d.ts +0 -5
  257. package/dist/validation/__tests__/error-codes.test.js +0 -252
  258. package/dist/version-management/core/version-manager.test.d.ts +0 -2
  259. package/dist/version-management/core/version-manager.test.js +0 -210
package/.version.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
- "current": "0.4.9",
3
- "latest_stable": "0.4.8",
4
- "spec_version": "0.4.9",
2
+ "current": "0.5.1",
3
+ "latest_stable": "0.5.1",
4
+ "spec_version": "0.5.1",
5
5
  "spec_path": "spec/v0.5",
6
6
  "schema_file": "agent.schema.json"
7
7
  }
package/CHANGELOG.md CHANGED
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.1] - 2026-03-21
11
+
12
+ ### Added
13
+ - **Memory Hierarchy (P5)**: Three-tier memory contracts (`spec/v0.5/memory-hierarchy.yaml`) — working, episodic, and long-term layers with promotion rules
14
+ - **`ossa memory` CLI subcommand**: `init`, `index`, `resolve`, `promote` — wire agents to the three-tier memory spec
15
+ - **Execution Economics (Layer 4)**: `ExecutionProfile`, `ContextPack`, and `ReplayPacket` schemas for portable execution intent and cost-aware agent design
16
+ - **Reasoning Escrow**: Cryptographic hash of reasoning traces via the AI SDK v6 `ToolLoopAgent` — auditable yet private agent decisions
17
+ - **StateMesh Integration**: Agents publish `StateClaims` (Evidence/Intent) to the mesh during runtime; governed state exchange via `extensions.statemesh`
18
+ - **AI SDK v6 Loop**: Native `ToolLoopAgent` in the production `OpenAIAdapter`; `@ai-sdk/anthropic` and `@ai-sdk/google` adapters added
19
+ - **DUADP Trust Tiers**: Native four-tier model (Official → Verified → Community → Unverified) wired into discovery and GKG Matchmaker
20
+ - **Agent Builder API**: `/api/agent-builder` route replaces deprecated `/api/v1/wizard`; `apiVersion >= ossa/v0.5.0` enforced at scaffold time
21
+ - **CAOE cognition types**: `session`, `hypothesis`, and `alignment gate` JSON schema extensions (`spec/v0.5/extensions/cognition/`)
22
+ - **`kind: Role` manifest**: Declarative role-based agent identity (`spec/v0.5/role.schema.json`)
23
+ - **Agent Builder OpenAPI spec**: `spec/v0.5/agent-builder-openapi.yaml` — frozen builder contract
24
+ - **Registry API v0.5.1**: `spec/registry/openapi.yaml` bumped; `agent-crud` generated types updated
25
+ - **Skills CLI (6 commands)**: `ossa skills research | generate | export | list | validate | sync` — full skills pipeline production-ready; 19 tests, 100% passing
26
+ - **5 new skills plugin files**: `database-migration`, `chaos-engineering`, `performance-profiling`, `compliance-auditing`, `incident-response`
27
+ - **`ossa execution-profile validate`**, **`ossa context-pack build`**, **`ossa task quote`** CLI commands
28
+
29
+ ### Changed
30
+ - `uuid` dependency: `^11.0.5` → `^11.1.0` (platform `dependency_standards` compliance)
31
+ - `@modelcontextprotocol/sdk`: aligned to `^1.26.0`
32
+ - MCP DI services wired: `ossa_validate` and `ossa_publish` connected to dependency injection
33
+ - Open-source publication: removed all internal paths, private domains, and platform-specific references
34
+
35
+ ### Fixed
36
+ - Test framework: 3 test files using `vitest` in Jest runner corrected to `@jest/globals`; 76/76 suites, 1305 tests, 0 failures
37
+ - `OssaApiVersionSchema`: union accepts `ossa/v0.5.0` and `ossa/v0.3.2` for migration compatibility
38
+ - Registry and agent-crud OpenAPI versions bumped `0.3.3` → `0.5.1`
39
+ - `undici` vulnerability overrides applied; `postgres` password parameterized in Docker generator
40
+
10
41
  ## [0.5.0] - 2026-03-08
11
42
 
12
43
  ### Added
@@ -500,7 +531,7 @@ Complete agent registration infrastructure enabling global agent discovery, veri
500
531
  - HTTP client for registry API integration (248 lines)
501
532
  - Axios-based with TypeScript types
502
533
  - Methods: `registerAgent()`, `discoverAgents()`, `verifyAgent()`, `getAgentCard()`
503
- - Configurable base URL (default: https://mesh.blueflyagents.com)
534
+ - Configurable base URL (default: https://mesh.bluefly.internal)
504
535
  - Comprehensive error handling
505
536
  - Exported from index.ts for SDK consumption
506
537
 
@@ -511,7 +542,7 @@ Complete agent registration infrastructure enabling global agent discovery, veri
511
542
  - Organization name for GAID (default: blueflyio)
512
543
  - Serial number prefix (default: AG)
513
544
  - 📡 Register agent to platform registry? (default: no)
514
- - Registry API URL (default: https://mesh.blueflyagents.com)
545
+ - Registry API URL (default: https://mesh.bluefly.internal)
515
546
  - Serial number format: `{PREFIX}-{TIMESTAMP}-{RANDOM}`
516
547
  - Example: `AG-1K2L3M-4N5P`
517
548
  - Unique, time-sortable, URL-safe
@@ -524,7 +555,7 @@ Complete agent registration infrastructure enabling global agent discovery, veri
524
555
  ossa.org/organization: blueflyio
525
556
  ossa.org/registered-at: 2026-02-06T...
526
557
  ossa.org/registered: "true"
527
- ossa.org/registry-url: https://mesh.blueflyagents.com
558
+ ossa.org/registry-url: https://mesh.bluefly.internal
528
559
  ossa.org/signature: sha256:abc...
529
560
  ```
530
561
  - GAID info file: Saves `.gaid.json` with registration metadata
@@ -655,7 +686,7 @@ ossa validate creative-agent-naming.ossa.yaml
655
686
  ossa generate-gaid creative-agent-naming.ossa.yaml --org blueflyio
656
687
 
657
688
  # Register to platform
658
- ossa register creative-agent-naming.ossa.yaml --registry https://mesh.blueflyagents.com
689
+ ossa register creative-agent-naming.ossa.yaml --registry https://mesh.bluefly.internal
659
690
 
660
691
  # Discover agents
661
692
  ossa discover --capability compliance-audit
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # OSSA - Open Standard for Software Agents
2
2
 
3
- > **Development happens on [GitLab](https://gitlab.com/blueflyio/ossa/openstandardagents).** This repo is a read-only mirror.
4
- > [Source](https://gitlab.com/blueflyio/ossa/openstandardagents) | [Issues](https://gitlab.com/blueflyio/ossa/openstandardagents/-/issues) | [npm](https://www.npmjs.com/package/@bluefly/openstandardagents)
3
+ > **Source of truth**: [GitLab](https://gitlab.com/blueflyio/ossa/openstandardagents) development, issues, and CI happen here.
4
+ > [GitLab](https://gitlab.com/blueflyio/ossa/openstandardagents) | [Issues](https://gitlab.com/blueflyio/ossa/openstandardagents/-/issues) | [npm](https://www.npmjs.com/package/@bluefly/openstandardagents)
5
5
 
6
6
  **The infrastructure bridge between agent protocols and deployment platforms.**
7
7
 
@@ -14,63 +14,78 @@ OSSA is not a protocol (like MCP or A2A) and not a framework (like LangChain or
14
14
  - **Builds on A2A** - Supports A2A messaging and agent-to-agent communication
15
15
  - **Extends protocols** - Adds deployment and packaging layer on top of communication protocols
16
16
 
17
- ## 🇺🇸 NIST CAISI RFI Alignment (NIST-2025-0035)
17
+ ## Why OSSA + DUADP
18
18
 
19
- OSSA natively aligns with the [NIST CAISI Request for Information on Collaborative AI Systems Integration](https://www.regulations.gov/docket/NIST-2025-0035), providing the critical **Contract Layer** missing from current agent protocols.
20
-
21
- - **Agent Identity (IA-3)**: W3C Decentralized Identifiers (GAID) provide cryptographic origin authentication for agents.
22
- - **Pre-Authorization (AC-3, AC-6)**: Deterministic AWS Cedar policies evaluated at the transport layer enforce zero-trust bounds before an LLM receives context.
23
- - **Federated Discovery**: Integration with DUADP (`.well-known` endpoints) scales agent discovery securely across organizational boundaries without centralized lock-in.
24
- - **Supply Chain Security (SI-7)**: Cryptographically signed manifests (`x-signature`) and explicit OSCAL/SBOM pointers prevent tool poisoning and supply chain attacks.
25
-
26
- ## What's New
19
+ AI agents need the same foundational infrastructure the internet has: **identity**, **discovery**, and **governance**. OSSA and DUADP together deliver that stack:
27
20
 
28
- ### AgentScope Integration (v0.4.8)
21
+ ```
22
+ ┌──────────────────────────────────────────────────────────────┐
23
+ │ Layer 1 — IDENTITY (this repo) │
24
+ │ OSSA (Open Standard for Software Agents) │
25
+ │ openstandardagents.org │
26
+ │ │
27
+ │ · Agent DID — W3C decentralized identity per agent │
28
+ │ · Signed manifests — cryptographic provenance + SBOM │
29
+ │ · Cedar policies — zero-trust authorization bounds │
30
+ │ · NIST SP 800-53 control mapping built in │
31
+ └─────────────────────┬────────────────────────────────────────┘
32
+ │ secure identity
33
+
34
+ ┌──────────────────────────────────────────────────────────────┐
35
+ │ Layer 2 — DISCOVERY │
36
+ │ DUADP (Decentralized Universal AI Discovery Protocol) │
37
+ │ duadp.org | npm install @bluefly/duadp │
38
+ │ │
39
+ │ · Federated DNS + WebFinger agent discovery │
40
+ │ · Cross-node gossip federation │
41
+ │ · Policy-aware capability routing │
42
+ │ · Trust-tier gating (community → verified → federal) │
43
+ └─────────────────────┬────────────────────────────────────────┘
44
+ │ policy-filtered
45
+
46
+ ┌──────────────────────────────────────────────────────────────┐
47
+ │ Layer 3 — EXECUTION │
48
+ │ Your runtime: Kubernetes, Claude, LangChain, Drupal, etc. │
49
+ └──────────────────────────────────────────────────────────────┘
50
+ ```
29
51
 
30
- - **New agent framework**: `agentscope` — Alibaba's production-ready Python agent framework (Apache 2.0, 17.8k stars) now supported as an OSSA agent type
31
- - **Python adapter**: Full OSSA-to-AgentScope bridge — reads OSSA manifests, instantiates ReActAgent with MCP tools, A2A protocol, memory backends (Mem0, Redis, ReMe)
32
- - **MCP server wrapper**: Expose any AgentScope agent as an MCP server for Claude Code, Cursor, VS Code
33
- - **A2A endpoint**: Serve AgentScope agents as discoverable A2A protocol endpoints with `.well-known/agent.json`
34
- - **Drupal module**: `ai_agents_agentscope` — contrib-first AiProvider plugin bridging AgentScope into Drupal's AI Agents ecosystem
35
- - **Docker support**: Dockerfile + docker-compose for containerized AgentScope runtime
36
- - **CLI**: `ossa-agentscope run|validate|serve` commands for manifest-driven agent execution
37
- - **Unique capabilities** not available in other frameworks: RL-based agent training, realtime voice agents, built-in evaluation framework
38
- - **Schema**: `extensions.agentscope` block in v0.4 and v0.5 specs with agent_class, capabilities, memory_backend, orchestration, formatter, compression, skill_dirs
52
+ **OSSA defines the agent. DUADP discovers it.**
39
53
 
40
- ### OpenAI Agents SDK Export (2026-02-16)
54
+ | Security requirement | OSSA | DUADP |
55
+ |---|---|---|
56
+ | Agent identity & authentication | W3C DID (GAID) per agent | DID-verified nodes |
57
+ | Authorization & least-privilege | AWS Cedar policies in manifest | Trust-tier gating |
58
+ | Governance & human oversight | Signed manifests + OSCAL pointers | Audit log + attestation API |
59
+ | Cross-system interoperability | Multi-platform exports | Federated gossip discovery |
60
+ | Monitoring & incident response | Observability config in spec | Revocation + incident endpoints |
61
+ | Supply chain security | `x-signature` + SBOM | Signed resource registry |
41
62
 
42
- - **New export platform**: `openai-agents-sdk` (22nd platform) — generates runnable `@openai/agents` TypeScript packages from OSSA manifests
43
- - Maps OSSA `spec.personality` to agent instructions, `spec.llm` to model selection, `spec.tools` to function tools, `spec.mcp` to MCPServerStreamableHttp connections, `spec.safety` to guardrails
44
- - Generates: `agent.ts`, `mcp-config.ts`, `guardrails.ts`, `run.ts`, `package.json`, `tsconfig.json`
45
- - Usage: `ossa export --platform openai-agents-sdk agent.ossa.yaml`
46
- - New OSSA extension blocks planned: `openai_agents_sdk`, `openai_responses_api`, `openai_realtime`, `openai_deep_research`
47
- - Supports defining agents once and exporting to both Claude and OpenAI platforms
63
+ > [openstandardagents.org/specification →](https://openstandardagents.org/specification) | [duadp.org →](https://duadp.org)
48
64
 
49
- ### Multi-Agent Team Topology (2026-02-17)
65
+ ## NIST CAISI Alignment (NIST-2025-0035)
50
66
 
51
- - **Team definitions** (`spec.team`): Define coordinated multi-agent teams with 4 team models lead-teammate, peer-to-peer, hierarchical, swarm
52
- - **Subagent definitions** (`spec.subagents`): Parent-child delegation hierarchies with role-based agents (worker, specialist, reviewer, debugger)
53
- - **8 architecture patterns**: single, swarm, pipeline, graph, hierarchical, reactive, cognitive, lead-teammate
54
- - **Team code generation**: Export team topology to CrewAI (Python), OpenAI Agents SDK (TypeScript), Claude Code (markdown), and npm (TypeScript)
55
- - **`--perfect-agent` CLI flag**: Generate a complete production bundle — AGENTS.md, team scaffolding, CLEAR eval stubs, governance config, observability config, and agent card
56
- - **Team-aware AGENTS.md**: Auto-generated documentation with team topology tables, member roles, coordination strategy, and hierarchy diagrams
57
- - **5 new export platforms**: `openai-agents-sdk` (beta), `a2a` (alpha), `claude-skills` (beta), `mobile-agent` (alpha), `symfony` (alpha) — bringing total to 22
67
+ If you're evaluating OSSA/DUADP for federal or regulated deployments, see the detailed alignment documentation:
58
68
 
59
- ### v0.4.6 (2026-02-19)
69
+ OSSA natively aligns with the [NIST CAISI Request for Information on Collaborative AI Systems Integration](https://www.regulations.gov/docket/NIST-2025-0035), providing the critical **Contract Layer** missing from current agent protocols.
60
70
 
61
- **Version Update**:
62
- - Updated all version references from 0.4.5 to 0.4.6
63
- - Package version bumped to 0.4.6
71
+ - **Agent Identity (IA-3)**: W3C Decentralized Identifiers (GAID) provide cryptographic origin authentication for agents.
72
+ - **Pre-Authorization (AC-3, AC-6)**: Deterministic AWS Cedar policies evaluated at the transport layer enforce zero-trust bounds before an LLM receives context.
73
+ - **Federated Discovery**: Integration with DUADP (`.well-known` endpoints) scales agent discovery securely across organizational boundaries without centralized lock-in.
74
+ - **Supply Chain Security (SI-7)**: Cryptographically signed manifests (`x-signature`) and explicit OSCAL/SBOM pointers prevent tool poisoning and supply chain attacks.
64
75
 
65
- ### v0.4.5 (2026-02-10)
76
+ ## What's New in v0.5.1
66
77
 
67
- **Major Cleanup & Foundation Improvements**:
68
- - 16,574 LOC removed - 47% codebase reduction (35,425 to 18,851 LOC)
69
- - SDK Migration - Anthropic adapter now uses official `@anthropic-ai/sdk` (513 LOC removed, 25.8% reduction)
70
- - Complete Skills Pipeline - Research, generate, export, validate, sync Claude Skills
71
- - Zero Build Errors - Fixed all TypeScript errors, 100% passing tests
72
- - DRY Improvements - Eliminated 99 LOC duplication via BasePackageGenerator
73
- - 19 New Tests - Skills pipeline fully tested (100% passing)
78
+ - **Memory Hierarchy (P5)**: Three-tier memory contracts (working → episodic → long-term) with `ossa memory init|index|resolve|promote` CLI.
79
+ - **Execution Economics (Layer 4)**: `ExecutionProfile`, `ContextPack`, `ReplayPacket` schemas; `ossa execution-profile validate`, `ossa context-pack build`, `ossa task quote`.
80
+ - **StateMesh Integration**: Agents publish `StateClaims` to the mesh at runtime; governed state exchange via `extensions.statemesh`.
81
+ - **Reasoning Escrow**: Cryptographic hashing of reasoning traces in the AI SDK v6 `ToolLoopAgent` — auditable yet private.
82
+ - **AI SDK v6 Loop**: Native `ToolLoopAgent` in `OpenAIAdapter`; `@ai-sdk/anthropic` and `@ai-sdk/google` adapters added.
83
+ - **DUADP Trust Tiers**: Native four-tier trust model (Official Verified → Community → Unverified) wired into discovery.
84
+ - **Agent Builder API**: `/api/agent-builder` canonical route; `apiVersion >= ossa/v0.5.0` enforced at scaffold time.
85
+ - **CAOE cognition types**: `session`, `hypothesis`, `alignment gate` JSON schema extensions + `kind: Role` manifest.
86
+ - **Skills Pipeline (6 commands)**: `ossa skills research|generate|export|list|validate|sync` — production-ready, 19 tests passing.
87
+ - **5 new skill plugins**: `database-migration`, `chaos-engineering`, `performance-profiling`, `compliance-auditing`, `incident-response`.
88
+ - **Dependency compliance**: `uuid ^11.1.0`, `@modelcontextprotocol/sdk ^1.26.0`.
74
89
 
75
90
  See [CHANGELOG.md](./CHANGELOG.md) for complete details.
76
91
 
@@ -288,7 +303,7 @@ Upgrade manifests to the latest spec version:
288
303
 
289
304
  ```bash
290
305
  # Migrate from older version to current
291
- ossa migrate agent.ossa.yaml --to 0.4.6
306
+ ossa migrate agent.ossa.yaml --to 0.5.1
292
307
 
293
308
  # List available migration paths
294
309
  ossa migrate --list
@@ -315,9 +330,9 @@ if (result.valid) {
315
330
  }
316
331
  ```
317
332
 
318
- ## Production Status (v0.4.6)
333
+ ## Production Status (v0.5.1)
319
334
 
320
- ### Production-Ready (Tested & Documented)
335
+ ### Production-Ready (Tested & Documented)
321
336
 
322
337
  **Core CLI Commands**:
323
338
  - `ossa validate` - Validate manifests against JSON Schema
@@ -327,13 +342,13 @@ if (result.valid) {
327
342
  - `ossa migrate` - Migrate between spec versions
328
343
  - `ossa generate-gaid` - Global Agent ID generation
329
344
 
330
- **Production Platform Exports** (4 production, 8 beta, 10 alpha 22 total):
345
+ **Production Platform Exports** (see `ossa export --list-platforms` for the live matrix):
331
346
  - `langchain` (production) - Python + TypeScript agents (uses @langchain/* SDK v0.3+)
332
347
  - `mcp` (production) - MCP server for Claude Code (uses @modelcontextprotocol/sdk v1.0+)
333
348
  - `npm` (production) - TypeScript package with manifest
334
349
  - `agent-skills` (production) - SKILL.md for Claude Code
335
350
 
336
- **Skills Pipeline** ( Complete in v0.4.6):
351
+ **Skills Pipeline** (Current in v0.5.1):
337
352
  - `ossa skills research` - Index skills from curated sources (cached locally at ~/.ossa/skills-index.json)
338
353
  - `ossa skills generate` - Auto-detects input format (OSSA, Oracle Agent Spec, AGENTS.md)
339
354
  - `ossa skills export` - Package as npm, install to ~/.claude/skills/, publish to registry
@@ -347,12 +362,12 @@ if (result.valid) {
347
362
  - Type definitions (`@bluefly/openstandardagents/types`)
348
363
  - JSON Schema access (`@bluefly/openstandardagents/schema`)
349
364
 
350
- ### 🚧 Beta (Functional but needs testing)
365
+ ### Beta (Functional but needs testing)
351
366
 
352
367
  - `ossa agents-local` - Local `.agents/` folder management
353
368
  - `ossa agents-md` - Generate, validate, sync [agents.md](https://agents.md) files (standard: [agentsmd/agents.md](https://github.com/agentsmd/agents.md)); customize via wizard step or `ossa agents-md generate|validate|sync`
354
369
  - Export to: `crewai`, `drupal`, `claude-code`, `cursor`, `warp`, `anthropic`
355
- - Anthropic runtime adapter uses official `@anthropic-ai/sdk` (v0.4.6 improvement: 513 LOC removed)
370
+ - Anthropic runtime adapter uses official `@anthropic-ai/sdk`
356
371
 
357
372
  ### GitLab Agent Examples (Fully Implemented)
358
373
 
@@ -396,7 +411,7 @@ OSSA complements MCP and A2A by adding the packaging and deployment layer they d
396
411
  ### Manifest Format
397
412
 
398
413
  ```yaml
399
- apiVersion: ossa/v0.4.6
414
+ apiVersion: ossa/v0.5.1
400
415
  kind: Agent
401
416
  metadata:
402
417
  name: code-reviewer
@@ -423,7 +438,7 @@ spec:
423
438
  #### Team Manifest Example
424
439
 
425
440
  ```yaml
426
- apiVersion: ossa/v0.4.6
441
+ apiVersion: ossa/v0.5.1
427
442
  kind: Agent
428
443
  metadata:
429
444
  name: dev-team
@@ -517,7 +532,7 @@ import { validateManifest } from '@bluefly/openstandardagents/validation';
517
532
  import type { OssaAgent } from '@bluefly/openstandardagents/types';
518
533
 
519
534
  const agent: OssaAgent = {
520
- apiVersion: 'ossa/v0.4.6',
535
+ apiVersion: 'ossa/v0.5.1',
521
536
  kind: 'Agent',
522
537
  metadata: { name: 'creative-agent-naming', version: '1.0.0' },
523
538
  spec: {
@@ -532,7 +547,7 @@ if (result.valid) console.log('Valid manifest');
532
547
 
533
548
  ## Spec Features
534
549
 
535
- The OSSA v0.4 schema supports these optional sections:
550
+ The OSSA v0.5.0 schema supports these optional sections:
536
551
 
537
552
  - **LLM Configuration** - Provider, model, temperature, max tokens, caching
538
553
  - **Tools** - Named tools with input schemas
@@ -563,7 +578,7 @@ OSSA is designed to work **alongside** existing agent protocols, not replace the
563
578
  **Example**: An OSSA manifest can declare that an agent uses MCP tools and A2A messaging, then export that configuration to Docker, Kubernetes, or LangChain deployment packages.
564
579
 
565
580
  ```yaml
566
- apiVersion: ossa/v0.4.6
581
+ apiVersion: ossa/v0.5.1
567
582
  kind: Agent
568
583
  metadata:
569
584
  name: code-reviewer
@@ -617,7 +632,7 @@ ossa export agent.ossa.yaml --platform docker --output ./docker-deploy
617
632
  ossa export --list-platforms
618
633
  ossa lint agent.ossa.yaml
619
634
  ossa diff old.ossa.yaml new.ossa.yaml
620
- ossa migrate agent.ossa.yaml --to 0.4.6
635
+ ossa migrate agent.ossa.yaml --to 0.5.1
621
636
  ossa generate-gaid agent.ossa.yaml
622
637
  ossa export agent.ossa.yaml --perfect-agent
623
638
  ossa export agent.ossa.yaml --include-agents-md --include-team --include-evals
@@ -705,7 +720,7 @@ All mutation commands support:
705
720
  - [Agents workspace and registry](./docs/getting-started/agents-workspace-registry.md) - `.agents-workspace/` layout, sources, MCP/A2A
706
721
  - [CHANGELOG](./CHANGELOG.md) - Release history
707
722
  - [Examples](./examples) - Sample manifests
708
- - [JSON Schema](./spec/v0.4/agent.schema.json) - Full spec
723
+ - [JSON Schema](./spec/v0.5/agent.schema.json) - Full spec
709
724
  - [GitLab](https://gitlab.com/blueflyio/ossa/openstandardagents) - Source
710
725
  - [GitHub Mirror](https://github.com/blueflyio/openstandardagents)
711
726
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "current": "0.4.9",
3
- "latest_stable": "0.4.8",
4
- "spec_version": "0.4.9",
2
+ "current": "0.5.1",
3
+ "latest_stable": "0.5.1",
4
+ "spec_version": "0.5.1",
5
5
  "spec_path": "spec/v0.5",
6
6
  "schema_file": "agent.schema.json"
7
7
  }
@@ -11,6 +11,7 @@
11
11
  * @module adapters/a2a/a2a-protocol
12
12
  */
13
13
  import { z } from 'zod';
14
+ import { trace } from '@opentelemetry/api';
14
15
  /**
15
16
  * Message Priority Levels
16
17
  */
@@ -203,8 +204,9 @@ export function validateA2AMessage(message) {
203
204
  */
204
205
  export function createA2AMessage(from, to, type, payload, options) {
205
206
  const now = new Date().toISOString();
206
- const traceId = generateTraceId();
207
- const spanId = generateSpanId();
207
+ const activeSpan = trace.getActiveSpan();
208
+ const traceId = activeSpan?.spanContext().traceId ?? generateTraceId();
209
+ const spanId = activeSpan?.spanContext().spanId ?? generateSpanId();
208
210
  return {
209
211
  id: crypto.randomUUID(),
210
212
  from,
@@ -5,6 +5,7 @@
5
5
  *
6
6
  * @module adapters/a2a/a2a-tool
7
7
  */
8
+ import { trace } from '@opentelemetry/api';
8
9
  /**
9
10
  * A2A Tool Definition
10
11
  * Tool for agent-to-agent communication using MCP protocol
@@ -280,8 +281,9 @@ export class A2AToolHandler {
280
281
  return mapping[pattern] || 'request';
281
282
  }
282
283
  createTraceContext() {
283
- const traceId = this.generateHex(32);
284
- const spanId = this.generateHex(16);
284
+ const activeSpan = trace.getActiveSpan();
285
+ const traceId = activeSpan?.spanContext().traceId ?? this.generateHex(32);
286
+ const spanId = activeSpan?.spanContext().spanId ?? this.generateHex(16);
285
287
  return {
286
288
  traceparent: `00-${traceId}-${spanId}-01`,
287
289
  traceId,
@@ -239,7 +239,8 @@ export declare class MCPIntegrationService {
239
239
  */
240
240
  private mapMCPTypeToA2A;
241
241
  /**
242
- * Create trace context
242
+ * Create trace context — prefers active OTel span so outbound messages
243
+ * carry the same traceId as the surrounding span tree.
243
244
  */
244
245
  private createTraceContext;
245
246
  /**
@@ -11,6 +11,7 @@
11
11
  *
12
12
  * @module adapters/a2a/mcp-integration
13
13
  */
14
+ import { trace } from '@opentelemetry/api';
14
15
  import { MCPTransportManager } from './mcp-transport.js';
15
16
  /**
16
17
  * MCP Protocol Version
@@ -295,11 +296,13 @@ export class MCPIntegrationService {
295
296
  return mapping[method] || 'event';
296
297
  }
297
298
  /**
298
- * Create trace context
299
+ * Create trace context — prefers active OTel span so outbound messages
300
+ * carry the same traceId as the surrounding span tree.
299
301
  */
300
302
  createTraceContext() {
301
- const traceId = this.generateHex(32);
302
- const spanId = this.generateHex(16);
303
+ const activeSpan = trace.getActiveSpan();
304
+ const traceId = activeSpan?.spanContext().traceId ?? this.generateHex(32);
305
+ const spanId = activeSpan?.spanContext().spanId ?? this.generateHex(16);
303
306
  return {
304
307
  traceparent: `00-${traceId}-${spanId}-01`,
305
308
  traceId,
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Browser Exporter — Generate browser automation config from OSSA manifests.
3
+ *
4
+ * When an agent has browser capabilities, this generates the agent-browser
5
+ * configuration and startup scripts.
6
+ */
7
+ import type { OssaAgent } from '../../types/index.js';
8
+ export interface BrowserExportResult {
9
+ files: Array<{
10
+ path: string;
11
+ content: string;
12
+ }>;
13
+ command: string;
14
+ }
15
+ export declare class BrowserExporter {
16
+ /**
17
+ * Export OSSA agent as a browser automation agent.
18
+ * Generates agent-browser config and launch scripts.
19
+ */
20
+ export(manifest: OssaAgent): BrowserExportResult;
21
+ /**
22
+ * Check if an OSSA manifest declares browser capabilities.
23
+ */
24
+ hasBrowserCapability(manifest: OssaAgent): boolean;
25
+ }
26
+ //# sourceMappingURL=browser-exporter.d.ts.map
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Browser Exporter — Generate browser automation config from OSSA manifests.
3
+ *
4
+ * When an agent has browser capabilities, this generates the agent-browser
5
+ * configuration and startup scripts.
6
+ */
7
+ export class BrowserExporter {
8
+ /**
9
+ * Export OSSA agent as a browser automation agent.
10
+ * Generates agent-browser config and launch scripts.
11
+ */
12
+ export(manifest) {
13
+ const name = manifest.metadata?.name || 'ossa-browser-agent';
14
+ const headless = true;
15
+ const launchScript = [
16
+ '#!/bin/bash',
17
+ `# Browser agent: ${name}`,
18
+ `# Generated by ossa export --format=browser-agent`,
19
+ '',
20
+ '# Start agent-browser in headless mode',
21
+ `npx agent-browser --headless=${headless} \\`,
22
+ ` --url="\${BASE_URL:-http://localhost:3000}" \\`,
23
+ ' --timeout=30000 \\',
24
+ ' --screenshot-on-error',
25
+ '',
26
+ ].join('\n');
27
+ const dockerService = {
28
+ [`${name}-browser`]: {
29
+ image: 'ghcr.io/nicepkg/agent-browser:latest',
30
+ environment: {
31
+ HEADLESS: 'true',
32
+ BASE_URL: '${BASE_URL:-http://localhost:3000}',
33
+ },
34
+ ports: ['9222:9222'],
35
+ restart: 'unless-stopped',
36
+ },
37
+ };
38
+ const dockerCompose = `# Browser automation service for ${name}
39
+ # Add to your docker-compose.yml services section
40
+ services:
41
+ ${name}-browser:
42
+ image: ghcr.io/nicepkg/agent-browser:latest
43
+ environment:
44
+ - HEADLESS=true
45
+ - BASE_URL=\${BASE_URL:-http://localhost:3000}
46
+ ports:
47
+ - "9222:9222"
48
+ restart: unless-stopped
49
+ `;
50
+ return {
51
+ files: [
52
+ { path: 'scripts/browser-agent.sh', content: launchScript },
53
+ { path: 'docker-compose.browser.yml', content: dockerCompose },
54
+ ],
55
+ command: `npx agent-browser --headless`,
56
+ };
57
+ }
58
+ /**
59
+ * Check if an OSSA manifest declares browser capabilities.
60
+ */
61
+ hasBrowserCapability(manifest) {
62
+ const tools = manifest.spec?.tools || [];
63
+ const toolNames = tools.map((t) => typeof t === 'string' ? t : typeof t === 'object' && t !== null ? t.name || '' : '').join(' ').toLowerCase();
64
+ const role = (manifest.spec?.role || '').toLowerCase();
65
+ return (toolNames.includes('browser') ||
66
+ toolNames.includes('playwright') ||
67
+ toolNames.includes('cdp') ||
68
+ toolNames.includes('web-scrape') ||
69
+ role.includes('browser') ||
70
+ role.includes('scraper'));
71
+ }
72
+ }
73
+ //# sourceMappingURL=browser-exporter.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Browser Test Runner — Run agent acceptance tests in headless Chrome.
3
+ *
4
+ * Uses agent-browser CLI for CDP-based browser automation.
5
+ * Replaces custom Playwright bootstrapping for agent testing.
6
+ */
7
+ export interface BrowserTestResult {
8
+ passed: boolean;
9
+ output: string;
10
+ error?: string;
11
+ duration: number;
12
+ }
13
+ export declare class BrowserTestRunner {
14
+ /**
15
+ * Run a browser-based test using agent-browser.
16
+ */
17
+ run(url: string, options?: {
18
+ timeout?: number;
19
+ headless?: boolean;
20
+ screenshotOnError?: boolean;
21
+ }): Promise<BrowserTestResult>;
22
+ }
23
+ //# sourceMappingURL=browser-runner.d.ts.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Browser Test Runner — Run agent acceptance tests in headless Chrome.
3
+ *
4
+ * Uses agent-browser CLI for CDP-based browser automation.
5
+ * Replaces custom Playwright bootstrapping for agent testing.
6
+ */
7
+ import { execFile } from 'child_process';
8
+ import { promisify } from 'util';
9
+ const execFileAsync = promisify(execFile);
10
+ export class BrowserTestRunner {
11
+ /**
12
+ * Run a browser-based test using agent-browser.
13
+ */
14
+ async run(url, options = {}) {
15
+ const startTime = Date.now();
16
+ const args = [
17
+ 'agent-browser',
18
+ `--url=${url}`,
19
+ `--headless=${options.headless !== false}`,
20
+ `--timeout=${options.timeout || 30000}`,
21
+ ];
22
+ if (options.screenshotOnError) {
23
+ args.push('--screenshot-on-error');
24
+ }
25
+ try {
26
+ const result = await execFileAsync('npx', args, {
27
+ timeout: (options.timeout || 30000) + 5000,
28
+ });
29
+ return {
30
+ passed: true,
31
+ output: result.stdout,
32
+ duration: Date.now() - startTime,
33
+ };
34
+ }
35
+ catch (error) {
36
+ const err = error;
37
+ return {
38
+ passed: false,
39
+ output: err.stdout || '',
40
+ error: err.stderr || err.message || 'Unknown error',
41
+ duration: Date.now() - startTime,
42
+ };
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=browser-runner.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Browser Adapter — Export OSSA agents as browser automation agents
3
+ * and run browser-based acceptance tests using agent-browser.
4
+ *
5
+ * agent-browser provides headless Chrome via CDP with zero dependencies.
6
+ */
7
+ export { BrowserExporter } from './browser-exporter.js';
8
+ export { BrowserTestRunner } from './browser-runner.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Browser Adapter — Export OSSA agents as browser automation agents
3
+ * and run browser-based acceptance tests using agent-browser.
4
+ *
5
+ * agent-browser provides headless Chrome via CDP with zero dependencies.
6
+ */
7
+ export { BrowserExporter } from './browser-exporter.js';
8
+ export { BrowserTestRunner } from './browser-runner.js';
9
+ //# sourceMappingURL=index.js.map
@@ -325,8 +325,8 @@ fi`)
325
325
 
326
326
  # Delegate to OSSA CLI when available (set OSSA_MANIFEST to manifest path)
327
327
  if command -v ossa >/dev/null 2>&1 && [[ -n "\${OSSA_MANIFEST:-}" ]]; then
328
- ossa run "\${OSSA_MANIFEST}" --tool ${tool.name} -- "\$@"
329
- exit \$?
328
+ ossa run "\${OSSA_MANIFEST}" --tool ${tool.name} -- "$@"
329
+ exit $?
330
330
  fi
331
331
 
332
332
  # Fallback: output structured result