llm-agent-cli 2.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 (89) hide show
  1. package/dist/agent.d.ts +112 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +730 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/audit.d.ts +24 -0
  6. package/dist/audit.d.ts.map +1 -0
  7. package/dist/audit.js +94 -0
  8. package/dist/audit.js.map +1 -0
  9. package/dist/auth.d.ts +36 -0
  10. package/dist/auth.d.ts.map +1 -0
  11. package/dist/auth.js +236 -0
  12. package/dist/auth.js.map +1 -0
  13. package/dist/config.d.ts +35 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +92 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/context.d.ts +48 -0
  18. package/dist/context.d.ts.map +1 -0
  19. package/dist/context.js +94 -0
  20. package/dist/context.js.map +1 -0
  21. package/dist/diff.d.ts +27 -0
  22. package/dist/diff.d.ts.map +1 -0
  23. package/dist/diff.js +174 -0
  24. package/dist/diff.js.map +1 -0
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +905 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/input.d.ts +13 -0
  30. package/dist/input.d.ts.map +1 -0
  31. package/dist/input.js +88 -0
  32. package/dist/input.js.map +1 -0
  33. package/dist/memory.d.ts +32 -0
  34. package/dist/memory.d.ts.map +1 -0
  35. package/dist/memory.js +103 -0
  36. package/dist/memory.js.map +1 -0
  37. package/dist/preprocessor.d.ts +12 -0
  38. package/dist/preprocessor.d.ts.map +1 -0
  39. package/dist/preprocessor.js +138 -0
  40. package/dist/preprocessor.js.map +1 -0
  41. package/dist/project.d.ts +10 -0
  42. package/dist/project.d.ts.map +1 -0
  43. package/dist/project.js +145 -0
  44. package/dist/project.js.map +1 -0
  45. package/dist/renderer.d.ts +2 -0
  46. package/dist/renderer.d.ts.map +1 -0
  47. package/dist/renderer.js +31 -0
  48. package/dist/renderer.js.map +1 -0
  49. package/dist/session.d.ts +36 -0
  50. package/dist/session.d.ts.map +1 -0
  51. package/dist/session.js +78 -0
  52. package/dist/session.js.map +1 -0
  53. package/dist/tools/filesystem.d.ts +138 -0
  54. package/dist/tools/filesystem.d.ts.map +1 -0
  55. package/dist/tools/filesystem.js +539 -0
  56. package/dist/tools/filesystem.js.map +1 -0
  57. package/dist/tools/git.d.ts +60 -0
  58. package/dist/tools/git.d.ts.map +1 -0
  59. package/dist/tools/git.js +188 -0
  60. package/dist/tools/git.js.map +1 -0
  61. package/dist/tools/index.d.ts +386 -0
  62. package/dist/tools/index.d.ts.map +1 -0
  63. package/dist/tools/index.js +142 -0
  64. package/dist/tools/index.js.map +1 -0
  65. package/dist/tools/linter.d.ts +44 -0
  66. package/dist/tools/linter.d.ts.map +1 -0
  67. package/dist/tools/linter.js +426 -0
  68. package/dist/tools/linter.js.map +1 -0
  69. package/dist/tools/network.d.ts +17 -0
  70. package/dist/tools/network.d.ts.map +1 -0
  71. package/dist/tools/network.js +121 -0
  72. package/dist/tools/network.js.map +1 -0
  73. package/dist/tools/search.d.ts +33 -0
  74. package/dist/tools/search.d.ts.map +1 -0
  75. package/dist/tools/search.js +263 -0
  76. package/dist/tools/search.js.map +1 -0
  77. package/dist/tools/security.d.ts +18 -0
  78. package/dist/tools/security.d.ts.map +1 -0
  79. package/dist/tools/security.js +242 -0
  80. package/dist/tools/security.js.map +1 -0
  81. package/dist/tools/shell.d.ts +14 -0
  82. package/dist/tools/shell.d.ts.map +1 -0
  83. package/dist/tools/shell.js +68 -0
  84. package/dist/tools/shell.js.map +1 -0
  85. package/dist/tools/types.d.ts +5 -0
  86. package/dist/tools/types.d.ts.map +1 -0
  87. package/dist/tools/types.js +2 -0
  88. package/dist/tools/types.js.map +1 -0
  89. package/package.json +59 -0
@@ -0,0 +1,145 @@
1
+ import fs from "fs/promises";
2
+ import path from "path";
3
+ async function pathExists(targetPath) {
4
+ try {
5
+ await fs.access(targetPath);
6
+ return true;
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ async function findGitRoot(startDir) {
13
+ let current = path.resolve(startDir);
14
+ while (true) {
15
+ if (await pathExists(path.join(current, ".git"))) {
16
+ return current;
17
+ }
18
+ const parent = path.dirname(current);
19
+ if (parent === current)
20
+ return null;
21
+ current = parent;
22
+ }
23
+ }
24
+ async function readReadmeExcerpt(root) {
25
+ const candidates = ["README.md", "readme.md", "README"];
26
+ for (const candidate of candidates) {
27
+ const fullPath = path.join(root, candidate);
28
+ if (!(await pathExists(fullPath)))
29
+ continue;
30
+ try {
31
+ const text = await fs.readFile(fullPath, "utf-8");
32
+ return text.split(/\r?\n/).slice(0, 50).join("\n");
33
+ }
34
+ catch {
35
+ // continue to next candidate
36
+ }
37
+ }
38
+ return "";
39
+ }
40
+ function detectPackageManager(root, files) {
41
+ if (files.has("pnpm-lock.yaml"))
42
+ return "pnpm";
43
+ if (files.has("yarn.lock"))
44
+ return "yarn";
45
+ if (files.has("bun.lock") || files.has("bun.lockb"))
46
+ return "bun";
47
+ if (files.has("package-lock.json"))
48
+ return "npm";
49
+ if (files.has("poetry.lock"))
50
+ return "poetry";
51
+ if (files.has("Pipfile.lock"))
52
+ return "pipenv";
53
+ if (files.has("Cargo.lock"))
54
+ return "cargo";
55
+ if (files.has("go.sum"))
56
+ return "go";
57
+ return "unknown";
58
+ }
59
+ async function detectFramework(root) {
60
+ const packageJson = path.join(root, "package.json");
61
+ if (await pathExists(packageJson)) {
62
+ try {
63
+ const raw = await fs.readFile(packageJson, "utf-8");
64
+ const parsed = JSON.parse(raw);
65
+ const deps = {
66
+ ...(parsed.dependencies ?? {}),
67
+ ...(parsed.devDependencies ?? {}),
68
+ };
69
+ if (deps.next)
70
+ return "Next.js";
71
+ if (deps.react)
72
+ return "React";
73
+ if (deps.vue)
74
+ return "Vue";
75
+ if (deps["@angular/core"])
76
+ return "Angular";
77
+ if (deps.svelte)
78
+ return "Svelte";
79
+ if (deps.express)
80
+ return "Express";
81
+ if (deps.fastify)
82
+ return "Fastify";
83
+ }
84
+ catch {
85
+ // ignore parse errors
86
+ }
87
+ }
88
+ if (await pathExists(path.join(root, "pyproject.toml"))) {
89
+ return "Python project";
90
+ }
91
+ if (await pathExists(path.join(root, "go.mod"))) {
92
+ return "Go module";
93
+ }
94
+ if (await pathExists(path.join(root, "Cargo.toml"))) {
95
+ return "Rust crate";
96
+ }
97
+ return "Unknown";
98
+ }
99
+ async function detectLanguage(root, files) {
100
+ if (files.has("package.json"))
101
+ return "TypeScript/Node.js";
102
+ if (files.has("pyproject.toml") || files.has("requirements.txt"))
103
+ return "Python";
104
+ if (files.has("go.mod"))
105
+ return "Go";
106
+ if (files.has("Cargo.toml"))
107
+ return "Rust";
108
+ if (files.has("pom.xml"))
109
+ return "Java";
110
+ return "Unknown";
111
+ }
112
+ export async function detectProjectContext(startDir) {
113
+ const gitRoot = await findGitRoot(startDir);
114
+ const workspaceRoot = gitRoot ?? path.resolve(startDir);
115
+ let entries = [];
116
+ try {
117
+ entries = await fs.readdir(workspaceRoot);
118
+ }
119
+ catch {
120
+ entries = [];
121
+ }
122
+ const files = new Set(entries);
123
+ const language = await detectLanguage(workspaceRoot, files);
124
+ const framework = await detectFramework(workspaceRoot);
125
+ const packageManager = detectPackageManager(workspaceRoot, files);
126
+ const readmeExcerpt = await readReadmeExcerpt(workspaceRoot);
127
+ const summaryParts = [
128
+ `Workspace root: ${workspaceRoot}`,
129
+ `Language: ${language}`,
130
+ `Package manager: ${packageManager}`,
131
+ `Framework: ${framework}`,
132
+ ];
133
+ if (readmeExcerpt) {
134
+ summaryParts.push(`README excerpt:\n${readmeExcerpt}`);
135
+ }
136
+ return {
137
+ workspaceRoot,
138
+ language,
139
+ packageManager,
140
+ framework,
141
+ readmeExcerpt,
142
+ summary: summaryParts.join("\n"),
143
+ };
144
+ }
145
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAWxB,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS;QAE5C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAkB;IAC5D,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5C,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAG5B,CAAC;YACF,MAAM,IAAI,GAAG;gBACX,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;aAClC,CAAC;YAEF,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,eAAe,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC;YACjC,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YACnC,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAkB;IAC5D,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC3D,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClF,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG;QACnB,mBAAmB,aAAa,EAAE;QAClC,aAAa,QAAQ,EAAE;QACvB,oBAAoB,cAAc,EAAE;QACpC,cAAc,SAAS,EAAE;KAC1B,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,YAAY,CAAC,IAAI,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,aAAa;QACb,QAAQ;QACR,cAAc;QACd,SAAS;QACT,aAAa;QACb,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function renderMarkdown(markdown: string): string;
2
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AA6BA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvD"}
@@ -0,0 +1,31 @@
1
+ import { marked } from "marked";
2
+ import { highlight } from "cli-highlight";
3
+ import TerminalRenderer from "marked-terminal";
4
+ let configured = false;
5
+ function configureRenderer() {
6
+ if (configured)
7
+ return;
8
+ marked.setOptions({
9
+ gfm: true,
10
+ renderer: new TerminalRenderer({
11
+ reflowText: true,
12
+ code: (code, language) => {
13
+ try {
14
+ return highlight(code, {
15
+ language: language || undefined,
16
+ ignoreIllegals: true,
17
+ });
18
+ }
19
+ catch {
20
+ return code;
21
+ }
22
+ },
23
+ }),
24
+ });
25
+ configured = true;
26
+ }
27
+ export function renderMarkdown(markdown) {
28
+ configureRenderer();
29
+ return marked.parse(markdown);
30
+ }
31
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAE/C,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,SAAS,iBAAiB;IACxB,IAAI,UAAU;QAAE,OAAO;IAEvB,MAAM,CAAC,UAAU,CAAC;QAChB,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,IAAI,gBAAgB,CAAC;YAC7B,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;gBACvC,IAAI,CAAC;oBACH,OAAO,SAAS,CAAC,IAAI,EAAE;wBACrB,QAAQ,EAAE,QAAQ,IAAI,SAAS;wBAC/B,cAAc,EAAE,IAAI;qBACrB,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;SACF,CAAC;KACH,CAAC,CAAC;IAEH,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,iBAAiB,EAAE,CAAC;IACpB,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAW,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { AgentPaths } from "./config.js";
2
+ import type { ContextState } from "./context.js";
3
+ export interface PersistedMessage {
4
+ role: "system" | "user" | "assistant" | "tool";
5
+ content: string | null;
6
+ tool_calls?: Array<{
7
+ id: string;
8
+ type: "function";
9
+ function: {
10
+ name: string;
11
+ arguments: string;
12
+ };
13
+ }>;
14
+ tool_call_id?: string;
15
+ name?: string;
16
+ }
17
+ export interface PersistedAgentState {
18
+ history: PersistedMessage[];
19
+ lastUserInput: string | null;
20
+ verboseTools: boolean;
21
+ contextState: ContextState;
22
+ cwd: string;
23
+ }
24
+ export declare class SessionStore {
25
+ private readonly paths;
26
+ constructor(paths: AgentPaths);
27
+ createSessionId(): string;
28
+ private getSessionPath;
29
+ private getNamedSessionPath;
30
+ appendSnapshot(sessionId: string, state: PersistedAgentState): Promise<void>;
31
+ loadLatestSnapshotById(sessionId: string): Promise<PersistedAgentState | null>;
32
+ saveNamed(name: string, state: PersistedAgentState): Promise<string>;
33
+ loadNamed(name: string): Promise<PersistedAgentState | null>;
34
+ listNamed(): Promise<string[]>;
35
+ }
36
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAYD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAEvB,KAAK,EAAE,UAAU;IAI7B,eAAe,IAAI,MAAM;IAMzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAIrB,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;IAaV,sBAAsB,CAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAahC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBpE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAW5D,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAWrC"}
@@ -0,0 +1,78 @@
1
+ import crypto from "crypto";
2
+ import fs from "fs/promises";
3
+ import path from "path";
4
+ function sanitizeName(name) {
5
+ return name.replace(/[^a-zA-Z0-9._-]/g, "_");
6
+ }
7
+ export class SessionStore {
8
+ paths;
9
+ constructor(paths) {
10
+ this.paths = paths;
11
+ }
12
+ createSessionId() {
13
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
14
+ const rand = crypto.randomBytes(4).toString("hex");
15
+ return `${stamp}-${rand}`;
16
+ }
17
+ getSessionPath(sessionId) {
18
+ return path.join(this.paths.sessionsDir, `${sessionId}.jsonl`);
19
+ }
20
+ getNamedSessionPath(name) {
21
+ return path.join(this.paths.namedSessionsDir, `${sanitizeName(name)}.json`);
22
+ }
23
+ async appendSnapshot(sessionId, state) {
24
+ const snapshot = {
25
+ ts: new Date().toISOString(),
26
+ session_id: sessionId,
27
+ state,
28
+ };
29
+ await fs.appendFile(this.getSessionPath(sessionId), `${JSON.stringify(snapshot)}\n`, "utf-8");
30
+ }
31
+ async loadLatestSnapshotById(sessionId) {
32
+ const filePath = this.getSessionPath(sessionId);
33
+ try {
34
+ const raw = await fs.readFile(filePath, "utf-8");
35
+ const lines = raw.split(/\r?\n/).filter(Boolean);
36
+ if (lines.length === 0)
37
+ return null;
38
+ const last = JSON.parse(lines[lines.length - 1] ?? "{}");
39
+ return last.state ?? null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ async saveNamed(name, state) {
46
+ const target = this.getNamedSessionPath(name);
47
+ await fs.writeFile(target, JSON.stringify({
48
+ ts: new Date().toISOString(),
49
+ name,
50
+ state,
51
+ }, null, 2), "utf-8");
52
+ return target;
53
+ }
54
+ async loadNamed(name) {
55
+ const target = this.getNamedSessionPath(name);
56
+ try {
57
+ const raw = await fs.readFile(target, "utf-8");
58
+ const parsed = JSON.parse(raw);
59
+ return parsed.state ?? null;
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ }
65
+ async listNamed() {
66
+ try {
67
+ const entries = await fs.readdir(this.paths.namedSessionsDir);
68
+ return entries
69
+ .filter((entry) => entry.endsWith(".json"))
70
+ .map((entry) => entry.slice(0, -5))
71
+ .sort((a, b) => a.localeCompare(b));
72
+ }
73
+ catch {
74
+ return [];
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import { z } from "zod";
2
+ export declare const ReadFileSchema: z.ZodEffects<z.ZodObject<{
3
+ absolute_path: z.ZodString;
4
+ start_line: z.ZodOptional<z.ZodNumber>;
5
+ end_line: z.ZodOptional<z.ZodNumber>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ absolute_path: string;
8
+ start_line?: number | undefined;
9
+ end_line?: number | undefined;
10
+ }, {
11
+ absolute_path: string;
12
+ start_line?: number | undefined;
13
+ end_line?: number | undefined;
14
+ }>, {
15
+ absolute_path: string;
16
+ start_line?: number | undefined;
17
+ end_line?: number | undefined;
18
+ }, {
19
+ absolute_path: string;
20
+ start_line?: number | undefined;
21
+ end_line?: number | undefined;
22
+ }>;
23
+ export declare const WriteToFileSchema: z.ZodObject<{
24
+ absolute_path: z.ZodString;
25
+ content: z.ZodString;
26
+ overwrite: z.ZodDefault<z.ZodBoolean>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ absolute_path: string;
29
+ content: string;
30
+ overwrite: boolean;
31
+ }, {
32
+ absolute_path: string;
33
+ content: string;
34
+ overwrite?: boolean | undefined;
35
+ }>;
36
+ export declare const ApplyDiffSchema: z.ZodObject<{
37
+ absolute_path: z.ZodString;
38
+ search_string: z.ZodString;
39
+ replace_string: z.ZodString;
40
+ }, "strip", z.ZodTypeAny, {
41
+ absolute_path: string;
42
+ search_string: string;
43
+ replace_string: string;
44
+ }, {
45
+ absolute_path: string;
46
+ search_string: string;
47
+ replace_string: string;
48
+ }>;
49
+ export declare const ListDirectorySchema: z.ZodObject<{
50
+ path: z.ZodString;
51
+ }, "strip", z.ZodTypeAny, {
52
+ path: string;
53
+ }, {
54
+ path: string;
55
+ }>;
56
+ export declare const CreateDirectorySchema: z.ZodObject<{
57
+ path: z.ZodString;
58
+ recursive: z.ZodDefault<z.ZodBoolean>;
59
+ }, "strip", z.ZodTypeAny, {
60
+ path: string;
61
+ recursive: boolean;
62
+ }, {
63
+ path: string;
64
+ recursive?: boolean | undefined;
65
+ }>;
66
+ export declare const DeleteFileSchema: z.ZodObject<{
67
+ path: z.ZodString;
68
+ recursive: z.ZodDefault<z.ZodBoolean>;
69
+ }, "strip", z.ZodTypeAny, {
70
+ path: string;
71
+ recursive: boolean;
72
+ }, {
73
+ path: string;
74
+ recursive?: boolean | undefined;
75
+ }>;
76
+ export declare const MoveFileSchema: z.ZodObject<{
77
+ source_path: z.ZodString;
78
+ destination_path: z.ZodString;
79
+ }, "strip", z.ZodTypeAny, {
80
+ source_path: string;
81
+ destination_path: string;
82
+ }, {
83
+ source_path: string;
84
+ destination_path: string;
85
+ }>;
86
+ export declare const GetFileInfoSchema: z.ZodObject<{
87
+ path: z.ZodString;
88
+ }, "strip", z.ZodTypeAny, {
89
+ path: string;
90
+ }, {
91
+ path: string;
92
+ }>;
93
+ export declare const ShowDiffSchema: z.ZodObject<{
94
+ absolute_path: z.ZodString;
95
+ new_content: z.ZodString;
96
+ context_lines: z.ZodDefault<z.ZodNumber>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ absolute_path: string;
99
+ new_content: string;
100
+ context_lines: number;
101
+ }, {
102
+ absolute_path: string;
103
+ new_content: string;
104
+ context_lines?: number | undefined;
105
+ }>;
106
+ export declare const SearchReplaceAllSchema: z.ZodObject<{
107
+ directory: z.ZodString;
108
+ search_pattern: z.ZodString;
109
+ replace_string: z.ZodString;
110
+ glob: z.ZodOptional<z.ZodString>;
111
+ regex: z.ZodDefault<z.ZodBoolean>;
112
+ dry_run: z.ZodDefault<z.ZodBoolean>;
113
+ }, "strip", z.ZodTypeAny, {
114
+ replace_string: string;
115
+ directory: string;
116
+ search_pattern: string;
117
+ regex: boolean;
118
+ dry_run: boolean;
119
+ glob?: string | undefined;
120
+ }, {
121
+ replace_string: string;
122
+ directory: string;
123
+ search_pattern: string;
124
+ glob?: string | undefined;
125
+ regex?: boolean | undefined;
126
+ dry_run?: boolean | undefined;
127
+ }>;
128
+ export declare function read_file(args: z.infer<typeof ReadFileSchema>): Promise<string>;
129
+ export declare function write_to_file(args: z.infer<typeof WriteToFileSchema>): Promise<string>;
130
+ export declare function apply_diff(args: z.infer<typeof ApplyDiffSchema>): Promise<string>;
131
+ export declare function list_directory(args: z.infer<typeof ListDirectorySchema>): Promise<string>;
132
+ export declare function create_directory(args: z.infer<typeof CreateDirectorySchema>): Promise<string>;
133
+ export declare function delete_file(args: z.infer<typeof DeleteFileSchema>): Promise<string>;
134
+ export declare function move_file(args: z.infer<typeof MoveFileSchema>): Promise<string>;
135
+ export declare function show_diff(args: z.infer<typeof ShowDiffSchema>): Promise<string>;
136
+ export declare function search_and_replace_all(args: z.infer<typeof SearchReplaceAllSchema>): Promise<string>;
137
+ export declare function get_file_info(args: z.infer<typeof GetFileInfoSchema>): Promise<string>;
138
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;EA2BxB,CAAC;AAEJ,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAO5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;EAQhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAYzB,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAsBjC,CAAC;AA+DH,wBAAsB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCrF;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAyCjB;AA2DD,wBAAsB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CvF;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBzF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAcrF;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAkHjB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAmBjB"}