@nexagent-cli/cli 0.8.1 → 0.8.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 (58) hide show
  1. package/dist/commands/sophie.d.ts +2 -0
  2. package/dist/commands/sophie.d.ts.map +1 -1
  3. package/dist/commands/sophie.js +122 -1
  4. package/dist/commands/sophie.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +27 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/runtime/workflow.d.ts +14 -0
  9. package/dist/runtime/workflow.d.ts.map +1 -1
  10. package/dist/runtime/workflow.js.map +1 -1
  11. package/dist/workflows/contracts/index.d.ts +4 -0
  12. package/dist/workflows/contracts/index.d.ts.map +1 -0
  13. package/dist/workflows/contracts/index.js +4 -0
  14. package/dist/workflows/contracts/index.js.map +1 -0
  15. package/dist/workflows/contracts/workflow-export.d.ts +22 -0
  16. package/dist/workflows/contracts/workflow-export.d.ts.map +1 -0
  17. package/dist/workflows/contracts/workflow-export.js +99 -0
  18. package/dist/workflows/contracts/workflow-export.js.map +1 -0
  19. package/dist/workflows/contracts/workflow-formatters.d.ts +8 -0
  20. package/dist/workflows/contracts/workflow-formatters.d.ts.map +1 -0
  21. package/dist/workflows/contracts/workflow-formatters.js +50 -0
  22. package/dist/workflows/contracts/workflow-formatters.js.map +1 -0
  23. package/dist/workflows/contracts/workflow-result-schema.d.ts +27 -0
  24. package/dist/workflows/contracts/workflow-result-schema.d.ts.map +1 -0
  25. package/dist/workflows/contracts/workflow-result-schema.js +56 -0
  26. package/dist/workflows/contracts/workflow-result-schema.js.map +1 -0
  27. package/dist/workflows/sophie/inspect.d.ts.map +1 -1
  28. package/dist/workflows/sophie/inspect.js +31 -2
  29. package/dist/workflows/sophie/inspect.js.map +1 -1
  30. package/dist/workflows/tools/index.d.ts +8 -0
  31. package/dist/workflows/tools/index.d.ts.map +1 -0
  32. package/dist/workflows/tools/index.js +9 -0
  33. package/dist/workflows/tools/index.js.map +1 -0
  34. package/dist/workflows/tools/workflow-tool-registry.d.ts +25 -0
  35. package/dist/workflows/tools/workflow-tool-registry.d.ts.map +1 -0
  36. package/dist/workflows/tools/workflow-tool-registry.js +126 -0
  37. package/dist/workflows/tools/workflow-tool-registry.js.map +1 -0
  38. package/dist/workflows/tools/workflow-tool-request.d.ts +12 -0
  39. package/dist/workflows/tools/workflow-tool-request.d.ts.map +1 -0
  40. package/dist/workflows/tools/workflow-tool-request.js +28 -0
  41. package/dist/workflows/tools/workflow-tool-request.js.map +1 -0
  42. package/dist/workflows/tools/workflow-tool-result.d.ts +23 -0
  43. package/dist/workflows/tools/workflow-tool-result.d.ts.map +1 -0
  44. package/dist/workflows/tools/workflow-tool-result.js +61 -0
  45. package/dist/workflows/tools/workflow-tool-result.js.map +1 -0
  46. package/dist/workflows/tools/workflow-tool-risk.d.ts +14 -0
  47. package/dist/workflows/tools/workflow-tool-risk.d.ts.map +1 -0
  48. package/dist/workflows/tools/workflow-tool-risk.js +36 -0
  49. package/dist/workflows/tools/workflow-tool-risk.js.map +1 -0
  50. package/dist/workflows/tools/workflow-tool-runner.d.ts +19 -0
  51. package/dist/workflows/tools/workflow-tool-runner.d.ts.map +1 -0
  52. package/dist/workflows/tools/workflow-tool-runner.js +81 -0
  53. package/dist/workflows/tools/workflow-tool-runner.js.map +1 -0
  54. package/dist/workflows/tools/workflow-tool-types.d.ts +30 -0
  55. package/dist/workflows/tools/workflow-tool-types.d.ts.map +1 -0
  56. package/dist/workflows/tools/workflow-tool-types.js +5 -0
  57. package/dist/workflows/tools/workflow-tool-types.js.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,81 @@
1
+ // ============================================================
2
+ // Workflow tool runner — execution engine
3
+ // ============================================================
4
+ import { isRiskAllowed } from './workflow-tool-risk.js';
5
+ /**
6
+ * Execute a single tool request against the registry.
7
+ * Respects dry-run mode and maxRisk gating.
8
+ */
9
+ export async function runToolRequest(request, registry, opts) {
10
+ const start = Date.now();
11
+ const maxRisk = opts.maxRisk ?? 'read';
12
+ // Unknown tool
13
+ if (!registry.has(request.tool)) {
14
+ return {
15
+ requestId: request.id,
16
+ tool: request.tool,
17
+ status: 'blocked',
18
+ error: 'Unknown tool',
19
+ durationMs: Date.now() - start,
20
+ risk: request.risk,
21
+ };
22
+ }
23
+ // Risk exceeds allowed maximum
24
+ if (!isRiskAllowed(request.risk, maxRisk)) {
25
+ return {
26
+ requestId: request.id,
27
+ tool: request.tool,
28
+ status: 'blocked',
29
+ error: `Risk ${request.risk} exceeds max allowed ${maxRisk}`,
30
+ durationMs: Date.now() - start,
31
+ risk: request.risk,
32
+ };
33
+ }
34
+ // Dry-run: skip execution but report what would run
35
+ if (opts.dryRun) {
36
+ return {
37
+ requestId: request.id,
38
+ tool: request.tool,
39
+ status: 'skipped',
40
+ output: `[dry-run] Would execute ${request.tool} with input ${JSON.stringify(request.input)}`,
41
+ durationMs: Date.now() - start,
42
+ risk: request.risk,
43
+ };
44
+ }
45
+ // Execute
46
+ const entry = registry.get(request.tool);
47
+ try {
48
+ const result = await entry.execute(request.input, { workspaceDir: opts.workspaceDir });
49
+ return {
50
+ requestId: request.id,
51
+ tool: request.tool,
52
+ status: 'success',
53
+ output: result,
54
+ durationMs: Date.now() - start,
55
+ risk: request.risk,
56
+ };
57
+ }
58
+ catch (err) {
59
+ const message = err instanceof Error ? err.message : String(err);
60
+ return {
61
+ requestId: request.id,
62
+ tool: request.tool,
63
+ status: 'failed',
64
+ error: message,
65
+ durationMs: Date.now() - start,
66
+ risk: request.risk,
67
+ };
68
+ }
69
+ }
70
+ /**
71
+ * Run a batch of tool requests sequentially.
72
+ */
73
+ export async function runToolBatch(requests, registry, opts) {
74
+ const results = [];
75
+ for (const request of requests) {
76
+ const result = await runToolRequest(request, registry, opts);
77
+ results.push(result);
78
+ }
79
+ return results;
80
+ }
81
+ //# sourceMappingURL=workflow-tool-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-tool-runner.js","sourceRoot":"","sources":["../../../src/workflows/tools/workflow-tool-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /** Risk level for a workflow tool operation */
2
+ export type WorkflowToolRisk = 'read' | 'write' | 'execute' | 'network';
3
+ /** Request to execute a workflow tool */
4
+ export interface WorkflowToolRequest {
5
+ id: string;
6
+ tool: string;
7
+ reason: string;
8
+ risk: WorkflowToolRisk;
9
+ input: Record<string, unknown>;
10
+ requiresApproval: boolean;
11
+ }
12
+ /** Result of executing a workflow tool */
13
+ export interface WorkflowToolResult {
14
+ requestId: string;
15
+ tool: string;
16
+ status: 'success' | 'skipped' | 'blocked' | 'failed';
17
+ output?: unknown;
18
+ error?: string;
19
+ durationMs: number;
20
+ risk: WorkflowToolRisk;
21
+ }
22
+ /** Capability metadata for a registered workflow tool */
23
+ export interface WorkflowToolCapability {
24
+ name: string;
25
+ risk: WorkflowToolRisk;
26
+ description: string;
27
+ enabled: boolean;
28
+ requiresApproval: boolean;
29
+ }
30
+ //# sourceMappingURL=workflow-tool-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-tool-types.d.ts","sourceRoot":"","sources":["../../../src/workflows/tools/workflow-tool-types.ts"],"names":[],"mappings":"AAIA,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,yCAAyC;AACzC,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,5 @@
1
+ // ============================================================
2
+ // Workflow tool type definitions
3
+ // ============================================================
4
+ export {};
5
+ //# sourceMappingURL=workflow-tool-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-tool-types.js","sourceRoot":"","sources":["../../../src/workflows/tools/workflow-tool-types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexagent-cli/cli",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "NexAgent — locally-runnable AI agent CLI with file editing, tools, and beautiful TUI",
5
5
  "bin": {
6
6
  "nexagent": "dist/bin/nexagent.js",