@monoes/monobrowse 1.0.2 → 1.0.4

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 (277) hide show
  1. package/dist/src/__tests__/batch-eval-parsing.test.d.ts +2 -0
  2. package/dist/src/__tests__/batch-eval-parsing.test.d.ts.map +1 -0
  3. package/dist/src/__tests__/batch-eval-parsing.test.js +47 -0
  4. package/dist/src/__tests__/batch-eval-parsing.test.js.map +1 -0
  5. package/dist/src/__tests__/output.test.d.ts +2 -0
  6. package/dist/src/__tests__/output.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/output.test.js +54 -0
  8. package/dist/src/__tests__/output.test.js.map +1 -0
  9. package/dist/src/__tests__/ref-cache.test.d.ts +2 -0
  10. package/dist/src/__tests__/ref-cache.test.d.ts.map +1 -0
  11. package/dist/src/__tests__/ref-cache.test.js +145 -0
  12. package/dist/src/__tests__/ref-cache.test.js.map +1 -0
  13. package/dist/src/browser/action-builder/analyzer.d.ts +0 -0
  14. package/dist/src/browser/action-builder/analyzer.d.ts.map +0 -0
  15. package/dist/src/browser/action-builder/analyzer.js +0 -0
  16. package/dist/src/browser/action-builder/analyzer.js.map +1 -1
  17. package/dist/src/browser/action-builder/types.d.ts +0 -0
  18. package/dist/src/browser/action-builder/types.d.ts.map +0 -0
  19. package/dist/src/browser/action-builder/types.js +0 -0
  20. package/dist/src/browser/action-builder/types.js.map +0 -0
  21. package/dist/src/browser/actions.d.ts +1 -1
  22. package/dist/src/browser/actions.d.ts.map +1 -1
  23. package/dist/src/browser/actions.js +19 -2
  24. package/dist/src/browser/actions.js.map +1 -1
  25. package/dist/src/browser/adapters/gemini.d.ts +0 -0
  26. package/dist/src/browser/adapters/gemini.d.ts.map +0 -0
  27. package/dist/src/browser/adapters/gemini.js +0 -0
  28. package/dist/src/browser/adapters/gemini.js.map +0 -0
  29. package/dist/src/browser/adapters/google.d.ts +0 -0
  30. package/dist/src/browser/adapters/google.d.ts.map +0 -0
  31. package/dist/src/browser/adapters/google.js +0 -0
  32. package/dist/src/browser/adapters/google.js.map +0 -0
  33. package/dist/src/browser/adapters/index.d.ts +0 -0
  34. package/dist/src/browser/adapters/index.d.ts.map +0 -0
  35. package/dist/src/browser/adapters/index.js +0 -0
  36. package/dist/src/browser/adapters/index.js.map +0 -0
  37. package/dist/src/browser/adapters/instagram.d.ts +0 -0
  38. package/dist/src/browser/adapters/instagram.d.ts.map +0 -0
  39. package/dist/src/browser/adapters/instagram.js +0 -0
  40. package/dist/src/browser/adapters/instagram.js.map +0 -0
  41. package/dist/src/browser/adapters/linkedin.d.ts +0 -0
  42. package/dist/src/browser/adapters/linkedin.d.ts.map +0 -0
  43. package/dist/src/browser/adapters/linkedin.js +0 -0
  44. package/dist/src/browser/adapters/linkedin.js.map +0 -0
  45. package/dist/src/browser/adapters/microsoft.d.ts +0 -0
  46. package/dist/src/browser/adapters/microsoft.d.ts.map +0 -0
  47. package/dist/src/browser/adapters/microsoft.js +0 -0
  48. package/dist/src/browser/adapters/microsoft.js.map +0 -0
  49. package/dist/src/browser/adapters/x.d.ts +0 -0
  50. package/dist/src/browser/adapters/x.d.ts.map +0 -0
  51. package/dist/src/browser/adapters/x.js +0 -0
  52. package/dist/src/browser/adapters/x.js.map +0 -0
  53. package/dist/src/browser/batch.d.ts +0 -0
  54. package/dist/src/browser/batch.d.ts.map +0 -0
  55. package/dist/src/browser/batch.js +0 -0
  56. package/dist/src/browser/batch.js.map +0 -0
  57. package/dist/src/browser/browser.d.ts +10 -0
  58. package/dist/src/browser/browser.d.ts.map +1 -1
  59. package/dist/src/browser/browser.js +111 -3
  60. package/dist/src/browser/browser.js.map +1 -1
  61. package/dist/src/browser/cdp.d.ts +0 -0
  62. package/dist/src/browser/cdp.d.ts.map +1 -1
  63. package/dist/src/browser/cdp.js +1 -1
  64. package/dist/src/browser/cdp.js.map +1 -1
  65. package/dist/src/browser/console-log.d.ts +0 -0
  66. package/dist/src/browser/console-log.d.ts.map +0 -0
  67. package/dist/src/browser/console-log.js +0 -0
  68. package/dist/src/browser/console-log.js.map +0 -0
  69. package/dist/src/browser/dashboard/api-types.d.ts +0 -0
  70. package/dist/src/browser/dashboard/api-types.d.ts.map +0 -0
  71. package/dist/src/browser/dashboard/api-types.js +0 -0
  72. package/dist/src/browser/dashboard/api-types.js.map +0 -0
  73. package/dist/src/browser/dashboard/server.d.ts +0 -0
  74. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  75. package/dist/src/browser/dashboard/server.js +37 -2
  76. package/dist/src/browser/dashboard/server.js.map +1 -1
  77. package/dist/src/browser/dashboard/ui.html +1 -1
  78. package/dist/src/browser/dialog.d.ts +0 -0
  79. package/dist/src/browser/dialog.d.ts.map +0 -0
  80. package/dist/src/browser/dialog.js +0 -0
  81. package/dist/src/browser/dialog.js.map +0 -0
  82. package/dist/src/browser/emulation.d.ts +0 -0
  83. package/dist/src/browser/emulation.d.ts.map +0 -0
  84. package/dist/src/browser/emulation.js +0 -0
  85. package/dist/src/browser/emulation.js.map +0 -0
  86. package/dist/src/browser/find.d.ts +0 -0
  87. package/dist/src/browser/find.d.ts.map +0 -0
  88. package/dist/src/browser/find.js +0 -0
  89. package/dist/src/browser/find.js.map +1 -1
  90. package/dist/src/browser/har.d.ts +0 -0
  91. package/dist/src/browser/har.d.ts.map +0 -0
  92. package/dist/src/browser/har.js +0 -0
  93. package/dist/src/browser/har.js.map +0 -0
  94. package/dist/src/browser/index.d.ts +1 -0
  95. package/dist/src/browser/index.d.ts.map +1 -1
  96. package/dist/src/browser/index.js +1 -0
  97. package/dist/src/browser/index.js.map +1 -1
  98. package/dist/src/browser/network.d.ts +7 -0
  99. package/dist/src/browser/network.d.ts.map +1 -1
  100. package/dist/src/browser/network.js +10 -0
  101. package/dist/src/browser/network.js.map +1 -1
  102. package/dist/src/browser/pdf.d.ts +0 -0
  103. package/dist/src/browser/pdf.d.ts.map +0 -0
  104. package/dist/src/browser/pdf.js +0 -0
  105. package/dist/src/browser/pdf.js.map +1 -1
  106. package/dist/src/browser/profiler.d.ts +0 -0
  107. package/dist/src/browser/profiler.d.ts.map +0 -0
  108. package/dist/src/browser/profiler.js +0 -0
  109. package/dist/src/browser/profiler.js.map +1 -1
  110. package/dist/src/browser/record.d.ts +3 -0
  111. package/dist/src/browser/record.d.ts.map +1 -1
  112. package/dist/src/browser/record.js +37 -5
  113. package/dist/src/browser/record.js.map +1 -1
  114. package/dist/src/browser/ref-cache.d.ts +41 -0
  115. package/dist/src/browser/ref-cache.d.ts.map +1 -0
  116. package/dist/src/browser/ref-cache.js +120 -0
  117. package/dist/src/browser/ref-cache.js.map +1 -0
  118. package/dist/src/browser/screenshot.d.ts +0 -0
  119. package/dist/src/browser/screenshot.d.ts.map +0 -0
  120. package/dist/src/browser/screenshot.js +0 -0
  121. package/dist/src/browser/screenshot.js.map +1 -1
  122. package/dist/src/browser/session.d.ts +0 -0
  123. package/dist/src/browser/session.d.ts.map +1 -1
  124. package/dist/src/browser/session.js +12 -7
  125. package/dist/src/browser/session.js.map +1 -1
  126. package/dist/src/browser/snapshot.d.ts +0 -0
  127. package/dist/src/browser/snapshot.d.ts.map +0 -0
  128. package/dist/src/browser/snapshot.js +0 -0
  129. package/dist/src/browser/snapshot.js.map +1 -1
  130. package/dist/src/browser/storage.d.ts +0 -0
  131. package/dist/src/browser/storage.d.ts.map +0 -0
  132. package/dist/src/browser/storage.js +0 -0
  133. package/dist/src/browser/storage.js.map +0 -0
  134. package/dist/src/browser/tabs.d.ts +1 -1
  135. package/dist/src/browser/tabs.d.ts.map +1 -1
  136. package/dist/src/browser/tabs.js +20 -4
  137. package/dist/src/browser/tabs.js.map +1 -1
  138. package/dist/src/browser/trace.d.ts +0 -0
  139. package/dist/src/browser/trace.d.ts.map +0 -0
  140. package/dist/src/browser/trace.js +0 -0
  141. package/dist/src/browser/trace.js.map +1 -1
  142. package/dist/src/browser/types.d.ts +0 -0
  143. package/dist/src/browser/types.d.ts.map +0 -0
  144. package/dist/src/browser/types.js +0 -0
  145. package/dist/src/browser/types.js.map +0 -0
  146. package/dist/src/browser/vitals.d.ts +0 -0
  147. package/dist/src/browser/vitals.d.ts.map +0 -0
  148. package/dist/src/browser/vitals.js +0 -0
  149. package/dist/src/browser/vitals.js.map +0 -0
  150. package/dist/src/browser/wait.d.ts +0 -0
  151. package/dist/src/browser/wait.d.ts.map +0 -0
  152. package/dist/src/browser/wait.js +0 -0
  153. package/dist/src/browser/wait.js.map +0 -0
  154. package/dist/src/cli/action.d.ts +0 -0
  155. package/dist/src/cli/action.d.ts.map +1 -1
  156. package/dist/src/cli/action.js +87 -2
  157. package/dist/src/cli/action.js.map +1 -1
  158. package/dist/src/cli/commands.d.ts +22 -0
  159. package/dist/src/cli/commands.d.ts.map +1 -1
  160. package/dist/src/cli/commands.js +276 -28
  161. package/dist/src/cli/commands.js.map +1 -1
  162. package/dist/src/cli/output.d.ts +0 -0
  163. package/dist/src/cli/output.d.ts.map +1 -1
  164. package/dist/src/cli/output.js +0 -0
  165. package/dist/src/cli/output.js.map +0 -0
  166. package/dist/src/cli/platform.d.ts +0 -0
  167. package/dist/src/cli/platform.d.ts.map +0 -0
  168. package/dist/src/cli/platform.js +0 -0
  169. package/dist/src/cli/platform.js.map +0 -0
  170. package/dist/src/cli/types.d.ts +0 -0
  171. package/dist/src/cli/types.d.ts.map +0 -0
  172. package/dist/src/cli/types.js +0 -0
  173. package/dist/src/cli/types.js.map +0 -0
  174. package/dist/src/cli.d.ts +0 -0
  175. package/dist/src/cli.d.ts.map +0 -0
  176. package/dist/src/cli.js.map +1 -1
  177. package/dist/src/index.d.ts +0 -0
  178. package/dist/src/index.d.ts.map +0 -0
  179. package/dist/src/index.js +0 -0
  180. package/dist/src/index.js.map +0 -0
  181. package/dist/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +2 -2
  183. package/src/__tests__/batch-eval-parsing.test.ts +52 -0
  184. package/src/__tests__/output.test.ts +62 -0
  185. package/src/__tests__/ref-cache.test.ts +175 -0
  186. package/src/browser/action-builder/analyzer.ts +0 -0
  187. package/src/browser/action-builder/types.ts +0 -0
  188. package/src/browser/actions.ts +22 -2
  189. package/src/browser/adapters/gemini.ts +0 -0
  190. package/src/browser/adapters/google.ts +0 -0
  191. package/src/browser/adapters/index.ts +0 -0
  192. package/src/browser/adapters/instagram.ts +0 -0
  193. package/src/browser/adapters/linkedin.ts +0 -0
  194. package/src/browser/adapters/microsoft.ts +0 -0
  195. package/src/browser/adapters/x.ts +0 -0
  196. package/src/browser/batch.ts +0 -0
  197. package/src/browser/browser.ts +115 -2
  198. package/src/browser/cdp.ts +1 -1
  199. package/src/browser/console-log.ts +0 -0
  200. package/src/browser/dashboard/api-types.ts +0 -0
  201. package/src/browser/dashboard/server.ts +37 -2
  202. package/src/browser/dashboard/ui.html +1 -1
  203. package/src/browser/dialog.ts +0 -0
  204. package/src/browser/emulation.ts +0 -0
  205. package/src/browser/find.ts +0 -0
  206. package/src/browser/har.ts +0 -0
  207. package/src/browser/index.ts +1 -0
  208. package/src/browser/network.ts +11 -0
  209. package/src/browser/pdf.ts +0 -0
  210. package/src/browser/profiler.ts +0 -0
  211. package/src/browser/record.ts +43 -6
  212. package/src/browser/ref-cache.ts +141 -0
  213. package/src/browser/screenshot.ts +0 -0
  214. package/src/browser/session.ts +13 -7
  215. package/src/browser/snapshot.ts +0 -0
  216. package/src/browser/storage.ts +0 -0
  217. package/src/browser/tabs.ts +36 -7
  218. package/src/browser/trace.ts +0 -0
  219. package/src/browser/types.ts +0 -0
  220. package/src/browser/vitals.ts +0 -0
  221. package/src/browser/wait.ts +0 -0
  222. package/src/cli/action.ts +85 -3
  223. package/src/cli/commands.ts +272 -28
  224. package/src/cli/output.ts +0 -0
  225. package/src/cli/platform.ts +0 -0
  226. package/src/cli/types.ts +0 -0
  227. package/src/cli.ts +0 -0
  228. package/src/index.ts +0 -0
  229. package/dist/package.json +0 -71
  230. package/dist/src/browser/playbook/browser-handlers.d.ts +0 -3
  231. package/dist/src/browser/playbook/browser-handlers.d.ts.map +0 -1
  232. package/dist/src/browser/playbook/browser-handlers.js +0 -377
  233. package/dist/src/browser/playbook/browser-handlers.js.map +0 -1
  234. package/dist/src/browser/playbook/builtin-handlers.d.ts +0 -3
  235. package/dist/src/browser/playbook/builtin-handlers.d.ts.map +0 -1
  236. package/dist/src/browser/playbook/builtin-handlers.js +0 -364
  237. package/dist/src/browser/playbook/builtin-handlers.js.map +0 -1
  238. package/dist/src/browser/playbook/index.d.ts +0 -3
  239. package/dist/src/browser/playbook/index.d.ts.map +0 -1
  240. package/dist/src/browser/playbook/index.js +0 -3
  241. package/dist/src/browser/playbook/index.js.map +0 -1
  242. package/dist/src/browser/playbook/store.d.ts +0 -8
  243. package/dist/src/browser/playbook/store.d.ts.map +0 -1
  244. package/dist/src/browser/playbook/store.js +0 -87
  245. package/dist/src/browser/playbook/store.js.map +0 -1
  246. package/dist/src/browser/workflow/builtin-handlers.d.ts +0 -3
  247. package/dist/src/browser/workflow/builtin-handlers.d.ts.map +0 -1
  248. package/dist/src/browser/workflow/builtin-handlers.js +0 -343
  249. package/dist/src/browser/workflow/builtin-handlers.js.map +0 -1
  250. package/dist/src/browser/workflow/engine.d.ts +0 -10
  251. package/dist/src/browser/workflow/engine.d.ts.map +0 -1
  252. package/dist/src/browser/workflow/engine.js +0 -174
  253. package/dist/src/browser/workflow/engine.js.map +0 -1
  254. package/dist/src/browser/workflow/expression.d.ts +0 -4
  255. package/dist/src/browser/workflow/expression.d.ts.map +0 -1
  256. package/dist/src/browser/workflow/expression.js +0 -89
  257. package/dist/src/browser/workflow/expression.js.map +0 -1
  258. package/dist/src/browser/workflow/index.d.ts +0 -6
  259. package/dist/src/browser/workflow/index.d.ts.map +0 -1
  260. package/dist/src/browser/workflow/index.js +0 -6
  261. package/dist/src/browser/workflow/index.js.map +0 -1
  262. package/dist/src/browser/workflow/store.d.ts +0 -8
  263. package/dist/src/browser/workflow/store.d.ts.map +0 -1
  264. package/dist/src/browser/workflow/store.js +0 -87
  265. package/dist/src/browser/workflow/store.js.map +0 -1
  266. package/dist/src/browser/workflow/types.d.ts +0 -62
  267. package/dist/src/browser/workflow/types.d.ts.map +0 -1
  268. package/dist/src/browser/workflow/types.js +0 -2
  269. package/dist/src/browser/workflow/types.js.map +0 -1
  270. package/dist/src/cli/playbook.d.ts +0 -3
  271. package/dist/src/cli/playbook.d.ts.map +0 -1
  272. package/dist/src/cli/playbook.js +0 -265
  273. package/dist/src/cli/playbook.js.map +0 -1
  274. package/dist/src/cli/workflow.d.ts +0 -2
  275. package/dist/src/cli/workflow.d.ts.map +0 -1
  276. package/dist/src/cli/workflow.js +0 -3
  277. package/dist/src/cli/workflow.js.map +0 -1
@@ -1,89 +0,0 @@
1
- const TEMPLATE_PATTERN = '\\{\\{([^}]+)\\}\\}';
2
- /** Env var names matching this pattern are blocked from $env expressions to prevent secret exfiltration. */
3
- const ENV_DENYLIST = /(_KEY|_TOKEN|_SECRET|_PASSWORD|_JWT|_API_KEY|_PRIVATE_KEY|_PASS|_PWD|_CERT|_PEM|_CREDENTIAL|_CREDENTIALS|_AUTH)$/i;
4
- const cache = new Map();
5
- function extractTemplates(template) {
6
- if (cache.has(template))
7
- return cache.get(template);
8
- // LRU eviction: drop the oldest entry rather than clearing all at once (thundering-herd).
9
- if (cache.size >= 500) {
10
- const oldest = cache.keys().next().value;
11
- if (oldest !== undefined)
12
- cache.delete(oldest);
13
- }
14
- const matches = [...template.matchAll(new RegExp(TEMPLATE_PATTERN, 'g'))];
15
- cache.set(template, matches);
16
- return matches;
17
- }
18
- export function resolveExpression(template, item, nodeOutputs, params, allowEnvAccess) {
19
- const matches = extractTemplates(template);
20
- if (matches.length === 0)
21
- return template;
22
- let result = template;
23
- for (const match of matches) {
24
- const expr = match[1].trim();
25
- const value = resolveToken(expr, item, nodeOutputs, params, allowEnvAccess);
26
- result = result.split(match[0]).join(String(value));
27
- }
28
- return result;
29
- }
30
- function resolveToken(expr, item, nodeOutputs, params, allowEnvAccess) {
31
- if (expr.startsWith('$json.')) {
32
- const key = expr.slice(6);
33
- if (!(key in item.data))
34
- throw new Error(`Unresolved: $json.${key} not found in item data`);
35
- return item.data[key];
36
- }
37
- if (expr.startsWith('$env.')) {
38
- const key = expr.slice(5);
39
- if (!allowEnvAccess && ENV_DENYLIST.test(key)) {
40
- throw new Error(`Blocked: env var "${key}" matches secret pattern. Set allowEnvAccess: true in workflow config to override.`);
41
- }
42
- const val = process.env[key];
43
- if (val === undefined)
44
- throw new Error(`Unresolved: $env.${key} not set`);
45
- return val;
46
- }
47
- if (expr.startsWith('params.')) {
48
- const key = expr.slice(7);
49
- if (!(key in params))
50
- throw new Error(`Unresolved: params.${key} not provided`);
51
- return params[key];
52
- }
53
- if (expr.startsWith('$node.') || expr.startsWith('$node["')) {
54
- let nodeId;
55
- let field;
56
- if (expr.startsWith('$node["')) {
57
- // $node["NodeId"].field
58
- const bracketEnd = expr.indexOf('"].');
59
- if (bracketEnd === -1)
60
- throw new Error(`Unresolved: malformed $node bracket expression: ${expr}`);
61
- nodeId = expr.slice(7, bracketEnd); // slice off '$node["'
62
- field = expr.slice(bracketEnd + 3); // slice off '"].'
63
- }
64
- else {
65
- // $node.NodeId.field
66
- const parts = expr.slice(6).split('.');
67
- nodeId = parts[0];
68
- field = parts.slice(1).join('.');
69
- }
70
- const items = nodeOutputs[nodeId];
71
- if (!items || items.length === 0)
72
- throw new Error(`Unresolved: $node.${nodeId} has no output`);
73
- const val = items[0].data[field];
74
- if (val === undefined)
75
- throw new Error(`Unresolved: $node.${nodeId}.${field} not found`);
76
- return val;
77
- }
78
- // Named ref (e.g. {{box}} from a find step) — action executor resolves these using its element handle map
79
- return `{{${expr}}}`;
80
- }
81
- // Note: only resolves top-level string values. Nested objects/arrays are passed through unchanged.
82
- export function resolveConfig(config, item, nodeOutputs, params, allowEnvAccess) {
83
- const result = {};
84
- for (const [k, v] of Object.entries(config)) {
85
- result[k] = typeof v === 'string' ? resolveExpression(v, item, nodeOutputs, params, allowEnvAccess) : v;
86
- }
87
- return result;
88
- }
89
- //# sourceMappingURL=expression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../src/browser/workflow/expression.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export * from './types.js';
2
- export * from './store.js';
3
- export * from './engine.js';
4
- export * from './expression.js';
5
- export * from './builtin-handlers.js';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/browser/workflow/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
@@ -1,6 +0,0 @@
1
- export * from './types.js';
2
- export * from './store.js';
3
- export * from './engine.js';
4
- export * from './expression.js';
5
- export * from './builtin-handlers.js';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/workflow/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { WorkflowDef, RunRecord } from './types.js';
2
- import type { ActionDef } from '../action-builder/types.js';
3
- export declare function clearRunStore(): void;
4
- export declare function readWorkflow(filePath: string): Promise<WorkflowDef>;
5
- export declare function readAction(filePath: string): Promise<ActionDef>;
6
- export declare function writeRunRecord(record: RunRecord): Promise<void>;
7
- export declare function listRuns(workflowId?: string): Promise<RunRecord[]>;
8
- //# sourceMappingURL=store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/browser/workflow/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAe5D,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBzE;AAoBD,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAerE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,wBAAsB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAGxE"}
@@ -1,87 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- // TODO: Upgrade to better-sqlite3 for persistence across process restarts.
3
- // Schema:
4
- // CREATE TABLE browse_runs (
5
- // id TEXT PRIMARY KEY, workflow_id TEXT, workflow_name TEXT,
6
- // status TEXT, started_at INTEGER, completed_at INTEGER,
7
- // items_processed INTEGER, items_total INTEGER, error TEXT
8
- // );
9
- // CREATE TABLE browse_sessions (
10
- // id TEXT PRIMARY KEY, platform TEXT, username TEXT,
11
- // cookies TEXT, user_agent TEXT, created_at INTEGER, last_used_at INTEGER
12
- // );
13
- const runStore = new Map();
14
- export function clearRunStore() {
15
- runStore.clear();
16
- }
17
- export async function readWorkflow(filePath) {
18
- let raw;
19
- try {
20
- raw = await readFile(filePath, 'utf-8');
21
- }
22
- catch {
23
- throw new Error(`Workflow file not found: ${filePath}`);
24
- }
25
- let def;
26
- try {
27
- def = JSON.parse(raw);
28
- }
29
- catch {
30
- throw new Error(`Invalid JSON in workflow file: ${filePath}`);
31
- }
32
- if (!isWorkflowDef(def)) {
33
- const w = def;
34
- if (typeof w?.['id'] !== 'string')
35
- throw new Error('Workflow missing required field: id');
36
- if (typeof w?.['name'] !== 'string')
37
- throw new Error('Workflow missing required field: name');
38
- if (!Array.isArray(w?.['nodes']))
39
- throw new Error('Workflow missing required field: nodes');
40
- throw new Error('Workflow missing required field: connections');
41
- }
42
- return def;
43
- }
44
- function validateAction(def) {
45
- if (typeof def !== 'object' || def === null)
46
- throw new Error('Action must be a JSON object');
47
- const a = def;
48
- if (typeof a['id'] !== 'string')
49
- throw new Error('Action missing required field: id');
50
- if (!Array.isArray(a['steps']))
51
- throw new Error('Action missing required field: steps');
52
- }
53
- function isWorkflowDef(def) {
54
- if (typeof def !== 'object' || def === null)
55
- return false;
56
- const w = def;
57
- return (typeof w['id'] === 'string' &&
58
- typeof w['name'] === 'string' &&
59
- Array.isArray(w['nodes']) &&
60
- Array.isArray(w['connections']));
61
- }
62
- export async function readAction(filePath) {
63
- let raw;
64
- try {
65
- raw = await readFile(filePath, 'utf-8');
66
- }
67
- catch {
68
- throw new Error(`Action file not found: ${filePath}`);
69
- }
70
- let def;
71
- try {
72
- def = JSON.parse(raw);
73
- }
74
- catch {
75
- throw new Error(`Invalid JSON in action file: ${filePath}`);
76
- }
77
- validateAction(def);
78
- return def;
79
- }
80
- export async function writeRunRecord(record) {
81
- runStore.set(record.id, { ...record });
82
- }
83
- export async function listRuns(workflowId) {
84
- const all = [...runStore.values()];
85
- return workflowId ? all.filter(r => r.workflowId === workflowId) : all;
86
- }
87
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/browser/workflow/store.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- export interface WorkflowDef {
2
- id: string;
3
- name: string;
4
- description?: string;
5
- params?: Record<string, {
6
- type?: string;
7
- required?: boolean;
8
- default?: unknown;
9
- description?: string;
10
- }>;
11
- nodes: NodeDef[];
12
- connections: ConnectionDef[];
13
- /** Allow $env.* expressions to access env vars that match the secret denylist. Use with caution. */
14
- allowEnvAccess?: boolean;
15
- }
16
- export interface NodeDef {
17
- id: string;
18
- type: string;
19
- name?: string;
20
- config: Record<string, unknown>;
21
- onError?: 'skip' | 'stop';
22
- timeoutMs?: number;
23
- }
24
- export interface ConnectionDef {
25
- from: string;
26
- to: string;
27
- handle?: string;
28
- }
29
- export interface Item {
30
- data: Record<string, unknown>;
31
- binaryBase64?: string;
32
- }
33
- export type RunStatus = 'running' | 'completed' | 'failed' | 'stopped';
34
- export interface RunRecord {
35
- id: string;
36
- workflowId: string;
37
- workflowName: string;
38
- status: RunStatus;
39
- startedAt: number;
40
- completedAt?: number;
41
- itemsProcessed: number;
42
- itemsTotal: number;
43
- error?: string;
44
- }
45
- export interface StepEvent {
46
- runId: string;
47
- workflowId: string;
48
- workflowName: string;
49
- nodeId: string;
50
- nodeName: string;
51
- eventType: 'run_started' | 'step_started' | 'step_completed' | 'step_failed' | 'run_completed' | 'run_stopped';
52
- itemIndex?: number;
53
- itemTotal?: number;
54
- durationMs?: number;
55
- error?: string;
56
- timestamp: number;
57
- /** Absolute path of the project directory that emitted this event.
58
- * Clients may subscribe to a specific project by passing `?dir=<path>`.
59
- * Events without a projectDir are delivered to all clients (backward-compatible). */
60
- projectDir?: string;
61
- }
62
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/browser/workflow/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxG,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,oGAAoG;IACpG,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC;IAC/G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB;;0FAEsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/browser/workflow/types.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createPlaybookCommand(): Command;
3
- //# sourceMappingURL=playbook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playbook.d.ts","sourceRoot":"","sources":["../../../src/cli/playbook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,IAAI,OAAO,CA6Q/C"}
@@ -1,265 +0,0 @@
1
- // src/commands/browse-playbook.ts
2
- import { Command } from 'commander';
3
- import { readdir, writeFile, mkdir } from 'node:fs/promises';
4
- import { existsSync } from 'node:fs';
5
- import { join, resolve } from 'node:path';
6
- import { readPlaybook, listPlaybookRuns, writePlaybookRun, runPlaybook } from '@monoes/monoplaybook';
7
- import { createDefaultHandlers } from '../index.js';
8
- import { startDashboard } from '../index.js';
9
- export function createPlaybookCommand() {
10
- const cmd = new Command('playbook')
11
- .alias('workflow')
12
- .description('Manage browser playbooks (saved automation recipes)');
13
- cmd
14
- .command('create <name>')
15
- .description('Scaffold a new playbook JSON file')
16
- .option('--template <type>', 'Starter template: minimal | http | google-sheets | gmail | github | gemini-image', 'minimal')
17
- .action(async (name, opts) => {
18
- const dir = join(process.cwd(), '.monomind', 'playbooks');
19
- await mkdir(dir, { recursive: true });
20
- const file = join(dir, `${name}.json`);
21
- if (existsSync(file)) {
22
- console.error(`Playbook already exists: ${file}`);
23
- process.exit(1);
24
- }
25
- const humanName = name.replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
26
- let def;
27
- switch (opts.template) {
28
- case 'http':
29
- def = {
30
- id: name, name: humanName,
31
- description: 'Fetch data from an HTTP endpoint and save to file',
32
- nodes: [
33
- { id: 'trigger', type: 'trigger.manual', name: 'Start', config: { items: [{ data: { url: 'https://api.example.com/data' } }] } },
34
- { id: 'fetch', type: 'action.http', name: 'Fetch Data', config: { url: '{{$json.url}}', method: 'GET' }, onError: 'skip' },
35
- { id: 'log', type: 'action.log', name: 'Log Result', config: { label: 'result' } },
36
- { id: 'save', type: 'action.save_file', name: 'Save JSON', config: { path: `./output/${name}-result.json` } },
37
- ],
38
- connections: [{ from: 'trigger', to: 'fetch' }, { from: 'fetch', to: 'log' }, { from: 'log', to: 'save' }],
39
- };
40
- break;
41
- case 'google-sheets': {
42
- const accessRef = '{{params.access_token}}';
43
- def = {
44
- id: name, name: humanName,
45
- description: 'Read rows from Google Sheets and process them',
46
- params: {
47
- spreadsheet_id: { required: true, description: 'Google Sheets ID from URL' },
48
- range: { default: 'Sheet1', description: 'Cell range e.g. Sheet1!A:Z' },
49
- access_token: { required: true, description: 'OAuth2 access token for Google Sheets API' },
50
- },
51
- nodes: [
52
- { id: 'trigger', type: 'trigger.manual', name: 'Start', config: {} },
53
- { id: 'read', type: 'service.google_sheets', name: 'Read Sheet', config: { operation: 'read_rows', spreadsheet_id: '{{params.spreadsheet_id}}', range: '{{params.range}}', access_token: accessRef } },
54
- { id: 'log', type: 'action.log', name: 'Log Rows', config: { label: 'row' } },
55
- ],
56
- connections: [{ from: 'trigger', to: 'read' }, { from: 'read', to: 'log' }],
57
- };
58
- break;
59
- }
60
- case 'gmail': {
61
- const gmailAccessRef = '{{params.access_token}}';
62
- def = {
63
- id: name, name: humanName,
64
- description: 'Send emails via Gmail API',
65
- params: {
66
- to: { required: true, description: 'Recipient email address' },
67
- subject: { required: true, description: 'Email subject line' },
68
- body: { required: true, description: 'Email body text' },
69
- access_token: { required: true, description: 'OAuth2 access token for Gmail API' },
70
- },
71
- nodes: [
72
- { id: 'trigger', type: 'trigger.manual', name: 'Start', config: { items: [{ data: {} }] } },
73
- { id: 'send', type: 'service.gmail', name: 'Send Email', config: { operation: 'send_message', to: '{{params.to}}', subject: '{{params.subject}}', body: '{{params.body}}', access_token: gmailAccessRef } },
74
- { id: 'log', type: 'action.log', name: 'Log Result', config: { label: 'sent' } },
75
- ],
76
- connections: [{ from: 'trigger', to: 'send' }, { from: 'send', to: 'log' }],
77
- };
78
- break;
79
- }
80
- case 'github': {
81
- const ghTokenRef = '{{params.gh_token}}';
82
- def = {
83
- id: name, name: humanName,
84
- description: 'List GitHub issues and process them',
85
- params: {
86
- owner: { required: true, description: 'GitHub repo owner (user or org)' },
87
- repo: { required: true, description: 'GitHub repo name' },
88
- gh_token: { required: true, description: 'GitHub personal access token' },
89
- state: { default: 'open', description: 'Issue state: open | closed | all' },
90
- },
91
- nodes: [
92
- { id: 'trigger', type: 'trigger.manual', name: 'Start', config: { items: [{ data: {} }] } },
93
- { id: 'issues', type: 'service.github', name: 'List Issues', config: { operation: 'list_issues', owner: '{{params.owner}}', repo: '{{params.repo}}', token: ghTokenRef, state: '{{params.state}}' } },
94
- { id: 'log', type: 'action.log', name: 'Log Issues', config: { label: 'issue' } },
95
- ],
96
- connections: [{ from: 'trigger', to: 'issues' }, { from: 'issues', to: 'log' }],
97
- };
98
- break;
99
- }
100
- case 'gemini-image':
101
- def = {
102
- id: name, name: humanName,
103
- description: 'Generate images using Gemini via browser or API',
104
- params: { prompt: { required: true, description: 'Image generation prompt' } },
105
- nodes: [
106
- { id: 'trigger', type: 'trigger.manual', name: 'Start', config: { items: [{ data: {} }] } },
107
- { id: 'generate', type: 'action.gemini_image', name: 'Generate Image', config: { prompt: '{{params.prompt}}', outputPath: `./output/${name}.png` }, onError: 'skip' },
108
- { id: 'log', type: 'action.log', name: 'Log Result', config: { label: 'generated' } },
109
- ],
110
- connections: [{ from: 'trigger', to: 'generate' }, { from: 'generate', to: 'log' }],
111
- };
112
- break;
113
- default: // minimal
114
- def = {
115
- id: name, name: humanName,
116
- description: 'New playbook',
117
- nodes: [
118
- { id: 'trigger', type: 'trigger.manual', name: 'Start', config: { items: [{ data: { message: 'hello' } }] } },
119
- { id: 'log', type: 'action.log', name: 'Log', config: { label: name } },
120
- ],
121
- connections: [{ from: 'trigger', to: 'log' }],
122
- };
123
- }
124
- await writeFile(file, JSON.stringify(def, null, 2));
125
- console.log(`Created: ${file}`);
126
- console.log(`Template: ${opts.template}`);
127
- if (def.params) {
128
- console.log(`Params: ${Object.entries(def.params).map(([k, v]) => `${k}${v.required ? ' (required)' : ''}`).join(', ')}`);
129
- }
130
- console.log(`Run with: npx monomind browse playbook run ${file}`);
131
- });
132
- cmd
133
- .command('run <file>')
134
- .description('Execute a playbook and open the dashboard')
135
- .option('--port <number>', 'Dashboard port (default: MONOBROWSE_DASHBOARD_PORT or 4242)', '4242')
136
- .option('--no-keep', 'Exit immediately after run instead of keeping dashboard alive')
137
- .option('--params <pairs...>', 'Playbook params as key=value pairs e.g. --params name=Alice count=5')
138
- .option('--timeout <seconds>', 'Max run time in seconds (default: 900)', '900')
139
- .action(async (file, opts) => {
140
- const filePath = resolve(file);
141
- let def;
142
- try {
143
- def = await readPlaybook(filePath);
144
- }
145
- catch (err) {
146
- console.error(`Failed to load playbook: ${err instanceof Error ? err.message : String(err)}`);
147
- process.exit(1);
148
- }
149
- // Parse --params key=value pairs
150
- const params = {};
151
- for (const pair of opts.params ?? []) {
152
- const eq = pair.indexOf('=');
153
- if (eq > 0)
154
- params[pair.slice(0, eq)] = pair.slice(eq + 1);
155
- }
156
- // Validate required params
157
- if (def.params) {
158
- for (const [key, spec] of Object.entries(def.params)) {
159
- if (spec.required && !(key in params) && spec.default === undefined) {
160
- console.error(`Missing required playbook param: ${key}${spec.description ? ` (${spec.description})` : ''}`);
161
- process.exit(1);
162
- }
163
- // Apply defaults
164
- if (!(key in params) && spec.default !== undefined) {
165
- params[key] = String(spec.default);
166
- }
167
- }
168
- }
169
- const port = parseInt(process.env['MONOBROWSE_DASHBOARD_PORT'] ?? opts.port, 10);
170
- const dashboard = startDashboard(port);
171
- console.log(`Dashboard: http://localhost:${dashboard.port}`);
172
- console.log(`Running: ${def.name}`);
173
- if (Object.keys(params).length > 0) {
174
- console.log(`Params: ${JSON.stringify(params)}`);
175
- }
176
- const timeoutMs = parseInt(opts.timeout, 10) * 1000;
177
- // Resolve the project directory once so every event carries the same canonical tag.
178
- const projectDir = process.cwd();
179
- const record = await runPlaybook(def, {
180
- handlers: createDefaultHandlers(),
181
- onEvent: event => {
182
- dashboard.broadcast({ ...event, projectDir });
183
- if (event.eventType === 'step_completed' || event.eventType === 'step_failed') {
184
- const status = event.eventType === 'step_completed' ? '✓' : '✗';
185
- console.log(` ${status} ${event.nodeName}${event.durationMs ? ` (${event.durationMs}ms)` : ''}`);
186
- }
187
- },
188
- signal: AbortSignal.timeout(timeoutMs),
189
- params,
190
- isStopRequested: (id) => dashboard.isStopRequested(id),
191
- });
192
- dashboard.addRunRecord(record);
193
- await writePlaybookRun(record);
194
- console.log(`\nCompleted: ${record.status} — ${record.itemsProcessed} items`);
195
- if (record.error)
196
- console.error(`Error: ${record.error}`);
197
- if (opts.keep !== false) {
198
- console.log(`\nDashboard kept alive at http://localhost:${dashboard.port} — press Ctrl+C to exit`);
199
- process.on('SIGINT', () => { dashboard.close(); process.exit(0); });
200
- process.on('SIGTERM', () => { dashboard.close(); process.exit(0); });
201
- }
202
- else {
203
- process.exit(record.status === 'completed' ? 0 : 1);
204
- }
205
- });
206
- cmd
207
- .command('list')
208
- .description('List available playbooks and their last run status')
209
- .action(async () => {
210
- const dir = join(process.cwd(), '.monomind', 'playbooks');
211
- if (!existsSync(dir)) {
212
- console.log('No playbooks found. Create one with: browse playbook create <name>');
213
- return;
214
- }
215
- const files = (await readdir(dir)).filter(f => f.endsWith('.json'));
216
- if (files.length === 0) {
217
- console.log('No playbooks found.');
218
- return;
219
- }
220
- const runs = await listPlaybookRuns();
221
- for (const file of files) {
222
- const id = file.replace('.json', '');
223
- const lastRun = runs.find(r => r.playbookId === id);
224
- const status = lastRun ? `[${lastRun.status}]` : '[never run]';
225
- console.log(` ${id} ${status}`);
226
- }
227
- });
228
- cmd
229
- .command('status <run-id>')
230
- .description('Check the status of a specific run')
231
- .action(async (runId) => {
232
- const runs = await listPlaybookRuns();
233
- const run = runs.find(r => r.id === runId);
234
- if (!run) {
235
- console.error(`Run not found: ${runId}`);
236
- process.exit(1);
237
- }
238
- console.log(JSON.stringify(run, null, 2));
239
- });
240
- cmd
241
- .command('stop <run-id>')
242
- .description('Request cancellation of a running playbook via dashboard')
243
- .option('--port <number>', 'Dashboard port (default: MONOBROWSE_DASHBOARD_PORT or 4242)', '4242')
244
- .action(async (runId, opts) => {
245
- const port = parseInt(process.env['MONOBROWSE_DASHBOARD_PORT'] ?? opts.port, 10);
246
- // Try to signal via HTTP POST to the dashboard server
247
- try {
248
- const res = await fetch(`http://127.0.0.1:${port}/stop/${runId}`, { method: 'POST' });
249
- if (res.ok) {
250
- console.log(`Stop requested for run: ${runId}`);
251
- console.log(`Dashboard: http://localhost:${port}`);
252
- }
253
- else {
254
- console.error(`Dashboard returned ${res.status}. Is a playbook running on port ${port}?`);
255
- }
256
- }
257
- catch {
258
- console.error(`Could not reach dashboard on port ${port}. Make sure the playbook is running.`);
259
- console.error(`You can also use the Stop button in the dashboard: http://localhost:${port}`);
260
- process.exit(1);
261
- }
262
- });
263
- return cmd;
264
- }
265
- //# sourceMappingURL=playbook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playbook.js","sourceRoot":"","sources":["../../../src/cli/playbook.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { createPlaybookCommand as createWorkflowCommand } from './playbook.js';
2
- //# sourceMappingURL=workflow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/cli/workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,IAAI,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,3 +0,0 @@
1
- // Backward-compatibility shim — canonical module is now playbook.ts
2
- export { createPlaybookCommand as createWorkflowCommand } from './playbook.js';
3
- //# sourceMappingURL=workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/cli/workflow.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,qBAAqB,IAAI,qBAAqB,EAAE,MAAM,eAAe,CAAC"}