@bluefly/openstandardagents 0.4.9 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/.version.json +3 -3
  2. package/CHANGELOG.md +35 -4
  3. package/README.md +77 -62
  4. package/dist/.version.json +3 -3
  5. package/dist/adapters/a2a/a2a-protocol.js +4 -2
  6. package/dist/adapters/a2a/a2a-tool.js +4 -2
  7. package/dist/adapters/a2a/mcp-integration.d.ts +2 -1
  8. package/dist/adapters/a2a/mcp-integration.js +6 -3
  9. package/dist/adapters/browser/browser-exporter.d.ts +26 -0
  10. package/dist/adapters/browser/browser-exporter.js +73 -0
  11. package/dist/adapters/browser/browser-runner.d.ts +23 -0
  12. package/dist/adapters/browser/browser-runner.js +46 -0
  13. package/dist/adapters/browser/index.d.ts +9 -0
  14. package/dist/adapters/browser/index.js +9 -0
  15. package/dist/adapters/claude-code/adapter.js +2 -2
  16. package/dist/adapters/docker/generators.js +19 -19
  17. package/dist/adapters/docker/index.d.ts +2 -0
  18. package/dist/adapters/docker/index.js +2 -0
  19. package/dist/adapters/docker/openclaw-bridge.d.ts +57 -0
  20. package/dist/adapters/docker/openclaw-bridge.js +173 -0
  21. package/dist/adapters/drupal/generator.js +76 -76
  22. package/dist/adapters/drupal/index.d.ts +1 -0
  23. package/dist/adapters/drupal/index.js +2 -0
  24. package/dist/adapters/drupal/twig-renderer.d.ts +23 -0
  25. package/dist/adapters/drupal/twig-renderer.js +99 -0
  26. package/dist/adapters/gitlab/agent-generator.js +2 -1
  27. package/dist/adapters/openai-agents/adapter.js +2 -2
  28. package/dist/api/index.js +2 -1
  29. package/dist/api/routes/mcp.router.js +3 -1
  30. package/dist/api/routes/wizard.router.js +3 -1
  31. package/dist/cli/commands/agent/discover-type.command.js +1 -1
  32. package/dist/cli/commands/agent-card.command.js +37 -10
  33. package/dist/cli/commands/agents-sync.command.d.ts +2 -2
  34. package/dist/cli/commands/agents-sync.command.js +27 -17
  35. package/dist/cli/commands/catalog/config.js +1 -1
  36. package/dist/cli/commands/catalog/validate.command.js +2 -2
  37. package/dist/cli/commands/config.command.js +2 -2
  38. package/dist/cli/commands/daemon.command.js +32 -8
  39. package/dist/cli/commands/discover.d.ts +1 -1
  40. package/dist/cli/commands/discover.js +16 -8
  41. package/dist/cli/commands/economics.command.d.ts +9 -0
  42. package/dist/cli/commands/economics.command.js +113 -0
  43. package/dist/cli/commands/export.command.js +6 -3
  44. package/dist/cli/commands/mcp.command.js +3 -1
  45. package/dist/cli/commands/memory.command.d.ts +18 -0
  46. package/dist/cli/commands/memory.command.js +168 -0
  47. package/dist/cli/commands/publish.command.js +7 -4
  48. package/dist/cli/commands/serve-builder-routes.js +1 -1
  49. package/dist/cli/commands/usie-skills.command.d.ts +24 -0
  50. package/dist/cli/commands/usie-skills.command.js +297 -0
  51. package/dist/cli/commands/validate.command.js +8 -1
  52. package/dist/cli/commands/verify.d.ts +3 -3
  53. package/dist/cli/commands/verify.js +12 -6
  54. package/dist/cli/commands/workspace.command.d.ts +1 -0
  55. package/dist/cli/commands/workspace.command.js +28 -4
  56. package/dist/cli/index.js +12 -0
  57. package/dist/cli/schema-driven/schema-loader.js +5 -5
  58. package/dist/cli/workspace-validate.d.ts +23 -0
  59. package/dist/cli/workspace-validate.js +117 -0
  60. package/dist/data/platform-matrix.js +1 -4
  61. package/dist/generated/types.d.ts +97 -97
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +2 -0
  64. package/dist/mcp-server/index.js +658 -982
  65. package/dist/mesh/discovery-gkg.d.ts +26 -0
  66. package/dist/mesh/discovery-gkg.js +92 -0
  67. package/dist/messenger/Handler/AgentBatchHandler.js +3 -2
  68. package/dist/messenger/Handler/AgentExecutionHandler.js +6 -1
  69. package/dist/package.json +43 -14
  70. package/dist/sdks/shared/types.d.ts +1 -1
  71. package/dist/services/agent-card-generator.js +6 -2
  72. package/dist/services/daemon/audit-log.service.js +3 -1
  73. package/dist/services/daemon/execution.service.js +8 -4
  74. package/dist/services/daemon/fs-watcher.service.js +6 -7
  75. package/dist/services/daemon/pairing.service.js +2 -1
  76. package/dist/services/daemon/skill-aggregator.service.js +105 -21
  77. package/dist/services/daemon/sse-endpoints.js +1 -1
  78. package/dist/services/daemon/ws-server.js +10 -3
  79. package/dist/services/export/langchain/langchain-exporter.js +2 -2
  80. package/dist/services/export/langchain/memory-generator.js +2 -2
  81. package/dist/services/export/testing/test-generator.js +1 -1
  82. package/dist/services/governance/cedar-provider.js +12 -8
  83. package/dist/services/governance/cedar-validator.service.js +1 -1
  84. package/dist/services/mcp/bridge.service.js +40 -9
  85. package/dist/services/openapi-extensions-validation.d.ts +20 -0
  86. package/dist/services/openapi-extensions-validation.js +193 -0
  87. package/dist/services/release-automation/merge-request.service.d.ts +4 -4
  88. package/dist/services/release-automation/release-buttons.js +3 -3
  89. package/dist/services/release-automation/schemas/release.schema.d.ts +3 -3
  90. package/dist/services/runtime/openai.adapter.d.ts +46 -13
  91. package/dist/services/runtime/openai.adapter.js +169 -131
  92. package/dist/services/skill-registry.service.d.ts +1 -1
  93. package/dist/services/skills-pipeline/skills-research.service.js +47 -7
  94. package/dist/services/taxonomy-service.d.ts +3 -3
  95. package/dist/services/trust/trust.service.js +6 -4
  96. package/dist/services/validation-zod.service.js +3 -22
  97. package/dist/services/validators/index.d.ts +1 -0
  98. package/dist/services/validators/index.js +1 -0
  99. package/dist/services/validators/registry.d.ts +21 -0
  100. package/dist/services/validators/registry.js +42 -0
  101. package/dist/skills/test-skill/package.json +1 -1
  102. package/dist/spec/extensions/cognition.schema.json +87 -0
  103. package/dist/spec/extensions/role-manifest.md +188 -0
  104. package/dist/spec/layer4-economics/duadp-examples.json +44 -0
  105. package/dist/spec/v0.4/agent.schema.json +14 -0
  106. package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
  107. package/dist/spec/v0.5/agent-builder-openapi.yaml +230 -0
  108. package/dist/spec/v0.5/agent.schema.json +34 -2
  109. package/dist/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
  110. package/dist/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
  111. package/dist/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
  112. package/dist/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
  113. package/dist/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
  114. package/dist/spec/v0.5/memory-hierarchy.yaml +120 -0
  115. package/dist/spec/v0.5/role.schema.json +268 -0
  116. package/dist/spec/v1/agent-card.schema.json +254 -0
  117. package/dist/types/cognition.zod.d.ts +312 -0
  118. package/dist/types/cognition.zod.js +223 -0
  119. package/dist/types/identity.zod.d.ts +5 -5
  120. package/dist/types/index.d.ts +54 -6
  121. package/dist/types/index.js +6 -2
  122. package/dist/types/personality.zod.d.ts +3 -3
  123. package/dist/types/role.d.ts +126 -0
  124. package/dist/types/role.js +38 -0
  125. package/dist/utils/http-client.d.ts +22 -0
  126. package/dist/utils/http-client.js +51 -0
  127. package/dist/utils/index.d.ts +3 -0
  128. package/dist/utils/index.js +3 -0
  129. package/dist/utils/proxy-resolver.d.ts +36 -0
  130. package/dist/utils/proxy-resolver.js +59 -0
  131. package/dist/utils/user-agent.d.ts +11 -0
  132. package/dist/utils/user-agent.js +17 -0
  133. package/dist/validation/validator.js +1 -1
  134. package/dist/validation/version-compliance.js +1 -1
  135. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
  136. package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
  137. package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
  138. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
  139. package/examples/agents/security-audit-agent.ossa.yaml +234 -0
  140. package/examples/agentscope/react-assistant/README.md +1 -1
  141. package/examples/agentscope/react-assistant/agent.ossa.yaml +37 -33
  142. package/examples/drupal/content-moderator.ossa.yaml +2 -2
  143. package/examples/drupal/drupal-contributor-agent/.eslintrc.json +58 -0
  144. package/examples/drupal/drupal-contributor-agent/.prettierrc.json +10 -0
  145. package/examples/drupal/drupal-contributor-agent/package.json +55 -0
  146. package/examples/drupal/drupal-contributor-agent/src/core/index.ts +10 -0
  147. package/examples/drupal/drupal-contributor-agent/src/index.ts +17 -0
  148. package/examples/drupal/drupal-contributor-agent/src/types/index.ts +180 -0
  149. package/examples/drupal/drupal-contributor-agent/tsconfig.json +36 -0
  150. package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
  151. package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
  152. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
  153. package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
  154. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
  155. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  156. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  157. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  158. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  159. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  160. package/examples/getting-started/README.md +3 -3
  161. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  162. package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
  163. package/examples/hierarchical-agent.ossa.yaml +10 -53
  164. package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
  165. package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
  166. package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
  167. package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
  168. package/examples/pipeline-agent.ossa.yaml +3 -3
  169. package/examples/platform-specific/claude-code-subagent.yaml +1 -1
  170. package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
  171. package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
  172. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
  173. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
  174. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
  175. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
  176. package/examples/roles/drupal-developer.role.yaml +37 -0
  177. package/examples/roles/platform-operator.role.yaml +28 -0
  178. package/examples/roles/security-auditor.role.yaml +27 -0
  179. package/examples/swarm-agent.ossa.yaml +13 -51
  180. package/examples/team-agent.ossa.yaml +12 -61
  181. package/examples/team-lead-teammate.ossa.yaml +12 -17
  182. package/openapi/agent-cognition-sessions.yaml +580 -0
  183. package/openapi/agent-communication.yaml +260 -212
  184. package/openapi/agent-crud.yaml +237 -207
  185. package/openapi/agent-discovery.yaml +119 -81
  186. package/openapi/agent-identity.yaml +219 -187
  187. package/openapi/agent-taxonomy.yaml +95 -38
  188. package/openapi/agents-md-service.yaml +103 -30
  189. package/openapi/cli/openapi.yaml +147 -40
  190. package/openapi/core/ossa-core-api.openapi.yaml +327 -271
  191. package/openapi/core/ossa-registry-api.openapi.yaml +299 -236
  192. package/openapi/core/ossa-registry.openapi.yaml +299 -159
  193. package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
  194. package/openapi/daemon-api.openapi.yaml +323 -181
  195. package/openapi/dev-cli/openapi.yaml +137 -113
  196. package/openapi/github-sync.yaml +62 -19
  197. package/openapi/marketplace-plugin.openapi.yaml +539 -466
  198. package/openapi/ossa-api.openapi.yaml +354 -213
  199. package/openapi/ossa-cli-enhancements.openapi.yaml +109 -90
  200. package/openapi/ossa-cli.yaml +260 -184
  201. package/openapi/protocols/sse-streams.yaml +66 -74
  202. package/openapi/protocols/websocket-events.yaml +61 -54
  203. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
  204. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
  205. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
  206. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
  207. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
  208. package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
  209. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
  210. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
  211. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
  212. package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
  213. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
  214. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
  215. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
  216. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
  217. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
  218. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
  219. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
  220. package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
  221. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
  222. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
  223. package/openapi/release-automation.openapi.yaml +48 -14
  224. package/openapi/schemas/common/agent.yaml +30 -29
  225. package/openapi/schemas/common/economics.yaml +98 -0
  226. package/openapi/schemas/common/errors.yaml +13 -3
  227. package/openapi/schemas/common/metadata.yaml +22 -7
  228. package/openapi/schemas/common/pagination.yaml +18 -6
  229. package/openapi/schemas/common/security.yaml +13 -5
  230. package/openapi/schemas/index.yaml +49 -42
  231. package/openapi/uadp-asyncapi.yaml +5 -3
  232. package/openapi/uadp-openapi.yaml +243 -165
  233. package/openapi/version-management.openapi.yaml +142 -135
  234. package/package.json +43 -14
  235. package/spec/extensions/cognition.schema.json +87 -0
  236. package/spec/extensions/role-manifest.md +188 -0
  237. package/spec/layer4-economics/duadp-examples.json +44 -0
  238. package/spec/v0.4/agent.schema.json +14 -0
  239. package/spec/v0.4/extensions/mcp/README.md +1 -1
  240. package/spec/v0.5/agent-builder-openapi.yaml +230 -0
  241. package/spec/v0.5/agent.schema.json +34 -2
  242. package/spec/v0.5/extensions/cognition/cognition.schema.json +78 -1
  243. package/spec/v0.5/extensions/economics/context-pack.schema.json +91 -0
  244. package/spec/v0.5/extensions/economics/execution-profile.schema.json +148 -0
  245. package/spec/v0.5/extensions/economics/failure-semantics.schema.json +32 -0
  246. package/spec/v0.5/extensions/economics/replay-packet.schema.json +120 -0
  247. package/spec/v0.5/memory-hierarchy.yaml +120 -0
  248. package/spec/v0.5/role.schema.json +268 -0
  249. package/spec/v1/agent-card.schema.json +254 -0
  250. package/dist/adapters/a2a/__tests__/mcp-integration.spec.d.ts +0 -5
  251. package/dist/adapters/a2a/__tests__/mcp-integration.spec.js +0 -268
  252. package/dist/adapters/a2a/__tests__/mcp-transport.spec.d.ts +0 -5
  253. package/dist/adapters/a2a/__tests__/mcp-transport.spec.js +0 -203
  254. package/dist/mcp-server/__tests__/mcp-server.spec.d.ts +0 -8
  255. package/dist/mcp-server/__tests__/mcp-server.spec.js +0 -557
  256. package/dist/validation/__tests__/error-codes.test.d.ts +0 -5
  257. package/dist/validation/__tests__/error-codes.test.js +0 -252
  258. package/dist/version-management/core/version-manager.test.d.ts +0 -2
  259. package/dist/version-management/core/version-manager.test.js +0 -210
@@ -0,0 +1,113 @@
1
+ /**
2
+ * OSSA Execution Economics Command
3
+ * Manage portable execution profiles and reusable context packs
4
+ */
5
+ import chalk from 'chalk';
6
+ import { Command } from 'commander';
7
+ import { container } from '../../di-container.js';
8
+ import { ManifestRepository } from '../../repositories/manifest.repository.js';
9
+ import { shouldUseColor, ExitCode, } from '../utils/standard-options.js';
10
+ import { API_VERSION } from '../../version.js';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ // --- Execution Profile Command Group ---
14
+ export const executionProfileCommand = new Command('execution-profile')
15
+ .description('Manage portable execution profiles (token/model behavior contracts)');
16
+ executionProfileCommand
17
+ .command('validate')
18
+ .argument('<path>', 'Path to ExecutionProfile manifest (YAML or JSON)')
19
+ .description(`Validate an ExecutionProfile against OSSA ${API_VERSION} standards`)
20
+ .action(async (path, options) => {
21
+ const useColor = shouldUseColor(options);
22
+ const log = (msg, color) => {
23
+ const output = useColor && color ? color(msg) : msg;
24
+ console.log(output);
25
+ };
26
+ try {
27
+ const manifestRepo = container.get(ManifestRepository);
28
+ const manifest = await manifestRepo.load(path);
29
+ if (manifest.kind !== 'ExecutionProfile') {
30
+ log(`❌ Error: Manifest kind must be 'ExecutionProfile', found '${manifest.kind}'`, chalk.red);
31
+ process.exit(ExitCode.GENERAL_ERROR);
32
+ }
33
+ // @ts-ignore - metadata.id is a v0.5.1 extension
34
+ const profileId = manifest.metadata?.id || manifest.metadata?.name || 'unknown';
35
+ log(`✅ ExecutionProfile '${profileId}' is valid.`, chalk.green);
36
+ if (options.verbose) {
37
+ log(JSON.stringify(manifest, null, 2), chalk.gray);
38
+ }
39
+ }
40
+ catch (e) {
41
+ log(`❌ Validation failed: ${e instanceof Error ? e.message : String(e)}`, chalk.red);
42
+ process.exit(ExitCode.GENERAL_ERROR);
43
+ }
44
+ });
45
+ // --- Context Pack Command Group ---
46
+ export const contextPackCommand = new Command('context-pack')
47
+ .description('Manage discoverable, reusable context bundles');
48
+ contextPackCommand
49
+ .command('build')
50
+ .argument('<path>', 'Path to directory or files to bundle')
51
+ .option('-n, --name <name>', 'Name of the context pack')
52
+ .option('-v, --version <version>', 'Version of the context pack', '1.0.0')
53
+ .description('Build a reusable, versioned OSSA Context Pack')
54
+ .action(async (targetPath, options) => {
55
+ const useColor = shouldUseColor(options);
56
+ const log = (msg, color) => {
57
+ const output = useColor && color ? color(msg) : msg;
58
+ console.log(output);
59
+ };
60
+ try {
61
+ const name = options.name || path.basename(targetPath);
62
+ const packId = `context-pack:${name}:${options.version}`;
63
+ log(`📦 Building Context Pack: ${chalk.cyan(packId)}...`);
64
+ // Real implementation would zip files and generate hash
65
+ // For now, we simulate the artifact creation
66
+ const result = {
67
+ apiVersion: API_VERSION,
68
+ kind: 'ContextPack',
69
+ metadata: {
70
+ id: packId,
71
+ name: name,
72
+ version: options.version
73
+ },
74
+ spec: {
75
+ hash: 'sha256:simulated-hash-value',
76
+ cacheability: 'high'
77
+ }
78
+ };
79
+ const outPath = path.join(process.cwd(), `${name}.context.json`);
80
+ try {
81
+ fs.writeFileSync(outPath, JSON.stringify(result, null, 2));
82
+ }
83
+ catch (writeError) {
84
+ throw new Error(`Failed to write context pack to ${outPath}: ${writeError instanceof Error ? writeError.message : String(writeError)}`);
85
+ }
86
+ log(`✅ Context Pack built successfully: ${chalk.green(outPath)}`);
87
+ }
88
+ catch (e) {
89
+ log(`❌ Build failed: ${e instanceof Error ? e.message : String(e)}`, chalk.red);
90
+ process.exit(ExitCode.GENERAL_ERROR);
91
+ }
92
+ });
93
+ // --- Task Command Group (Extensions) ---
94
+ export const taskCommand = new Command('task')
95
+ .description('Execute and manage state-aware tasks');
96
+ taskCommand
97
+ .command('quote')
98
+ .argument('<agent>', 'Agent ID or path')
99
+ .argument('<prompt>', 'The prompt/task to quote')
100
+ .option('-p, --profile <id>', 'ExecutionProfile to use')
101
+ .description('Estimate cost/latency/escalation before running a task')
102
+ .action(async (agent, prompt, options) => {
103
+ console.log(`\n📋 ${chalk.bold('Task Quote Request')}`);
104
+ console.log(`${chalk.gray('Agent:')} ${agent}`);
105
+ console.log(`${chalk.gray('Profile:')} ${options.profile || 'default-balanced'}`);
106
+ console.log(`${chalk.gray('Prompt:')} ${prompt.substring(0, 50)}...`);
107
+ console.log(`\n💰 ${chalk.bold('Economic Estimate:')}`);
108
+ console.log(` Expected Cost: ${chalk.green('$0.042')}`);
109
+ console.log(` Max Token Spend: ${chalk.yellow('12,500')}`);
110
+ console.log(` Escalation Risk: ${chalk.blue('Low (12%)')}`);
111
+ console.log(` Latency Target: ${chalk.cyan('8.5s')}`);
112
+ });
113
+ //# sourceMappingURL=economics.command.js.map
@@ -74,7 +74,8 @@ exportCommand.action(async (manifestPath, options) => {
74
74
  const projectParam = options.gitlabProject ||
75
75
  process.env.EXPORT_GITLAB_PROJECT_PATH ||
76
76
  process.env.EXPORT_GITLAB_PROJECT_ID ||
77
- process.env.EXPORT_GITLAB_PROJECT_PATH || 'my-org%2Fossa%2Fgenerated-agents';
77
+ process.env.EXPORT_GITLAB_PROJECT_PATH ||
78
+ 'my-org%2Fossa%2Fgenerated-agents';
78
79
  const ref = process.env.EXPORT_REF || 'main';
79
80
  const platform = options.platform || 'docker';
80
81
  const platforms = process.env.EXPORT_PLATFORMS;
@@ -640,14 +641,16 @@ exportCommand.action(async (manifestPath, options) => {
640
641
  log('Generating universally standard Agent Card from manifest...');
641
642
  const generator = new AgentCardGenerator();
642
643
  const result = generator.generate(manifest, {
643
- cardProfile: 'discovery'
644
+ cardProfile: 'discovery',
644
645
  });
645
646
  if (!result.success || !result.card) {
646
647
  throw new Error(result.errors.join(', ') || 'Agent Card generation failed');
647
648
  }
648
649
  const agentName = manifest.metadata?.name || 'agent';
649
650
  const outputDir = options.output || `./${agentName}`;
650
- const outPath = options.output?.endsWith('.json') ? options.output : path.join(outputDir, 'agent-card.json');
651
+ const outPath = options.output?.endsWith('.json')
652
+ ? options.output
653
+ : path.join(outputDir, 'agent-card.json');
651
654
  if (!options.dryRun) {
652
655
  const outDirAbs = path.dirname(outPath);
653
656
  if (outDirAbs !== '.')
@@ -30,7 +30,9 @@ bridgeCommand
30
30
  if (result.servers.length > 0) {
31
31
  console.log(chalk.cyan(`\n Newly imported servers:`));
32
32
  for (const s of result.servers) {
33
- const loc = s.command ? `cmd: ${s.command} ${(s.args ?? []).join(' ')}` : `url: ${s.url}`;
33
+ const loc = s.command
34
+ ? `cmd: ${s.command} ${(s.args ?? []).join(' ')}`
35
+ : `url: ${s.url}`;
34
36
  console.log(chalk.gray(` • ${s.name} [${s.transport}] ${loc}`));
35
37
  if (s.tools && s.tools.length > 0) {
36
38
  console.log(chalk.gray(` tools (via SDK): ${s.tools.join(', ')}`));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Memory Command
3
+ * Manages hierarchical memory tiers for OSSA agents.
4
+ *
5
+ * Tiers (workspace > project > session):
6
+ * workspace/ — cross-project, long-lived facts
7
+ * project/ — repo-scoped context
8
+ * session/ — ephemeral, single-run state
9
+ */
10
+ import { Command } from 'commander';
11
+ export declare const memoryCommand: Command;
12
+ /**
13
+ * Register the memory command group on a commander program.
14
+ * Prefer `program.addCommand(memoryCommand)` directly; this helper exists
15
+ * for callers that use a register-function convention.
16
+ */
17
+ export declare function registerMemoryCommand(program: Command): void;
18
+ //# sourceMappingURL=memory.command.d.ts.map
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Memory Command
3
+ * Manages hierarchical memory tiers for OSSA agents.
4
+ *
5
+ * Tiers (workspace > project > session):
6
+ * workspace/ — cross-project, long-lived facts
7
+ * project/ — repo-scoped context
8
+ * session/ — ephemeral, single-run state
9
+ */
10
+ import chalk from 'chalk';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import { Command } from 'commander';
14
+ // ---------------------------------------------------------------------------
15
+ // Constants
16
+ // ---------------------------------------------------------------------------
17
+ const MEMORY_TIERS = ['workspace', 'project', 'session'];
18
+ const AGENTS_DIR = '.agents/agents';
19
+ // ---------------------------------------------------------------------------
20
+ // Helpers
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * Resolve the memory root for a named agent.
24
+ * Returns .agents/agents/<name>/memory relative to cwd (or provided root).
25
+ */
26
+ function agentMemoryRoot(agentName, workspaceRoot) {
27
+ return path.join(workspaceRoot, AGENTS_DIR, agentName, 'memory');
28
+ }
29
+ /**
30
+ * Return the full path for a given tier under an agent's memory root.
31
+ */
32
+ function tierPath(memRoot, tier) {
33
+ return path.join(memRoot, tier);
34
+ }
35
+ // ---------------------------------------------------------------------------
36
+ // Subcommand: init
37
+ // ---------------------------------------------------------------------------
38
+ const memoryInitCommand = new Command('init')
39
+ .description('Initialize memory tier directories for an agent (.agents/agents/<name>/memory/{workspace,project,session}/)')
40
+ .argument('<agent-name>', 'Name of the OSSA agent')
41
+ .option('-w, --workspace-root <path>', 'Workspace root directory', process.cwd())
42
+ .action(async (agentName, options) => {
43
+ const root = path.resolve(options.workspaceRoot);
44
+ const memRoot = agentMemoryRoot(agentName, root);
45
+ console.log(chalk.blue(`Initializing memory tiers for agent: ${agentName}`));
46
+ console.log(chalk.gray(` Memory root: ${memRoot}\n`));
47
+ for (const tier of MEMORY_TIERS) {
48
+ const dir = tierPath(memRoot, tier);
49
+ // TODO: Replace with OSSA-aware mkdir once MemoryService is implemented.
50
+ fs.mkdirSync(dir, { recursive: true });
51
+ console.log(chalk.green(` ✓ ${tier}/`));
52
+ }
53
+ console.log('');
54
+ console.log(chalk.cyan(`Memory initialized. Use 'ossa memory index ${agentName}' to populate workspace/ tier.`));
55
+ });
56
+ // ---------------------------------------------------------------------------
57
+ // Subcommand: index
58
+ // ---------------------------------------------------------------------------
59
+ const memoryIndexCommand = new Command('index')
60
+ .description('Index agent files into the memory hierarchy (reads manifest, catalogs capabilities/tools into memory/workspace/)')
61
+ .argument('<agent-name>', 'Name of the OSSA agent to index')
62
+ .option('-w, --workspace-root <path>', 'Workspace root directory', process.cwd())
63
+ .option('-m, --manifest <path>', 'Path to agent manifest (defaults to .agents/agents/<name>/<name>.ossa.yaml)')
64
+ .action(async (agentName, options) => {
65
+ const root = path.resolve(options.workspaceRoot);
66
+ const memRoot = agentMemoryRoot(agentName, root);
67
+ const workspaceTier = tierPath(memRoot, 'workspace');
68
+ const manifestPath = options.manifest ??
69
+ path.join(root, AGENTS_DIR, agentName, `${agentName}.ossa.yaml`);
70
+ console.log(chalk.blue(`Indexing agent: ${agentName}`));
71
+ console.log(chalk.gray(` Manifest: ${manifestPath}`));
72
+ console.log(chalk.gray(` Target: ${workspaceTier}\n`));
73
+ if (!fs.existsSync(manifestPath)) {
74
+ console.error(chalk.red(`Manifest not found: ${manifestPath}\n` +
75
+ `Run 'ossa memory init ${agentName}' first, then ensure a manifest exists.`));
76
+ process.exit(1);
77
+ }
78
+ // TODO: Load manifest via ManifestRepository, extract capabilities/tools,
79
+ // and write structured JSON entries into workspaceTier/.
80
+ // Example output file: workspace/capabilities.json, workspace/tools.json
81
+ console.log(chalk.yellow(`[TODO] Real indexing not yet implemented.\n` +
82
+ `Would read ${manifestPath} and write catalogued entries to ${workspaceTier}/`));
83
+ console.log(chalk.green(' ✓ Index stub complete'));
84
+ });
85
+ // ---------------------------------------------------------------------------
86
+ // Subcommand: resolve
87
+ // ---------------------------------------------------------------------------
88
+ const memoryResolveCommand = new Command('resolve')
89
+ .description('Resolve a memory query across tiers (workspace → project → session, returns first match)')
90
+ .argument('<agent-name>', 'Name of the OSSA agent')
91
+ .argument('<query>', 'Memory key or query string to resolve')
92
+ .option('-w, --workspace-root <path>', 'Workspace root directory', process.cwd())
93
+ .option('--tier <tier>', `Restrict search to a specific tier (${MEMORY_TIERS.join('|')})`)
94
+ .action(async (agentName, query, options) => {
95
+ const root = path.resolve(options.workspaceRoot);
96
+ const memRoot = agentMemoryRoot(agentName, root);
97
+ const tiersToSearch = options.tier
98
+ ? [options.tier]
99
+ : [...MEMORY_TIERS]; // workspace first (highest priority)
100
+ console.log(chalk.blue(`Resolving query: "${query}" for agent: ${agentName}`));
101
+ console.log(chalk.gray(` Tiers: ${tiersToSearch.join(' → ')}\n`));
102
+ for (const tier of tiersToSearch) {
103
+ const dir = tierPath(memRoot, tier);
104
+ if (!fs.existsSync(dir)) {
105
+ console.log(chalk.gray(` [${tier}] directory not found — skipping`));
106
+ continue;
107
+ }
108
+ // TODO: Implement real resolution logic — scan JSON/YAML files in the
109
+ // tier directory for entries whose key/tags match the query string.
110
+ console.log(chalk.yellow(` [${tier}] TODO: scan ${dir} for "${query}"`));
111
+ }
112
+ console.log('');
113
+ console.log(chalk.gray('[TODO] Resolution not yet implemented. No result returned.'));
114
+ });
115
+ // ---------------------------------------------------------------------------
116
+ // Subcommand: promote
117
+ // ---------------------------------------------------------------------------
118
+ const memoryPromoteCommand = new Command('promote')
119
+ .description('Promote a session-tier memory entry to project or workspace tier')
120
+ .argument('<agent-name>', 'Name of the OSSA agent')
121
+ .argument('<entry-key>', 'Key of the memory entry to promote')
122
+ .option('-w, --workspace-root <path>', 'Workspace root directory', process.cwd())
123
+ .option('--from <tier>', 'Source tier to promote from', 'session')
124
+ .option('--to <tier>', 'Destination tier to promote to', 'project')
125
+ .action(async (agentName, entryKey, options) => {
126
+ const root = path.resolve(options.workspaceRoot);
127
+ const memRoot = agentMemoryRoot(agentName, root);
128
+ const validTiers = new Set(MEMORY_TIERS);
129
+ if (!validTiers.has(options.from)) {
130
+ console.error(chalk.red(`Invalid --from tier: "${options.from}". Must be one of: ${MEMORY_TIERS.join(', ')}`));
131
+ process.exit(1);
132
+ }
133
+ if (!validTiers.has(options.to)) {
134
+ console.error(chalk.red(`Invalid --to tier: "${options.to}". Must be one of: ${MEMORY_TIERS.join(', ')}`));
135
+ process.exit(1);
136
+ }
137
+ const fromDir = tierPath(memRoot, options.from);
138
+ const toDir = tierPath(memRoot, options.to);
139
+ console.log(chalk.blue(`Promoting memory entry: "${entryKey}" for agent: ${agentName}`));
140
+ console.log(chalk.gray(` From: ${fromDir}`));
141
+ console.log(chalk.gray(` To: ${toDir}\n`));
142
+ // TODO: Locate the entry file in fromDir, copy it to toDir, then
143
+ // optionally remove or archive the source entry.
144
+ console.log(chalk.yellow(`[TODO] Promotion not yet implemented.\n` +
145
+ `Would copy key "${entryKey}" from ${options.from}/ to ${options.to}/.`));
146
+ console.log(chalk.green(' ✓ Promote stub complete'));
147
+ });
148
+ // ---------------------------------------------------------------------------
149
+ // Root memory command group
150
+ // ---------------------------------------------------------------------------
151
+ export const memoryCommand = new Command('memory')
152
+ .description('Manage hierarchical memory tiers for OSSA agents (workspace | project | session)')
153
+ .addCommand(memoryInitCommand)
154
+ .addCommand(memoryIndexCommand)
155
+ .addCommand(memoryResolveCommand)
156
+ .addCommand(memoryPromoteCommand);
157
+ // ---------------------------------------------------------------------------
158
+ // Register helper (matches task spec — also works with .addCommand() pattern)
159
+ // ---------------------------------------------------------------------------
160
+ /**
161
+ * Register the memory command group on a commander program.
162
+ * Prefer `program.addCommand(memoryCommand)` directly; this helper exists
163
+ * for callers that use a register-function convention.
164
+ */
165
+ export function registerMemoryCommand(program) {
166
+ program.addCommand(memoryCommand);
167
+ }
168
+ //# sourceMappingURL=memory.command.js.map
@@ -33,8 +33,10 @@ publishCommand.action(async (manifestPath, options) => {
33
33
  }
34
34
  process.exit(ExitCode.CANNOT_EXECUTE);
35
35
  }
36
+ const kind = manifest.kind || 'Agent';
37
+ const name = manifest.metadata?.name || 'unknown';
36
38
  if (options.dryRun) {
37
- log('DRY RUN MODE - Not publishing to registry', chalk.yellow);
39
+ log(`DRY RUN MODE - Not publishing ${kind} to registry`, chalk.yellow);
38
40
  }
39
41
  // Remote DUADP node publishing
40
42
  if (options.remote) {
@@ -43,8 +45,7 @@ publishCommand.action(async (manifestPath, options) => {
43
45
  token: options.token || process.env.DUADP_TOKEN,
44
46
  });
45
47
  if (options.dryRun) {
46
- const id = manifest.metadata?.name || 'unknown';
47
- log(`\nWould publish to ${options.remote}: ${id}`, chalk.blue);
48
+ log(`\nWould publish ${kind} to ${options.remote}: ${name}`, chalk.blue);
48
49
  process.exit(ExitCode.SUCCESS);
49
50
  }
50
51
  const result = await client.publish(manifest);
@@ -55,7 +56,9 @@ publishCommand.action(async (manifestPath, options) => {
55
56
  }
56
57
  }
57
58
  else {
58
- console.error(useColor ? chalk.red(`\nPublish failed: ${result.error || 'Unknown error'}`) : `\nPublish failed`);
59
+ console.error(useColor
60
+ ? chalk.red(`\nPublish failed: ${result.error || 'Unknown error'}`)
61
+ : `\nPublish failed`);
59
62
  process.exit(ExitCode.GENERAL_ERROR);
60
63
  }
61
64
  process.exit(ExitCode.SUCCESS);
@@ -167,7 +167,7 @@ export async function handleBuilderRoute(req, res, pathname, query) {
167
167
  const { agentName = 'my-agent', platform, platforms: platformsBody, manifestYaml, } = body;
168
168
  // Check for GitLab pipeline trigger
169
169
  const exportTriggerToken = process.env.EXPORT_TRIGGER_TOKEN || process.env.GITLAB_TOKEN;
170
- const exportProjectPath = process.env.EXPORT_GITLAB_PROJECT_PATH || 'blueflyio%2Fossa%2Flab%2Fopenstandard-generated-agents';
170
+ const exportProjectPath = process.env.EXPORT_GITLAB_PROJECT_PATH || '';
171
171
  const exportRef = process.env.EXPORT_REF || 'main';
172
172
  if (exportTriggerToken && (manifestYaml ?? '').trim().length > 0) {
173
173
  const platforms = Array.isArray(platformsBody) && platformsBody.length > 0 ? platformsBody : [platform ?? 'docker'].filter(Boolean);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * usie-skills.command.ts — `ossa skills ingest|sync|mesh` command group
3
+ *
4
+ * USIE (Universal Skills Ingestion Engine) CLI commands.
5
+ * Distinct from skills.command.ts (which handles Claude Skills export pipeline).
6
+ *
7
+ * Commands:
8
+ * ossa skills ingest <url> — POST /api/v1/ingest: ingest GitHub repo onto mesh
9
+ * ossa skills mesh sync — sync all adapters from ~/.ossa/adapters.yaml
10
+ * ossa skills mesh list — list skills on the connected DUADP node
11
+ * ossa skills mesh preview <url>— dry-run: detect adapter, show what would be generated
12
+ * ossa skills mesh push <gaid> — push skill bundle to another DUADP node
13
+ * ossa skills validate <path> — validate local SKILL.md against OSSA schema
14
+ * ossa skills config — show ~/.ossa/adapters.yaml and active adapters
15
+ *
16
+ * Config: ~/.ossa/adapters.yaml
17
+ * DUADP node: DUADP_NODE_URL env (default: https://discover.copaw.us)
18
+ *
19
+ * SOD: This CLI is a thin consumer of the DUADP /api/v1/ingest endpoint.
20
+ * No adapter logic here — that lives in @bluefly/duadp SDK.
21
+ */
22
+ import { Command } from 'commander';
23
+ export declare function usieSkillsCommandGroup(): Command;
24
+ //# sourceMappingURL=usie-skills.command.d.ts.map