@red-codes/agentguard 1.0.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 (294) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +298 -0
  3. package/dist/adapters/claude-code.d.ts +24 -0
  4. package/dist/adapters/claude-code.d.ts.map +1 -0
  5. package/dist/adapters/claude-code.js +99 -0
  6. package/dist/adapters/claude-code.js.map +1 -0
  7. package/dist/adapters/file.d.ts +3 -0
  8. package/dist/adapters/file.d.ts.map +1 -0
  9. package/dist/adapters/file.js +35 -0
  10. package/dist/adapters/file.js.map +1 -0
  11. package/dist/adapters/git.d.ts +3 -0
  12. package/dist/adapters/git.d.ts.map +1 -0
  13. package/dist/adapters/git.js +61 -0
  14. package/dist/adapters/git.js.map +1 -0
  15. package/dist/adapters/registry.d.ts +5 -0
  16. package/dist/adapters/registry.d.ts.map +1 -0
  17. package/dist/adapters/registry.js +15 -0
  18. package/dist/adapters/registry.js.map +1 -0
  19. package/dist/adapters/shell.d.ts +8 -0
  20. package/dist/adapters/shell.d.ts.map +1 -0
  21. package/dist/adapters/shell.js +27 -0
  22. package/dist/adapters/shell.js.map +1 -0
  23. package/dist/cli/args.d.ts +25 -0
  24. package/dist/cli/args.d.ts.map +1 -0
  25. package/dist/cli/args.js +63 -0
  26. package/dist/cli/args.js.map +1 -0
  27. package/dist/cli/bin.d.ts +3 -0
  28. package/dist/cli/bin.d.ts.map +1 -0
  29. package/dist/cli/bin.js +5769 -0
  30. package/dist/cli/bin.js.map +7 -0
  31. package/dist/cli/colors.d.ts +11 -0
  32. package/dist/cli/colors.d.ts.map +1 -0
  33. package/dist/cli/colors.js +44 -0
  34. package/dist/cli/colors.js.map +1 -0
  35. package/dist/cli/commands/claude-hook.d.ts +2 -0
  36. package/dist/cli/commands/claude-hook.d.ts.map +1 -0
  37. package/dist/cli/commands/claude-hook.js +110 -0
  38. package/dist/cli/commands/claude-hook.js.map +1 -0
  39. package/dist/cli/commands/claude-init.d.ts +2 -0
  40. package/dist/cli/commands/claude-init.d.ts.map +1 -0
  41. package/dist/cli/commands/claude-init.js +150 -0
  42. package/dist/cli/commands/claude-init.js.map +1 -0
  43. package/dist/cli/commands/export.d.ts +11 -0
  44. package/dist/cli/commands/export.d.ts.map +1 -0
  45. package/dist/cli/commands/export.js +113 -0
  46. package/dist/cli/commands/export.js.map +1 -0
  47. package/dist/cli/commands/guard.d.ts +12 -0
  48. package/dist/cli/commands/guard.d.ts.map +1 -0
  49. package/dist/cli/commands/guard.js +145 -0
  50. package/dist/cli/commands/guard.js.map +1 -0
  51. package/dist/cli/commands/import.d.ts +2 -0
  52. package/dist/cli/commands/import.d.ts.map +1 -0
  53. package/dist/cli/commands/import.js +115 -0
  54. package/dist/cli/commands/import.js.map +1 -0
  55. package/dist/cli/commands/inspect.d.ts +3 -0
  56. package/dist/cli/commands/inspect.d.ts.map +1 -0
  57. package/dist/cli/commands/inspect.js +185 -0
  58. package/dist/cli/commands/inspect.js.map +1 -0
  59. package/dist/cli/commands/plugin.d.ts +7 -0
  60. package/dist/cli/commands/plugin.d.ts.map +1 -0
  61. package/dist/cli/commands/plugin.js +234 -0
  62. package/dist/cli/commands/plugin.js.map +1 -0
  63. package/dist/cli/commands/replay.d.ts +12 -0
  64. package/dist/cli/commands/replay.d.ts.map +1 -0
  65. package/dist/cli/commands/replay.js +208 -0
  66. package/dist/cli/commands/replay.js.map +1 -0
  67. package/dist/cli/file-event-store.d.ts +41 -0
  68. package/dist/cli/file-event-store.d.ts.map +1 -0
  69. package/dist/cli/file-event-store.js +219 -0
  70. package/dist/cli/file-event-store.js.map +1 -0
  71. package/dist/cli/policy-resolver.d.ts +4 -0
  72. package/dist/cli/policy-resolver.d.ts.map +1 -0
  73. package/dist/cli/policy-resolver.js +62 -0
  74. package/dist/cli/policy-resolver.js.map +1 -0
  75. package/dist/cli/recorder.d.ts +36 -0
  76. package/dist/cli/recorder.d.ts.map +1 -0
  77. package/dist/cli/recorder.js +85 -0
  78. package/dist/cli/recorder.js.map +1 -0
  79. package/dist/cli/replay.d.ts +2 -0
  80. package/dist/cli/replay.d.ts.map +1 -0
  81. package/dist/cli/replay.js +310 -0
  82. package/dist/cli/replay.js.map +1 -0
  83. package/dist/cli/session-store.d.ts +41 -0
  84. package/dist/cli/session-store.d.ts.map +1 -0
  85. package/dist/cli/session-store.js +95 -0
  86. package/dist/cli/session-store.js.map +1 -0
  87. package/dist/cli/tui.d.ts +24 -0
  88. package/dist/cli/tui.d.ts.map +1 -0
  89. package/dist/cli/tui.js +197 -0
  90. package/dist/cli/tui.js.map +1 -0
  91. package/dist/core/actions.d.ts +11 -0
  92. package/dist/core/actions.d.ts.map +1 -0
  93. package/dist/core/actions.js +112 -0
  94. package/dist/core/actions.js.map +1 -0
  95. package/dist/core/adapters.d.ts +19 -0
  96. package/dist/core/adapters.d.ts.map +1 -0
  97. package/dist/core/adapters.js +85 -0
  98. package/dist/core/adapters.js.map +1 -0
  99. package/dist/core/execution-log/bridge.d.ts +12 -0
  100. package/dist/core/execution-log/bridge.d.ts.map +1 -0
  101. package/dist/core/execution-log/bridge.js +112 -0
  102. package/dist/core/execution-log/bridge.js.map +1 -0
  103. package/dist/core/execution-log/event-log.d.ts +7 -0
  104. package/dist/core/execution-log/event-log.d.ts.map +1 -0
  105. package/dist/core/execution-log/event-log.js +103 -0
  106. package/dist/core/execution-log/event-log.js.map +1 -0
  107. package/dist/core/execution-log/event-projections.d.ts +28 -0
  108. package/dist/core/execution-log/event-projections.d.ts.map +1 -0
  109. package/dist/core/execution-log/event-projections.js +272 -0
  110. package/dist/core/execution-log/event-projections.js.map +1 -0
  111. package/dist/core/execution-log/event-schema.d.ts +56 -0
  112. package/dist/core/execution-log/event-schema.d.ts.map +1 -0
  113. package/dist/core/execution-log/event-schema.js +160 -0
  114. package/dist/core/execution-log/event-schema.js.map +1 -0
  115. package/dist/core/execution-log/index.d.ts +7 -0
  116. package/dist/core/execution-log/index.d.ts.map +1 -0
  117. package/dist/core/execution-log/index.js +13 -0
  118. package/dist/core/execution-log/index.js.map +1 -0
  119. package/dist/core/hash.d.ts +5 -0
  120. package/dist/core/hash.d.ts.map +1 -0
  121. package/dist/core/hash.js +13 -0
  122. package/dist/core/hash.js.map +1 -0
  123. package/dist/core/rng.d.ts +29 -0
  124. package/dist/core/rng.d.ts.map +1 -0
  125. package/dist/core/rng.js +48 -0
  126. package/dist/core/rng.js.map +1 -0
  127. package/dist/core/types.d.ts +746 -0
  128. package/dist/core/types.d.ts.map +1 -0
  129. package/dist/core/types.js +8 -0
  130. package/dist/core/types.js.map +1 -0
  131. package/dist/events/bus.d.ts +24 -0
  132. package/dist/events/bus.d.ts.map +1 -0
  133. package/dist/events/bus.js +64 -0
  134. package/dist/events/bus.js.map +1 -0
  135. package/dist/events/decision-jsonl.d.ts +8 -0
  136. package/dist/events/decision-jsonl.d.ts.map +1 -0
  137. package/dist/events/decision-jsonl.js +44 -0
  138. package/dist/events/decision-jsonl.js.map +1 -0
  139. package/dist/events/jsonl.d.ts +8 -0
  140. package/dist/events/jsonl.d.ts.map +1 -0
  141. package/dist/events/jsonl.js +46 -0
  142. package/dist/events/jsonl.js.map +1 -0
  143. package/dist/events/schema.d.ts +59 -0
  144. package/dist/events/schema.d.ts.map +1 -0
  145. package/dist/events/schema.js +296 -0
  146. package/dist/events/schema.js.map +1 -0
  147. package/dist/events/store.d.ts +7 -0
  148. package/dist/events/store.d.ts.map +1 -0
  149. package/dist/events/store.js +64 -0
  150. package/dist/events/store.js.map +1 -0
  151. package/dist/invariants/checker.d.ts +15 -0
  152. package/dist/invariants/checker.d.ts.map +1 -0
  153. package/dist/invariants/checker.js +52 -0
  154. package/dist/invariants/checker.js.map +1 -0
  155. package/dist/invariants/definitions.d.ts +33 -0
  156. package/dist/invariants/definitions.d.ts.map +1 -0
  157. package/dist/invariants/definitions.js +168 -0
  158. package/dist/invariants/definitions.js.map +1 -0
  159. package/dist/kernel/aab.d.ts +26 -0
  160. package/dist/kernel/aab.d.ts.map +1 -0
  161. package/dist/kernel/aab.js +149 -0
  162. package/dist/kernel/aab.js.map +1 -0
  163. package/dist/kernel/blast-radius.d.ts +60 -0
  164. package/dist/kernel/blast-radius.d.ts.map +1 -0
  165. package/dist/kernel/blast-radius.js +146 -0
  166. package/dist/kernel/blast-radius.js.map +1 -0
  167. package/dist/kernel/decision.d.ts +40 -0
  168. package/dist/kernel/decision.d.ts.map +1 -0
  169. package/dist/kernel/decision.js +92 -0
  170. package/dist/kernel/decision.js.map +1 -0
  171. package/dist/kernel/decisions/factory.d.ts +12 -0
  172. package/dist/kernel/decisions/factory.d.ts.map +1 -0
  173. package/dist/kernel/decisions/factory.js +56 -0
  174. package/dist/kernel/decisions/factory.js.map +1 -0
  175. package/dist/kernel/decisions/types.d.ts +70 -0
  176. package/dist/kernel/decisions/types.d.ts.map +1 -0
  177. package/dist/kernel/decisions/types.js +5 -0
  178. package/dist/kernel/decisions/types.js.map +1 -0
  179. package/dist/kernel/evidence.d.ts +29 -0
  180. package/dist/kernel/evidence.d.ts.map +1 -0
  181. package/dist/kernel/evidence.js +61 -0
  182. package/dist/kernel/evidence.js.map +1 -0
  183. package/dist/kernel/kernel.d.ts +47 -0
  184. package/dist/kernel/kernel.d.ts.map +1 -0
  185. package/dist/kernel/kernel.js +377 -0
  186. package/dist/kernel/kernel.js.map +1 -0
  187. package/dist/kernel/monitor.d.ts +35 -0
  188. package/dist/kernel/monitor.d.ts.map +1 -0
  189. package/dist/kernel/monitor.js +144 -0
  190. package/dist/kernel/monitor.js.map +1 -0
  191. package/dist/kernel/replay-comparator.d.ts +72 -0
  192. package/dist/kernel/replay-comparator.d.ts.map +1 -0
  193. package/dist/kernel/replay-comparator.js +251 -0
  194. package/dist/kernel/replay-comparator.js.map +1 -0
  195. package/dist/kernel/replay-engine.d.ts +108 -0
  196. package/dist/kernel/replay-engine.d.ts.map +1 -0
  197. package/dist/kernel/replay-engine.js +241 -0
  198. package/dist/kernel/replay-engine.js.map +1 -0
  199. package/dist/kernel/replay-processor.d.ts +109 -0
  200. package/dist/kernel/replay-processor.d.ts.map +1 -0
  201. package/dist/kernel/replay-processor.js +118 -0
  202. package/dist/kernel/replay-processor.js.map +1 -0
  203. package/dist/kernel/simulation/filesystem-simulator.d.ts +3 -0
  204. package/dist/kernel/simulation/filesystem-simulator.d.ts.map +1 -0
  205. package/dist/kernel/simulation/filesystem-simulator.js +81 -0
  206. package/dist/kernel/simulation/filesystem-simulator.js.map +1 -0
  207. package/dist/kernel/simulation/git-simulator.d.ts +5 -0
  208. package/dist/kernel/simulation/git-simulator.d.ts.map +1 -0
  209. package/dist/kernel/simulation/git-simulator.js +115 -0
  210. package/dist/kernel/simulation/git-simulator.js.map +1 -0
  211. package/dist/kernel/simulation/package-simulator.d.ts +5 -0
  212. package/dist/kernel/simulation/package-simulator.d.ts.map +1 -0
  213. package/dist/kernel/simulation/package-simulator.js +164 -0
  214. package/dist/kernel/simulation/package-simulator.js.map +1 -0
  215. package/dist/kernel/simulation/registry.d.ts +3 -0
  216. package/dist/kernel/simulation/registry.d.ts.map +1 -0
  217. package/dist/kernel/simulation/registry.js +24 -0
  218. package/dist/kernel/simulation/registry.js.map +1 -0
  219. package/dist/kernel/simulation/types.d.ts +35 -0
  220. package/dist/kernel/simulation/types.d.ts.map +1 -0
  221. package/dist/kernel/simulation/types.js +4 -0
  222. package/dist/kernel/simulation/types.js.map +1 -0
  223. package/dist/plugins/discovery.d.ts +45 -0
  224. package/dist/plugins/discovery.d.ts.map +1 -0
  225. package/dist/plugins/discovery.js +89 -0
  226. package/dist/plugins/discovery.js.map +1 -0
  227. package/dist/plugins/index.d.ts +10 -0
  228. package/dist/plugins/index.d.ts.map +1 -0
  229. package/dist/plugins/index.js +7 -0
  230. package/dist/plugins/index.js.map +1 -0
  231. package/dist/plugins/registry.d.ts +52 -0
  232. package/dist/plugins/registry.d.ts.map +1 -0
  233. package/dist/plugins/registry.js +148 -0
  234. package/dist/plugins/registry.js.map +1 -0
  235. package/dist/plugins/sandbox.d.ts +87 -0
  236. package/dist/plugins/sandbox.d.ts.map +1 -0
  237. package/dist/plugins/sandbox.js +122 -0
  238. package/dist/plugins/sandbox.js.map +1 -0
  239. package/dist/plugins/types.d.ts +61 -0
  240. package/dist/plugins/types.d.ts.map +1 -0
  241. package/dist/plugins/types.js +16 -0
  242. package/dist/plugins/types.js.map +1 -0
  243. package/dist/plugins/validator.d.ts +36 -0
  244. package/dist/plugins/validator.d.ts.map +1 -0
  245. package/dist/plugins/validator.js +276 -0
  246. package/dist/plugins/validator.js.map +1 -0
  247. package/dist/policy/evaluator.d.ts +41 -0
  248. package/dist/policy/evaluator.d.ts.map +1 -0
  249. package/dist/policy/evaluator.js +111 -0
  250. package/dist/policy/evaluator.js.map +1 -0
  251. package/dist/policy/loader.d.ts +13 -0
  252. package/dist/policy/loader.d.ts.map +1 -0
  253. package/dist/policy/loader.js +118 -0
  254. package/dist/policy/loader.js.map +1 -0
  255. package/dist/policy/pack-loader.d.ts +40 -0
  256. package/dist/policy/pack-loader.d.ts.map +1 -0
  257. package/dist/policy/pack-loader.js +138 -0
  258. package/dist/policy/pack-loader.js.map +1 -0
  259. package/dist/policy/yaml-loader.d.ts +23 -0
  260. package/dist/policy/yaml-loader.d.ts.map +1 -0
  261. package/dist/policy/yaml-loader.js +222 -0
  262. package/dist/policy/yaml-loader.js.map +1 -0
  263. package/dist/renderers/index.d.ts +6 -0
  264. package/dist/renderers/index.d.ts.map +1 -0
  265. package/dist/renderers/index.js +4 -0
  266. package/dist/renderers/index.js.map +1 -0
  267. package/dist/renderers/registry.d.ts +39 -0
  268. package/dist/renderers/registry.d.ts.map +1 -0
  269. package/dist/renderers/registry.js +97 -0
  270. package/dist/renderers/registry.js.map +1 -0
  271. package/dist/renderers/tui-renderer.d.ts +18 -0
  272. package/dist/renderers/tui-renderer.d.ts.map +1 -0
  273. package/dist/renderers/tui-renderer.js +57 -0
  274. package/dist/renderers/tui-renderer.js.map +1 -0
  275. package/dist/renderers/types.d.ts +52 -0
  276. package/dist/renderers/types.d.ts.map +1 -0
  277. package/dist/renderers/types.js +4 -0
  278. package/dist/renderers/types.js.map +1 -0
  279. package/dist/telemetry/index.d.ts +3 -0
  280. package/dist/telemetry/index.d.ts.map +1 -0
  281. package/dist/telemetry/index.js +2 -0
  282. package/dist/telemetry/index.js.map +1 -0
  283. package/dist/telemetry/runtimeLogger.d.ts +9 -0
  284. package/dist/telemetry/runtimeLogger.d.ts.map +1 -0
  285. package/dist/telemetry/runtimeLogger.js +68 -0
  286. package/dist/telemetry/runtimeLogger.js.map +1 -0
  287. package/dist/telemetry/types.d.ts +22 -0
  288. package/dist/telemetry/types.d.ts.map +1 -0
  289. package/dist/telemetry/types.js +4 -0
  290. package/dist/telemetry/types.js.map +1 -0
  291. package/hooks/post-commit +57 -0
  292. package/hooks/post-merge +33 -0
  293. package/hooks/pre-commit +28 -0
  294. package/package.json +72 -0
@@ -0,0 +1,3 @@
1
+ import type { CanonicalAction } from '../core/types.js';
2
+ export declare function gitAdapter(action: CanonicalAction): Promise<unknown>;
3
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/adapters/git.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAgBxD,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAoD1E"}
@@ -0,0 +1,61 @@
1
+ // Git operation adapter — executes git.commit, git.push, etc.
2
+ // Node.js adapter. Wraps shell execution with git-specific validation.
3
+ import { exec } from 'node:child_process';
4
+ const GIT_TIMEOUT = 30_000;
5
+ function execGit(command, cwd) {
6
+ return new Promise((resolve, reject) => {
7
+ exec(command, { timeout: GIT_TIMEOUT, cwd }, (error, stdout, stderr) => {
8
+ if (error) {
9
+ reject(new Error(`Git command failed: ${stderr || error.message}`));
10
+ return;
11
+ }
12
+ resolve({ stdout: stdout.toString(), stderr: stderr.toString() });
13
+ });
14
+ });
15
+ }
16
+ export async function gitAdapter(action) {
17
+ const cwd = action.cwd;
18
+ switch (action.type) {
19
+ case 'git.commit': {
20
+ const message = action.message;
21
+ if (!message) {
22
+ throw new Error('git.commit requires a message');
23
+ }
24
+ const result = await execGit(`git commit -m "${message.replace(/"/g, '\\"')}"`, cwd);
25
+ return { committed: true, output: result.stdout.trim() };
26
+ }
27
+ case 'git.push': {
28
+ const branch = action.target || 'HEAD';
29
+ const remote = action.remote || 'origin';
30
+ const result = await execGit(`git push ${remote} ${branch}`, cwd);
31
+ return { pushed: true, branch, remote, output: result.stdout.trim() };
32
+ }
33
+ case 'git.diff': {
34
+ const result = await execGit('git diff', cwd);
35
+ return { diff: result.stdout };
36
+ }
37
+ case 'git.branch.create': {
38
+ const branch = action.target;
39
+ const result = await execGit(`git checkout -b ${branch}`, cwd);
40
+ return { created: true, branch, output: result.stdout.trim() };
41
+ }
42
+ case 'git.branch.delete': {
43
+ const branch = action.target;
44
+ const result = await execGit(`git branch -d ${branch}`, cwd);
45
+ return { deleted: true, branch, output: result.stdout.trim() };
46
+ }
47
+ case 'git.checkout': {
48
+ const branch = action.target;
49
+ const result = await execGit(`git checkout ${branch}`, cwd);
50
+ return { checkedOut: true, branch, output: result.stdout.trim() };
51
+ }
52
+ case 'git.merge': {
53
+ const branch = action.target;
54
+ const result = await execGit(`git merge ${branch}`, cwd);
55
+ return { merged: true, branch, output: result.stdout.trim() };
56
+ }
57
+ default:
58
+ throw new Error(`Unsupported git action: ${action.type}`);
59
+ }
60
+ }
61
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/adapters/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { createDryRunRegistry } from '../core/adapters.js';
2
+ import type { AdapterRegistry } from '../core/types.js';
3
+ export declare function createLiveRegistry(): AdapterRegistry;
4
+ export { createDryRunRegistry };
5
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Adapter registry — connects action classes to execution handlers.
2
+ // Node.js module. Registers file, shell, and git adapters.
3
+ import { createAdapterRegistry, createDryRunRegistry } from '../core/adapters.js';
4
+ import { fileAdapter } from './file.js';
5
+ import { shellAdapter } from './shell.js';
6
+ import { gitAdapter } from './git.js';
7
+ export function createLiveRegistry() {
8
+ const registry = createAdapterRegistry();
9
+ registry.register('file', fileAdapter);
10
+ registry.register('shell', shellAdapter);
11
+ registry.register('git', gitAdapter);
12
+ return registry;
13
+ }
14
+ export { createDryRunRegistry };
15
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,2DAA2D;AAE3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IAEzC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAErC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CanonicalAction } from '../core/types.js';
2
+ export interface ShellResult {
3
+ stdout: string;
4
+ stderr: string;
5
+ exitCode: number;
6
+ }
7
+ export declare function shellAdapter(action: CanonicalAction): Promise<ShellResult>;
8
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/adapters/shell.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAwBhF"}
@@ -0,0 +1,27 @@
1
+ // Shell execution adapter — executes shell.exec actions.
2
+ // Node.js adapter. Uses child_process.
3
+ import { exec } from 'node:child_process';
4
+ const DEFAULT_TIMEOUT = 30_000;
5
+ const MAX_BUFFER = 1024 * 1024; // 1MB
6
+ export async function shellAdapter(action) {
7
+ const command = action.command;
8
+ if (!command) {
9
+ throw new Error('shell.exec requires a command');
10
+ }
11
+ const timeout = action.timeout || DEFAULT_TIMEOUT;
12
+ const cwd = action.cwd;
13
+ return new Promise((resolve, reject) => {
14
+ exec(command, { timeout, maxBuffer: MAX_BUFFER, cwd }, (error, stdout, stderr) => {
15
+ if (error && error.killed) {
16
+ reject(new Error(`Command timed out after ${timeout}ms: ${command}`));
17
+ return;
18
+ }
19
+ resolve({
20
+ stdout: stdout.toString(),
21
+ stderr: stderr.toString(),
22
+ exitCode: error ? (error.code ?? 1) : 0,
23
+ });
24
+ });
25
+ });
26
+ }
27
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/adapters/shell.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,uCAAuC;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG1C,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAQtC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAuB;IACxD,MAAM,OAAO,GAAI,MAAkC,CAAC,OAA6B,CAAC;IAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,OAAO,GACT,MAAkC,CAAC,OAA8B,IAAI,eAAe,CAAC;IACzF,MAAM,GAAG,GAAI,MAAkC,CAAC,GAAyB,CAAC;IAE1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC/E,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,OAAO,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YAED,OAAO,CAAC;gBACN,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,25 @@
1
+ interface ArgSpec {
2
+ boolean?: string[];
3
+ string?: string[];
4
+ alias?: Record<string, string>;
5
+ stopAt?: string;
6
+ }
7
+ interface ParseResult {
8
+ flags: Record<string, string | boolean | null>;
9
+ positional: string[];
10
+ rest: string[];
11
+ }
12
+ export declare function parseArgs(argv: string[], spec?: ArgSpec): ParseResult;
13
+ interface CommandHelp {
14
+ name: string;
15
+ description: string;
16
+ usage: string;
17
+ flags?: Array<{
18
+ flag: string;
19
+ description: string;
20
+ }>;
21
+ examples?: string[];
22
+ }
23
+ export declare function formatHelp(cmd: CommandHelp): string;
24
+ export {};
25
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAEA,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,OAAY,GAAG,WAAW,CAuCzE;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAyBnD"}
@@ -0,0 +1,63 @@
1
+ // Lightweight CLI argument parser — zero dependencies.
2
+ export function parseArgs(argv, spec = {}) {
3
+ const booleans = new Set(spec.boolean || []);
4
+ const strings = new Set(spec.string || []);
5
+ const alias = spec.alias || {};
6
+ const stopAt = spec.stopAt || null;
7
+ const flags = {};
8
+ const positional = [];
9
+ let rest = [];
10
+ for (let i = 0; i < argv.length; i++) {
11
+ const arg = argv[i];
12
+ if (stopAt && arg === stopAt) {
13
+ rest = argv.slice(i + 1);
14
+ break;
15
+ }
16
+ const resolved = alias[arg] || arg;
17
+ if (booleans.has(resolved) || booleans.has(arg)) {
18
+ flags[resolved.replace(/^-+/, '')] = true;
19
+ }
20
+ else if (strings.has(resolved) || strings.has(arg)) {
21
+ const key = resolved.replace(/^-+/, '');
22
+ const value = argv[i + 1];
23
+ if (!value || value.startsWith('-')) {
24
+ flags[key] = null;
25
+ }
26
+ else {
27
+ flags[key] = value;
28
+ i++;
29
+ }
30
+ }
31
+ else if (arg.startsWith('-')) {
32
+ flags[arg.replace(/^-+/, '')] = true;
33
+ }
34
+ else {
35
+ positional.push(arg);
36
+ }
37
+ }
38
+ return { flags, positional, rest };
39
+ }
40
+ export function formatHelp(cmd) {
41
+ const lines = [];
42
+ lines.push(` \x1b[1m${cmd.name}\x1b[0m — ${cmd.description}`);
43
+ lines.push('');
44
+ lines.push(` \x1b[1mUsage:\x1b[0m ${cmd.usage}`);
45
+ if (cmd.flags && cmd.flags.length > 0) {
46
+ lines.push('');
47
+ lines.push(' \x1b[1mFlags:\x1b[0m');
48
+ const maxLen = Math.max(...cmd.flags.map((f) => f.flag.length));
49
+ for (const f of cmd.flags) {
50
+ lines.push(` ${f.flag.padEnd(maxLen + 2)} ${f.description}`);
51
+ }
52
+ }
53
+ if (cmd.examples && cmd.examples.length > 0) {
54
+ lines.push('');
55
+ lines.push(' \x1b[1mExamples:\x1b[0m');
56
+ for (const ex of cmd.examples) {
57
+ lines.push(` ${ex}`);
58
+ }
59
+ }
60
+ lines.push('');
61
+ return lines.join('\n');
62
+ }
63
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":""}