cast-code 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +217 -0
- package/dist/app.module.js +45 -0
- package/dist/app.module.js.map +1 -0
- package/dist/common/common.module.js +49 -0
- package/dist/common/common.module.js.map +1 -0
- package/dist/common/constants/index.js +105 -0
- package/dist/common/constants/index.js.map +1 -0
- package/dist/common/index.js +24 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/services/config.service.js +119 -0
- package/dist/common/services/config.service.js.map +1 -0
- package/dist/common/services/llm.service.js +56 -0
- package/dist/common/services/llm.service.js.map +1 -0
- package/dist/common/services/markdown-parser.service.js +101 -0
- package/dist/common/services/markdown-parser.service.js.map +1 -0
- package/dist/common/services/markdown-renderer.service.js +220 -0
- package/dist/common/services/markdown-renderer.service.js.map +1 -0
- package/dist/common/services/multi-llm.service.js +115 -0
- package/dist/common/services/multi-llm.service.js.map +1 -0
- package/dist/common/types/index.js +20 -0
- package/dist/common/types/index.js.map +1 -0
- package/dist/common/types/markdown.types.js +6 -0
- package/dist/common/types/markdown.types.js.map +1 -0
- package/dist/main.js +84 -0
- package/dist/main.js.map +1 -0
- package/dist/modules/agents/agents.module.js +43 -0
- package/dist/modules/agents/agents.module.js.map +1 -0
- package/dist/modules/agents/definitions/architect.md +35 -0
- package/dist/modules/agents/definitions/backend.md +43 -0
- package/dist/modules/agents/definitions/coder.md +34 -0
- package/dist/modules/agents/definitions/devops.md +42 -0
- package/dist/modules/agents/definitions/frontend.md +46 -0
- package/dist/modules/agents/definitions/reviewer.md +35 -0
- package/dist/modules/agents/definitions/tester.md +41 -0
- package/dist/modules/agents/index.js +23 -0
- package/dist/modules/agents/index.js.map +1 -0
- package/dist/modules/agents/services/agent-loader.service.js +150 -0
- package/dist/modules/agents/services/agent-loader.service.js.map +1 -0
- package/dist/modules/agents/services/agent-registry.service.js +108 -0
- package/dist/modules/agents/services/agent-registry.service.js.map +1 -0
- package/dist/modules/agents/types/agent.types.js +6 -0
- package/dist/modules/agents/types/agent.types.js.map +1 -0
- package/dist/modules/agents/types/index.js +20 -0
- package/dist/modules/agents/types/index.js.map +1 -0
- package/dist/modules/config/config.module.js +38 -0
- package/dist/modules/config/config.module.js.map +1 -0
- package/dist/modules/config/index.js +24 -0
- package/dist/modules/config/index.js.map +1 -0
- package/dist/modules/config/services/config-commands.service.js +405 -0
- package/dist/modules/config/services/config-commands.service.js.map +1 -0
- package/dist/modules/config/services/config-manager.service.js +175 -0
- package/dist/modules/config/services/config-manager.service.js.map +1 -0
- package/dist/modules/config/services/init-config.service.js +238 -0
- package/dist/modules/config/services/init-config.service.js.map +1 -0
- package/dist/modules/config/types/config.types.js +163 -0
- package/dist/modules/config/types/config.types.js.map +1 -0
- package/dist/modules/config/types/index.js +20 -0
- package/dist/modules/config/types/index.js.map +1 -0
- package/dist/modules/core/core.module.js +60 -0
- package/dist/modules/core/core.module.js.map +1 -0
- package/dist/modules/core/index.js +22 -0
- package/dist/modules/core/index.js.map +1 -0
- package/dist/modules/core/services/deep-agent.service.js +575 -0
- package/dist/modules/core/services/deep-agent.service.js.map +1 -0
- package/dist/modules/core/services/plan-mode.service.js +225 -0
- package/dist/modules/core/services/plan-mode.service.js.map +1 -0
- package/dist/modules/git/git.module.js +48 -0
- package/dist/modules/git/git.module.js.map +1 -0
- package/dist/modules/git/index.js +23 -0
- package/dist/modules/git/index.js.map +1 -0
- package/dist/modules/git/services/code-review.service.js +330 -0
- package/dist/modules/git/services/code-review.service.js.map +1 -0
- package/dist/modules/git/services/commit-generator.service.js +403 -0
- package/dist/modules/git/services/commit-generator.service.js.map +1 -0
- package/dist/modules/git/services/index.js +21 -0
- package/dist/modules/git/services/index.js.map +1 -0
- package/dist/modules/git/services/monorepo-detector.service.js +338 -0
- package/dist/modules/git/services/monorepo-detector.service.js.map +1 -0
- package/dist/modules/git/services/pr-generator.service.js +429 -0
- package/dist/modules/git/services/pr-generator.service.js.map +1 -0
- package/dist/modules/git/services/release-notes.service.js +426 -0
- package/dist/modules/git/services/release-notes.service.js.map +1 -0
- package/dist/modules/git/types/git.types.js +6 -0
- package/dist/modules/git/types/git.types.js.map +1 -0
- package/dist/modules/git/types/index.js +20 -0
- package/dist/modules/git/types/index.js.map +1 -0
- package/dist/modules/mcp/catalog/mcp-templates.js +606 -0
- package/dist/modules/mcp/catalog/mcp-templates.js.map +1 -0
- package/dist/modules/mcp/index.js +23 -0
- package/dist/modules/mcp/index.js.map +1 -0
- package/dist/modules/mcp/mcp.module.js +35 -0
- package/dist/modules/mcp/mcp.module.js.map +1 -0
- package/dist/modules/mcp/services/mcp-client.service.js +289 -0
- package/dist/modules/mcp/services/mcp-client.service.js.map +1 -0
- package/dist/modules/mcp/services/mcp-registry.service.js +197 -0
- package/dist/modules/mcp/services/mcp-registry.service.js.map +1 -0
- package/dist/modules/mcp/types/index.js +20 -0
- package/dist/modules/mcp/types/index.js.map +1 -0
- package/dist/modules/mcp/types/mcp.types.js +6 -0
- package/dist/modules/mcp/types/mcp.types.js.map +1 -0
- package/dist/modules/memory/index.js +23 -0
- package/dist/modules/memory/index.js.map +1 -0
- package/dist/modules/memory/memory.module.js +35 -0
- package/dist/modules/memory/memory.module.js.map +1 -0
- package/dist/modules/memory/services/memory-tools.service.js +78 -0
- package/dist/modules/memory/services/memory-tools.service.js.map +1 -0
- package/dist/modules/memory/services/memory.service.js +169 -0
- package/dist/modules/memory/services/memory.service.js.map +1 -0
- package/dist/modules/memory/types/index.js +20 -0
- package/dist/modules/memory/types/index.js.map +1 -0
- package/dist/modules/memory/types/memory.types.js +6 -0
- package/dist/modules/memory/types/memory.types.js.map +1 -0
- package/dist/modules/mentions/index.js +22 -0
- package/dist/modules/mentions/index.js.map +1 -0
- package/dist/modules/mentions/mentions.module.js +32 -0
- package/dist/modules/mentions/mentions.module.js.map +1 -0
- package/dist/modules/mentions/services/mentions.service.js +336 -0
- package/dist/modules/mentions/services/mentions.service.js.map +1 -0
- package/dist/modules/mentions/types/index.js +20 -0
- package/dist/modules/mentions/types/index.js.map +1 -0
- package/dist/modules/mentions/types/mention.types.js +19 -0
- package/dist/modules/mentions/types/mention.types.js.map +1 -0
- package/dist/modules/permissions/index.js +23 -0
- package/dist/modules/permissions/index.js.map +1 -0
- package/dist/modules/permissions/permissions.module.js +35 -0
- package/dist/modules/permissions/permissions.module.js.map +1 -0
- package/dist/modules/permissions/services/permission.service.js +269 -0
- package/dist/modules/permissions/services/permission.service.js.map +1 -0
- package/dist/modules/permissions/services/prompt.service.js +116 -0
- package/dist/modules/permissions/services/prompt.service.js.map +1 -0
- package/dist/modules/permissions/types/permission.types.js +32 -0
- package/dist/modules/permissions/types/permission.types.js.map +1 -0
- package/dist/modules/project/index.js +24 -0
- package/dist/modules/project/index.js.map +1 -0
- package/dist/modules/project/project.module.js +38 -0
- package/dist/modules/project/project.module.js.map +1 -0
- package/dist/modules/project/services/project-analyzer.service.js +1063 -0
- package/dist/modules/project/services/project-analyzer.service.js.map +1 -0
- package/dist/modules/project/services/project-context.service.js +62 -0
- package/dist/modules/project/services/project-context.service.js.map +1 -0
- package/dist/modules/project/services/project-loader.service.js +147 -0
- package/dist/modules/project/services/project-loader.service.js.map +1 -0
- package/dist/modules/project/types/index.js +20 -0
- package/dist/modules/project/types/index.js.map +1 -0
- package/dist/modules/project/types/project.types.js +6 -0
- package/dist/modules/project/types/project.types.js.map +1 -0
- package/dist/modules/repl/index.js +21 -0
- package/dist/modules/repl/index.js.map +1 -0
- package/dist/modules/repl/repl.module.js +66 -0
- package/dist/modules/repl/repl.module.js.map +1 -0
- package/dist/modules/repl/services/commands/agent-commands.service.js +196 -0
- package/dist/modules/repl/services/commands/agent-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/git-commands.service.js +500 -0
- package/dist/modules/repl/services/commands/git-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/mcp-commands.service.js +579 -0
- package/dist/modules/repl/services/commands/mcp-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/project-commands.service.js +226 -0
- package/dist/modules/repl/services/commands/project-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/repl-commands.service.js +254 -0
- package/dist/modules/repl/services/commands/repl-commands.service.js.map +1 -0
- package/dist/modules/repl/services/repl.service.js +647 -0
- package/dist/modules/repl/services/repl.service.js.map +1 -0
- package/dist/modules/repl/services/smart-input.js +544 -0
- package/dist/modules/repl/services/smart-input.js.map +1 -0
- package/dist/modules/repl/services/welcome-screen.service.js +117 -0
- package/dist/modules/repl/services/welcome-screen.service.js.map +1 -0
- package/dist/modules/repl/utils/prompts-with-esc.js +187 -0
- package/dist/modules/repl/utils/prompts-with-esc.js.map +1 -0
- package/dist/modules/repl/utils/theme.js +185 -0
- package/dist/modules/repl/utils/theme.js.map +1 -0
- package/dist/modules/skills/definitions/general/file-operations.md +60 -0
- package/dist/modules/skills/definitions/general/git-operations.md +59 -0
- package/dist/modules/skills/definitions/general/planning.md +86 -0
- package/dist/modules/skills/definitions/general/search.md +59 -0
- package/dist/modules/skills/definitions/specialized/api-design.md +85 -0
- package/dist/modules/skills/definitions/specialized/database-operations.md +78 -0
- package/dist/modules/skills/definitions/specialized/frontend-bootstrap.md +71 -0
- package/dist/modules/skills/definitions/specialized/react-patterns.md +77 -0
- package/dist/modules/skills/definitions/specialized/testing-strategies.md +79 -0
- package/dist/modules/skills/index.js +23 -0
- package/dist/modules/skills/index.js.map +1 -0
- package/dist/modules/skills/services/skill-loader.service.js +130 -0
- package/dist/modules/skills/services/skill-loader.service.js.map +1 -0
- package/dist/modules/skills/services/skill-registry.service.js +96 -0
- package/dist/modules/skills/services/skill-registry.service.js.map +1 -0
- package/dist/modules/skills/skills.module.js +38 -0
- package/dist/modules/skills/skills.module.js.map +1 -0
- package/dist/modules/skills/types/index.js +20 -0
- package/dist/modules/skills/types/index.js.map +1 -0
- package/dist/modules/skills/types/skill.types.js +6 -0
- package/dist/modules/skills/types/skill.types.js.map +1 -0
- package/dist/modules/tasks/index.js +24 -0
- package/dist/modules/tasks/index.js.map +1 -0
- package/dist/modules/tasks/services/plan-executor.service.js +199 -0
- package/dist/modules/tasks/services/plan-executor.service.js.map +1 -0
- package/dist/modules/tasks/services/plan-mode.service.js +118 -0
- package/dist/modules/tasks/services/plan-mode.service.js.map +1 -0
- package/dist/modules/tasks/services/plan-persistence.service.js +148 -0
- package/dist/modules/tasks/services/plan-persistence.service.js.map +1 -0
- package/dist/modules/tasks/services/task-management.service.js +255 -0
- package/dist/modules/tasks/services/task-management.service.js.map +1 -0
- package/dist/modules/tasks/services/task-tools.service.js +270 -0
- package/dist/modules/tasks/services/task-tools.service.js.map +1 -0
- package/dist/modules/tasks/tasks.module.js +49 -0
- package/dist/modules/tasks/tasks.module.js.map +1 -0
- package/dist/modules/tasks/types/task.types.js +21 -0
- package/dist/modules/tasks/types/task.types.js.map +1 -0
- package/dist/modules/tools/index.js +24 -0
- package/dist/modules/tools/index.js.map +1 -0
- package/dist/modules/tools/services/filesystem-tools.service.js +450 -0
- package/dist/modules/tools/services/filesystem-tools.service.js.map +1 -0
- package/dist/modules/tools/services/search-tools.service.js +63 -0
- package/dist/modules/tools/services/search-tools.service.js.map +1 -0
- package/dist/modules/tools/services/shell-tools.service.js +194 -0
- package/dist/modules/tools/services/shell-tools.service.js.map +1 -0
- package/dist/modules/tools/services/tools-registry.service.js +83 -0
- package/dist/modules/tools/services/tools-registry.service.js.map +1 -0
- package/dist/modules/tools/tools.module.js +46 -0
- package/dist/modules/tools/tools.module.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "MentionsService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MentionsService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _promises = /*#__PURE__*/ _interop_require_wildcard(require("node:fs/promises"));
|
|
13
|
+
const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
|
|
14
|
+
const _child_process = require("child_process");
|
|
15
|
+
const _util = require("util");
|
|
16
|
+
const _types = require("../types");
|
|
17
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
18
|
+
if (typeof WeakMap !== "function") return null;
|
|
19
|
+
var cacheBabelInterop = new WeakMap();
|
|
20
|
+
var cacheNodeInterop = new WeakMap();
|
|
21
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
22
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
23
|
+
})(nodeInterop);
|
|
24
|
+
}
|
|
25
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
26
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
30
|
+
return {
|
|
31
|
+
default: obj
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
35
|
+
if (cache && cache.has(obj)) {
|
|
36
|
+
return cache.get(obj);
|
|
37
|
+
}
|
|
38
|
+
var newObj = {
|
|
39
|
+
__proto__: null
|
|
40
|
+
};
|
|
41
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
42
|
+
for(var key in obj){
|
|
43
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
44
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
45
|
+
if (desc && (desc.get || desc.set)) {
|
|
46
|
+
Object.defineProperty(newObj, key, desc);
|
|
47
|
+
} else {
|
|
48
|
+
newObj[key] = obj[key];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
newObj.default = obj;
|
|
53
|
+
if (cache) {
|
|
54
|
+
cache.set(obj, newObj);
|
|
55
|
+
}
|
|
56
|
+
return newObj;
|
|
57
|
+
}
|
|
58
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
59
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
60
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
61
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
62
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
63
|
+
}
|
|
64
|
+
const execAsync = (0, _util.promisify)(_child_process.exec);
|
|
65
|
+
let MentionsService = class MentionsService {
|
|
66
|
+
async processMessage(message) {
|
|
67
|
+
const mentions = this.parseMentions(message);
|
|
68
|
+
if (mentions.length === 0) {
|
|
69
|
+
return {
|
|
70
|
+
expandedMessage: message,
|
|
71
|
+
mentions: [],
|
|
72
|
+
originalMessage: message
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const resolved = await Promise.all(mentions.map((m)=>this.resolveMention(m)));
|
|
76
|
+
const expandedMessage = this.buildExpandedMessage(message, resolved);
|
|
77
|
+
return {
|
|
78
|
+
expandedMessage,
|
|
79
|
+
mentions: resolved,
|
|
80
|
+
originalMessage: message
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
parseMentions(message) {
|
|
84
|
+
const mentions = [];
|
|
85
|
+
const mentionRegex = /(?:^|\s)@((?:https?:\/\/\S+)|(?:git:[a-z]+)|(?:\.?\/?[\w./-]+\.[\w]+)|(?:\.?\/?[\w./-]+\/))/g;
|
|
86
|
+
let match;
|
|
87
|
+
while((match = mentionRegex.exec(message)) !== null){
|
|
88
|
+
const target = match[1];
|
|
89
|
+
const raw = '@' + target;
|
|
90
|
+
let type;
|
|
91
|
+
let resolved;
|
|
92
|
+
if (target.startsWith('http://') || target.startsWith('https://')) {
|
|
93
|
+
type = _types.MentionType.URL;
|
|
94
|
+
resolved = target;
|
|
95
|
+
} else if (target.startsWith('git:')) {
|
|
96
|
+
type = _types.MentionType.GIT;
|
|
97
|
+
resolved = target;
|
|
98
|
+
} else if (target.endsWith('/')) {
|
|
99
|
+
type = _types.MentionType.DIRECTORY;
|
|
100
|
+
resolved = _path.resolve(process.cwd(), target);
|
|
101
|
+
} else {
|
|
102
|
+
type = _types.MentionType.FILE;
|
|
103
|
+
resolved = _path.resolve(process.cwd(), target);
|
|
104
|
+
}
|
|
105
|
+
mentions.push({
|
|
106
|
+
type,
|
|
107
|
+
raw,
|
|
108
|
+
target,
|
|
109
|
+
resolved
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return mentions;
|
|
113
|
+
}
|
|
114
|
+
async resolveMention(mention) {
|
|
115
|
+
try {
|
|
116
|
+
switch(mention.type){
|
|
117
|
+
case _types.MentionType.FILE:
|
|
118
|
+
return await this.resolveFile(mention);
|
|
119
|
+
case _types.MentionType.DIRECTORY:
|
|
120
|
+
return await this.resolveDirectory(mention);
|
|
121
|
+
case _types.MentionType.URL:
|
|
122
|
+
return await this.resolveUrl(mention);
|
|
123
|
+
case _types.MentionType.GIT:
|
|
124
|
+
return await this.resolveGit(mention);
|
|
125
|
+
default:
|
|
126
|
+
return {
|
|
127
|
+
...mention,
|
|
128
|
+
content: '',
|
|
129
|
+
error: 'Unknown mention type'
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
} catch (error) {
|
|
133
|
+
return {
|
|
134
|
+
...mention,
|
|
135
|
+
content: '',
|
|
136
|
+
error: `Failed to resolve: ${error.message}`
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async resolveFile(mention) {
|
|
141
|
+
const filePath = mention.resolved;
|
|
142
|
+
try {
|
|
143
|
+
const stat = await _promises.stat(filePath);
|
|
144
|
+
if (stat.isDirectory()) {
|
|
145
|
+
return this.resolveDirectory({
|
|
146
|
+
...mention,
|
|
147
|
+
type: _types.MentionType.DIRECTORY
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (stat.size > this.MAX_FILE_SIZE) {
|
|
151
|
+
const content = await _promises.readFile(filePath, 'utf-8');
|
|
152
|
+
const lines = content.split('\n').slice(0, this.MAX_FILE_LINES);
|
|
153
|
+
const numbered = lines.map((l, i)=>`${i + 1}: ${l}`).join('\n');
|
|
154
|
+
return {
|
|
155
|
+
...mention,
|
|
156
|
+
content: numbered + `\n... (truncated, file is ${Math.round(stat.size / 1024)}KB)`
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const content = await _promises.readFile(filePath, 'utf-8');
|
|
160
|
+
const lines = content.split('\n');
|
|
161
|
+
const numbered = lines.map((l, i)=>`${i + 1}: ${l}`).join('\n');
|
|
162
|
+
return {
|
|
163
|
+
...mention,
|
|
164
|
+
content: numbered
|
|
165
|
+
};
|
|
166
|
+
} catch (error) {
|
|
167
|
+
const err = error;
|
|
168
|
+
if (err.code === 'ENOENT') {
|
|
169
|
+
return {
|
|
170
|
+
...mention,
|
|
171
|
+
content: '',
|
|
172
|
+
error: `File not found: ${filePath}`
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async resolveDirectory(mention) {
|
|
179
|
+
const dirPath = mention.resolved;
|
|
180
|
+
try {
|
|
181
|
+
const entries = await _promises.readdir(dirPath, {
|
|
182
|
+
withFileTypes: true
|
|
183
|
+
});
|
|
184
|
+
const limited = entries.slice(0, this.MAX_DIR_ENTRIES);
|
|
185
|
+
const lines = limited.map((e)=>{
|
|
186
|
+
const prefix = e.isDirectory() ? 'd' : 'f';
|
|
187
|
+
return `${prefix} ${e.name}`;
|
|
188
|
+
});
|
|
189
|
+
let content = lines.join('\n');
|
|
190
|
+
if (entries.length > this.MAX_DIR_ENTRIES) {
|
|
191
|
+
content += `\n... (${entries.length - this.MAX_DIR_ENTRIES} more entries)`;
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
...mention,
|
|
195
|
+
content
|
|
196
|
+
};
|
|
197
|
+
} catch (error) {
|
|
198
|
+
const err = error;
|
|
199
|
+
if (err.code === 'ENOENT') {
|
|
200
|
+
return {
|
|
201
|
+
...mention,
|
|
202
|
+
content: '',
|
|
203
|
+
error: `Directory not found: ${dirPath}`
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async resolveUrl(mention) {
|
|
210
|
+
try {
|
|
211
|
+
const response = await fetch(mention.resolved, {
|
|
212
|
+
headers: {
|
|
213
|
+
'User-Agent': 'Cast-Code/1.0'
|
|
214
|
+
},
|
|
215
|
+
signal: AbortSignal.timeout(10000)
|
|
216
|
+
});
|
|
217
|
+
if (!response.ok) {
|
|
218
|
+
return {
|
|
219
|
+
...mention,
|
|
220
|
+
content: '',
|
|
221
|
+
error: `HTTP ${response.status}: ${response.statusText}`
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
let text = await response.text();
|
|
225
|
+
if (text.length > this.MAX_URL_LENGTH) {
|
|
226
|
+
text = text.slice(0, this.MAX_URL_LENGTH) + '\n... (truncated)';
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
...mention,
|
|
230
|
+
content: text
|
|
231
|
+
};
|
|
232
|
+
} catch (error) {
|
|
233
|
+
return {
|
|
234
|
+
...mention,
|
|
235
|
+
content: '',
|
|
236
|
+
error: `Fetch failed: ${error.message}`
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async resolveGit(mention) {
|
|
241
|
+
const command = mention.target.replace('git:', '');
|
|
242
|
+
const gitCommands = {
|
|
243
|
+
status: 'git status',
|
|
244
|
+
diff: 'git diff',
|
|
245
|
+
log: 'git log --oneline -20',
|
|
246
|
+
branch: 'git branch -a',
|
|
247
|
+
stash: 'git stash list'
|
|
248
|
+
};
|
|
249
|
+
const cmd = gitCommands[command];
|
|
250
|
+
if (!cmd) {
|
|
251
|
+
return {
|
|
252
|
+
...mention,
|
|
253
|
+
content: '',
|
|
254
|
+
error: `Unknown git command: ${command}. Available: ${Object.keys(gitCommands).join(', ')}`
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
const { stdout, stderr } = await execAsync(cmd, {
|
|
259
|
+
cwd: process.cwd(),
|
|
260
|
+
timeout: 10000
|
|
261
|
+
});
|
|
262
|
+
return {
|
|
263
|
+
...mention,
|
|
264
|
+
content: stdout || stderr || '(no output)'
|
|
265
|
+
};
|
|
266
|
+
} catch (error) {
|
|
267
|
+
return {
|
|
268
|
+
...mention,
|
|
269
|
+
content: '',
|
|
270
|
+
error: `Git command failed: ${error.message}`
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
buildExpandedMessage(originalMessage, mentions) {
|
|
275
|
+
let expanded = originalMessage;
|
|
276
|
+
for (const mention of mentions){
|
|
277
|
+
expanded = expanded.replace(mention.raw, '').trim();
|
|
278
|
+
}
|
|
279
|
+
const contextParts = [];
|
|
280
|
+
for (const mention of mentions){
|
|
281
|
+
if (mention.error) {
|
|
282
|
+
contextParts.push(`<mention_error target="${mention.target}">\n${mention.error}\n</mention_error>`);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
switch(mention.type){
|
|
286
|
+
case _types.MentionType.FILE:
|
|
287
|
+
contextParts.push(`<file path="${mention.target}">\n${mention.content}\n</file>`);
|
|
288
|
+
break;
|
|
289
|
+
case _types.MentionType.DIRECTORY:
|
|
290
|
+
contextParts.push(`<directory path="${mention.target}">\n${mention.content}\n</directory>`);
|
|
291
|
+
break;
|
|
292
|
+
case _types.MentionType.URL:
|
|
293
|
+
contextParts.push(`<url href="${mention.target}">\n${mention.content}\n</url>`);
|
|
294
|
+
break;
|
|
295
|
+
case _types.MentionType.GIT:
|
|
296
|
+
contextParts.push(`<git command="${mention.target.replace('git:', '')}">\n${mention.content}\n</git>`);
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (contextParts.length > 0) {
|
|
301
|
+
return expanded + '\n\n' + contextParts.join('\n\n');
|
|
302
|
+
}
|
|
303
|
+
return expanded;
|
|
304
|
+
}
|
|
305
|
+
getMentionsSummary(mentions) {
|
|
306
|
+
return mentions.map((m)=>{
|
|
307
|
+
if (m.error) {
|
|
308
|
+
return ` ✗ ${m.raw} → ${m.error}`;
|
|
309
|
+
}
|
|
310
|
+
const lines = m.content.split('\n').length;
|
|
311
|
+
switch(m.type){
|
|
312
|
+
case _types.MentionType.FILE:
|
|
313
|
+
return ` ✓ ${m.raw} (${lines} lines)`;
|
|
314
|
+
case _types.MentionType.DIRECTORY:
|
|
315
|
+
return ` ✓ ${m.raw} (${lines} entries)`;
|
|
316
|
+
case _types.MentionType.URL:
|
|
317
|
+
return ` ✓ ${m.raw} (${m.content.length} chars)`;
|
|
318
|
+
case _types.MentionType.GIT:
|
|
319
|
+
return ` ✓ ${m.raw}`;
|
|
320
|
+
default:
|
|
321
|
+
return ` ✓ ${m.raw}`;
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
constructor(){
|
|
326
|
+
this.MAX_FILE_LINES = 500;
|
|
327
|
+
this.MAX_FILE_SIZE = 100 * 1024; // 100KB
|
|
328
|
+
this.MAX_DIR_ENTRIES = 100;
|
|
329
|
+
this.MAX_URL_LENGTH = 50000;
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
MentionsService = _ts_decorate([
|
|
333
|
+
(0, _common.Injectable)()
|
|
334
|
+
], MentionsService);
|
|
335
|
+
|
|
336
|
+
//# sourceMappingURL=mentions.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/mentions/services/mentions.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n MentionType,\n ParsedMention,\n ResolvedMention,\n MentionResult,\n} from '../types';\n\nconst execAsync = promisify(exec);\n\n@Injectable()\nexport class MentionsService {\n private readonly MAX_FILE_LINES = 500;\n private readonly MAX_FILE_SIZE = 100 * 1024; // 100KB\n private readonly MAX_DIR_ENTRIES = 100;\n private readonly MAX_URL_LENGTH = 50000;\n\n async processMessage(message: string): Promise<MentionResult> {\n const mentions = this.parseMentions(message);\n\n if (mentions.length === 0) {\n return {\n expandedMessage: message,\n mentions: [],\n originalMessage: message,\n };\n }\n\n const resolved = await Promise.all(\n mentions.map((m) => this.resolveMention(m)),\n );\n\n const expandedMessage = this.buildExpandedMessage(message, resolved);\n\n return {\n expandedMessage,\n mentions: resolved,\n originalMessage: message,\n };\n }\n\n private parseMentions(message: string): ParsedMention[] {\n const mentions: ParsedMention[] = [];\n\n const mentionRegex = /(?:^|\\s)@((?:https?:\\/\\/\\S+)|(?:git:[a-z]+)|(?:\\.?\\/?[\\w./-]+\\.[\\w]+)|(?:\\.?\\/?[\\w./-]+\\/))/g;\n\n let match: RegExpExecArray | null;\n\n while ((match = mentionRegex.exec(message)) !== null) {\n const target = match[1];\n const raw = '@' + target;\n\n let type: MentionType;\n let resolved: string;\n\n if (target.startsWith('http://') || target.startsWith('https://')) {\n type = MentionType.URL;\n resolved = target;\n } else if (target.startsWith('git:')) {\n type = MentionType.GIT;\n resolved = target;\n } else if (target.endsWith('/')) {\n type = MentionType.DIRECTORY;\n resolved = path.resolve(process.cwd(), target);\n } else {\n type = MentionType.FILE;\n resolved = path.resolve(process.cwd(), target);\n }\n\n mentions.push({ type, raw, target, resolved });\n }\n\n return mentions;\n }\n\n private async resolveMention(mention: ParsedMention): Promise<ResolvedMention> {\n try {\n switch (mention.type) {\n case MentionType.FILE:\n return await this.resolveFile(mention);\n case MentionType.DIRECTORY:\n return await this.resolveDirectory(mention);\n case MentionType.URL:\n return await this.resolveUrl(mention);\n case MentionType.GIT:\n return await this.resolveGit(mention);\n default:\n return { ...mention, content: '', error: 'Unknown mention type' };\n }\n } catch (error) {\n return {\n ...mention,\n content: '',\n error: `Failed to resolve: ${(error as Error).message}`,\n };\n }\n }\n\n private async resolveFile(mention: ParsedMention): Promise<ResolvedMention> {\n const filePath = mention.resolved;\n\n try {\n const stat = await fs.stat(filePath);\n\n if (stat.isDirectory()) {\n return this.resolveDirectory({\n ...mention,\n type: MentionType.DIRECTORY,\n });\n }\n\n if (stat.size > this.MAX_FILE_SIZE) {\n const content = await fs.readFile(filePath, 'utf-8');\n const lines = content.split('\\n').slice(0, this.MAX_FILE_LINES);\n const numbered = lines.map((l, i) => `${i + 1}: ${l}`).join('\\n');\n return {\n ...mention,\n content: numbered + `\\n... (truncated, file is ${Math.round(stat.size / 1024)}KB)`,\n };\n }\n\n const content = await fs.readFile(filePath, 'utf-8');\n const lines = content.split('\\n');\n const numbered = lines.map((l, i) => `${i + 1}: ${l}`).join('\\n');\n\n return { ...mention, content: numbered };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === 'ENOENT') {\n return { ...mention, content: '', error: `File not found: ${filePath}` };\n }\n throw error;\n }\n }\n\n private async resolveDirectory(mention: ParsedMention): Promise<ResolvedMention> {\n const dirPath = mention.resolved;\n\n try {\n const entries = await fs.readdir(dirPath, { withFileTypes: true });\n const limited = entries.slice(0, this.MAX_DIR_ENTRIES);\n\n const lines = limited.map((e) => {\n const prefix = e.isDirectory() ? 'd' : 'f';\n return `${prefix} ${e.name}`;\n });\n\n let content = lines.join('\\n');\n\n if (entries.length > this.MAX_DIR_ENTRIES) {\n content += `\\n... (${entries.length - this.MAX_DIR_ENTRIES} more entries)`;\n }\n\n return { ...mention, content };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === 'ENOENT') {\n return { ...mention, content: '', error: `Directory not found: ${dirPath}` };\n }\n throw error;\n }\n }\n\n private async resolveUrl(mention: ParsedMention): Promise<ResolvedMention> {\n try {\n const response = await fetch(mention.resolved, {\n headers: { 'User-Agent': 'Cast-Code/1.0' },\n signal: AbortSignal.timeout(10000),\n });\n\n if (!response.ok) {\n return {\n ...mention,\n content: '',\n error: `HTTP ${response.status}: ${response.statusText}`,\n };\n }\n\n let text = await response.text();\n\n if (text.length > this.MAX_URL_LENGTH) {\n text = text.slice(0, this.MAX_URL_LENGTH) + '\\n... (truncated)';\n }\n\n return { ...mention, content: text };\n } catch (error) {\n return {\n ...mention,\n content: '',\n error: `Fetch failed: ${(error as Error).message}`,\n };\n }\n }\n\n private async resolveGit(mention: ParsedMention): Promise<ResolvedMention> {\n const command = mention.target.replace('git:', '');\n\n const gitCommands: Record<string, string> = {\n status: 'git status',\n diff: 'git diff',\n log: 'git log --oneline -20',\n branch: 'git branch -a',\n stash: 'git stash list',\n };\n\n const cmd = gitCommands[command];\n\n if (!cmd) {\n return {\n ...mention,\n content: '',\n error: `Unknown git command: ${command}. Available: ${Object.keys(gitCommands).join(', ')}`,\n };\n }\n\n try {\n const { stdout, stderr } = await execAsync(cmd, {\n cwd: process.cwd(),\n timeout: 10000,\n });\n\n return { ...mention, content: stdout || stderr || '(no output)' };\n } catch (error) {\n return {\n ...mention,\n content: '',\n error: `Git command failed: ${(error as Error).message}`,\n };\n }\n }\n\n private buildExpandedMessage(\n originalMessage: string,\n mentions: ResolvedMention[],\n ): string {\n let expanded = originalMessage;\n\n for (const mention of mentions) {\n expanded = expanded.replace(mention.raw, '').trim();\n }\n\n const contextParts: string[] = [];\n\n for (const mention of mentions) {\n if (mention.error) {\n contextParts.push(\n `<mention_error target=\"${mention.target}\">\\n${mention.error}\\n</mention_error>`,\n );\n continue;\n }\n\n switch (mention.type) {\n case MentionType.FILE:\n contextParts.push(\n `<file path=\"${mention.target}\">\\n${mention.content}\\n</file>`,\n );\n break;\n case MentionType.DIRECTORY:\n contextParts.push(\n `<directory path=\"${mention.target}\">\\n${mention.content}\\n</directory>`,\n );\n break;\n case MentionType.URL:\n contextParts.push(\n `<url href=\"${mention.target}\">\\n${mention.content}\\n</url>`,\n );\n break;\n case MentionType.GIT:\n contextParts.push(\n `<git command=\"${mention.target.replace('git:', '')}\">\\n${mention.content}\\n</git>`,\n );\n break;\n }\n }\n\n if (contextParts.length > 0) {\n return expanded + '\\n\\n' + contextParts.join('\\n\\n');\n }\n\n return expanded;\n }\n\n getMentionsSummary(mentions: ResolvedMention[]): string[] {\n return mentions.map((m) => {\n if (m.error) {\n return ` ✗ ${m.raw} → ${m.error}`;\n }\n\n const lines = m.content.split('\\n').length;\n switch (m.type) {\n case MentionType.FILE:\n return ` ✓ ${m.raw} (${lines} lines)`;\n case MentionType.DIRECTORY:\n return ` ✓ ${m.raw} (${lines} entries)`;\n case MentionType.URL:\n return ` ✓ ${m.raw} (${m.content.length} chars)`;\n case MentionType.GIT:\n return ` ✓ ${m.raw}`;\n default:\n return ` ✓ ${m.raw}`;\n }\n });\n }\n}\n"],"names":["MentionsService","execAsync","promisify","exec","processMessage","message","mentions","parseMentions","length","expandedMessage","originalMessage","resolved","Promise","all","map","m","resolveMention","buildExpandedMessage","mentionRegex","match","target","raw","type","startsWith","MentionType","URL","GIT","endsWith","DIRECTORY","path","resolve","process","cwd","FILE","push","mention","resolveFile","resolveDirectory","resolveUrl","resolveGit","content","error","filePath","stat","fs","isDirectory","size","MAX_FILE_SIZE","readFile","lines","split","slice","MAX_FILE_LINES","numbered","l","i","join","Math","round","err","code","dirPath","entries","readdir","withFileTypes","limited","MAX_DIR_ENTRIES","e","prefix","name","response","fetch","headers","signal","AbortSignal","timeout","ok","status","statusText","text","MAX_URL_LENGTH","command","replace","gitCommands","diff","log","branch","stash","cmd","Object","keys","stdout","stderr","expanded","trim","contextParts","getMentionsSummary"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./mention.types"), exports);
|
|
6
|
+
function _export_star(from, to) {
|
|
7
|
+
Object.keys(from).forEach(function(k) {
|
|
8
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
9
|
+
Object.defineProperty(to, k, {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return from[k];
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return from;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/mentions/types/index.ts"],"sourcesContent":["export * from './mention.types';\n"],"names":[],"mappings":";;;;qBAAc"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "MentionType", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MentionType;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var MentionType = /*#__PURE__*/ function(MentionType) {
|
|
12
|
+
MentionType["FILE"] = "file";
|
|
13
|
+
MentionType["DIRECTORY"] = "directory";
|
|
14
|
+
MentionType["URL"] = "url";
|
|
15
|
+
MentionType["GIT"] = "git";
|
|
16
|
+
return MentionType;
|
|
17
|
+
}({});
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=mention.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/mentions/types/mention.types.ts"],"sourcesContent":["export enum MentionType {\n FILE = 'file',\n DIRECTORY = 'directory',\n URL = 'url',\n GIT = 'git',\n}\n\nexport interface ParsedMention {\n type: MentionType;\n raw: string;\n target: string;\n resolved: string;\n}\n\nexport interface ResolvedMention extends ParsedMention {\n content: string;\n error?: string;\n}\n\nexport interface MentionResult {\n expandedMessage: string;\n mentions: ResolvedMention[];\n originalMessage: string;\n}\n"],"names":["MentionType"],"mappings":";;;;+BAAYA;;;eAAAA;;;AAAL,IAAA,AAAKA,qCAAAA;;;;;WAAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./permissions.module"), exports);
|
|
6
|
+
_export_star(require("./services/permission.service"), exports);
|
|
7
|
+
_export_star(require("./services/prompt.service"), exports);
|
|
8
|
+
_export_star(require("./types/permission.types"), exports);
|
|
9
|
+
function _export_star(from, to) {
|
|
10
|
+
Object.keys(from).forEach(function(k) {
|
|
11
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
12
|
+
Object.defineProperty(to, k, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function() {
|
|
15
|
+
return from[k];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return from;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/permissions/index.ts"],"sourcesContent":["export * from './permissions.module';\nexport * from './services/permission.service';\nexport * from './services/prompt.service';\nexport * from './types/permission.types';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PermissionsModule", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PermissionsModule;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _permissionservice = require("./services/permission.service");
|
|
13
|
+
const _promptservice = require("./services/prompt.service");
|
|
14
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
15
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
16
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
17
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
18
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
|
+
}
|
|
20
|
+
let PermissionsModule = class PermissionsModule {
|
|
21
|
+
};
|
|
22
|
+
PermissionsModule = _ts_decorate([
|
|
23
|
+
(0, _common.Module)({
|
|
24
|
+
providers: [
|
|
25
|
+
_permissionservice.PermissionService,
|
|
26
|
+
_promptservice.PromptService
|
|
27
|
+
],
|
|
28
|
+
exports: [
|
|
29
|
+
_permissionservice.PermissionService,
|
|
30
|
+
_promptservice.PromptService
|
|
31
|
+
]
|
|
32
|
+
})
|
|
33
|
+
], PermissionsModule);
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=permissions.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/permissions/permissions.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common';\nimport { PermissionService } from './services/permission.service';\nimport { PromptService } from './services/prompt.service';\n\n@Module({\n providers: [PermissionService, PromptService],\n exports: [PermissionService, PromptService],\n})\nexport class PermissionsModule {}\n"],"names":["PermissionsModule","providers","PermissionService","PromptService","exports"],"mappings":";;;;+BAQaA;;;eAAAA;;;wBARU;mCACW;+BACJ;;;;;;;AAMvB,IAAA,AAAMA,oBAAN,MAAMA;AAAmB;;;QAH9BC,WAAW;YAACC,oCAAiB;YAAEC,4BAAa;SAAC;QAC7CC,SAAS;YAACF,oCAAiB;YAAEC,4BAAa;SAAC"}
|