@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.
- package/.version.json +3 -3
- package/CHANGELOG.md +35 -4
- package/README.md +77 -62
- package/dist/.version.json +3 -3
- package/dist/adapters/a2a/a2a-protocol.js +4 -2
- package/dist/adapters/a2a/a2a-tool.js +4 -2
- package/dist/adapters/a2a/mcp-integration.d.ts +2 -1
- package/dist/adapters/a2a/mcp-integration.js +6 -3
- package/dist/adapters/browser/browser-exporter.d.ts +26 -0
- package/dist/adapters/browser/browser-exporter.js +73 -0
- package/dist/adapters/browser/browser-runner.d.ts +23 -0
- package/dist/adapters/browser/browser-runner.js +46 -0
- package/dist/adapters/browser/index.d.ts +9 -0
- package/dist/adapters/browser/index.js +9 -0
- package/dist/adapters/claude-code/adapter.js +2 -2
- package/dist/adapters/docker/generators.js +19 -19
- package/dist/adapters/docker/index.d.ts +2 -0
- package/dist/adapters/docker/index.js +2 -0
- package/dist/adapters/docker/openclaw-bridge.d.ts +57 -0
- package/dist/adapters/docker/openclaw-bridge.js +173 -0
- package/dist/adapters/drupal/generator.js +76 -76
- package/dist/adapters/drupal/index.d.ts +1 -0
- package/dist/adapters/drupal/index.js +2 -0
- package/dist/adapters/drupal/twig-renderer.d.ts +23 -0
- package/dist/adapters/drupal/twig-renderer.js +99 -0
- package/dist/adapters/gitlab/agent-generator.js +2 -1
- package/dist/adapters/openai-agents/adapter.js +2 -2
- package/dist/api/index.js +2 -1
- package/dist/api/routes/mcp.router.js +3 -1
- package/dist/api/routes/wizard.router.js +3 -1
- package/dist/cli/commands/agent/discover-type.command.js +1 -1
- package/dist/cli/commands/agent-card.command.js +37 -10
- package/dist/cli/commands/agents-sync.command.d.ts +2 -2
- package/dist/cli/commands/agents-sync.command.js +27 -17
- package/dist/cli/commands/catalog/config.js +1 -1
- package/dist/cli/commands/catalog/validate.command.js +2 -2
- package/dist/cli/commands/config.command.js +2 -2
- package/dist/cli/commands/daemon.command.js +32 -8
- package/dist/cli/commands/discover.d.ts +1 -1
- package/dist/cli/commands/discover.js +16 -8
- package/dist/cli/commands/economics.command.d.ts +9 -0
- package/dist/cli/commands/economics.command.js +113 -0
- package/dist/cli/commands/export.command.js +6 -3
- package/dist/cli/commands/mcp.command.js +3 -1
- package/dist/cli/commands/memory.command.d.ts +18 -0
- package/dist/cli/commands/memory.command.js +168 -0
- package/dist/cli/commands/publish.command.js +7 -4
- package/dist/cli/commands/serve-builder-routes.js +1 -1
- package/dist/cli/commands/usie-skills.command.d.ts +24 -0
- package/dist/cli/commands/usie-skills.command.js +297 -0
- package/dist/cli/commands/validate.command.js +8 -1
- package/dist/cli/commands/verify.d.ts +3 -3
- package/dist/cli/commands/verify.js +12 -6
- package/dist/cli/commands/workspace.command.d.ts +1 -0
- package/dist/cli/commands/workspace.command.js +28 -4
- package/dist/cli/index.js +12 -0
- package/dist/cli/schema-driven/schema-loader.js +5 -5
- package/dist/cli/workspace-validate.d.ts +23 -0
- package/dist/cli/workspace-validate.js +117 -0
- package/dist/data/platform-matrix.js +1 -4
- package/dist/generated/types.d.ts +97 -97
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/mcp-server/index.js +658 -982
- package/dist/mesh/discovery-gkg.d.ts +26 -0
- package/dist/mesh/discovery-gkg.js +92 -0
- package/dist/messenger/Handler/AgentBatchHandler.js +3 -2
- package/dist/messenger/Handler/AgentExecutionHandler.js +6 -1
- package/dist/package.json +43 -14
- package/dist/sdks/shared/types.d.ts +1 -1
- package/dist/services/agent-card-generator.js +6 -2
- package/dist/services/daemon/audit-log.service.js +3 -1
- package/dist/services/daemon/execution.service.js +8 -4
- package/dist/services/daemon/fs-watcher.service.js +6 -7
- package/dist/services/daemon/pairing.service.js +2 -1
- package/dist/services/daemon/skill-aggregator.service.js +105 -21
- package/dist/services/daemon/sse-endpoints.js +1 -1
- package/dist/services/daemon/ws-server.js +10 -3
- package/dist/services/export/langchain/langchain-exporter.js +2 -2
- package/dist/services/export/langchain/memory-generator.js +2 -2
- package/dist/services/export/testing/test-generator.js +1 -1
- package/dist/services/governance/cedar-provider.js +12 -8
- package/dist/services/governance/cedar-validator.service.js +1 -1
- package/dist/services/mcp/bridge.service.js +40 -9
- package/dist/services/openapi-extensions-validation.d.ts +20 -0
- package/dist/services/openapi-extensions-validation.js +193 -0
- package/dist/services/release-automation/merge-request.service.d.ts +4 -4
- package/dist/services/release-automation/release-buttons.js +3 -3
- package/dist/services/release-automation/schemas/release.schema.d.ts +3 -3
- package/dist/services/runtime/openai.adapter.d.ts +46 -13
- package/dist/services/runtime/openai.adapter.js +169 -131
- package/dist/services/skill-registry.service.d.ts +1 -1
- package/dist/services/skills-pipeline/skills-research.service.js +47 -7
- package/dist/services/taxonomy-service.d.ts +3 -3
- package/dist/services/trust/trust.service.js +6 -4
- package/dist/services/validation-zod.service.js +3 -22
- package/dist/services/validators/index.d.ts +1 -0
- package/dist/services/validators/index.js +1 -0
- package/dist/services/validators/registry.d.ts +21 -0
- package/dist/services/validators/registry.js +42 -0
- package/dist/skills/test-skill/package.json +1 -1
- package/dist/spec/extensions/cognition.schema.json +87 -0
- package/dist/spec/extensions/role-manifest.md +188 -0
- package/dist/spec/layer4-economics/duadp-examples.json +44 -0
- package/dist/spec/v0.4/agent.schema.json +14 -0
- package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
- package/dist/spec/v0.5/agent-builder-openapi.yaml +230 -0
- package/dist/spec/v0.5/agent.schema.json +34 -2
- package/dist/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
- package/dist/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
- package/dist/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
- package/dist/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
- package/dist/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
- package/dist/spec/v0.5/memory-hierarchy.yaml +120 -0
- package/dist/spec/v0.5/role.schema.json +268 -0
- package/dist/spec/v1/agent-card.schema.json +254 -0
- package/dist/types/cognition.zod.d.ts +312 -0
- package/dist/types/cognition.zod.js +223 -0
- package/dist/types/identity.zod.d.ts +5 -5
- package/dist/types/index.d.ts +54 -6
- package/dist/types/index.js +6 -2
- package/dist/types/personality.zod.d.ts +3 -3
- package/dist/types/role.d.ts +126 -0
- package/dist/types/role.js +38 -0
- package/dist/utils/http-client.d.ts +22 -0
- package/dist/utils/http-client.js +51 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/proxy-resolver.d.ts +36 -0
- package/dist/utils/proxy-resolver.js +59 -0
- package/dist/utils/user-agent.d.ts +11 -0
- package/dist/utils/user-agent.js +17 -0
- package/dist/validation/validator.js +1 -1
- package/dist/validation/version-compliance.js +1 -1
- package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
- package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
- package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
- package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
- package/examples/agents/security-audit-agent.ossa.yaml +234 -0
- package/examples/agentscope/react-assistant/README.md +1 -1
- package/examples/agentscope/react-assistant/agent.ossa.yaml +37 -33
- package/examples/drupal/content-moderator.ossa.yaml +2 -2
- package/examples/drupal/drupal-contributor-agent/.eslintrc.json +58 -0
- package/examples/drupal/drupal-contributor-agent/.prettierrc.json +10 -0
- package/examples/drupal/drupal-contributor-agent/package.json +55 -0
- package/examples/drupal/drupal-contributor-agent/src/core/index.ts +10 -0
- package/examples/drupal/drupal-contributor-agent/src/index.ts +17 -0
- package/examples/drupal/drupal-contributor-agent/src/types/index.ts +180 -0
- package/examples/drupal/drupal-contributor-agent/tsconfig.json +36 -0
- package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
- package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
- package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
- package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
- package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
- package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
- package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
- package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
- package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
- package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
- package/examples/getting-started/README.md +3 -3
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
- package/examples/hierarchical-agent.ossa.yaml +10 -53
- package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
- package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
- package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
- package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
- package/examples/pipeline-agent.ossa.yaml +3 -3
- package/examples/platform-specific/claude-code-subagent.yaml +1 -1
- package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
- package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
- package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
- package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
- package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
- package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
- package/examples/roles/drupal-developer.role.yaml +37 -0
- package/examples/roles/platform-operator.role.yaml +28 -0
- package/examples/roles/security-auditor.role.yaml +27 -0
- package/examples/swarm-agent.ossa.yaml +13 -51
- package/examples/team-agent.ossa.yaml +12 -61
- package/examples/team-lead-teammate.ossa.yaml +12 -17
- package/openapi/agent-cognition-sessions.yaml +580 -0
- package/openapi/agent-communication.yaml +260 -212
- package/openapi/agent-crud.yaml +237 -207
- package/openapi/agent-discovery.yaml +119 -81
- package/openapi/agent-identity.yaml +219 -187
- package/openapi/agent-taxonomy.yaml +95 -38
- package/openapi/agents-md-service.yaml +103 -30
- package/openapi/cli/openapi.yaml +147 -40
- package/openapi/core/ossa-core-api.openapi.yaml +327 -271
- package/openapi/core/ossa-registry-api.openapi.yaml +299 -236
- package/openapi/core/ossa-registry.openapi.yaml +299 -159
- package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
- package/openapi/daemon-api.openapi.yaml +323 -181
- package/openapi/dev-cli/openapi.yaml +137 -113
- package/openapi/github-sync.yaml +62 -19
- package/openapi/marketplace-plugin.openapi.yaml +539 -466
- package/openapi/ossa-api.openapi.yaml +354 -213
- package/openapi/ossa-cli-enhancements.openapi.yaml +109 -90
- package/openapi/ossa-cli.yaml +260 -184
- package/openapi/protocols/sse-streams.yaml +66 -74
- package/openapi/protocols/websocket-events.yaml +61 -54
- package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
- package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
- package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
- package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
- package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
- package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
- package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
- package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
- package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
- package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
- package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
- package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
- package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
- package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
- package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
- package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
- package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
- package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
- package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
- package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
- package/openapi/release-automation.openapi.yaml +48 -14
- package/openapi/schemas/common/agent.yaml +30 -29
- package/openapi/schemas/common/economics.yaml +98 -0
- package/openapi/schemas/common/errors.yaml +13 -3
- package/openapi/schemas/common/metadata.yaml +22 -7
- package/openapi/schemas/common/pagination.yaml +18 -6
- package/openapi/schemas/common/security.yaml +13 -5
- package/openapi/schemas/index.yaml +49 -42
- package/openapi/uadp-asyncapi.yaml +5 -3
- package/openapi/uadp-openapi.yaml +243 -165
- package/openapi/version-management.openapi.yaml +142 -135
- package/package.json +43 -14
- package/spec/extensions/cognition.schema.json +87 -0
- package/spec/extensions/role-manifest.md +188 -0
- package/spec/layer4-economics/duadp-examples.json +44 -0
- package/spec/v0.4/agent.schema.json +14 -0
- package/spec/v0.4/extensions/mcp/README.md +1 -1
- package/spec/v0.5/agent-builder-openapi.yaml +230 -0
- package/spec/v0.5/agent.schema.json +34 -2
- package/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
- package/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
- package/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
- package/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
- package/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
- package/spec/v0.5/memory-hierarchy.yaml +120 -0
- package/spec/v0.5/role.schema.json +268 -0
- package/spec/v1/agent-card.schema.json +254 -0
- package/dist/adapters/a2a/__tests__/mcp-integration.spec.d.ts +0 -5
- package/dist/adapters/a2a/__tests__/mcp-integration.spec.js +0 -268
- package/dist/adapters/a2a/__tests__/mcp-transport.spec.d.ts +0 -5
- package/dist/adapters/a2a/__tests__/mcp-transport.spec.js +0 -203
- package/dist/mcp-server/__tests__/mcp-server.spec.d.ts +0 -8
- package/dist/mcp-server/__tests__/mcp-server.spec.js +0 -557
- package/dist/validation/__tests__/error-codes.test.d.ts +0 -5
- package/dist/validation/__tests__/error-codes.test.js +0 -252
- package/dist/version-management/core/version-manager.test.d.ts +0 -2
- package/dist/version-management/core/version-manager.test.js +0 -210
package/.version.json
CHANGED
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
> **
|
|
4
|
-
> [
|
|
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
|
-
##
|
|
17
|
+
## Why OSSA + DUADP
|
|
18
18
|
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
+
## NIST CAISI Alignment (NIST-2025-0035)
|
|
50
66
|
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
**
|
|
62
|
-
-
|
|
63
|
-
-
|
|
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
|
-
|
|
76
|
+
## What's New in v0.5.1
|
|
66
77
|
|
|
67
|
-
**
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
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.
|
|
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.
|
|
333
|
+
## Production Status (v0.5.1)
|
|
319
334
|
|
|
320
|
-
###
|
|
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** (
|
|
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** (
|
|
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
|
-
###
|
|
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`
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
package/dist/.version.json
CHANGED
|
@@ -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
|
|
207
|
-
const
|
|
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
|
|
284
|
-
const
|
|
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
|
|
302
|
-
const
|
|
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
|