@vedangiitb/qwintly-core 1.4.12 → 1.4.13

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 (142) hide show
  1. package/dist/ai/generate/gemini.client.js +1 -1
  2. package/dist/ai/generate/gemini.client.js.map +1 -1
  3. package/dist/ai/generate/generateClient.d.ts.map +1 -1
  4. package/dist/ai/generate/generateClient.js +7 -3
  5. package/dist/ai/generate/generateClient.js.map +1 -1
  6. package/dist/ai/toolLoop/helpers/aiCall.helper.d.ts +16 -0
  7. package/dist/ai/toolLoop/helpers/aiCall.helper.d.ts.map +1 -0
  8. package/dist/ai/toolLoop/helpers/aiCall.helper.js +23 -0
  9. package/dist/ai/toolLoop/helpers/aiCall.helper.js.map +1 -0
  10. package/dist/ai/toolLoop/helpers/applyPatch.helper.d.ts +6 -0
  11. package/dist/ai/toolLoop/helpers/applyPatch.helper.d.ts.map +1 -0
  12. package/dist/ai/toolLoop/helpers/applyPatch.helper.js +10 -0
  13. package/dist/ai/toolLoop/helpers/applyPatch.helper.js.map +1 -0
  14. package/dist/ai/toolLoop/helpers/errors.helper.d.ts +15 -0
  15. package/dist/ai/toolLoop/helpers/errors.helper.d.ts.map +1 -0
  16. package/dist/ai/toolLoop/helpers/errors.helper.js +50 -0
  17. package/dist/ai/toolLoop/helpers/errors.helper.js.map +1 -0
  18. package/dist/ai/toolLoop/helpers/fsHelpers.d.ts +5 -0
  19. package/dist/ai/toolLoop/helpers/fsHelpers.d.ts.map +1 -0
  20. package/dist/ai/toolLoop/helpers/fsHelpers.js +28 -0
  21. package/dist/ai/toolLoop/helpers/fsHelpers.js.map +1 -0
  22. package/dist/ai/toolLoop/helpers/patchRetry.helper.d.ts +11 -0
  23. package/dist/ai/toolLoop/helpers/patchRetry.helper.d.ts.map +1 -0
  24. package/dist/ai/toolLoop/helpers/patchRetry.helper.js +30 -0
  25. package/dist/ai/toolLoop/helpers/patchRetry.helper.js.map +1 -0
  26. package/dist/ai/toolLoop/helpers/persistTokens.helpers.d.ts +7 -0
  27. package/dist/ai/toolLoop/helpers/persistTokens.helpers.d.ts.map +1 -0
  28. package/dist/ai/toolLoop/helpers/persistTokens.helpers.js +25 -0
  29. package/dist/ai/toolLoop/helpers/persistTokens.helpers.js.map +1 -0
  30. package/dist/ai/toolLoop/{plannerTaskParser.d.ts → helpers/plannerTaskParser.d.ts} +1 -1
  31. package/dist/ai/toolLoop/helpers/plannerTaskParser.d.ts.map +1 -0
  32. package/dist/ai/toolLoop/helpers/plannerTaskParser.js.map +1 -0
  33. package/dist/ai/toolLoop/helpers/readFile.helpers.d.ts +10 -0
  34. package/dist/ai/toolLoop/helpers/readFile.helpers.d.ts.map +1 -0
  35. package/dist/ai/toolLoop/helpers/readFile.helpers.js +26 -0
  36. package/dist/ai/toolLoop/helpers/readFile.helpers.js.map +1 -0
  37. package/dist/ai/toolLoop/helpers/signatures.helper.d.ts +2 -0
  38. package/dist/ai/toolLoop/helpers/signatures.helper.d.ts.map +1 -0
  39. package/dist/ai/toolLoop/helpers/signatures.helper.js +23 -0
  40. package/dist/ai/toolLoop/helpers/signatures.helper.js.map +1 -0
  41. package/dist/ai/toolLoop/helpers/toolArgs.helper.d.ts +12 -0
  42. package/dist/ai/toolLoop/helpers/toolArgs.helper.d.ts.map +1 -0
  43. package/dist/ai/toolLoop/helpers/toolArgs.helper.js +40 -0
  44. package/dist/ai/toolLoop/helpers/toolArgs.helper.js.map +1 -0
  45. package/dist/ai/toolLoop/helpers/toolExecution.helper.d.ts +22 -0
  46. package/dist/ai/toolLoop/helpers/toolExecution.helper.d.ts.map +1 -0
  47. package/dist/ai/toolLoop/helpers/toolExecution.helper.js +75 -0
  48. package/dist/ai/toolLoop/helpers/toolExecution.helper.js.map +1 -0
  49. package/dist/ai/toolLoop/helpers/toolHandlers.helper.d.ts +6 -0
  50. package/dist/ai/toolLoop/helpers/toolHandlers.helper.d.ts.map +1 -0
  51. package/dist/ai/toolLoop/helpers/toolHandlers.helper.js +86 -0
  52. package/dist/ai/toolLoop/helpers/toolHandlers.helper.js.map +1 -0
  53. package/dist/ai/toolLoop/toolEventSummary.d.ts +28 -0
  54. package/dist/ai/toolLoop/toolEventSummary.d.ts.map +1 -0
  55. package/dist/ai/toolLoop/toolEventSummary.js +253 -0
  56. package/dist/ai/toolLoop/toolEventSummary.js.map +1 -0
  57. package/dist/ai/toolLoop/toolLoopContext.d.ts +0 -14
  58. package/dist/ai/toolLoop/toolLoopContext.d.ts.map +1 -1
  59. package/dist/ai/toolLoop/toolLoopContext.js +7 -50
  60. package/dist/ai/toolLoop/toolLoopContext.js.map +1 -1
  61. package/dist/ai/toolLoop/toolLoopRunner.d.ts +6 -5
  62. package/dist/ai/toolLoop/toolLoopRunner.d.ts.map +1 -1
  63. package/dist/ai/toolLoop/toolLoopRunner.js +48 -281
  64. package/dist/ai/toolLoop/toolLoopRunner.js.map +1 -1
  65. package/dist/ai/toolLoop/toolStatusMessage.d.ts +6 -0
  66. package/dist/ai/toolLoop/toolStatusMessage.d.ts.map +1 -0
  67. package/dist/ai/toolLoop/toolStatusMessage.js +140 -0
  68. package/dist/ai/toolLoop/toolStatusMessage.js.map +1 -0
  69. package/dist/ai/tools/helpers/applyPatch.helpers.d.ts.map +1 -1
  70. package/dist/ai/tools/helpers/applyPatch.helpers.js +9 -4
  71. package/dist/ai/tools/helpers/applyPatch.helpers.js.map +1 -1
  72. package/dist/ai/tools/helpers/fileSystem.helpers.d.ts.map +1 -1
  73. package/dist/ai/tools/helpers/fileSystem.helpers.js +7 -1
  74. package/dist/ai/tools/helpers/fileSystem.helpers.js.map +1 -1
  75. package/dist/ai/tools/helpers/pageConfigJson.helpers.d.ts +13 -0
  76. package/dist/ai/tools/helpers/pageConfigJson.helpers.d.ts.map +1 -1
  77. package/dist/ai/tools/helpers/pageConfigJson.helpers.js +51 -21
  78. package/dist/ai/tools/helpers/pageConfigJson.helpers.js.map +1 -1
  79. package/dist/ai/tools/implementations/applyPatch.impl.js +2 -2
  80. package/dist/ai/tools/implementations/applyPatch.impl.js.map +1 -1
  81. package/dist/ai/tools/implementations/createNewRoute.impl.js +1 -1
  82. package/dist/ai/tools/implementations/createNewRoute.impl.js.map +1 -1
  83. package/dist/ai/tools/implementations/deleteElement.impl.d.ts.map +1 -1
  84. package/dist/ai/tools/implementations/deleteElement.impl.js +5 -37
  85. package/dist/ai/tools/implementations/deleteElement.impl.js.map +1 -1
  86. package/dist/ai/tools/implementations/insertElement.impl.d.ts.map +1 -1
  87. package/dist/ai/tools/implementations/insertElement.impl.js +9 -46
  88. package/dist/ai/tools/implementations/insertElement.impl.js.map +1 -1
  89. package/dist/ai/tools/implementations/updateClassName.impl.d.ts.map +1 -1
  90. package/dist/ai/tools/implementations/updateClassName.impl.js +5 -37
  91. package/dist/ai/tools/implementations/updateClassName.impl.js.map +1 -1
  92. package/dist/ai/tools/implementations/updateGlobalStyles.impl.d.ts.map +1 -1
  93. package/dist/ai/tools/implementations/updateGlobalStyles.impl.js +4 -3
  94. package/dist/ai/tools/implementations/updateGlobalStyles.impl.js.map +1 -1
  95. package/dist/ai/tools/implementations/updateProps.impl.d.ts.map +1 -1
  96. package/dist/ai/tools/implementations/updateProps.impl.js +5 -37
  97. package/dist/ai/tools/implementations/updateProps.impl.js.map +1 -1
  98. package/dist/ai/tools/schemas/createNewRoute.schema.d.ts.map +1 -1
  99. package/dist/ai/tools/schemas/createNewRoute.schema.js +1 -1
  100. package/dist/ai/tools/schemas/createNewRoute.schema.js.map +1 -1
  101. package/dist/ai/tools/schemas/deleteElement.schema.d.ts.map +1 -1
  102. package/dist/ai/tools/schemas/deleteElement.schema.js +1 -2
  103. package/dist/ai/tools/schemas/deleteElement.schema.js.map +1 -1
  104. package/dist/ai/tools/schemas/elementProps.schema.d.ts +101 -0
  105. package/dist/ai/tools/schemas/elementProps.schema.d.ts.map +1 -0
  106. package/dist/ai/tools/schemas/elementProps.schema.js +74 -0
  107. package/dist/ai/tools/schemas/elementProps.schema.js.map +1 -0
  108. package/dist/ai/tools/schemas/insertElement.schema.d.ts.map +1 -1
  109. package/dist/ai/tools/schemas/insertElement.schema.js +2 -74
  110. package/dist/ai/tools/schemas/insertElement.schema.js.map +1 -1
  111. package/dist/ai/tools/schemas/updateClassName.schema.d.ts.map +1 -1
  112. package/dist/ai/tools/schemas/updateClassName.schema.js +1 -2
  113. package/dist/ai/tools/schemas/updateClassName.schema.js.map +1 -1
  114. package/dist/ai/tools/schemas/updateProps.schema.d.ts +9 -9
  115. package/dist/ai/tools/schemas/updateProps.schema.d.ts.map +1 -1
  116. package/dist/ai/tools/schemas/updateProps.schema.js +3 -69
  117. package/dist/ai/tools/schemas/updateProps.schema.js.map +1 -1
  118. package/dist/image/unsplash.service.d.ts.map +1 -1
  119. package/dist/image/unsplash.service.js +6 -2
  120. package/dist/image/unsplash.service.js.map +1 -1
  121. package/dist/indexer/projectInfoIndex.d.ts.map +1 -1
  122. package/dist/indexer/projectInfoIndex.js +33 -25
  123. package/dist/indexer/projectInfoIndex.js.map +1 -1
  124. package/dist/types/styleConfig.d.ts.map +1 -1
  125. package/dist/types/styleConfig.js +2 -3
  126. package/dist/types/styleConfig.js.map +1 -1
  127. package/dist/utils/utils.d.ts +3 -0
  128. package/dist/utils/utils.d.ts.map +1 -1
  129. package/dist/utils/utils.js +8 -0
  130. package/dist/utils/utils.js.map +1 -1
  131. package/dist/utils/workspace.d.ts +1 -1
  132. package/dist/utils/workspace.d.ts.map +1 -1
  133. package/dist/utils/workspace.js +6 -11
  134. package/dist/utils/workspace.js.map +1 -1
  135. package/package.json +1 -1
  136. package/dist/ai/toolLoop/plannerTaskParser.d.ts.map +0 -1
  137. package/dist/ai/toolLoop/plannerTaskParser.js.map +0 -1
  138. package/dist/ai/toolLoop/toolLoopRunnerUtils.d.ts +0 -51
  139. package/dist/ai/toolLoop/toolLoopRunnerUtils.d.ts.map +0 -1
  140. package/dist/ai/toolLoop/toolLoopRunnerUtils.js +0 -367
  141. package/dist/ai/toolLoop/toolLoopRunnerUtils.js.map +0 -1
  142. /package/dist/ai/toolLoop/{plannerTaskParser.js → helpers/plannerTaskParser.js} +0 -0
@@ -0,0 +1,75 @@
1
+ import { EVENT_TYPES } from "../../../types/events.js";
2
+ import { serializeError } from "./errors.helper.js";
3
+ export async function executeToolHandler(params) {
4
+ const { name, handler, effectiveArgs, styleTokenKeySet, step, logger } = params;
5
+ if (!handler) {
6
+ return {
7
+ success: false,
8
+ error: `No handler registered for "${name}".`,
9
+ error_detail: {
10
+ name: "MissingToolHandlerError",
11
+ message: `No handler registered for "${name}".`,
12
+ },
13
+ };
14
+ }
15
+ try {
16
+ if (name === "update_global_styles") {
17
+ const flatKeys = Object.keys(effectiveArgs ?? {}).filter((k) => styleTokenKeySet.has(k));
18
+ if (flatKeys.length === 0) {
19
+ return {
20
+ success: false,
21
+ error: "must include at least one token key/value",
22
+ error_detail: {
23
+ name: "InvalidToolArgumentsError",
24
+ message: 'update_global_styles requires at least one token key/value (e.g. { radius: "0.75rem" }).',
25
+ },
26
+ note: "Resend update_global_styles with at least one token key/value, or skip this tool call.",
27
+ };
28
+ }
29
+ }
30
+ return await handler(effectiveArgs);
31
+ }
32
+ catch (err) {
33
+ logger(`AI tool: ${name} failed`, EVENT_TYPES.STEP_ERROR, true);
34
+ console.error("Tool loop: handler threw", err, {
35
+ tool: name,
36
+ step,
37
+ });
38
+ return {
39
+ success: false,
40
+ error: err instanceof Error ? err.message : String(err),
41
+ error_detail: serializeError(err),
42
+ note: "Tool handler threw. Inspect error_detail and retry with corrected args or a different approach.",
43
+ };
44
+ }
45
+ }
46
+ export function postProcessToolResult(params) {
47
+ const { name, toolResultRaw, effectiveArgs, readFileMeta, readFileDefaultMaxLines } = params;
48
+ if (name === "read_file" && readFileMeta) {
49
+ const path = typeof effectiveArgs.path === "string" ? effectiveArgs.path : "";
50
+ const originalJsonPayload = toolResultRaw?.kind === "json"
51
+ ? toolResultRaw?.json
52
+ : undefined;
53
+ if (originalJsonPayload !== undefined) {
54
+ // Token-efficient: return JSON as structured data (no double-stringifying).
55
+ return { path, json: originalJsonPayload };
56
+ }
57
+ const rawContent = typeof toolResultRaw?.content === "string"
58
+ ? String(toolResultRaw.content)
59
+ : typeof toolResultRaw === "string"
60
+ ? toolResultRaw
61
+ : JSON.stringify(toolResultRaw ?? null);
62
+ return {
63
+ path,
64
+ start_line: readFileMeta.start,
65
+ end_line: readFileMeta.end,
66
+ truncated: readFileMeta.wasCapped,
67
+ content: rawContent,
68
+ note: readFileMeta.wasCapped
69
+ ? `Capped to ${readFileDefaultMaxLines} lines. Request more with start_line/end_line.`
70
+ : undefined,
71
+ };
72
+ }
73
+ return toolResultRaw;
74
+ }
75
+ //# sourceMappingURL=toolExecution.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolExecution.helper.js","sourceRoot":"","sources":["../../../../src/ai/toolLoop/helpers/toolExecution.helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { EVENT_TYPES, EventType } from \"../../../types/events.js\";\nimport { serializeError } from \"./errors.helper.js\";\n\nexport type Logger = (\n message: string,\n eventType: EventType,\n displayedSummary?: boolean,\n) => Promise<void>;\n\nexport async function executeToolHandler(params: {\n name: string;\n handler: ((args: any) => Promise<any>) | undefined;\n effectiveArgs: Record<string, unknown>;\n styleTokenKeySet: Set<string>;\n step: number;\n logger: Logger;\n}): Promise<unknown> {\n const { name, handler, effectiveArgs, styleTokenKeySet, step, logger } = params;\n\n if (!handler) {\n return {\n success: false,\n error: `No handler registered for \"${name}\".`,\n error_detail: {\n name: \"MissingToolHandlerError\",\n message: `No handler registered for \"${name}\".`,\n },\n };\n }\n\n try {\n if (name === \"update_global_styles\") {\n const flatKeys = Object.keys(effectiveArgs ?? {}).filter((k) =>\n styleTokenKeySet.has(k),\n );\n if (flatKeys.length === 0) {\n return {\n success: false,\n error: \"must include at least one token key/value\",\n error_detail: {\n name: \"InvalidToolArgumentsError\",\n message:\n 'update_global_styles requires at least one token key/value (e.g. { radius: \"0.75rem\" }).',\n },\n note: \"Resend update_global_styles with at least one token key/value, or skip this tool call.\",\n };\n }\n }\n return await handler(effectiveArgs);\n } catch (err) {\n logger(`AI tool: ${name} failed`, EVENT_TYPES.STEP_ERROR, true);\n console.error(\"Tool loop: handler threw\", err, {\n tool: name,\n step,\n });\n return {\n success: false,\n error: err instanceof Error ? err.message : String(err),\n error_detail: serializeError(err),\n note: \"Tool handler threw. Inspect error_detail and retry with corrected args or a different approach.\",\n };\n }\n}\n\nexport function postProcessToolResult(params: {\n name: string;\n toolResultRaw: unknown;\n effectiveArgs: Record<string, unknown>;\n readFileMeta: { start: number; end: number; wasCapped: boolean } | null;\n readFileDefaultMaxLines?: number;\n}): unknown {\n const { name, toolResultRaw, effectiveArgs, readFileMeta, readFileDefaultMaxLines } = params;\n\n if (name === \"read_file\" && readFileMeta) {\n const path = typeof effectiveArgs.path === \"string\" ? effectiveArgs.path : \"\";\n\n const originalJsonPayload =\n (toolResultRaw as any)?.kind === \"json\"\n ? (toolResultRaw as any)?.json\n : undefined;\n\n if (originalJsonPayload !== undefined) {\n // Token-efficient: return JSON as structured data (no double-stringifying).\n return { path, json: originalJsonPayload };\n }\n\n const rawContent =\n typeof (toolResultRaw as any)?.content === \"string\"\n ? String((toolResultRaw as any).content)\n : typeof toolResultRaw === \"string\"\n ? toolResultRaw\n : JSON.stringify(toolResultRaw ?? null);\n\n return {\n path,\n start_line: readFileMeta.start,\n end_line: readFileMeta.end,\n truncated: readFileMeta.wasCapped,\n content: rawContent,\n note: readFileMeta.wasCapped\n ? `Capped to ${readFileDefaultMaxLines} lines. Request more with start_line/end_line.`\n : undefined,\n };\n }\n\n return toolResultRaw;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { createWorkspaceToolImpls } from "../../tools/implementations/factories.js";
2
+ export declare function createToolHandlers(params: {
3
+ impls: ReturnType<typeof createWorkspaceToolImpls>;
4
+ workspaceRoot: string;
5
+ }): Record<string, (args: any) => Promise<any>>;
6
+ //# sourceMappingURL=toolHandlers.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolHandlers.helper.d.ts","sourceRoot":"","sources":["../../../../src/ai/toolLoop/helpers/toolHandlers.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAIpF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CA4F9C"}
@@ -0,0 +1,86 @@
1
+ import { getAvailableRoutes } from "../../tools/helpers/pageConfigJson.helpers.js";
2
+ import { nodeFs } from "./fsHelpers.js";
3
+ import { parsePlannerTasksUnknown } from "./plannerTaskParser.js";
4
+ export function createToolHandlers(params) {
5
+ return {
6
+ read_file: async (args) => {
7
+ const path = String(args.path ?? "");
8
+ const startLine = args.start_line === undefined ? undefined : Number(args.start_line);
9
+ const endLine = args.end_line === undefined ? undefined : Number(args.end_line);
10
+ const content = await params.impls.readFileImpl(path, startLine, endLine);
11
+ return { path, content };
12
+ },
13
+ write_file: (args) => params.impls.writeFileImpl(String(args.path ?? ""), String(args.content ?? "")),
14
+ list_dir: async (args) => {
15
+ const content = await params.impls.listDirImpl(String(args.path ?? ""), Number(args.depth ?? 1));
16
+ return { content };
17
+ },
18
+ search: async (args) => {
19
+ const results = await params.impls.searchImpl(String(args.search_query ?? ""));
20
+ return { results };
21
+ },
22
+ apply_patch: (args) => params.impls.applyPatchImpl(String(args.patch_string ?? "")),
23
+ update_global_styles: async (args) => {
24
+ const result = await params.impls.updateGlobalStylesImpl(args);
25
+ return result;
26
+ },
27
+ create_new_route: async (args) => {
28
+ const parentRoute = String(args.parent_route ?? "");
29
+ const routeName = String(args.route_name ?? "");
30
+ const result = await params.impls.createNewRouteImpl(parentRoute, routeName);
31
+ return result;
32
+ },
33
+ delete_element: async (args) => {
34
+ const route = String(args.route ?? "");
35
+ const element_id = String(args.element_id ?? "");
36
+ const result = await params.impls.deleteElementImpl(route, element_id);
37
+ return result;
38
+ },
39
+ insert_element: async (args) => {
40
+ const result = await params.impls.insertElementImpl(args);
41
+ if (!result.success) {
42
+ const available = await getAvailableRoutes({
43
+ workspaceRoot: params.workspaceRoot,
44
+ fs: nodeFs,
45
+ });
46
+ return {
47
+ success: false,
48
+ error: `insert_element failed: ${result.error}. Available routes are: ${JSON.stringify(available)}. If you intend to create a new route, create it using the 'create_new_route' tool.`,
49
+ available_routes: available,
50
+ };
51
+ }
52
+ return result;
53
+ },
54
+ update_props: async (args) => {
55
+ const route = String(args.route ?? "");
56
+ const element_id = String(args.element_id ?? "");
57
+ const props = args.props;
58
+ const result = await params.impls.updatePropsImpl({
59
+ route,
60
+ element_id,
61
+ ...props,
62
+ });
63
+ return result;
64
+ },
65
+ update_classname: async (args) => {
66
+ const route = String(args.route ?? "");
67
+ const element_id = String(args.element_id ?? "");
68
+ const class_name = String(args.class_name ?? "");
69
+ const result = await params.impls.updateClassNameImpl(route, element_id, class_name);
70
+ return result;
71
+ },
72
+ get_available_routes: async (args) => {
73
+ const routes = await getAvailableRoutes({ workspaceRoot: params.workspaceRoot, fs: nodeFs });
74
+ return { success: true, routes };
75
+ },
76
+ submit_codegen_done: async (args) => ({
77
+ success: true,
78
+ summary: String(args.summary ?? "").trim(),
79
+ }),
80
+ submit_planner_tasks: async (args) => {
81
+ const tasks = parsePlannerTasksUnknown(args.planner_tasks);
82
+ return { success: true, count: tasks.length };
83
+ },
84
+ };
85
+ }
86
+ //# sourceMappingURL=toolHandlers.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolHandlers.helper.js","sourceRoot":"","sources":["../../../../src/ai/toolLoop/helpers/toolHandlers.helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAvailableRoutes } from \"../../tools/helpers/pageConfigJson.helpers.js\";\nimport { createWorkspaceToolImpls } from \"../../tools/implementations/factories.js\";\nimport { nodeFs } from \"./fsHelpers.js\";\nimport { parsePlannerTasksUnknown } from \"./plannerTaskParser.js\";\n\nexport function createToolHandlers(params: {\n impls: ReturnType<typeof createWorkspaceToolImpls>;\n workspaceRoot: string;\n}): Record<string, (args: any) => Promise<any>> {\n return {\n read_file: async (args) => {\n const path = String(args.path ?? \"\");\n const startLine =\n args.start_line === undefined ? undefined : Number(args.start_line);\n const endLine =\n args.end_line === undefined ? undefined : Number(args.end_line);\n const content = await params.impls.readFileImpl(path, startLine, endLine);\n return { path, content };\n },\n write_file: (args) =>\n params.impls.writeFileImpl(String(args.path ?? \"\"), String(args.content ?? \"\")),\n list_dir: async (args) => {\n const content = await params.impls.listDirImpl(\n String(args.path ?? \"\"),\n Number(args.depth ?? 1),\n );\n return { content };\n },\n search: async (args) => {\n const results = await params.impls.searchImpl(String(args.search_query ?? \"\"));\n return { results };\n },\n apply_patch: (args) =>\n params.impls.applyPatchImpl(String(args.patch_string ?? \"\")),\n update_global_styles: async (args) => {\n const result = await params.impls.updateGlobalStylesImpl(args);\n return result;\n },\n create_new_route: async (args) => {\n const parentRoute = String(args.parent_route ?? \"\");\n const routeName = String(args.route_name ?? \"\");\n const result = await params.impls.createNewRouteImpl(parentRoute, routeName);\n return result;\n },\n delete_element: async (args) => {\n const route = String(args.route ?? \"\");\n const element_id = String(args.element_id ?? \"\");\n const result = await params.impls.deleteElementImpl(route, element_id);\n return result;\n },\n insert_element: async (args) => {\n const result = await params.impls.insertElementImpl(args);\n if (!result.success) {\n const available = await getAvailableRoutes({\n workspaceRoot: params.workspaceRoot,\n fs: nodeFs,\n });\n return {\n success: false,\n error: `insert_element failed: ${result.error}. Available routes are: ${JSON.stringify(available)}. If you intend to create a new route, create it using the 'create_new_route' tool.`,\n available_routes: available,\n };\n }\n return result;\n },\n update_props: async (args) => {\n const route = String(args.route ?? \"\");\n const element_id = String(args.element_id ?? \"\");\n const props: any = args.props;\n const result = await params.impls.updatePropsImpl({\n route,\n element_id,\n ...props,\n });\n return result;\n },\n update_classname: async (args) => {\n const route = String(args.route ?? \"\");\n const element_id = String(args.element_id ?? \"\");\n const class_name = String(args.class_name ?? \"\");\n const result = await params.impls.updateClassNameImpl(\n route,\n element_id,\n class_name,\n );\n return result;\n },\n get_available_routes: async (args) => {\n const routes = await getAvailableRoutes({ workspaceRoot: params.workspaceRoot, fs: nodeFs });\n return { success: true, routes };\n },\n submit_codegen_done: async (args) => ({\n success: true,\n summary: String(args.summary ?? \"\").trim(),\n }),\n submit_planner_tasks: async (args) => {\n const tasks = parsePlannerTasksUnknown(args.planner_tasks);\n return { success: true, count: tasks.length };\n },\n };\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { ToolEvent } from "./toolLoopContext.js";
2
+ export type ToolEventSummaryInput = {
3
+ name: string;
4
+ effectiveArgs: Record<string, unknown>;
5
+ modelArgs: Record<string, unknown>;
6
+ readFileMeta: {
7
+ start: number;
8
+ end: number;
9
+ wasCapped: boolean;
10
+ } | null;
11
+ toolResult: unknown;
12
+ toolResultRaw: unknown;
13
+ };
14
+ export declare const buildToolEventSummary: (input: ToolEventSummaryInput) => ToolEvent;
15
+ export declare const recordToolEvent: (params: {
16
+ name: string;
17
+ effectiveArgs: Record<string, unknown>;
18
+ modelArgs: Record<string, unknown>;
19
+ readFileMeta: {
20
+ start: number;
21
+ end: number;
22
+ wasCapped: boolean;
23
+ } | null;
24
+ toolEvents: ToolEvent[];
25
+ toolResult: unknown;
26
+ toolResultRaw: unknown;
27
+ }) => void;
28
+ //# sourceMappingURL=toolEventSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolEventSummary.d.ts","sourceRoot":"","sources":["../../../src/ai/toolLoop/toolEventSummary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AA0RF,eAAO,MAAM,qBAAqB,GAChC,OAAO,qBAAqB,KAC3B,SAMF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CACxB,SAQA,CAAC"}
@@ -0,0 +1,253 @@
1
+ import { STYLE_TOKEN_KEYS } from "../../types/styleConfig.js";
2
+ import { getApplyPatchEventMeta } from "./helpers/applyPatch.helper.js";
3
+ const oneLine = (value, maxLen = 140) => {
4
+ let raw = "";
5
+ if (typeof value === "string") {
6
+ raw = value;
7
+ }
8
+ else if (value === undefined) {
9
+ raw = "";
10
+ }
11
+ else if (value === null) {
12
+ raw = "null";
13
+ }
14
+ else {
15
+ raw = JSON.stringify(value);
16
+ }
17
+ const collapsed = raw.replace(/\s+/g, " ").trim();
18
+ if (collapsed.length <= maxLen)
19
+ return collapsed;
20
+ return `${collapsed.slice(0, Math.max(0, maxLen - 1))}…`;
21
+ };
22
+ const getStringArg = (effectiveArgs, key) => oneLine(effectiveArgs[key] ?? "");
23
+ const summarizeReadFile = (input) => {
24
+ if (input.name !== "read_file")
25
+ return null;
26
+ const path = typeof input.effectiveArgs.path === "string" ? input.effectiveArgs.path : "";
27
+ const start = input.readFileMeta?.start ?? Number(input.effectiveArgs.start_line ?? 1);
28
+ const end = input.readFileMeta?.end ?? Number(input.effectiveArgs.end_line ?? start);
29
+ return {
30
+ name: input.name,
31
+ summary: `read_file ${path}:${start}-${end}${input.readFileMeta?.wasCapped ? " (capped)" : ""}`,
32
+ };
33
+ };
34
+ const summarizeApplyPatch = (input) => {
35
+ if (input.name !== "apply_patch")
36
+ return null;
37
+ const meta = typeof input.modelArgs.patch_string === "object"
38
+ ? input.modelArgs.patch_string
39
+ : null;
40
+ const fallback = getApplyPatchEventMeta(input.effectiveArgs);
41
+ let ok = "done";
42
+ if (input.toolResult?.success === true) {
43
+ ok = "success";
44
+ }
45
+ else if (input.toolResult?.success === false) {
46
+ ok = "failure";
47
+ }
48
+ return {
49
+ name: input.name,
50
+ summary: `apply_patch files=${JSON.stringify(meta?.files ?? fallback.files)} sha256=${String(meta?.sha256 ?? fallback.sha256).slice(0, 12)} chars=${meta?.chars ?? fallback.chars} result=${ok}`,
51
+ };
52
+ };
53
+ const summarizeCreateNewRoute = (input) => {
54
+ if (input.name !== "create_new_route")
55
+ return null;
56
+ const parentRoute = getStringArg(input.effectiveArgs, "parent_route") || "/";
57
+ const routeName = getStringArg(input.effectiveArgs, "route_name");
58
+ const successVal = input.toolResult?.success;
59
+ if (typeof successVal !== "boolean")
60
+ return null;
61
+ const route = oneLine(input.toolResult?.route ?? "");
62
+ const createdFiles = Array.isArray(input.toolResult?.created_files)
63
+ ? input.toolResult.created_files
64
+ : [];
65
+ const filesText = successVal === true ? ` created_files=${createdFiles.length}` : "";
66
+ const routeText = route ? ` route=${route}` : "";
67
+ const errText = successVal === false
68
+ ? ` error=${oneLine(input.toolResult?.error ?? "unknown", 160)}`
69
+ : "";
70
+ return {
71
+ name: input.name,
72
+ summary: `create_new_route ${successVal ? "success" : "failure"} parent_route=${parentRoute} route_name=${routeName}${routeText}${filesText}${errText}`,
73
+ };
74
+ };
75
+ const summarizeInsertElement = (input) => {
76
+ if (input.name !== "insert_element")
77
+ return null;
78
+ const route = getStringArg(input.effectiveArgs, "route");
79
+ const parentId = getStringArg(input.effectiveArgs, "parent_id");
80
+ const beforeId = getStringArg(input.effectiveArgs, "before_id");
81
+ const successVal = input.toolResult?.success;
82
+ if (typeof successVal !== "boolean")
83
+ return null;
84
+ const insertedId = oneLine(input.toolResult?.inserted_id ?? "");
85
+ const changedVal = input.toolResult?.changed;
86
+ const changedText = typeof changedVal === "boolean" ? ` changed=${changedVal}` : "";
87
+ const beforeText = beforeId ? ` before_id=${beforeId}` : "";
88
+ const insertedText = insertedId ? ` inserted_id=${insertedId}` : "";
89
+ const errText = successVal === false
90
+ ? ` error=${oneLine(input.toolResult?.error ?? "unknown", 160)}`
91
+ : "";
92
+ return {
93
+ name: input.name,
94
+ summary: `insert_element ${successVal ? "success" : "failure"} route=${route} parent_id=${parentId}${beforeText}${insertedText}${changedText}${errText}`,
95
+ };
96
+ };
97
+ const summarizeUpdateClassname = (input) => {
98
+ if (input.name !== "update_classname")
99
+ return null;
100
+ const route = getStringArg(input.effectiveArgs, "route");
101
+ const elementId = getStringArg(input.effectiveArgs, "element_id");
102
+ const className = oneLine(input.effectiveArgs.className ?? "", 160);
103
+ const successVal = input.toolResult?.success;
104
+ if (typeof successVal !== "boolean")
105
+ return null;
106
+ const changedVal = input.toolResult?.changed;
107
+ const changedText = typeof changedVal === "boolean" ? ` changed=${changedVal}` : "";
108
+ const updatedId = oneLine(input.toolResult?.updated_id ?? "");
109
+ const updatedText = updatedId ? ` updated_id=${updatedId}` : "";
110
+ const errText = successVal === false
111
+ ? ` error=${oneLine(input.toolResult?.error ?? "unknown", 160)}`
112
+ : "";
113
+ return {
114
+ name: input.name,
115
+ summary: `update_classname ${successVal ? "success" : "failure"} route=${route} element_id=${elementId} className="${className}"${updatedText}${changedText}${errText}`,
116
+ };
117
+ };
118
+ const summarizeUpdateProps = (input) => {
119
+ if (input.name !== "update_props")
120
+ return null;
121
+ const route = getStringArg(input.effectiveArgs, "route");
122
+ const elementId = getStringArg(input.effectiveArgs, "element_id");
123
+ const successVal = input.toolResult?.success;
124
+ if (typeof successVal !== "boolean")
125
+ return null;
126
+ const changedVal = input.toolResult?.changed;
127
+ const changedText = typeof changedVal === "boolean" ? ` changed=${changedVal}` : "";
128
+ const updatedId = oneLine(input.toolResult?.updated_id ?? "");
129
+ const updatedText = updatedId ? ` updated_id=${updatedId}` : "";
130
+ const patchKeys = Object.keys(input.effectiveArgs ?? {}).filter((k) => {
131
+ if (k === "route" || k === "element_id")
132
+ return false;
133
+ const v = input.effectiveArgs[k];
134
+ return v !== undefined && v !== null;
135
+ });
136
+ patchKeys.sort((a, b) => a.localeCompare(b));
137
+ const keysText = patchKeys.length > 0
138
+ ? ` keys=${oneLine(patchKeys.join(","), 140)}`
139
+ : "";
140
+ const errText = successVal === false
141
+ ? ` error=${oneLine(input.toolResult?.error ?? "unknown", 160)}`
142
+ : "";
143
+ return {
144
+ name: input.name,
145
+ summary: `update_props ${successVal ? "success" : "failure"} route=${route} element_id=${elementId}${keysText}${updatedText}${changedText}${errText}`,
146
+ };
147
+ };
148
+ const summarizeUpdateGlobalStyles = (input) => {
149
+ if (input.name !== "update_global_styles")
150
+ return null;
151
+ const tokenKeySet = new Set(STYLE_TOKEN_KEYS);
152
+ const tokenKeys = Object.keys(input.effectiveArgs ?? {}).filter((k) => tokenKeySet.has(k));
153
+ const successVal = input.toolResult?.success;
154
+ if (typeof successVal !== "boolean")
155
+ return null;
156
+ const changedVal = input.toolResult?.changed;
157
+ const changedText = typeof changedVal === "boolean" ? ` changed=${changedVal}` : "";
158
+ const version = input.toolResult?.version;
159
+ const versionText = typeof version === "number" && Number.isFinite(version)
160
+ ? ` version=${version}`
161
+ : "";
162
+ const created = input.toolResult?.created;
163
+ const createdText = typeof created === "boolean" ? ` created=${created}` : "";
164
+ tokenKeys.sort((a, b) => a.localeCompare(b));
165
+ const keysText = tokenKeys.length > 0
166
+ ? ` tokens=${oneLine(tokenKeys.join(","), 160)}`
167
+ : "";
168
+ const errText = successVal === false
169
+ ? ` error=${oneLine(input.toolResult?.error ?? "unknown", 160)}`
170
+ : "";
171
+ return {
172
+ name: input.name,
173
+ summary: `update_global_styles ${successVal ? "success" : "failure"}${keysText}${versionText}${createdText}${changedText}${errText}`,
174
+ };
175
+ };
176
+ const summarizeSearch = (input) => {
177
+ if (input.name !== "search")
178
+ return null;
179
+ const q = typeof input.effectiveArgs.search_query === "string" ? input.effectiveArgs.search_query.trim() : "";
180
+ const results = Array.isArray(input.toolResultRaw?.results)
181
+ ? input.toolResultRaw.results
182
+ : [];
183
+ return {
184
+ name: input.name,
185
+ summary: `search "${q}" -> ${results.length} results`,
186
+ };
187
+ };
188
+ const summarizeListDir = (input) => {
189
+ if (input.name !== "list_dir")
190
+ return null;
191
+ const p = typeof input.effectiveArgs.path === "string" ? input.effectiveArgs.path : "";
192
+ const d = Number(input.effectiveArgs.depth ?? 1);
193
+ return { name: input.name, summary: `list_dir ${p} depth=${d}` };
194
+ };
195
+ const summarizeCreateFile = (input) => {
196
+ if (input.name !== "create_file")
197
+ return null;
198
+ const p = typeof input.effectiveArgs.path === "string" ? input.effectiveArgs.path : "";
199
+ return { name: input.name, summary: `create_file ${p}` };
200
+ };
201
+ const summarizeDeleteFile = (input) => {
202
+ if (input.name !== "delete_file")
203
+ return null;
204
+ const p = typeof input.effectiveArgs.path === "string" ? input.effectiveArgs.path : "";
205
+ return { name: input.name, summary: `delete_file ${p}` };
206
+ };
207
+ const summarizeGenericSuccessFailure = (input) => {
208
+ const successVal = input.toolResult?.success;
209
+ if (typeof successVal !== "boolean")
210
+ return null;
211
+ const changedVal = input.toolResult?.changed;
212
+ const changedText = typeof changedVal === "boolean" ? ` changed=${changedVal}` : "";
213
+ const errText = successVal === false
214
+ ? ` error=${oneLine(input.toolResult?.error ?? "unknown", 160)}`
215
+ : "";
216
+ return {
217
+ name: input.name,
218
+ summary: `${input.name} ${successVal ? "success" : "failure"}${changedText}${errText}`,
219
+ };
220
+ };
221
+ const SUMMARIZERS = [
222
+ summarizeReadFile,
223
+ summarizeApplyPatch,
224
+ summarizeCreateNewRoute,
225
+ summarizeInsertElement,
226
+ summarizeUpdateClassname,
227
+ summarizeUpdateProps,
228
+ summarizeUpdateGlobalStyles,
229
+ summarizeSearch,
230
+ summarizeListDir,
231
+ summarizeCreateFile,
232
+ summarizeDeleteFile,
233
+ summarizeGenericSuccessFailure,
234
+ ];
235
+ export const buildToolEventSummary = (input) => {
236
+ for (const summarizer of SUMMARIZERS) {
237
+ const evt = summarizer(input);
238
+ if (evt)
239
+ return evt;
240
+ }
241
+ return { name: input.name, summary: `${input.name} called` };
242
+ };
243
+ export const recordToolEvent = (params) => {
244
+ const { toolEvents, name } = params;
245
+ try {
246
+ toolEvents.push(buildToolEventSummary(params));
247
+ }
248
+ catch {
249
+ toolEvents.push({ name, summary: `${name} called` });
250
+ return;
251
+ }
252
+ };
253
+ //# sourceMappingURL=toolEventSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolEventSummary.js","sourceRoot":"","sources":["../../../src/ai/toolLoop/toolEventSummary.ts"],"names":[],"mappings":"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","sourcesContent":["import { STYLE_TOKEN_KEYS } from \"../../types/styleConfig.js\";\nimport { getApplyPatchEventMeta } from \"./helpers/applyPatch.helper.js\";\nimport { ToolEvent } from \"./toolLoopContext.js\";\n\nexport type ToolEventSummaryInput = {\n name: string;\n effectiveArgs: Record<string, unknown>;\n modelArgs: Record<string, unknown>;\n readFileMeta: { start: number; end: number; wasCapped: boolean } | null;\n toolResult: unknown;\n toolResultRaw: unknown;\n};\n\nconst oneLine = (value: unknown, maxLen = 140) => {\n let raw = \"\";\n if (typeof value === \"string\") {\n raw = value;\n } else if (value === undefined) {\n raw = \"\";\n } else if (value === null) {\n raw = \"null\";\n } else {\n raw = JSON.stringify(value);\n }\n const collapsed = raw.replace(/\\s+/g, \" \").trim();\n if (collapsed.length <= maxLen) return collapsed;\n return `${collapsed.slice(0, Math.max(0, maxLen - 1))}…`;\n};\n\nconst getStringArg = (effectiveArgs: Record<string, unknown>, key: string) =>\n oneLine(effectiveArgs[key] ?? \"\");\n\ntype ToolEventSummarizer = (input: ToolEventSummaryInput) => ToolEvent | null;\n\nconst summarizeReadFile: ToolEventSummarizer = (input) => {\n if (input.name !== \"read_file\") return null;\n\n const path = typeof input.effectiveArgs.path === \"string\" ? input.effectiveArgs.path : \"\";\n const start =\n input.readFileMeta?.start ?? Number(input.effectiveArgs.start_line ?? 1);\n const end =\n input.readFileMeta?.end ?? Number(input.effectiveArgs.end_line ?? start);\n\n return {\n name: input.name,\n summary: `read_file ${path}:${start}-${end}${\n input.readFileMeta?.wasCapped ? \" (capped)\" : \"\"\n }`,\n };\n};\n\nconst summarizeApplyPatch: ToolEventSummarizer = (input) => {\n if (input.name !== \"apply_patch\") return null;\n\n const meta =\n typeof (input.modelArgs as any).patch_string === \"object\"\n ? ((input.modelArgs as any).patch_string as any)\n : null;\n const fallback = getApplyPatchEventMeta(input.effectiveArgs);\n let ok = \"done\";\n if ((input.toolResult as any)?.success === true) {\n ok = \"success\";\n } else if ((input.toolResult as any)?.success === false) {\n ok = \"failure\";\n }\n\n return {\n name: input.name,\n summary: `apply_patch files=${JSON.stringify(\n meta?.files ?? fallback.files,\n )} sha256=${String(meta?.sha256 ?? fallback.sha256).slice(0, 12)} chars=${\n meta?.chars ?? fallback.chars\n } result=${ok}`,\n };\n};\n\nconst summarizeCreateNewRoute: ToolEventSummarizer = (input) => {\n if (input.name !== \"create_new_route\") return null;\n\n const parentRoute = getStringArg(input.effectiveArgs, \"parent_route\") || \"/\";\n const routeName = getStringArg(input.effectiveArgs, \"route_name\");\n const successVal = (input.toolResult as any)?.success;\n if (typeof successVal !== \"boolean\") return null;\n\n const route = oneLine((input.toolResult as any)?.route ?? \"\");\n const createdFiles = Array.isArray((input.toolResult as any)?.created_files)\n ? ((input.toolResult as any).created_files as unknown[])\n : [];\n\n const filesText =\n successVal === true ? ` created_files=${createdFiles.length}` : \"\";\n const routeText = route ? ` route=${route}` : \"\";\n const errText =\n successVal === false\n ? ` error=${oneLine((input.toolResult as any)?.error ?? \"unknown\", 160)}`\n : \"\";\n\n return {\n name: input.name,\n summary: `create_new_route ${successVal ? \"success\" : \"failure\"} parent_route=${parentRoute} route_name=${routeName}${routeText}${filesText}${errText}`,\n };\n};\n\nconst summarizeInsertElement: ToolEventSummarizer = (input) => {\n if (input.name !== \"insert_element\") return null;\n\n const route = getStringArg(input.effectiveArgs, \"route\");\n const parentId = getStringArg(input.effectiveArgs, \"parent_id\");\n const beforeId = getStringArg(input.effectiveArgs, \"before_id\");\n const successVal = (input.toolResult as any)?.success;\n if (typeof successVal !== \"boolean\") return null;\n\n const insertedId = oneLine((input.toolResult as any)?.inserted_id ?? \"\");\n const changedVal = (input.toolResult as any)?.changed;\n const changedText =\n typeof changedVal === \"boolean\" ? ` changed=${changedVal}` : \"\";\n const beforeText = beforeId ? ` before_id=${beforeId}` : \"\";\n const insertedText = insertedId ? ` inserted_id=${insertedId}` : \"\";\n const errText =\n successVal === false\n ? ` error=${oneLine((input.toolResult as any)?.error ?? \"unknown\", 160)}`\n : \"\";\n\n return {\n name: input.name,\n summary: `insert_element ${successVal ? \"success\" : \"failure\"} route=${route} parent_id=${parentId}${beforeText}${insertedText}${changedText}${errText}`,\n };\n};\n\nconst summarizeUpdateClassname: ToolEventSummarizer = (input) => {\n if (input.name !== \"update_classname\") return null;\n\n const route = getStringArg(input.effectiveArgs, \"route\");\n const elementId = getStringArg(input.effectiveArgs, \"element_id\");\n const className = oneLine((input.effectiveArgs as any).className ?? \"\", 160);\n const successVal = (input.toolResult as any)?.success;\n if (typeof successVal !== \"boolean\") return null;\n\n const changedVal = (input.toolResult as any)?.changed;\n const changedText =\n typeof changedVal === \"boolean\" ? ` changed=${changedVal}` : \"\";\n const updatedId = oneLine((input.toolResult as any)?.updated_id ?? \"\");\n const updatedText = updatedId ? ` updated_id=${updatedId}` : \"\";\n const errText =\n successVal === false\n ? ` error=${oneLine((input.toolResult as any)?.error ?? \"unknown\", 160)}`\n : \"\";\n\n return {\n name: input.name,\n summary: `update_classname ${successVal ? \"success\" : \"failure\"} route=${route} element_id=${elementId} className=\"${className}\"${updatedText}${changedText}${errText}`,\n };\n};\n\nconst summarizeUpdateProps: ToolEventSummarizer = (input) => {\n if (input.name !== \"update_props\") return null;\n\n const route = getStringArg(input.effectiveArgs, \"route\");\n const elementId = getStringArg(input.effectiveArgs, \"element_id\");\n const successVal = (input.toolResult as any)?.success;\n if (typeof successVal !== \"boolean\") return null;\n\n const changedVal = (input.toolResult as any)?.changed;\n const changedText =\n typeof changedVal === \"boolean\" ? ` changed=${changedVal}` : \"\";\n const updatedId = oneLine((input.toolResult as any)?.updated_id ?? \"\");\n const updatedText = updatedId ? ` updated_id=${updatedId}` : \"\";\n\n const patchKeys = Object.keys(input.effectiveArgs ?? {}).filter((k) => {\n if (k === \"route\" || k === \"element_id\") return false;\n const v = (input.effectiveArgs as any)[k];\n return v !== undefined && v !== null;\n });\n patchKeys.sort((a, b) => a.localeCompare(b));\n const keysText =\n patchKeys.length > 0\n ? ` keys=${oneLine(patchKeys.join(\",\"), 140)}`\n : \"\";\n\n const errText =\n successVal === false\n ? ` error=${oneLine((input.toolResult as any)?.error ?? \"unknown\", 160)}`\n : \"\";\n\n return {\n name: input.name,\n summary: `update_props ${successVal ? \"success\" : \"failure\"} route=${route} element_id=${elementId}${keysText}${updatedText}${changedText}${errText}`,\n };\n};\n\nconst summarizeUpdateGlobalStyles: ToolEventSummarizer = (input) => {\n if (input.name !== \"update_global_styles\") return null;\n\n const tokenKeySet = new Set<string>(STYLE_TOKEN_KEYS as unknown as string[]);\n const tokenKeys = Object.keys(input.effectiveArgs ?? {}).filter((k) =>\n tokenKeySet.has(k),\n );\n const successVal = (input.toolResult as any)?.success;\n if (typeof successVal !== \"boolean\") return null;\n\n const changedVal = (input.toolResult as any)?.changed;\n const changedText =\n typeof changedVal === \"boolean\" ? ` changed=${changedVal}` : \"\";\n const version = (input.toolResult as any)?.version;\n const versionText =\n typeof version === \"number\" && Number.isFinite(version)\n ? ` version=${version}`\n : \"\";\n const created = (input.toolResult as any)?.created;\n const createdText = typeof created === \"boolean\" ? ` created=${created}` : \"\";\n tokenKeys.sort((a, b) => a.localeCompare(b));\n const keysText =\n tokenKeys.length > 0\n ? ` tokens=${oneLine(tokenKeys.join(\",\"), 160)}`\n : \"\";\n const errText =\n successVal === false\n ? ` error=${oneLine((input.toolResult as any)?.error ?? \"unknown\", 160)}`\n : \"\";\n\n return {\n name: input.name,\n summary: `update_global_styles ${successVal ? \"success\" : \"failure\"}${keysText}${versionText}${createdText}${changedText}${errText}`,\n };\n};\n\nconst summarizeSearch: ToolEventSummarizer = (input) => {\n if (input.name !== \"search\") return null;\n\n const q = typeof input.effectiveArgs.search_query === \"string\" ? input.effectiveArgs.search_query.trim() : \"\";\n const results = Array.isArray((input.toolResultRaw as any)?.results)\n ? (input.toolResultRaw as any).results\n : [];\n\n return {\n name: input.name,\n summary: `search \"${q}\" -> ${results.length} results`,\n };\n};\n\nconst summarizeListDir: ToolEventSummarizer = (input) => {\n if (input.name !== \"list_dir\") return null;\n\n const p = typeof input.effectiveArgs.path === \"string\" ? input.effectiveArgs.path : \"\";\n const d = Number(input.effectiveArgs.depth ?? 1);\n return { name: input.name, summary: `list_dir ${p} depth=${d}` };\n};\n\nconst summarizeCreateFile: ToolEventSummarizer = (input) => {\n if (input.name !== \"create_file\") return null;\n const p = typeof input.effectiveArgs.path === \"string\" ? input.effectiveArgs.path : \"\";\n return { name: input.name, summary: `create_file ${p}` };\n};\n\nconst summarizeDeleteFile: ToolEventSummarizer = (input) => {\n if (input.name !== \"delete_file\") return null;\n const p = typeof input.effectiveArgs.path === \"string\" ? input.effectiveArgs.path : \"\";\n return { name: input.name, summary: `delete_file ${p}` };\n};\n\nconst summarizeGenericSuccessFailure: ToolEventSummarizer = (input) => {\n const successVal = (input.toolResult as any)?.success;\n if (typeof successVal !== \"boolean\") return null;\n\n const changedVal = (input.toolResult as any)?.changed;\n const changedText =\n typeof changedVal === \"boolean\" ? ` changed=${changedVal}` : \"\";\n const errText =\n successVal === false\n ? ` error=${oneLine((input.toolResult as any)?.error ?? \"unknown\", 160)}`\n : \"\";\n\n return {\n name: input.name,\n summary: `${input.name} ${successVal ? \"success\" : \"failure\"}${changedText}${errText}`,\n };\n};\n\nconst SUMMARIZERS: ToolEventSummarizer[] = [\n summarizeReadFile,\n summarizeApplyPatch,\n summarizeCreateNewRoute,\n summarizeInsertElement,\n summarizeUpdateClassname,\n summarizeUpdateProps,\n summarizeUpdateGlobalStyles,\n summarizeSearch,\n summarizeListDir,\n summarizeCreateFile,\n summarizeDeleteFile,\n summarizeGenericSuccessFailure,\n];\n\nexport const buildToolEventSummary = (\n input: ToolEventSummaryInput,\n): ToolEvent => {\n for (const summarizer of SUMMARIZERS) {\n const evt = summarizer(input);\n if (evt) return evt;\n }\n return { name: input.name, summary: `${input.name} called` };\n};\n\nexport const recordToolEvent = (params: {\n name: string;\n effectiveArgs: Record<string, unknown>;\n modelArgs: Record<string, unknown>;\n readFileMeta: { start: number; end: number; wasCapped: boolean } | null;\n toolEvents: ToolEvent[];\n toolResult: unknown;\n toolResultRaw: unknown;\n}) => {\n const { toolEvents, name } = params;\n try {\n toolEvents.push(buildToolEventSummary(params));\n } catch {\n toolEvents.push({ name, summary: `${name} called` });\n return;\n }\n};\n"]}
@@ -16,18 +16,4 @@ export declare const compactForModel: (input: {
16
16
  toolEvents: ToolEvent[];
17
17
  policy: Required<ToolLoopContextPolicy>;
18
18
  }) => any[];
19
- export declare const normalizeReadFileArgs: (args: Record<string, unknown>, maxLines: number) => {
20
- effectiveArgs: {
21
- start_line: number;
22
- end_line: number;
23
- };
24
- start: number;
25
- end: number;
26
- wasCapped: boolean;
27
- };
28
- export declare const getApplyPatchEventMeta: (args: Record<string, unknown>) => {
29
- chars: number;
30
- sha256: string;
31
- files: string[];
32
- };
33
19
  //# sourceMappingURL=toolLoopContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolLoopContext.d.ts","sourceRoot":"","sources":["../../../src/ai/toolLoop/toolLoopContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,qBAAqB,CAKlE,CAAC;AAuBF,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,4BAqB9B,CAAC;AAiBF,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CACzC,UA8BA,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,MAAM;;;;;;;;CAmCjB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;CAOnE,CAAC"}
1
+ {"version":3,"file":"toolLoopContext.d.ts","sourceRoot":"","sources":["../../../src/ai/toolLoop/toolLoopContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,qBAAqB,CAKlE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,4BA0B9B,CAAC;AAiBF,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CACzC,UA8BA,CAAC"}