@ai-coders/context 0.5.0 → 0.5.2

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 (114) hide show
  1. package/README.md +103 -360
  2. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -1
  3. package/dist/generators/agents/templates/playbookTemplate.js +5 -1
  4. package/dist/generators/agents/templates/playbookTemplate.js.map +1 -1
  5. package/dist/generators/documentation/templates/apiReferenceTemplate.d.ts.map +1 -1
  6. package/dist/generators/documentation/templates/apiReferenceTemplate.js +3 -1
  7. package/dist/generators/documentation/templates/apiReferenceTemplate.js.map +1 -1
  8. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -1
  9. package/dist/generators/documentation/templates/architectureTemplate.js +16 -12
  10. package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -1
  11. package/dist/generators/documentation/templates/common.d.ts +5 -0
  12. package/dist/generators/documentation/templates/common.d.ts.map +1 -1
  13. package/dist/generators/documentation/templates/common.js +14 -0
  14. package/dist/generators/documentation/templates/common.js.map +1 -1
  15. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts.map +1 -1
  16. package/dist/generators/documentation/templates/dataFlowTemplate.js +10 -6
  17. package/dist/generators/documentation/templates/dataFlowTemplate.js.map +1 -1
  18. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts.map +1 -1
  19. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js +5 -3
  20. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js.map +1 -1
  21. package/dist/generators/documentation/templates/glossaryTemplate.d.ts.map +1 -1
  22. package/dist/generators/documentation/templates/glossaryTemplate.js +10 -6
  23. package/dist/generators/documentation/templates/glossaryTemplate.js.map +1 -1
  24. package/dist/generators/documentation/templates/migrationTemplate.d.ts.map +1 -1
  25. package/dist/generators/documentation/templates/migrationTemplate.js +3 -1
  26. package/dist/generators/documentation/templates/migrationTemplate.js.map +1 -1
  27. package/dist/generators/documentation/templates/onboardingTemplate.d.ts.map +1 -1
  28. package/dist/generators/documentation/templates/onboardingTemplate.js +3 -1
  29. package/dist/generators/documentation/templates/onboardingTemplate.js.map +1 -1
  30. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts.map +1 -1
  31. package/dist/generators/documentation/templates/projectOverviewTemplate.js +14 -10
  32. package/dist/generators/documentation/templates/projectOverviewTemplate.js.map +1 -1
  33. package/dist/generators/documentation/templates/securityTemplate.d.ts.map +1 -1
  34. package/dist/generators/documentation/templates/securityTemplate.js +11 -5
  35. package/dist/generators/documentation/templates/securityTemplate.js.map +1 -1
  36. package/dist/generators/documentation/templates/testingTemplate.d.ts.map +1 -1
  37. package/dist/generators/documentation/templates/testingTemplate.js +5 -2
  38. package/dist/generators/documentation/templates/testingTemplate.js.map +1 -1
  39. package/dist/generators/documentation/templates/toolingTemplate.d.ts.map +1 -1
  40. package/dist/generators/documentation/templates/toolingTemplate.js +11 -8
  41. package/dist/generators/documentation/templates/toolingTemplate.js.map +1 -1
  42. package/dist/generators/documentation/templates/troubleshootingTemplate.d.ts.map +1 -1
  43. package/dist/generators/documentation/templates/troubleshootingTemplate.js +3 -1
  44. package/dist/generators/documentation/templates/troubleshootingTemplate.js.map +1 -1
  45. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -1
  46. package/dist/generators/plans/templates/planTemplate.js +5 -3
  47. package/dist/generators/plans/templates/planTemplate.js.map +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +235 -39
  50. package/dist/index.js.map +1 -1
  51. package/dist/services/ai/agents/documentationAgent.d.ts.map +1 -1
  52. package/dist/services/ai/agents/documentationAgent.js +3 -29
  53. package/dist/services/ai/agents/documentationAgent.js.map +1 -1
  54. package/dist/services/ai/agents/planAgent.d.ts.map +1 -1
  55. package/dist/services/ai/agents/planAgent.js +6 -53
  56. package/dist/services/ai/agents/planAgent.js.map +1 -1
  57. package/dist/services/ai/agents/playbookAgent.d.ts.map +1 -1
  58. package/dist/services/ai/agents/playbookAgent.js +3 -24
  59. package/dist/services/ai/agents/playbookAgent.js.map +1 -1
  60. package/dist/services/ai/prompts/index.d.ts +2 -0
  61. package/dist/services/ai/prompts/index.d.ts.map +1 -0
  62. package/dist/services/ai/prompts/index.js +12 -0
  63. package/dist/services/ai/prompts/index.js.map +1 -0
  64. package/dist/services/ai/prompts/sharedPrompts.d.ts +33 -0
  65. package/dist/services/ai/prompts/sharedPrompts.d.ts.map +1 -0
  66. package/dist/services/ai/prompts/sharedPrompts.js +136 -0
  67. package/dist/services/ai/prompts/sharedPrompts.js.map +1 -0
  68. package/dist/services/ai/schemas.d.ts +1 -1
  69. package/dist/services/ai/toolRegistry.d.ts +27 -0
  70. package/dist/services/ai/toolRegistry.d.ts.map +1 -0
  71. package/dist/services/ai/toolRegistry.js +126 -0
  72. package/dist/services/ai/toolRegistry.js.map +1 -0
  73. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +75 -5
  74. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +1 -1
  75. package/dist/services/ai/tools/fillScaffoldingTool.js +247 -43
  76. package/dist/services/ai/tools/fillScaffoldingTool.js.map +1 -1
  77. package/dist/services/ai/tools/index.d.ts +2 -2
  78. package/dist/services/ai/tools/index.d.ts.map +1 -1
  79. package/dist/services/ai/tools/index.js +9 -3
  80. package/dist/services/ai/tools/index.js.map +1 -1
  81. package/dist/services/ai/tools/initializeContextTool.d.ts +1 -1
  82. package/dist/services/fill/fillService.d.ts.map +1 -1
  83. package/dist/services/fill/fillService.js +7 -2
  84. package/dist/services/fill/fillService.js.map +1 -1
  85. package/dist/services/mcp/mcpServer.d.ts.map +1 -1
  86. package/dist/services/mcp/mcpServer.js +60 -20
  87. package/dist/services/mcp/mcpServer.js.map +1 -1
  88. package/dist/services/state/index.d.ts +2 -0
  89. package/dist/services/state/index.d.ts.map +1 -0
  90. package/dist/services/state/index.js +6 -0
  91. package/dist/services/state/index.js.map +1 -0
  92. package/dist/services/state/stateDetector.d.ts +53 -0
  93. package/dist/services/state/stateDetector.d.ts.map +1 -0
  94. package/dist/services/state/stateDetector.js +189 -0
  95. package/dist/services/state/stateDetector.js.map +1 -0
  96. package/dist/services/update/index.d.ts +2 -0
  97. package/dist/services/update/index.d.ts.map +1 -0
  98. package/dist/services/update/index.js +6 -0
  99. package/dist/services/update/index.js.map +1 -0
  100. package/dist/services/update/updateService.d.ts +64 -0
  101. package/dist/services/update/updateService.d.ts.map +1 -0
  102. package/dist/services/update/updateService.js +295 -0
  103. package/dist/services/update/updateService.js.map +1 -0
  104. package/dist/types.d.ts +0 -5
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/utils/frontMatter.d.ts +55 -0
  107. package/dist/utils/frontMatter.d.ts.map +1 -0
  108. package/dist/utils/frontMatter.js +173 -0
  109. package/dist/utils/frontMatter.js.map +1 -0
  110. package/dist/utils/i18n.d.ts +14 -0
  111. package/dist/utils/i18n.d.ts.map +1 -1
  112. package/dist/utils/i18n.js +28 -0
  113. package/dist/utils/i18n.js.map +1 -1
  114. package/package.json +1 -1
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * Centralized tool descriptions and metadata.
4
+ * Single source of truth for tool descriptions used by both AI SDK tools and MCP server.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TOOL_DESCRIPTIONS = void 0;
8
+ exports.getToolDescription = getToolDescription;
9
+ exports.getToolNames = getToolNames;
10
+ exports.getToolListForPrompt = getToolListForPrompt;
11
+ /**
12
+ * Tool descriptions - the single source of truth
13
+ */
14
+ exports.TOOL_DESCRIPTIONS = {
15
+ readFile: {
16
+ name: 'readFile',
17
+ description: 'Read the contents of a file from the filesystem'
18
+ },
19
+ listFiles: {
20
+ name: 'listFiles',
21
+ description: 'List files matching a glob pattern in the repository'
22
+ },
23
+ analyzeSymbols: {
24
+ name: 'analyzeSymbols',
25
+ description: 'Analyze symbols in a source file (classes, functions, interfaces, types, enums)'
26
+ },
27
+ getFileStructure: {
28
+ name: 'getFileStructure',
29
+ description: 'Get the directory structure and file listing of a repository'
30
+ },
31
+ searchCode: {
32
+ name: 'searchCode',
33
+ description: 'Search for code patterns across files using regex'
34
+ },
35
+ buildSemanticContext: {
36
+ name: 'buildSemanticContext',
37
+ description: 'Build optimized semantic context for LLM prompts. Pre-analyzes the codebase and returns formatted context.'
38
+ },
39
+ checkScaffolding: {
40
+ name: 'checkScaffolding',
41
+ description: 'Check if .context scaffolding exists and return granular status'
42
+ },
43
+ initializeContext: {
44
+ name: 'initializeContext',
45
+ description: 'Initialize .context scaffolding and create template files.',
46
+ extendedDescription: `Initialize .context scaffolding and create template files.
47
+ IMPORTANT: After this tool completes, you MUST fill the generated files:
48
+ 1. Use buildSemanticContext to analyze the codebase
49
+ 2. Read each generated template file
50
+ 3. Write filled content to each file based on the analysis
51
+
52
+ CRITICAL - Documentation Quality Requirements:
53
+ After filling the files with semantic analysis content, you MUST apply reasoning to significantly IMPROVE the documentation:
54
+
55
+ - Architecture docs: Reason about design patterns, identify why certain architectural decisions were made, explain trade-offs, and document implicit design principles that aren't obvious from code alone
56
+ - Data flow docs: Think through edge cases, document error handling paths, explain the reasoning behind data transformations, and clarify complex interactions
57
+ - Agent playbooks: Use your understanding to create actionable, context-aware instructions that go beyond generic templates
58
+ - README files: Synthesize information to create clear, developer-friendly overviews that highlight what's most important
59
+
60
+ DO NOT simply copy the semantic analysis output. Use critical thinking to:
61
+ 1. Identify gaps in the auto-generated content
62
+ 2. Add explanations for "why" not just "what"
63
+ 3. Include practical examples where helpful
64
+ 4. Highlight important caveats or gotchas
65
+ 5. Ensure documentation tells a coherent story
66
+
67
+ The goal is documentation that a new developer would find genuinely helpful, not just technically accurate.`
68
+ },
69
+ scaffoldPlan: {
70
+ name: 'scaffoldPlan',
71
+ description: 'Create a plan template in .context/plans/'
72
+ },
73
+ fillScaffolding: {
74
+ name: 'fillScaffolding',
75
+ description: 'Analyze codebase and generate filled content for scaffolding templates.',
76
+ extendedDescription: `Analyze codebase and generate filled content for scaffolding templates.
77
+ Returns suggestedContent for each file. Supports pagination with offset/limit (default: 3 files).
78
+ For large projects, use listFilesToFill + fillSingleFile instead to avoid output size limits.
79
+ IMPORTANT: After calling this, write each suggestedContent to its corresponding file path.`
80
+ },
81
+ listFilesToFill: {
82
+ name: 'listFilesToFill',
83
+ description: 'List scaffold files that need to be filled. Returns only file paths (no content).',
84
+ extendedDescription: `List scaffold files that need to be filled. Returns only file paths (no content).
85
+ Use this first to get the list, then call fillSingleFile for each file.
86
+ This is more efficient than fillScaffolding for large projects.`
87
+ },
88
+ fillSingleFile: {
89
+ name: 'fillSingleFile',
90
+ description: 'Generate suggested content for a single scaffold file.',
91
+ extendedDescription: `Generate suggested content for a single scaffold file.
92
+ Call listFilesToFill first to get file paths, then call this for each file.
93
+ This avoids output size limits by processing one file at a time.`
94
+ }
95
+ };
96
+ /**
97
+ * Get description for a tool (uses extended if available for MCP, regular for AI SDK)
98
+ */
99
+ function getToolDescription(toolName, useExtended = false) {
100
+ const tool = exports.TOOL_DESCRIPTIONS[toolName];
101
+ if (!tool)
102
+ return '';
103
+ return useExtended && tool.extendedDescription
104
+ ? tool.extendedDescription
105
+ : tool.description;
106
+ }
107
+ /**
108
+ * Get all tool names
109
+ */
110
+ function getToolNames() {
111
+ return Object.keys(exports.TOOL_DESCRIPTIONS);
112
+ }
113
+ /**
114
+ * Generate a tool list summary for system prompts
115
+ */
116
+ function getToolListForPrompt(toolNames) {
117
+ const names = toolNames || ['readFile', 'listFiles', 'analyzeSymbols', 'getFileStructure', 'searchCode'];
118
+ return names
119
+ .map(name => {
120
+ const tool = exports.TOOL_DESCRIPTIONS[name];
121
+ return tool ? `- ${name}: ${tool.description}` : null;
122
+ })
123
+ .filter(Boolean)
124
+ .join('\n');
125
+ }
126
+ //# sourceMappingURL=toolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../../src/services/ai/toolRegistry.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA6GH,gDAMC;AAKD,oCAEC;AAKD,oDASC;AA/HD;;GAEG;AACU,QAAA,iBAAiB,GAAoC;IAChE,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,iDAAiD;KAC/D;IAED,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,sDAAsD;KACpE;IAED,cAAc,EAAE;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,iFAAiF;KAC/F;IAED,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8DAA8D;KAC5E;IAED,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,mDAAmD;KACjE;IAED,oBAAoB,EAAE;QACpB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,4GAA4G;KAC1H;IAED,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iEAAiE;KAC/E;IAED,iBAAiB,EAAE;QACjB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,4DAA4D;QACzE,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;4GAqBmF;KACzG;IAED,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,2CAA2C;KACzD;IAED,eAAe,EAAE;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,yEAAyE;QACtF,mBAAmB,EAAE;;;2FAGkE;KACxF;IAED,eAAe,EAAE;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,mFAAmF;QAChG,mBAAmB,EAAE;;gEAEuC;KAC7D;IAED,cAAc,EAAE;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,wDAAwD;QACrE,mBAAmB,EAAE;;iEAEwC;KAC9D;CACF,CAAC;AAEF;;GAEG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,WAAW,GAAG,KAAK;IACtE,MAAM,IAAI,GAAG,yBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,WAAW,IAAI,IAAI,CAAC,mBAAmB;QAC5C,CAAC,CAAC,IAAI,CAAC,mBAAmB;QAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,SAAoB;IACvD,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACzG,OAAO,KAAK;SACT,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,IAAI,GAAG,yBAAiB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -1,36 +1,106 @@
1
1
  import { z } from 'zod';
2
- declare const FillScaffoldingInputSchema: z.ZodObject<{
2
+ /**
3
+ * Cleanup shared context builder resources.
4
+ * Call this during server/process shutdown to release LSP processes.
5
+ */
6
+ export declare function cleanupSharedContext(): Promise<void>;
7
+ declare const ListFilesToFillInputSchema: z.ZodObject<{
3
8
  repoPath: z.ZodString;
4
9
  outputDir: z.ZodOptional<z.ZodString>;
5
10
  target: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
11
+ docs: "docs";
6
12
  agents: "agents";
13
+ plans: "plans";
14
+ all: "all";
15
+ }>>>;
16
+ }, z.core.$strip>;
17
+ export type ListFilesToFillInput = z.infer<typeof ListFilesToFillInputSchema>;
18
+ interface FileToFillInfo {
19
+ path: string;
20
+ relativePath: string;
21
+ type: 'doc' | 'agent' | 'plan';
22
+ }
23
+ export declare const listFilesToFillTool: import("ai").Tool<{
24
+ repoPath: string;
25
+ outputDir?: string | undefined;
26
+ target?: "docs" | "agents" | "plans" | "all" | undefined;
27
+ }, {
28
+ success: boolean;
29
+ error: string;
30
+ files?: undefined;
31
+ totalCount?: undefined;
32
+ instructions?: undefined;
33
+ } | {
34
+ success: boolean;
35
+ files: FileToFillInfo[];
36
+ totalCount: number;
37
+ instructions: string;
38
+ error?: undefined;
39
+ }>;
40
+ declare const FillSingleFileInputSchema: z.ZodObject<{
41
+ repoPath: z.ZodString;
42
+ filePath: z.ZodString;
43
+ }, z.core.$strip>;
44
+ export type FillSingleFileInput = z.infer<typeof FillSingleFileInputSchema>;
45
+ export declare const fillSingleFileTool: import("ai").Tool<{
46
+ repoPath: string;
47
+ filePath: string;
48
+ }, {
49
+ success: boolean;
50
+ error: string;
51
+ filePath?: undefined;
52
+ fileType?: undefined;
53
+ suggestedContent?: undefined;
54
+ instructions?: undefined;
55
+ } | {
56
+ success: boolean;
57
+ filePath: string;
58
+ fileType: "plan" | "agent" | "doc";
59
+ suggestedContent: string;
60
+ instructions: string;
61
+ error?: undefined;
62
+ }>;
63
+ declare const FillScaffoldingInputSchema: z.ZodObject<{
64
+ repoPath: z.ZodString;
65
+ outputDir: z.ZodOptional<z.ZodString>;
66
+ target: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
7
67
  docs: "docs";
68
+ agents: "agents";
8
69
  plans: "plans";
9
70
  all: "all";
10
71
  }>>>;
72
+ offset: z.ZodOptional<z.ZodNumber>;
73
+ limit: z.ZodOptional<z.ZodNumber>;
11
74
  }, z.core.$strip>;
12
75
  export type FillScaffoldingInput = z.infer<typeof FillScaffoldingInputSchema>;
13
76
  interface FileToFill {
14
77
  path: string;
15
78
  relativePath: string;
16
- currentContent: string;
17
79
  suggestedContent: string;
18
80
  type: 'doc' | 'agent' | 'plan';
19
81
  }
20
82
  export declare const fillScaffoldingTool: import("ai").Tool<{
21
83
  repoPath: string;
22
84
  outputDir?: string | undefined;
23
- target?: "agents" | "docs" | "plans" | "all" | undefined;
85
+ target?: "docs" | "agents" | "plans" | "all" | undefined;
86
+ offset?: number | undefined;
87
+ limit?: number | undefined;
24
88
  }, {
25
89
  success: boolean;
26
90
  error: string;
27
- codebaseContext?: undefined;
28
91
  filesToFill?: undefined;
92
+ pagination?: undefined;
29
93
  instructions?: undefined;
30
94
  } | {
31
95
  success: boolean;
32
- codebaseContext: string;
33
96
  filesToFill: FileToFill[];
97
+ pagination: {
98
+ offset: number;
99
+ limit: number;
100
+ returned: number;
101
+ totalCount: number;
102
+ hasMore: boolean;
103
+ };
34
104
  instructions: string;
35
105
  error?: undefined;
36
106
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"fillScaffoldingTool.d.ts","sourceRoot":"","sources":["../../../../src/services/ai/tools/fillScaffoldingTool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,0BAA0B;;;;;;;;;iBAK9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;EA+H9B,CAAC"}
1
+ {"version":3,"file":"fillScaffoldingTool.d.ts","sourceRoot":"","sources":["../../../../src/services/ai/tools/fillScaffoldingTool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1D;AAMD,QAAA,MAAM,0BAA0B;;;;;;;;;iBAK9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;EAmF9B,CAAC;AAMH,QAAA,MAAM,yBAAyB;;;iBAG7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;EA2D7B,CAAC;AAMH,QAAA,MAAM,0BAA0B;;;;;;;;;;;iBAO9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EA8I9B,CAAC"}
@@ -33,25 +33,215 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.fillScaffoldingTool = void 0;
36
+ exports.fillScaffoldingTool = exports.fillSingleFileTool = exports.listFilesToFillTool = void 0;
37
+ exports.cleanupSharedContext = cleanupSharedContext;
37
38
  const ai_1 = require("ai");
38
39
  const path = __importStar(require("path"));
39
40
  const fs = __importStar(require("fs-extra"));
40
41
  const zod_1 = require("zod");
41
42
  const contextBuilder_1 = require("../../semantic/contextBuilder");
43
+ // Shared context builder instance for efficiency
44
+ let sharedContextBuilder = null;
45
+ let cachedContext = null;
46
+ async function getOrBuildContext(repoPath) {
47
+ if (cachedContext && cachedContext.repoPath === repoPath) {
48
+ return cachedContext.context;
49
+ }
50
+ // Cleanup existing builder before creating new one (cache invalidation)
51
+ // This releases LSP language server child processes
52
+ if (sharedContextBuilder) {
53
+ await sharedContextBuilder.shutdown();
54
+ sharedContextBuilder = null;
55
+ }
56
+ sharedContextBuilder = new contextBuilder_1.SemanticContextBuilder();
57
+ const context = await sharedContextBuilder.buildDocumentationContext(repoPath);
58
+ cachedContext = { repoPath, context };
59
+ return context;
60
+ }
61
+ /**
62
+ * Cleanup shared context builder resources.
63
+ * Call this during server/process shutdown to release LSP processes.
64
+ */
65
+ async function cleanupSharedContext() {
66
+ if (sharedContextBuilder) {
67
+ await sharedContextBuilder.shutdown();
68
+ sharedContextBuilder = null;
69
+ cachedContext = null;
70
+ }
71
+ }
72
+ // ============================================
73
+ // listFilesToFill - Lightweight file listing
74
+ // ============================================
75
+ const ListFilesToFillInputSchema = zod_1.z.object({
76
+ repoPath: zod_1.z.string().describe('Repository path'),
77
+ outputDir: zod_1.z.string().optional().describe('Scaffold directory (default: ./.context)'),
78
+ target: zod_1.z.enum(['docs', 'agents', 'plans', 'all']).default('all').optional()
79
+ .describe('Which scaffolding to list')
80
+ });
81
+ exports.listFilesToFillTool = (0, ai_1.tool)({
82
+ description: `List scaffold files that need to be filled. Returns only file paths (no content) for efficient listing.
83
+ Use this first to get the list, then call fillSingleFile for each file.`,
84
+ inputSchema: ListFilesToFillInputSchema,
85
+ execute: async (input) => {
86
+ const { repoPath, outputDir: customOutputDir, target = 'all' } = input;
87
+ const resolvedRepoPath = path.resolve(repoPath);
88
+ const outputDir = customOutputDir
89
+ ? path.resolve(customOutputDir)
90
+ : path.resolve(resolvedRepoPath, '.context');
91
+ try {
92
+ if (!await fs.pathExists(outputDir)) {
93
+ return {
94
+ success: false,
95
+ error: `Scaffold directory does not exist: ${outputDir}. Run initializeContext first.`
96
+ };
97
+ }
98
+ const files = [];
99
+ // Collect docs
100
+ if (target === 'all' || target === 'docs') {
101
+ const docsDir = path.join(outputDir, 'docs');
102
+ if (await fs.pathExists(docsDir)) {
103
+ const docFiles = await fs.readdir(docsDir);
104
+ for (const file of docFiles) {
105
+ if (!file.endsWith('.md'))
106
+ continue;
107
+ files.push({
108
+ path: path.join(docsDir, file),
109
+ relativePath: `docs/${file}`,
110
+ type: 'doc'
111
+ });
112
+ }
113
+ }
114
+ }
115
+ // Collect agents
116
+ if (target === 'all' || target === 'agents') {
117
+ const agentsDir = path.join(outputDir, 'agents');
118
+ if (await fs.pathExists(agentsDir)) {
119
+ const agentFiles = await fs.readdir(agentsDir);
120
+ for (const file of agentFiles) {
121
+ if (!file.endsWith('.md') || file.toLowerCase() === 'readme.md')
122
+ continue;
123
+ files.push({
124
+ path: path.join(agentsDir, file),
125
+ relativePath: `agents/${file}`,
126
+ type: 'agent'
127
+ });
128
+ }
129
+ }
130
+ }
131
+ // Collect plans
132
+ if (target === 'all' || target === 'plans') {
133
+ const plansDir = path.join(outputDir, 'plans');
134
+ if (await fs.pathExists(plansDir)) {
135
+ const planFiles = await fs.readdir(plansDir);
136
+ for (const file of planFiles) {
137
+ if (!file.endsWith('.md') || file.toLowerCase() === 'readme.md')
138
+ continue;
139
+ files.push({
140
+ path: path.join(plansDir, file),
141
+ relativePath: `plans/${file}`,
142
+ type: 'plan'
143
+ });
144
+ }
145
+ }
146
+ }
147
+ return {
148
+ success: true,
149
+ files,
150
+ totalCount: files.length,
151
+ instructions: `Found ${files.length} files to fill. Call fillSingleFile for each file path to get suggested content.`
152
+ };
153
+ }
154
+ catch (error) {
155
+ return {
156
+ success: false,
157
+ error: error instanceof Error ? error.message : String(error)
158
+ };
159
+ }
160
+ }
161
+ });
162
+ // ============================================
163
+ // fillSingleFile - Process one file at a time
164
+ // ============================================
165
+ const FillSingleFileInputSchema = zod_1.z.object({
166
+ repoPath: zod_1.z.string().describe('Repository path'),
167
+ filePath: zod_1.z.string().describe('Absolute path to the scaffold file to fill')
168
+ });
169
+ exports.fillSingleFileTool = (0, ai_1.tool)({
170
+ description: `Generate suggested content for a single scaffold file.
171
+ Call listFilesToFill first to get file paths, then call this for each file.`,
172
+ inputSchema: FillSingleFileInputSchema,
173
+ execute: async (input) => {
174
+ const { repoPath, filePath } = input;
175
+ const resolvedRepoPath = path.resolve(repoPath);
176
+ const resolvedFilePath = path.resolve(filePath);
177
+ try {
178
+ if (!await fs.pathExists(resolvedFilePath)) {
179
+ return {
180
+ success: false,
181
+ error: `File does not exist: ${resolvedFilePath}`
182
+ };
183
+ }
184
+ // Get or build semantic context (cached)
185
+ const semanticContext = await getOrBuildContext(resolvedRepoPath);
186
+ // Read current content
187
+ const currentContent = await fs.readFile(resolvedFilePath, 'utf-8');
188
+ const fileName = path.basename(resolvedFilePath);
189
+ const parentDir = path.basename(path.dirname(resolvedFilePath));
190
+ // Generate suggested content based on file type
191
+ let suggestedContent;
192
+ let fileType;
193
+ if (parentDir === 'docs') {
194
+ suggestedContent = generateDocContent(fileName, currentContent, semanticContext);
195
+ fileType = 'doc';
196
+ }
197
+ else if (parentDir === 'agents') {
198
+ const agentType = path.basename(fileName, '.md');
199
+ suggestedContent = generateAgentContent(agentType, currentContent, semanticContext);
200
+ fileType = 'agent';
201
+ }
202
+ else if (parentDir === 'plans') {
203
+ suggestedContent = currentContent; // Plans need manual filling
204
+ fileType = 'plan';
205
+ }
206
+ else {
207
+ suggestedContent = currentContent;
208
+ fileType = 'doc';
209
+ }
210
+ return {
211
+ success: true,
212
+ filePath: resolvedFilePath,
213
+ fileType,
214
+ suggestedContent,
215
+ instructions: `Write this suggestedContent to ${resolvedFilePath}`
216
+ };
217
+ }
218
+ catch (error) {
219
+ return {
220
+ success: false,
221
+ error: error instanceof Error ? error.message : String(error)
222
+ };
223
+ }
224
+ }
225
+ });
226
+ // ============================================
227
+ // fillScaffolding - Original tool with pagination
228
+ // ============================================
42
229
  const FillScaffoldingInputSchema = zod_1.z.object({
43
230
  repoPath: zod_1.z.string().describe('Repository path'),
44
231
  outputDir: zod_1.z.string().optional().describe('Scaffold directory (default: ./.context)'),
45
232
  target: zod_1.z.enum(['docs', 'agents', 'plans', 'all']).default('all').optional()
46
- .describe('Which scaffolding to fill')
233
+ .describe('Which scaffolding to fill'),
234
+ offset: zod_1.z.number().optional().describe('Skip first N files (for pagination)'),
235
+ limit: zod_1.z.number().optional().describe('Max files to return (default: 3, use 0 for all)')
47
236
  });
48
237
  exports.fillScaffoldingTool = (0, ai_1.tool)({
49
238
  description: `Analyze codebase and generate filled content for scaffolding templates.
50
- Returns the content that should be written to each file.
239
+ Returns suggestedContent for each file. Supports pagination with offset/limit.
240
+ For large projects, use listFilesToFill + fillSingleFile instead.
51
241
  After calling this tool, write the suggestedContent to each file path.`,
52
242
  inputSchema: FillScaffoldingInputSchema,
53
243
  execute: async (input) => {
54
- const { repoPath, outputDir: customOutputDir, target = 'all' } = input;
244
+ const { repoPath, outputDir: customOutputDir, target = 'all', offset = 0, limit = 3 } = input;
55
245
  const resolvedRepoPath = path.resolve(repoPath);
56
246
  const outputDir = customOutputDir
57
247
  ? path.resolve(customOutputDir)
@@ -70,11 +260,11 @@ After calling this tool, write the suggestedContent to each file path.`,
70
260
  error: `Scaffold directory does not exist: ${outputDir}. Run initializeContext first.`
71
261
  };
72
262
  }
73
- // Build semantic context for the codebase
74
- const contextBuilder = new contextBuilder_1.SemanticContextBuilder();
75
- const semanticContext = await contextBuilder.buildDocumentationContext(resolvedRepoPath);
76
- const filesToFill = [];
77
- // Process docs
263
+ // Get or build semantic context (cached for efficiency)
264
+ const semanticContext = await getOrBuildContext(resolvedRepoPath);
265
+ // Collect all file paths first
266
+ const allFiles = [];
267
+ // Collect docs
78
268
  if (target === 'all' || target === 'docs') {
79
269
  const docsDir = path.join(outputDir, 'docs');
80
270
  if (await fs.pathExists(docsDir)) {
@@ -82,21 +272,15 @@ After calling this tool, write the suggestedContent to each file path.`,
82
272
  for (const file of docFiles) {
83
273
  if (!file.endsWith('.md'))
84
274
  continue;
85
- const filePath = path.join(docsDir, file);
86
- const currentContent = await fs.readFile(filePath, 'utf-8');
87
- // Generate suggested content based on file type
88
- const suggestedContent = generateDocContent(file, currentContent, semanticContext);
89
- filesToFill.push({
90
- path: filePath,
91
- relativePath: path.relative(outputDir, filePath),
92
- currentContent,
93
- suggestedContent,
275
+ allFiles.push({
276
+ path: path.join(docsDir, file),
277
+ relativePath: path.relative(outputDir, path.join(docsDir, file)),
94
278
  type: 'doc'
95
279
  });
96
280
  }
97
281
  }
98
282
  }
99
- // Process agents
283
+ // Collect agents
100
284
  if (target === 'all' || target === 'agents') {
101
285
  const agentsDir = path.join(outputDir, 'agents');
102
286
  if (await fs.pathExists(agentsDir)) {
@@ -104,21 +288,15 @@ After calling this tool, write the suggestedContent to each file path.`,
104
288
  for (const file of agentFiles) {
105
289
  if (!file.endsWith('.md') || file.toLowerCase() === 'readme.md')
106
290
  continue;
107
- const filePath = path.join(agentsDir, file);
108
- const currentContent = await fs.readFile(filePath, 'utf-8');
109
- const agentType = path.basename(file, '.md');
110
- const suggestedContent = generateAgentContent(agentType, currentContent, semanticContext);
111
- filesToFill.push({
112
- path: filePath,
113
- relativePath: path.relative(outputDir, filePath),
114
- currentContent,
115
- suggestedContent,
291
+ allFiles.push({
292
+ path: path.join(agentsDir, file),
293
+ relativePath: path.relative(outputDir, path.join(agentsDir, file)),
116
294
  type: 'agent'
117
295
  });
118
296
  }
119
297
  }
120
298
  }
121
- // Process plans
299
+ // Collect plans
122
300
  if (target === 'all' || target === 'plans') {
123
301
  const plansDir = path.join(outputDir, 'plans');
124
302
  if (await fs.pathExists(plansDir)) {
@@ -126,28 +304,54 @@ After calling this tool, write the suggestedContent to each file path.`,
126
304
  for (const file of planFiles) {
127
305
  if (!file.endsWith('.md') || file.toLowerCase() === 'readme.md')
128
306
  continue;
129
- const filePath = path.join(plansDir, file);
130
- const currentContent = await fs.readFile(filePath, 'utf-8');
131
- filesToFill.push({
132
- path: filePath,
133
- relativePath: path.relative(outputDir, filePath),
134
- currentContent,
135
- suggestedContent: currentContent, // Plans need manual filling based on goals
307
+ allFiles.push({
308
+ path: path.join(plansDir, file),
309
+ relativePath: path.relative(outputDir, path.join(plansDir, file)),
136
310
  type: 'plan'
137
311
  });
138
312
  }
139
313
  }
140
314
  }
141
- await contextBuilder.shutdown();
315
+ const totalCount = allFiles.length;
316
+ // Apply pagination (limit=0 means all files)
317
+ const effectiveLimit = limit === 0 ? totalCount : limit;
318
+ const paginatedFiles = allFiles.slice(offset, offset + effectiveLimit);
319
+ // Generate content only for paginated files
320
+ const filesToFill = [];
321
+ for (const fileInfo of paginatedFiles) {
322
+ const currentContent = await fs.readFile(fileInfo.path, 'utf-8');
323
+ let suggestedContent;
324
+ if (fileInfo.type === 'doc') {
325
+ suggestedContent = generateDocContent(path.basename(fileInfo.path), currentContent, semanticContext);
326
+ }
327
+ else if (fileInfo.type === 'agent') {
328
+ const agentType = path.basename(fileInfo.path, '.md');
329
+ suggestedContent = generateAgentContent(agentType, currentContent, semanticContext);
330
+ }
331
+ else {
332
+ suggestedContent = currentContent; // Plans need manual filling
333
+ }
334
+ filesToFill.push({
335
+ path: fileInfo.path,
336
+ relativePath: fileInfo.relativePath,
337
+ suggestedContent,
338
+ type: fileInfo.type
339
+ });
340
+ }
341
+ const hasMore = offset + paginatedFiles.length < totalCount;
142
342
  return {
143
343
  success: true,
144
- codebaseContext: semanticContext,
145
344
  filesToFill,
146
- instructions: `For each file in filesToFill:
147
- 1. Review the suggestedContent which contains codebase-aware documentation
148
- 2. Enhance it with your analysis of the codebase
149
- 3. Write the final content to the file path
150
- 4. Focus on making the content specific to THIS codebase, not generic`
345
+ pagination: {
346
+ offset,
347
+ limit: effectiveLimit,
348
+ returned: filesToFill.length,
349
+ totalCount,
350
+ hasMore
351
+ },
352
+ instructions: hasMore
353
+ ? `Processed ${filesToFill.length} of ${totalCount} files. Call again with offset=${offset + paginatedFiles.length} to continue.`
354
+ : `All ${totalCount} files processed. Write each suggestedContent to its file path.`
151
355
  };
152
356
  }
153
357
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"fillScaffoldingTool.js","sourceRoot":"","sources":["../../../../src/services/ai/tools/fillScaffoldingTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillScaffoldingTool.js","sourceRoot":"","sources":["../../../../src/services/ai/tools/fillScaffoldingTool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,oDAMC;AAtCD,2BAA0B;AAC1B,2CAA6B;AAC7B,6CAA+B;AAC/B,6BAAwB;AACxB,kEAAuE;AAEvE,iDAAiD;AACjD,IAAI,oBAAoB,GAAkC,IAAI,CAAC;AAC/D,IAAI,aAAa,GAAiD,IAAI,CAAC;AAEvE,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,wEAAwE;IACxE,oDAAoD;IACpD,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QACtC,oBAAoB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,oBAAoB,GAAG,IAAI,uCAAsB,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC/E,aAAa,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,oBAAoB;IACxC,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QACtC,oBAAoB,GAAG,IAAI,CAAC;QAC5B,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,6CAA6C;AAC7C,+CAA+C;AAE/C,MAAM,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACrF,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;SACzE,QAAQ,CAAC,2BAA2B,CAAC;CACzC,CAAC,CAAC;AAUU,QAAA,mBAAmB,GAAG,IAAA,SAAI,EAAC;IACtC,WAAW,EAAE;wEACyD;IACtE,WAAW,EAAE,0BAA0B;IACvC,OAAO,EAAE,KAAK,EAAE,KAA2B,EAAE,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QAEvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,eAAe;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,sCAAsC,SAAS,gCAAgC;iBACvF,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAqB,EAAE,CAAC;YAEnC,eAAe;YACf,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC7C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;wBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAAE,SAAS;wBACpC,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;4BAC9B,YAAY,EAAE,QAAQ,IAAI,EAAE;4BAC5B,IAAI,EAAE,KAAK;yBACZ,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;wBAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;4BAAE,SAAS;wBAC1E,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;4BAChC,YAAY,EAAE,UAAU,IAAI,EAAE;4BAC9B,IAAI,EAAE,OAAO;yBACd,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC/C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;4BAAE,SAAS;wBAC1E,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;4BAC/B,YAAY,EAAE,SAAS,IAAI,EAAE;4BAC7B,IAAI,EAAE,MAAM;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,YAAY,EAAE,SAAS,KAAK,CAAC,MAAM,kFAAkF;aACtH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,+CAA+C;AAC/C,8CAA8C;AAC9C,+CAA+C;AAE/C,MAAM,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAChD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CAC5E,CAAC,CAAC;AAIU,QAAA,kBAAkB,GAAG,IAAA,SAAI,EAAC;IACrC,WAAW,EAAE;4EAC6D;IAC1E,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,KAAK,EAAE,KAA0B,EAAE,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAErC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,wBAAwB,gBAAgB,EAAE;iBAClD,CAAC;YACJ,CAAC;YAED,yCAAyC;YACzC,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YAElE,uBAAuB;YACvB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEhE,gDAAgD;YAChD,IAAI,gBAAwB,CAAC;YAC7B,IAAI,QAAkC,CAAC;YAEvC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,gBAAgB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;gBACjF,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;iBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACjD,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;gBACpF,QAAQ,GAAG,OAAO,CAAC;YACrB,CAAC;iBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBACjC,gBAAgB,GAAG,cAAc,CAAC,CAAC,4BAA4B;gBAC/D,QAAQ,GAAG,MAAM,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,cAAc,CAAC;gBAClC,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,gBAAgB;gBAC1B,QAAQ;gBACR,gBAAgB;gBAChB,YAAY,EAAE,kCAAkC,gBAAgB,EAAE;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,+CAA+C;AAC/C,kDAAkD;AAClD,+CAA+C;AAE/C,MAAM,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACrF,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;SACzE,QAAQ,CAAC,2BAA2B,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC7E,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CACzF,CAAC,CAAC;AAWU,QAAA,mBAAmB,GAAG,IAAA,SAAI,EAAC;IACtC,WAAW,EAAE;;;uEAGwD;IACrE,WAAW,EAAE,0BAA0B;IACvC,OAAO,EAAE,KAAK,EAAE,KAA2B,EAAE,EAAE;QAC7C,MAAM,EACJ,QAAQ,EACR,SAAS,EAAE,eAAe,EAC1B,MAAM,GAAG,KAAK,EACd,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,CAAC,EACV,GAAG,KAAK,CAAC;QAEV,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,eAAe;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,mCAAmC,gBAAgB,EAAE;iBAC7D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,sCAAsC,SAAS,gCAAgC;iBACvF,CAAC;YACJ,CAAC;YAED,wDAAwD;YACxD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YAElE,+BAA+B;YAC/B,MAAM,QAAQ,GAA6E,EAAE,CAAC;YAE9F,eAAe;YACf,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC7C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;wBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAAE,SAAS;wBACpC,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;4BAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;4BAChE,IAAI,EAAE,KAAK;yBACZ,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;wBAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;4BAAE,SAAS;wBAC1E,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;4BAChC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;4BAClE,IAAI,EAAE,OAAO;yBACd,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC/C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;4BAAE,SAAS;wBAC1E,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;4BAC/B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;4BACjE,IAAI,EAAE,MAAM;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;YAEnC,6CAA6C;YAC7C,MAAM,cAAc,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;YACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;YAEvE,4CAA4C;YAC5C,MAAM,WAAW,GAAiB,EAAE,CAAC;YACrC,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjE,IAAI,gBAAwB,CAAC;gBAE7B,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBAC5B,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;gBACvG,CAAC;qBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACtD,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;gBACtF,CAAC;qBAAM,CAAC;oBACN,gBAAgB,GAAG,cAAc,CAAC,CAAC,4BAA4B;gBACjE,CAAC;gBAED,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,gBAAgB;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC,MAAM,GAAG,UAAU,CAAC;YAE5D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW;gBACX,UAAU,EAAE;oBACV,MAAM;oBACN,KAAK,EAAE,cAAc;oBACrB,QAAQ,EAAE,WAAW,CAAC,MAAM;oBAC5B,UAAU;oBACV,OAAO;iBACR;gBACD,YAAY,EAAE,OAAO;oBACnB,CAAC,CAAC,aAAa,WAAW,CAAC,MAAM,OAAO,UAAU,kCAAkC,MAAM,GAAG,cAAc,CAAC,MAAM,eAAe;oBACjI,CAAC,CAAC,OAAO,UAAU,iEAAiE;aACvF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAe;IAC7E,gDAAgD;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEzC,yBAAyB;IACzB,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAE/D,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/B,KAAK,iBAAiB;YACpB,OAAO;;;;EAIX,WAAW,IAAI,2DAA2D;;;;EAI1E,eAAe,IAAI,+CAA+C;;;;EAIlE,YAAY,IAAI,iCAAiC;;;;CAIlD,CAAC;QAEE,KAAK,qBAAqB;YACxB,OAAO;;;;EAIX,YAAY,IAAI,8CAA8C;;;;EAI9D,WAAW,IAAI,oCAAoC;;;;;;;;CAQpD,CAAC;QAEE;YACE,6DAA6D;YAC7D,OAAO,GAAG,QAAQ;;;EAGtB,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;;CAE3B,CAAC;IACA,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB,EAAE,QAAgB,EAAE,OAAe;IAChF,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9F,OAAO,KAAK,KAAK;;;;4BAIS,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;EAItD,WAAW,IAAI,mCAAmC;;;;EAIlD,eAAe,IAAI,gDAAgD;;;;;;;cAOvD,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;CAQzC,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,WAAmB,EAAE,SAAiB;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC"}