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