lonny-agent 0.2.3 → 0.2.6

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 (129) hide show
  1. package/README.md +326 -326
  2. package/dist/agent/index.js +1 -1
  3. package/dist/agent/index.js.map +1 -1
  4. package/dist/agent/llm.d.ts +4 -0
  5. package/dist/agent/llm.d.ts.map +1 -1
  6. package/dist/agent/project.d.ts +26 -0
  7. package/dist/agent/project.d.ts.map +1 -0
  8. package/dist/agent/project.js +303 -0
  9. package/dist/agent/project.js.map +1 -0
  10. package/dist/agent/prompt-builder.d.ts +1 -1
  11. package/dist/agent/prompt-builder.d.ts.map +1 -1
  12. package/dist/agent/prompt-builder.js +22 -13
  13. package/dist/agent/prompt-builder.js.map +1 -1
  14. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  15. package/dist/agent/providers/anthropic.js +20 -2
  16. package/dist/agent/providers/anthropic.js.map +1 -1
  17. package/dist/agent/providers/google.d.ts.map +1 -1
  18. package/dist/agent/providers/google.js +1 -1
  19. package/dist/agent/providers/google.js.map +1 -1
  20. package/dist/agent/providers/ollama.d.ts.map +1 -1
  21. package/dist/agent/providers/ollama.js +2 -1
  22. package/dist/agent/providers/ollama.js.map +1 -1
  23. package/dist/agent/providers/openai.d.ts.map +1 -1
  24. package/dist/agent/providers/openai.js +63 -3
  25. package/dist/agent/providers/openai.js.map +1 -1
  26. package/dist/agent/session.d.ts +8 -2
  27. package/dist/agent/session.d.ts.map +1 -1
  28. package/dist/agent/session.js +250 -153
  29. package/dist/agent/session.js.map +1 -1
  30. package/dist/config/index.d.ts.map +1 -1
  31. package/dist/config/index.js +7 -1
  32. package/dist/config/index.js.map +1 -1
  33. package/dist/tools/__tests__/bash.test.js +1 -1
  34. package/dist/tools/__tests__/bash.test.js.map +1 -1
  35. package/dist/tools/__tests__/edit.test.js +875 -371
  36. package/dist/tools/__tests__/edit.test.js.map +1 -1
  37. package/dist/tools/__tests__/grep.test.js +32 -0
  38. package/dist/tools/__tests__/grep.test.js.map +1 -1
  39. package/dist/tools/__tests__/sed.test.d.ts +2 -0
  40. package/dist/tools/__tests__/sed.test.d.ts.map +1 -0
  41. package/dist/tools/__tests__/sed.test.js +228 -0
  42. package/dist/tools/__tests__/sed.test.js.map +1 -0
  43. package/dist/tools/bash.d.ts.map +1 -1
  44. package/dist/tools/bash.js +83 -10
  45. package/dist/tools/bash.js.map +1 -1
  46. package/dist/tools/edit.d.ts +58 -0
  47. package/dist/tools/edit.d.ts.map +1 -1
  48. package/dist/tools/edit.js +366 -149
  49. package/dist/tools/edit.js.map +1 -1
  50. package/dist/tools/grep.d.ts.map +1 -1
  51. package/dist/tools/grep.js +54 -30
  52. package/dist/tools/grep.js.map +1 -1
  53. package/dist/tools/read.d.ts +6 -0
  54. package/dist/tools/read.d.ts.map +1 -1
  55. package/dist/tools/read.js +42 -15
  56. package/dist/tools/read.js.map +1 -1
  57. package/dist/tools/registry.d.ts +0 -6
  58. package/dist/tools/registry.d.ts.map +1 -1
  59. package/dist/tools/registry.js +2 -33
  60. package/dist/tools/registry.js.map +1 -1
  61. package/dist/tools/sed.d.ts +4 -0
  62. package/dist/tools/sed.d.ts.map +1 -0
  63. package/dist/tools/sed.js +121 -0
  64. package/dist/tools/sed.js.map +1 -0
  65. package/dist/tools/write_plan.d.ts +1 -1
  66. package/dist/tools/write_plan.d.ts.map +1 -1
  67. package/dist/tools/write_plan.js +14 -4
  68. package/dist/tools/write_plan.js.map +1 -1
  69. package/dist/tui/index.d.ts.map +1 -1
  70. package/dist/tui/index.js +5 -4
  71. package/dist/tui/index.js.map +1 -1
  72. package/dist/web/index.d.ts.map +1 -1
  73. package/dist/web/index.js +30 -7
  74. package/dist/web/index.js.map +1 -1
  75. package/dist/web/public/app.js +5 -855
  76. package/dist/web/public/confirm.js +70 -0
  77. package/dist/web/public/index.html +121 -120
  78. package/dist/web/public/input.js +107 -0
  79. package/dist/web/public/messages.js +395 -0
  80. package/dist/web/public/sidebar.js +82 -0
  81. package/dist/web/public/state.js +72 -0
  82. package/dist/web/public/style.css +996 -949
  83. package/dist/web/public/utils.js +37 -0
  84. package/dist/web/public/websocket.js +267 -0
  85. package/dist/web/public/ws.js +19 -0
  86. package/dist/web/session-bridge.d.ts.map +1 -1
  87. package/dist/web/session-bridge.js +3 -7
  88. package/dist/web/session-bridge.js.map +1 -1
  89. package/package.json +55 -54
  90. package/scripts/copy-native.mjs +24 -0
  91. package/scripts/copy-web.mjs +15 -0
  92. package/src/agent/index.ts +25 -25
  93. package/src/agent/llm.ts +4 -0
  94. package/src/agent/project.ts +366 -0
  95. package/src/agent/prompt-builder.ts +23 -13
  96. package/src/agent/providers/anthropic.ts +179 -172
  97. package/src/agent/providers/google.ts +210 -211
  98. package/src/agent/providers/ollama.ts +186 -182
  99. package/src/agent/providers/openai.ts +73 -5
  100. package/src/agent/session.ts +275 -153
  101. package/src/config/index.ts +342 -335
  102. package/src/tools/__tests__/bash.test.ts +1 -1
  103. package/src/tools/__tests__/edit.test.ts +981 -385
  104. package/src/tools/__tests__/grep.test.ts +35 -0
  105. package/src/tools/bash.ts +97 -11
  106. package/src/tools/edit.ts +414 -154
  107. package/src/tools/git.ts +76 -76
  108. package/src/tools/grep.ts +57 -30
  109. package/src/tools/read.ts +61 -25
  110. package/src/tools/registry.ts +231 -265
  111. package/src/tools/write_plan.ts +21 -5
  112. package/src/tui/index.ts +786 -785
  113. package/src/web/index.ts +29 -7
  114. package/src/web/public/app.js +5 -855
  115. package/src/web/public/confirm.js +70 -0
  116. package/src/web/public/index.html +121 -120
  117. package/src/web/public/input.js +107 -0
  118. package/src/web/public/messages.js +395 -0
  119. package/src/web/public/sidebar.js +82 -0
  120. package/src/web/public/state.js +72 -0
  121. package/src/web/public/style.css +996 -949
  122. package/src/web/public/utils.js +37 -0
  123. package/src/web/public/websocket.js +267 -0
  124. package/src/web/public/ws.js +19 -0
  125. package/src/web/session-bridge.ts +193 -194
  126. package/.kilo/plans/1780064105789-mighty-pixel.md +0 -171
  127. package/.kilo/plans/1780293725888-quick-wizard.md +0 -62
  128. package/.lonny/plan-web-cwd-status.md +0 -38
  129. package/src/tools/exec.ts +0 -348
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,OAAO,EAAsB,MAAM,cAAc,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAc;IAC3D,MAAM,MAAM,GAAkB;QAC5B,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,WAAW,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACxC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;gBACtC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5D,CAAC;YACD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACrF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;oBAC/B,EAAE,CAAC,KAAK,EAAE,CAAA;oBACV,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;gBAC9C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3E,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,OAAO,EAAsB,MAAM,cAAc,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAc;IAC3D,MAAM,MAAM,GAAkB;QAC5B,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,WAAW,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACxC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;gBACtC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5D,CAAC;YACD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACrF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;oBAC/B,EAAE,CAAC,KAAK,EAAE,CAAA;oBACV,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;gBAC9C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnF,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC"}
@@ -13,6 +13,10 @@ export interface LLMProvider {
13
13
  export interface TokenUsage {
14
14
  input_tokens: number;
15
15
  output_tokens: number;
16
+ /** DeepSeek-specific: tokens read from cache */
17
+ prompt_cache_hit_tokens?: number;
18
+ /** DeepSeek-specific: tokens not in cache */
19
+ prompt_cache_miss_tokens?: number;
16
20
  }
17
21
  export interface LLMChunk {
18
22
  type: 'text' | 'tool_use' | 'complete';
@@ -1 +1 @@
1
- {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/agent/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEjE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CACF,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC,CAAA;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB"}
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/agent/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEjE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CACF,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC,CAAA;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,gDAAgD;IAChD,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,6CAA6C;IAC7C,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB"}
@@ -0,0 +1,26 @@
1
+ export type ProjectType = 'node' | 'python' | 'rust' | 'go' | 'java' | 'cpp' | 'unknown';
2
+ export interface ProjectInfo {
3
+ type: ProjectType;
4
+ entryPoints: string[];
5
+ dependencies: Record<string, string>;
6
+ devDependencies: Record<string, string>;
7
+ testFiles: string[];
8
+ configFiles: string[];
9
+ srcDirs: string[];
10
+ hasTests: boolean;
11
+ packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun' | null;
12
+ }
13
+ /**
14
+ * Discover project information for a given directory.
15
+ * Results are cached for 1 minute to avoid repeated disk I/O.
16
+ */
17
+ export declare function discoverProject(cwd: string): Promise<ProjectInfo>;
18
+ /** Clear project cache */
19
+ export declare function clearProjectCache(): void;
20
+ /** Invalidate cache for a specific directory */
21
+ export declare function invalidateProjectCache(cwd: string): void;
22
+ /**
23
+ * Format project info as a string for inclusion in prompts.
24
+ */
25
+ export declare function formatProjectContext(info: ProjectInfo): string;
26
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/agent/project.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;AAExF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAA;CACvD;AAmQD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCvE;AAED,0BAA0B;AAC1B,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,gDAAgD;AAChD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAqC9D"}
@@ -0,0 +1,303 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ // Common entry point patterns
4
+ const ENTRY_PATTERNS = {
5
+ node: [
6
+ 'src/index.ts',
7
+ 'src/main.ts',
8
+ 'src/app.ts',
9
+ 'src/server.ts',
10
+ 'index.ts',
11
+ 'app.ts',
12
+ 'server.ts',
13
+ 'main.ts',
14
+ ],
15
+ python: ['main.py', 'app.py', 'src/main.py', 'src/app.py'],
16
+ rust: ['src/main.rs', 'src/lib.rs'],
17
+ go: ['main.go', 'cmd/main.go'],
18
+ java: ['src/main/java/Main.java'],
19
+ cpp: ['src/main.cpp', 'main.cpp'],
20
+ unknown: [],
21
+ };
22
+ const TEST_PATTERNS = {
23
+ node: ['**/*.test.ts', '**/*.spec.ts', '**/__tests__/**', 'tests/**/*.ts'],
24
+ python: ['test_*.py', '*_test.py', 'tests/**/*.py'],
25
+ rust: ['tests/**/*.rs', 'src/**/*.rs'],
26
+ go: ['*_test.go'],
27
+ java: ['**/*Test.java', '**/*Tests.java'],
28
+ cpp: ['**/*test*.cpp', 'tests/**/*.cpp'],
29
+ unknown: [],
30
+ };
31
+ const CONFIG_FILES = {
32
+ node: [
33
+ 'package.json',
34
+ 'tsconfig.json',
35
+ 'biome.json',
36
+ '.biomerc',
37
+ 'jest.config.*',
38
+ 'vitest.config.*',
39
+ '.eslintrc*',
40
+ '.prettierrc*',
41
+ '.npmrc',
42
+ ],
43
+ python: [
44
+ 'pyproject.toml',
45
+ 'setup.py',
46
+ 'setup.cfg',
47
+ 'requirements.txt',
48
+ 'Pipfile',
49
+ 'poetry.lock',
50
+ 'pytest.ini',
51
+ 'pyproject.toml',
52
+ ],
53
+ rust: ['Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml'],
54
+ go: ['go.mod', 'go.sum'],
55
+ java: ['pom.xml', 'build.gradle', 'build.gradle.kts'],
56
+ cpp: ['CMakeLists.txt', 'Makefile', '*.cmake'],
57
+ unknown: [],
58
+ };
59
+ const SRC_DIRS = {
60
+ node: ['src', 'lib', 'app', 'packages'],
61
+ python: ['src', 'lib', 'app'],
62
+ rust: ['src'],
63
+ go: ['cmd', 'internal', 'pkg'],
64
+ java: ['src/main/java', 'src'],
65
+ cpp: ['src', 'lib', 'include'],
66
+ unknown: [],
67
+ };
68
+ // ── Detection functions ───────────────────────────────────────────────────
69
+ /** Detect project type from root directory */
70
+ async function detectProjectType(cwd) {
71
+ const files = await fs.readdir(cwd, { withFileTypes: true });
72
+ const fileNames = files.map(f => f.name.toLowerCase());
73
+ // Priority order matters
74
+ if (fileNames.includes('cargo.toml'))
75
+ return 'rust';
76
+ if (fileNames.includes('go.mod'))
77
+ return 'go';
78
+ if (fileNames.includes('pom.xml') || fileNames.includes('build.gradle'))
79
+ return 'java';
80
+ if (fileNames.includes('package.json'))
81
+ return 'node';
82
+ if (fileNames.includes('pyproject.toml') ||
83
+ fileNames.includes('setup.py') ||
84
+ fileNames.includes('requirements.txt'))
85
+ return 'python';
86
+ if (fileNames.includes('cmakelists.txt'))
87
+ return 'cpp';
88
+ return 'unknown';
89
+ }
90
+ /** Find entry points for the project */
91
+ async function findEntryPoints(cwd, type) {
92
+ if (type === 'unknown')
93
+ return [];
94
+ const entryPoints = [];
95
+ const patterns = ENTRY_PATTERNS[type];
96
+ for (const pattern of patterns) {
97
+ const fullPath = path.join(cwd, pattern);
98
+ try {
99
+ const stat = await fs.stat(fullPath);
100
+ if (stat.isFile()) {
101
+ entryPoints.push(pattern);
102
+ }
103
+ }
104
+ catch {
105
+ // File doesn't exist, skip
106
+ }
107
+ }
108
+ // For Node.js, also check package.json main/module
109
+ if (type === 'node') {
110
+ try {
111
+ const pkgPath = path.join(cwd, 'package.json');
112
+ const content = await fs.readFile(pkgPath, 'utf-8');
113
+ const pkg = JSON.parse(content);
114
+ if (pkg.main && !entryPoints.includes(pkg.main)) {
115
+ entryPoints.push(pkg.main);
116
+ }
117
+ if (pkg.module && !entryPoints.includes(pkg.module)) {
118
+ entryPoints.push(pkg.module);
119
+ }
120
+ }
121
+ catch {
122
+ // No package.json
123
+ }
124
+ }
125
+ return entryPoints;
126
+ }
127
+ /** Find test files */
128
+ async function findTestFiles(cwd, type) {
129
+ if (type === 'unknown')
130
+ return [];
131
+ const testFiles = [];
132
+ const patterns = TEST_PATTERNS[type];
133
+ // Simple glob simulation - just check common locations
134
+ const dirs = type === 'node'
135
+ ? ['src', 'tests', '__tests__', '']
136
+ : type === 'python'
137
+ ? ['tests', '']
138
+ : type === 'rust'
139
+ ? ['tests', 'src']
140
+ : [''];
141
+ for (const dir of dirs) {
142
+ const searchDir = dir ? path.join(cwd, dir) : cwd;
143
+ try {
144
+ const files = await fs.readdir(searchDir, { withFileTypes: true });
145
+ for (const file of files) {
146
+ if (file.isFile()) {
147
+ const name = file.name.toLowerCase();
148
+ if (name.includes('test') || name.includes('spec')) {
149
+ const relPath = dir ? `${dir}/${file.name}` : file.name;
150
+ testFiles.push(relPath);
151
+ }
152
+ }
153
+ }
154
+ }
155
+ catch {
156
+ // Directory doesn't exist
157
+ }
158
+ }
159
+ return testFiles.slice(0, 10); // Limit to 10
160
+ }
161
+ /** Find config files */
162
+ async function findConfigFiles(cwd, type) {
163
+ const configs = [];
164
+ const patterns = CONFIG_FILES[type] || [];
165
+ for (const pattern of patterns) {
166
+ const fullPath = path.join(cwd, pattern);
167
+ try {
168
+ const stat = await fs.stat(fullPath);
169
+ if (stat.isFile()) {
170
+ configs.push(pattern);
171
+ }
172
+ }
173
+ catch {
174
+ // File doesn't exist
175
+ }
176
+ }
177
+ return configs;
178
+ }
179
+ /** Find source directories */
180
+ async function findSrcDirs(cwd, type) {
181
+ const srcDirs = [];
182
+ const patterns = SRC_DIRS[type] || [];
183
+ for (const pattern of patterns) {
184
+ const fullPath = path.join(cwd, pattern);
185
+ try {
186
+ const stat = await fs.stat(fullPath);
187
+ if (stat.isDirectory()) {
188
+ srcDirs.push(pattern);
189
+ }
190
+ }
191
+ catch {
192
+ // Directory doesn't exist
193
+ }
194
+ }
195
+ return srcDirs;
196
+ }
197
+ /** Detect package manager */
198
+ async function detectPackageManager(cwd) {
199
+ const files = await fs.readdir(cwd, { withFileTypes: true });
200
+ const fileNames = files.map(f => f.name);
201
+ if (fileNames.includes('pnpm-lock.yaml'))
202
+ return 'pnpm';
203
+ if (fileNames.includes('yarn.lock'))
204
+ return 'yarn';
205
+ if (fileNames.includes('bun.lockb'))
206
+ return 'bun';
207
+ if (fileNames.includes('package-lock.json'))
208
+ return 'npm';
209
+ return null;
210
+ }
211
+ /** Load dependencies from package.json */
212
+ async function loadDependencies(cwd) {
213
+ try {
214
+ const pkgPath = path.join(cwd, 'package.json');
215
+ const content = await fs.readFile(pkgPath, 'utf-8');
216
+ const pkg = JSON.parse(content);
217
+ return {
218
+ deps: pkg.dependencies || {},
219
+ devDeps: pkg.devDependencies || {},
220
+ };
221
+ }
222
+ catch {
223
+ return { deps: {}, devDeps: {} };
224
+ }
225
+ }
226
+ // ── Main discovery function ───────────────────────────────────────────────
227
+ // Cache for project info
228
+ const projectCache = new Map();
229
+ const CACHE_TTL = 60_000; // 1 minute
230
+ /**
231
+ * Discover project information for a given directory.
232
+ * Results are cached for 1 minute to avoid repeated disk I/O.
233
+ */
234
+ export async function discoverProject(cwd) {
235
+ // Check cache first
236
+ const cached = projectCache.get(cwd);
237
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
238
+ return cached.info;
239
+ }
240
+ const type = await detectProjectType(cwd);
241
+ const [entryPoints, testFiles, configFiles, srcDirs, packageManager, deps] = await Promise.all([
242
+ findEntryPoints(cwd, type),
243
+ findTestFiles(cwd, type),
244
+ findConfigFiles(cwd, type),
245
+ findSrcDirs(cwd, type),
246
+ detectPackageManager(cwd),
247
+ type === 'node' ? loadDependencies(cwd) : Promise.resolve({ deps: {}, devDeps: {} }),
248
+ ]);
249
+ const info = {
250
+ type,
251
+ entryPoints,
252
+ dependencies: deps.deps,
253
+ devDependencies: deps.devDeps,
254
+ testFiles,
255
+ configFiles,
256
+ srcDirs,
257
+ hasTests: testFiles.length > 0,
258
+ packageManager,
259
+ };
260
+ // Cache the result
261
+ projectCache.set(cwd, { info, timestamp: Date.now() });
262
+ return info;
263
+ }
264
+ /** Clear project cache */
265
+ export function clearProjectCache() {
266
+ projectCache.clear();
267
+ }
268
+ /** Invalidate cache for a specific directory */
269
+ export function invalidateProjectCache(cwd) {
270
+ projectCache.delete(cwd);
271
+ }
272
+ /**
273
+ * Format project info as a string for inclusion in prompts.
274
+ */
275
+ export function formatProjectContext(info) {
276
+ const lines = ['## Project Context'];
277
+ if (info.type === 'unknown') {
278
+ lines.push('- Project type: Unknown');
279
+ return lines.join('\n');
280
+ }
281
+ lines.push(`- Project type: ${info.type}`);
282
+ lines.push(`- Package manager: ${info.packageManager || 'unknown'}`);
283
+ if (info.entryPoints.length > 0) {
284
+ lines.push(`- Entry point(s): ${info.entryPoints.join(', ')}`);
285
+ }
286
+ if (info.srcDirs.length > 0) {
287
+ lines.push(`- Source directories: ${info.srcDirs.join(', ')}`);
288
+ }
289
+ if (info.configFiles.length > 0) {
290
+ lines.push(`- Config files: ${info.configFiles.join(', ')}`);
291
+ }
292
+ if (info.hasTests) {
293
+ const testCount = info.testFiles.length;
294
+ lines.push(`- Test files: ${testCount} found`);
295
+ }
296
+ // Show main dependencies
297
+ const mainDeps = Object.keys(info.dependencies).slice(0, 10);
298
+ if (mainDeps.length > 0) {
299
+ lines.push(`- Dependencies: ${mainDeps.join(', ')}${Object.keys(info.dependencies).length > 10 ? '...' : ''}`);
300
+ }
301
+ return lines.join('\n');
302
+ }
303
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/agent/project.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ import type { Config } from '../config/index.js';
3
3
  * Build the system prompt for the current configuration.
4
4
  * Extracted from session.ts to keep module size manageable (<500 LoC target).
5
5
  */
6
- export declare function buildSystemPrompt(config: Config): string;
6
+ export declare function buildSystemPrompt(config: Config): Promise<string>;
7
7
  //# sourceMappingURL=prompt-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAsKxD"}
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAIhD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+KvE"}
@@ -1,10 +1,11 @@
1
1
  import * as os from 'node:os';
2
+ import { discoverProject, formatProjectContext } from './project.js';
2
3
  import { formatSkillsForPrompt, loadSkills } from './skills.js';
3
4
  /**
4
5
  * Build the system prompt for the current configuration.
5
6
  * Extracted from session.ts to keep module size manageable (<500 LoC target).
6
7
  */
7
- export function buildSystemPrompt(config) {
8
+ export async function buildSystemPrompt(config) {
8
9
  const platform = os.platform();
9
10
  const release = os.release();
10
11
  const shell = process.env.SHELL || process.env.ComSpec || 'unknown';
@@ -14,6 +15,9 @@ export function buildSystemPrompt(config) {
14
15
  // ── Load skills ────────────────────────────────────────────────────────
15
16
  const skills = loadSkills(cwd);
16
17
  const skillsSection = formatSkillsForPrompt(skills);
18
+ // ── Load project context ─────────────────────────────────────────────────
19
+ const projectInfo = await discoverProject(cwd);
20
+ const projectSection = formatProjectContext(projectInfo);
17
21
  // ── Mode-specific tool list ───────────────────────────────────────────
18
22
  function getToolListForMode(mode) {
19
23
  if (mode === 'ask') {
@@ -32,7 +36,7 @@ export function buildSystemPrompt(config) {
32
36
  - \`find\`: Find files by name pattern (pattern: string, path?: string, maxResults?: number)
33
37
  - \`git\`: Run read-only git commands (command: string)
34
38
  - \`search\`: Search the web using Tavily (query: string, search_depth?: string, include_answer?: boolean, max_results?: number, topic?: string, days?: number)
35
- - \`write_plan\`: Save plan/todo markdown into .lonny/ folder
39
+ - \`write_plan\`: Save plan/todo markdown into .lonny/ folder (use descriptive names like backend-api.md, frontend-ui.md if splitting into multiple files)
36
40
  `;
37
41
  }
38
42
  return `Available tools:
@@ -40,13 +44,12 @@ export function buildSystemPrompt(config) {
40
44
  - \`glob\`: Find files by glob pattern (pattern: string)
41
45
  - \`grep\`: Search file content by regex (pattern: string, include?: string, path?: string)
42
46
  - \`ls\`: List directory (path?: string)
43
- - \`bash\`: Execute a shell command
44
- - \`edit\`: Replace text in files call with {"edits": [{"file_path", "old_string", "new_string"}]} (array required)
47
+ - \`bash\`: Execute a shell command — for running commands (NOT for creating or modifying files — use \`edit\` for that)
48
+ - \`edit\`: Replace text in files using markdown code block format. Use: \`edit({ content: "\`\`\`edit\\nfile: path\\nold: |\\ntext\\nnew: |\\ntext\\n\`\`\`" })\`
45
49
  - \`install_skill\`: Install an npm package as a skill — fetches package info from npm, runs npm install, and creates a .lonny/skills/ file with usage instructions for the AI
46
50
  - \`find\`: Find files by name pattern (pattern: string, path?: string, maxResults?: number)
47
51
  - \`git\`: Run read-only git commands (command: string)
48
52
  - \`search\`: Search the web using Tavily (query: string, search_depth?: string, include_answer?: boolean, max_results?: number, topic?: string, days?: number)
49
- - \`exec\`: Run JavaScript in a sandbox to orchestrate multiple tool calls — all tools are available as \`await tools.xxx(args)\` inside exec (code mode only)
50
53
  `;
51
54
  }
52
55
  // ── Shared rules (identical across modes; stable prefix for caching) ─────
@@ -54,15 +57,14 @@ export function buildSystemPrompt(config) {
54
57
  RULES:
55
58
  1. Read first: Use read/grep/glob tools to gather all context you need before making any edits.
56
59
  2. Be thorough: Explore the relevant parts of the codebase.
57
- 3. COST OPTIMIZATION (CRITICAL): Each API call costs money. You MUST maximize work per call. Use \`read(paths: [...])\` to read multiple files at once. Use \`edit({edits: [...]})\` to edit multiple files at once. Do NOT do sequential single-file reads or single-edit calls.
58
- 4. When using \`edit\`, the \`edits\` value MUST be an array — even for a single change. Do NOT pass empty objects.
60
+ 3. COST OPTIMIZATION (CRITICAL): Each API call costs money. You MUST maximize work per call. Use \`read(paths: [...])\` to read multiple files at once. Use \`edit({ content: "..." })\` with multiple \`\`\`edit blocks to edit multiple files at once.
59
61
 
60
62
  ${getToolListForMode(config.mode)}`;
61
63
  // ── Mode-specific instructions ───────────────────────────────────────────
62
64
  const modeInstructions = config.mode === 'plan'
63
65
  ? `You are a planning agent. Your ONLY job is to investigate the codebase and produce an actionable implementation plan with a todo list.
64
66
 
65
- You CANNOT edit files. You do NOT have access to edit, bash (write mode), exec, or install_skill.
67
+ You CANNOT edit files. You do NOT have access to edit, bash (write mode), or install_skill.
66
68
  Any attempt to call these tools will FAIL — they are simply unavailable in this mode.
67
69
 
68
70
  RULES (plan-specific):
@@ -71,7 +73,8 @@ RULES (plan-specific):
71
73
  3. Use \`bash\` for investigation only — NEVER to modify files, install packages, or run write operations.
72
74
  4. Your ONLY output is a plan file saved via \`write_plan\`. You CANNOT modify the codebase directly.
73
75
  5. You MUST persist the final plan AND todo list to a file in \`.lonny/\` using \`write_plan\`. The \`write_plan\` content MUST include both ## Plan and ## Todo List sections.
74
- 6. You MUST also include the todo list in your text response to the user (not just in the file).
76
+ 6. If the plan is very long (or the todo list has many items), split into multiple files with descriptive names like \`backend-api.md\`, \`frontend-ui.md\`, \`database.md\`, etc.
77
+ 7. You MUST also include the todo list in your text response to the user (not just in the file).
75
78
  7. If the user asks you to modify files, run write commands, or install packages — refuse and explain they need to switch to code mode (\`/mode code\`).
76
79
 
77
80
  OUTPUT FORMAT (you MUST include both in write_plan AND in your response text):
@@ -103,9 +106,15 @@ RULES (ask-specific):
103
106
 
104
107
  RULES (code-specific):
105
108
  1. Read first: Use read/grep/glob tools to gather all context you need BEFORE making any edits. The \`read\` output prefixes each line with "<lineNumber>: " for easy reference. Do NOT include the "N: " prefix when copying text into \`edit\`.
106
- 2. edit CALL FORMAT — you MUST call edit with exactly this JSON shape:
107
- { "edits": [{ "file_path": "src/file.ts", "old_string": "text to replace", "new_string": "replacement text" }] }
108
- The "edits" value is ALWAYS an array, even for a single edit. Do NOT pass file_path/old_string/new_string as top-level keys. Do NOT pass an empty object {}.
109
+ 2. edit CALL FORMAT — use markdown code block format:
110
+ \`\`\`edit
111
+ file: src/file.ts
112
+ old: |
113
+ text to replace
114
+ new: |
115
+ replacement text
116
+ \`\`\`
117
+ Use separate \`\`\`edit blocks for multiple files.
109
118
  3. After making edits to a file, if you need to make ANOTHER edit to the SAME file, you MUST re-read it first to get the updated content.
110
119
  4. If \`edit\` reports \`old_string not found\`, do NOT retry with the same old_string — re-read the file immediately to see its actual current content, then retry with correctly-copied text.
111
120
  5. When copying old_string from \`read\` output, include 2-3 lines of context BEFORE and AFTER the target change to make the string unique in the file.
@@ -160,6 +169,6 @@ ${isWindows ? ' - Use `type` instead of `cat`, `dir` instead of `ls`, `where` i
160
169
  ${sharedRules}`;
161
170
  return `${modeInstructions}
162
171
 
163
- ${envSection}${rulesSection}${methodologySection}${skillsSection}`;
172
+ ${envSection}${rulesSection}${methodologySection}${projectSection}${skillsSection}`;
164
173
  }
165
174
  //# sourceMappingURL=prompt-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE/D;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;IACnE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACtB,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAA;IAEtC,0EAA0E;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAEnD,yEAAyE;IACzE,SAAS,kBAAkB,CAAC,IAAY;QACtC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO;;;CAGZ,CAAA;QACG,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;;;;;;;;;;CAUZ,CAAA;QACG,CAAC;QACD,OAAO;;;;;;;;;;;;CAYV,CAAA;IACC,CAAC;IAED,4EAA4E;IAC5E,MAAM,WAAW,GAAG;;;;;;;EAOpB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;IAEjC,4EAA4E;IAC5E,MAAM,gBAAgB,GACpB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;sHA2B8G;QAChH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YACrB,CAAC,CAAC;;;;;;;;;yHAS+G;YACjH,CAAC,CAAC;;;;;;;;;;;;mPAYyO,CAAA;IAEjP,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,kBAAkB,GACtB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;gJAmBwI;QAC1I,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;YACtB,CAAC,CAAC;;;;;;;oCAO0B;YAC5B,CAAC,CAAC,EAAE,CAAA;IACV,MAAM,UAAU,GAAG;cACP,QAAQ,IAAI,OAAO,KAAK,IAAI;WAC/B,KAAK;uBACO,GAAG;QAClB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;8BACf,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,MAAM;EACjH,SAAS,CAAC,CAAC,CAAC,4IAA4I,CAAC,CAAC,CAAC,EAAE;EAC7J,SAAS,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAEvG,yFAAyF;IACzF,MAAM,YAAY,GAChB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;EACN,WAAW,EAAE,CAAA;IACb,OAAO,GAAG,gBAAgB;;EAE1B,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,aAAa,EAAE,CAAA;AAClE,CAAC"}
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IACpD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;IACnE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACtB,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAA;IAEtC,0EAA0E;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAEnD,4EAA4E;IAC5E,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAExD,yEAAyE;IACzE,SAAS,kBAAkB,CAAC,IAAY;QACtC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO;;;CAGZ,CAAA;QACG,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;;;;;;;;;;CAUZ,CAAA;QACG,CAAC;QACD,OAAO;;;;;;;;;;;CAWV,CAAA;IACC,CAAC;IAED,4EAA4E;IAC5E,MAAM,WAAW,GAAG;;;;;;EAMpB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;IAEjC,4EAA4E;IAC5E,MAAM,gBAAgB,GACpB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;sHA4B8G;QAChH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YACrB,CAAC,CAAC;;;;;;;;;yHAS+G;YACjH,CAAC,CAAC;;;;;;;;;;;;;;;;;;mPAkByO,CAAA;IAEjP,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,kBAAkB,GACtB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;gJAmBwI;QAC1I,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;YACtB,CAAC,CAAC;;;;;;;oCAO0B;YAC5B,CAAC,CAAC,EAAE,CAAA;IACV,MAAM,UAAU,GAAG;cACP,QAAQ,IAAI,OAAO,KAAK,IAAI;WAC/B,KAAK;uBACO,GAAG;QAClB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;8BACf,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,MAAM;EACjH,SAAS,CAAC,CAAC,CAAC,4IAA4I,CAAC,CAAC,CAAC,EAAE;EAC7J,SAAS,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAEvG,yFAAyF;IACzF,MAAM,YAAY,GAChB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;EACN,WAAW,EAAE,CAAA;IACb,OAAO,GAAG,gBAAgB;;EAE1B,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,cAAc,GAAG,aAAa,EAAE,CAAA;AACnF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAElE,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAKrD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CA6I5B"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAElE,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAKrD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CAgK5B"}
@@ -97,12 +97,21 @@ export class AnthropicProvider {
97
97
  }
98
98
  else if (event.type === 'content_block_stop') {
99
99
  if (currentToolUse) {
100
+ let input;
101
+ const rawInput = currentToolUse.input || '';
102
+ try {
103
+ input = JSON.parse(rawInput || '{}');
104
+ }
105
+ catch {
106
+ console.error('[anthropic] Failed to parse tool_use input (content_block_stop):', rawInput);
107
+ input = {};
108
+ }
100
109
  yield {
101
110
  type: 'tool_use',
102
111
  tool_call: {
103
112
  id: currentToolUse.id,
104
113
  name: currentToolUse.name,
105
- input: JSON.parse(currentToolUse.input || '{}'),
114
+ input,
106
115
  },
107
116
  };
108
117
  currentToolUse = null;
@@ -121,12 +130,21 @@ export class AnthropicProvider {
121
130
  }
122
131
  if (event.delta.stop_reason === 'end_turn' || event.delta.stop_reason === 'stop_sequence') {
123
132
  if (currentToolUse) {
133
+ let input;
134
+ const rawInput = currentToolUse.input || '';
135
+ try {
136
+ input = JSON.parse(rawInput || '{}');
137
+ }
138
+ catch {
139
+ console.error('[anthropic] Failed to parse tool_use input (message_delta):', rawInput);
140
+ input = {};
141
+ }
124
142
  yield {
125
143
  type: 'tool_use',
126
144
  tool_call: {
127
145
  id: currentToolUse.id,
128
146
  name: currentToolUse.name,
129
- input: JSON.parse(currentToolUse.input || '{}'),
147
+ input,
130
148
  },
131
149
  };
132
150
  currentToolUse = null;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAsClE,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAMrD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CA4J5B"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAsClE,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAMrD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CA2J5B"}
@@ -149,7 +149,7 @@ export class GoogleProvider {
149
149
  }
150
150
  }
151
151
  catch {
152
- // skip malformed JSON
152
+ console.error('[google] Failed to parse stream chunk:', jsonStr);
153
153
  }
154
154
  }
155
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"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"}