mister-wolf 1.0.0 → 1.0.3

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 (256) hide show
  1. package/README.md +96 -103
  2. package/README.ru.md +213 -0
  3. package/dist/bootstrap/cli.js +0 -0
  4. package/dist/domain/npx.d.ts +3 -1
  5. package/dist/domain/npx.d.ts.map +1 -1
  6. package/dist/domain/npx.js +4 -2
  7. package/dist/domain/npx.js.map +1 -1
  8. package/package.json +10 -2
  9. package/dist/agent/registry.d.ts +0 -14
  10. package/dist/agent/registry.d.ts.map +0 -1
  11. package/dist/agent/registry.js +0 -42
  12. package/dist/agent/registry.js.map +0 -1
  13. package/dist/agent/router.d.ts +0 -10
  14. package/dist/agent/router.d.ts.map +0 -1
  15. package/dist/agent/router.js +0 -21
  16. package/dist/agent/router.js.map +0 -1
  17. package/dist/agent/runner.d.ts +0 -24
  18. package/dist/agent/runner.d.ts.map +0 -1
  19. package/dist/agent/runner.js +0 -388
  20. package/dist/agent/runner.js.map +0 -1
  21. package/dist/cli/commands/agents.d.ts +0 -3
  22. package/dist/cli/commands/agents.d.ts.map +0 -1
  23. package/dist/cli/commands/agents.js +0 -65
  24. package/dist/cli/commands/agents.js.map +0 -1
  25. package/dist/cli/commands/cases.d.ts +0 -3
  26. package/dist/cli/commands/cases.d.ts.map +0 -1
  27. package/dist/cli/commands/cases.js +0 -143
  28. package/dist/cli/commands/cases.js.map +0 -1
  29. package/dist/cli/commands/context.d.ts +0 -3
  30. package/dist/cli/commands/context.d.ts.map +0 -1
  31. package/dist/cli/commands/context.js +0 -161
  32. package/dist/cli/commands/context.js.map +0 -1
  33. package/dist/cli/commands/events.d.ts +0 -3
  34. package/dist/cli/commands/events.d.ts.map +0 -1
  35. package/dist/cli/commands/events.js +0 -37
  36. package/dist/cli/commands/events.js.map +0 -1
  37. package/dist/cli/commands/gates.d.ts +0 -5
  38. package/dist/cli/commands/gates.d.ts.map +0 -1
  39. package/dist/cli/commands/gates.js +0 -94
  40. package/dist/cli/commands/gates.js.map +0 -1
  41. package/dist/cli/commands/policy.d.ts +0 -3
  42. package/dist/cli/commands/policy.d.ts.map +0 -1
  43. package/dist/cli/commands/policy.js +0 -35
  44. package/dist/cli/commands/policy.js.map +0 -1
  45. package/dist/cli/commands/resume.d.ts +0 -3
  46. package/dist/cli/commands/resume.d.ts.map +0 -1
  47. package/dist/cli/commands/resume.js +0 -59
  48. package/dist/cli/commands/resume.js.map +0 -1
  49. package/dist/cli/commands/run.d.ts +0 -3
  50. package/dist/cli/commands/run.d.ts.map +0 -1
  51. package/dist/cli/commands/run.js +0 -97
  52. package/dist/cli/commands/run.js.map +0 -1
  53. package/dist/cli/commands/validate.d.ts +0 -3
  54. package/dist/cli/commands/validate.d.ts.map +0 -1
  55. package/dist/cli/commands/validate.js +0 -28
  56. package/dist/cli/commands/validate.js.map +0 -1
  57. package/dist/cli/commands/wac.d.ts +0 -8
  58. package/dist/cli/commands/wac.d.ts.map +0 -1
  59. package/dist/cli/commands/wac.js +0 -161
  60. package/dist/cli/commands/wac.js.map +0 -1
  61. package/dist/cli/index.d.ts +0 -3
  62. package/dist/cli/index.d.ts.map +0 -1
  63. package/dist/cli/index.js +0 -34
  64. package/dist/cli/index.js.map +0 -1
  65. package/dist/config/loader.d.ts +0 -3
  66. package/dist/config/loader.d.ts.map +0 -1
  67. package/dist/config/loader.js +0 -12
  68. package/dist/config/loader.js.map +0 -1
  69. package/dist/config/project-config.d.ts +0 -857
  70. package/dist/config/project-config.d.ts.map +0 -1
  71. package/dist/config/project-config.js +0 -129
  72. package/dist/config/project-config.js.map +0 -1
  73. package/dist/config/schema.d.ts +0 -2
  74. package/dist/config/schema.d.ts.map +0 -1
  75. package/dist/config/schema.js +0 -2
  76. package/dist/config/schema.js.map +0 -1
  77. package/dist/config/validator.d.ts +0 -6
  78. package/dist/config/validator.d.ts.map +0 -1
  79. package/dist/config/validator.js +0 -58
  80. package/dist/config/validator.js.map +0 -1
  81. package/dist/context/bundle-builder.d.ts +0 -7
  82. package/dist/context/bundle-builder.d.ts.map +0 -1
  83. package/dist/context/bundle-builder.js +0 -25
  84. package/dist/context/bundle-builder.js.map +0 -1
  85. package/dist/context/case-memory.d.ts +0 -11
  86. package/dist/context/case-memory.d.ts.map +0 -1
  87. package/dist/context/case-memory.js +0 -131
  88. package/dist/context/case-memory.js.map +0 -1
  89. package/dist/context/md-generator.d.ts +0 -6
  90. package/dist/context/md-generator.d.ts.map +0 -1
  91. package/dist/context/md-generator.js +0 -136
  92. package/dist/context/md-generator.js.map +0 -1
  93. package/dist/context/resolver.d.ts +0 -18
  94. package/dist/context/resolver.d.ts.map +0 -1
  95. package/dist/context/resolver.js +0 -86
  96. package/dist/context/resolver.js.map +0 -1
  97. package/dist/context/scanner.d.ts +0 -10
  98. package/dist/context/scanner.d.ts.map +0 -1
  99. package/dist/context/scanner.js +0 -197
  100. package/dist/context/scanner.js.map +0 -1
  101. package/dist/kernel/event-bus.d.ts +0 -13
  102. package/dist/kernel/event-bus.d.ts.map +0 -1
  103. package/dist/kernel/event-bus.js +0 -18
  104. package/dist/kernel/event-bus.js.map +0 -1
  105. package/dist/model/errors.d.ts +0 -22
  106. package/dist/model/errors.d.ts.map +0 -1
  107. package/dist/model/errors.js +0 -36
  108. package/dist/model/errors.js.map +0 -1
  109. package/dist/model/mock-provider.d.ts +0 -8
  110. package/dist/model/mock-provider.d.ts.map +0 -1
  111. package/dist/model/mock-provider.js +0 -59
  112. package/dist/model/mock-provider.js.map +0 -1
  113. package/dist/model/openai-provider.d.ts +0 -9
  114. package/dist/model/openai-provider.d.ts.map +0 -1
  115. package/dist/model/openai-provider.js +0 -201
  116. package/dist/model/openai-provider.js.map +0 -1
  117. package/dist/model/registry.d.ts +0 -9
  118. package/dist/model/registry.d.ts.map +0 -1
  119. package/dist/model/registry.js +0 -23
  120. package/dist/model/registry.js.map +0 -1
  121. package/dist/model/stream-types.d.ts +0 -16
  122. package/dist/model/stream-types.d.ts.map +0 -1
  123. package/dist/model/stream-types.js +0 -2
  124. package/dist/model/stream-types.js.map +0 -1
  125. package/dist/model/types.d.ts +0 -50
  126. package/dist/model/types.d.ts.map +0 -1
  127. package/dist/model/types.js +0 -2
  128. package/dist/model/types.js.map +0 -1
  129. package/dist/policy/engine.d.ts +0 -12
  130. package/dist/policy/engine.d.ts.map +0 -1
  131. package/dist/policy/engine.js +0 -130
  132. package/dist/policy/engine.js.map +0 -1
  133. package/dist/policy/gate-adapter.d.ts +0 -9
  134. package/dist/policy/gate-adapter.d.ts.map +0 -1
  135. package/dist/policy/gate-adapter.js +0 -22
  136. package/dist/policy/gate-adapter.js.map +0 -1
  137. package/dist/policy/preflight.d.ts +0 -8
  138. package/dist/policy/preflight.d.ts.map +0 -1
  139. package/dist/policy/preflight.js +0 -19
  140. package/dist/policy/preflight.js.map +0 -1
  141. package/dist/policy/step-guard.d.ts +0 -8
  142. package/dist/policy/step-guard.d.ts.map +0 -1
  143. package/dist/policy/step-guard.js +0 -8
  144. package/dist/policy/step-guard.js.map +0 -1
  145. package/dist/state/case-store.d.ts +0 -19
  146. package/dist/state/case-store.d.ts.map +0 -1
  147. package/dist/state/case-store.js +0 -105
  148. package/dist/state/case-store.js.map +0 -1
  149. package/dist/state/file-store.d.ts +0 -15
  150. package/dist/state/file-store.d.ts.map +0 -1
  151. package/dist/state/file-store.js +0 -55
  152. package/dist/state/file-store.js.map +0 -1
  153. package/dist/state/gate-store.d.ts +0 -18
  154. package/dist/state/gate-store.d.ts.map +0 -1
  155. package/dist/state/gate-store.js +0 -91
  156. package/dist/state/gate-store.js.map +0 -1
  157. package/dist/state/sqlite-index.d.ts +0 -35
  158. package/dist/state/sqlite-index.d.ts.map +0 -1
  159. package/dist/state/sqlite-index.js +0 -69
  160. package/dist/state/sqlite-index.js.map +0 -1
  161. package/dist/state/store.d.ts +0 -11
  162. package/dist/state/store.d.ts.map +0 -1
  163. package/dist/state/store.js +0 -2
  164. package/dist/state/store.js.map +0 -1
  165. package/dist/tool/errors.d.ts +0 -25
  166. package/dist/tool/errors.d.ts.map +0 -1
  167. package/dist/tool/errors.js +0 -41
  168. package/dist/tool/errors.js.map +0 -1
  169. package/dist/tool/executors/context-read.d.ts +0 -6
  170. package/dist/tool/executors/context-read.d.ts.map +0 -1
  171. package/dist/tool/executors/context-read.js +0 -39
  172. package/dist/tool/executors/context-read.js.map +0 -1
  173. package/dist/tool/registry.d.ts +0 -13
  174. package/dist/tool/registry.d.ts.map +0 -1
  175. package/dist/tool/registry.js +0 -49
  176. package/dist/tool/registry.js.map +0 -1
  177. package/dist/tool/types.d.ts +0 -46
  178. package/dist/tool/types.d.ts.map +0 -1
  179. package/dist/tool/types.js +0 -10
  180. package/dist/tool/types.js.map +0 -1
  181. package/dist/types/agent.d.ts +0 -98
  182. package/dist/types/agent.d.ts.map +0 -1
  183. package/dist/types/agent.js +0 -35
  184. package/dist/types/agent.js.map +0 -1
  185. package/dist/types/case.d.ts +0 -32
  186. package/dist/types/case.d.ts.map +0 -1
  187. package/dist/types/case.js +0 -11
  188. package/dist/types/case.js.map +0 -1
  189. package/dist/types/context.d.ts +0 -613
  190. package/dist/types/context.d.ts.map +0 -1
  191. package/dist/types/context.js +0 -60
  192. package/dist/types/context.js.map +0 -1
  193. package/dist/types/events.d.ts +0 -63
  194. package/dist/types/events.d.ts.map +0 -1
  195. package/dist/types/events.js +0 -26
  196. package/dist/types/events.js.map +0 -1
  197. package/dist/types/policy.d.ts +0 -225
  198. package/dist/types/policy.d.ts.map +0 -1
  199. package/dist/types/policy.js +0 -43
  200. package/dist/types/policy.js.map +0 -1
  201. package/dist/types/runner.d.ts +0 -18
  202. package/dist/types/runner.d.ts.map +0 -1
  203. package/dist/types/runner.js +0 -2
  204. package/dist/types/runner.js.map +0 -1
  205. package/dist/types/state.d.ts +0 -316
  206. package/dist/types/state.d.ts.map +0 -1
  207. package/dist/types/state.js +0 -42
  208. package/dist/types/state.js.map +0 -1
  209. package/dist/types/workflow.d.ts +0 -379
  210. package/dist/types/workflow.d.ts.map +0 -1
  211. package/dist/types/workflow.js +0 -51
  212. package/dist/types/workflow.js.map +0 -1
  213. package/dist/wac/context.d.ts +0 -4
  214. package/dist/wac/context.d.ts.map +0 -1
  215. package/dist/wac/context.js +0 -67
  216. package/dist/wac/context.js.map +0 -1
  217. package/dist/wac/llm.d.ts +0 -2
  218. package/dist/wac/llm.d.ts.map +0 -1
  219. package/dist/wac/llm.js +0 -69
  220. package/dist/wac/llm.js.map +0 -1
  221. package/dist/wac/store.d.ts +0 -25
  222. package/dist/wac/store.d.ts.map +0 -1
  223. package/dist/wac/store.js +0 -124
  224. package/dist/wac/store.js.map +0 -1
  225. package/dist/workflow/conditions.d.ts +0 -3
  226. package/dist/workflow/conditions.d.ts.map +0 -1
  227. package/dist/workflow/conditions.js +0 -18
  228. package/dist/workflow/conditions.js.map +0 -1
  229. package/dist/workflow/engine.d.ts +0 -47
  230. package/dist/workflow/engine.d.ts.map +0 -1
  231. package/dist/workflow/engine.js +0 -611
  232. package/dist/workflow/engine.js.map +0 -1
  233. package/dist/workflow/graph.d.ts +0 -13
  234. package/dist/workflow/graph.d.ts.map +0 -1
  235. package/dist/workflow/graph.js +0 -82
  236. package/dist/workflow/graph.js.map +0 -1
  237. package/dist/workflow/runner-registry.d.ts +0 -8
  238. package/dist/workflow/runner-registry.d.ts.map +0 -1
  239. package/dist/workflow/runner-registry.js +0 -17
  240. package/dist/workflow/runner-registry.js.map +0 -1
  241. package/dist/workflow/runners/echo.d.ts +0 -8
  242. package/dist/workflow/runners/echo.d.ts.map +0 -1
  243. package/dist/workflow/runners/echo.js +0 -11
  244. package/dist/workflow/runners/echo.js.map +0 -1
  245. package/dist/workflow/runners/manual-gate.d.ts +0 -8
  246. package/dist/workflow/runners/manual-gate.d.ts.map +0 -1
  247. package/dist/workflow/runners/manual-gate.js +0 -25
  248. package/dist/workflow/runners/manual-gate.js.map +0 -1
  249. package/dist/workflow/runners/shell.d.ts +0 -8
  250. package/dist/workflow/runners/shell.d.ts.map +0 -1
  251. package/dist/workflow/runners/shell.js +0 -156
  252. package/dist/workflow/runners/shell.js.map +0 -1
  253. package/dist/workflow/template.d.ts +0 -3
  254. package/dist/workflow/template.d.ts.map +0 -1
  255. package/dist/workflow/template.js +0 -25
  256. package/dist/workflow/template.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/workflow/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,CAiBxE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,gBAAgB,CAqC5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAYhG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBxF"}
@@ -1,82 +0,0 @@
1
- export function buildGraph(workflow) {
2
- const nodes = new Set(workflow.steps.map((s) => s.id));
3
- const edges = new Map();
4
- const dependents = new Map();
5
- for (const step of workflow.steps) {
6
- edges.set(step.id, step.depends_on || []);
7
- for (const dep of step.depends_on || []) {
8
- const existing = dependents.get(dep) || [];
9
- existing.push(step.id);
10
- dependents.set(dep, existing);
11
- }
12
- }
13
- const roots = workflow.steps.filter((s) => !s.depends_on?.length).map((s) => s.id);
14
- return { nodes, edges, dependents, roots };
15
- }
16
- export function validateGraph(workflow) {
17
- const stepIds = new Set(workflow.steps.map((s) => s.id));
18
- const errors = [];
19
- for (const step of workflow.steps) {
20
- for (const depId of step.depends_on || []) {
21
- if (!stepIds.has(depId)) {
22
- errors.push(`Step ${step.id} depends_on unknown step: ${depId}`);
23
- }
24
- }
25
- }
26
- const graph = buildGraph(workflow);
27
- const visited = new Set();
28
- const recStack = new Set();
29
- function hasCycle(node) {
30
- visited.add(node);
31
- recStack.add(node);
32
- for (const dep of graph.edges.get(node) || []) {
33
- if (!visited.has(dep) && hasCycle(dep))
34
- return true;
35
- if (recStack.has(dep))
36
- return true;
37
- }
38
- recStack.delete(node);
39
- return false;
40
- }
41
- for (const stepId of graph.nodes) {
42
- if (!visited.has(stepId) && hasCycle(stepId)) {
43
- errors.push(`Circular dependency detected involving: ${stepId}`);
44
- }
45
- }
46
- if (errors.length > 0) {
47
- return { success: false, errors };
48
- }
49
- return { success: true };
50
- }
51
- export function getReadySteps(graph, statuses) {
52
- const ready = [];
53
- for (const stepId of graph.nodes) {
54
- const status = statuses[stepId];
55
- if (status && status !== 'pending')
56
- continue;
57
- const deps = graph.edges.get(stepId) || [];
58
- const allDepsSuccess = deps.every((depId) => statuses[depId] === 'success');
59
- if (allDepsSuccess) {
60
- ready.push(stepId);
61
- }
62
- }
63
- return ready;
64
- }
65
- export function getTransitiveDependents(graph, stepId) {
66
- const result = [];
67
- const visited = new Set();
68
- const queue = [stepId];
69
- while (queue.length > 0) {
70
- const current = queue.shift();
71
- const deps = graph.dependents.get(current) || [];
72
- for (const dep of deps) {
73
- if (!visited.has(dep)) {
74
- visited.add(dep);
75
- result.push(dep);
76
- queue.push(dep);
77
- }
78
- }
79
- }
80
- return result;
81
- }
82
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/workflow/graph.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { StepRunner } from '../types/runner.js';
2
- export declare class RunnerRegistry {
3
- private runners;
4
- register(runner: StepRunner): void;
5
- get(type: string): StepRunner;
6
- list(): string[];
7
- }
8
- //# sourceMappingURL=runner-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-registry.d.ts","sourceRoot":"","sources":["../../src/workflow/runner-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAiC;IAEhD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAQ7B,IAAI,IAAI,MAAM,EAAE;CAGjB"}
@@ -1,17 +0,0 @@
1
- export class RunnerRegistry {
2
- runners = new Map();
3
- register(runner) {
4
- this.runners.set(runner.type, runner);
5
- }
6
- get(type) {
7
- const runner = this.runners.get(type);
8
- if (!runner) {
9
- throw new Error(`Unknown runner: ${type}`);
10
- }
11
- return runner;
12
- }
13
- list() {
14
- return Array.from(this.runners.keys());
15
- }
16
- }
17
- //# sourceMappingURL=runner-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-registry.js","sourceRoot":"","sources":["../../src/workflow/runner-registry.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACjB,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEhD,QAAQ,CAAC,MAAkB;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,8 +0,0 @@
1
- import { StepRunner, ExecutionContext } from '../../types/runner.js';
2
- import { StepDefinition } from '../../types/workflow.js';
3
- import { StepResult } from '../../types/state.js';
4
- export declare class EchoRunner implements StepRunner {
5
- type: string;
6
- run(step: StepDefinition, _ctx: ExecutionContext): Promise<StepResult>;
7
- }
8
- //# sourceMappingURL=echo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/workflow/runners/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,UAAW,YAAW,UAAU;IAC3C,IAAI,SAAU;IAER,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;CAO7E"}
@@ -1,11 +0,0 @@
1
- export class EchoRunner {
2
- type = 'echo';
3
- async run(step, _ctx) {
4
- const message = step.input?.message || '';
5
- return {
6
- status: 'success',
7
- output: message,
8
- };
9
- }
10
- }
11
- //# sourceMappingURL=echo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../../src/workflow/runners/echo.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,UAAU;IACrB,IAAI,GAAG,MAAM,CAAC;IAEd,KAAK,CAAC,GAAG,CAAC,IAAoB,EAAE,IAAsB;QACpD,MAAM,OAAO,GAAI,IAAI,CAAC,KAAK,EAAE,OAAkB,IAAI,EAAE,CAAC;QACtD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,OAAO;SAChB,CAAC;IACJ,CAAC;CACF"}
@@ -1,8 +0,0 @@
1
- import { StepRunner, ExecutionContext } from '../../types/runner.js';
2
- import { StepDefinition } from '../../types/workflow.js';
3
- import { StepResult } from '../../types/state.js';
4
- export declare class ManualGateRunner implements StepRunner {
5
- type: string;
6
- run(step: StepDefinition, ctx: ExecutionContext): Promise<StepResult>;
7
- }
8
- //# sourceMappingURL=manual-gate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual-gate.d.ts","sourceRoot":"","sources":["../../../src/workflow/runners/manual-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,gBAAiB,YAAW,UAAU;IACjD,IAAI,SAAiB;IAEf,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;CAwB5E"}
@@ -1,25 +0,0 @@
1
- export class ManualGateRunner {
2
- type = 'manual_gate';
3
- async run(step, ctx) {
4
- const gateId = `gate_${ctx.case_id}_${step.id}`;
5
- const gate = ctx.gates?.[gateId];
6
- if (gate?.status === 'approved') {
7
- return { status: 'success', output: step.input?.message };
8
- }
9
- if (gate?.status === 'rejected') {
10
- return {
11
- status: 'failure',
12
- error: {
13
- type: 'GateRejected',
14
- message: 'Gate rejected by user',
15
- retryable: false,
16
- },
17
- };
18
- }
19
- return {
20
- status: 'gated',
21
- output: step.input?.message || 'Approval required',
22
- };
23
- }
24
- }
25
- //# sourceMappingURL=manual-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual-gate.js","sourceRoot":"","sources":["../../../src/workflow/runners/manual-gate.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG,aAAa,CAAC;IAErB,KAAK,CAAC,GAAG,CAAC,IAAoB,EAAE,GAAqB;QACnD,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,uBAAuB;oBAChC,SAAS,EAAE,KAAK;iBACjB;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO;YACf,MAAM,EAAG,IAAI,CAAC,KAAK,EAAE,OAAkB,IAAI,mBAAmB;SAC/D,CAAC;IACJ,CAAC;CACF"}
@@ -1,8 +0,0 @@
1
- import { StepRunner, ExecutionContext } from '../../types/runner.js';
2
- import { StepDefinition } from '../../types/workflow.js';
3
- import { StepResult } from '../../types/state.js';
4
- export declare class ShellRunner implements StepRunner {
5
- type: string;
6
- run(step: StepDefinition, ctx: ExecutionContext): Promise<StepResult>;
7
- }
8
- //# sourceMappingURL=shell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/workflow/runners/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAoDlD,qBAAa,WAAY,YAAW,UAAU;IAC5C,IAAI,SAAW;IAET,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;CAkH5E"}
@@ -1,156 +0,0 @@
1
- import { spawn } from 'child_process';
2
- const DEFAULT_BLOCKED_COMMANDS = ['sudo', 'su', 'ssh', 'vim', 'nano', 'less', 'more', 'top', 'watch'];
3
- const DEFAULT_MAX_OUTPUT_SIZE = 1024 * 1024;
4
- const DEFAULT_TIMEOUT = 30000;
5
- const MAX_TIMEOUT = 300000;
6
- function parseSize(input) {
7
- const trimmed = input.trim().toLowerCase();
8
- if (trimmed.endsWith('mb')) {
9
- const value = parseInt(trimmed.slice(0, -2), 10);
10
- return isNaN(value) ? DEFAULT_MAX_OUTPUT_SIZE : value * 1024 * 1024;
11
- }
12
- if (trimmed.endsWith('kb')) {
13
- const value = parseInt(trimmed.slice(0, -2), 10);
14
- return isNaN(value) ? DEFAULT_MAX_OUTPUT_SIZE : value * 1024;
15
- }
16
- const value = parseInt(trimmed, 10);
17
- return isNaN(value) ? DEFAULT_MAX_OUTPUT_SIZE : value;
18
- }
19
- function parseTimeout(input) {
20
- if (typeof input !== 'string') {
21
- return DEFAULT_TIMEOUT;
22
- }
23
- const trimmed = input.trim();
24
- if (trimmed.endsWith('m')) {
25
- const minutes = parseInt(trimmed.slice(0, -1), 10);
26
- if (!isNaN(minutes)) {
27
- return Math.min(minutes * 60 * 1000, MAX_TIMEOUT);
28
- }
29
- }
30
- if (trimmed.endsWith('s')) {
31
- const seconds = parseInt(trimmed.slice(0, -1), 10);
32
- if (!isNaN(seconds)) {
33
- return Math.min(seconds * 1000, MAX_TIMEOUT);
34
- }
35
- }
36
- const ms = parseInt(trimmed, 10);
37
- if (!isNaN(ms)) {
38
- return Math.min(ms, MAX_TIMEOUT);
39
- }
40
- return DEFAULT_TIMEOUT;
41
- }
42
- function isBlocked(command, blockedCommands) {
43
- const trimmed = command.trim();
44
- const firstWord = trimmed.split(/\s+/)[0];
45
- return blockedCommands.includes(firstWord);
46
- }
47
- export class ShellRunner {
48
- type = 'shell';
49
- async run(step, ctx) {
50
- const command = step.input?.command || '';
51
- const blockedCommands = ctx.config.defaults?.shell?.blocked_commands ?? DEFAULT_BLOCKED_COMMANDS;
52
- const maxOutputSize = parseSize(ctx.config.defaults?.shell?.max_output_size ?? '1MB');
53
- if (!command) {
54
- return {
55
- status: 'failure',
56
- error: {
57
- type: 'shell_error',
58
- message: 'No command provided',
59
- retryable: false,
60
- },
61
- };
62
- }
63
- if (isBlocked(command, blockedCommands)) {
64
- return {
65
- status: 'failure',
66
- error: {
67
- type: 'shell_error',
68
- message: `Command blocked for security: ${command.split(/\s+/)[0]}`,
69
- retryable: false,
70
- },
71
- };
72
- }
73
- const timeout = ctx.timeoutMs ?? parseTimeout(step.input?.timeout);
74
- return new Promise((resolve) => {
75
- const child = spawn(command, {
76
- shell: true,
77
- stdio: ['ignore', 'pipe', 'pipe'],
78
- detached: true,
79
- });
80
- let stdout = Buffer.alloc(0);
81
- let stderr = Buffer.alloc(0);
82
- let timedOut = false;
83
- const timeoutId = setTimeout(() => {
84
- timedOut = true;
85
- // Kill the entire process group to ensure all subprocesses terminate.
86
- // detached: true creates a new process group; -pid targets the group.
87
- try {
88
- process.kill(-child.pid, 'SIGKILL');
89
- }
90
- catch {
91
- child.kill('SIGKILL');
92
- }
93
- }, timeout);
94
- child.stdout?.on('data', (data) => {
95
- if (stdout.length + data.length > maxOutputSize) {
96
- stdout = Buffer.concat([stdout, data]).subarray(0, maxOutputSize);
97
- }
98
- else {
99
- stdout = Buffer.concat([stdout, data]);
100
- }
101
- });
102
- child.stderr?.on('data', (data) => {
103
- if (stderr.length + data.length > maxOutputSize) {
104
- stderr = Buffer.concat([stderr, data]).subarray(0, maxOutputSize);
105
- }
106
- else {
107
- stderr = Buffer.concat([stderr, data]);
108
- }
109
- });
110
- child.on('error', (err) => {
111
- clearTimeout(timeoutId);
112
- resolve({
113
- status: 'failure',
114
- error: {
115
- type: 'shell_error',
116
- message: err.message,
117
- retryable: false,
118
- details: { stderr: stderr.toString() },
119
- },
120
- });
121
- });
122
- child.on('close', (code) => {
123
- clearTimeout(timeoutId);
124
- if (timedOut) {
125
- resolve({
126
- status: 'failure',
127
- error: {
128
- type: 'TimeoutError',
129
- message: `Command timed out after ${timeout}ms`,
130
- retryable: true,
131
- details: { stderr: stderr.toString() },
132
- },
133
- });
134
- return;
135
- }
136
- if (code !== 0) {
137
- resolve({
138
- status: 'failure',
139
- error: {
140
- type: 'shell_error',
141
- message: `Command exited with code ${code}`,
142
- retryable: false,
143
- details: { stderr: stderr.toString() },
144
- },
145
- });
146
- return;
147
- }
148
- resolve({
149
- status: 'success',
150
- output: stdout.toString(),
151
- });
152
- });
153
- });
154
- }
155
- }
156
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/workflow/runners/shell.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function interpolateTemplate(template: string, variables: Record<string, unknown>): string;
2
- export declare function interpolateObject(input: unknown, variables: Record<string, unknown>): unknown;
3
- //# sourceMappingURL=template.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/workflow/template.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAOhG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAe7F"}
@@ -1,25 +0,0 @@
1
- export function interpolateTemplate(template, variables) {
2
- return template.replace(/\{\{\s*variables\.(\w+)\s*\}\}/g, (_match, varName) => {
3
- if (!(varName in variables)) {
4
- throw new Error(`Missing variable: ${varName}`);
5
- }
6
- return String(variables[varName]);
7
- });
8
- }
9
- export function interpolateObject(input, variables) {
10
- if (typeof input === 'string') {
11
- return interpolateTemplate(input, variables);
12
- }
13
- if (Array.isArray(input)) {
14
- return input.map((item) => interpolateObject(item, variables));
15
- }
16
- if (input !== null && typeof input === 'object') {
17
- const result = {};
18
- for (const [key, value] of Object.entries(input)) {
19
- result[key] = interpolateObject(value, variables);
20
- }
21
- return result;
22
- }
23
- return input;
24
- }
25
- //# sourceMappingURL=template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/workflow/template.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,SAAkC;IACtF,OAAO,QAAQ,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC7E,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,SAAkC;IAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}