@rcrsr/rill 0.7.2 → 0.8.1

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 (107) hide show
  1. package/README.md +29 -1
  2. package/dist/ast-nodes.d.ts +635 -0
  3. package/dist/ast-nodes.d.ts.map +1 -0
  4. package/dist/ast-nodes.js +2 -0
  5. package/dist/ast-nodes.js.map +1 -0
  6. package/dist/ast-unions.d.ts +6 -0
  7. package/dist/ast-unions.d.ts.map +1 -0
  8. package/dist/ast-unions.js +6 -0
  9. package/dist/ast-unions.js.map +1 -0
  10. package/dist/error-classes.d.ts +90 -0
  11. package/dist/error-classes.d.ts.map +1 -0
  12. package/dist/error-classes.js +185 -0
  13. package/dist/error-classes.js.map +1 -0
  14. package/dist/error-registry.d.ts +93 -0
  15. package/dist/error-registry.d.ts.map +1 -0
  16. package/dist/error-registry.js +876 -0
  17. package/dist/error-registry.js.map +1 -0
  18. package/dist/ext/crypto/index.d.ts +32 -0
  19. package/dist/ext/crypto/index.d.ts.map +1 -0
  20. package/dist/ext/crypto/index.js +143 -0
  21. package/dist/ext/crypto/index.js.map +1 -0
  22. package/dist/ext/exec/index.d.ts +45 -0
  23. package/dist/ext/exec/index.d.ts.map +1 -0
  24. package/dist/ext/exec/index.js +168 -0
  25. package/dist/ext/exec/index.js.map +1 -0
  26. package/dist/ext/exec/runner.d.ts +62 -0
  27. package/dist/ext/exec/runner.d.ts.map +1 -0
  28. package/dist/ext/exec/runner.js +168 -0
  29. package/dist/ext/exec/runner.js.map +1 -0
  30. package/dist/ext/fetch/index.d.ts +68 -0
  31. package/dist/ext/fetch/index.d.ts.map +1 -0
  32. package/dist/ext/fetch/index.js +259 -0
  33. package/dist/ext/fetch/index.js.map +1 -0
  34. package/dist/ext/fetch/request.d.ts +90 -0
  35. package/dist/ext/fetch/request.d.ts.map +1 -0
  36. package/dist/ext/fetch/request.js +413 -0
  37. package/dist/ext/fetch/request.js.map +1 -0
  38. package/dist/ext/fs/index.d.ts +39 -0
  39. package/dist/ext/fs/index.d.ts.map +1 -0
  40. package/dist/ext/fs/index.js +560 -0
  41. package/dist/ext/fs/index.js.map +1 -0
  42. package/dist/ext/fs/sandbox.d.ts +78 -0
  43. package/dist/ext/fs/sandbox.d.ts.map +1 -0
  44. package/dist/ext/fs/sandbox.js +208 -0
  45. package/dist/ext/fs/sandbox.js.map +1 -0
  46. package/dist/ext/kv/index.d.ts +46 -0
  47. package/dist/ext/kv/index.d.ts.map +1 -0
  48. package/dist/ext/kv/index.js +215 -0
  49. package/dist/ext/kv/index.js.map +1 -0
  50. package/dist/ext/kv/store.d.ts +46 -0
  51. package/dist/ext/kv/store.d.ts.map +1 -0
  52. package/dist/ext/kv/store.js +256 -0
  53. package/dist/ext/kv/store.js.map +1 -0
  54. package/dist/generated/introspection-data.d.ts +1 -1
  55. package/dist/generated/introspection-data.d.ts.map +1 -1
  56. package/dist/generated/introspection-data.js +509 -481
  57. package/dist/generated/introspection-data.js.map +1 -1
  58. package/dist/generated/version-data.d.ts +1 -1
  59. package/dist/generated/version-data.js +3 -3
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +1 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/runtime/core/callable.d.ts +5 -5
  65. package/dist/runtime/core/callable.d.ts.map +1 -1
  66. package/dist/runtime/core/callable.js +2 -1
  67. package/dist/runtime/core/callable.js.map +1 -1
  68. package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -1
  69. package/dist/runtime/core/eval/mixins/collections.js +5 -1
  70. package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
  71. package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
  72. package/dist/runtime/core/eval/mixins/literals.js +5 -1
  73. package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
  74. package/dist/runtime/core/eval/mixins/variables.js +12 -12
  75. package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
  76. package/dist/runtime/core/values.d.ts +31 -3
  77. package/dist/runtime/core/values.d.ts.map +1 -1
  78. package/dist/runtime/core/values.js +47 -1
  79. package/dist/runtime/core/values.js.map +1 -1
  80. package/dist/runtime/ext/builtins.d.ts.map +1 -1
  81. package/dist/runtime/ext/builtins.js +202 -1
  82. package/dist/runtime/ext/builtins.js.map +1 -1
  83. package/dist/runtime/ext/extensions.d.ts +39 -3
  84. package/dist/runtime/ext/extensions.d.ts.map +1 -1
  85. package/dist/runtime/ext/extensions.js +77 -12
  86. package/dist/runtime/ext/extensions.js.map +1 -1
  87. package/dist/runtime/index.d.ts +5 -5
  88. package/dist/runtime/index.d.ts.map +1 -1
  89. package/dist/runtime/index.js +2 -2
  90. package/dist/runtime/index.js.map +1 -1
  91. package/dist/source-location.d.ts +10 -0
  92. package/dist/source-location.d.ts.map +1 -0
  93. package/dist/source-location.js +5 -0
  94. package/dist/source-location.js.map +1 -0
  95. package/dist/token-types.d.ts +68 -0
  96. package/dist/token-types.d.ts.map +1 -0
  97. package/dist/token-types.js +79 -0
  98. package/dist/token-types.js.map +1 -0
  99. package/dist/types.d.ts +9 -882
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/types.js +8 -958
  102. package/dist/types.js.map +1 -1
  103. package/dist/value-types.d.ts +3 -0
  104. package/dist/value-types.d.ts.map +1 -0
  105. package/dist/value-types.js +2 -0
  106. package/dist/value-types.js.map +1 -0
  107. package/package.json +50 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-registry.js","sourceRoot":"","sources":["../src/error-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Crypto Extension Factory
3
+ *
4
+ * Provides cryptographic functions via thin wrapper around node:crypto.
5
+ * Functions: hash, hmac, uuid, random
6
+ */
7
+ import type { ExtensionResult } from '../../runtime/ext/extensions.js';
8
+ /** Crypto extension configuration */
9
+ export interface CryptoConfig {
10
+ /** Default hash algorithm (default: 'sha256') */
11
+ defaultAlgorithm?: string | undefined;
12
+ /** HMAC key (required only if hmac() used) */
13
+ hmacKey?: string | undefined;
14
+ }
15
+ /**
16
+ * Create crypto extension with hashing and random generation.
17
+ *
18
+ * Returns 4 functions: hash, hmac, uuid, random.
19
+ *
20
+ * @param config - Crypto configuration
21
+ * @returns ExtensionResult with 4 crypto functions
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const cryptoExt = createCryptoExtension({
26
+ * defaultAlgorithm: 'sha256',
27
+ * hmacKey: 'secret'
28
+ * });
29
+ * ```
30
+ */
31
+ export declare function createCryptoExtension(config?: CryptoConfig): ExtensionResult;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ext/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAOvE,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,GAAE,YAAiB,GACxB,eAAe,CA2IjB"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Crypto Extension Factory
3
+ *
4
+ * Provides cryptographic functions via thin wrapper around node:crypto.
5
+ * Functions: hash, hmac, uuid, random
6
+ */
7
+ import crypto from 'node:crypto';
8
+ import { RuntimeError } from '../../error-classes.js';
9
+ // ============================================================
10
+ // FACTORY
11
+ // ============================================================
12
+ /**
13
+ * Create crypto extension with hashing and random generation.
14
+ *
15
+ * Returns 4 functions: hash, hmac, uuid, random.
16
+ *
17
+ * @param config - Crypto configuration
18
+ * @returns ExtensionResult with 4 crypto functions
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const cryptoExt = createCryptoExtension({
23
+ * defaultAlgorithm: 'sha256',
24
+ * hmacKey: 'secret'
25
+ * });
26
+ * ```
27
+ */
28
+ export function createCryptoExtension(config = {}) {
29
+ const defaultAlgorithm = config.defaultAlgorithm ?? 'sha256';
30
+ const hmacKey = config.hmacKey;
31
+ // Get supported hash algorithms from crypto module
32
+ const supportedAlgorithms = new Set(crypto.getHashes());
33
+ // ============================================================
34
+ // HELPERS
35
+ // ============================================================
36
+ /** Validate algorithm is supported */
37
+ function validateAlgorithm(algorithm) {
38
+ if (!supportedAlgorithms.has(algorithm)) {
39
+ // EC-27: Invalid algorithm
40
+ throw new RuntimeError('RILL-R004', `unsupported algorithm: ${algorithm}`, undefined, { algorithm, supported: Array.from(supportedAlgorithms) });
41
+ }
42
+ }
43
+ // ============================================================
44
+ // FUNCTIONS
45
+ // ============================================================
46
+ /**
47
+ * Hash content with specified or default algorithm.
48
+ * IR-23
49
+ */
50
+ const hash = async (args) => {
51
+ const input = args[0];
52
+ const algorithm = args[1] ?? defaultAlgorithm;
53
+ // EC-27: Invalid algorithm
54
+ validateAlgorithm(algorithm);
55
+ const hashObject = crypto.createHash(algorithm);
56
+ hashObject.update(input);
57
+ return hashObject.digest('hex');
58
+ };
59
+ /**
60
+ * Generate HMAC signature.
61
+ * IR-24, EC-26 (missing hmacKey)
62
+ */
63
+ const hmac = async (args) => {
64
+ // EC-26: hmacKey missing
65
+ if (!hmacKey) {
66
+ throw new RuntimeError('RILL-R004', 'hmacKey required for hmac() — set in config', undefined, {});
67
+ }
68
+ const input = args[0];
69
+ const algorithm = args[1] ?? defaultAlgorithm;
70
+ // EC-27: Invalid algorithm
71
+ validateAlgorithm(algorithm);
72
+ const hmacObject = crypto.createHmac(algorithm, hmacKey);
73
+ hmacObject.update(input);
74
+ return hmacObject.digest('hex');
75
+ };
76
+ /**
77
+ * Generate random UUID v4.
78
+ * IR-25
79
+ */
80
+ const uuid = async () => {
81
+ return crypto.randomUUID();
82
+ };
83
+ /**
84
+ * Generate random bytes as hex string.
85
+ * IR-26
86
+ */
87
+ const random = async (args) => {
88
+ const bytes = args[0];
89
+ return crypto.randomBytes(bytes).toString('hex');
90
+ };
91
+ // ============================================================
92
+ // EXTENSION RESULT
93
+ // ============================================================
94
+ return {
95
+ hash: {
96
+ params: [
97
+ { name: 'input', type: 'string', description: 'Content to hash' },
98
+ {
99
+ name: 'algorithm',
100
+ type: 'string',
101
+ description: 'Hash algorithm',
102
+ defaultValue: defaultAlgorithm,
103
+ },
104
+ ],
105
+ fn: hash,
106
+ description: 'Hash content, returns hex output',
107
+ returnType: 'string',
108
+ },
109
+ hmac: {
110
+ params: [
111
+ {
112
+ name: 'input',
113
+ type: 'string',
114
+ description: 'Content to authenticate',
115
+ },
116
+ {
117
+ name: 'algorithm',
118
+ type: 'string',
119
+ description: 'Hash algorithm',
120
+ defaultValue: defaultAlgorithm,
121
+ },
122
+ ],
123
+ fn: hmac,
124
+ description: 'Generate HMAC signature, returns hex output',
125
+ returnType: 'string',
126
+ },
127
+ uuid: {
128
+ params: [],
129
+ fn: uuid,
130
+ description: 'Generate random UUID v4',
131
+ returnType: 'string',
132
+ },
133
+ random: {
134
+ params: [
135
+ { name: 'bytes', type: 'number', description: 'Number of bytes' },
136
+ ],
137
+ fn: random,
138
+ description: 'Generate random bytes as hex string',
139
+ returnType: 'string',
140
+ },
141
+ };
142
+ }
143
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ext/crypto/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * exec Extension Factory
3
+ *
4
+ * Provides sandboxed command execution via allowlist/blocklist security controls.
5
+ * Each declared command becomes a function with argument validation and process isolation.
6
+ */
7
+ import type { ExtensionResult } from '../../runtime/ext/extensions.js';
8
+ import { type CommandConfig } from './runner.js';
9
+ /** exec extension configuration */
10
+ export interface ExecConfig {
11
+ /** Command definitions keyed by command name */
12
+ commands: Record<string, CommandConfig>;
13
+ /** Global timeout in milliseconds (default: 30000 = 30s) */
14
+ timeout?: number | undefined;
15
+ /** Global output size limit in bytes (default: 1048576 = 1MB) */
16
+ maxOutputSize?: number | undefined;
17
+ /** Inherit parent process environment (default: false) */
18
+ inheritEnv?: boolean | undefined;
19
+ }
20
+ export type { CommandConfig };
21
+ /**
22
+ * Create exec extension with sandboxed command execution.
23
+ *
24
+ * Generates one host function per declared command.
25
+ * Each function validates arguments and spawns processes with security controls.
26
+ * Returns dispose() function to abort in-flight processes.
27
+ *
28
+ * @param config - Command definitions and defaults
29
+ * @returns ExtensionResult with command functions and dispose
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const execExt = createExecExtension({
34
+ * commands: {
35
+ * git: {
36
+ * binary: 'git',
37
+ * allowedArgs: ['status', '--short', 'log'],
38
+ * cwd: '/home/user/repo'
39
+ * }
40
+ * }
41
+ * });
42
+ * ```
43
+ */
44
+ export declare function createExecExtension(config: ExecConfig): ExtensionResult;
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ext/exec/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAMrB,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAGD,YAAY,EAAE,aAAa,EAAE,CAAC;AAM9B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAwKvE"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * exec Extension Factory
3
+ *
4
+ * Provides sandboxed command execution via allowlist/blocklist security controls.
5
+ * Each declared command becomes a function with argument validation and process isolation.
6
+ */
7
+ import { runCommand, } from './runner.js';
8
+ // ============================================================
9
+ // FACTORY
10
+ // ============================================================
11
+ /**
12
+ * Create exec extension with sandboxed command execution.
13
+ *
14
+ * Generates one host function per declared command.
15
+ * Each function validates arguments and spawns processes with security controls.
16
+ * Returns dispose() function to abort in-flight processes.
17
+ *
18
+ * @param config - Command definitions and defaults
19
+ * @returns ExtensionResult with command functions and dispose
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const execExt = createExecExtension({
24
+ * commands: {
25
+ * git: {
26
+ * binary: 'git',
27
+ * allowedArgs: ['status', '--short', 'log'],
28
+ * cwd: '/home/user/repo'
29
+ * }
30
+ * }
31
+ * });
32
+ * ```
33
+ */
34
+ export function createExecExtension(config) {
35
+ // Apply defaults
36
+ const globalTimeout = config.timeout ?? 30000; // 30s
37
+ const globalMaxOutputSize = config.maxOutputSize ?? 1048576; // 1MB
38
+ const inheritEnv = config.inheritEnv ?? false;
39
+ // Track in-flight processes for dispose
40
+ const abortControllers = [];
41
+ // Helper: get effective timeout (command-specific or global)
42
+ const getTimeout = (commandConfig) => {
43
+ return commandConfig.timeout ?? globalTimeout;
44
+ };
45
+ // Helper: get effective maxBuffer (command-specific or global)
46
+ const getMaxBuffer = (commandConfig) => {
47
+ return commandConfig.maxBuffer ?? globalMaxOutputSize;
48
+ };
49
+ // Helper: get effective env (merge parent env if inheritEnv, then overlay command env)
50
+ const getEnv = (commandConfig) => {
51
+ if (!inheritEnv && !commandConfig.env) {
52
+ return undefined; // No env needed
53
+ }
54
+ const baseEnv = {};
55
+ // Copy process.env if inheritEnv is true, filtering out undefined
56
+ if (inheritEnv) {
57
+ for (const [key, value] of Object.entries(process.env)) {
58
+ if (value !== undefined) {
59
+ baseEnv[key] = value;
60
+ }
61
+ }
62
+ }
63
+ // Overlay command-specific env
64
+ if (commandConfig.env) {
65
+ Object.assign(baseEnv, commandConfig.env);
66
+ }
67
+ return baseEnv;
68
+ };
69
+ // ============================================================
70
+ // GENERATE COMMAND FUNCTIONS
71
+ // ============================================================
72
+ const functions = {};
73
+ for (const [commandName, commandConfig] of Object.entries(config.commands)) {
74
+ // Create function for this command
75
+ const commandFn = async (args) => {
76
+ // Extract args and stdin from RillValue array
77
+ const argsParam = args[0] ?? [];
78
+ const stdinParam = args[1];
79
+ // Convert args to string array
80
+ const stringArgs = argsParam.map((arg) => String(arg));
81
+ // Create abort controller for this execution
82
+ const controller = new AbortController();
83
+ abortControllers.push(controller);
84
+ try {
85
+ // Build effective config with merged defaults
86
+ const effectiveConfig = {
87
+ ...commandConfig,
88
+ timeout: getTimeout(commandConfig),
89
+ maxBuffer: getMaxBuffer(commandConfig),
90
+ env: getEnv(commandConfig),
91
+ };
92
+ // Execute command
93
+ const result = await runCommand(commandName, effectiveConfig, stringArgs, stdinParam, controller.signal);
94
+ // Return as dict
95
+ return {
96
+ stdout: result.stdout,
97
+ stderr: result.stderr,
98
+ exitCode: result.exitCode,
99
+ };
100
+ }
101
+ finally {
102
+ // Remove from tracking list
103
+ const index = abortControllers.indexOf(controller);
104
+ if (index !== -1) {
105
+ abortControllers.splice(index, 1);
106
+ }
107
+ }
108
+ };
109
+ // Add to functions object with HostFunctionDefinition structure
110
+ functions[commandName] = {
111
+ params: [
112
+ {
113
+ name: 'args',
114
+ type: 'list',
115
+ description: 'Command arguments',
116
+ defaultValue: [],
117
+ },
118
+ {
119
+ name: 'stdin',
120
+ type: 'string',
121
+ description: 'Standard input data',
122
+ defaultValue: '',
123
+ },
124
+ ],
125
+ fn: commandFn,
126
+ description: commandConfig.description ?? `Execute ${commandName} command`,
127
+ returnType: 'dict',
128
+ };
129
+ }
130
+ // ============================================================
131
+ // INTROSPECTION FUNCTION
132
+ // ============================================================
133
+ const commands = async () => {
134
+ const result = [];
135
+ for (const [name, commandConfig] of Object.entries(config.commands)) {
136
+ result.push({
137
+ name,
138
+ description: commandConfig.description ?? '',
139
+ });
140
+ }
141
+ return result;
142
+ };
143
+ functions['commands'] = {
144
+ params: [],
145
+ fn: commands,
146
+ description: 'List all configured commands',
147
+ returnType: 'list',
148
+ };
149
+ // ============================================================
150
+ // DISPOSE FUNCTION
151
+ // ============================================================
152
+ const dispose = async () => {
153
+ // Abort all in-flight processes
154
+ for (const controller of abortControllers) {
155
+ controller.abort();
156
+ }
157
+ // Clear tracking array
158
+ abortControllers.length = 0;
159
+ };
160
+ // ============================================================
161
+ // EXTENSION RESULT
162
+ // ============================================================
163
+ return {
164
+ ...functions,
165
+ dispose,
166
+ };
167
+ }
168
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ext/exec/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * exec Extension Runner
3
+ *
4
+ * Handles process spawning with argument validation and security controls.
5
+ * Uses child_process.execFile() for shell injection prevention.
6
+ */
7
+ /** Command configuration with security controls */
8
+ export interface CommandConfig {
9
+ /** Binary executable path */
10
+ readonly binary: string;
11
+ /** Optional timeout in milliseconds */
12
+ readonly timeout?: number | undefined;
13
+ /** Optional output size limit in bytes */
14
+ readonly maxBuffer?: number | undefined;
15
+ /** Allowed arguments (allowlist mode) */
16
+ readonly allowedArgs?: readonly string[] | undefined;
17
+ /** Blocked arguments (blocklist mode) */
18
+ readonly blockedArgs?: readonly string[] | undefined;
19
+ /** Working directory for command execution */
20
+ readonly cwd?: string | undefined;
21
+ /** Environment variables for command */
22
+ readonly env?: Record<string, string> | undefined;
23
+ /** Whether command accepts stdin */
24
+ readonly stdin?: boolean | undefined;
25
+ /** Optional description for introspection */
26
+ readonly description?: string | undefined;
27
+ }
28
+ /** Command execution result */
29
+ export interface CommandResult {
30
+ readonly stdout: string;
31
+ readonly stderr: string;
32
+ readonly exitCode: number;
33
+ }
34
+ /**
35
+ * Execute command with process spawning and security controls.
36
+ *
37
+ * Uses execFile() to prevent shell injection attacks.
38
+ * Validates arguments against allowlist/blocklist rules.
39
+ * Returns stdout, stderr, and exit code (non-zero exit is not an error).
40
+ *
41
+ * @param commandName - Command name for error messages
42
+ * @param config - Command configuration with security rules
43
+ * @param args - Command arguments
44
+ * @param stdinData - Optional stdin data
45
+ * @param signal - Optional AbortSignal for cancellation
46
+ * @returns Command result with stdout, stderr, and exitCode
47
+ * @throws RuntimeError RILL-R004 for validation failures
48
+ * @throws RuntimeError RILL-R012 for timeout
49
+ * @throws RuntimeError RILL-R004 for output size limit exceeded
50
+ * @throws RuntimeError RILL-R004 for binary not found
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const result = await runCommand('git', {
55
+ * binary: 'git',
56
+ * allowedArgs: ['status', '--short']
57
+ * }, ['status', '--short']);
58
+ * // Returns: { stdout: "...", stderr: "", exitCode: 0 }
59
+ * ```
60
+ */
61
+ export declare function runCommand(commandName: string, config: CommandConfig, args: readonly string[], stdinData?: string | undefined, signal?: AbortSignal | undefined): Promise<CommandResult>;
62
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/ext/exec/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,wCAAwC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,oCAAoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAgFD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAC/B,OAAO,CAAC,aAAa,CAAC,CAoIxB"}