opc-agent 4.2.13 → 5.0.0-alpha.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 (188) hide show
  1. package/.opc/memory.db +0 -0
  2. package/TASK.md +49 -0
  3. package/data/brain.db/deepbrain.sqlite +0 -0
  4. package/dist/channels/api.d.ts +14 -0
  5. package/dist/channels/api.d.ts.map +1 -0
  6. package/dist/channels/api.js +58 -0
  7. package/dist/channels/api.js.map +1 -0
  8. package/dist/cli.js +144 -52
  9. package/dist/cli.js.map +1 -1
  10. package/dist/core/agent-loop.d.ts +3 -0
  11. package/dist/core/agent-loop.d.ts.map +1 -0
  12. package/dist/core/agent-loop.js +51 -0
  13. package/dist/core/agent-loop.js.map +1 -0
  14. package/dist/core/context-assembler.d.ts +12 -0
  15. package/dist/core/context-assembler.d.ts.map +1 -0
  16. package/dist/core/context-assembler.js +81 -0
  17. package/dist/core/context-assembler.js.map +1 -0
  18. package/dist/core/guardrails.d.ts +16 -0
  19. package/dist/core/guardrails.d.ts.map +1 -0
  20. package/dist/core/guardrails.js +62 -0
  21. package/dist/core/guardrails.js.map +1 -0
  22. package/dist/core/index.d.ts +1 -0
  23. package/dist/core/index.d.ts.map +1 -0
  24. package/dist/core/index.js +3 -0
  25. package/dist/core/index.js.map +1 -0
  26. package/dist/core/iteration-budget.d.ts +12 -0
  27. package/dist/core/iteration-budget.d.ts.map +1 -0
  28. package/dist/core/iteration-budget.js +26 -0
  29. package/dist/core/iteration-budget.js.map +1 -0
  30. package/dist/core/types.d.ts +412 -0
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/deepbrain/embedding.d.ts +7 -0
  33. package/dist/deepbrain/embedding.d.ts.map +1 -0
  34. package/dist/deepbrain/embedding.js +108 -0
  35. package/dist/deepbrain/embedding.js.map +1 -0
  36. package/dist/deepbrain/index.d.ts +8 -0
  37. package/dist/deepbrain/index.d.ts.map +1 -0
  38. package/dist/deepbrain/index.js +19 -0
  39. package/dist/deepbrain/index.js.map +1 -0
  40. package/dist/deepbrain/migrate.d.ts +2 -0
  41. package/dist/deepbrain/migrate.d.ts.map +1 -0
  42. package/dist/deepbrain/migrate.js +139 -0
  43. package/dist/deepbrain/migrate.js.map +1 -0
  44. package/dist/deepbrain/provider.d.ts +13 -0
  45. package/dist/deepbrain/provider.d.ts.map +1 -0
  46. package/dist/deepbrain/provider.js +85 -0
  47. package/dist/deepbrain/provider.js.map +1 -0
  48. package/dist/deepbrain/recall.d.ts +9 -0
  49. package/dist/deepbrain/recall.d.ts.map +1 -0
  50. package/dist/deepbrain/recall.js +48 -0
  51. package/dist/deepbrain/recall.js.map +1 -0
  52. package/dist/deepbrain/store.d.ts +36 -0
  53. package/dist/deepbrain/store.d.ts.map +1 -0
  54. package/dist/deepbrain/store.js +342 -0
  55. package/dist/deepbrain/store.js.map +1 -0
  56. package/dist/deepbrain/workspace-files.d.ts +5 -0
  57. package/dist/deepbrain/workspace-files.d.ts.map +1 -0
  58. package/dist/deepbrain/workspace-files.js +159 -0
  59. package/dist/deepbrain/workspace-files.js.map +1 -0
  60. package/dist/evolution/index.d.ts +1 -0
  61. package/dist/evolution/index.d.ts.map +1 -0
  62. package/dist/evolution/index.js +3 -0
  63. package/dist/evolution/index.js.map +1 -0
  64. package/dist/evolution/l1-experience.d.ts +5 -0
  65. package/dist/evolution/l1-experience.d.ts.map +1 -0
  66. package/dist/evolution/l1-experience.js +117 -0
  67. package/dist/evolution/l1-experience.js.map +1 -0
  68. package/dist/evolution/l2-consolidation.d.ts +4 -0
  69. package/dist/evolution/l2-consolidation.d.ts.map +1 -0
  70. package/dist/evolution/l2-consolidation.js +106 -0
  71. package/dist/evolution/l2-consolidation.js.map +1 -0
  72. package/dist/evolution/l2-memskill.d.ts +12 -0
  73. package/dist/evolution/l2-memskill.d.ts.map +1 -0
  74. package/dist/evolution/l2-memskill.js +57 -0
  75. package/dist/evolution/l2-memskill.js.map +1 -0
  76. package/dist/evolution/l3-skill-discover.d.ts +4 -0
  77. package/dist/evolution/l3-skill-discover.d.ts.map +1 -0
  78. package/dist/evolution/l3-skill-discover.js +139 -0
  79. package/dist/evolution/l3-skill-discover.js.map +1 -0
  80. package/dist/evolution/l3-skill-verify.d.ts +12 -0
  81. package/dist/evolution/l3-skill-verify.d.ts.map +1 -0
  82. package/dist/evolution/l3-skill-verify.js +122 -0
  83. package/dist/evolution/l3-skill-verify.js.map +1 -0
  84. package/dist/evolution/l4-desensitize.d.ts +7 -0
  85. package/dist/evolution/l4-desensitize.d.ts.map +1 -0
  86. package/dist/evolution/l4-desensitize.js +30 -0
  87. package/dist/evolution/l4-desensitize.js.map +1 -0
  88. package/dist/evolution/l4-group-evolve.d.ts +8 -0
  89. package/dist/evolution/l4-group-evolve.d.ts.map +1 -0
  90. package/dist/evolution/l4-group-evolve.js +15 -0
  91. package/dist/evolution/l4-group-evolve.js.map +1 -0
  92. package/dist/evolution/maturity-scorer.d.ts +11 -0
  93. package/dist/evolution/maturity-scorer.d.ts.map +1 -0
  94. package/dist/evolution/maturity-scorer.js +21 -0
  95. package/dist/evolution/maturity-scorer.js.map +1 -0
  96. package/dist/index.d.ts +7 -1
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +33 -5
  99. package/dist/index.js.map +1 -1
  100. package/dist/providers/agentkits.d.ts +20 -0
  101. package/dist/providers/agentkits.d.ts.map +1 -0
  102. package/dist/providers/agentkits.js +173 -0
  103. package/dist/providers/agentkits.js.map +1 -0
  104. package/dist/providers/model-provider.d.ts +16 -0
  105. package/dist/providers/model-provider.d.ts.map +1 -0
  106. package/dist/providers/model-provider.js +13 -0
  107. package/dist/providers/model-provider.js.map +1 -0
  108. package/dist/providers/model-recommender.d.ts +15 -0
  109. package/dist/providers/model-recommender.d.ts.map +1 -0
  110. package/dist/providers/model-recommender.js +71 -0
  111. package/dist/providers/model-recommender.js.map +1 -0
  112. package/dist/providers/ollama.d.ts +22 -0
  113. package/dist/providers/ollama.d.ts.map +1 -0
  114. package/dist/providers/ollama.js +176 -0
  115. package/dist/providers/ollama.js.map +1 -0
  116. package/dist/providers/openai-compat.d.ts +23 -0
  117. package/dist/providers/openai-compat.d.ts.map +1 -0
  118. package/dist/providers/openai-compat.js +184 -0
  119. package/dist/providers/openai-compat.js.map +1 -0
  120. package/dist/providers/router.d.ts +11 -0
  121. package/dist/providers/router.d.ts.map +1 -0
  122. package/dist/providers/router.js +48 -0
  123. package/dist/providers/router.js.map +1 -0
  124. package/dist/scheduler/cron.d.ts +19 -0
  125. package/dist/scheduler/cron.d.ts.map +1 -0
  126. package/dist/scheduler/cron.js +64 -0
  127. package/dist/scheduler/cron.js.map +1 -0
  128. package/dist/schema/oad.d.ts +72 -72
  129. package/dist/skills/loader.d.ts +16 -0
  130. package/dist/skills/loader.d.ts.map +1 -0
  131. package/dist/skills/loader.js +114 -0
  132. package/dist/skills/loader.js.map +1 -0
  133. package/dist/skills/matcher.d.ts +18 -0
  134. package/dist/skills/matcher.d.ts.map +1 -0
  135. package/dist/skills/matcher.js +70 -0
  136. package/dist/skills/matcher.js.map +1 -0
  137. package/dist/studio/agent-pool.d.ts +17 -0
  138. package/dist/studio/agent-pool.d.ts.map +1 -0
  139. package/dist/studio/agent-pool.js +35 -0
  140. package/dist/studio/agent-pool.js.map +1 -0
  141. package/dist/studio/assistant-tools.d.ts +4 -0
  142. package/dist/studio/assistant-tools.d.ts.map +1 -0
  143. package/dist/studio/assistant-tools.js +36 -0
  144. package/dist/studio/assistant-tools.js.map +1 -0
  145. package/dist/studio/index.d.ts +1 -0
  146. package/dist/studio/index.d.ts.map +1 -0
  147. package/dist/studio/index.js +3 -0
  148. package/dist/studio/index.js.map +1 -0
  149. package/dist/studio/server.d.ts.map +1 -1
  150. package/dist/studio/server.js +13 -18
  151. package/dist/studio/server.js.map +1 -1
  152. package/dist/templates/index.d.ts +1 -0
  153. package/dist/templates/index.d.ts.map +1 -0
  154. package/dist/templates/index.js +3 -0
  155. package/dist/templates/index.js.map +1 -0
  156. package/dist/templates/roles/index.d.ts +4 -0
  157. package/dist/templates/roles/index.d.ts.map +1 -0
  158. package/dist/templates/roles/index.js +46 -0
  159. package/dist/templates/roles/index.js.map +1 -0
  160. package/dist/templates/template-provider.d.ts +16 -0
  161. package/dist/templates/template-provider.d.ts.map +1 -0
  162. package/dist/templates/template-provider.js +60 -0
  163. package/dist/templates/template-provider.js.map +1 -0
  164. package/dist/tools/builtin/definitions.d.ts +7 -0
  165. package/dist/tools/builtin/definitions.d.ts.map +1 -0
  166. package/dist/tools/builtin/definitions.js +60 -0
  167. package/dist/tools/builtin/definitions.js.map +1 -0
  168. package/dist/tools/execute-code.d.ts +20 -0
  169. package/dist/tools/execute-code.d.ts.map +1 -0
  170. package/dist/tools/execute-code.js +92 -0
  171. package/dist/tools/execute-code.js.map +1 -0
  172. package/dist/tools/hooks.d.ts +47 -0
  173. package/dist/tools/hooks.d.ts.map +1 -0
  174. package/dist/tools/hooks.js +69 -0
  175. package/dist/tools/hooks.js.map +1 -0
  176. package/dist/tools/index.d.ts +9 -0
  177. package/dist/tools/index.d.ts.map +1 -0
  178. package/dist/tools/index.js +16 -0
  179. package/dist/tools/index.js.map +1 -0
  180. package/dist/tools/permission.d.ts +20 -0
  181. package/dist/tools/permission.d.ts.map +1 -0
  182. package/dist/tools/permission.js +35 -0
  183. package/dist/tools/permission.js.map +1 -0
  184. package/dist/tools/registry.d.ts +25 -0
  185. package/dist/tools/registry.d.ts.map +1 -0
  186. package/dist/tools/registry.js +42 -0
  187. package/dist/tools/registry.js.map +1 -0
  188. package/package.json +1 -1
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchSkills = matchSkills;
4
+ exports.matchSkillIndex = matchSkillIndex;
5
+ exports.topMatch = topMatch;
6
+ async function matchSkills(message, skills) {
7
+ const queryWords = tokenize(message);
8
+ const results = [];
9
+ for (const skill of skills) {
10
+ const { score, reason } = scoreSkill(queryWords, skill);
11
+ if (score >= 0.1)
12
+ results.push({ skill, score, reason });
13
+ }
14
+ return results.sort((a, b) => b.score - a.score);
15
+ }
16
+ // Index-based matching for L0 skill index (no LLM)
17
+ function matchSkillIndex(query, index, topK = 3) {
18
+ const queryLower = query.toLowerCase();
19
+ const queryWords = tokenize(query);
20
+ const scored = index.map((entry) => {
21
+ let score = 0;
22
+ const nameLower = entry.name.toLowerCase();
23
+ const descWords = tokenize(entry.description);
24
+ // Exact / partial name match
25
+ if (nameLower === queryLower)
26
+ score += 1.0;
27
+ else if (nameLower.includes(queryLower))
28
+ score += 0.8;
29
+ // Per-word desc matches (TF-IDF-lite)
30
+ for (const word of queryWords) {
31
+ if (descWords.includes(word))
32
+ score += 0.5;
33
+ else if (descWords.some((dw) => dw.includes(word) || word.includes(dw)))
34
+ score += 0.2;
35
+ }
36
+ return { name: entry.name, path: entry.path, score };
37
+ });
38
+ return scored
39
+ .filter((s) => s.score >= 0.1)
40
+ .sort((a, b) => b.score - a.score)
41
+ .slice(0, topK);
42
+ }
43
+ function topMatch(results, threshold = 0.5) {
44
+ const sorted = [...results].sort((a, b) => b.score - a.score);
45
+ return sorted[0]?.score >= threshold ? sorted[0] : null;
46
+ }
47
+ function tokenize(text) {
48
+ return text.toLowerCase().split(/[\s,,。!?、\-_/\\]+/).filter(Boolean);
49
+ }
50
+ function scoreSkill(queryWords, skill) {
51
+ const nameWords = tokenize(skill.name);
52
+ const descWords = tokenize(skill.description);
53
+ let score = 0;
54
+ const reasons = [];
55
+ for (const qw of queryWords) {
56
+ if (nameWords.includes(qw)) {
57
+ score += 1.0;
58
+ reasons.push(`name:${qw}`);
59
+ }
60
+ else if (descWords.includes(qw)) {
61
+ score += 0.5;
62
+ reasons.push(`desc:${qw}`);
63
+ }
64
+ else if (descWords.some((dw) => dw.includes(qw))) {
65
+ score += 0.2;
66
+ }
67
+ }
68
+ return { score, reason: reasons.join(',') || 'no_match' };
69
+ }
70
+ //# sourceMappingURL=matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/skills/matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { AgentConfig } from '../core/types';
2
+ export interface PooledAgent {
3
+ id: string;
4
+ config: AgentConfig;
5
+ status: 'idle' | 'running' | 'error' | 'stopped';
6
+ createdAt: number;
7
+ lastActiveAt: number;
8
+ }
9
+ export declare class AgentPool {
10
+ private agents;
11
+ create(id: string, config: AgentConfig): PooledAgent;
12
+ get(id: string): PooledAgent | undefined;
13
+ list(): PooledAgent[];
14
+ remove(id: string): void;
15
+ setStatus(id: string, status: PooledAgent['status']): void;
16
+ }
17
+ //# sourceMappingURL=agent-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-pool.d.ts","sourceRoot":"","sources":["../../src/studio/agent-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkC;IAEhD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW;IAYpD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIxC,IAAI,IAAI,WAAW,EAAE;IAIrB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;CAO3D"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentPool = void 0;
4
+ class AgentPool {
5
+ agents = new Map();
6
+ create(id, config) {
7
+ const agent = {
8
+ id,
9
+ config,
10
+ status: 'idle',
11
+ createdAt: Date.now(),
12
+ lastActiveAt: Date.now(),
13
+ };
14
+ this.agents.set(id, agent);
15
+ return agent;
16
+ }
17
+ get(id) {
18
+ return this.agents.get(id);
19
+ }
20
+ list() {
21
+ return Array.from(this.agents.values());
22
+ }
23
+ remove(id) {
24
+ this.agents.delete(id);
25
+ }
26
+ setStatus(id, status) {
27
+ const agent = this.agents.get(id);
28
+ if (agent) {
29
+ agent.status = status;
30
+ agent.lastActiveAt = Date.now();
31
+ }
32
+ }
33
+ }
34
+ exports.AgentPool = AgentPool;
35
+ //# sourceMappingURL=agent-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-pool.js","sourceRoot":"","sources":["../../src/studio/agent-pool.ts"],"names":[],"mappings":";;;AAWA,MAAa,SAAS;IACZ,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEhD,MAAM,CAAC,EAAU,EAAE,MAAmB;QACpC,MAAM,KAAK,GAAgB;YACzB,EAAE;YACF,MAAM;YACN,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,MAA6B;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACtB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;CACF;AAlCD,8BAkCC"}
@@ -0,0 +1,4 @@
1
+ import type { ToolDefinition } from '../core/types';
2
+ export declare const STUDIO_ASSISTANT_TOOLS: ToolDefinition[];
3
+ export declare function getStudioTool(name: string): ToolDefinition | undefined;
4
+ //# sourceMappingURL=assistant-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-tools.d.ts","sourceRoot":"","sources":["../../src/studio/assistant-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EA2BlD,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STUDIO_ASSISTANT_TOOLS = void 0;
4
+ exports.getStudioTool = getStudioTool;
5
+ exports.STUDIO_ASSISTANT_TOOLS = [
6
+ {
7
+ name: 'list_agents',
8
+ description: 'List all agents currently running in the Studio pool',
9
+ parameters: { type: 'object', properties: {}, required: [] },
10
+ },
11
+ {
12
+ name: 'create_agent',
13
+ description: 'Create a new agent from a config or template name',
14
+ parameters: {
15
+ type: 'object',
16
+ properties: {
17
+ template: { type: 'string', description: 'Template name or "custom"' },
18
+ name: { type: 'string', description: 'Agent display name' },
19
+ },
20
+ required: ['template', 'name'],
21
+ },
22
+ },
23
+ {
24
+ name: 'stop_agent',
25
+ description: 'Stop a running agent by id',
26
+ parameters: {
27
+ type: 'object',
28
+ properties: { id: { type: 'string' } },
29
+ required: ['id'],
30
+ },
31
+ },
32
+ ];
33
+ function getStudioTool(name) {
34
+ return exports.STUDIO_ASSISTANT_TOOLS.find((t) => t.name === name);
35
+ }
36
+ //# sourceMappingURL=assistant-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-tools.js","sourceRoot":"","sources":["../../src/studio/assistant-tools.ts"],"names":[],"mappings":";;;AAgCA,sCAEC;AA/BY,QAAA,sBAAsB,GAAqB;IACtD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,sDAAsD;QACnE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;KAC7D;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBACtE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;aAC5D;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;SAC/B;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACtC,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;CACF,CAAC;AAEF,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,8BAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/studio/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // placeholder
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/studio/index.ts"],"names":[],"mappings":";AAAA,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/studio/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/studio/server.ts"],"names":[],"mappings":"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"}
@@ -1043,16 +1043,17 @@ class StudioServer {
1043
1043
  try {
1044
1044
  const { BaseAgent } = require('../core/agent');
1045
1045
  const { InMemoryStore } = require('../memory');
1046
- // Determine provider config
1046
+ // Determine provider config from OAD
1047
1047
  let providerName = agent.provider || process.env.OPC_LLM_PROVIDER;
1048
+ let oadConfig = null;
1048
1049
  if (!providerName) {
1049
1050
  try {
1050
1051
  for (const fname of ['oad.yaml', 'agent.yaml']) {
1051
1052
  const oadPath = (0, path_1.join)(this.config.agentDir, fname);
1052
1053
  if ((0, fs_1.existsSync)(oadPath)) {
1053
1054
  const yaml = require('js-yaml');
1054
- const oad = yaml.load((0, fs_1.readFileSync)(oadPath, 'utf-8'));
1055
- providerName = oad?.spec?.provider?.default;
1055
+ oadConfig = yaml.load((0, fs_1.readFileSync)(oadPath, 'utf-8'));
1056
+ providerName = oadConfig?.spec?.provider?.default;
1056
1057
  if (providerName)
1057
1058
  break;
1058
1059
  }
@@ -1061,24 +1062,20 @@ class StudioServer {
1061
1062
  catch { }
1062
1063
  }
1063
1064
  providerName = providerName || 'auto';
1064
- // Build agent dir for this specific agent (for skills, tools, etc.)
1065
- const agentWorkDir = (0, path_1.join)(this.getAgentsDir(), '..', 'workspaces', agentId);
1066
- const skillsDir = (0, fs_1.existsSync)((0, path_1.join)(agentWorkDir, 'skills')) ? (0, path_1.join)(agentWorkDir, 'skills') : undefined;
1067
1065
  const runtimeAgent = new BaseAgent({
1068
1066
  name: agent.name || agentId,
1069
- systemPrompt: agent.systemPrompt || 'You are a helpful assistant. Please reply in Chinese.',
1067
+ systemPrompt: agent.systemPrompt || oadConfig?.spec?.systemPrompt || 'You are a helpful assistant. Please reply in Chinese.',
1070
1068
  provider: providerName,
1071
- model: agent.model !== 'auto' ? agent.model : undefined,
1069
+ model: agent.model !== 'auto' ? agent.model : oadConfig?.spec?.model,
1072
1070
  memory: new InMemoryStore(),
1073
- skillsDir,
1074
- agentDir: agentWorkDir,
1071
+ historyLimit: 50,
1072
+ agentDir: this.config.agentDir,
1073
+ maxToolRounds: 0, // Disable tool calling for now until streaming tool support is added
1075
1074
  });
1076
1075
  await runtimeAgent.init();
1076
+ // TODO: Connect DeepBrain long-term memory when streaming handleMessage is ready
1077
1077
  // TODO: Add function calling tools for OPC assistant
1078
- // Tools needed: createAgent, deleteAgent, listAgents, configureChannel, updateAgent
1079
- // Reference: Hermes Agent pattern - expose Studio APIs as LLM tools
1080
1078
  // Use handleMessage for full pipeline (skills → memory → tools → guardrails → LLM)
1081
- // Then stream the response to client
1082
1079
  const msg = {
1083
1080
  id: `msg_${Date.now()}`,
1084
1081
  role: 'user',
@@ -1088,11 +1085,10 @@ class StudioServer {
1088
1085
  };
1089
1086
  try {
1090
1087
  const response = await runtimeAgent.handleMessage(msg);
1091
- // Stream response word by word for SSE feel
1092
- const words = response.content.split('');
1088
+ const text = response.content;
1093
1089
  const chunkSize = 3;
1094
- for (let i = 0; i < words.length; i += chunkSize) {
1095
- const chunk = words.slice(i, i + chunkSize).join('');
1090
+ for (let i = 0; i < text.length; i += chunkSize) {
1091
+ const chunk = text.slice(i, i + chunkSize);
1096
1092
  const sseData = JSON.stringify({
1097
1093
  choices: [{ delta: { content: chunk }, index: 0 }],
1098
1094
  });
@@ -1109,7 +1105,6 @@ class StudioServer {
1109
1105
  res.end();
1110
1106
  }
1111
1107
  catch (err) {
1112
- // Provider creation failed — send error as SSE so frontend can display it
1113
1108
  const errData = JSON.stringify({
1114
1109
  choices: [{ delta: { content: `⚠️ Provider error: ${err.message}\n\nTip: Install Ollama or set OPENAI_API_KEY.` }, index: 0 }],
1115
1110
  });