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.
- package/README.md +96 -103
- package/README.ru.md +213 -0
- package/dist/bootstrap/cli.js +0 -0
- package/dist/domain/npx.d.ts +3 -1
- package/dist/domain/npx.d.ts.map +1 -1
- package/dist/domain/npx.js +4 -2
- package/dist/domain/npx.js.map +1 -1
- package/package.json +10 -2
- package/dist/agent/registry.d.ts +0 -14
- package/dist/agent/registry.d.ts.map +0 -1
- package/dist/agent/registry.js +0 -42
- package/dist/agent/registry.js.map +0 -1
- package/dist/agent/router.d.ts +0 -10
- package/dist/agent/router.d.ts.map +0 -1
- package/dist/agent/router.js +0 -21
- package/dist/agent/router.js.map +0 -1
- package/dist/agent/runner.d.ts +0 -24
- package/dist/agent/runner.d.ts.map +0 -1
- package/dist/agent/runner.js +0 -388
- package/dist/agent/runner.js.map +0 -1
- package/dist/cli/commands/agents.d.ts +0 -3
- package/dist/cli/commands/agents.d.ts.map +0 -1
- package/dist/cli/commands/agents.js +0 -65
- package/dist/cli/commands/agents.js.map +0 -1
- package/dist/cli/commands/cases.d.ts +0 -3
- package/dist/cli/commands/cases.d.ts.map +0 -1
- package/dist/cli/commands/cases.js +0 -143
- package/dist/cli/commands/cases.js.map +0 -1
- package/dist/cli/commands/context.d.ts +0 -3
- package/dist/cli/commands/context.d.ts.map +0 -1
- package/dist/cli/commands/context.js +0 -161
- package/dist/cli/commands/context.js.map +0 -1
- package/dist/cli/commands/events.d.ts +0 -3
- package/dist/cli/commands/events.d.ts.map +0 -1
- package/dist/cli/commands/events.js +0 -37
- package/dist/cli/commands/events.js.map +0 -1
- package/dist/cli/commands/gates.d.ts +0 -5
- package/dist/cli/commands/gates.d.ts.map +0 -1
- package/dist/cli/commands/gates.js +0 -94
- package/dist/cli/commands/gates.js.map +0 -1
- package/dist/cli/commands/policy.d.ts +0 -3
- package/dist/cli/commands/policy.d.ts.map +0 -1
- package/dist/cli/commands/policy.js +0 -35
- package/dist/cli/commands/policy.js.map +0 -1
- package/dist/cli/commands/resume.d.ts +0 -3
- package/dist/cli/commands/resume.d.ts.map +0 -1
- package/dist/cli/commands/resume.js +0 -59
- package/dist/cli/commands/resume.js.map +0 -1
- package/dist/cli/commands/run.d.ts +0 -3
- package/dist/cli/commands/run.d.ts.map +0 -1
- package/dist/cli/commands/run.js +0 -97
- package/dist/cli/commands/run.js.map +0 -1
- package/dist/cli/commands/validate.d.ts +0 -3
- package/dist/cli/commands/validate.d.ts.map +0 -1
- package/dist/cli/commands/validate.js +0 -28
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/commands/wac.d.ts +0 -8
- package/dist/cli/commands/wac.d.ts.map +0 -1
- package/dist/cli/commands/wac.js +0 -161
- package/dist/cli/commands/wac.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -34
- package/dist/cli/index.js.map +0 -1
- package/dist/config/loader.d.ts +0 -3
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -12
- package/dist/config/loader.js.map +0 -1
- package/dist/config/project-config.d.ts +0 -857
- package/dist/config/project-config.d.ts.map +0 -1
- package/dist/config/project-config.js +0 -129
- package/dist/config/project-config.js.map +0 -1
- package/dist/config/schema.d.ts +0 -2
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -2
- package/dist/config/schema.js.map +0 -1
- package/dist/config/validator.d.ts +0 -6
- package/dist/config/validator.d.ts.map +0 -1
- package/dist/config/validator.js +0 -58
- package/dist/config/validator.js.map +0 -1
- package/dist/context/bundle-builder.d.ts +0 -7
- package/dist/context/bundle-builder.d.ts.map +0 -1
- package/dist/context/bundle-builder.js +0 -25
- package/dist/context/bundle-builder.js.map +0 -1
- package/dist/context/case-memory.d.ts +0 -11
- package/dist/context/case-memory.d.ts.map +0 -1
- package/dist/context/case-memory.js +0 -131
- package/dist/context/case-memory.js.map +0 -1
- package/dist/context/md-generator.d.ts +0 -6
- package/dist/context/md-generator.d.ts.map +0 -1
- package/dist/context/md-generator.js +0 -136
- package/dist/context/md-generator.js.map +0 -1
- package/dist/context/resolver.d.ts +0 -18
- package/dist/context/resolver.d.ts.map +0 -1
- package/dist/context/resolver.js +0 -86
- package/dist/context/resolver.js.map +0 -1
- package/dist/context/scanner.d.ts +0 -10
- package/dist/context/scanner.d.ts.map +0 -1
- package/dist/context/scanner.js +0 -197
- package/dist/context/scanner.js.map +0 -1
- package/dist/kernel/event-bus.d.ts +0 -13
- package/dist/kernel/event-bus.d.ts.map +0 -1
- package/dist/kernel/event-bus.js +0 -18
- package/dist/kernel/event-bus.js.map +0 -1
- package/dist/model/errors.d.ts +0 -22
- package/dist/model/errors.d.ts.map +0 -1
- package/dist/model/errors.js +0 -36
- package/dist/model/errors.js.map +0 -1
- package/dist/model/mock-provider.d.ts +0 -8
- package/dist/model/mock-provider.d.ts.map +0 -1
- package/dist/model/mock-provider.js +0 -59
- package/dist/model/mock-provider.js.map +0 -1
- package/dist/model/openai-provider.d.ts +0 -9
- package/dist/model/openai-provider.d.ts.map +0 -1
- package/dist/model/openai-provider.js +0 -201
- package/dist/model/openai-provider.js.map +0 -1
- package/dist/model/registry.d.ts +0 -9
- package/dist/model/registry.d.ts.map +0 -1
- package/dist/model/registry.js +0 -23
- package/dist/model/registry.js.map +0 -1
- package/dist/model/stream-types.d.ts +0 -16
- package/dist/model/stream-types.d.ts.map +0 -1
- package/dist/model/stream-types.js +0 -2
- package/dist/model/stream-types.js.map +0 -1
- package/dist/model/types.d.ts +0 -50
- package/dist/model/types.d.ts.map +0 -1
- package/dist/model/types.js +0 -2
- package/dist/model/types.js.map +0 -1
- package/dist/policy/engine.d.ts +0 -12
- package/dist/policy/engine.d.ts.map +0 -1
- package/dist/policy/engine.js +0 -130
- package/dist/policy/engine.js.map +0 -1
- package/dist/policy/gate-adapter.d.ts +0 -9
- package/dist/policy/gate-adapter.d.ts.map +0 -1
- package/dist/policy/gate-adapter.js +0 -22
- package/dist/policy/gate-adapter.js.map +0 -1
- package/dist/policy/preflight.d.ts +0 -8
- package/dist/policy/preflight.d.ts.map +0 -1
- package/dist/policy/preflight.js +0 -19
- package/dist/policy/preflight.js.map +0 -1
- package/dist/policy/step-guard.d.ts +0 -8
- package/dist/policy/step-guard.d.ts.map +0 -1
- package/dist/policy/step-guard.js +0 -8
- package/dist/policy/step-guard.js.map +0 -1
- package/dist/state/case-store.d.ts +0 -19
- package/dist/state/case-store.d.ts.map +0 -1
- package/dist/state/case-store.js +0 -105
- package/dist/state/case-store.js.map +0 -1
- package/dist/state/file-store.d.ts +0 -15
- package/dist/state/file-store.d.ts.map +0 -1
- package/dist/state/file-store.js +0 -55
- package/dist/state/file-store.js.map +0 -1
- package/dist/state/gate-store.d.ts +0 -18
- package/dist/state/gate-store.d.ts.map +0 -1
- package/dist/state/gate-store.js +0 -91
- package/dist/state/gate-store.js.map +0 -1
- package/dist/state/sqlite-index.d.ts +0 -35
- package/dist/state/sqlite-index.d.ts.map +0 -1
- package/dist/state/sqlite-index.js +0 -69
- package/dist/state/sqlite-index.js.map +0 -1
- package/dist/state/store.d.ts +0 -11
- package/dist/state/store.d.ts.map +0 -1
- package/dist/state/store.js +0 -2
- package/dist/state/store.js.map +0 -1
- package/dist/tool/errors.d.ts +0 -25
- package/dist/tool/errors.d.ts.map +0 -1
- package/dist/tool/errors.js +0 -41
- package/dist/tool/errors.js.map +0 -1
- package/dist/tool/executors/context-read.d.ts +0 -6
- package/dist/tool/executors/context-read.d.ts.map +0 -1
- package/dist/tool/executors/context-read.js +0 -39
- package/dist/tool/executors/context-read.js.map +0 -1
- package/dist/tool/registry.d.ts +0 -13
- package/dist/tool/registry.d.ts.map +0 -1
- package/dist/tool/registry.js +0 -49
- package/dist/tool/registry.js.map +0 -1
- package/dist/tool/types.d.ts +0 -46
- package/dist/tool/types.d.ts.map +0 -1
- package/dist/tool/types.js +0 -10
- package/dist/tool/types.js.map +0 -1
- package/dist/types/agent.d.ts +0 -98
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js +0 -35
- package/dist/types/agent.js.map +0 -1
- package/dist/types/case.d.ts +0 -32
- package/dist/types/case.d.ts.map +0 -1
- package/dist/types/case.js +0 -11
- package/dist/types/case.js.map +0 -1
- package/dist/types/context.d.ts +0 -613
- package/dist/types/context.d.ts.map +0 -1
- package/dist/types/context.js +0 -60
- package/dist/types/context.js.map +0 -1
- package/dist/types/events.d.ts +0 -63
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -26
- package/dist/types/events.js.map +0 -1
- package/dist/types/policy.d.ts +0 -225
- package/dist/types/policy.d.ts.map +0 -1
- package/dist/types/policy.js +0 -43
- package/dist/types/policy.js.map +0 -1
- package/dist/types/runner.d.ts +0 -18
- package/dist/types/runner.d.ts.map +0 -1
- package/dist/types/runner.js +0 -2
- package/dist/types/runner.js.map +0 -1
- package/dist/types/state.d.ts +0 -316
- package/dist/types/state.d.ts.map +0 -1
- package/dist/types/state.js +0 -42
- package/dist/types/state.js.map +0 -1
- package/dist/types/workflow.d.ts +0 -379
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/types/workflow.js +0 -51
- package/dist/types/workflow.js.map +0 -1
- package/dist/wac/context.d.ts +0 -4
- package/dist/wac/context.d.ts.map +0 -1
- package/dist/wac/context.js +0 -67
- package/dist/wac/context.js.map +0 -1
- package/dist/wac/llm.d.ts +0 -2
- package/dist/wac/llm.d.ts.map +0 -1
- package/dist/wac/llm.js +0 -69
- package/dist/wac/llm.js.map +0 -1
- package/dist/wac/store.d.ts +0 -25
- package/dist/wac/store.d.ts.map +0 -1
- package/dist/wac/store.js +0 -124
- package/dist/wac/store.js.map +0 -1
- package/dist/workflow/conditions.d.ts +0 -3
- package/dist/workflow/conditions.d.ts.map +0 -1
- package/dist/workflow/conditions.js +0 -18
- package/dist/workflow/conditions.js.map +0 -1
- package/dist/workflow/engine.d.ts +0 -47
- package/dist/workflow/engine.d.ts.map +0 -1
- package/dist/workflow/engine.js +0 -611
- package/dist/workflow/engine.js.map +0 -1
- package/dist/workflow/graph.d.ts +0 -13
- package/dist/workflow/graph.d.ts.map +0 -1
- package/dist/workflow/graph.js +0 -82
- package/dist/workflow/graph.js.map +0 -1
- package/dist/workflow/runner-registry.d.ts +0 -8
- package/dist/workflow/runner-registry.d.ts.map +0 -1
- package/dist/workflow/runner-registry.js +0 -17
- package/dist/workflow/runner-registry.js.map +0 -1
- package/dist/workflow/runners/echo.d.ts +0 -8
- package/dist/workflow/runners/echo.d.ts.map +0 -1
- package/dist/workflow/runners/echo.js +0 -11
- package/dist/workflow/runners/echo.js.map +0 -1
- package/dist/workflow/runners/manual-gate.d.ts +0 -8
- package/dist/workflow/runners/manual-gate.d.ts.map +0 -1
- package/dist/workflow/runners/manual-gate.js +0 -25
- package/dist/workflow/runners/manual-gate.js.map +0 -1
- package/dist/workflow/runners/shell.d.ts +0 -8
- package/dist/workflow/runners/shell.d.ts.map +0 -1
- package/dist/workflow/runners/shell.js +0 -156
- package/dist/workflow/runners/shell.js.map +0 -1
- package/dist/workflow/template.d.ts +0 -3
- package/dist/workflow/template.d.ts.map +0 -1
- package/dist/workflow/template.js +0 -25
- 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"}
|
package/dist/workflow/graph.js
DELETED
|
@@ -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 +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 +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 +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"}
|