localptp 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 (186) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +159 -0
  3. package/dist/cli.d.ts +24 -0
  4. package/dist/cli.js +344 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/config.d.ts +14 -0
  7. package/dist/commands/config.js +65 -0
  8. package/dist/commands/config.js.map +1 -0
  9. package/dist/commands/context.d.ts +12 -0
  10. package/dist/commands/context.js +176 -0
  11. package/dist/commands/context.js.map +1 -0
  12. package/dist/commands/doctor.d.ts +16 -0
  13. package/dist/commands/doctor.js +54 -0
  14. package/dist/commands/doctor.js.map +1 -0
  15. package/dist/commands/index.d.ts +13 -0
  16. package/dist/commands/index.js +70 -0
  17. package/dist/commands/index.js.map +1 -0
  18. package/dist/commands/init.d.ts +15 -0
  19. package/dist/commands/init.js +46 -0
  20. package/dist/commands/init.js.map +1 -0
  21. package/dist/commands/plan.d.ts +17 -0
  22. package/dist/commands/plan.js +170 -0
  23. package/dist/commands/plan.js.map +1 -0
  24. package/dist/commands/resume.d.ts +17 -0
  25. package/dist/commands/resume.js +75 -0
  26. package/dist/commands/resume.js.map +1 -0
  27. package/dist/commands/review.d.ts +17 -0
  28. package/dist/commands/review.js +67 -0
  29. package/dist/commands/review.js.map +1 -0
  30. package/dist/commands/run.d.ts +24 -0
  31. package/dist/commands/run.js +65 -0
  32. package/dist/commands/run.js.map +1 -0
  33. package/dist/commands/step.d.ts +44 -0
  34. package/dist/commands/step.js +50 -0
  35. package/dist/commands/step.js.map +1 -0
  36. package/dist/commands/summarize.d.ts +17 -0
  37. package/dist/commands/summarize.js +276 -0
  38. package/dist/commands/summarize.js.map +1 -0
  39. package/dist/commands/task.d.ts +13 -0
  40. package/dist/commands/task.js +53 -0
  41. package/dist/commands/task.js.map +1 -0
  42. package/dist/core/activePointer.d.ts +28 -0
  43. package/dist/core/activePointer.js +84 -0
  44. package/dist/core/activePointer.js.map +1 -0
  45. package/dist/core/approval.d.ts +12 -0
  46. package/dist/core/approval.js +34 -0
  47. package/dist/core/approval.js.map +1 -0
  48. package/dist/core/configManager.d.ts +32 -0
  49. package/dist/core/configManager.js +177 -0
  50. package/dist/core/configManager.js.map +1 -0
  51. package/dist/core/contextBuilder.d.ts +40 -0
  52. package/dist/core/contextBuilder.js +406 -0
  53. package/dist/core/contextBuilder.js.map +1 -0
  54. package/dist/core/memoryLoader.d.ts +4 -0
  55. package/dist/core/memoryLoader.js +35 -0
  56. package/dist/core/memoryLoader.js.map +1 -0
  57. package/dist/core/memoryManager.d.ts +41 -0
  58. package/dist/core/memoryManager.js +181 -0
  59. package/dist/core/memoryManager.js.map +1 -0
  60. package/dist/core/memoryPolicy.d.ts +23 -0
  61. package/dist/core/memoryPolicy.js +73 -0
  62. package/dist/core/memoryPolicy.js.map +1 -0
  63. package/dist/core/modelClient.d.ts +37 -0
  64. package/dist/core/modelClient.js +160 -0
  65. package/dist/core/modelClient.js.map +1 -0
  66. package/dist/core/patchManager.d.ts +89 -0
  67. package/dist/core/patchManager.js +801 -0
  68. package/dist/core/patchManager.js.map +1 -0
  69. package/dist/core/plannerJson.d.ts +23 -0
  70. package/dist/core/plannerJson.js +118 -0
  71. package/dist/core/plannerJson.js.map +1 -0
  72. package/dist/core/promptManager.d.ts +16 -0
  73. package/dist/core/promptManager.js +35 -0
  74. package/dist/core/promptManager.js.map +1 -0
  75. package/dist/core/prompts.d.ts +8 -0
  76. package/dist/core/prompts.js +18 -0
  77. package/dist/core/prompts.js.map +1 -0
  78. package/dist/core/repoIndexer.d.ts +21 -0
  79. package/dist/core/repoIndexer.js +557 -0
  80. package/dist/core/repoIndexer.js.map +1 -0
  81. package/dist/core/reviewEngine.d.ts +53 -0
  82. package/dist/core/reviewEngine.js +229 -0
  83. package/dist/core/reviewEngine.js.map +1 -0
  84. package/dist/core/runLoop.d.ts +26 -0
  85. package/dist/core/runLoop.js +103 -0
  86. package/dist/core/runLoop.js.map +1 -0
  87. package/dist/core/runStep.d.ts +42 -0
  88. package/dist/core/runStep.js +586 -0
  89. package/dist/core/runStep.js.map +1 -0
  90. package/dist/core/safetyManager.d.ts +7 -0
  91. package/dist/core/safetyManager.js +202 -0
  92. package/dist/core/safetyManager.js.map +1 -0
  93. package/dist/core/sessionManager.d.ts +35 -0
  94. package/dist/core/sessionManager.js +265 -0
  95. package/dist/core/sessionManager.js.map +1 -0
  96. package/dist/core/stopConditions.d.ts +24 -0
  97. package/dist/core/stopConditions.js +18 -0
  98. package/dist/core/stopConditions.js.map +1 -0
  99. package/dist/core/taskManager.d.ts +26 -0
  100. package/dist/core/taskManager.js +312 -0
  101. package/dist/core/taskManager.js.map +1 -0
  102. package/dist/core/testRunner.d.ts +27 -0
  103. package/dist/core/testRunner.js +71 -0
  104. package/dist/core/testRunner.js.map +1 -0
  105. package/dist/prompts/coder.d.ts +3 -0
  106. package/dist/prompts/coder.js +46 -0
  107. package/dist/prompts/coder.js.map +1 -0
  108. package/dist/prompts/planner.d.ts +3 -0
  109. package/dist/prompts/planner.js +44 -0
  110. package/dist/prompts/planner.js.map +1 -0
  111. package/dist/prompts/reviewer.d.ts +3 -0
  112. package/dist/prompts/reviewer.js +41 -0
  113. package/dist/prompts/reviewer.js.map +1 -0
  114. package/dist/prompts/summarizer.d.ts +3 -0
  115. package/dist/prompts/summarizer.js +65 -0
  116. package/dist/prompts/summarizer.js.map +1 -0
  117. package/dist/prompts/testFixer.d.ts +3 -0
  118. package/dist/prompts/testFixer.js +33 -0
  119. package/dist/prompts/testFixer.js.map +1 -0
  120. package/dist/repl/approver.d.ts +15 -0
  121. package/dist/repl/approver.js +21 -0
  122. package/dist/repl/approver.js.map +1 -0
  123. package/dist/repl/dispatch.d.ts +48 -0
  124. package/dist/repl/dispatch.js +164 -0
  125. package/dist/repl/dispatch.js.map +1 -0
  126. package/dist/repl/loop.d.ts +14 -0
  127. package/dist/repl/loop.js +124 -0
  128. package/dist/repl/loop.js.map +1 -0
  129. package/dist/repl/tokenize.d.ts +13 -0
  130. package/dist/repl/tokenize.js +56 -0
  131. package/dist/repl/tokenize.js.map +1 -0
  132. package/dist/templates/memory.d.ts +13 -0
  133. package/dist/templates/memory.js +32 -0
  134. package/dist/templates/memory.js.map +1 -0
  135. package/dist/types/config.d.ts +235 -0
  136. package/dist/types/config.js +66 -0
  137. package/dist/types/config.js.map +1 -0
  138. package/dist/types/context.d.ts +78 -0
  139. package/dist/types/context.js +141 -0
  140. package/dist/types/context.js.map +1 -0
  141. package/dist/types/index.d.ts +117 -0
  142. package/dist/types/index.js +24 -0
  143. package/dist/types/index.js.map +1 -0
  144. package/dist/types/model.d.ts +35 -0
  145. package/dist/types/model.js +16 -0
  146. package/dist/types/model.js.map +1 -0
  147. package/dist/types/patch.d.ts +38 -0
  148. package/dist/types/patch.js +11 -0
  149. package/dist/types/patch.js.map +1 -0
  150. package/dist/types/plan.d.ts +86 -0
  151. package/dist/types/plan.js +27 -0
  152. package/dist/types/plan.js.map +1 -0
  153. package/dist/types/review.d.ts +33 -0
  154. package/dist/types/review.js +24 -0
  155. package/dist/types/review.js.map +1 -0
  156. package/dist/types/run.d.ts +34 -0
  157. package/dist/types/run.js +2 -0
  158. package/dist/types/run.js.map +1 -0
  159. package/dist/types/session.d.ts +21 -0
  160. package/dist/types/session.js +2 -0
  161. package/dist/types/session.js.map +1 -0
  162. package/dist/types/summary.d.ts +65 -0
  163. package/dist/types/summary.js +26 -0
  164. package/dist/types/summary.js.map +1 -0
  165. package/dist/types/task.d.ts +31 -0
  166. package/dist/types/task.js +10 -0
  167. package/dist/types/task.js.map +1 -0
  168. package/dist/types/test.d.ts +16 -0
  169. package/dist/types/test.js +2 -0
  170. package/dist/types/test.js.map +1 -0
  171. package/dist/utils/fs.d.ts +13 -0
  172. package/dist/utils/fs.js +65 -0
  173. package/dist/utils/fs.js.map +1 -0
  174. package/dist/utils/gitRoot.d.ts +5 -0
  175. package/dist/utils/gitRoot.js +21 -0
  176. package/dist/utils/gitRoot.js.map +1 -0
  177. package/dist/utils/logger.d.ts +15 -0
  178. package/dist/utils/logger.js +60 -0
  179. package/dist/utils/logger.js.map +1 -0
  180. package/dist/utils/paths.d.ts +13 -0
  181. package/dist/utils/paths.js +24 -0
  182. package/dist/utils/paths.js.map +1 -0
  183. package/dist/utils/tokenEstimate.d.ts +5 -0
  184. package/dist/utils/tokenEstimate.js +8 -0
  185. package/dist/utils/tokenEstimate.js.map +1 -0
  186. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/templates/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IACpD,OAAO;QACL,IAAI;QACJ,MAAM,CAAC,SAAiB;YACtB,OAAO,KAAK,KAAK,qBAAqB,SAAS,OAAO,IAAI,IAAI,CAAC;QACjE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,GAAG,CACD,kBAAkB,EAClB,eAAe,EACf,gHAAgH,CACjH;IACD,GAAG,CACD,aAAa,EACb,UAAU,EACV,oIAAoI,CACrI;IACD,GAAG,CACD,iBAAiB,EACjB,cAAc,EACd,yDAAyD,CAC1D;IACD,GAAG,CACD,eAAe,EACf,YAAY,EACZ,mGAAmG,CACpG;IACD,GAAG,CACD,eAAe,EACf,YAAY,EACZ,iDAAiD,CAClD;IACD,GAAG,CACD,YAAY,EACZ,SAAS,EACT,0EAA0E,CAC3E;IACD,GAAG,CACD,0BAA0B,EAC1B,uBAAuB,EACvB,yEAAyE,CAC1E;IACD,GAAG,CACD,iBAAiB,EACjB,cAAc,EACd,qJAAqJ,CACtJ;IACD,GAAG,CACD,cAAc,EACd,WAAW,EACX,4EAA4E,CAC7E;IACD,GAAG,CACD,iBAAiB,EACjB,cAAc,EACd,8CAA8C,CAC/C;IACD,GAAG,CACD,cAAc,EACd,WAAW,EACX,+FAA+F,CAChG;IACD,GAAG,CACD,yBAAyB,EACzB,sBAAsB,EACtB,8HAA8H,CAC/H;IACD,GAAG,CACD,kBAAkB,EAClB,eAAe,EACf,iKAAiK,CAClK;IACD,GAAG,CACD,kBAAkB,EAClB,eAAe,EACf,yJAAyJ,CAC1J;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAa,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Config schema — single source of truth for shape AND defaults (HLD-SRD §3.2, §9).
3
+ *
4
+ * Every field carries a `.default(...)` so an absent/empty config still parses
5
+ * to the full HLD-SRD §3.2 object. `AppConfig` is inferred from the schema.
6
+ */
7
+ import { z } from "zod";
8
+ export declare const modelConfigSchema: z.ZodObject<{
9
+ provider: z.ZodDefault<z.ZodLiteral<"lmstudio">>;
10
+ baseUrl: z.ZodDefault<z.ZodString>;
11
+ model: z.ZodDefault<z.ZodString>;
12
+ apiKey: z.ZodDefault<z.ZodString>;
13
+ temperature: z.ZodDefault<z.ZodNumber>;
14
+ maxContextTokens: z.ZodDefault<z.ZodNumber>;
15
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ provider: "lmstudio";
18
+ baseUrl: string;
19
+ model: string;
20
+ apiKey: string;
21
+ temperature: number;
22
+ maxContextTokens: number;
23
+ timeoutMs: number;
24
+ }, {
25
+ provider?: "lmstudio" | undefined;
26
+ baseUrl?: string | undefined;
27
+ model?: string | undefined;
28
+ apiKey?: string | undefined;
29
+ temperature?: number | undefined;
30
+ maxContextTokens?: number | undefined;
31
+ timeoutMs?: number | undefined;
32
+ }>;
33
+ export declare const contextConfigSchema: z.ZodObject<{
34
+ maxContextChars: z.ZodDefault<z.ZodNumber>;
35
+ maxFilesPerStep: z.ZodDefault<z.ZodNumber>;
36
+ maxEditFilesPerStep: z.ZodDefault<z.ZodNumber>;
37
+ maxFileChars: z.ZodDefault<z.ZodNumber>;
38
+ includeTests: z.ZodDefault<z.ZodBoolean>;
39
+ includeImportNeighbors: z.ZodDefault<z.ZodBoolean>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ maxContextChars: number;
42
+ maxFilesPerStep: number;
43
+ maxEditFilesPerStep: number;
44
+ maxFileChars: number;
45
+ includeTests: boolean;
46
+ includeImportNeighbors: boolean;
47
+ }, {
48
+ maxContextChars?: number | undefined;
49
+ maxFilesPerStep?: number | undefined;
50
+ maxEditFilesPerStep?: number | undefined;
51
+ maxFileChars?: number | undefined;
52
+ includeTests?: boolean | undefined;
53
+ includeImportNeighbors?: boolean | undefined;
54
+ }>;
55
+ export declare const safetyConfigSchema: z.ZodObject<{
56
+ requireApproval: z.ZodDefault<z.ZodBoolean>;
57
+ maxFailedFixAttempts: z.ZodDefault<z.ZodNumber>;
58
+ maxChangedFilesPerStep: z.ZodDefault<z.ZodNumber>;
59
+ riskyPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ requireApproval: boolean;
62
+ maxFailedFixAttempts: number;
63
+ maxChangedFilesPerStep: number;
64
+ riskyPaths: string[];
65
+ }, {
66
+ requireApproval?: boolean | undefined;
67
+ maxFailedFixAttempts?: number | undefined;
68
+ maxChangedFilesPerStep?: number | undefined;
69
+ riskyPaths?: string[] | undefined;
70
+ }>;
71
+ export declare const commandConfigSchema: z.ZodObject<{
72
+ typecheck: z.ZodDefault<z.ZodString>;
73
+ lint: z.ZodDefault<z.ZodString>;
74
+ test: z.ZodDefault<z.ZodString>;
75
+ build: z.ZodDefault<z.ZodString>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ typecheck: string;
78
+ lint: string;
79
+ test: string;
80
+ build: string;
81
+ }, {
82
+ typecheck?: string | undefined;
83
+ lint?: string | undefined;
84
+ test?: string | undefined;
85
+ build?: string | undefined;
86
+ }>;
87
+ export declare const appConfigSchema: z.ZodObject<{
88
+ model: z.ZodDefault<z.ZodObject<{
89
+ provider: z.ZodDefault<z.ZodLiteral<"lmstudio">>;
90
+ baseUrl: z.ZodDefault<z.ZodString>;
91
+ model: z.ZodDefault<z.ZodString>;
92
+ apiKey: z.ZodDefault<z.ZodString>;
93
+ temperature: z.ZodDefault<z.ZodNumber>;
94
+ maxContextTokens: z.ZodDefault<z.ZodNumber>;
95
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
96
+ }, "strip", z.ZodTypeAny, {
97
+ provider: "lmstudio";
98
+ baseUrl: string;
99
+ model: string;
100
+ apiKey: string;
101
+ temperature: number;
102
+ maxContextTokens: number;
103
+ timeoutMs: number;
104
+ }, {
105
+ provider?: "lmstudio" | undefined;
106
+ baseUrl?: string | undefined;
107
+ model?: string | undefined;
108
+ apiKey?: string | undefined;
109
+ temperature?: number | undefined;
110
+ maxContextTokens?: number | undefined;
111
+ timeoutMs?: number | undefined;
112
+ }>>;
113
+ context: z.ZodDefault<z.ZodObject<{
114
+ maxContextChars: z.ZodDefault<z.ZodNumber>;
115
+ maxFilesPerStep: z.ZodDefault<z.ZodNumber>;
116
+ maxEditFilesPerStep: z.ZodDefault<z.ZodNumber>;
117
+ maxFileChars: z.ZodDefault<z.ZodNumber>;
118
+ includeTests: z.ZodDefault<z.ZodBoolean>;
119
+ includeImportNeighbors: z.ZodDefault<z.ZodBoolean>;
120
+ }, "strip", z.ZodTypeAny, {
121
+ maxContextChars: number;
122
+ maxFilesPerStep: number;
123
+ maxEditFilesPerStep: number;
124
+ maxFileChars: number;
125
+ includeTests: boolean;
126
+ includeImportNeighbors: boolean;
127
+ }, {
128
+ maxContextChars?: number | undefined;
129
+ maxFilesPerStep?: number | undefined;
130
+ maxEditFilesPerStep?: number | undefined;
131
+ maxFileChars?: number | undefined;
132
+ includeTests?: boolean | undefined;
133
+ includeImportNeighbors?: boolean | undefined;
134
+ }>>;
135
+ safety: z.ZodDefault<z.ZodObject<{
136
+ requireApproval: z.ZodDefault<z.ZodBoolean>;
137
+ maxFailedFixAttempts: z.ZodDefault<z.ZodNumber>;
138
+ maxChangedFilesPerStep: z.ZodDefault<z.ZodNumber>;
139
+ riskyPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
140
+ }, "strip", z.ZodTypeAny, {
141
+ requireApproval: boolean;
142
+ maxFailedFixAttempts: number;
143
+ maxChangedFilesPerStep: number;
144
+ riskyPaths: string[];
145
+ }, {
146
+ requireApproval?: boolean | undefined;
147
+ maxFailedFixAttempts?: number | undefined;
148
+ maxChangedFilesPerStep?: number | undefined;
149
+ riskyPaths?: string[] | undefined;
150
+ }>>;
151
+ commands: z.ZodDefault<z.ZodObject<{
152
+ typecheck: z.ZodDefault<z.ZodString>;
153
+ lint: z.ZodDefault<z.ZodString>;
154
+ test: z.ZodDefault<z.ZodString>;
155
+ build: z.ZodDefault<z.ZodString>;
156
+ }, "strip", z.ZodTypeAny, {
157
+ typecheck: string;
158
+ lint: string;
159
+ test: string;
160
+ build: string;
161
+ }, {
162
+ typecheck?: string | undefined;
163
+ lint?: string | undefined;
164
+ test?: string | undefined;
165
+ build?: string | undefined;
166
+ }>>;
167
+ ignore: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
168
+ }, "strip", z.ZodTypeAny, {
169
+ model: {
170
+ provider: "lmstudio";
171
+ baseUrl: string;
172
+ model: string;
173
+ apiKey: string;
174
+ temperature: number;
175
+ maxContextTokens: number;
176
+ timeoutMs: number;
177
+ };
178
+ context: {
179
+ maxContextChars: number;
180
+ maxFilesPerStep: number;
181
+ maxEditFilesPerStep: number;
182
+ maxFileChars: number;
183
+ includeTests: boolean;
184
+ includeImportNeighbors: boolean;
185
+ };
186
+ safety: {
187
+ requireApproval: boolean;
188
+ maxFailedFixAttempts: number;
189
+ maxChangedFilesPerStep: number;
190
+ riskyPaths: string[];
191
+ };
192
+ commands: {
193
+ typecheck: string;
194
+ lint: string;
195
+ test: string;
196
+ build: string;
197
+ };
198
+ ignore: string[];
199
+ }, {
200
+ model?: {
201
+ provider?: "lmstudio" | undefined;
202
+ baseUrl?: string | undefined;
203
+ model?: string | undefined;
204
+ apiKey?: string | undefined;
205
+ temperature?: number | undefined;
206
+ maxContextTokens?: number | undefined;
207
+ timeoutMs?: number | undefined;
208
+ } | undefined;
209
+ context?: {
210
+ maxContextChars?: number | undefined;
211
+ maxFilesPerStep?: number | undefined;
212
+ maxEditFilesPerStep?: number | undefined;
213
+ maxFileChars?: number | undefined;
214
+ includeTests?: boolean | undefined;
215
+ includeImportNeighbors?: boolean | undefined;
216
+ } | undefined;
217
+ safety?: {
218
+ requireApproval?: boolean | undefined;
219
+ maxFailedFixAttempts?: number | undefined;
220
+ maxChangedFilesPerStep?: number | undefined;
221
+ riskyPaths?: string[] | undefined;
222
+ } | undefined;
223
+ commands?: {
224
+ typecheck?: string | undefined;
225
+ lint?: string | undefined;
226
+ test?: string | undefined;
227
+ build?: string | undefined;
228
+ } | undefined;
229
+ ignore?: string[] | undefined;
230
+ }>;
231
+ export type AppConfig = z.infer<typeof appConfigSchema>;
232
+ export type ModelConfig = z.infer<typeof modelConfigSchema>;
233
+ export type ContextConfig = z.infer<typeof contextConfigSchema>;
234
+ export type SafetyConfig = z.infer<typeof safetyConfigSchema>;
235
+ export type CommandConfig = z.infer<typeof commandConfigSchema>;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Config schema — single source of truth for shape AND defaults (HLD-SRD §3.2, §9).
3
+ *
4
+ * Every field carries a `.default(...)` so an absent/empty config still parses
5
+ * to the full HLD-SRD §3.2 object. `AppConfig` is inferred from the schema.
6
+ */
7
+ import { z } from "zod";
8
+ export const modelConfigSchema = z.object({
9
+ provider: z.literal("lmstudio").default("lmstudio"),
10
+ baseUrl: z.string().default("http://localhost:1234/v1"),
11
+ model: z.string().default("qwen/qwen3.6-27b"),
12
+ apiKey: z.string().default("lm-studio"),
13
+ temperature: z.number().default(0.2),
14
+ maxContextTokens: z.number().int().default(32768),
15
+ // Request timeout (ms) used by the ModelClient. Not in §3.2 but needed by the
16
+ // client/doctor; defaults conservatively.
17
+ timeoutMs: z.number().int().default(60000),
18
+ });
19
+ export const contextConfigSchema = z.object({
20
+ maxContextChars: z.number().int().default(120000),
21
+ maxFilesPerStep: z.number().int().default(12),
22
+ maxEditFilesPerStep: z.number().int().default(5),
23
+ maxFileChars: z.number().int().default(50000),
24
+ includeTests: z.boolean().default(true),
25
+ includeImportNeighbors: z.boolean().default(true),
26
+ });
27
+ export const safetyConfigSchema = z.object({
28
+ requireApproval: z.boolean().default(true),
29
+ maxFailedFixAttempts: z.number().int().default(2),
30
+ maxChangedFilesPerStep: z.number().int().default(5),
31
+ riskyPaths: z
32
+ .array(z.string())
33
+ .default([
34
+ "**/auth/**",
35
+ "**/billing/**",
36
+ "**/payments/**",
37
+ "**/migrations/**",
38
+ ".env*",
39
+ ]),
40
+ });
41
+ export const commandConfigSchema = z.object({
42
+ typecheck: z.string().default("npm run typecheck"),
43
+ lint: z.string().default("npm run lint"),
44
+ test: z.string().default("npm test"),
45
+ build: z.string().default("npm run build"),
46
+ });
47
+ export const appConfigSchema = z.object({
48
+ model: modelConfigSchema.default({}),
49
+ context: contextConfigSchema.default({}),
50
+ safety: safetyConfigSchema.default({}),
51
+ commands: commandConfigSchema.default({}),
52
+ ignore: z
53
+ .array(z.string())
54
+ .default([
55
+ "node_modules",
56
+ ".git",
57
+ ".next",
58
+ "dist",
59
+ "build",
60
+ "coverage",
61
+ "package-lock.json",
62
+ "pnpm-lock.yaml",
63
+ "yarn.lock",
64
+ ]),
65
+ });
66
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjD,8EAA8E;IAC9E,0CAA0C;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,OAAO,CAAC;QACP,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,kBAAkB;QAClB,OAAO;KACR,CAAC;CACL,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,OAAO,CAAC;QACP,cAAc;QACd,MAAM;QACN,OAAO;QACP,MAAM;QACN,OAAO;QACP,UAAU;QACV,mBAAmB;QACnB,gBAAgB;QAChB,WAAW;KACZ,CAAC;CACL,CAAC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Context package + tolerant task/session types (HLD-SRD §9, §3.7).
3
+ *
4
+ * `ContextPackage` is the role-specific output of the Context Builder. The
5
+ * `ActiveTask` / `ActiveSession` shapes are intentionally tolerant and
6
+ * forward-compatible with the 0001_04 Task/Session Manager: every field is
7
+ * optional, parsing never throws, and unknown structure degrades gracefully.
8
+ */
9
+ import { z } from "zod";
10
+ import type { AgentRole } from "./model.js";
11
+ export declare const contextPackageSchema: z.ZodObject<{
12
+ role: z.ZodEnum<["planner", "retriever", "coder", "reviewer", "test-fixer", "summarizer"]>;
13
+ systemPrompt: z.ZodString;
14
+ userPrompt: z.ZodString;
15
+ includedMemoryFiles: z.ZodArray<z.ZodString, "many">;
16
+ includedSourceFiles: z.ZodArray<z.ZodString, "many">;
17
+ includedTestFiles: z.ZodArray<z.ZodString, "many">;
18
+ estimatedTokens: z.ZodNumber;
19
+ warnings: z.ZodArray<z.ZodString, "many">;
20
+ }, "strip", z.ZodTypeAny, {
21
+ warnings: string[];
22
+ role: "planner" | "retriever" | "coder" | "reviewer" | "test-fixer" | "summarizer";
23
+ systemPrompt: string;
24
+ userPrompt: string;
25
+ includedMemoryFiles: string[];
26
+ includedSourceFiles: string[];
27
+ includedTestFiles: string[];
28
+ estimatedTokens: number;
29
+ }, {
30
+ warnings: string[];
31
+ role: "planner" | "retriever" | "coder" | "reviewer" | "test-fixer" | "summarizer";
32
+ systemPrompt: string;
33
+ userPrompt: string;
34
+ includedMemoryFiles: string[];
35
+ includedSourceFiles: string[];
36
+ includedTestFiles: string[];
37
+ estimatedTokens: number;
38
+ }>;
39
+ export interface ContextPackage {
40
+ role: AgentRole;
41
+ systemPrompt: string;
42
+ userPrompt: string;
43
+ includedMemoryFiles: string[];
44
+ includedSourceFiles: string[];
45
+ includedTestFiles: string[];
46
+ estimatedTokens: number;
47
+ warnings: string[];
48
+ }
49
+ export interface ActiveSubtask {
50
+ /** The subtask description line (without the checkbox prefix). */
51
+ text: string;
52
+ /** True when the markdown checkbox is checked (`- [x]`). */
53
+ done: boolean;
54
+ /** Files the subtask is likely to touch (from a `likelyFiles:` line). */
55
+ likelyFiles?: string[];
56
+ }
57
+ export interface ActiveTask {
58
+ goal?: string;
59
+ subtasks?: ActiveSubtask[];
60
+ /** The session/task `Next Step`, if present. */
61
+ nextStep?: string;
62
+ /** The original markdown, retained verbatim. */
63
+ raw: string;
64
+ }
65
+ export interface ActiveSession {
66
+ currentState?: string;
67
+ nextStep?: string;
68
+ raw: string;
69
+ }
70
+ /** Parse a 0001_04-shaped task markdown string. Never throws. */
71
+ export declare function parseActiveTask(md: string): ActiveTask;
72
+ /** Parse a session markdown string tolerantly. Never throws. */
73
+ export declare function parseActiveSession(md: string): ActiveSession;
74
+ /**
75
+ * Resolve the "current" subtask: the first unchecked subtask in document order,
76
+ * else the first subtask, else undefined when there are no subtasks.
77
+ */
78
+ export declare function firstIncompleteSubtask(task: ActiveTask): ActiveSubtask | undefined;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Context package + tolerant task/session types (HLD-SRD §9, §3.7).
3
+ *
4
+ * `ContextPackage` is the role-specific output of the Context Builder. The
5
+ * `ActiveTask` / `ActiveSession` shapes are intentionally tolerant and
6
+ * forward-compatible with the 0001_04 Task/Session Manager: every field is
7
+ * optional, parsing never throws, and unknown structure degrades gracefully.
8
+ */
9
+ import { z } from "zod";
10
+ // ---------------------------------------------------------------------------
11
+ // ContextPackage (HLD-SRD §9)
12
+ // ---------------------------------------------------------------------------
13
+ const agentRoleSchema = z.enum([
14
+ "planner",
15
+ "retriever",
16
+ "coder",
17
+ "reviewer",
18
+ "test-fixer",
19
+ "summarizer",
20
+ ]);
21
+ export const contextPackageSchema = z.object({
22
+ role: agentRoleSchema,
23
+ systemPrompt: z.string(),
24
+ userPrompt: z.string(),
25
+ includedMemoryFiles: z.array(z.string()),
26
+ includedSourceFiles: z.array(z.string()),
27
+ includedTestFiles: z.array(z.string()),
28
+ estimatedTokens: z.number().int(),
29
+ warnings: z.array(z.string()),
30
+ });
31
+ /**
32
+ * Extract the body of a markdown section by heading title (case-insensitive),
33
+ * stopping at the next heading of the same-or-higher level. Returns the trimmed
34
+ * body, or undefined when the heading is absent or its body is empty.
35
+ */
36
+ function sectionBody(md, title) {
37
+ const lines = md.split(/\r?\n/);
38
+ const titleLc = title.toLowerCase();
39
+ let start = -1;
40
+ let level = 0;
41
+ for (let i = 0; i < lines.length; i++) {
42
+ const m = /^(#{1,6})\s+(.*?)\s*$/.exec(lines[i]);
43
+ if (m && m[2].toLowerCase() === titleLc) {
44
+ start = i + 1;
45
+ level = m[1].length;
46
+ break;
47
+ }
48
+ }
49
+ if (start === -1)
50
+ return undefined;
51
+ const collected = [];
52
+ for (let i = start; i < lines.length; i++) {
53
+ const m = /^(#{1,6})\s+/.exec(lines[i]);
54
+ if (m && m[1].length <= level)
55
+ break;
56
+ collected.push(lines[i]);
57
+ }
58
+ const body = collected.join("\n").trim();
59
+ return body.length > 0 ? body : undefined;
60
+ }
61
+ function parseLikelyFiles(raw) {
62
+ return raw
63
+ .split(",")
64
+ .map((s) => s.trim())
65
+ .filter((s) => s.length > 0);
66
+ }
67
+ /**
68
+ * Parse the `## Subtasks` section into checkbox list items. Each `- [ ]` /
69
+ * `- [x]` line starts a subtask; a following indented `likelyFiles:` line (or a
70
+ * `likelyFiles:` token on the same line) attaches its files. Tolerant: no
71
+ * checkboxes → no subtasks.
72
+ */
73
+ function parseSubtasks(md) {
74
+ const body = sectionBody(md, "Subtasks");
75
+ if (body === undefined)
76
+ return undefined;
77
+ const lines = body.split(/\r?\n/);
78
+ const subtasks = [];
79
+ let current;
80
+ const checkboxRe = /^\s*[-*]\s+\[( |x|X)\]\s*(.*)$/;
81
+ const likelyRe = /likelyFiles\s*:\s*(.*)$/i;
82
+ for (const line of lines) {
83
+ const cb = checkboxRe.exec(line);
84
+ if (cb) {
85
+ const done = cb[1].toLowerCase() === "x";
86
+ let text = cb[2].trim();
87
+ const inlineLikely = likelyRe.exec(text);
88
+ const subtask = { text, done };
89
+ if (inlineLikely) {
90
+ // `- [ ] foo likelyFiles: a.ts` — strip the trailing token from text.
91
+ text = text.slice(0, inlineLikely.index).trim();
92
+ subtask.text = text;
93
+ subtask.likelyFiles = parseLikelyFiles(inlineLikely[1]);
94
+ }
95
+ subtasks.push(subtask);
96
+ current = subtask;
97
+ continue;
98
+ }
99
+ const likely = likelyRe.exec(line);
100
+ if (likely && current && current.likelyFiles === undefined) {
101
+ current.likelyFiles = parseLikelyFiles(likely[1]);
102
+ }
103
+ }
104
+ return subtasks.length > 0 ? subtasks : undefined;
105
+ }
106
+ /** Parse a 0001_04-shaped task markdown string. Never throws. */
107
+ export function parseActiveTask(md) {
108
+ const task = { raw: md };
109
+ const goal = sectionBody(md, "Goal");
110
+ if (goal !== undefined)
111
+ task.goal = goal;
112
+ const subtasks = parseSubtasks(md);
113
+ if (subtasks !== undefined)
114
+ task.subtasks = subtasks;
115
+ const nextStep = sectionBody(md, "Next Step");
116
+ if (nextStep !== undefined)
117
+ task.nextStep = nextStep;
118
+ return task;
119
+ }
120
+ /** Parse a session markdown string tolerantly. Never throws. */
121
+ export function parseActiveSession(md) {
122
+ const session = { raw: md };
123
+ const currentState = sectionBody(md, "Current State");
124
+ if (currentState !== undefined)
125
+ session.currentState = currentState;
126
+ const nextStep = sectionBody(md, "Next Step");
127
+ if (nextStep !== undefined)
128
+ session.nextStep = nextStep;
129
+ return session;
130
+ }
131
+ /**
132
+ * Resolve the "current" subtask: the first unchecked subtask in document order,
133
+ * else the first subtask, else undefined when there are no subtasks.
134
+ */
135
+ export function firstIncompleteSubtask(task) {
136
+ const subs = task.subtasks;
137
+ if (!subs || subs.length === 0)
138
+ return undefined;
139
+ return subs.find((s) => !s.done) ?? subs[0];
140
+ }
141
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Repository index types and schema (HLD-SRD §3.3, §9).
3
+ *
4
+ * RepoFile — per-file metadata entry.
5
+ * RepoIndex — the full index document written to .ai-orchestrator/index.json.
6
+ */
7
+ import { z } from "zod";
8
+ export interface RepoFile {
9
+ path: string;
10
+ extension: string;
11
+ size: number;
12
+ language: string;
13
+ summary?: string;
14
+ imports: string[];
15
+ exports: string[];
16
+ isTest: boolean;
17
+ isConfig: boolean;
18
+ }
19
+ export interface RepoIndex {
20
+ generatedAt: string;
21
+ root: string;
22
+ files: RepoFile[];
23
+ }
24
+ export declare const repoFileSchema: z.ZodObject<{
25
+ path: z.ZodString;
26
+ extension: z.ZodString;
27
+ size: z.ZodNumber;
28
+ language: z.ZodString;
29
+ summary: z.ZodOptional<z.ZodString>;
30
+ imports: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
31
+ exports: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
32
+ isTest: z.ZodBoolean;
33
+ isConfig: z.ZodBoolean;
34
+ }, "strip", z.ZodTypeAny, {
35
+ path: string;
36
+ extension: string;
37
+ size: number;
38
+ language: string;
39
+ imports: string[];
40
+ exports: string[];
41
+ isTest: boolean;
42
+ isConfig: boolean;
43
+ summary?: string | undefined;
44
+ }, {
45
+ path: string;
46
+ extension: string;
47
+ size: number;
48
+ language: string;
49
+ isTest: boolean;
50
+ isConfig: boolean;
51
+ summary?: string | undefined;
52
+ imports?: string[] | undefined;
53
+ exports?: string[] | undefined;
54
+ }>;
55
+ export declare const repoIndexSchema: z.ZodObject<{
56
+ generatedAt: z.ZodString;
57
+ root: z.ZodString;
58
+ files: z.ZodArray<z.ZodObject<{
59
+ path: z.ZodString;
60
+ extension: z.ZodString;
61
+ size: z.ZodNumber;
62
+ language: z.ZodString;
63
+ summary: z.ZodOptional<z.ZodString>;
64
+ imports: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
65
+ exports: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
66
+ isTest: z.ZodBoolean;
67
+ isConfig: z.ZodBoolean;
68
+ }, "strip", z.ZodTypeAny, {
69
+ path: string;
70
+ extension: string;
71
+ size: number;
72
+ language: string;
73
+ imports: string[];
74
+ exports: string[];
75
+ isTest: boolean;
76
+ isConfig: boolean;
77
+ summary?: string | undefined;
78
+ }, {
79
+ path: string;
80
+ extension: string;
81
+ size: number;
82
+ language: string;
83
+ isTest: boolean;
84
+ isConfig: boolean;
85
+ summary?: string | undefined;
86
+ imports?: string[] | undefined;
87
+ exports?: string[] | undefined;
88
+ }>, "many">;
89
+ }, "strip", z.ZodTypeAny, {
90
+ root: string;
91
+ generatedAt: string;
92
+ files: {
93
+ path: string;
94
+ extension: string;
95
+ size: number;
96
+ language: string;
97
+ imports: string[];
98
+ exports: string[];
99
+ isTest: boolean;
100
+ isConfig: boolean;
101
+ summary?: string | undefined;
102
+ }[];
103
+ }, {
104
+ root: string;
105
+ generatedAt: string;
106
+ files: {
107
+ path: string;
108
+ extension: string;
109
+ size: number;
110
+ language: string;
111
+ isTest: boolean;
112
+ isConfig: boolean;
113
+ summary?: string | undefined;
114
+ imports?: string[] | undefined;
115
+ exports?: string[] | undefined;
116
+ }[];
117
+ }>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Repository index types and schema (HLD-SRD §3.3, §9).
3
+ *
4
+ * RepoFile — per-file metadata entry.
5
+ * RepoIndex — the full index document written to .ai-orchestrator/index.json.
6
+ */
7
+ import { z } from "zod";
8
+ export const repoFileSchema = z.object({
9
+ path: z.string(),
10
+ extension: z.string(),
11
+ size: z.number(),
12
+ language: z.string(),
13
+ summary: z.string().optional(),
14
+ imports: z.array(z.string()).default([]),
15
+ exports: z.array(z.string()).default([]),
16
+ isTest: z.boolean(),
17
+ isConfig: z.boolean(),
18
+ });
19
+ export const repoIndexSchema = z.object({
20
+ generatedAt: z.string(),
21
+ root: z.string(),
22
+ files: z.array(repoFileSchema),
23
+ });
24
+ //# sourceMappingURL=index.js.map