@praveencs/agent 0.1.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 (279) hide show
  1. package/README.md +1007 -0
  2. package/bin/agent.ts +6 -0
  3. package/dist/bin/agent.d.ts +3 -0
  4. package/dist/bin/agent.d.ts.map +1 -0
  5. package/dist/bin/agent.js +5 -0
  6. package/dist/bin/agent.js.map +1 -0
  7. package/dist/src/cli/commands/config.d.ts +3 -0
  8. package/dist/src/cli/commands/config.d.ts.map +1 -0
  9. package/dist/src/cli/commands/config.js +54 -0
  10. package/dist/src/cli/commands/config.js.map +1 -0
  11. package/dist/src/cli/commands/daemon.d.ts +3 -0
  12. package/dist/src/cli/commands/daemon.d.ts.map +1 -0
  13. package/dist/src/cli/commands/daemon.js +43 -0
  14. package/dist/src/cli/commands/daemon.js.map +1 -0
  15. package/dist/src/cli/commands/doctor.d.ts +3 -0
  16. package/dist/src/cli/commands/doctor.d.ts.map +1 -0
  17. package/dist/src/cli/commands/doctor.js +84 -0
  18. package/dist/src/cli/commands/doctor.js.map +1 -0
  19. package/dist/src/cli/commands/init.d.ts +8 -0
  20. package/dist/src/cli/commands/init.d.ts.map +1 -0
  21. package/dist/src/cli/commands/init.js +112 -0
  22. package/dist/src/cli/commands/init.js.map +1 -0
  23. package/dist/src/cli/commands/mcp.d.ts +3 -0
  24. package/dist/src/cli/commands/mcp.d.ts.map +1 -0
  25. package/dist/src/cli/commands/mcp.js +26 -0
  26. package/dist/src/cli/commands/mcp.js.map +1 -0
  27. package/dist/src/cli/commands/plan.d.ts +3 -0
  28. package/dist/src/cli/commands/plan.d.ts.map +1 -0
  29. package/dist/src/cli/commands/plan.js +220 -0
  30. package/dist/src/cli/commands/plan.js.map +1 -0
  31. package/dist/src/cli/commands/run.d.ts +3 -0
  32. package/dist/src/cli/commands/run.d.ts.map +1 -0
  33. package/dist/src/cli/commands/run.js +192 -0
  34. package/dist/src/cli/commands/run.js.map +1 -0
  35. package/dist/src/cli/commands/skills.d.ts +3 -0
  36. package/dist/src/cli/commands/skills.d.ts.map +1 -0
  37. package/dist/src/cli/commands/skills.js +143 -0
  38. package/dist/src/cli/commands/skills.js.map +1 -0
  39. package/dist/src/cli/index.d.ts +6 -0
  40. package/dist/src/cli/index.d.ts.map +1 -0
  41. package/dist/src/cli/index.js +33 -0
  42. package/dist/src/cli/index.js.map +1 -0
  43. package/dist/src/cli/ui/progress.d.ts +17 -0
  44. package/dist/src/cli/ui/progress.d.ts.map +1 -0
  45. package/dist/src/cli/ui/progress.js +43 -0
  46. package/dist/src/cli/ui/progress.js.map +1 -0
  47. package/dist/src/cli/ui/prompt.d.ts +10 -0
  48. package/dist/src/cli/ui/prompt.d.ts.map +1 -0
  49. package/dist/src/cli/ui/prompt.js +53 -0
  50. package/dist/src/cli/ui/prompt.js.map +1 -0
  51. package/dist/src/cli/ui/report.d.ts +6 -0
  52. package/dist/src/cli/ui/report.d.ts.map +1 -0
  53. package/dist/src/cli/ui/report.js +81 -0
  54. package/dist/src/cli/ui/report.js.map +1 -0
  55. package/dist/src/config/defaults.d.ts +3 -0
  56. package/dist/src/config/defaults.d.ts.map +1 -0
  57. package/dist/src/config/defaults.js +82 -0
  58. package/dist/src/config/defaults.js.map +1 -0
  59. package/dist/src/config/loader.d.ts +33 -0
  60. package/dist/src/config/loader.d.ts.map +1 -0
  61. package/dist/src/config/loader.js +161 -0
  62. package/dist/src/config/loader.js.map +1 -0
  63. package/dist/src/config/schema.d.ts +530 -0
  64. package/dist/src/config/schema.d.ts.map +1 -0
  65. package/dist/src/config/schema.js +97 -0
  66. package/dist/src/config/schema.js.map +1 -0
  67. package/dist/src/config/secrets.d.ts +31 -0
  68. package/dist/src/config/secrets.d.ts.map +1 -0
  69. package/dist/src/config/secrets.js +98 -0
  70. package/dist/src/config/secrets.js.map +1 -0
  71. package/dist/src/daemon/manager.d.ts +28 -0
  72. package/dist/src/daemon/manager.d.ts.map +1 -0
  73. package/dist/src/daemon/manager.js +77 -0
  74. package/dist/src/daemon/manager.js.map +1 -0
  75. package/dist/src/daemon/scheduler.d.ts +6 -0
  76. package/dist/src/daemon/scheduler.d.ts.map +1 -0
  77. package/dist/src/daemon/scheduler.js +82 -0
  78. package/dist/src/daemon/scheduler.js.map +1 -0
  79. package/dist/src/daemon/watcher.d.ts +16 -0
  80. package/dist/src/daemon/watcher.d.ts.map +1 -0
  81. package/dist/src/daemon/watcher.js +59 -0
  82. package/dist/src/daemon/watcher.js.map +1 -0
  83. package/dist/src/engine/executor.d.ts +51 -0
  84. package/dist/src/engine/executor.d.ts.map +1 -0
  85. package/dist/src/engine/executor.js +189 -0
  86. package/dist/src/engine/executor.js.map +1 -0
  87. package/dist/src/engine/rollback.d.ts +37 -0
  88. package/dist/src/engine/rollback.d.ts.map +1 -0
  89. package/dist/src/engine/rollback.js +95 -0
  90. package/dist/src/engine/rollback.js.map +1 -0
  91. package/dist/src/engine/types.d.ts +31 -0
  92. package/dist/src/engine/types.d.ts.map +1 -0
  93. package/dist/src/engine/types.js +2 -0
  94. package/dist/src/engine/types.js.map +1 -0
  95. package/dist/src/engine/verification.d.ts +27 -0
  96. package/dist/src/engine/verification.d.ts.map +1 -0
  97. package/dist/src/engine/verification.js +75 -0
  98. package/dist/src/engine/verification.js.map +1 -0
  99. package/dist/src/index.d.ts +17 -0
  100. package/dist/src/index.d.ts.map +1 -0
  101. package/dist/src/index.js +13 -0
  102. package/dist/src/index.js.map +1 -0
  103. package/dist/src/llm/cache.d.ts +20 -0
  104. package/dist/src/llm/cache.d.ts.map +1 -0
  105. package/dist/src/llm/cache.js +45 -0
  106. package/dist/src/llm/cache.js.map +1 -0
  107. package/dist/src/llm/providers/anthropic.d.ts +13 -0
  108. package/dist/src/llm/providers/anthropic.d.ts.map +1 -0
  109. package/dist/src/llm/providers/anthropic.js +69 -0
  110. package/dist/src/llm/providers/anthropic.js.map +1 -0
  111. package/dist/src/llm/providers/azure.d.ts +14 -0
  112. package/dist/src/llm/providers/azure.d.ts.map +1 -0
  113. package/dist/src/llm/providers/azure.js +98 -0
  114. package/dist/src/llm/providers/azure.js.map +1 -0
  115. package/dist/src/llm/providers/ollama.d.ts +13 -0
  116. package/dist/src/llm/providers/ollama.d.ts.map +1 -0
  117. package/dist/src/llm/providers/ollama.js +80 -0
  118. package/dist/src/llm/providers/ollama.js.map +1 -0
  119. package/dist/src/llm/providers/openai.d.ts +13 -0
  120. package/dist/src/llm/providers/openai.d.ts.map +1 -0
  121. package/dist/src/llm/providers/openai.js +74 -0
  122. package/dist/src/llm/providers/openai.js.map +1 -0
  123. package/dist/src/llm/router.d.ts +26 -0
  124. package/dist/src/llm/router.d.ts.map +1 -0
  125. package/dist/src/llm/router.js +104 -0
  126. package/dist/src/llm/router.js.map +1 -0
  127. package/dist/src/llm/types.d.ts +44 -0
  128. package/dist/src/llm/types.d.ts.map +1 -0
  129. package/dist/src/llm/types.js +2 -0
  130. package/dist/src/llm/types.js.map +1 -0
  131. package/dist/src/logging/audit-log.d.ts +89 -0
  132. package/dist/src/logging/audit-log.d.ts.map +1 -0
  133. package/dist/src/logging/audit-log.js +132 -0
  134. package/dist/src/logging/audit-log.js.map +1 -0
  135. package/dist/src/logging/logger.d.ts +13 -0
  136. package/dist/src/logging/logger.d.ts.map +1 -0
  137. package/dist/src/logging/logger.js +57 -0
  138. package/dist/src/logging/logger.js.map +1 -0
  139. package/dist/src/logging/redactor.d.ts +14 -0
  140. package/dist/src/logging/redactor.d.ts.map +1 -0
  141. package/dist/src/logging/redactor.js +48 -0
  142. package/dist/src/logging/redactor.js.map +1 -0
  143. package/dist/src/mcp/handlers.d.ts +21 -0
  144. package/dist/src/mcp/handlers.d.ts.map +1 -0
  145. package/dist/src/mcp/handlers.js +156 -0
  146. package/dist/src/mcp/handlers.js.map +1 -0
  147. package/dist/src/mcp/server.d.ts +8 -0
  148. package/dist/src/mcp/server.d.ts.map +1 -0
  149. package/dist/src/mcp/server.js +40 -0
  150. package/dist/src/mcp/server.js.map +1 -0
  151. package/dist/src/mcp/types.d.ts +20 -0
  152. package/dist/src/mcp/types.d.ts.map +1 -0
  153. package/dist/src/mcp/types.js +2 -0
  154. package/dist/src/mcp/types.js.map +1 -0
  155. package/dist/src/plans/parser.d.ts +33 -0
  156. package/dist/src/plans/parser.d.ts.map +1 -0
  157. package/dist/src/plans/parser.js +93 -0
  158. package/dist/src/plans/parser.js.map +1 -0
  159. package/dist/src/plans/propose.d.ts +26 -0
  160. package/dist/src/plans/propose.d.ts.map +1 -0
  161. package/dist/src/plans/propose.js +85 -0
  162. package/dist/src/plans/propose.js.map +1 -0
  163. package/dist/src/plans/runner.d.ts +19 -0
  164. package/dist/src/plans/runner.d.ts.map +1 -0
  165. package/dist/src/plans/runner.js +159 -0
  166. package/dist/src/plans/runner.js.map +1 -0
  167. package/dist/src/plans/triggers.d.ts +12 -0
  168. package/dist/src/plans/triggers.d.ts.map +1 -0
  169. package/dist/src/plans/triggers.js +43 -0
  170. package/dist/src/plans/triggers.js.map +1 -0
  171. package/dist/src/plans/types.d.ts +454 -0
  172. package/dist/src/plans/types.d.ts.map +1 -0
  173. package/dist/src/plans/types.js +56 -0
  174. package/dist/src/plans/types.js.map +1 -0
  175. package/dist/src/policy/audit.d.ts +35 -0
  176. package/dist/src/policy/audit.d.ts.map +1 -0
  177. package/dist/src/policy/audit.js +39 -0
  178. package/dist/src/policy/audit.js.map +1 -0
  179. package/dist/src/policy/engine.d.ts +35 -0
  180. package/dist/src/policy/engine.d.ts.map +1 -0
  181. package/dist/src/policy/engine.js +134 -0
  182. package/dist/src/policy/engine.js.map +1 -0
  183. package/dist/src/policy/scope.d.ts +27 -0
  184. package/dist/src/policy/scope.d.ts.map +1 -0
  185. package/dist/src/policy/scope.js +89 -0
  186. package/dist/src/policy/scope.js.map +1 -0
  187. package/dist/src/policy/types.d.ts +15 -0
  188. package/dist/src/policy/types.d.ts.map +1 -0
  189. package/dist/src/policy/types.js +2 -0
  190. package/dist/src/policy/types.js.map +1 -0
  191. package/dist/src/self-extend/generator.d.ts +27 -0
  192. package/dist/src/self-extend/generator.d.ts.map +1 -0
  193. package/dist/src/self-extend/generator.js +107 -0
  194. package/dist/src/self-extend/generator.js.map +1 -0
  195. package/dist/src/self-extend/publisher.d.ts +5 -0
  196. package/dist/src/self-extend/publisher.d.ts.map +1 -0
  197. package/dist/src/self-extend/publisher.js +40 -0
  198. package/dist/src/self-extend/publisher.js.map +1 -0
  199. package/dist/src/self-extend/sandbox.d.ts +10 -0
  200. package/dist/src/self-extend/sandbox.d.ts.map +1 -0
  201. package/dist/src/self-extend/sandbox.js +22 -0
  202. package/dist/src/self-extend/sandbox.js.map +1 -0
  203. package/dist/src/skills/hub/lockfile.d.ts +15 -0
  204. package/dist/src/skills/hub/lockfile.d.ts.map +1 -0
  205. package/dist/src/skills/hub/lockfile.js +13 -0
  206. package/dist/src/skills/hub/lockfile.js.map +1 -0
  207. package/dist/src/skills/hub/publisher.d.ts +7 -0
  208. package/dist/src/skills/hub/publisher.d.ts.map +1 -0
  209. package/dist/src/skills/hub/publisher.js +10 -0
  210. package/dist/src/skills/hub/publisher.js.map +1 -0
  211. package/dist/src/skills/hub/registry.d.ts +16 -0
  212. package/dist/src/skills/hub/registry.d.ts.map +1 -0
  213. package/dist/src/skills/hub/registry.js +24 -0
  214. package/dist/src/skills/hub/registry.js.map +1 -0
  215. package/dist/src/skills/index.d.ts +12 -0
  216. package/dist/src/skills/index.d.ts.map +1 -0
  217. package/dist/src/skills/index.js +82 -0
  218. package/dist/src/skills/index.js.map +1 -0
  219. package/dist/src/skills/lifecycle.d.ts +19 -0
  220. package/dist/src/skills/lifecycle.d.ts.map +1 -0
  221. package/dist/src/skills/lifecycle.js +48 -0
  222. package/dist/src/skills/lifecycle.js.map +1 -0
  223. package/dist/src/skills/loader.d.ts +43 -0
  224. package/dist/src/skills/loader.d.ts.map +1 -0
  225. package/dist/src/skills/loader.js +142 -0
  226. package/dist/src/skills/loader.js.map +1 -0
  227. package/dist/src/skills/runner.d.ts +43 -0
  228. package/dist/src/skills/runner.d.ts.map +1 -0
  229. package/dist/src/skills/runner.js +198 -0
  230. package/dist/src/skills/runner.js.map +1 -0
  231. package/dist/src/skills/types.d.ts +150 -0
  232. package/dist/src/skills/types.d.ts.map +1 -0
  233. package/dist/src/skills/types.js +31 -0
  234. package/dist/src/skills/types.js.map +1 -0
  235. package/dist/src/skills/validator.d.ts +19 -0
  236. package/dist/src/skills/validator.d.ts.map +1 -0
  237. package/dist/src/skills/validator.js +92 -0
  238. package/dist/src/skills/validator.js.map +1 -0
  239. package/dist/src/tools/core/cmd.d.ts +24 -0
  240. package/dist/src/tools/core/cmd.d.ts.map +1 -0
  241. package/dist/src/tools/core/cmd.js +55 -0
  242. package/dist/src/tools/core/cmd.js.map +1 -0
  243. package/dist/src/tools/core/fs.d.ts +76 -0
  244. package/dist/src/tools/core/fs.d.ts.map +1 -0
  245. package/dist/src/tools/core/fs.js +173 -0
  246. package/dist/src/tools/core/fs.js.map +1 -0
  247. package/dist/src/tools/core/git.d.ts +62 -0
  248. package/dist/src/tools/core/git.d.ts.map +1 -0
  249. package/dist/src/tools/core/git.js +138 -0
  250. package/dist/src/tools/core/git.js.map +1 -0
  251. package/dist/src/tools/core/project.d.ts +17 -0
  252. package/dist/src/tools/core/project.d.ts.map +1 -0
  253. package/dist/src/tools/core/project.js +104 -0
  254. package/dist/src/tools/core/project.js.map +1 -0
  255. package/dist/src/tools/plugins/loader.d.ts +13 -0
  256. package/dist/src/tools/plugins/loader.d.ts.map +1 -0
  257. package/dist/src/tools/plugins/loader.js +36 -0
  258. package/dist/src/tools/plugins/loader.js.map +1 -0
  259. package/dist/src/tools/registry.d.ts +38 -0
  260. package/dist/src/tools/registry.d.ts.map +1 -0
  261. package/dist/src/tools/registry.js +118 -0
  262. package/dist/src/tools/registry.js.map +1 -0
  263. package/dist/src/tools/types.d.ts +46 -0
  264. package/dist/src/tools/types.d.ts.map +1 -0
  265. package/dist/src/tools/types.js +10 -0
  266. package/dist/src/tools/types.js.map +1 -0
  267. package/dist/src/utils/hash.d.ts +13 -0
  268. package/dist/src/utils/hash.d.ts.map +1 -0
  269. package/dist/src/utils/hash.js +22 -0
  270. package/dist/src/utils/hash.js.map +1 -0
  271. package/dist/src/utils/paths.d.ts +45 -0
  272. package/dist/src/utils/paths.d.ts.map +1 -0
  273. package/dist/src/utils/paths.js +71 -0
  274. package/dist/src/utils/paths.js.map +1 -0
  275. package/dist/src/utils/schema.d.ts +16 -0
  276. package/dist/src/utils/schema.d.ts.map +1 -0
  277. package/dist/src/utils/schema.js +66 -0
  278. package/dist/src/utils/schema.js.map +1 -0
  279. package/package.json +77 -0
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Global tool registry — all tools register here
3
+ */
4
+ export class ToolRegistry {
5
+ tools = new Map();
6
+ static instance;
7
+ static getInstance() {
8
+ if (!ToolRegistry.instance) {
9
+ ToolRegistry.instance = new ToolRegistry();
10
+ }
11
+ return ToolRegistry.instance;
12
+ }
13
+ /**
14
+ * Register a tool definition
15
+ */
16
+ register(tool) {
17
+ if (this.tools.has(tool.name)) {
18
+ throw new Error(`Tool "${tool.name}" is already registered`);
19
+ }
20
+ this.tools.set(tool.name, tool);
21
+ }
22
+ /**
23
+ * Get a tool by name
24
+ */
25
+ get(name) {
26
+ return this.tools.get(name);
27
+ }
28
+ /**
29
+ * Check if a tool exists
30
+ */
31
+ has(name) {
32
+ return this.tools.has(name);
33
+ }
34
+ /**
35
+ * List all registered tools
36
+ */
37
+ list() {
38
+ return Array.from(this.tools.values()).map((t) => ({
39
+ name: t.name,
40
+ category: t.category,
41
+ description: t.description,
42
+ permissions: t.permissions,
43
+ }));
44
+ }
45
+ /**
46
+ * List tools by category
47
+ */
48
+ listByCategory(category) {
49
+ return this.list().filter((t) => t.category === category);
50
+ }
51
+ /**
52
+ * Execute a tool with input validation and permission checks
53
+ */
54
+ async execute(name, input, ctx) {
55
+ const tool = this.tools.get(name);
56
+ if (!tool) {
57
+ return {
58
+ success: false,
59
+ error: `Tool "${name}" not found`,
60
+ durationMs: 0,
61
+ };
62
+ }
63
+ // Validate input
64
+ const parseResult = tool.inputSchema.safeParse(input);
65
+ if (!parseResult.success) {
66
+ return {
67
+ success: false,
68
+ error: `Invalid input for "${name}": ${parseResult.error.issues.map((i) => i.message).join(', ')}`,
69
+ durationMs: 0,
70
+ };
71
+ }
72
+ // Check if tool is enabled in config
73
+ const isEnabled = ctx.config.tools.enabled.some((pattern) => {
74
+ if (pattern === name)
75
+ return true;
76
+ if (pattern.endsWith('.*')) {
77
+ return name.startsWith(pattern.slice(0, -1));
78
+ }
79
+ return false;
80
+ });
81
+ if (!isEnabled) {
82
+ return {
83
+ success: false,
84
+ error: `Tool "${name}" is not enabled in configuration`,
85
+ durationMs: 0,
86
+ };
87
+ }
88
+ // Execute with timeout
89
+ const timeout = tool.timeout ?? ctx.config.tools.timeoutMs;
90
+ const start = Date.now();
91
+ try {
92
+ const result = await Promise.race([
93
+ tool.execute(parseResult.data, ctx),
94
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool "${name}" timed out after ${timeout}ms`)), timeout)),
95
+ ]);
96
+ return { ...result, durationMs: Date.now() - start };
97
+ }
98
+ catch (error) {
99
+ return {
100
+ success: false,
101
+ error: error instanceof Error ? error.message : String(error),
102
+ durationMs: Date.now() - start,
103
+ };
104
+ }
105
+ }
106
+ /**
107
+ * Check if a tool name matches a pattern (e.g., "fs.*")
108
+ */
109
+ matchesPattern(name, pattern) {
110
+ if (pattern === name)
111
+ return true;
112
+ if (pattern.endsWith('.*')) {
113
+ return name.startsWith(pattern.slice(0, -1));
114
+ }
115
+ return false;
116
+ }
117
+ }
118
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ export type PermissionCategory = 'filesystem' | 'filesystem.read' | 'filesystem.write' | 'exec' | 'network' | 'ui_automation' | 'secrets';
3
+ export declare const PERMISSION_CATEGORIES: PermissionCategory[];
4
+ export interface ToolResult<T = unknown> {
5
+ success: boolean;
6
+ data?: T;
7
+ error?: string;
8
+ durationMs: number;
9
+ metadata?: Record<string, unknown>;
10
+ }
11
+ export interface ExecutionContext {
12
+ runId: string;
13
+ stepId?: string;
14
+ cwd: string;
15
+ config: import('../config/schema.js').AgentConfig;
16
+ dryRun?: boolean;
17
+ autonomous?: boolean;
18
+ approvedPermissions: Set<string>;
19
+ onApproval?: (action: ActionDescriptor) => Promise<boolean>;
20
+ onProgress?: (message: string) => void;
21
+ }
22
+ export interface ActionDescriptor {
23
+ tool: string;
24
+ operation: string;
25
+ description: string;
26
+ permissions: PermissionCategory[];
27
+ args?: Record<string, unknown>;
28
+ riskLevel: 'low' | 'medium' | 'high';
29
+ }
30
+ export interface ToolDefinition<TInput = unknown, TOutput = unknown> {
31
+ name: string;
32
+ category: string;
33
+ description: string;
34
+ inputSchema: z.ZodType<TInput>;
35
+ outputSchema: z.ZodType<TOutput>;
36
+ permissions: PermissionCategory[];
37
+ timeout?: number;
38
+ execute(input: TInput, ctx: ExecutionContext): Promise<ToolResult<TOutput>>;
39
+ }
40
+ export interface ToolMetadata {
41
+ name: string;
42
+ category: string;
43
+ description: string;
44
+ permissions: PermissionCategory[];
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,MAAM,kBAAkB,GACxB,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,MAAM,GACN,SAAS,GACT,eAAe,GACf,SAAS,CAAC;AAEhB,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAQrD,CAAC;AAGF,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAGD,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,qBAAqB,EAAE,WAAW,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAGD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACxC;AAGD,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;CAC/E;AAGD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACrC"}
@@ -0,0 +1,10 @@
1
+ export const PERMISSION_CATEGORIES = [
2
+ 'filesystem',
3
+ 'filesystem.read',
4
+ 'filesystem.write',
5
+ 'exec',
6
+ 'network',
7
+ 'ui_automation',
8
+ 'secrets',
9
+ ];
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACvD,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,MAAM;IACN,SAAS;IACT,eAAe;IACf,SAAS;CACZ,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Hash a string using SHA-256
3
+ */
4
+ export declare function hashString(content: string): string;
5
+ /**
6
+ * Hash a file's content
7
+ */
8
+ export declare function hashFile(filePath: string): Promise<string>;
9
+ /**
10
+ * Generate a short hash (first 8 chars) for display purposes
11
+ */
12
+ export declare function shortHash(content: string): string;
13
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/utils/hash.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,22 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFile } from 'node:fs/promises';
3
+ /**
4
+ * Hash a string using SHA-256
5
+ */
6
+ export function hashString(content) {
7
+ return createHash('sha256').update(content).digest('hex');
8
+ }
9
+ /**
10
+ * Hash a file's content
11
+ */
12
+ export async function hashFile(filePath) {
13
+ const content = await readFile(filePath);
14
+ return createHash('sha256').update(content).digest('hex');
15
+ }
16
+ /**
17
+ * Generate a short hash (first 8 chars) for display purposes
18
+ */
19
+ export function shortHash(content) {
20
+ return hashString(content).substring(0, 8);
21
+ }
22
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACtC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACrC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Resolve a path relative to the current working directory
3
+ */
4
+ export declare function resolveProjectPath(...segments: string[]): string;
5
+ /**
6
+ * Get the .agent directory path for the current project
7
+ */
8
+ export declare function getAgentDir(): string;
9
+ /**
10
+ * Get the skills directory
11
+ */
12
+ export declare function getSkillsDir(): string;
13
+ /**
14
+ * Get the plans directory
15
+ */
16
+ export declare function getPlansDir(): string;
17
+ /**
18
+ * Get the runs directory
19
+ */
20
+ export declare function getRunsDir(): string;
21
+ /**
22
+ * Get the plugins directory
23
+ */
24
+ export declare function getPluginsDir(): string;
25
+ /**
26
+ * Get the logs directory
27
+ */
28
+ export declare function getLogsDir(): string;
29
+ /**
30
+ * Get the global agent config directory
31
+ */
32
+ export declare function getGlobalAgentDir(): string;
33
+ /**
34
+ * Get the config file path
35
+ */
36
+ export declare function getConfigPath(): string;
37
+ /**
38
+ * Generate a unique run ID with timestamp
39
+ */
40
+ export declare function generateRunId(): string;
41
+ /**
42
+ * Normalize a tool or skill name
43
+ */
44
+ export declare function normalizeName(name: string): string;
45
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,71 @@
1
+ import path from 'node:path';
2
+ import os from 'node:os';
3
+ /**
4
+ * Resolve a path relative to the current working directory
5
+ */
6
+ export function resolveProjectPath(...segments) {
7
+ return path.resolve(process.cwd(), ...segments);
8
+ }
9
+ /**
10
+ * Get the .agent directory path for the current project
11
+ */
12
+ export function getAgentDir() {
13
+ return resolveProjectPath('.agent');
14
+ }
15
+ /**
16
+ * Get the skills directory
17
+ */
18
+ export function getSkillsDir() {
19
+ return path.join(getAgentDir(), 'skills');
20
+ }
21
+ /**
22
+ * Get the plans directory
23
+ */
24
+ export function getPlansDir() {
25
+ return path.join(getAgentDir(), 'plans');
26
+ }
27
+ /**
28
+ * Get the runs directory
29
+ */
30
+ export function getRunsDir() {
31
+ return path.join(getAgentDir(), 'runs');
32
+ }
33
+ /**
34
+ * Get the plugins directory
35
+ */
36
+ export function getPluginsDir() {
37
+ return path.join(getAgentDir(), 'plugins');
38
+ }
39
+ /**
40
+ * Get the logs directory
41
+ */
42
+ export function getLogsDir() {
43
+ return path.join(getAgentDir(), 'logs');
44
+ }
45
+ /**
46
+ * Get the global agent config directory
47
+ */
48
+ export function getGlobalAgentDir() {
49
+ return path.join(os.homedir(), '.agent-runtime');
50
+ }
51
+ /**
52
+ * Get the config file path
53
+ */
54
+ export function getConfigPath() {
55
+ return resolveProjectPath('agent.config.json');
56
+ }
57
+ /**
58
+ * Generate a unique run ID with timestamp
59
+ */
60
+ export function generateRunId() {
61
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
62
+ const rand = Math.random().toString(36).substring(2, 8);
63
+ return `run-${timestamp}-${rand}`;
64
+ }
65
+ /**
66
+ * Normalize a tool or skill name
67
+ */
68
+ export function normalizeName(name) {
69
+ return name.toLowerCase().replace(/[^a-z0-9._-]/g, '-');
70
+ }
71
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAG,QAAkB;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,OAAO,SAAS,IAAI,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Validate data against a zod schema with friendly error messages
4
+ */
5
+ export declare function validateSchema<T>(schema: z.ZodType<T>, data: unknown, context?: string): {
6
+ success: true;
7
+ data: T;
8
+ } | {
9
+ success: false;
10
+ errors: string[];
11
+ };
12
+ /**
13
+ * Create a JSON Schema-like object from a zod schema (simplified)
14
+ */
15
+ export declare function zodToJsonSchema(schema: z.ZodType): Record<string, unknown>;
16
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC5B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAWnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0C1E"}
@@ -0,0 +1,66 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Validate data against a zod schema with friendly error messages
4
+ */
5
+ export function validateSchema(schema, data, context) {
6
+ const result = schema.safeParse(data);
7
+ if (result.success) {
8
+ return { success: true, data: result.data };
9
+ }
10
+ const errors = result.error.issues.map((issue) => {
11
+ const path = issue.path.join('.');
12
+ const prefix = context ? `${context}: ` : '';
13
+ return `${prefix}${path ? `${path}: ` : ''}${issue.message}`;
14
+ });
15
+ return { success: false, errors };
16
+ }
17
+ /**
18
+ * Create a JSON Schema-like object from a zod schema (simplified)
19
+ */
20
+ export function zodToJsonSchema(schema) {
21
+ if (schema instanceof z.ZodObject) {
22
+ const shape = schema.shape;
23
+ const properties = {};
24
+ const required = [];
25
+ for (const [key, value] of Object.entries(shape)) {
26
+ properties[key] = zodToJsonSchema(value);
27
+ // Default fields are optional in JSON schema
28
+ if (!(value instanceof z.ZodOptional) && !(value instanceof z.ZodDefault)) {
29
+ required.push(key);
30
+ }
31
+ }
32
+ return { type: 'object', properties, required };
33
+ }
34
+ if (schema instanceof z.ZodString) {
35
+ const def = schema._def;
36
+ const result = { type: 'string' };
37
+ if (def.description)
38
+ result.description = def.description;
39
+ return result;
40
+ }
41
+ if (schema instanceof z.ZodNumber)
42
+ return { type: 'number' };
43
+ if (schema instanceof z.ZodBoolean)
44
+ return { type: 'boolean' };
45
+ if (schema instanceof z.ZodArray) {
46
+ return {
47
+ type: 'array',
48
+ items: zodToJsonSchema(schema._def.type),
49
+ };
50
+ }
51
+ if (schema instanceof z.ZodOptional) {
52
+ return zodToJsonSchema(schema._def.innerType);
53
+ }
54
+ if (schema instanceof z.ZodDefault) {
55
+ return zodToJsonSchema(schema._def.innerType);
56
+ }
57
+ if (schema instanceof z.ZodEffects) {
58
+ return zodToJsonSchema(schema._def.schema);
59
+ }
60
+ if (schema instanceof z.ZodEnum) {
61
+ return { type: 'string', enum: schema._def.values };
62
+ }
63
+ // Fallback for unknown types (e.g. ZodAny, ZodUnknown) - use empty schema which matches anything, or string if safest
64
+ return { type: 'string' };
65
+ }
66
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@praveencs/agent",
3
+ "version": "0.1.0",
4
+ "files": [
5
+ "dist",
6
+ "bin",
7
+ "README.md",
8
+ "src/index.d.ts"
9
+ ],
10
+ "description": "CLI agent runtime with Skill Hub, Plan Files, and permissioned tools",
11
+ "type": "module",
12
+ "bin": {
13
+ "agent": "./dist/bin/agent.js"
14
+ },
15
+ "main": "./dist/src/index.js",
16
+ "types": "./dist/src/index.d.ts",
17
+ "scripts": {
18
+ "build": "tsc -p tsconfig.build.json",
19
+ "dev": "tsx watch bin/agent.ts",
20
+ "start": "node dist/bin/agent.js",
21
+ "lint": "eslint src/ bin/ --ext .ts",
22
+ "format": "prettier --write 'src/**/*.ts' 'bin/**/*.ts'",
23
+ "test": "jest --config jest.config.ts",
24
+ "test:integration": "jest --config jest.config.ts --testPathPattern=integration",
25
+ "prepublishOnly": "npm run build"
26
+ },
27
+ "keywords": [
28
+ "agent",
29
+ "cli",
30
+ "automation",
31
+ "skills",
32
+ "mcp",
33
+ "llm"
34
+ ],
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/praveencs87/agent.git"
39
+ },
40
+ "homepage": "https://github.com/praveencs87/agent#readme",
41
+ "bugs": {
42
+ "url": "https://github.com/praveencs87/agent/issues"
43
+ },
44
+ "engines": {
45
+ "node": ">=18.0.0"
46
+ },
47
+ "dependencies": {
48
+ "@anthropic-ai/sdk": "^0.39.0",
49
+ "@modelcontextprotocol/sdk": "^1.5.0",
50
+ "chalk": "^5.4.1",
51
+ "chokidar": "^4.0.3",
52
+ "commander": "^13.1.0",
53
+ "croner": "^9.0.0",
54
+ "diff": "^7.0.0",
55
+ "glob": "^11.0.1",
56
+ "hnswsqlite": "^0.2.0",
57
+ "inquirer": "^12.4.0",
58
+ "keytar": "^7.9.0",
59
+ "openai": "^4.82.0",
60
+ "ora": "^8.2.0",
61
+ "pino": "^9.6.0",
62
+ "pino-pretty": "^13.0.0",
63
+ "yaml": "^2.7.0",
64
+ "zod": "^3.24.2"
65
+ },
66
+ "devDependencies": {
67
+ "@types/diff": "^7.0.0",
68
+ "@types/inquirer": "^9.0.7",
69
+ "@types/node": "^22.13.0",
70
+ "eslint": "^9.19.0",
71
+ "jest": "^29.7.0",
72
+ "prettier": "^3.4.2",
73
+ "ts-jest": "^29.2.5",
74
+ "tsx": "^4.19.2",
75
+ "typescript": "^5.7.3"
76
+ }
77
+ }