opc-agent 2.0.2 → 3.0.0

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 (151) hide show
  1. package/README.md +603 -545
  2. package/dist/channels/voice.d.ts +59 -0
  3. package/dist/channels/voice.js +351 -1
  4. package/dist/cli.js +284 -5
  5. package/dist/core/agent.d.ts +9 -0
  6. package/dist/core/agent.js +49 -0
  7. package/dist/core/collaboration.d.ts +89 -0
  8. package/dist/core/collaboration.js +201 -0
  9. package/dist/deploy/index.d.ts +40 -0
  10. package/dist/deploy/index.js +261 -0
  11. package/dist/index.d.ts +7 -1
  12. package/dist/index.js +47 -3
  13. package/dist/mcp/servers/calculator-mcp.d.ts +3 -0
  14. package/dist/mcp/servers/calculator-mcp.js +65 -0
  15. package/dist/mcp/servers/crypto-mcp.d.ts +3 -0
  16. package/dist/mcp/servers/crypto-mcp.js +108 -0
  17. package/dist/mcp/servers/database-mcp.d.ts +3 -0
  18. package/dist/mcp/servers/database-mcp.js +73 -0
  19. package/dist/mcp/servers/datetime-mcp.d.ts +3 -0
  20. package/dist/mcp/servers/datetime-mcp.js +71 -0
  21. package/dist/mcp/servers/filesystem.d.ts +3 -0
  22. package/dist/mcp/servers/filesystem.js +101 -0
  23. package/dist/mcp/servers/github-mcp.d.ts +3 -0
  24. package/dist/mcp/servers/github-mcp.js +60 -0
  25. package/dist/mcp/servers/index.d.ts +21 -0
  26. package/dist/mcp/servers/index.js +50 -0
  27. package/dist/mcp/servers/json-mcp.d.ts +3 -0
  28. package/dist/mcp/servers/json-mcp.js +126 -0
  29. package/dist/mcp/servers/memory-mcp.d.ts +3 -0
  30. package/dist/mcp/servers/memory-mcp.js +60 -0
  31. package/dist/mcp/servers/regex-mcp.d.ts +3 -0
  32. package/dist/mcp/servers/regex-mcp.js +56 -0
  33. package/dist/mcp/servers/web-mcp.d.ts +3 -0
  34. package/dist/mcp/servers/web-mcp.js +51 -0
  35. package/dist/memory/index.d.ts +2 -0
  36. package/dist/memory/index.js +4 -1
  37. package/dist/memory/seed-loader.d.ts +51 -0
  38. package/dist/memory/seed-loader.js +200 -0
  39. package/dist/schema/oad.d.ts +292 -12
  40. package/dist/schema/oad.js +12 -1
  41. package/dist/security/guardrails.d.ts +50 -0
  42. package/dist/security/guardrails.js +197 -0
  43. package/dist/studio/server.d.ts +31 -1
  44. package/dist/studio/server.js +154 -3
  45. package/dist/studio-ui/index.html +1278 -662
  46. package/dist/tools/integrations/calendar.d.ts +3 -0
  47. package/dist/tools/integrations/calendar.js +73 -0
  48. package/dist/tools/integrations/code-exec.d.ts +3 -0
  49. package/dist/tools/integrations/code-exec.js +42 -0
  50. package/dist/tools/integrations/csv-analyzer.d.ts +3 -0
  51. package/dist/tools/integrations/csv-analyzer.js +142 -0
  52. package/dist/tools/integrations/database.d.ts +3 -0
  53. package/dist/tools/integrations/database.js +44 -0
  54. package/dist/tools/integrations/email-send.d.ts +3 -0
  55. package/dist/tools/integrations/email-send.js +104 -0
  56. package/dist/tools/integrations/git-tool.d.ts +3 -0
  57. package/dist/tools/integrations/git-tool.js +49 -0
  58. package/dist/tools/integrations/github-tool.d.ts +3 -0
  59. package/dist/tools/integrations/github-tool.js +77 -0
  60. package/dist/tools/integrations/image-gen.d.ts +3 -0
  61. package/dist/tools/integrations/image-gen.js +58 -0
  62. package/dist/tools/integrations/index.d.ts +30 -0
  63. package/dist/tools/integrations/index.js +107 -0
  64. package/dist/tools/integrations/jira.d.ts +3 -0
  65. package/dist/tools/integrations/jira.js +85 -0
  66. package/dist/tools/integrations/notion.d.ts +3 -0
  67. package/dist/tools/integrations/notion.js +71 -0
  68. package/dist/tools/integrations/npm-tool.d.ts +3 -0
  69. package/dist/tools/integrations/npm-tool.js +49 -0
  70. package/dist/tools/integrations/pdf-reader.d.ts +3 -0
  71. package/dist/tools/integrations/pdf-reader.js +91 -0
  72. package/dist/tools/integrations/slack.d.ts +3 -0
  73. package/dist/tools/integrations/slack.js +67 -0
  74. package/dist/tools/integrations/summarizer.d.ts +3 -0
  75. package/dist/tools/integrations/summarizer.js +49 -0
  76. package/dist/tools/integrations/translator.d.ts +3 -0
  77. package/dist/tools/integrations/translator.js +48 -0
  78. package/dist/tools/integrations/trello.d.ts +3 -0
  79. package/dist/tools/integrations/trello.js +60 -0
  80. package/dist/tools/integrations/vector-search.d.ts +3 -0
  81. package/dist/tools/integrations/vector-search.js +44 -0
  82. package/dist/tools/integrations/web-scraper.d.ts +3 -0
  83. package/dist/tools/integrations/web-scraper.js +48 -0
  84. package/dist/tools/integrations/web-search.d.ts +3 -0
  85. package/dist/tools/integrations/web-search.js +60 -0
  86. package/dist/tools/integrations/webhook.d.ts +3 -0
  87. package/dist/tools/integrations/webhook.js +39 -0
  88. package/dist/ui/components.d.ts +10 -0
  89. package/dist/ui/components.js +123 -0
  90. package/package.json +1 -1
  91. package/src/channels/voice.ts +365 -0
  92. package/src/cli.ts +294 -6
  93. package/src/core/agent.ts +56 -0
  94. package/src/core/collaboration.ts +275 -0
  95. package/src/deploy/index.ts +255 -0
  96. package/src/index.ts +21 -1
  97. package/src/mcp/servers/calculator-mcp.ts +65 -0
  98. package/src/mcp/servers/crypto-mcp.ts +73 -0
  99. package/src/mcp/servers/database-mcp.ts +72 -0
  100. package/src/mcp/servers/datetime-mcp.ts +69 -0
  101. package/src/mcp/servers/filesystem.ts +66 -0
  102. package/src/mcp/servers/github-mcp.ts +58 -0
  103. package/src/mcp/servers/index.ts +63 -0
  104. package/src/mcp/servers/json-mcp.ts +102 -0
  105. package/src/mcp/servers/memory-mcp.ts +56 -0
  106. package/src/mcp/servers/regex-mcp.ts +53 -0
  107. package/src/mcp/servers/web-mcp.ts +49 -0
  108. package/src/memory/index.ts +3 -0
  109. package/src/memory/seed-loader.ts +212 -0
  110. package/src/schema/oad.ts +13 -0
  111. package/src/security/guardrails.ts +248 -0
  112. package/src/studio/server.ts +166 -4
  113. package/src/studio-ui/index.html +1278 -662
  114. package/src/tools/integrations/calendar.ts +73 -0
  115. package/src/tools/integrations/code-exec.ts +39 -0
  116. package/src/tools/integrations/csv-analyzer.ts +92 -0
  117. package/src/tools/integrations/database.ts +44 -0
  118. package/src/tools/integrations/email-send.ts +76 -0
  119. package/src/tools/integrations/git-tool.ts +42 -0
  120. package/src/tools/integrations/github-tool.ts +76 -0
  121. package/src/tools/integrations/image-gen.ts +56 -0
  122. package/src/tools/integrations/index.ts +92 -0
  123. package/src/tools/integrations/jira.ts +83 -0
  124. package/src/tools/integrations/notion.ts +71 -0
  125. package/src/tools/integrations/npm-tool.ts +48 -0
  126. package/src/tools/integrations/pdf-reader.ts +58 -0
  127. package/src/tools/integrations/slack.ts +65 -0
  128. package/src/tools/integrations/summarizer.ts +49 -0
  129. package/src/tools/integrations/translator.ts +48 -0
  130. package/src/tools/integrations/trello.ts +60 -0
  131. package/src/tools/integrations/vector-search.ts +42 -0
  132. package/src/tools/integrations/web-scraper.ts +47 -0
  133. package/src/tools/integrations/web-search.ts +58 -0
  134. package/src/tools/integrations/webhook.ts +38 -0
  135. package/src/ui/components.ts +127 -0
  136. package/tests/brain-seed-extended.test.ts +490 -0
  137. package/tests/brain-seed.test.ts +239 -0
  138. package/tests/collaboration.test.ts +319 -0
  139. package/tests/deploy-and-dag.test.ts +196 -0
  140. package/tests/guardrails.test.ts +177 -0
  141. package/tests/integrations.test.ts +249 -0
  142. package/tests/mcp-servers.test.ts +260 -0
  143. package/tests/voice-enhanced.test.ts +169 -0
  144. package/dist/dtv/data.d.ts +0 -18
  145. package/dist/dtv/data.js +0 -25
  146. package/dist/dtv/trust.d.ts +0 -19
  147. package/dist/dtv/trust.js +0 -40
  148. package/dist/dtv/value.d.ts +0 -23
  149. package/dist/dtv/value.js +0 -38
  150. package/dist/marketplace/index.d.ts +0 -34
  151. package/dist/marketplace/index.js +0 -202
@@ -1,202 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.publishAgent = publishAgent;
37
- exports.installAgent = installAgent;
38
- /**
39
- * Agent Marketplace - Package, publish, and install agents
40
- */
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const crypto = __importStar(require("crypto"));
44
- const child_process_1 = require("child_process");
45
- function computeChecksum(filePath) {
46
- const content = fs.readFileSync(filePath);
47
- return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
48
- }
49
- async function publishAgent(options) {
50
- const { oadPath, outputDir = '.', includeKnowledge = false } = options;
51
- const absOad = path.resolve(oadPath);
52
- const baseDir = path.dirname(absOad);
53
- if (!fs.existsSync(absOad)) {
54
- throw new Error(`OAD file not found: ${absOad}`);
55
- }
56
- // Dynamic import yaml
57
- const yaml = await Promise.resolve().then(() => __importStar(require('js-yaml')));
58
- const oadContent = fs.readFileSync(absOad, 'utf-8');
59
- const oad = yaml.load(oadContent);
60
- const name = oad.metadata?.name ?? 'unnamed-agent';
61
- const version = oad.metadata?.version ?? '0.0.0';
62
- const safeName = name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
63
- // Collect files to package
64
- const filesToPack = [
65
- { rel: path.basename(absOad), abs: absOad },
66
- ];
67
- // Include common files
68
- const extras = ['.env.example', 'README.md', 'package.json'];
69
- for (const f of extras) {
70
- const fp = path.join(baseDir, f);
71
- if (fs.existsSync(fp)) {
72
- filesToPack.push({ rel: f, abs: fp });
73
- }
74
- }
75
- // Include knowledge base if requested
76
- if (includeKnowledge) {
77
- const kbFile = path.join(baseDir, '.opc-knowledge.json');
78
- if (fs.existsSync(kbFile)) {
79
- filesToPack.push({ rel: '.opc-knowledge.json', abs: kbFile });
80
- }
81
- }
82
- // Include prompts directory if exists
83
- const promptsDir = path.join(baseDir, 'prompts');
84
- if (fs.existsSync(promptsDir) && fs.statSync(promptsDir).isDirectory()) {
85
- const promptFiles = fs.readdirSync(promptsDir);
86
- for (const pf of promptFiles) {
87
- filesToPack.push({ rel: `prompts/${pf}`, abs: path.join(promptsDir, pf) });
88
- }
89
- }
90
- // Build manifest
91
- const manifest = {
92
- name: safeName,
93
- version,
94
- description: oad.metadata?.description ?? '',
95
- author: oad.metadata?.author ?? '',
96
- license: oad.metadata?.license ?? 'Apache-2.0',
97
- oadVersion: 'opc/v1',
98
- channels: (oad.spec?.channels ?? []).map((c) => c.type),
99
- skills: (oad.spec?.skills ?? []).map((s) => s.name),
100
- files: filesToPack.map(f => f.rel),
101
- checksum: '',
102
- publishedAt: new Date().toISOString(),
103
- tags: oad.metadata?.marketplace?.tags,
104
- };
105
- // Create staging directory
106
- const stageDir = path.join(outputDir, `.opc-stage-${safeName}`);
107
- fs.mkdirSync(stageDir, { recursive: true });
108
- for (const f of filesToPack) {
109
- const dest = path.join(stageDir, f.rel);
110
- fs.mkdirSync(path.dirname(dest), { recursive: true });
111
- fs.copyFileSync(f.abs, dest);
112
- }
113
- // Write manifest
114
- fs.writeFileSync(path.join(stageDir, 'opc-manifest.json'), JSON.stringify(manifest, null, 2));
115
- // Create tar.gz
116
- const archiveName = `${safeName}-${version}.tar.gz`;
117
- const archivePath = path.join(outputDir, archiveName);
118
- try {
119
- (0, child_process_1.execSync)(`tar -czf "${archivePath}" -C "${stageDir}" .`, { stdio: 'pipe' });
120
- }
121
- catch {
122
- // Fallback: just zip the directory content list
123
- // On Windows without tar, create a simple zip-like package
124
- const packageData = {
125
- manifest,
126
- files: filesToPack.map(f => ({
127
- path: f.rel,
128
- content: fs.readFileSync(f.abs, 'utf-8'),
129
- })),
130
- };
131
- fs.writeFileSync(archivePath.replace('.tar.gz', '.opc.json'), JSON.stringify(packageData, null, 2));
132
- }
133
- // Compute checksum
134
- if (fs.existsSync(archivePath)) {
135
- manifest.checksum = computeChecksum(archivePath);
136
- }
137
- // Cleanup staging
138
- fs.rmSync(stageDir, { recursive: true, force: true });
139
- // Write final manifest
140
- fs.writeFileSync(path.join(outputDir, 'opc-manifest.json'), JSON.stringify(manifest, null, 2));
141
- return { archivePath: fs.existsSync(archivePath) ? archivePath : archivePath.replace('.tar.gz', '.opc.json'), manifest };
142
- }
143
- async function installAgent(options) {
144
- const { source, targetDir } = options;
145
- const absSource = path.resolve(source);
146
- if (!fs.existsSync(absSource)) {
147
- throw new Error(`Package not found: ${absSource}`);
148
- }
149
- let manifest;
150
- let installDir;
151
- if (absSource.endsWith('.opc.json')) {
152
- // JSON package format
153
- const pkg = JSON.parse(fs.readFileSync(absSource, 'utf-8'));
154
- manifest = pkg.manifest;
155
- installDir = targetDir ?? path.join('.', manifest.name);
156
- fs.mkdirSync(installDir, { recursive: true });
157
- for (const f of pkg.files) {
158
- const dest = path.join(installDir, f.path);
159
- fs.mkdirSync(path.dirname(dest), { recursive: true });
160
- fs.writeFileSync(dest, f.content, 'utf-8');
161
- }
162
- fs.writeFileSync(path.join(installDir, 'opc-manifest.json'), JSON.stringify(manifest, null, 2));
163
- }
164
- else {
165
- // tar.gz format
166
- const tmpDir = path.join(path.dirname(absSource), '.opc-extract-tmp');
167
- fs.mkdirSync(tmpDir, { recursive: true });
168
- try {
169
- (0, child_process_1.execSync)(`tar -xzf "${absSource}" -C "${tmpDir}"`, { stdio: 'pipe' });
170
- }
171
- catch {
172
- throw new Error('Failed to extract package. Ensure tar is available.');
173
- }
174
- const manifestPath = path.join(tmpDir, 'opc-manifest.json');
175
- if (!fs.existsSync(manifestPath)) {
176
- fs.rmSync(tmpDir, { recursive: true, force: true });
177
- throw new Error('Invalid package: missing opc-manifest.json');
178
- }
179
- manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
180
- installDir = targetDir ?? path.join('.', manifest.name);
181
- // Move files
182
- fs.mkdirSync(installDir, { recursive: true });
183
- const copyRecursive = (src, dest) => {
184
- const entries = fs.readdirSync(src, { withFileTypes: true });
185
- for (const entry of entries) {
186
- const srcPath = path.join(src, entry.name);
187
- const destPath = path.join(dest, entry.name);
188
- if (entry.isDirectory()) {
189
- fs.mkdirSync(destPath, { recursive: true });
190
- copyRecursive(srcPath, destPath);
191
- }
192
- else {
193
- fs.copyFileSync(srcPath, destPath);
194
- }
195
- }
196
- };
197
- copyRecursive(tmpDir, installDir);
198
- fs.rmSync(tmpDir, { recursive: true, force: true });
199
- }
200
- return { dir: installDir, manifest };
201
- }
202
- //# sourceMappingURL=index.js.map