@dexto/tools-process 1.5.8 → 1.6.0

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 (55) hide show
  1. package/dist/bash-exec-tool.cjs +23 -10
  2. package/dist/bash-exec-tool.d.cts +25 -4
  3. package/dist/bash-exec-tool.d.ts +27 -9
  4. package/dist/bash-exec-tool.d.ts.map +1 -0
  5. package/dist/bash-exec-tool.js +26 -10
  6. package/dist/bash-output-tool.cjs +8 -5
  7. package/dist/bash-output-tool.d.cts +12 -3
  8. package/dist/bash-output-tool.d.ts +13 -8
  9. package/dist/bash-output-tool.d.ts.map +1 -0
  10. package/dist/bash-output-tool.js +8 -5
  11. package/dist/command-pattern-utils.cjs +83 -0
  12. package/dist/command-pattern-utils.d.cts +30 -0
  13. package/dist/command-pattern-utils.d.ts +29 -0
  14. package/dist/command-pattern-utils.d.ts.map +1 -0
  15. package/dist/command-pattern-utils.js +56 -0
  16. package/dist/command-pattern-utils.test.cjs +80 -0
  17. package/dist/command-pattern-utils.test.d.cts +2 -0
  18. package/dist/command-pattern-utils.test.d.ts +2 -0
  19. package/dist/command-pattern-utils.test.d.ts.map +1 -0
  20. package/dist/command-pattern-utils.test.js +83 -0
  21. package/dist/command-validator.d.cts +2 -2
  22. package/dist/command-validator.d.ts +5 -8
  23. package/dist/command-validator.d.ts.map +1 -0
  24. package/dist/error-codes.d.ts +2 -3
  25. package/dist/error-codes.d.ts.map +1 -0
  26. package/dist/errors.d.ts +4 -7
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/index.cjs +3 -3
  29. package/dist/index.d.cts +3 -1
  30. package/dist/index.d.ts +9 -4
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +2 -2
  33. package/dist/kill-process-tool.cjs +8 -5
  34. package/dist/kill-process-tool.d.cts +12 -3
  35. package/dist/kill-process-tool.d.ts +13 -8
  36. package/dist/kill-process-tool.d.ts.map +1 -0
  37. package/dist/kill-process-tool.js +8 -5
  38. package/dist/process-service.cjs +11 -1
  39. package/dist/process-service.d.cts +9 -5
  40. package/dist/process-service.d.ts +12 -11
  41. package/dist/process-service.d.ts.map +1 -0
  42. package/dist/process-service.js +11 -1
  43. package/dist/{tool-provider.cjs → tool-factory-config.cjs} +6 -48
  44. package/dist/{tool-provider.d.cts → tool-factory-config.d.cts} +4 -20
  45. package/dist/{tool-provider.d.ts → tool-factory-config.d.ts} +8 -27
  46. package/dist/tool-factory-config.d.ts.map +1 -0
  47. package/dist/{tool-provider.js → tool-factory-config.js} +2 -44
  48. package/dist/tool-factory.cjs +77 -0
  49. package/dist/tool-factory.d.cts +7 -0
  50. package/dist/tool-factory.d.ts +4 -0
  51. package/dist/tool-factory.d.ts.map +1 -0
  52. package/dist/tool-factory.js +53 -0
  53. package/dist/types.d.ts +9 -10
  54. package/dist/types.d.ts.map +1 -0
  55. package/package.json +4 -3
@@ -15,7 +15,7 @@ class ProcessService {
15
15
  /**
16
16
  * Create a new ProcessService with validated configuration.
17
17
  *
18
- * @param config - Fully-validated configuration from provider schema.
18
+ * @param config - Fully-validated configuration from the factory schema.
19
19
  * All required fields have values, defaults already applied.
20
20
  * @param logger - Logger instance for this service
21
21
  */
@@ -471,6 +471,16 @@ Process terminated by signal ${signal ?? "UNKNOWN"}`;
471
471
  getConfig() {
472
472
  return { ...this.config };
473
473
  }
474
+ /**
475
+ * Update the working directory at runtime (e.g., when workspace changes).
476
+ */
477
+ setWorkingDirectory(workingDirectory) {
478
+ const normalized = workingDirectory?.trim();
479
+ if (!normalized) return;
480
+ if (this.config.workingDirectory === normalized) return;
481
+ this.config = { ...this.config, workingDirectory: normalized };
482
+ this.logger.info(`ProcessService working directory set to ${normalized}`);
483
+ }
474
484
  /**
475
485
  * Resolve and confine cwd to the configured working directory
476
486
  */
@@ -16,16 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var tool_provider_exports = {};
20
- __export(tool_provider_exports, {
21
- processToolsProvider: () => processToolsProvider
19
+ var tool_factory_config_exports = {};
20
+ __export(tool_factory_config_exports, {
21
+ ProcessToolsConfigSchema: () => ProcessToolsConfigSchema
22
22
  });
23
- module.exports = __toCommonJS(tool_provider_exports);
23
+ module.exports = __toCommonJS(tool_factory_config_exports);
24
24
  var import_zod = require("zod");
25
- var import_process_service = require("./process-service.js");
26
- var import_bash_exec_tool = require("./bash-exec-tool.js");
27
- var import_bash_output_tool = require("./bash-output-tool.js");
28
- var import_kill_process_tool = require("./kill-process-tool.js");
29
25
  const DEFAULT_SECURITY_LEVEL = "moderate";
30
26
  const DEFAULT_MAX_TIMEOUT = 6e5;
31
27
  const DEFAULT_MAX_CONCURRENT_PROCESSES = 5;
@@ -50,47 +46,9 @@ const ProcessToolsConfigSchema = import_zod.z.object({
50
46
  "Explicitly allowed commands (empty = all allowed with approval, strict mode only)"
51
47
  ),
52
48
  blockedCommands: import_zod.z.array(import_zod.z.string()).default(DEFAULT_BLOCKED_COMMANDS).describe("Blocked command patterns (applies to all security levels)"),
53
- environment: import_zod.z.record(import_zod.z.string()).default(DEFAULT_ENVIRONMENT).describe("Custom environment variables to set for command execution"),
54
- timeout: import_zod.z.number().int().positive().max(DEFAULT_MAX_TIMEOUT).optional().describe(
55
- `Default timeout in milliseconds (max: ${DEFAULT_MAX_TIMEOUT / 1e3 / 60} minutes)`
56
- )
49
+ environment: import_zod.z.record(import_zod.z.string()).default(DEFAULT_ENVIRONMENT).describe("Custom environment variables to set for command execution")
57
50
  }).strict();
58
- const processToolsProvider = {
59
- type: "process-tools",
60
- configSchema: ProcessToolsConfigSchema,
61
- create: (config, context) => {
62
- const { logger } = context;
63
- logger.debug("Creating ProcessService for process tools");
64
- const processService = new import_process_service.ProcessService(
65
- {
66
- securityLevel: config.securityLevel,
67
- maxTimeout: config.maxTimeout,
68
- maxConcurrentProcesses: config.maxConcurrentProcesses,
69
- maxOutputBuffer: config.maxOutputBuffer,
70
- workingDirectory: config.workingDirectory || process.cwd(),
71
- allowedCommands: config.allowedCommands,
72
- blockedCommands: config.blockedCommands,
73
- environment: config.environment
74
- },
75
- logger
76
- );
77
- processService.initialize().catch((error) => {
78
- logger.error(`Failed to initialize ProcessService: ${error.message}`);
79
- });
80
- logger.debug("ProcessService created - initialization will complete on first tool use");
81
- return [
82
- (0, import_bash_exec_tool.createBashExecTool)(processService),
83
- (0, import_bash_output_tool.createBashOutputTool)(processService),
84
- (0, import_kill_process_tool.createKillProcessTool)(processService)
85
- ];
86
- },
87
- metadata: {
88
- displayName: "Process Tools",
89
- description: "Process execution and management (bash, output, kill)",
90
- category: "process"
91
- }
92
- };
93
51
  // Annotate the CommonJS export names for ESM import in node:
94
52
  0 && (module.exports = {
95
- processToolsProvider
53
+ ProcessToolsConfigSchema
96
54
  });
@@ -1,16 +1,15 @@
1
1
  import { z } from 'zod';
2
- import { CustomToolProvider } from '@dexto/core';
3
2
 
4
3
  /**
5
- * Process Tools Provider
4
+ * Process Tools Factory
6
5
  *
7
6
  * Provides process execution and management tools by wrapping ProcessService.
8
- * When registered, the provider initializes ProcessService and creates tools
7
+ * When registered, the factory initializes ProcessService and creates tools
9
8
  * for command execution and process management.
10
9
  */
11
10
 
12
11
  /**
13
- * Configuration schema for Process tools provider.
12
+ * Configuration schema for Process tools factory.
14
13
  *
15
14
  * This is the SINGLE SOURCE OF TRUTH for all configuration:
16
15
  * - Validation rules
@@ -31,7 +30,6 @@ declare const ProcessToolsConfigSchema: z.ZodObject<{
31
30
  allowedCommands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
32
31
  blockedCommands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
33
32
  environment: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
34
- timeout: z.ZodOptional<z.ZodNumber>;
35
33
  }, "strict", z.ZodTypeAny, {
36
34
  type: "process-tools";
37
35
  securityLevel: "strict" | "moderate" | "permissive";
@@ -41,11 +39,9 @@ declare const ProcessToolsConfigSchema: z.ZodObject<{
41
39
  allowedCommands: string[];
42
40
  blockedCommands: string[];
43
41
  environment: Record<string, string>;
44
- timeout?: number | undefined;
45
42
  workingDirectory?: string | undefined;
46
43
  }, {
47
44
  type: "process-tools";
48
- timeout?: number | undefined;
49
45
  securityLevel?: "strict" | "moderate" | "permissive" | undefined;
50
46
  maxTimeout?: number | undefined;
51
47
  maxConcurrentProcesses?: number | undefined;
@@ -56,17 +52,5 @@ declare const ProcessToolsConfigSchema: z.ZodObject<{
56
52
  workingDirectory?: string | undefined;
57
53
  }>;
58
54
  type ProcessToolsConfig = z.output<typeof ProcessToolsConfigSchema>;
59
- /**
60
- * Process tools provider.
61
- *
62
- * Wraps ProcessService and provides process operation tools:
63
- * - bash_exec: Execute bash commands (foreground or background)
64
- * - bash_output: Retrieve output from background processes
65
- * - kill_process: Terminate background processes
66
- *
67
- * When registered via customToolRegistry, ProcessService is automatically
68
- * initialized and process operation tools become available to the agent.
69
- */
70
- declare const processToolsProvider: CustomToolProvider<'process-tools', ProcessToolsConfig>;
71
55
 
72
- export { processToolsProvider };
56
+ export { type ProcessToolsConfig, ProcessToolsConfigSchema };
@@ -1,16 +1,13 @@
1
- import { z } from 'zod';
2
- import { CustomToolProvider } from '@dexto/core';
3
-
4
1
  /**
5
- * Process Tools Provider
2
+ * Process Tools Factory
6
3
  *
7
4
  * Provides process execution and management tools by wrapping ProcessService.
8
- * When registered, the provider initializes ProcessService and creates tools
5
+ * When registered, the factory initializes ProcessService and creates tools
9
6
  * for command execution and process management.
10
7
  */
11
-
8
+ import { z } from 'zod';
12
9
  /**
13
- * Configuration schema for Process tools provider.
10
+ * Configuration schema for Process tools factory.
14
11
  *
15
12
  * This is the SINGLE SOURCE OF TRUTH for all configuration:
16
13
  * - Validation rules
@@ -21,7 +18,7 @@ import { CustomToolProvider } from '@dexto/core';
21
18
  * Services receive fully-validated config from this schema and use it as-is,
22
19
  * with no additional defaults or fallbacks needed.
23
20
  */
24
- declare const ProcessToolsConfigSchema: z.ZodObject<{
21
+ export declare const ProcessToolsConfigSchema: z.ZodObject<{
25
22
  type: z.ZodLiteral<"process-tools">;
26
23
  securityLevel: z.ZodDefault<z.ZodEnum<["strict", "moderate", "permissive"]>>;
27
24
  maxTimeout: z.ZodDefault<z.ZodNumber>;
@@ -31,9 +28,7 @@ declare const ProcessToolsConfigSchema: z.ZodObject<{
31
28
  allowedCommands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
32
29
  blockedCommands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
33
30
  environment: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
34
- timeout: z.ZodOptional<z.ZodNumber>;
35
31
  }, "strict", z.ZodTypeAny, {
36
- type: "process-tools";
37
32
  securityLevel: "strict" | "moderate" | "permissive";
38
33
  maxTimeout: number;
39
34
  maxConcurrentProcesses: number;
@@ -41,11 +36,10 @@ declare const ProcessToolsConfigSchema: z.ZodObject<{
41
36
  allowedCommands: string[];
42
37
  blockedCommands: string[];
43
38
  environment: Record<string, string>;
44
- timeout?: number | undefined;
39
+ type: "process-tools";
45
40
  workingDirectory?: string | undefined;
46
41
  }, {
47
42
  type: "process-tools";
48
- timeout?: number | undefined;
49
43
  securityLevel?: "strict" | "moderate" | "permissive" | undefined;
50
44
  maxTimeout?: number | undefined;
51
45
  maxConcurrentProcesses?: number | undefined;
@@ -55,18 +49,5 @@ declare const ProcessToolsConfigSchema: z.ZodObject<{
55
49
  environment?: Record<string, string> | undefined;
56
50
  workingDirectory?: string | undefined;
57
51
  }>;
58
- type ProcessToolsConfig = z.output<typeof ProcessToolsConfigSchema>;
59
- /**
60
- * Process tools provider.
61
- *
62
- * Wraps ProcessService and provides process operation tools:
63
- * - bash_exec: Execute bash commands (foreground or background)
64
- * - bash_output: Retrieve output from background processes
65
- * - kill_process: Terminate background processes
66
- *
67
- * When registered via customToolRegistry, ProcessService is automatically
68
- * initialized and process operation tools become available to the agent.
69
- */
70
- declare const processToolsProvider: CustomToolProvider<'process-tools', ProcessToolsConfig>;
71
-
72
- export { processToolsProvider };
52
+ export type ProcessToolsConfig = z.output<typeof ProcessToolsConfigSchema>;
53
+ //# sourceMappingURL=tool-factory-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-factory-config.d.ts","sourceRoot":"","sources":["../src/tool-factory-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDxB,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -1,8 +1,4 @@
1
1
  import { z } from "zod";
2
- import { ProcessService } from "./process-service.js";
3
- import { createBashExecTool } from "./bash-exec-tool.js";
4
- import { createBashOutputTool } from "./bash-output-tool.js";
5
- import { createKillProcessTool } from "./kill-process-tool.js";
6
2
  const DEFAULT_SECURITY_LEVEL = "moderate";
7
3
  const DEFAULT_MAX_TIMEOUT = 6e5;
8
4
  const DEFAULT_MAX_CONCURRENT_PROCESSES = 5;
@@ -27,46 +23,8 @@ const ProcessToolsConfigSchema = z.object({
27
23
  "Explicitly allowed commands (empty = all allowed with approval, strict mode only)"
28
24
  ),
29
25
  blockedCommands: z.array(z.string()).default(DEFAULT_BLOCKED_COMMANDS).describe("Blocked command patterns (applies to all security levels)"),
30
- environment: z.record(z.string()).default(DEFAULT_ENVIRONMENT).describe("Custom environment variables to set for command execution"),
31
- timeout: z.number().int().positive().max(DEFAULT_MAX_TIMEOUT).optional().describe(
32
- `Default timeout in milliseconds (max: ${DEFAULT_MAX_TIMEOUT / 1e3 / 60} minutes)`
33
- )
26
+ environment: z.record(z.string()).default(DEFAULT_ENVIRONMENT).describe("Custom environment variables to set for command execution")
34
27
  }).strict();
35
- const processToolsProvider = {
36
- type: "process-tools",
37
- configSchema: ProcessToolsConfigSchema,
38
- create: (config, context) => {
39
- const { logger } = context;
40
- logger.debug("Creating ProcessService for process tools");
41
- const processService = new ProcessService(
42
- {
43
- securityLevel: config.securityLevel,
44
- maxTimeout: config.maxTimeout,
45
- maxConcurrentProcesses: config.maxConcurrentProcesses,
46
- maxOutputBuffer: config.maxOutputBuffer,
47
- workingDirectory: config.workingDirectory || process.cwd(),
48
- allowedCommands: config.allowedCommands,
49
- blockedCommands: config.blockedCommands,
50
- environment: config.environment
51
- },
52
- logger
53
- );
54
- processService.initialize().catch((error) => {
55
- logger.error(`Failed to initialize ProcessService: ${error.message}`);
56
- });
57
- logger.debug("ProcessService created - initialization will complete on first tool use");
58
- return [
59
- createBashExecTool(processService),
60
- createBashOutputTool(processService),
61
- createKillProcessTool(processService)
62
- ];
63
- },
64
- metadata: {
65
- displayName: "Process Tools",
66
- description: "Process execution and management (bash, output, kill)",
67
- category: "process"
68
- }
69
- };
70
28
  export {
71
- processToolsProvider
29
+ ProcessToolsConfigSchema
72
30
  };
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var tool_factory_exports = {};
20
+ __export(tool_factory_exports, {
21
+ processToolsFactory: () => processToolsFactory
22
+ });
23
+ module.exports = __toCommonJS(tool_factory_exports);
24
+ var import_process_service = require("./process-service.js");
25
+ var import_bash_exec_tool = require("./bash-exec-tool.js");
26
+ var import_bash_output_tool = require("./bash-output-tool.js");
27
+ var import_kill_process_tool = require("./kill-process-tool.js");
28
+ var import_tool_factory_config = require("./tool-factory-config.js");
29
+ const processToolsFactory = {
30
+ configSchema: import_tool_factory_config.ProcessToolsConfigSchema,
31
+ metadata: {
32
+ displayName: "Process Tools",
33
+ description: "Process execution and management (bash, output, kill)",
34
+ category: "process"
35
+ },
36
+ create: (config) => {
37
+ const processConfig = {
38
+ securityLevel: config.securityLevel,
39
+ maxTimeout: config.maxTimeout,
40
+ maxConcurrentProcesses: config.maxConcurrentProcesses,
41
+ maxOutputBuffer: config.maxOutputBuffer,
42
+ workingDirectory: config.workingDirectory ?? process.cwd(),
43
+ allowedCommands: config.allowedCommands,
44
+ blockedCommands: config.blockedCommands,
45
+ environment: config.environment
46
+ };
47
+ let processService;
48
+ const resolveWorkingDirectory = (context) => context.workspace?.path ?? processConfig.workingDirectory ?? process.cwd();
49
+ const applyWorkspace = (context, service) => {
50
+ const workingDirectory = resolveWorkingDirectory(context);
51
+ service.setWorkingDirectory(workingDirectory);
52
+ };
53
+ const getProcessService = async (context) => {
54
+ if (processService) {
55
+ applyWorkspace(context, processService);
56
+ return processService;
57
+ }
58
+ const logger = context.logger;
59
+ processService = new import_process_service.ProcessService(processConfig, logger);
60
+ applyWorkspace(context, processService);
61
+ processService.initialize().catch((error) => {
62
+ const message = error instanceof Error ? error.message : String(error);
63
+ logger.error(`Failed to initialize ProcessService: ${message}`);
64
+ });
65
+ return processService;
66
+ };
67
+ return [
68
+ (0, import_bash_exec_tool.createBashExecTool)(getProcessService),
69
+ (0, import_bash_output_tool.createBashOutputTool)(getProcessService),
70
+ (0, import_kill_process_tool.createKillProcessTool)(getProcessService)
71
+ ];
72
+ }
73
+ };
74
+ // Annotate the CommonJS export names for ESM import in node:
75
+ 0 && (module.exports = {
76
+ processToolsFactory
77
+ });
@@ -0,0 +1,7 @@
1
+ import { ToolFactory } from '@dexto/agent-config';
2
+ import { ProcessToolsConfig } from './tool-factory-config.cjs';
3
+ import 'zod';
4
+
5
+ declare const processToolsFactory: ToolFactory<ProcessToolsConfig>;
6
+
7
+ export { processToolsFactory };
@@ -0,0 +1,4 @@
1
+ import type { ToolFactory } from '@dexto/agent-config';
2
+ import { type ProcessToolsConfig } from './tool-factory-config.js';
3
+ export declare const processToolsFactory: ToolFactory<ProcessToolsConfig>;
4
+ //# sourceMappingURL=tool-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-factory.d.ts","sourceRoot":"","sources":["../src/tool-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG7F,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,kBAAkB,CAuD/D,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { ProcessService } from "./process-service.js";
2
+ import { createBashExecTool } from "./bash-exec-tool.js";
3
+ import { createBashOutputTool } from "./bash-output-tool.js";
4
+ import { createKillProcessTool } from "./kill-process-tool.js";
5
+ import { ProcessToolsConfigSchema } from "./tool-factory-config.js";
6
+ const processToolsFactory = {
7
+ configSchema: ProcessToolsConfigSchema,
8
+ metadata: {
9
+ displayName: "Process Tools",
10
+ description: "Process execution and management (bash, output, kill)",
11
+ category: "process"
12
+ },
13
+ create: (config) => {
14
+ const processConfig = {
15
+ securityLevel: config.securityLevel,
16
+ maxTimeout: config.maxTimeout,
17
+ maxConcurrentProcesses: config.maxConcurrentProcesses,
18
+ maxOutputBuffer: config.maxOutputBuffer,
19
+ workingDirectory: config.workingDirectory ?? process.cwd(),
20
+ allowedCommands: config.allowedCommands,
21
+ blockedCommands: config.blockedCommands,
22
+ environment: config.environment
23
+ };
24
+ let processService;
25
+ const resolveWorkingDirectory = (context) => context.workspace?.path ?? processConfig.workingDirectory ?? process.cwd();
26
+ const applyWorkspace = (context, service) => {
27
+ const workingDirectory = resolveWorkingDirectory(context);
28
+ service.setWorkingDirectory(workingDirectory);
29
+ };
30
+ const getProcessService = async (context) => {
31
+ if (processService) {
32
+ applyWorkspace(context, processService);
33
+ return processService;
34
+ }
35
+ const logger = context.logger;
36
+ processService = new ProcessService(processConfig, logger);
37
+ applyWorkspace(context, processService);
38
+ processService.initialize().catch((error) => {
39
+ const message = error instanceof Error ? error.message : String(error);
40
+ logger.error(`Failed to initialize ProcessService: ${message}`);
41
+ });
42
+ return processService;
43
+ };
44
+ return [
45
+ createBashExecTool(getProcessService),
46
+ createBashOutputTool(getProcessService),
47
+ createKillProcessTool(getProcessService)
48
+ ];
49
+ }
50
+ };
51
+ export {
52
+ processToolsFactory
53
+ };
package/dist/types.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  /**
7
7
  * Process execution options
8
8
  */
9
- interface ExecuteOptions {
9
+ export interface ExecuteOptions {
10
10
  /** Working directory */
11
11
  cwd?: string | undefined;
12
12
  /** Timeout in milliseconds (max: 600000) */
@@ -24,7 +24,7 @@ interface ExecuteOptions {
24
24
  * Process execution result (foreground execution only)
25
25
  * For background execution, see ProcessHandle
26
26
  */
27
- interface ProcessResult {
27
+ export interface ProcessResult {
28
28
  stdout: string;
29
29
  stderr: string;
30
30
  exitCode: number;
@@ -33,7 +33,7 @@ interface ProcessResult {
33
33
  /**
34
34
  * Background process handle
35
35
  */
36
- interface ProcessHandle {
36
+ export interface ProcessHandle {
37
37
  processId: string;
38
38
  command: string;
39
39
  pid?: number | undefined;
@@ -43,7 +43,7 @@ interface ProcessHandle {
43
43
  /**
44
44
  * Process output (for retrieving from background processes)
45
45
  */
46
- interface ProcessOutput {
46
+ export interface ProcessOutput {
47
47
  stdout: string;
48
48
  stderr: string;
49
49
  status: 'running' | 'completed' | 'failed';
@@ -53,7 +53,7 @@ interface ProcessOutput {
53
53
  /**
54
54
  * Process information
55
55
  */
56
- interface ProcessInfo {
56
+ export interface ProcessInfo {
57
57
  processId: string;
58
58
  command: string;
59
59
  pid?: number | undefined;
@@ -66,7 +66,7 @@ interface ProcessInfo {
66
66
  /**
67
67
  * Command validation result
68
68
  */
69
- interface CommandValidation {
69
+ export interface CommandValidation {
70
70
  isValid: boolean;
71
71
  error?: string;
72
72
  normalizedCommand?: string;
@@ -75,7 +75,7 @@ interface CommandValidation {
75
75
  /**
76
76
  * Process service configuration
77
77
  */
78
- interface ProcessConfig {
78
+ export interface ProcessConfig {
79
79
  /** Security level for command execution */
80
80
  securityLevel: 'strict' | 'moderate' | 'permissive';
81
81
  /** Maximum timeout for commands in milliseconds */
@@ -96,7 +96,7 @@ interface ProcessConfig {
96
96
  /**
97
97
  * Output buffer management
98
98
  */
99
- interface OutputBuffer {
99
+ export interface OutputBuffer {
100
100
  stdout: string[];
101
101
  stderr: string[];
102
102
  complete: boolean;
@@ -104,5 +104,4 @@ interface OutputBuffer {
104
104
  bytesUsed: number;
105
105
  truncated?: boolean;
106
106
  }
107
-
108
- export type { CommandValidation, ExecuteOptions, OutputBuffer, ProcessConfig, ProcessHandle, ProcessInfo, ProcessOutput, ProcessResult };
107
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dexto/tools-process",
3
- "version": "1.5.8",
4
- "description": "Process tools provider for Dexto agents",
3
+ "version": "1.6.0",
4
+ "description": "Process tools factory for Dexto agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -20,7 +20,8 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "zod": "^3.25.0",
23
- "@dexto/core": "1.5.8"
23
+ "@dexto/agent-config": "1.6.0",
24
+ "@dexto/core": "1.6.0"
24
25
  },
25
26
  "devDependencies": {
26
27
  "tsup": "^8.0.0",