opc-agent 1.4.0 → 1.4.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 (192) hide show
  1. package/CHANGELOG.md +69 -23
  2. package/CONTRIBUTING.md +60 -21
  3. package/README.md +358 -235
  4. package/README.zh-CN.md +415 -415
  5. package/dist/channels/slack.js +10 -93
  6. package/dist/channels/web.d.ts +0 -10
  7. package/dist/channels/web.js +2 -33
  8. package/dist/cli.js +60 -255
  9. package/dist/core/dashboard.d.ts +35 -0
  10. package/dist/core/dashboard.js +157 -0
  11. package/dist/core/fast-mode.d.ts +27 -0
  12. package/dist/core/fast-mode.js +59 -0
  13. package/dist/core/priority.d.ts +52 -0
  14. package/dist/core/priority.js +102 -0
  15. package/dist/core/runtime.d.ts +0 -4
  16. package/dist/core/runtime.js +0 -27
  17. package/dist/deploy/hermes.js +22 -22
  18. package/dist/deploy/openclaw.js +40 -31
  19. package/dist/index.d.ts +14 -3
  20. package/dist/index.js +20 -6
  21. package/dist/memory/cloud-storage.d.ts +40 -0
  22. package/dist/memory/cloud-storage.js +211 -0
  23. package/dist/providers/index.d.ts +1 -1
  24. package/dist/providers/index.js +1 -7
  25. package/dist/schema/oad.d.ts +2 -1
  26. package/dist/templates/code-reviewer.d.ts +8 -0
  27. package/dist/templates/code-reviewer.js +9 -5
  28. package/dist/templates/customer-service.d.ts +8 -0
  29. package/dist/templates/customer-service.js +6 -2
  30. package/dist/templates/data-analyst.d.ts +8 -0
  31. package/dist/templates/data-analyst.js +9 -5
  32. package/dist/templates/knowledge-base.d.ts +8 -0
  33. package/dist/templates/knowledge-base.js +6 -2
  34. package/dist/templates/sales-assistant.d.ts +8 -0
  35. package/dist/templates/sales-assistant.js +8 -4
  36. package/dist/templates/teacher.d.ts +8 -0
  37. package/dist/templates/teacher.js +10 -6
  38. package/docs/.vitepress/config.ts +103 -103
  39. package/docs/api/cli.md +48 -48
  40. package/docs/api/oad-schema.md +64 -64
  41. package/docs/api/sdk.md +80 -80
  42. package/docs/guide/concepts.md +51 -51
  43. package/docs/guide/configuration.md +79 -79
  44. package/docs/guide/deployment.md +42 -42
  45. package/docs/guide/getting-started.md +44 -44
  46. package/docs/guide/templates.md +28 -28
  47. package/docs/guide/testing.md +84 -84
  48. package/docs/index.md +27 -27
  49. package/docs/zh/api/cli.md +54 -54
  50. package/docs/zh/api/oad-schema.md +87 -87
  51. package/docs/zh/api/sdk.md +102 -102
  52. package/docs/zh/guide/concepts.md +104 -104
  53. package/docs/zh/guide/configuration.md +135 -135
  54. package/docs/zh/guide/deployment.md +81 -81
  55. package/docs/zh/guide/getting-started.md +82 -82
  56. package/docs/zh/guide/templates.md +84 -84
  57. package/docs/zh/guide/testing.md +88 -88
  58. package/docs/zh/index.md +27 -27
  59. package/examples/customer-service-demo/README.md +90 -90
  60. package/examples/customer-service-demo/oad.yaml +107 -107
  61. package/package.json +1 -1
  62. package/src/analytics/index.ts +66 -66
  63. package/src/channels/discord.ts +192 -192
  64. package/src/channels/email.ts +177 -177
  65. package/src/channels/feishu.ts +236 -236
  66. package/src/channels/index.ts +15 -15
  67. package/src/channels/slack.ts +160 -217
  68. package/src/channels/telegram.ts +90 -90
  69. package/src/channels/voice.ts +106 -106
  70. package/src/channels/web.ts +2 -38
  71. package/src/channels/webhook.ts +199 -199
  72. package/src/channels/websocket.ts +87 -87
  73. package/src/channels/wechat.ts +149 -149
  74. package/src/cli.ts +58 -282
  75. package/src/core/a2a.ts +143 -143
  76. package/src/core/agent.ts +152 -152
  77. package/src/core/analytics-engine.ts +186 -186
  78. package/src/core/auth.ts +57 -57
  79. package/src/core/cache.ts +141 -141
  80. package/src/core/compose.ts +77 -77
  81. package/src/core/config.ts +14 -14
  82. package/src/core/dashboard.ts +219 -0
  83. package/src/core/errors.ts +148 -148
  84. package/src/core/fast-mode.ts +75 -0
  85. package/src/core/hitl.ts +138 -138
  86. package/src/core/logger.ts +57 -57
  87. package/src/core/orchestrator.ts +215 -215
  88. package/src/core/performance.ts +187 -187
  89. package/src/core/priority.ts +140 -0
  90. package/src/core/rate-limiter.ts +128 -128
  91. package/src/core/room.ts +109 -109
  92. package/src/core/runtime.ts +152 -183
  93. package/src/core/sandbox.ts +101 -101
  94. package/src/core/security.ts +171 -171
  95. package/src/core/types.ts +68 -68
  96. package/src/core/versioning.ts +106 -106
  97. package/src/core/watch.ts +178 -178
  98. package/src/core/workflow.ts +235 -235
  99. package/src/deploy/hermes.ts +156 -156
  100. package/src/deploy/openclaw.ts +200 -190
  101. package/src/dtv/data.ts +29 -0
  102. package/src/dtv/trust.ts +43 -0
  103. package/src/dtv/value.ts +47 -0
  104. package/src/i18n/index.ts +216 -216
  105. package/src/index.ts +16 -3
  106. package/src/marketplace/index.ts +223 -0
  107. package/src/memory/cloud-storage.ts +217 -0
  108. package/src/memory/deepbrain.ts +108 -108
  109. package/src/memory/index.ts +34 -34
  110. package/src/plugins/index.ts +208 -208
  111. package/src/providers/index.ts +1 -9
  112. package/src/schema/oad.ts +155 -154
  113. package/src/skills/base.ts +16 -16
  114. package/src/skills/document.ts +100 -100
  115. package/src/skills/http.ts +35 -35
  116. package/src/skills/index.ts +27 -27
  117. package/src/skills/scheduler.ts +80 -80
  118. package/src/skills/webhook-trigger.ts +59 -59
  119. package/src/templates/code-reviewer.ts +34 -30
  120. package/src/templates/customer-service.ts +80 -76
  121. package/src/templates/data-analyst.ts +70 -66
  122. package/src/templates/executive-assistant.ts +71 -71
  123. package/src/templates/financial-advisor.ts +60 -60
  124. package/src/templates/knowledge-base.ts +31 -27
  125. package/src/templates/legal-assistant.ts +71 -71
  126. package/src/templates/sales-assistant.ts +79 -75
  127. package/src/templates/teacher.ts +79 -75
  128. package/src/testing/index.ts +181 -181
  129. package/src/tools/calculator.ts +73 -73
  130. package/src/tools/datetime.ts +149 -149
  131. package/src/tools/json-transform.ts +187 -187
  132. package/src/tools/mcp.ts +76 -76
  133. package/src/tools/text-analysis.ts +116 -116
  134. package/templates/Dockerfile +15 -15
  135. package/templates/code-reviewer/README.md +27 -27
  136. package/templates/code-reviewer/oad.yaml +41 -41
  137. package/templates/customer-service/README.md +22 -22
  138. package/templates/customer-service/oad.yaml +36 -36
  139. package/templates/docker-compose.yml +21 -21
  140. package/templates/ecommerce-assistant/README.md +45 -45
  141. package/templates/ecommerce-assistant/oad.yaml +47 -47
  142. package/templates/knowledge-base/README.md +28 -28
  143. package/templates/knowledge-base/oad.yaml +38 -38
  144. package/templates/sales-assistant/README.md +26 -26
  145. package/templates/sales-assistant/oad.yaml +43 -43
  146. package/templates/tech-support/README.md +43 -43
  147. package/templates/tech-support/oad.yaml +45 -45
  148. package/tests/a2a.test.ts +66 -66
  149. package/tests/agent.test.ts +72 -72
  150. package/tests/analytics.test.ts +50 -50
  151. package/tests/channel.test.ts +39 -39
  152. package/tests/e2e.test.ts +134 -134
  153. package/tests/errors.test.ts +83 -83
  154. package/tests/hitl.test.ts +71 -71
  155. package/tests/i18n.test.ts +41 -41
  156. package/tests/mcp.test.ts +54 -54
  157. package/tests/oad.test.ts +68 -68
  158. package/tests/performance.test.ts +115 -115
  159. package/tests/plugin.test.ts +74 -74
  160. package/tests/room.test.ts +106 -106
  161. package/tests/runtime.test.ts +42 -42
  162. package/tests/sandbox.test.ts +46 -46
  163. package/tests/security.test.ts +60 -60
  164. package/tests/templates.test.ts +77 -77
  165. package/tests/v070.test.ts +76 -76
  166. package/tests/versioning.test.ts +75 -75
  167. package/tests/voice.test.ts +61 -61
  168. package/tests/webhook.test.ts +29 -29
  169. package/tests/workflow.test.ts +143 -143
  170. package/tsconfig.json +19 -19
  171. package/vitest.config.ts +9 -9
  172. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -20
  173. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
  174. package/.github/PULL_REQUEST_TEMPLATE.md +0 -13
  175. package/.github/workflows/ci.yml +0 -24
  176. package/dist/traces/index.d.ts +0 -49
  177. package/dist/traces/index.js +0 -102
  178. package/examples/README.md +0 -22
  179. package/examples/basic-agent.ts +0 -90
  180. package/examples/brain-integration.ts +0 -71
  181. package/examples/multi-channel.ts +0 -74
  182. package/src/traces/index.ts +0 -132
  183. package/test-agent/Dockerfile +0 -9
  184. package/test-agent/README.md +0 -50
  185. package/test-agent/agent.yaml +0 -23
  186. package/test-agent/docker-compose.yml +0 -11
  187. package/test-agent/oad.yaml +0 -31
  188. package/test-agent/package-lock.json +0 -1492
  189. package/test-agent/package.json +0 -18
  190. package/test-agent/src/index.ts +0 -24
  191. package/test-agent/src/skills/echo.ts +0 -15
  192. package/test-agent/tsconfig.json +0 -25
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { AgentRuntime, truncateOutput } from './core/runtime';
3
3
  export { Logger } from './core/logger';
4
4
  export { loadOAD, validateOAD } from './core/config';
5
5
  export { OADSchema } from './schema/oad';
6
- export type { OADDocument, Metadata, Spec } from './schema/oad';
6
+ export type { OADDocument, Metadata, Spec, DTVConfig, TrustLevelType } from './schema/oad';
7
7
  export type { IAgent, IChannel, ISkill, Message, AgentContext, SkillResult, MemoryStore, AgentState } from './core/types';
8
8
  export { BaseChannel } from './channels';
9
9
  export { WebChannel } from './channels/web';
@@ -13,6 +13,9 @@ export { BaseSkill } from './skills/base';
13
13
  export { SkillRegistry } from './skills';
14
14
  export { InMemoryStore } from './memory';
15
15
  export { DeepBrainMemoryStore } from './memory/deepbrain';
16
+ export { TrustManager } from './dtv/trust';
17
+ export { ValueTracker } from './dtv/value';
18
+ export { MRGConfigReader } from './dtv/data';
16
19
  export { createProvider, SUPPORTED_PROVIDERS } from './providers';
17
20
  export { Room } from './core/room';
18
21
  export type { RoomMessage } from './core/room';
@@ -42,6 +45,8 @@ export type { Locale } from './i18n';
42
45
  export { KnowledgeBase } from './core/knowledge';
43
46
  export { deployToHermes } from './deploy/hermes';
44
47
  export type { HermesDeployOptions, HermesDeployResult } from './deploy/hermes';
48
+ export { publishAgent, installAgent } from './marketplace';
49
+ export type { AgentManifest, PublishOptions, InstallOptions } from './marketplace';
45
50
  export { createAuthMiddleware, getActiveSessions } from './core/auth';
46
51
  export type { AuthConfig, AuthSession } from './core/auth';
47
52
  export { Orchestrator } from './core/orchestrator';
@@ -90,6 +95,12 @@ export { ToolGateway } from './tools/gateway';
90
95
  export type { ToolGatewayConfig, GatewayToolName } from './tools/gateway';
91
96
  export { StreamingManager, StreamableResponse } from './core/streaming';
92
97
  export type { StreamChunk, StreamOptions } from './core/streaming';
93
- export { TraceCollector, ConsoleExporter, DeepBrainExporter } from './traces';
94
- export type { Span, SpanEvent, TraceExporter } from './traces';
98
+ export { Dashboard } from './core/dashboard';
99
+ export type { DashboardConfig } from './core/dashboard';
100
+ export { PriorityRouter } from './core/priority';
101
+ export type { PriorityConfig, PriorityTier, PriorityProviderConfig } from './core/priority';
102
+ export { FastModeRouter } from './core/fast-mode';
103
+ export type { FastModeConfig, FastModeStats } from './core/fast-mode';
104
+ export { CloudMemoryBackend } from './memory/cloud-storage';
105
+ export type { CloudStorageConfig, CloudMemoryBackendInterface } from './memory/cloud-storage';
95
106
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsonTransformTool = exports.DateTimeTool = exports.CalculatorTool = exports.WeChatChannel = exports.SlackChannel = exports.EmailChannel = exports.compose = exports.AgentPipeline = exports.Orchestrator = exports.getActiveSessions = exports.createAuthMiddleware = exports.deployToHermes = exports.KnowledgeBase = exports.addMessages = exports.detectLocale = exports.getLocale = exports.setLocale = exports.t = exports.LazyLoader = exports.RequestBatcher = exports.ConnectionPool = exports.VersionManager = exports.WebhookChannel = exports.VoiceChannel = exports.HITLManager = exports.AgentRegistry = exports.WorkflowEngine = exports.Analytics = exports.Sandbox = exports.PluginManager = exports.createMCPTool = exports.MCPToolRegistry = exports.Room = exports.SUPPORTED_PROVIDERS = exports.createProvider = exports.DeepBrainMemoryStore = exports.InMemoryStore = exports.SkillRegistry = exports.BaseSkill = exports.WebSocketChannel = exports.TelegramChannel = exports.WebChannel = exports.BaseChannel = exports.OADSchema = exports.validateOAD = exports.loadOAD = exports.Logger = exports.truncateOutput = exports.AgentRuntime = exports.BaseAgent = void 0;
4
- exports.DeepBrainExporter = exports.ConsoleExporter = exports.TraceCollector = exports.StreamableResponse = exports.StreamingManager = exports.ToolGateway = exports.ProcessWatcher = exports.DiscordChannel = exports.FeishuChannel = exports.createRateLimitPlugin = exports.createAnalyticsPlugin = exports.createLoggingPlugin = exports.inputValidation = exports.APIKeyManager = exports.corsMiddleware = exports.securityHeaders = exports.detectInjection = exports.sanitizeInput = exports.formatErrorForUser = exports.wrapError = exports.TimeoutError = exports.SecurityError = exports.RateLimitError = exports.PluginError = exports.ChannelError = exports.ConfigError = exports.ValidationError = exports.ProviderError = exports.OPCError = exports.createTeacherConfig = exports.createDataAnalystConfig = exports.getSupportedLocales = exports.LLMCache = exports.RateLimiter = exports.AnalyticsEngine = exports.formatReport = exports.loadTestCases = exports.runTests = exports.DocumentSkill = exports.SchedulerSkill = exports.WebhookTriggerSkill = exports.HttpSkill = exports.TextAnalysisTool = void 0;
3
+ exports.EmailChannel = exports.compose = exports.AgentPipeline = exports.Orchestrator = exports.getActiveSessions = exports.createAuthMiddleware = exports.installAgent = exports.publishAgent = exports.deployToHermes = exports.KnowledgeBase = exports.addMessages = exports.detectLocale = exports.getLocale = exports.setLocale = exports.t = exports.LazyLoader = exports.RequestBatcher = exports.ConnectionPool = exports.VersionManager = exports.WebhookChannel = exports.VoiceChannel = exports.HITLManager = exports.AgentRegistry = exports.WorkflowEngine = exports.Analytics = exports.Sandbox = exports.PluginManager = exports.createMCPTool = exports.MCPToolRegistry = exports.Room = exports.SUPPORTED_PROVIDERS = exports.createProvider = exports.MRGConfigReader = exports.ValueTracker = exports.TrustManager = exports.DeepBrainMemoryStore = exports.InMemoryStore = exports.SkillRegistry = exports.BaseSkill = exports.WebSocketChannel = exports.TelegramChannel = exports.WebChannel = exports.BaseChannel = exports.OADSchema = exports.validateOAD = exports.loadOAD = exports.Logger = exports.truncateOutput = exports.AgentRuntime = exports.BaseAgent = void 0;
4
+ exports.CloudMemoryBackend = exports.FastModeRouter = exports.PriorityRouter = exports.Dashboard = exports.StreamableResponse = exports.StreamingManager = exports.ToolGateway = exports.ProcessWatcher = exports.DiscordChannel = exports.FeishuChannel = exports.createRateLimitPlugin = exports.createAnalyticsPlugin = exports.createLoggingPlugin = exports.inputValidation = exports.APIKeyManager = exports.corsMiddleware = exports.securityHeaders = exports.detectInjection = exports.sanitizeInput = exports.formatErrorForUser = exports.wrapError = exports.TimeoutError = exports.SecurityError = exports.RateLimitError = exports.PluginError = exports.ChannelError = exports.ConfigError = exports.ValidationError = exports.ProviderError = exports.OPCError = exports.createTeacherConfig = exports.createDataAnalystConfig = exports.getSupportedLocales = exports.LLMCache = exports.RateLimiter = exports.AnalyticsEngine = exports.formatReport = exports.loadTestCases = exports.runTests = exports.DocumentSkill = exports.SchedulerSkill = exports.WebhookTriggerSkill = exports.HttpSkill = exports.TextAnalysisTool = exports.JsonTransformTool = exports.DateTimeTool = exports.CalculatorTool = exports.WeChatChannel = exports.SlackChannel = void 0;
5
5
  // OPC Agent — Open Agent Framework
6
6
  var agent_1 = require("./core/agent");
7
7
  Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return agent_1.BaseAgent; } });
@@ -31,6 +31,12 @@ var memory_1 = require("./memory");
31
31
  Object.defineProperty(exports, "InMemoryStore", { enumerable: true, get: function () { return memory_1.InMemoryStore; } });
32
32
  var deepbrain_1 = require("./memory/deepbrain");
33
33
  Object.defineProperty(exports, "DeepBrainMemoryStore", { enumerable: true, get: function () { return deepbrain_1.DeepBrainMemoryStore; } });
34
+ var trust_1 = require("./dtv/trust");
35
+ Object.defineProperty(exports, "TrustManager", { enumerable: true, get: function () { return trust_1.TrustManager; } });
36
+ var value_1 = require("./dtv/value");
37
+ Object.defineProperty(exports, "ValueTracker", { enumerable: true, get: function () { return value_1.ValueTracker; } });
38
+ var data_1 = require("./dtv/data");
39
+ Object.defineProperty(exports, "MRGConfigReader", { enumerable: true, get: function () { return data_1.MRGConfigReader; } });
34
40
  var providers_1 = require("./providers");
35
41
  Object.defineProperty(exports, "createProvider", { enumerable: true, get: function () { return providers_1.createProvider; } });
36
42
  Object.defineProperty(exports, "SUPPORTED_PROVIDERS", { enumerable: true, get: function () { return providers_1.SUPPORTED_PROVIDERS; } });
@@ -74,6 +80,9 @@ var knowledge_1 = require("./core/knowledge");
74
80
  Object.defineProperty(exports, "KnowledgeBase", { enumerable: true, get: function () { return knowledge_1.KnowledgeBase; } });
75
81
  var hermes_1 = require("./deploy/hermes");
76
82
  Object.defineProperty(exports, "deployToHermes", { enumerable: true, get: function () { return hermes_1.deployToHermes; } });
83
+ var marketplace_1 = require("./marketplace");
84
+ Object.defineProperty(exports, "publishAgent", { enumerable: true, get: function () { return marketplace_1.publishAgent; } });
85
+ Object.defineProperty(exports, "installAgent", { enumerable: true, get: function () { return marketplace_1.installAgent; } });
77
86
  // v0.7.0 modules
78
87
  var auth_1 = require("./core/auth");
79
88
  Object.defineProperty(exports, "createAuthMiddleware", { enumerable: true, get: function () { return auth_1.createAuthMiddleware; } });
@@ -161,8 +170,13 @@ var streaming_1 = require("./core/streaming");
161
170
  Object.defineProperty(exports, "StreamingManager", { enumerable: true, get: function () { return streaming_1.StreamingManager; } });
162
171
  Object.defineProperty(exports, "StreamableResponse", { enumerable: true, get: function () { return streaming_1.StreamableResponse; } });
163
172
  // v1.3.0 modules
164
- var traces_1 = require("./traces");
165
- Object.defineProperty(exports, "TraceCollector", { enumerable: true, get: function () { return traces_1.TraceCollector; } });
166
- Object.defineProperty(exports, "ConsoleExporter", { enumerable: true, get: function () { return traces_1.ConsoleExporter; } });
167
- Object.defineProperty(exports, "DeepBrainExporter", { enumerable: true, get: function () { return traces_1.DeepBrainExporter; } });
173
+ var dashboard_1 = require("./core/dashboard");
174
+ Object.defineProperty(exports, "Dashboard", { enumerable: true, get: function () { return dashboard_1.Dashboard; } });
175
+ var priority_1 = require("./core/priority");
176
+ Object.defineProperty(exports, "PriorityRouter", { enumerable: true, get: function () { return priority_1.PriorityRouter; } });
177
+ // v1.4.0 modules
178
+ var fast_mode_1 = require("./core/fast-mode");
179
+ Object.defineProperty(exports, "FastModeRouter", { enumerable: true, get: function () { return fast_mode_1.FastModeRouter; } });
180
+ var cloud_storage_1 = require("./memory/cloud-storage");
181
+ Object.defineProperty(exports, "CloudMemoryBackend", { enumerable: true, get: function () { return cloud_storage_1.CloudMemoryBackend; } });
168
182
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,40 @@
1
+ export interface CloudStorageConfig {
2
+ provider: 's3' | 'gcs' | 'azure-blob';
3
+ bucket: string;
4
+ prefix?: string;
5
+ credentials?: {
6
+ accessKey?: string;
7
+ secretKey?: string;
8
+ region?: string;
9
+ };
10
+ syncIntervalMs?: number;
11
+ }
12
+ /** Simple memory backend interface for cloud storage */
13
+ export interface CloudMemoryBackendInterface {
14
+ upload(key: string, data: Buffer | string): Promise<string>;
15
+ download(key: string): Promise<Buffer | null>;
16
+ list(prefix?: string): Promise<string[]>;
17
+ delete(key: string): Promise<boolean>;
18
+ }
19
+ export declare class CloudMemoryBackend implements CloudMemoryBackendInterface {
20
+ private config;
21
+ private effectivePrefix;
22
+ constructor(config: CloudStorageConfig);
23
+ /** Upload data to cloud storage, returns the object URL */
24
+ upload(key: string, data: Buffer | string): Promise<string>;
25
+ /** Download an object by key. Returns null if not found. */
26
+ download(key: string): Promise<Buffer | null>;
27
+ /** List object keys under a prefix */
28
+ list(prefix?: string): Promise<string[]>;
29
+ /** Delete an object by key */
30
+ delete(key: string): Promise<boolean>;
31
+ /** Sync a local directory with the cloud bucket prefix */
32
+ sync(localDir: string): Promise<{
33
+ uploaded: number;
34
+ downloaded: number;
35
+ }>;
36
+ private buildUrl;
37
+ private buildBucketUrl;
38
+ private buildHeaders;
39
+ }
40
+ //# sourceMappingURL=cloud-storage.d.ts.map
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ // ─── Cloud Memory Backend ────────────────────────────────────
3
+ // Fetch-based cloud storage for S3, GCS, and Azure Blob — no SDK deps.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.CloudMemoryBackend = void 0;
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const crypto = __importStar(require("crypto"));
42
+ class CloudMemoryBackend {
43
+ config;
44
+ effectivePrefix;
45
+ constructor(config) {
46
+ this.config = config;
47
+ this.effectivePrefix = config.prefix ? config.prefix.replace(/\/$/, '') + '/' : '';
48
+ }
49
+ /** Upload data to cloud storage, returns the object URL */
50
+ async upload(key, data) {
51
+ const fullKey = this.effectivePrefix + key;
52
+ const body = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data;
53
+ const url = this.buildUrl(fullKey);
54
+ const headers = await this.buildHeaders('PUT', fullKey, body);
55
+ const resp = await fetch(url, { method: 'PUT', headers, body });
56
+ if (!resp.ok) {
57
+ throw new Error(`Cloud upload failed [${resp.status}]: ${await resp.text()}`);
58
+ }
59
+ return url;
60
+ }
61
+ /** Download an object by key. Returns null if not found. */
62
+ async download(key) {
63
+ const fullKey = this.effectivePrefix + key;
64
+ const url = this.buildUrl(fullKey);
65
+ const headers = await this.buildHeaders('GET', fullKey);
66
+ const resp = await fetch(url, { method: 'GET', headers });
67
+ if (resp.status === 404)
68
+ return null;
69
+ if (!resp.ok) {
70
+ throw new Error(`Cloud download failed [${resp.status}]: ${await resp.text()}`);
71
+ }
72
+ const ab = await resp.arrayBuffer();
73
+ return Buffer.from(ab);
74
+ }
75
+ /** List object keys under a prefix */
76
+ async list(prefix) {
77
+ const fullPrefix = this.effectivePrefix + (prefix ?? '');
78
+ if (this.config.provider === 's3') {
79
+ const listUrl = this.buildBucketUrl() + `?list-type=2&prefix=${encodeURIComponent(fullPrefix)}`;
80
+ const headers = await this.buildHeaders('GET', '');
81
+ const resp = await fetch(listUrl, { method: 'GET', headers });
82
+ if (!resp.ok)
83
+ return [];
84
+ const text = await resp.text();
85
+ // Simple XML key extraction
86
+ const keys = [];
87
+ const regex = /<Key>([^<]+)<\/Key>/g;
88
+ let match;
89
+ while ((match = regex.exec(text)) !== null) {
90
+ keys.push(match[1]);
91
+ }
92
+ return keys;
93
+ }
94
+ if (this.config.provider === 'gcs') {
95
+ const listUrl = `https://storage.googleapis.com/storage/v1/b/${this.config.bucket}/o?prefix=${encodeURIComponent(fullPrefix)}`;
96
+ const headers = await this.buildHeaders('GET', '');
97
+ const resp = await fetch(listUrl, { method: 'GET', headers });
98
+ if (!resp.ok)
99
+ return [];
100
+ const json = await resp.json();
101
+ return (json.items ?? []).map((i) => i.name);
102
+ }
103
+ // azure-blob
104
+ const listUrl = this.buildBucketUrl() + `?restype=container&comp=list&prefix=${encodeURIComponent(fullPrefix)}`;
105
+ const headers = await this.buildHeaders('GET', '');
106
+ const resp = await fetch(listUrl, { method: 'GET', headers });
107
+ if (!resp.ok)
108
+ return [];
109
+ const text = await resp.text();
110
+ const keys = [];
111
+ const regex = /<Name>([^<]+)<\/Name>/g;
112
+ let match;
113
+ while ((match = regex.exec(text)) !== null) {
114
+ keys.push(match[1]);
115
+ }
116
+ return keys;
117
+ }
118
+ /** Delete an object by key */
119
+ async delete(key) {
120
+ const fullKey = this.effectivePrefix + key;
121
+ const url = this.buildUrl(fullKey);
122
+ const headers = await this.buildHeaders('DELETE', fullKey);
123
+ const resp = await fetch(url, { method: 'DELETE', headers });
124
+ return resp.ok || resp.status === 204;
125
+ }
126
+ /** Sync a local directory with the cloud bucket prefix */
127
+ async sync(localDir) {
128
+ let uploaded = 0;
129
+ let downloaded = 0;
130
+ // Upload local files
131
+ if (fs.existsSync(localDir)) {
132
+ const files = fs.readdirSync(localDir);
133
+ for (const file of files) {
134
+ const filePath = path.join(localDir, file);
135
+ if (fs.statSync(filePath).isFile()) {
136
+ const data = fs.readFileSync(filePath);
137
+ await this.upload(file, data);
138
+ uploaded++;
139
+ }
140
+ }
141
+ }
142
+ // Download remote files not present locally
143
+ const remoteKeys = await this.list();
144
+ for (const key of remoteKeys) {
145
+ const baseName = key.replace(this.effectivePrefix, '');
146
+ if (!baseName || baseName.includes('/'))
147
+ continue;
148
+ const localPath = path.join(localDir, baseName);
149
+ if (!fs.existsSync(localPath)) {
150
+ const data = await this.download(baseName);
151
+ if (data) {
152
+ fs.mkdirSync(localDir, { recursive: true });
153
+ fs.writeFileSync(localPath, data);
154
+ downloaded++;
155
+ }
156
+ }
157
+ }
158
+ return { uploaded, downloaded };
159
+ }
160
+ // ─── Internal helpers ──────────────────────────────────────
161
+ buildUrl(key) {
162
+ switch (this.config.provider) {
163
+ case 's3': {
164
+ const region = this.config.credentials?.region ?? 'us-east-1';
165
+ return `https://${this.config.bucket}.s3.${region}.amazonaws.com/${key}`;
166
+ }
167
+ case 'gcs':
168
+ return `https://storage.googleapis.com/${this.config.bucket}/${key}`;
169
+ case 'azure-blob':
170
+ return `https://${this.config.bucket}.blob.core.windows.net/${key}`;
171
+ }
172
+ }
173
+ buildBucketUrl() {
174
+ switch (this.config.provider) {
175
+ case 's3': {
176
+ const region = this.config.credentials?.region ?? 'us-east-1';
177
+ return `https://${this.config.bucket}.s3.${region}.amazonaws.com`;
178
+ }
179
+ case 'gcs':
180
+ return `https://storage.googleapis.com/${this.config.bucket}`;
181
+ case 'azure-blob':
182
+ return `https://${this.config.bucket}.blob.core.windows.net`;
183
+ }
184
+ }
185
+ async buildHeaders(method, key, body) {
186
+ const headers = {};
187
+ if (this.config.provider === 's3' && this.config.credentials?.accessKey) {
188
+ // Simplified AWS Signature v4 — date + authorization placeholder
189
+ const date = new Date().toISOString().replace(/[:-]|\.\d{3}/g, '');
190
+ const dateShort = date.slice(0, 8);
191
+ const region = this.config.credentials.region ?? 'us-east-1';
192
+ headers['x-amz-date'] = date;
193
+ headers['x-amz-content-sha256'] = body
194
+ ? crypto.createHash('sha256').update(body).digest('hex')
195
+ : 'UNSIGNED-PAYLOAD';
196
+ // Real v4 signing would go here; keeping header structure correct
197
+ headers['Authorization'] = `AWS4-HMAC-SHA256 Credential=${this.config.credentials.accessKey}/${dateShort}/${region}/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=placeholder`;
198
+ }
199
+ if (this.config.provider === 'gcs' && this.config.credentials?.accessKey) {
200
+ headers['Authorization'] = `Bearer ${this.config.credentials.accessKey}`;
201
+ }
202
+ if (this.config.provider === 'azure-blob' && this.config.credentials?.accessKey) {
203
+ headers['x-ms-version'] = '2021-08-06';
204
+ headers['x-ms-date'] = new Date().toUTCString();
205
+ headers['Authorization'] = `SharedKey ${this.config.credentials.accessKey}`;
206
+ }
207
+ return headers;
208
+ }
209
+ }
210
+ exports.CloudMemoryBackend = CloudMemoryBackend;
211
+ //# sourceMappingURL=cloud-storage.js.map
@@ -5,5 +5,5 @@ export interface LLMProvider {
5
5
  chatStream(messages: Message[], systemPrompt?: string): AsyncIterable<string>;
6
6
  }
7
7
  export declare function createProvider(name?: string, model?: string, baseUrl?: string, apiKey?: string): LLMProvider;
8
- export declare const SUPPORTED_PROVIDERS: readonly ["openai", "ollama", "deepseek", "qwen", "gemini", "dashscope", "zhipu", "moonshot"];
8
+ export declare const SUPPORTED_PROVIDERS: readonly ["openai", "deepseek", "qwen", "gemini", "dashscope", "zhipu", "moonshot"];
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -315,12 +315,6 @@ function isGeminiNative() {
315
315
  }
316
316
  function createProvider(name = 'openai', model, baseUrl, apiKey) {
317
317
  const finalModel = model || process.env.OPC_LLM_MODEL || 'gpt-4o-mini';
318
- // Auto-detect ollama: use localhost:11434/v1 and dummy apiKey
319
- if (name === 'ollama') {
320
- const ollamaBase = baseUrl || process.env.OPC_LLM_BASE_URL || 'http://localhost:11434/v1';
321
- const ollamaKey = apiKey || process.env.OPC_LLM_API_KEY || 'ollama';
322
- return new OpenAICompatibleProvider('ollama', finalModel, ollamaBase, ollamaKey);
323
- }
324
318
  const finalKey = apiKey || getApiKey();
325
319
  const finalBaseUrl = baseUrl || getBaseUrl();
326
320
  // Auto-detect Gemini native when key is new format or base URL points to googleapis
@@ -337,5 +331,5 @@ function createProvider(name = 'openai', model, baseUrl, apiKey) {
337
331
  }
338
332
  return new OpenAICompatibleProvider(resolvedName, finalModel, baseUrl, apiKey);
339
333
  }
340
- exports.SUPPORTED_PROVIDERS = ['openai', 'ollama', 'deepseek', 'qwen', 'gemini', 'dashscope', 'zhipu', 'moonshot'];
334
+ exports.SUPPORTED_PROVIDERS = ['openai', 'deepseek', 'qwen', 'gemini', 'dashscope', 'zhipu', 'moonshot'];
341
335
  //# sourceMappingURL=index.js.map
@@ -1266,5 +1266,6 @@ export type SkillRef = z.infer<typeof SkillRefSchema>;
1266
1266
  export type Channel = z.infer<typeof ChannelSchema>;
1267
1267
  export type Metadata = z.infer<typeof MetadataSchema>;
1268
1268
  export type Spec = z.infer<typeof SpecSchema>;
1269
- export type TrustLevelType = string;
1269
+ export type DTVConfig = z.infer<typeof DTVSchema>;
1270
+ export type TrustLevelType = z.infer<typeof TrustLevel>;
1270
1271
  //# sourceMappingURL=oad.d.ts.map
@@ -28,6 +28,14 @@ export declare function createCodeReviewerConfig(): {
28
28
  shortTerm: boolean;
29
29
  longTerm: boolean;
30
30
  };
31
+ dtv: {
32
+ trust: {
33
+ level: "sandbox";
34
+ };
35
+ value: {
36
+ metrics: string[];
37
+ };
38
+ };
31
39
  };
32
40
  };
33
41
  //# sourceMappingURL=code-reviewer.d.ts.map
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CODE_REVIEWER_SYSTEM_PROMPT = void 0;
4
4
  exports.createCodeReviewerConfig = createCodeReviewerConfig;
5
- exports.CODE_REVIEWER_SYSTEM_PROMPT = `You are an expert code reviewer. When given code:
6
- 1. Check for bugs, security issues, and performance problems
7
- 2. Suggest improvements for readability and maintainability
8
- 3. Follow language-specific best practices
9
- 4. Be constructive and explain your reasoning
5
+ exports.CODE_REVIEWER_SYSTEM_PROMPT = `You are an expert code reviewer. When given code:
6
+ 1. Check for bugs, security issues, and performance problems
7
+ 2. Suggest improvements for readability and maintainability
8
+ 3. Follow language-specific best practices
9
+ 4. Be constructive and explain your reasoning
10
10
  Rate severity: 🔴 Critical | 🟡 Warning | 🔵 Info`;
11
11
  function createCodeReviewerConfig() {
12
12
  return {
@@ -28,6 +28,10 @@ function createCodeReviewerConfig() {
28
28
  ],
29
29
  channels: [{ type: 'web', port: 3000 }],
30
30
  memory: { shortTerm: true, longTerm: false },
31
+ dtv: {
32
+ trust: { level: 'sandbox' },
33
+ value: { metrics: ['reviews_completed', 'issues_found'] },
34
+ },
31
35
  },
32
36
  };
33
37
  }
@@ -43,6 +43,14 @@ export declare function createCustomerServiceConfig(): {
43
43
  shortTerm: boolean;
44
44
  longTerm: boolean;
45
45
  };
46
+ dtv: {
47
+ trust: {
48
+ level: "sandbox";
49
+ };
50
+ value: {
51
+ metrics: string[];
52
+ };
53
+ };
46
54
  };
47
55
  };
48
56
  //# sourceMappingURL=customer-service.d.ts.map
@@ -41,8 +41,8 @@ class HandoffSkill extends base_1.BaseSkill {
41
41
  }
42
42
  }
43
43
  exports.HandoffSkill = HandoffSkill;
44
- exports.CUSTOMER_SERVICE_SYSTEM_PROMPT = `You are a friendly and professional customer service agent.
45
- You help customers with their questions about products, orders, shipping, and returns.
44
+ exports.CUSTOMER_SERVICE_SYSTEM_PROMPT = `You are a friendly and professional customer service agent.
45
+ You help customers with their questions about products, orders, shipping, and returns.
46
46
  Be concise, helpful, and empathetic. If you're unsure, offer to connect them with a human agent.`;
47
47
  function createCustomerServiceConfig() {
48
48
  return {
@@ -65,6 +65,10 @@ function createCustomerServiceConfig() {
65
65
  ],
66
66
  channels: [{ type: 'web', port: 3000 }],
67
67
  memory: { shortTerm: true, longTerm: false },
68
+ dtv: {
69
+ trust: { level: 'sandbox' },
70
+ value: { metrics: ['response_time', 'satisfaction_score'] },
71
+ },
68
72
  },
69
73
  };
70
74
  }
@@ -40,6 +40,14 @@ export declare function createDataAnalystConfig(): {
40
40
  shortTerm: boolean;
41
41
  longTerm: boolean;
42
42
  };
43
+ dtv: {
44
+ trust: {
45
+ level: "sandbox";
46
+ };
47
+ value: {
48
+ metrics: string[];
49
+ };
50
+ };
43
51
  };
44
52
  };
45
53
  //# sourceMappingURL=data-analyst.d.ts.map
@@ -33,11 +33,11 @@ class InsightSkill extends base_1.BaseSkill {
33
33
  }
34
34
  }
35
35
  exports.InsightSkill = InsightSkill;
36
- exports.DATA_ANALYST_SYSTEM_PROMPT = `You are a professional data analyst assistant. Your goals:
37
- 1. Help users query, transform, and analyze data
38
- 2. Create clear visualizations and summaries
39
- 3. Identify trends, patterns, and anomalies
40
- 4. Explain findings in plain language
36
+ exports.DATA_ANALYST_SYSTEM_PROMPT = `You are a professional data analyst assistant. Your goals:
37
+ 1. Help users query, transform, and analyze data
38
+ 2. Create clear visualizations and summaries
39
+ 3. Identify trends, patterns, and anomalies
40
+ 4. Explain findings in plain language
41
41
  Be precise with numbers, always cite your data source, and suggest next steps for deeper analysis.`;
42
42
  function createDataAnalystConfig() {
43
43
  return {
@@ -60,6 +60,10 @@ function createDataAnalystConfig() {
60
60
  ],
61
61
  channels: [{ type: 'web', port: 3000 }],
62
62
  memory: { shortTerm: true, longTerm: true },
63
+ dtv: {
64
+ trust: { level: 'sandbox' },
65
+ value: { metrics: ['queries_processed', 'insights_generated'] },
66
+ },
63
67
  },
64
68
  };
65
69
  }
@@ -31,6 +31,14 @@ export declare function createKnowledgeBaseConfig(): {
31
31
  collection: string;
32
32
  };
33
33
  };
34
+ dtv: {
35
+ trust: {
36
+ level: "sandbox";
37
+ };
38
+ value: {
39
+ metrics: string[];
40
+ };
41
+ };
34
42
  };
35
43
  };
36
44
  //# sourceMappingURL=knowledge-base.d.ts.map
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KNOWLEDGE_BASE_SYSTEM_PROMPT = void 0;
4
4
  exports.createKnowledgeBaseConfig = createKnowledgeBaseConfig;
5
- exports.KNOWLEDGE_BASE_SYSTEM_PROMPT = `You are a knowledge base assistant. Answer questions using the company documents
6
- and knowledge provided to you. If you don't have enough information, say so honestly.
5
+ exports.KNOWLEDGE_BASE_SYSTEM_PROMPT = `You are a knowledge base assistant. Answer questions using the company documents
6
+ and knowledge provided to you. If you don't have enough information, say so honestly.
7
7
  Always cite sources when possible. Be accurate and concise.`;
8
8
  function createKnowledgeBaseConfig() {
9
9
  return {
@@ -25,6 +25,10 @@ function createKnowledgeBaseConfig() {
25
25
  ],
26
26
  channels: [{ type: 'web', port: 3000 }],
27
27
  memory: { shortTerm: true, longTerm: { provider: 'deepbrain', collection: 'company-knowledge' } },
28
+ dtv: {
29
+ trust: { level: 'sandbox' },
30
+ value: { metrics: ['queries_answered', 'docs_indexed'] },
31
+ },
28
32
  },
29
33
  };
30
34
  }
@@ -43,6 +43,14 @@ export declare function createSalesAssistantConfig(): {
43
43
  shortTerm: boolean;
44
44
  longTerm: boolean;
45
45
  };
46
+ dtv: {
47
+ trust: {
48
+ level: "sandbox";
49
+ };
50
+ value: {
51
+ metrics: string[];
52
+ };
53
+ };
46
54
  };
47
55
  };
48
56
  //# sourceMappingURL=sales-assistant.d.ts.map
@@ -43,10 +43,10 @@ class LeadCaptureSkill extends base_1.BaseSkill {
43
43
  }
44
44
  }
45
45
  exports.LeadCaptureSkill = LeadCaptureSkill;
46
- exports.SALES_ASSISTANT_SYSTEM_PROMPT = `You are a professional sales assistant. Your goals:
47
- 1. Answer product questions accurately and enthusiastically
48
- 2. Capture leads by collecting name, email, and company info
49
- 3. Book appointments when prospects are ready
46
+ exports.SALES_ASSISTANT_SYSTEM_PROMPT = `You are a professional sales assistant. Your goals:
47
+ 1. Answer product questions accurately and enthusiastically
48
+ 2. Capture leads by collecting name, email, and company info
49
+ 3. Book appointments when prospects are ready
50
50
  Be friendly, persuasive but not pushy. Always provide value first.`;
51
51
  function createSalesAssistantConfig() {
52
52
  return {
@@ -69,6 +69,10 @@ function createSalesAssistantConfig() {
69
69
  ],
70
70
  channels: [{ type: 'web', port: 3000 }],
71
71
  memory: { shortTerm: true, longTerm: false },
72
+ dtv: {
73
+ trust: { level: 'sandbox' },
74
+ value: { metrics: ['leads_captured', 'appointments_booked'] },
75
+ },
72
76
  },
73
77
  };
74
78
  }
@@ -45,6 +45,14 @@ export declare function createTeacherConfig(): {
45
45
  shortTerm: boolean;
46
46
  longTerm: boolean;
47
47
  };
48
+ dtv: {
49
+ trust: {
50
+ level: "sandbox";
51
+ };
52
+ value: {
53
+ metrics: string[];
54
+ };
55
+ };
48
56
  };
49
57
  };
50
58
  //# sourceMappingURL=teacher.d.ts.map
@@ -39,12 +39,12 @@ class ExplainSkill extends base_1.BaseSkill {
39
39
  }
40
40
  }
41
41
  exports.ExplainSkill = ExplainSkill;
42
- exports.TEACHER_SYSTEM_PROMPT = `You are a patient and encouraging teacher assistant. Your goals:
43
- 1. Create engaging lesson plans tailored to student level
44
- 2. Generate quizzes and assessments with answer keys
45
- 3. Explain complex concepts using analogies and examples
46
- 4. Provide constructive feedback and encouragement
47
- 5. Adapt teaching style to different learning preferences
42
+ exports.TEACHER_SYSTEM_PROMPT = `You are a patient and encouraging teacher assistant. Your goals:
43
+ 1. Create engaging lesson plans tailored to student level
44
+ 2. Generate quizzes and assessments with answer keys
45
+ 3. Explain complex concepts using analogies and examples
46
+ 4. Provide constructive feedback and encouragement
47
+ 5. Adapt teaching style to different learning preferences
48
48
  Be patient, use clear language, and always check for understanding. Use the Socratic method when appropriate.`;
49
49
  function createTeacherConfig() {
50
50
  return {
@@ -68,6 +68,10 @@ function createTeacherConfig() {
68
68
  ],
69
69
  channels: [{ type: 'web', port: 3000 }],
70
70
  memory: { shortTerm: true, longTerm: true },
71
+ dtv: {
72
+ trust: { level: 'sandbox' },
73
+ value: { metrics: ['lessons_created', 'quizzes_generated', 'concepts_explained'] },
74
+ },
71
75
  },
72
76
  };
73
77
  }