azerclaw 2.1.8 → 2.2.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 (261) hide show
  1. package/bin/azerclaw.ts +45 -6
  2. package/bin/opencode.ts +59 -0
  3. package/dist/bin/azerclaw.d.ts +1 -47
  4. package/dist/bin/azerclaw.d.ts.map +1 -1
  5. package/dist/bin/azerclaw.js +94 -55
  6. package/dist/bin/azerclaw.js.map +1 -1
  7. package/dist/bin/opencode.d.ts +14 -0
  8. package/dist/bin/opencode.d.ts.map +1 -0
  9. package/dist/bin/opencode.js +54 -0
  10. package/dist/bin/opencode.js.map +1 -0
  11. package/dist/src/agents/builtin.js +12 -12
  12. package/dist/src/brain/adapters/base.d.ts +33 -0
  13. package/dist/src/brain/adapters/base.d.ts.map +1 -0
  14. package/dist/src/brain/adapters/base.js +11 -0
  15. package/dist/src/brain/adapters/base.js.map +1 -0
  16. package/dist/src/brain/adapters/index.d.ts +11 -0
  17. package/dist/src/brain/adapters/index.d.ts.map +1 -0
  18. package/dist/src/brain/adapters/index.js +37 -0
  19. package/dist/src/brain/adapters/index.js.map +1 -0
  20. package/dist/src/brain/adapters/native.d.ts +15 -0
  21. package/dist/src/brain/adapters/native.d.ts.map +1 -0
  22. package/dist/src/brain/adapters/native.js +25 -0
  23. package/dist/src/brain/adapters/native.js.map +1 -0
  24. package/dist/src/brain/adapters/prompt.d.ts +16 -0
  25. package/dist/src/brain/adapters/prompt.d.ts.map +1 -0
  26. package/dist/src/brain/adapters/prompt.js +91 -0
  27. package/dist/src/brain/adapters/prompt.js.map +1 -0
  28. package/dist/src/brain/hybrid.d.ts +53 -0
  29. package/dist/src/brain/hybrid.d.ts.map +1 -0
  30. package/dist/src/brain/hybrid.js +263 -0
  31. package/dist/src/brain/hybrid.js.map +1 -0
  32. package/dist/src/brain/index.d.ts +8 -0
  33. package/dist/src/brain/index.d.ts.map +1 -0
  34. package/dist/src/brain/index.js +19 -0
  35. package/dist/src/brain/index.js.map +1 -0
  36. package/dist/src/brain/router.d.ts +55 -0
  37. package/dist/src/brain/router.d.ts.map +1 -0
  38. package/dist/src/brain/router.js +174 -0
  39. package/dist/src/brain/router.js.map +1 -0
  40. package/dist/src/channels/adapter.d.ts +6 -0
  41. package/dist/src/channels/adapter.d.ts.map +1 -1
  42. package/dist/src/channels/adapter.js +44 -1
  43. package/dist/src/channels/adapter.js.map +1 -1
  44. package/dist/src/channels/discord.d.ts.map +1 -1
  45. package/dist/src/channels/discord.js +60 -14
  46. package/dist/src/channels/discord.js.map +1 -1
  47. package/dist/src/channels/slack.d.ts +5 -0
  48. package/dist/src/channels/slack.d.ts.map +1 -1
  49. package/dist/src/channels/slack.js +77 -9
  50. package/dist/src/channels/slack.js.map +1 -1
  51. package/dist/src/channels/telegram.d.ts +1 -0
  52. package/dist/src/channels/telegram.d.ts.map +1 -1
  53. package/dist/src/channels/telegram.js +42 -4
  54. package/dist/src/channels/telegram.js.map +1 -1
  55. package/dist/src/channels/webhook.d.ts.map +1 -1
  56. package/dist/src/channels/webhook.js +37 -6
  57. package/dist/src/channels/webhook.js.map +1 -1
  58. package/dist/src/cli/animations/fish.d.ts +9 -0
  59. package/dist/src/cli/animations/fish.d.ts.map +1 -1
  60. package/dist/src/cli/animations/fish.js +64 -80
  61. package/dist/src/cli/animations/fish.js.map +1 -1
  62. package/dist/src/cli/animations/markdown.d.ts.map +1 -1
  63. package/dist/src/cli/animations/markdown.js +23 -4
  64. package/dist/src/cli/animations/markdown.js.map +1 -1
  65. package/dist/src/cli/commands/agents.js +31 -30
  66. package/dist/src/cli/commands/agents.js.map +1 -1
  67. package/dist/src/cli/commands/channels.js +41 -48
  68. package/dist/src/cli/commands/channels.js.map +1 -1
  69. package/dist/src/cli/commands/chat.d.ts +1 -0
  70. package/dist/src/cli/commands/chat.d.ts.map +1 -1
  71. package/dist/src/cli/commands/chat.js +81 -8
  72. package/dist/src/cli/commands/chat.js.map +1 -1
  73. package/dist/src/cli/commands/config.js +0 -1
  74. package/dist/src/cli/commands/config.js.map +1 -1
  75. package/dist/src/cli/commands/doctor.js +42 -40
  76. package/dist/src/cli/commands/doctor.js.map +1 -1
  77. package/dist/src/cli/commands/export.js +6 -6
  78. package/dist/src/cli/commands/export.js.map +1 -1
  79. package/dist/src/cli/commands/mcp.js +7 -7
  80. package/dist/src/cli/commands/mcp.js.map +1 -1
  81. package/dist/src/cli/commands/models.js +0 -1
  82. package/dist/src/cli/commands/models.js.map +1 -1
  83. package/dist/src/cli/commands/onboard.js +0 -55
  84. package/dist/src/cli/commands/onboard.js.map +1 -1
  85. package/dist/src/cli/commands/pairing.js +22 -24
  86. package/dist/src/cli/commands/pairing.js.map +1 -1
  87. package/dist/src/cli/commands/plugins.js +8 -8
  88. package/dist/src/cli/commands/plugins.js.map +1 -1
  89. package/dist/src/cli/commands/run.d.ts +1 -0
  90. package/dist/src/cli/commands/run.d.ts.map +1 -1
  91. package/dist/src/cli/commands/run.js +101 -50
  92. package/dist/src/cli/commands/run.js.map +1 -1
  93. package/dist/src/cli/commands/sandbox.js +27 -32
  94. package/dist/src/cli/commands/sandbox.js.map +1 -1
  95. package/dist/src/cli/commands/settings.js +1 -16
  96. package/dist/src/cli/commands/settings.js.map +1 -1
  97. package/dist/src/cli/commands/share.js +6 -6
  98. package/dist/src/cli/commands/share.js.map +1 -1
  99. package/dist/src/cli/commands/tui.js +0 -1
  100. package/dist/src/cli/commands/tui.js.map +1 -1
  101. package/dist/src/config/hotreload.d.ts +87 -0
  102. package/dist/src/config/hotreload.d.ts.map +1 -0
  103. package/dist/src/config/hotreload.js +497 -0
  104. package/dist/src/config/hotreload.js.map +1 -0
  105. package/dist/src/config/manager.d.ts +4 -2
  106. package/dist/src/config/manager.d.ts.map +1 -1
  107. package/dist/src/config/manager.js +23 -5
  108. package/dist/src/config/manager.js.map +1 -1
  109. package/dist/src/config/schema.d.ts +286 -9
  110. package/dist/src/config/schema.d.ts.map +1 -1
  111. package/dist/src/config/schema.js +71 -7
  112. package/dist/src/config/schema.js.map +1 -1
  113. package/dist/src/core/runtime.d.ts +18 -0
  114. package/dist/src/core/runtime.d.ts.map +1 -1
  115. package/dist/src/core/runtime.js +84 -14
  116. package/dist/src/core/runtime.js.map +1 -1
  117. package/dist/src/core/server.d.ts.map +1 -1
  118. package/dist/src/core/server.js +20 -2
  119. package/dist/src/core/server.js.map +1 -1
  120. package/dist/src/index.d.ts +2 -0
  121. package/dist/src/index.d.ts.map +1 -1
  122. package/dist/src/index.js +6 -0
  123. package/dist/src/index.js.map +1 -1
  124. package/dist/src/interfaces/terminal/dashboard.d.ts +80 -0
  125. package/dist/src/interfaces/terminal/dashboard.d.ts.map +1 -0
  126. package/dist/src/interfaces/terminal/dashboard.js +618 -0
  127. package/dist/src/interfaces/terminal/dashboard.js.map +1 -0
  128. package/dist/src/interfaces/terminal/index.d.ts +46 -0
  129. package/dist/src/interfaces/terminal/index.d.ts.map +1 -0
  130. package/dist/src/interfaces/terminal/index.js +171 -0
  131. package/dist/src/interfaces/terminal/index.js.map +1 -0
  132. package/dist/src/interfaces/terminal/visualizations.d.ts +78 -0
  133. package/dist/src/interfaces/terminal/visualizations.d.ts.map +1 -0
  134. package/dist/src/interfaces/terminal/visualizations.js +540 -0
  135. package/dist/src/interfaces/terminal/visualizations.js.map +1 -0
  136. package/dist/src/interfaces/web/server.d.ts +73 -0
  137. package/dist/src/interfaces/web/server.d.ts.map +1 -0
  138. package/dist/src/interfaces/web/server.js +505 -0
  139. package/dist/src/interfaces/web/server.js.map +1 -0
  140. package/dist/src/mcp-servers/antigravity/index.js +2 -2
  141. package/dist/src/mcp-servers/antigravity/index.js.map +1 -1
  142. package/dist/src/memory/dreaming.d.ts +91 -0
  143. package/dist/src/memory/dreaming.d.ts.map +1 -0
  144. package/dist/src/memory/dreaming.js +582 -0
  145. package/dist/src/memory/dreaming.js.map +1 -0
  146. package/dist/src/memory/index.d.ts +8 -0
  147. package/dist/src/memory/index.d.ts.map +1 -0
  148. package/dist/src/memory/index.js +29 -0
  149. package/dist/src/memory/index.js.map +1 -0
  150. package/dist/src/memory/store.d.ts +13 -0
  151. package/dist/src/memory/store.d.ts.map +1 -1
  152. package/dist/src/memory/store.js +28 -0
  153. package/dist/src/memory/store.js.map +1 -1
  154. package/dist/src/memory/vector.d.ts +94 -0
  155. package/dist/src/memory/vector.d.ts.map +1 -0
  156. package/dist/src/memory/vector.js +457 -0
  157. package/dist/src/memory/vector.js.map +1 -0
  158. package/dist/src/networking/analyzer.d.ts +189 -0
  159. package/dist/src/networking/analyzer.d.ts.map +1 -0
  160. package/dist/src/networking/analyzer.js +604 -0
  161. package/dist/src/networking/analyzer.js.map +1 -0
  162. package/dist/src/plugins/bundled/context-engine/index.d.ts +8 -0
  163. package/dist/src/plugins/bundled/context-engine/index.d.ts.map +1 -0
  164. package/dist/src/plugins/bundled/context-engine/index.js +353 -0
  165. package/dist/src/plugins/bundled/context-engine/index.js.map +1 -0
  166. package/dist/src/plugins/bundled/observability/index.d.ts +64 -0
  167. package/dist/src/plugins/bundled/observability/index.d.ts.map +1 -0
  168. package/dist/src/plugins/bundled/observability/index.js +441 -0
  169. package/dist/src/plugins/bundled/observability/index.js.map +1 -0
  170. package/dist/src/plugins/index.d.ts +15 -0
  171. package/dist/src/plugins/index.d.ts.map +1 -0
  172. package/dist/src/plugins/index.js +117 -0
  173. package/dist/src/plugins/index.js.map +1 -0
  174. package/dist/src/plugins/loader.d.ts +19 -0
  175. package/dist/src/plugins/loader.d.ts.map +1 -0
  176. package/dist/src/plugins/loader.js +333 -0
  177. package/dist/src/plugins/loader.js.map +1 -0
  178. package/dist/src/plugins/manager.d.ts +32 -0
  179. package/dist/src/plugins/manager.d.ts.map +1 -0
  180. package/dist/src/plugins/manager.js +410 -0
  181. package/dist/src/plugins/manager.js.map +1 -0
  182. package/dist/src/plugins/registry.d.ts +50 -0
  183. package/dist/src/plugins/registry.d.ts.map +1 -0
  184. package/dist/src/plugins/registry.js +285 -0
  185. package/dist/src/plugins/registry.js.map +1 -0
  186. package/dist/src/plugins/types.d.ts +165 -0
  187. package/dist/src/plugins/types.d.ts.map +1 -0
  188. package/dist/src/plugins/types.js +7 -0
  189. package/dist/src/plugins/types.js.map +1 -0
  190. package/dist/src/providers/base.d.ts +5 -0
  191. package/dist/src/providers/base.d.ts.map +1 -1
  192. package/dist/src/providers/base.js.map +1 -1
  193. package/dist/src/providers/huggingface.d.ts +27 -0
  194. package/dist/src/providers/huggingface.d.ts.map +1 -0
  195. package/dist/src/providers/huggingface.js +140 -0
  196. package/dist/src/providers/huggingface.js.map +1 -0
  197. package/dist/src/providers/kiloauto.d.ts +29 -0
  198. package/dist/src/providers/kiloauto.d.ts.map +1 -0
  199. package/dist/src/providers/kiloauto.js +242 -0
  200. package/dist/src/providers/kiloauto.js.map +1 -0
  201. package/dist/src/providers/localllama.d.ts +26 -0
  202. package/dist/src/providers/localllama.d.ts.map +1 -0
  203. package/dist/src/providers/localllama.js +192 -0
  204. package/dist/src/providers/localllama.js.map +1 -0
  205. package/dist/src/providers/openai.d.ts.map +1 -1
  206. package/dist/src/providers/openai.js +9 -1
  207. package/dist/src/providers/openai.js.map +1 -1
  208. package/dist/src/providers/router.d.ts.map +1 -1
  209. package/dist/src/providers/router.js +41 -5
  210. package/dist/src/providers/router.js.map +1 -1
  211. package/dist/src/scheduler/heartbeat.d.ts.map +1 -1
  212. package/dist/src/scheduler/heartbeat.js +23 -1
  213. package/dist/src/scheduler/heartbeat.js.map +1 -1
  214. package/dist/src/security/privacy.d.ts +199 -0
  215. package/dist/src/security/privacy.d.ts.map +1 -0
  216. package/dist/src/security/privacy.js +600 -0
  217. package/dist/src/security/privacy.js.map +1 -0
  218. package/dist/src/server/hq.d.ts.map +1 -1
  219. package/dist/src/server/hq.js +56 -4
  220. package/dist/src/server/hq.js.map +1 -1
  221. package/dist/src/skills/loader.d.ts.map +1 -1
  222. package/dist/src/skills/loader.js +13 -3
  223. package/dist/src/skills/loader.js.map +1 -1
  224. package/dist/src/tools/advanced.d.ts.map +1 -1
  225. package/dist/src/tools/advanced.js +73 -18
  226. package/dist/src/tools/advanced.js.map +1 -1
  227. package/dist/src/tools/filesystem.d.ts.map +1 -1
  228. package/dist/src/tools/filesystem.js +110 -7
  229. package/dist/src/tools/filesystem.js.map +1 -1
  230. package/dist/src/tools/index_memory.d.ts.map +1 -1
  231. package/dist/src/tools/index_memory.js +13 -6
  232. package/dist/src/tools/index_memory.js.map +1 -1
  233. package/dist/src/tools/loader.d.ts.map +1 -1
  234. package/dist/src/tools/loader.js +4 -2
  235. package/dist/src/tools/loader.js.map +1 -1
  236. package/dist/src/tools/registry.d.ts +6 -0
  237. package/dist/src/tools/registry.d.ts.map +1 -1
  238. package/dist/src/tools/registry.js +51 -12
  239. package/dist/src/tools/registry.js.map +1 -1
  240. package/dist/src/tools/shell.d.ts.map +1 -1
  241. package/dist/src/tools/shell.js +2 -0
  242. package/dist/src/tools/shell.js.map +1 -1
  243. package/dist/src/tools/specialized.d.ts.map +1 -1
  244. package/dist/src/tools/specialized.js +52 -12
  245. package/dist/src/tools/specialized.js.map +1 -1
  246. package/dist/src/workflow/engine.d.ts.map +1 -1
  247. package/dist/src/workflow/engine.js +43 -13
  248. package/dist/src/workflow/engine.js.map +1 -1
  249. package/dist/src/workflow/lobster.d.ts +138 -0
  250. package/dist/src/workflow/lobster.d.ts.map +1 -0
  251. package/dist/src/workflow/lobster.js +620 -0
  252. package/dist/src/workflow/lobster.js.map +1 -0
  253. package/dist/src/workspace/heartbeat.d.ts +122 -0
  254. package/dist/src/workspace/heartbeat.d.ts.map +1 -0
  255. package/dist/src/workspace/heartbeat.js +624 -0
  256. package/dist/src/workspace/heartbeat.js.map +1 -0
  257. package/dist/src/workspace/index.d.ts +29 -0
  258. package/dist/src/workspace/index.d.ts.map +1 -0
  259. package/dist/src/workspace/index.js +97 -0
  260. package/dist/src/workspace/index.js.map +1 -0
  261. package/package.json +4 -3
@@ -0,0 +1,620 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Lobster YAML Compatibility
4
+ * OpenClaw Lobster workflow format compatibility layer for Fishbone engine
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.EnhancedFishboneEngine = exports.LobsterValidator = exports.LobsterConverter = void 0;
41
+ exports.isLobsterWorkflow = isLobsterWorkflow;
42
+ exports.createSampleLobsterWorkflow = createSampleLobsterWorkflow;
43
+ exports.saveLobsterWorkflow = saveLobsterWorkflow;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ // ─── Lobster to Fishbone Converter ─────────────────────────────────────
47
+ class LobsterConverter {
48
+ /**
49
+ * Convert Lobster YAML workflow to Fishbone workflow
50
+ */
51
+ static convertLobsterToFishbone(lobster) {
52
+ const fishbone = {
53
+ name: lobster.name,
54
+ description: lobster.description || '',
55
+ version: lobster.version || '1.0.0',
56
+ trigger: this.convertTriggers(lobster.triggers),
57
+ variables: this.convertVariables(lobster.variables || {}),
58
+ steps: lobster.steps.map(step => this.convertStep(step))
59
+ };
60
+ return fishbone;
61
+ }
62
+ /**
63
+ * Parse Lobster YAML file and convert to Fishbone
64
+ */
65
+ static parseLobsterFile(filePath) {
66
+ const content = fs.readFileSync(filePath, 'utf-8');
67
+ try {
68
+ // Simple YAML parser fallback for demo purposes
69
+ // In production, use proper yaml library
70
+ const lobster = this.parseSimpleYAML(content);
71
+ return this.convertLobsterToFishbone(lobster);
72
+ }
73
+ catch (error) {
74
+ throw new Error(`Failed to parse Lobster YAML file: ${error.message}`);
75
+ }
76
+ }
77
+ static parseSimpleYAML(content) {
78
+ const result = {};
79
+ const lines = content.split('\n');
80
+ const stack = [{ obj: result, indent: -1 }];
81
+ let lastIndent = 0;
82
+ for (const line of lines) {
83
+ if (!line.trim() || line.trim().startsWith('#'))
84
+ continue;
85
+ const indent = line.length - line.trimStart().length;
86
+ const trimmed = line.trim();
87
+ // Pop stack to find the correct parent for current indent
88
+ while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
89
+ stack.pop();
90
+ }
91
+ const current = stack[stack.length - 1].obj;
92
+ if (trimmed.startsWith('- ')) {
93
+ // Array item
94
+ const value = trimmed.slice(2).trim();
95
+ if (!Array.isArray(current)) {
96
+ // Replace object with array if needed (shouldn't happen in valid YAML)
97
+ continue;
98
+ }
99
+ if (value.includes(':')) {
100
+ // Array of objects: "- key: value" or "- key:"
101
+ const [k, ...vParts] = value.split(':');
102
+ const v = vParts.join(':').trim();
103
+ if (v === '') {
104
+ const newObj = {};
105
+ current.push(newObj);
106
+ stack.push({ obj: newObj, indent });
107
+ }
108
+ else {
109
+ current.push({ [k.trim()]: v.replace(/^["']|["']$/g, '') });
110
+ }
111
+ }
112
+ else {
113
+ current.push(value.replace(/^["']|["']$/g, ''));
114
+ }
115
+ }
116
+ else if (trimmed.includes(':')) {
117
+ // Key-value pair
118
+ const [key, ...valueParts] = trimmed.split(':');
119
+ const value = valueParts.join(':').trim();
120
+ const cleanKey = key.trim();
121
+ if (value === '') {
122
+ // Could be object or array - look ahead
123
+ const nextLineIdx = lines.indexOf(line) + 1;
124
+ const nextLine = lines[nextLineIdx];
125
+ if (nextLine && nextLine.trim().startsWith('- ')) {
126
+ current[cleanKey] = [];
127
+ stack.push({ obj: current[cleanKey], indent, key: cleanKey });
128
+ }
129
+ else {
130
+ current[cleanKey] = {};
131
+ stack.push({ obj: current[cleanKey], indent, key: cleanKey });
132
+ }
133
+ }
134
+ else {
135
+ // Try to parse as number, boolean, or string
136
+ const cleanValue = value.replace(/^["']|["']$/g, '');
137
+ if (cleanValue === 'true')
138
+ current[cleanKey] = true;
139
+ else if (cleanValue === 'false')
140
+ current[cleanKey] = false;
141
+ else if (/^-?\d+$/.test(cleanValue))
142
+ current[cleanKey] = parseInt(cleanValue, 10);
143
+ else if (/^-?\d+\.\d+$/.test(cleanValue))
144
+ current[cleanKey] = parseFloat(cleanValue);
145
+ else
146
+ current[cleanKey] = cleanValue;
147
+ }
148
+ }
149
+ lastIndent = indent;
150
+ }
151
+ return result;
152
+ }
153
+ /**
154
+ * Convert Lobster triggers to Fishbone trigger string
155
+ */
156
+ static convertTriggers(triggers) {
157
+ if (!triggers || triggers.length === 0) {
158
+ return undefined;
159
+ }
160
+ const triggerStrings = triggers.map(trigger => {
161
+ switch (trigger.type) {
162
+ case 'schedule':
163
+ return `schedule:${trigger.config.cron || trigger.config.interval}`;
164
+ case 'webhook':
165
+ return `webhook:${trigger.config.path || trigger.config.event}`;
166
+ case 'event':
167
+ return `event:${trigger.config.name}`;
168
+ case 'manual':
169
+ return 'manual';
170
+ default:
171
+ return trigger.type;
172
+ }
173
+ });
174
+ return triggerStrings.join(',');
175
+ }
176
+ /**
177
+ * Convert Lobster variables to Fishbone variables
178
+ */
179
+ static convertVariables(lobsterVars) {
180
+ const fishboneVars = {};
181
+ for (const [key, value] of Object.entries(lobsterVars)) {
182
+ if (typeof value === 'string') {
183
+ fishboneVars[key] = value;
184
+ }
185
+ else {
186
+ fishboneVars[key] = JSON.stringify(value);
187
+ }
188
+ }
189
+ return fishboneVars;
190
+ }
191
+ /**
192
+ * Convert Lobster step to Fishbone step
193
+ */
194
+ static convertStep(lobsterStep) {
195
+ const fishboneStep = {
196
+ id: lobsterStep.id,
197
+ name: lobsterStep.name,
198
+ type: this.convertStepType(lobsterStep.type),
199
+ action: this.convertStepAction(lobsterStep),
200
+ inputs: this.convertStepInputs(lobsterStep.inputs),
201
+ outputs: lobsterStep.outputs,
202
+ requiresApproval: lobsterStep.approval?.required,
203
+ onError: this.convertStepError(lobsterStep),
204
+ timeout: lobsterStep.timeout,
205
+ description: lobsterStep.description
206
+ };
207
+ // Handle parallel steps
208
+ if (lobsterStep.type === 'parallel' && lobsterStep.config.steps) {
209
+ fishboneStep.children = lobsterStep.config.steps.map(child => this.convertStep(child));
210
+ }
211
+ return fishboneStep;
212
+ }
213
+ /**
214
+ * Convert Lobster step type to Fishbone step type
215
+ */
216
+ static convertStepType(lobsterType) {
217
+ switch (lobsterType) {
218
+ case 'llm':
219
+ return 'agent';
220
+ case 'tool':
221
+ case 'function':
222
+ return 'agent';
223
+ case 'condition':
224
+ return 'condition';
225
+ case 'loop':
226
+ return 'agent'; // Convert loops to agent steps
227
+ case 'parallel':
228
+ return 'parallel';
229
+ case 'http':
230
+ return 'shell';
231
+ case 'shell':
232
+ return 'shell';
233
+ default:
234
+ return 'agent';
235
+ }
236
+ }
237
+ /**
238
+ * Convert Lobster step action to Fishbone step action
239
+ */
240
+ static convertStepAction(lobsterStep) {
241
+ switch (lobsterStep.type) {
242
+ case 'llm':
243
+ return lobsterStep.config.prompt || lobsterStep.config.message || lobsterStep.name;
244
+ case 'tool':
245
+ case 'function':
246
+ if (lobsterStep.config.tool) {
247
+ const args = lobsterStep.config.arguments || {};
248
+ const argString = Object.entries(args)
249
+ .map(([key, value]) => `${key}=${JSON.stringify(value)}`)
250
+ .join(' ');
251
+ return `${lobsterStep.config.tool} ${argString}`;
252
+ }
253
+ return lobsterStep.config.function || lobsterStep.name;
254
+ case 'condition':
255
+ return lobsterStep.config.expression || lobsterStep.condition || 'true';
256
+ case 'loop':
257
+ const loopConfig = lobsterStep.config;
258
+ return `Loop ${loopConfig.times || 'unknown'} times: ${loopConfig.action || lobsterStep.name}`;
259
+ case 'http':
260
+ const method = lobsterStep.config.method || 'GET';
261
+ const url = lobsterStep.config.url || '';
262
+ return `curl -X ${method} ${url}`;
263
+ case 'shell':
264
+ return lobsterStep.config.command || lobsterStep.config.script || lobsterStep.name;
265
+ default:
266
+ return lobsterStep.description || lobsterStep.name;
267
+ }
268
+ }
269
+ /**
270
+ * Convert Lobster step inputs to Fishbone step inputs
271
+ */
272
+ static convertStepInputs(lobsterInputs) {
273
+ if (!lobsterInputs) {
274
+ return undefined;
275
+ }
276
+ const fishboneInputs = {};
277
+ for (const [key, value] of Object.entries(lobsterInputs)) {
278
+ if (typeof value === 'string') {
279
+ fishboneInputs[key] = value;
280
+ }
281
+ else {
282
+ fishboneInputs[key] = JSON.stringify(value);
283
+ }
284
+ }
285
+ return fishboneInputs;
286
+ }
287
+ /**
288
+ * Convert Lobster step error handling to Fishbone step error handling
289
+ */
290
+ static convertStepError(lobsterStep) {
291
+ if (lobsterStep.retry) {
292
+ if (lobsterStep.retry.maxAttempts && lobsterStep.retry.maxAttempts > 1) {
293
+ return 'retry';
294
+ }
295
+ }
296
+ // Default to stop for critical steps, continue for others
297
+ return 'stop';
298
+ }
299
+ }
300
+ exports.LobsterConverter = LobsterConverter;
301
+ // ─── Lobster Workflow Validator ───────────────────────────────────────
302
+ class LobsterValidator {
303
+ /**
304
+ * Validate Lobster workflow structure
305
+ */
306
+ static validate(lobster) {
307
+ const errors = [];
308
+ const warnings = [];
309
+ // Validate required fields
310
+ if (!lobster.name) {
311
+ errors.push('Workflow name is required');
312
+ }
313
+ if (!lobster.steps || lobster.steps.length === 0) {
314
+ errors.push('Workflow must have at least one step');
315
+ }
316
+ // Validate steps
317
+ if (lobster.steps) {
318
+ const stepIds = new Set();
319
+ for (const step of lobster.steps) {
320
+ // Validate step ID
321
+ if (!step.id) {
322
+ errors.push(`Step "${step.name}" is missing an ID`);
323
+ }
324
+ else if (stepIds.has(step.id)) {
325
+ errors.push(`Duplicate step ID: ${step.id}`);
326
+ }
327
+ else {
328
+ stepIds.add(step.id);
329
+ }
330
+ // Validate step name
331
+ if (!step.name) {
332
+ errors.push(`Step "${step.id}" is missing a name`);
333
+ }
334
+ // Validate step type
335
+ const validTypes = ['llm', 'tool', 'function', 'condition', 'loop', 'parallel', 'http', 'shell'];
336
+ if (!validTypes.includes(step.type)) {
337
+ errors.push(`Invalid step type "${step.type}" in step "${step.id}"`);
338
+ }
339
+ // Validate dependencies
340
+ if (step.dependsOn) {
341
+ for (const dep of step.dependsOn) {
342
+ if (!stepIds.has(dep)) {
343
+ warnings.push(`Step "${step.id}" depends on non-existent step "${dep}"`);
344
+ }
345
+ }
346
+ }
347
+ // Validate parallel steps
348
+ if (step.type === 'parallel' && step.config.steps) {
349
+ for (const childStep of step.config.steps) {
350
+ if (!childStep.id) {
351
+ errors.push(`Parallel child step is missing an ID`);
352
+ }
353
+ }
354
+ }
355
+ }
356
+ }
357
+ // Validate triggers
358
+ if (lobster.triggers) {
359
+ for (const trigger of lobster.triggers) {
360
+ if (!trigger.type) {
361
+ errors.push('Trigger is missing a type');
362
+ }
363
+ const validTriggerTypes = ['webhook', 'schedule', 'event', 'manual'];
364
+ if (!validTriggerTypes.includes(trigger.type)) {
365
+ errors.push(`Invalid trigger type "${trigger.type}"`);
366
+ }
367
+ }
368
+ }
369
+ return {
370
+ valid: errors.length === 0,
371
+ errors,
372
+ warnings
373
+ };
374
+ }
375
+ }
376
+ exports.LobsterValidator = LobsterValidator;
377
+ // ─── Enhanced Fishbone Engine with Lobster Support ───────────────────────
378
+ class EnhancedFishboneEngine {
379
+ /**
380
+ * Execute workflow from either Fishbone or Lobster format
381
+ */
382
+ static async executeWorkflow(workflowPath, variables = {}, eventHandler) {
383
+ const extension = path.extname(workflowPath).toLowerCase();
384
+ if (extension === '.yaml' || extension === '.yml') {
385
+ // Parse as Lobster YAML
386
+ const fishboneWorkflow = LobsterConverter.parseLobsterFile(workflowPath);
387
+ const engine = new (require('./engine').FishboneEngine)();
388
+ return engine.execute(fishboneWorkflow, variables, eventHandler);
389
+ }
390
+ else {
391
+ // Parse as original Fishbone format
392
+ const { parseFishboneFile, FishboneEngine } = require('./engine');
393
+ const fishboneWorkflow = parseFishboneFile(workflowPath);
394
+ const engine = new FishboneEngine();
395
+ return engine.execute(fishboneWorkflow, variables, eventHandler);
396
+ }
397
+ }
398
+ /**
399
+ * Validate workflow file (Fishbone or Lobster)
400
+ */
401
+ static validateWorkflow(workflowPath) {
402
+ const extension = path.extname(workflowPath).toLowerCase();
403
+ if (extension === '.yaml' || extension === '.yml') {
404
+ // Validate Lobster YAML
405
+ try {
406
+ const content = fs.readFileSync(workflowPath, 'utf-8');
407
+ const lobster = LobsterConverter.parseSimpleYAML(content);
408
+ return LobsterValidator.validate(lobster);
409
+ }
410
+ catch (error) {
411
+ return {
412
+ valid: false,
413
+ errors: [`Failed to parse YAML: ${error.message}`],
414
+ warnings: []
415
+ };
416
+ }
417
+ }
418
+ else {
419
+ // For Fishbone files, do basic validation
420
+ try {
421
+ const { parseFishboneFile } = require('./engine');
422
+ const workflow = parseFishboneFile(workflowPath);
423
+ if (!workflow.name) {
424
+ return {
425
+ valid: false,
426
+ errors: ['Workflow name is required'],
427
+ warnings: []
428
+ };
429
+ }
430
+ if (!workflow.steps || workflow.steps.length === 0) {
431
+ return {
432
+ valid: false,
433
+ errors: ['Workflow must have at least one step'],
434
+ warnings: []
435
+ };
436
+ }
437
+ return {
438
+ valid: true,
439
+ errors: [],
440
+ warnings: []
441
+ };
442
+ }
443
+ catch (error) {
444
+ return {
445
+ valid: false,
446
+ errors: [`Failed to parse Fishbone file: ${error.message}`],
447
+ warnings: []
448
+ };
449
+ }
450
+ }
451
+ }
452
+ /**
453
+ * Convert Lobster YAML to Fishbone format and save
454
+ */
455
+ static convertLobsterToFishboneFile(lobsterPath, fishbonePath) {
456
+ // Parse raw Lobster YAML (not converted to Fishbone)
457
+ const content = fs.readFileSync(lobsterPath, 'utf-8');
458
+ const lobster = LobsterConverter.parseSimpleYAML(content);
459
+ // Generate Fishbone markdown content
460
+ let fishboneContent = `---
461
+ name: ${lobster.name}
462
+ description: ${lobster.description || ''}
463
+ version: ${lobster.version || '1.0.0'}
464
+ ---
465
+
466
+ `;
467
+ for (const step of lobster.steps) {
468
+ fishboneContent += `## ${step.name}\n\n`;
469
+ if (step.description) {
470
+ fishboneContent += `${step.description}\n\n`;
471
+ }
472
+ // Map Lobster type to Fishbone action description
473
+ let action = step.name;
474
+ if (step.type === 'llm' && step.config?.prompt) {
475
+ action = step.config.prompt;
476
+ }
477
+ else if ((step.type === 'tool' || step.type === 'function') && step.config?.tool) {
478
+ action = `${step.config.tool} ${JSON.stringify(step.config.arguments || {})}`;
479
+ }
480
+ else if (step.type === 'http' && step.config?.url) {
481
+ action = `${step.config.method || 'GET'} ${step.config.url}`;
482
+ }
483
+ else if (step.type === 'shell' && step.config?.command) {
484
+ action = step.config.command;
485
+ }
486
+ fishboneContent += `- **Type**: ${step.type}\n`;
487
+ fishboneContent += `- **Action**: ${action}\n`;
488
+ if (step.approval?.required) {
489
+ fishboneContent += `- **Approval**: required\n`;
490
+ }
491
+ if (step.retry) {
492
+ fishboneContent += `- **Retry**: ${step.retry.maxAttempts || 3} attempts\n`;
493
+ }
494
+ if (step.inputs) {
495
+ for (const [key, value] of Object.entries(step.inputs)) {
496
+ fishboneContent += `- **Input**: ${key}=${value}\n`;
497
+ }
498
+ }
499
+ if (step.outputs && step.outputs.length > 0) {
500
+ for (const output of step.outputs) {
501
+ fishboneContent += `- **Output**: ${output}\n`;
502
+ }
503
+ }
504
+ if (step.dependsOn && step.dependsOn.length > 0) {
505
+ fishboneContent += `- **DependsOn**: ${step.dependsOn.join(', ')}\n`;
506
+ }
507
+ fishboneContent += '\n';
508
+ }
509
+ fs.writeFileSync(fishbonePath, fishboneContent, 'utf-8');
510
+ }
511
+ /**
512
+ * Get workflow metadata without full execution
513
+ */
514
+ static getWorkflowInfo(workflowPath) {
515
+ const extension = path.extname(workflowPath).toLowerCase();
516
+ if (extension === '.yaml' || extension === '.yml') {
517
+ // Parse Lobster YAML
518
+ const content = fs.readFileSync(workflowPath, 'utf-8');
519
+ const lobster = LobsterConverter.parseSimpleYAML(content);
520
+ return {
521
+ name: lobster.name,
522
+ description: lobster.description || '',
523
+ version: lobster.version || '1.0.0',
524
+ stepCount: lobster.steps?.length || 0,
525
+ format: 'lobster'
526
+ };
527
+ }
528
+ else {
529
+ // Parse Fishbone
530
+ const { parseFishboneFile } = require('./engine');
531
+ const workflow = parseFishboneFile(workflowPath);
532
+ return {
533
+ name: workflow.name,
534
+ description: workflow.description,
535
+ version: workflow.version,
536
+ stepCount: workflow.steps.length,
537
+ format: 'fishbone'
538
+ };
539
+ }
540
+ }
541
+ }
542
+ exports.EnhancedFishboneEngine = EnhancedFishboneEngine;
543
+ // ─── Utility Functions ─────────────────────────────────────────────────
544
+ /**
545
+ * Check if a file is a Lobster YAML workflow
546
+ */
547
+ function isLobsterWorkflow(filePath) {
548
+ const extension = path.extname(filePath).toLowerCase();
549
+ return extension === '.yaml' || extension === '.yml';
550
+ }
551
+ /**
552
+ * Create a sample Lobster YAML workflow
553
+ */
554
+ function createSampleLobsterWorkflow() {
555
+ return {
556
+ name: 'Sample Lobster Workflow',
557
+ description: 'A sample workflow demonstrating Lobster YAML format',
558
+ version: '1.0.0',
559
+ metadata: {
560
+ author: 'AZERCLAW',
561
+ tags: ['sample', 'demo'],
562
+ category: 'general'
563
+ },
564
+ triggers: [
565
+ {
566
+ type: 'manual',
567
+ config: {}
568
+ }
569
+ ],
570
+ variables: {
571
+ input_text: 'Hello, world!',
572
+ output_file: 'result.txt'
573
+ },
574
+ steps: [
575
+ {
576
+ id: 'step1',
577
+ name: 'Process Input',
578
+ description: 'Process the input text using LLM',
579
+ type: 'llm',
580
+ config: {
581
+ prompt: 'Please process this text: {{input_text}}',
582
+ model: 'gpt-4'
583
+ },
584
+ outputs: ['processed_text']
585
+ },
586
+ {
587
+ id: 'step2',
588
+ name: 'Save Result',
589
+ description: 'Save the processed result to a file',
590
+ type: 'shell',
591
+ config: {
592
+ command: 'echo "{{processed_text}}" > {{output_file}}'
593
+ },
594
+ dependsOn: ['step1']
595
+ }
596
+ ]
597
+ };
598
+ }
599
+ /**
600
+ * Save a Lobster workflow to file
601
+ */
602
+ function saveLobsterWorkflow(workflow, filePath) {
603
+ // Simple YAML output for demo purposes
604
+ // In production, use proper yaml library
605
+ let yamlContent = `name: ${workflow.name}\n`;
606
+ if (workflow.description)
607
+ yamlContent += `description: ${workflow.description}\n`;
608
+ if (workflow.version)
609
+ yamlContent += `version: ${workflow.version}\n`;
610
+ yamlContent += 'steps:\n';
611
+ for (const step of workflow.steps) {
612
+ yamlContent += ` - id: ${step.id}\n`;
613
+ yamlContent += ` name: ${step.name}\n`;
614
+ yamlContent += ` type: ${step.type}\n`;
615
+ if (step.description)
616
+ yamlContent += ` description: ${step.description}\n`;
617
+ }
618
+ fs.writeFileSync(filePath, yamlContent, 'utf-8');
619
+ }
620
+ //# sourceMappingURL=lobster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobster.js","sourceRoot":"","sources":["../../../src/workflow/lobster.ts"],"names":[],"mappings":"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"}