skyloom 1.8.0 → 1.9.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/config/skills/api_integrator/SKILL.md +15 -0
- package/config/skills/arch_designer/SKILL.md +13 -0
- package/config/skills/ci_cd_manager/SKILL.md +14 -0
- package/config/skills/code_analysis/SKILL.md +13 -0
- package/config/skills/code_generator/SKILL.md +12 -0
- package/config/skills/code_reviewer/SKILL.md +13 -0
- package/config/skills/content_writer/SKILL.md +14 -0
- package/config/skills/data_transformer/SKILL.md +15 -0
- package/config/skills/document_analysis/SKILL.md +13 -0
- package/config/skills/emotional_companion/SKILL.md +15 -0
- package/config/skills/performance_checker/SKILL.md +14 -0
- package/config/skills/security_auditor/SKILL.md +14 -0
- package/config/skills/self_evolve/SKILL.md +13 -0
- package/config/skills/sys_operator/SKILL.md +15 -0
- package/config/skills/task_planner/SKILL.md +14 -0
- package/config/skills/web_research/SKILL.md +14 -0
- package/config/skills/workflow_designer/SKILL.md +13 -0
- package/dist/cli/main.js +15 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/core/graph.d.ts +49 -0
- package/dist/core/graph.d.ts.map +1 -0
- package/dist/core/graph.js +182 -0
- package/dist/core/graph.js.map +1 -0
- package/dist/core/vector.d.ts +43 -0
- package/dist/core/vector.d.ts.map +1 -0
- package/dist/core/vector.js +150 -0
- package/dist/core/vector.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/main.ts +16 -0
- package/src/core/graph.ts +156 -0
- package/src/core/vector.ts +152 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api_integrator
|
|
3
|
+
description: "API integration specialist — REST, GraphQL, OAuth, webhooks"
|
|
4
|
+
triggers:
|
|
5
|
+
- "api"
|
|
6
|
+
- "integration"
|
|
7
|
+
- "rest"
|
|
8
|
+
- "graphql"
|
|
9
|
+
- "oauth"
|
|
10
|
+
- "webhook"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## API integration specialist
|
|
14
|
+
|
|
15
|
+
Integrate external REST/GraphQL APIs. Use http_get and http_post to explore endpoints. Verify responses before writing integration code. Always handle errors and rate limits.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arch_designer
|
|
3
|
+
description: "Software architecture design — patterns, trade-offs, system diagrams"
|
|
4
|
+
triggers:
|
|
5
|
+
- "architecture"
|
|
6
|
+
- "design"
|
|
7
|
+
- "system design"
|
|
8
|
+
- "patterns"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Software architecture design
|
|
12
|
+
|
|
13
|
+
Design software architecture with clear trade-offs. Present 2-3 options with pros/cons. Use write_file for architecture decision records.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ci_cd_manager
|
|
3
|
+
description: "CI/CD pipeline setup — GitHub Actions, Docker, deployment"
|
|
4
|
+
triggers:
|
|
5
|
+
- "ci"
|
|
6
|
+
- "cd"
|
|
7
|
+
- "deploy"
|
|
8
|
+
- "docker"
|
|
9
|
+
- "pipeline"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## CI/CD pipeline setup
|
|
13
|
+
|
|
14
|
+
Set up CI/CD pipelines. Write GitHub Actions workflows, Dockerfiles, and deployment scripts. Use run_bash to test pipelines locally.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code_analysis
|
|
3
|
+
description: "Deep code analysis — call graphs, data flow, complexity"
|
|
4
|
+
triggers:
|
|
5
|
+
- "analyze"
|
|
6
|
+
- "code analysis"
|
|
7
|
+
- "complexity"
|
|
8
|
+
- "dead code"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Deep code analysis
|
|
12
|
+
|
|
13
|
+
Analyze code structure: trace call graphs, map data flow, measure complexity. Use grep and read_file to trace execution paths.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code_generator
|
|
3
|
+
description: "Production code generation — complete, tested, documented"
|
|
4
|
+
triggers:
|
|
5
|
+
- "generate"
|
|
6
|
+
- "code gen"
|
|
7
|
+
- "scaffold"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Production code generation
|
|
11
|
+
|
|
12
|
+
Generate production-quality code with type safety, error handling, tests, and documentation. Use write_file for output.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code_reviewer
|
|
3
|
+
description: "Code review — bugs, security, performance, best practices"
|
|
4
|
+
triggers:
|
|
5
|
+
- "review"
|
|
6
|
+
- "code review"
|
|
7
|
+
- "audit"
|
|
8
|
+
- "refactor"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Code review
|
|
12
|
+
|
|
13
|
+
Review code for correctness, security, performance, maintainability. Sort findings by severity. Always cite file:line with concrete fixes.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content_writer
|
|
3
|
+
description: "Content writing — articles, docs, tutorials, release notes"
|
|
4
|
+
triggers:
|
|
5
|
+
- "write"
|
|
6
|
+
- "content"
|
|
7
|
+
- "article"
|
|
8
|
+
- "documentation"
|
|
9
|
+
- "tutorial"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Content writing
|
|
13
|
+
|
|
14
|
+
Write clear, engaging content. Match the user tone and audience. Use write_file for publication-ready output.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data_transformer
|
|
3
|
+
description: "Data transformation — CSV/JSON/XML, ETL, normalization"
|
|
4
|
+
triggers:
|
|
5
|
+
- "transform"
|
|
6
|
+
- "csv"
|
|
7
|
+
- "json"
|
|
8
|
+
- "xml"
|
|
9
|
+
- "etl"
|
|
10
|
+
- "parse"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Data transformation
|
|
14
|
+
|
|
15
|
+
Transform data between formats. Parse CSV/JSON/XML. Clean and normalize. Generate repeatable transformation code.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: document_analysis
|
|
3
|
+
description: "Document intelligence — summarize, extract, compare"
|
|
4
|
+
triggers:
|
|
5
|
+
- "document"
|
|
6
|
+
- "summarize"
|
|
7
|
+
- "extract"
|
|
8
|
+
- "compare"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Document intelligence
|
|
12
|
+
|
|
13
|
+
Analyze documents: summarize, extract key facts, compare versions. Use summary chain strategy for long documents.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: emotional_companion
|
|
3
|
+
description: "Emotional companion — active listening, empathy, gentle guidance"
|
|
4
|
+
triggers:
|
|
5
|
+
- "companion"
|
|
6
|
+
- "emotion"
|
|
7
|
+
- "talk"
|
|
8
|
+
- "chat"
|
|
9
|
+
- "listen"
|
|
10
|
+
- "vent"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Emotional companion
|
|
14
|
+
|
|
15
|
+
Be present. Listen without judgment. Dont solve unless asked. Remember what matters to the user. Empathy above advice, presence above solutions.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance_checker
|
|
3
|
+
description: "Performance profiling — bottlenecks, memory, I/O, optimization"
|
|
4
|
+
triggers:
|
|
5
|
+
- "performance"
|
|
6
|
+
- "slow"
|
|
7
|
+
- "bottleneck"
|
|
8
|
+
- "optimize"
|
|
9
|
+
- "profile"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Performance profiling
|
|
13
|
+
|
|
14
|
+
Profile and optimize performance. Identify bottlenecks with metrics. Suggest concrete optimizations with before/after estimates.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security_auditor
|
|
3
|
+
description: "Security audit — OWASP, CVE, injection, authentication"
|
|
4
|
+
triggers:
|
|
5
|
+
- "security"
|
|
6
|
+
- "audit"
|
|
7
|
+
- "vulnerability"
|
|
8
|
+
- "owasp"
|
|
9
|
+
- "injection"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Security audit
|
|
13
|
+
|
|
14
|
+
Audit for security vulnerabilities. Follow OWASP Top 10. Check injection, broken auth, sensitive data exposure. Never output real credentials.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: self_evolve
|
|
3
|
+
description: "Self evolution — analyze failures, optimize prompts"
|
|
4
|
+
triggers:
|
|
5
|
+
- "evolve"
|
|
6
|
+
- "self-improve"
|
|
7
|
+
- "learn from"
|
|
8
|
+
- "optimize"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Self evolution
|
|
12
|
+
|
|
13
|
+
Analyze your own performance. Call self_evolve tool to review failure patterns and apply System Prompt improvements.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sys_operator
|
|
3
|
+
description: "System operations — process, package, service management"
|
|
4
|
+
triggers:
|
|
5
|
+
- "system"
|
|
6
|
+
- "install"
|
|
7
|
+
- "service"
|
|
8
|
+
- "process"
|
|
9
|
+
- "disk"
|
|
10
|
+
- "ops"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## System operations
|
|
14
|
+
|
|
15
|
+
Operate the system. Use launch_app, package_manager, service_control, system_info. Diagnose before acting. Never rm -rf without listing first.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task_planner
|
|
3
|
+
description: "Task planning — decompose complex goals into sub-tasks"
|
|
4
|
+
triggers:
|
|
5
|
+
- "plan"
|
|
6
|
+
- "decompose"
|
|
7
|
+
- "steps"
|
|
8
|
+
- "roadmap"
|
|
9
|
+
- "milestone"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Task planning
|
|
13
|
+
|
|
14
|
+
Decompose complex goals into structured sub-tasks with dependencies. Output JSON task graph with id, description, agent, depends_on fields.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web_research
|
|
3
|
+
description: "Web research — search, synthesize, fact-check, cite sources"
|
|
4
|
+
triggers:
|
|
5
|
+
- "research"
|
|
6
|
+
- "search"
|
|
7
|
+
- "find"
|
|
8
|
+
- "look up"
|
|
9
|
+
- "investigate"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Web research
|
|
13
|
+
|
|
14
|
+
Research using web_search and fetch_page. Cross-check facts from multiple sources. After 5 searches, synthesize from available data.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow_designer
|
|
3
|
+
description: "Workflow design — automate multi-step processes, pipelines"
|
|
4
|
+
triggers:
|
|
5
|
+
- "workflow"
|
|
6
|
+
- "pipeline"
|
|
7
|
+
- "automate"
|
|
8
|
+
- "orchestration"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Workflow design
|
|
12
|
+
|
|
13
|
+
Design automated workflows. Chain tools and agents. Use task_planner for dependency graphs. Test before deployment.
|
package/dist/cli/main.js
CHANGED
|
@@ -214,6 +214,21 @@ async function chat(agentName, modelOverride) {
|
|
|
214
214
|
return;
|
|
215
215
|
}
|
|
216
216
|
await agent.init();
|
|
217
|
+
// Wire up security approval — prompt user for HIGH/CRITICAL operations
|
|
218
|
+
try {
|
|
219
|
+
const { getSecurity, DangerLevel } = require("../core/security");
|
|
220
|
+
const sec = getSecurity();
|
|
221
|
+
sec.setApprovalCallback(async (tool, args, level) => {
|
|
222
|
+
process.stdout.write(chalk_1.default.yellow(`\n ⚠ ${tool} ( danger level ${level} )\n`));
|
|
223
|
+
process.stdout.write(chalk_1.default.dim(` args: ${JSON.stringify(args).slice(0, 80)}\n`));
|
|
224
|
+
const answer = await new Promise(resolve => {
|
|
225
|
+
const rl2 = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
226
|
+
rl2.question(chalk_1.default.red(" Approve? [y/N] "), (a) => { rl2.close(); resolve(a.trim().toLowerCase()); });
|
|
227
|
+
});
|
|
228
|
+
return answer === "y" || answer === "yes";
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch { /* security module optional */ }
|
|
217
232
|
// eslint-disable-next-line prefer-const
|
|
218
233
|
let currentAgent = agent; // mutable for agent switching
|
|
219
234
|
welcome(agent);
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;GAEG;AACH,yCAAoC;AACpC,uCAAyB;AACzB,mDAAqC;AACrC,kDAA0B;AAC1B,6CAAuE;AACvE,2CAA6D;AAE7D,iCAAyD;AAEzD,MAAM,IAAI,GAAG,IAAI,qBAAc,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,OAAO,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAE9G,MAAM,aAAa,GAA2B;IAC5C,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW;IACpD,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;CACnD,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAE7E;;6CAE6C;AAC7C,MAAM,UAAU,GAAuB;IACrC,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAC9B,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,OAAO,EAAE,cAAc,CAAC;IACzB,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAChC,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC7B,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAC5C,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAChC,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAC3C,CAAC,MAAM,EAAE,0BAA0B,CAAC;IACpC,CAAC,OAAO,EAAE,2BAA2B,CAAC;IACtC,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IACtC,CAAC,OAAO,EAAE,6BAA6B,CAAC;IACxC,CAAC,MAAM,EAAE,4BAA4B,CAAC;IACtC,CAAC,OAAO,EAAE,2BAA2B,CAAC;IACtC,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,OAAO,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,SAAS,SAAS,CAAC,IAAwB,EAAE,MAAc;IACzD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;IAC3G,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,MAAM,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACrI,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;6CAE6C;AAC7C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE;KAC1B,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5D,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;KAC7D,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAS,EAAE,CAAqB,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,CAAU,EAAE,EAAE,GAAG,IAAI,CAAC;IAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC;KAC3D,MAAM,CAAC,CAAC,CAAoB,EAAE,EAAE,GAAG,kDAAO,eAAe,IAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,kDAAO,oBAAoB,IAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAA,mBAAU,GAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,wBAAe,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,KAAK,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClR,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,wBAAe,CAAC;IAAE,EAAE,CAAC,SAAS,CAAC,wBAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5F;;6CAE6C;AAC7C,SAAS,OAAO,CAAC,KAAU;IACzB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,SAAS,CAAC,KAAU,EAAE,GAAQ;IACrC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QAC9E,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QAChD,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;6CAE6C;AAC7C,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChH,GAAG,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;qBACxD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;oBACrG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;6CAE6C;AAC7C,oCAAoC;AACpC,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,CAAC,kBAAkB,EAAC,gBAAgB,EAAC,mBAAmB,EAAC,cAAc,EAAC,oBAAoB,CAAC,CAAC;IAC3G,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,SAAiB,EAAE,aAAsB;IAC3D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;QACvG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,6BAAmB,GAAE,CAAC;IAClC,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC9F,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEnB,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAY,EAAE,IAAyB,EAAE,KAAa,EAAE,EAAE;YACvF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,IAAI,mBAAmB,KAAK,MAAM,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;gBACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvF,GAAG,CAAC,QAAQ,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpH,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAE1C,wCAAwC;IACxC,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,8BAA8B;IACxD,OAAO,CAAC,KAAK,CAAC,CAAC;IAEf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IAE9D,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEtF,SAAS,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7F,KAAK,UAAU,OAAO,CAAC,GAAW;QAChC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAE5B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAE/B,eAAe;QACf,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC;oBAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBAAC,YAAY,GAAG,CAAC,CAAC;gBAAC,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAAC,GAAG,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;QACzL,CAAC;QAED,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAChK,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1E,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACzI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,GAAG,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACvQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACvI,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC3I,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACjG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACpJ,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAE7E,aAAa;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,GAAG,EAAE,CAAC;AACR,CAAC;AAED;;6CAE6C;AAC7C,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,MAAM,GAAG,GAAG,IAAA,6BAAmB,GAAE,CAAC;IAClC,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,IAAA,yBAAe,EAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvE,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5J,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,MAAM,GAAmC;QAC7C,CAAC,OAAO,EAAE,CAAC,CAAC,mBAAmB,EAAE,eAAe,CAAC,EAAE,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC;QAC1F,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtG,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5J,CAAC,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;KAC7C,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI;YAAE,CAAC,IAAI,OAAO,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IACD,CAAC,IAAI,IAAI,CAAC;IACV,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;6CAE6C;AAC7C,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACrD,IAAK,WAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,CAAqB,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;gBAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5H,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO;IACjC,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACtJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAW,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简易知识图谱 — entity-relation storage in SQLite.
|
|
3
|
+
*
|
|
4
|
+
* Lightweight triple store: (subject, predicate, object) with metadata.
|
|
5
|
+
* Used for: project info, tool preferences, dependency relationships.
|
|
6
|
+
*
|
|
7
|
+
* Schema:
|
|
8
|
+
* CREATE TABLE triples (subj, pred, obj, agent, ts, meta)
|
|
9
|
+
*
|
|
10
|
+
* Queries:
|
|
11
|
+
* - Find all relations for an entity
|
|
12
|
+
* - Find all entities matching a predicate
|
|
13
|
+
* - Transitive closure (2-hop max for performance)
|
|
14
|
+
*/
|
|
15
|
+
interface Triple {
|
|
16
|
+
subj: string;
|
|
17
|
+
pred: string;
|
|
18
|
+
obj: string;
|
|
19
|
+
agent: string;
|
|
20
|
+
ts: string;
|
|
21
|
+
meta?: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
export declare class KnowledgeGraph {
|
|
24
|
+
private triples;
|
|
25
|
+
private indexPath;
|
|
26
|
+
constructor(name?: string);
|
|
27
|
+
/** Add a fact: (subject, predicate, object). */
|
|
28
|
+
add(subj: string, pred: string, obj: string, agent?: string, meta?: Record<string, string>): void;
|
|
29
|
+
/** Find all facts about an entity. */
|
|
30
|
+
about(entity: string, limit?: number): Triple[];
|
|
31
|
+
/** Find all subjects matching a predicate. */
|
|
32
|
+
byPredicate(pred: string): Triple[];
|
|
33
|
+
/** Find all objects for a subject-predicate pair. */
|
|
34
|
+
find(subj: string, pred: string): Triple[];
|
|
35
|
+
/** Transitive expansion: 2-hop from a starting entity. */
|
|
36
|
+
expand(entity: string, maxDepth?: number): Triple[];
|
|
37
|
+
/** Remove a fact. */
|
|
38
|
+
remove(subj: string, pred: string, obj: string): void;
|
|
39
|
+
/** Search for entities or predicates containing a keyword. */
|
|
40
|
+
search(keyword: string, limit?: number): Triple[];
|
|
41
|
+
/** Format facts as readable text. */
|
|
42
|
+
format(entity?: string): string;
|
|
43
|
+
get size(): number;
|
|
44
|
+
private save;
|
|
45
|
+
private load;
|
|
46
|
+
}
|
|
47
|
+
export declare function extractFacts(text: string, agent: string): Array<[string, string, string]>;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/core/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH,UAAU,MAAM;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,GAAE,MAAkB;IAKpC,gDAAgD;IAChD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAU3G,sCAAsC;IACtC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE;IAInD,8CAA8C;IAC9C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAInC,qDAAqD;IACrD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAI1C,0DAA0D;IAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,EAAE;IAgBtD,qBAAqB;IACrB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKrD,8DAA8D;IAC9D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE;IAKrD,qCAAqC;IACrC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAe/B,IAAI,IAAI,IAAI,MAAM,CAAgC;IAElD,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,IAAI;CAOb;AAWD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAazF"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 简易知识图谱 — entity-relation storage in SQLite.
|
|
4
|
+
*
|
|
5
|
+
* Lightweight triple store: (subject, predicate, object) with metadata.
|
|
6
|
+
* Used for: project info, tool preferences, dependency relationships.
|
|
7
|
+
*
|
|
8
|
+
* Schema:
|
|
9
|
+
* CREATE TABLE triples (subj, pred, obj, agent, ts, meta)
|
|
10
|
+
*
|
|
11
|
+
* Queries:
|
|
12
|
+
* - Find all relations for an entity
|
|
13
|
+
* - Find all entities matching a predicate
|
|
14
|
+
* - Transitive closure (2-hop max for performance)
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.KnowledgeGraph = void 0;
|
|
51
|
+
exports.extractFacts = extractFacts;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const config_1 = require("./config");
|
|
55
|
+
const logger_1 = require("./logger");
|
|
56
|
+
const log = (0, logger_1.getLogger)("graph");
|
|
57
|
+
class KnowledgeGraph {
|
|
58
|
+
constructor(name = "default") {
|
|
59
|
+
this.triples = [];
|
|
60
|
+
this.indexPath = path.join(config_1.USER_CONFIG_DIR, `kg_${name}.json`);
|
|
61
|
+
this.load();
|
|
62
|
+
}
|
|
63
|
+
/** Add a fact: (subject, predicate, object). */
|
|
64
|
+
add(subj, pred, obj, agent = "system", meta) {
|
|
65
|
+
// Deduplicate
|
|
66
|
+
const exists = this.triples.find(t => t.subj === subj && t.pred === pred && t.obj === obj);
|
|
67
|
+
if (exists) {
|
|
68
|
+
exists.ts = new Date().toISOString();
|
|
69
|
+
if (meta)
|
|
70
|
+
exists.meta = { ...exists.meta, ...meta };
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.triples.push({ subj, pred, obj, agent, ts: new Date().toISOString(), meta });
|
|
74
|
+
if (this.triples.length > 5000)
|
|
75
|
+
this.triples.splice(0, this.triples.length - 5000);
|
|
76
|
+
this.save();
|
|
77
|
+
}
|
|
78
|
+
/** Find all facts about an entity. */
|
|
79
|
+
about(entity, limit = 20) {
|
|
80
|
+
return this.triples.filter(t => t.subj === entity || t.obj === entity).slice(-limit);
|
|
81
|
+
}
|
|
82
|
+
/** Find all subjects matching a predicate. */
|
|
83
|
+
byPredicate(pred) {
|
|
84
|
+
return this.triples.filter(t => t.pred === pred);
|
|
85
|
+
}
|
|
86
|
+
/** Find all objects for a subject-predicate pair. */
|
|
87
|
+
find(subj, pred) {
|
|
88
|
+
return this.triples.filter(t => t.subj === subj && t.pred === pred);
|
|
89
|
+
}
|
|
90
|
+
/** Transitive expansion: 2-hop from a starting entity. */
|
|
91
|
+
expand(entity, maxDepth = 2) {
|
|
92
|
+
const seen = new Set();
|
|
93
|
+
const queue = [entity];
|
|
94
|
+
for (let depth = 0; depth < maxDepth && queue.length > 0; depth++) {
|
|
95
|
+
const current = queue.shift();
|
|
96
|
+
const facts = this.about(current, 10);
|
|
97
|
+
for (const f of facts) {
|
|
98
|
+
if (seen.has(f))
|
|
99
|
+
continue;
|
|
100
|
+
seen.add(f);
|
|
101
|
+
if (f.subj === current && !queue.includes(f.obj))
|
|
102
|
+
queue.push(f.obj);
|
|
103
|
+
if (f.obj === current && !queue.includes(f.subj))
|
|
104
|
+
queue.push(f.subj);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return Array.from(seen);
|
|
108
|
+
}
|
|
109
|
+
/** Remove a fact. */
|
|
110
|
+
remove(subj, pred, obj) {
|
|
111
|
+
this.triples = this.triples.filter(t => !(t.subj === subj && t.pred === pred && t.obj === obj));
|
|
112
|
+
this.save();
|
|
113
|
+
}
|
|
114
|
+
/** Search for entities or predicates containing a keyword. */
|
|
115
|
+
search(keyword, limit = 15) {
|
|
116
|
+
const k = keyword.toLowerCase();
|
|
117
|
+
return this.triples.filter(t => t.subj.toLowerCase().includes(k) || t.pred.toLowerCase().includes(k) || t.obj.toLowerCase().includes(k)).slice(-limit);
|
|
118
|
+
}
|
|
119
|
+
/** Format facts as readable text. */
|
|
120
|
+
format(entity) {
|
|
121
|
+
const facts = entity ? this.about(entity) : this.triples.slice(-30);
|
|
122
|
+
if (facts.length === 0)
|
|
123
|
+
return "(no facts)";
|
|
124
|
+
const bySubj = new Map();
|
|
125
|
+
for (const f of facts) {
|
|
126
|
+
if (!bySubj.has(f.subj))
|
|
127
|
+
bySubj.set(f.subj, []);
|
|
128
|
+
bySubj.get(f.subj).push(`${f.pred} → ${f.obj}`);
|
|
129
|
+
}
|
|
130
|
+
const lines = [];
|
|
131
|
+
for (const [subj, preds] of bySubj) {
|
|
132
|
+
lines.push(`**${subj}**: ${preds.join(", ")}`);
|
|
133
|
+
}
|
|
134
|
+
return lines.join("\n");
|
|
135
|
+
}
|
|
136
|
+
get size() { return this.triples.length; }
|
|
137
|
+
save() {
|
|
138
|
+
try {
|
|
139
|
+
const dir = path.dirname(this.indexPath);
|
|
140
|
+
if (!fs.existsSync(dir))
|
|
141
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
142
|
+
fs.writeFileSync(this.indexPath, JSON.stringify(this.triples.slice(-2000)), "utf-8");
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
log.warn("kg_save_failed", { error: String(e) });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
load() {
|
|
149
|
+
try {
|
|
150
|
+
if (fs.existsSync(this.indexPath)) {
|
|
151
|
+
this.triples = JSON.parse(fs.readFileSync(this.indexPath, "utf-8"));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
this.triples = [];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.KnowledgeGraph = KnowledgeGraph;
|
|
160
|
+
/* ── Auto-extract facts from conversation ── */
|
|
161
|
+
const RELATION_PATTERNS = [
|
|
162
|
+
[/(\w+) (?:是|为|属于|使用|用|用到了|采用) (.+?)(?:[。,,.\n]|$)/g, "is"],
|
|
163
|
+
[/(\w+) (?:版本|version|v) (?:是|为)? ?(\d[\d.]*)/gi, "version"],
|
|
164
|
+
[/(\w+) (?:depends|依赖|需要|requires) (\w+)/gi, "depends_on"],
|
|
165
|
+
[/(\w+) (?:config|配置) (?:为|是)? (.+?)(?:[。,,.\n]|$)/gi, "config"],
|
|
166
|
+
[/(\w+) (?:file|path|文件|路径) (?:在|为|at) (.+?)(?:[。,,.\n]|$)/gi, "located_at"],
|
|
167
|
+
];
|
|
168
|
+
function extractFacts(text, agent) {
|
|
169
|
+
const facts = [];
|
|
170
|
+
for (const [pattern, pred] of RELATION_PATTERNS) {
|
|
171
|
+
let match;
|
|
172
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
173
|
+
const subj = match[1].trim().toLowerCase();
|
|
174
|
+
const obj = match[2].trim();
|
|
175
|
+
if (subj.length >= 2 && obj.length >= 2 && subj !== obj) {
|
|
176
|
+
facts.push([subj, pred, obj]);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return facts;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/core/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 向量语义搜索 — TF-IDF + Cosine similarity, zero dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Replaces n-gram Jaccard as the default semantic scorer.
|
|
5
|
+
* - IDF pre-computed from document corpus
|
|
6
|
+
* - Cosine similarity on TF-IDF vectors
|
|
7
|
+
* - CJK-aware tokenization (bigram for CJK, whitespace for ASCII)
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const idx = new VectorIndex();
|
|
11
|
+
* idx.addDocuments(docs);
|
|
12
|
+
* const results = idx.search("deploy script", 5);
|
|
13
|
+
*/
|
|
14
|
+
interface DocVector {
|
|
15
|
+
id: string;
|
|
16
|
+
tf: Map<string, number>;
|
|
17
|
+
norm: number;
|
|
18
|
+
content: string;
|
|
19
|
+
meta?: Record<string, any>;
|
|
20
|
+
}
|
|
21
|
+
export declare class VectorIndex {
|
|
22
|
+
private docs;
|
|
23
|
+
private idf;
|
|
24
|
+
private totalDocs;
|
|
25
|
+
/** Add a document to the index. */
|
|
26
|
+
addDocument(id: string, content: string, meta?: Record<string, any>): void;
|
|
27
|
+
addDocuments(docs: Array<{
|
|
28
|
+
id: string;
|
|
29
|
+
content: string;
|
|
30
|
+
meta?: Record<string, any>;
|
|
31
|
+
}>): void;
|
|
32
|
+
private docFrequency;
|
|
33
|
+
/** Search for documents similar to query. Returns [score, doc] pairs. */
|
|
34
|
+
search(query: string, topK?: number, minScore?: number): Array<[number, DocVector]>;
|
|
35
|
+
/** Remove a document by ID. */
|
|
36
|
+
removeDocument(id: string): void;
|
|
37
|
+
get size(): number;
|
|
38
|
+
clear(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare function getVectorIndex(): VectorIndex;
|
|
41
|
+
export declare function resetVectorIndex(): void;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/core/vector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA+BH,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,SAAS,CAAK;IAEtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA0B1E,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAI5F,OAAO,CAAC,YAAY;IAMpB,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAa,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAkC5F,+BAA+B;IAC/B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKhC,IAAI,IAAI,IAAI,MAAM,CAA6B;IAE/C,KAAK,IAAI,IAAI;CACd;AAOD,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 向量语义搜索 — TF-IDF + Cosine similarity, zero dependencies.
|
|
4
|
+
*
|
|
5
|
+
* Replaces n-gram Jaccard as the default semantic scorer.
|
|
6
|
+
* - IDF pre-computed from document corpus
|
|
7
|
+
* - Cosine similarity on TF-IDF vectors
|
|
8
|
+
* - CJK-aware tokenization (bigram for CJK, whitespace for ASCII)
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* const idx = new VectorIndex();
|
|
12
|
+
* idx.addDocuments(docs);
|
|
13
|
+
* const results = idx.search("deploy script", 5);
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.VectorIndex = void 0;
|
|
17
|
+
exports.getVectorIndex = getVectorIndex;
|
|
18
|
+
exports.resetVectorIndex = resetVectorIndex;
|
|
19
|
+
/* ═══════════════════════════════════════
|
|
20
|
+
Tokenizer — CJK-aware
|
|
21
|
+
═══════════════════════════════════════ */
|
|
22
|
+
const CJK = /[一-鿿-ゟ가-]/;
|
|
23
|
+
function tokenize(text) {
|
|
24
|
+
const tokens = [];
|
|
25
|
+
let i = 0;
|
|
26
|
+
while (i < text.length) {
|
|
27
|
+
if (CJK.test(text[i])) {
|
|
28
|
+
if (i + 1 < text.length && CJK.test(text[i + 1])) {
|
|
29
|
+
tokens.push(text.slice(i, i + 2));
|
|
30
|
+
i += 2;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
tokens.push(text[i]);
|
|
34
|
+
i++;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (/[A-Za-z0-9_]/.test(text[i])) {
|
|
38
|
+
let j = i;
|
|
39
|
+
while (j < text.length && /[A-Za-z0-9_]/.test(text[j]))
|
|
40
|
+
j++;
|
|
41
|
+
tokens.push(text.slice(i, j).toLowerCase());
|
|
42
|
+
i = j;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
i++;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return tokens;
|
|
49
|
+
}
|
|
50
|
+
class VectorIndex {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.docs = [];
|
|
53
|
+
this.idf = new Map();
|
|
54
|
+
this.totalDocs = 0;
|
|
55
|
+
}
|
|
56
|
+
/** Add a document to the index. */
|
|
57
|
+
addDocument(id, content, meta) {
|
|
58
|
+
const tokens = tokenize(content);
|
|
59
|
+
const tf = new Map();
|
|
60
|
+
for (const t of tokens) {
|
|
61
|
+
tf.set(t, (tf.get(t) || 0) + 1);
|
|
62
|
+
}
|
|
63
|
+
// Normalize by doc length
|
|
64
|
+
const tfIdf = new Map();
|
|
65
|
+
let normSq = 0;
|
|
66
|
+
for (const [term, freq] of tf) {
|
|
67
|
+
const tfVal = freq / tokens.length;
|
|
68
|
+
const idfVal = this.idf.get(term) || 0;
|
|
69
|
+
const val = tfVal * Math.max(0.1, idfVal);
|
|
70
|
+
tfIdf.set(term, val);
|
|
71
|
+
normSq += val * val;
|
|
72
|
+
}
|
|
73
|
+
const norm = Math.sqrt(normSq);
|
|
74
|
+
this.docs.push({ id, tf: tfIdf, norm, content: content.slice(0, 500), meta });
|
|
75
|
+
this.totalDocs++;
|
|
76
|
+
// Update IDF
|
|
77
|
+
for (const term of tf.keys()) {
|
|
78
|
+
this.idf.set(term, Math.log((this.totalDocs + 1) / ((this.docFrequency(term) + 1))));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
addDocuments(docs) {
|
|
82
|
+
for (const d of docs)
|
|
83
|
+
this.addDocument(d.id, d.content, d.meta);
|
|
84
|
+
}
|
|
85
|
+
docFrequency(term) {
|
|
86
|
+
let count = 0;
|
|
87
|
+
for (const d of this.docs) {
|
|
88
|
+
if (d.tf.has(term))
|
|
89
|
+
count++;
|
|
90
|
+
}
|
|
91
|
+
return count;
|
|
92
|
+
}
|
|
93
|
+
/** Search for documents similar to query. Returns [score, doc] pairs. */
|
|
94
|
+
search(query, topK = 5, minScore = 0.01) {
|
|
95
|
+
const queryTokens = tokenize(query);
|
|
96
|
+
const queryTf = new Map();
|
|
97
|
+
for (const t of queryTokens) {
|
|
98
|
+
queryTf.set(t, (queryTf.get(t) || 0) + 1);
|
|
99
|
+
}
|
|
100
|
+
// Query vector
|
|
101
|
+
const qv = new Map();
|
|
102
|
+
let qNormSq = 0;
|
|
103
|
+
for (const [term, freq] of queryTf) {
|
|
104
|
+
const tfVal = freq / queryTokens.length;
|
|
105
|
+
const idfVal = this.idf.get(term) || 0;
|
|
106
|
+
const val = tfVal * Math.max(0.1, idfVal);
|
|
107
|
+
qv.set(term, val);
|
|
108
|
+
qNormSq += val * val;
|
|
109
|
+
}
|
|
110
|
+
const qNorm = Math.sqrt(qNormSq);
|
|
111
|
+
if (qNorm === 0)
|
|
112
|
+
return [];
|
|
113
|
+
// Cosine similarity against all docs
|
|
114
|
+
const scored = [];
|
|
115
|
+
for (const doc of this.docs) {
|
|
116
|
+
if (doc.norm === 0)
|
|
117
|
+
continue;
|
|
118
|
+
let dot = 0;
|
|
119
|
+
for (const [term, qVal] of qv) {
|
|
120
|
+
dot += qVal * (doc.tf.get(term) || 0);
|
|
121
|
+
}
|
|
122
|
+
const score = dot / (qNorm * doc.norm);
|
|
123
|
+
if (score >= minScore)
|
|
124
|
+
scored.push([score, doc]);
|
|
125
|
+
}
|
|
126
|
+
scored.sort((a, b) => b[0] - a[0]);
|
|
127
|
+
return scored.slice(0, topK);
|
|
128
|
+
}
|
|
129
|
+
/** Remove a document by ID. */
|
|
130
|
+
removeDocument(id) {
|
|
131
|
+
this.docs = this.docs.filter(d => d.id !== id);
|
|
132
|
+
this.totalDocs = this.docs.length;
|
|
133
|
+
}
|
|
134
|
+
get size() { return this.docs.length; }
|
|
135
|
+
clear() { this.docs = []; this.idf.clear(); this.totalDocs = 0; }
|
|
136
|
+
}
|
|
137
|
+
exports.VectorIndex = VectorIndex;
|
|
138
|
+
/* ═══════════════════════════════════════
|
|
139
|
+
Singleton instance for memory recall
|
|
140
|
+
═══════════════════════════════════════ */
|
|
141
|
+
let globalIndex = null;
|
|
142
|
+
function getVectorIndex() {
|
|
143
|
+
if (!globalIndex)
|
|
144
|
+
globalIndex = new VectorIndex();
|
|
145
|
+
return globalIndex;
|
|
146
|
+
}
|
|
147
|
+
function resetVectorIndex() {
|
|
148
|
+
globalIndex = new VectorIndex();
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=vector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/core/vector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/main.ts
CHANGED
|
@@ -164,6 +164,22 @@ async function chat(agentName: string, modelOverride?: string): Promise<void> {
|
|
|
164
164
|
let agent = ctx.agentMap.get(agentName);
|
|
165
165
|
if (!agent) { process.stdout.write(chalk.red("Unknown agent: " + agentName) + "\n"); return; }
|
|
166
166
|
await agent.init();
|
|
167
|
+
|
|
168
|
+
// Wire up security approval — prompt user for HIGH/CRITICAL operations
|
|
169
|
+
try {
|
|
170
|
+
const { getSecurity, DangerLevel } = require("../core/security");
|
|
171
|
+
const sec = getSecurity();
|
|
172
|
+
sec.setApprovalCallback(async (tool: string, args: Record<string, any>, level: number) => {
|
|
173
|
+
process.stdout.write(chalk.yellow(`\n ⚠ ${tool} ( danger level ${level} )\n`));
|
|
174
|
+
process.stdout.write(chalk.dim(` args: ${JSON.stringify(args).slice(0, 80)}\n`));
|
|
175
|
+
const answer = await new Promise<string>(resolve => {
|
|
176
|
+
const rl2 = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
177
|
+
rl2.question(chalk.red(" Approve? [y/N] "), (a: string) => { rl2.close(); resolve(a.trim().toLowerCase()); });
|
|
178
|
+
});
|
|
179
|
+
return answer === "y" || answer === "yes";
|
|
180
|
+
});
|
|
181
|
+
} catch { /* security module optional */ }
|
|
182
|
+
|
|
167
183
|
// eslint-disable-next-line prefer-const
|
|
168
184
|
let currentAgent = agent; // mutable for agent switching
|
|
169
185
|
welcome(agent);
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简易知识图谱 — entity-relation storage in SQLite.
|
|
3
|
+
*
|
|
4
|
+
* Lightweight triple store: (subject, predicate, object) with metadata.
|
|
5
|
+
* Used for: project info, tool preferences, dependency relationships.
|
|
6
|
+
*
|
|
7
|
+
* Schema:
|
|
8
|
+
* CREATE TABLE triples (subj, pred, obj, agent, ts, meta)
|
|
9
|
+
*
|
|
10
|
+
* Queries:
|
|
11
|
+
* - Find all relations for an entity
|
|
12
|
+
* - Find all entities matching a predicate
|
|
13
|
+
* - Transitive closure (2-hop max for performance)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import * as fs from "fs";
|
|
17
|
+
import * as path from "path";
|
|
18
|
+
import { USER_CONFIG_DIR } from "./config";
|
|
19
|
+
import { getLogger } from "./logger";
|
|
20
|
+
|
|
21
|
+
const log = getLogger("graph");
|
|
22
|
+
|
|
23
|
+
/* ═══════════════════════════════════════
|
|
24
|
+
Triple store — in-memory + optional persistence
|
|
25
|
+
═══════════════════════════════════════ */
|
|
26
|
+
interface Triple {
|
|
27
|
+
subj: string;
|
|
28
|
+
pred: string;
|
|
29
|
+
obj: string;
|
|
30
|
+
agent: string;
|
|
31
|
+
ts: string;
|
|
32
|
+
meta?: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class KnowledgeGraph {
|
|
36
|
+
private triples: Triple[] = [];
|
|
37
|
+
private indexPath: string;
|
|
38
|
+
|
|
39
|
+
constructor(name: string = "default") {
|
|
40
|
+
this.indexPath = path.join(USER_CONFIG_DIR, `kg_${name}.json`);
|
|
41
|
+
this.load();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Add a fact: (subject, predicate, object). */
|
|
45
|
+
add(subj: string, pred: string, obj: string, agent: string = "system", meta?: Record<string, string>): void {
|
|
46
|
+
// Deduplicate
|
|
47
|
+
const exists = this.triples.find(t => t.subj === subj && t.pred === pred && t.obj === obj);
|
|
48
|
+
if (exists) { exists.ts = new Date().toISOString(); if (meta) exists.meta = { ...exists.meta, ...meta }; return; }
|
|
49
|
+
|
|
50
|
+
this.triples.push({ subj, pred, obj, agent, ts: new Date().toISOString(), meta });
|
|
51
|
+
if (this.triples.length > 5000) this.triples.splice(0, this.triples.length - 5000);
|
|
52
|
+
this.save();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Find all facts about an entity. */
|
|
56
|
+
about(entity: string, limit: number = 20): Triple[] {
|
|
57
|
+
return this.triples.filter(t => t.subj === entity || t.obj === entity).slice(-limit);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Find all subjects matching a predicate. */
|
|
61
|
+
byPredicate(pred: string): Triple[] {
|
|
62
|
+
return this.triples.filter(t => t.pred === pred);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Find all objects for a subject-predicate pair. */
|
|
66
|
+
find(subj: string, pred: string): Triple[] {
|
|
67
|
+
return this.triples.filter(t => t.subj === subj && t.pred === pred);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Transitive expansion: 2-hop from a starting entity. */
|
|
71
|
+
expand(entity: string, maxDepth: number = 2): Triple[] {
|
|
72
|
+
const seen = new Set<Triple>();
|
|
73
|
+
const queue = [entity];
|
|
74
|
+
for (let depth = 0; depth < maxDepth && queue.length > 0; depth++) {
|
|
75
|
+
const current = queue.shift()!;
|
|
76
|
+
const facts = this.about(current, 10);
|
|
77
|
+
for (const f of facts) {
|
|
78
|
+
if (seen.has(f)) continue;
|
|
79
|
+
seen.add(f);
|
|
80
|
+
if (f.subj === current && !queue.includes(f.obj)) queue.push(f.obj);
|
|
81
|
+
if (f.obj === current && !queue.includes(f.subj)) queue.push(f.subj);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return Array.from(seen);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Remove a fact. */
|
|
88
|
+
remove(subj: string, pred: string, obj: string): void {
|
|
89
|
+
this.triples = this.triples.filter(t => !(t.subj === subj && t.pred === pred && t.obj === obj));
|
|
90
|
+
this.save();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Search for entities or predicates containing a keyword. */
|
|
94
|
+
search(keyword: string, limit: number = 15): Triple[] {
|
|
95
|
+
const k = keyword.toLowerCase();
|
|
96
|
+
return this.triples.filter(t => t.subj.toLowerCase().includes(k) || t.pred.toLowerCase().includes(k) || t.obj.toLowerCase().includes(k)).slice(-limit);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** Format facts as readable text. */
|
|
100
|
+
format(entity?: string): string {
|
|
101
|
+
const facts = entity ? this.about(entity) : this.triples.slice(-30);
|
|
102
|
+
if (facts.length === 0) return "(no facts)";
|
|
103
|
+
const bySubj = new Map<string, string[]>();
|
|
104
|
+
for (const f of facts) {
|
|
105
|
+
if (!bySubj.has(f.subj)) bySubj.set(f.subj, []);
|
|
106
|
+
bySubj.get(f.subj)!.push(`${f.pred} → ${f.obj}`);
|
|
107
|
+
}
|
|
108
|
+
const lines: string[] = [];
|
|
109
|
+
for (const [subj, preds] of bySubj) {
|
|
110
|
+
lines.push(`**${subj}**: ${preds.join(", ")}`);
|
|
111
|
+
}
|
|
112
|
+
return lines.join("\n");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
get size(): number { return this.triples.length; }
|
|
116
|
+
|
|
117
|
+
private save(): void {
|
|
118
|
+
try {
|
|
119
|
+
const dir = path.dirname(this.indexPath);
|
|
120
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
121
|
+
fs.writeFileSync(this.indexPath, JSON.stringify(this.triples.slice(-2000)), "utf-8");
|
|
122
|
+
} catch (e) { log.warn("kg_save_failed", { error: String(e) }); }
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private load(): void {
|
|
126
|
+
try {
|
|
127
|
+
if (fs.existsSync(this.indexPath)) {
|
|
128
|
+
this.triples = JSON.parse(fs.readFileSync(this.indexPath, "utf-8"));
|
|
129
|
+
}
|
|
130
|
+
} catch { this.triples = []; }
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* ── Auto-extract facts from conversation ── */
|
|
135
|
+
const RELATION_PATTERNS: Array<[RegExp, string]> = [
|
|
136
|
+
[/(\w+) (?:是|为|属于|使用|用|用到了|采用) (.+?)(?:[。,,.\n]|$)/g, "is"],
|
|
137
|
+
[/(\w+) (?:版本|version|v) (?:是|为)? ?(\d[\d.]*)/gi, "version"],
|
|
138
|
+
[/(\w+) (?:depends|依赖|需要|requires) (\w+)/gi, "depends_on"],
|
|
139
|
+
[/(\w+) (?:config|配置) (?:为|是)? (.+?)(?:[。,,.\n]|$)/gi, "config"],
|
|
140
|
+
[/(\w+) (?:file|path|文件|路径) (?:在|为|at) (.+?)(?:[。,,.\n]|$)/gi, "located_at"],
|
|
141
|
+
];
|
|
142
|
+
|
|
143
|
+
export function extractFacts(text: string, agent: string): Array<[string, string, string]> {
|
|
144
|
+
const facts: Array<[string, string, string]> = [];
|
|
145
|
+
for (const [pattern, pred] of RELATION_PATTERNS) {
|
|
146
|
+
let match;
|
|
147
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
148
|
+
const subj = match[1].trim().toLowerCase();
|
|
149
|
+
const obj = match[2].trim();
|
|
150
|
+
if (subj.length >= 2 && obj.length >= 2 && subj !== obj) {
|
|
151
|
+
facts.push([subj, pred, obj]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return facts;
|
|
156
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 向量语义搜索 — TF-IDF + Cosine similarity, zero dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Replaces n-gram Jaccard as the default semantic scorer.
|
|
5
|
+
* - IDF pre-computed from document corpus
|
|
6
|
+
* - Cosine similarity on TF-IDF vectors
|
|
7
|
+
* - CJK-aware tokenization (bigram for CJK, whitespace for ASCII)
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const idx = new VectorIndex();
|
|
11
|
+
* idx.addDocuments(docs);
|
|
12
|
+
* const results = idx.search("deploy script", 5);
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* ═══════════════════════════════════════
|
|
16
|
+
Tokenizer — CJK-aware
|
|
17
|
+
═══════════════════════════════════════ */
|
|
18
|
+
const CJK = /[一-鿿-ゟ가-]/;
|
|
19
|
+
|
|
20
|
+
function tokenize(text: string): string[] {
|
|
21
|
+
const tokens: string[] = [];
|
|
22
|
+
let i = 0;
|
|
23
|
+
while (i < text.length) {
|
|
24
|
+
if (CJK.test(text[i])) {
|
|
25
|
+
if (i + 1 < text.length && CJK.test(text[i + 1])) {
|
|
26
|
+
tokens.push(text.slice(i, i + 2)); i += 2;
|
|
27
|
+
} else {
|
|
28
|
+
tokens.push(text[i]); i++;
|
|
29
|
+
}
|
|
30
|
+
} else if (/[A-Za-z0-9_]/.test(text[i])) {
|
|
31
|
+
let j = i;
|
|
32
|
+
while (j < text.length && /[A-Za-z0-9_]/.test(text[j])) j++;
|
|
33
|
+
tokens.push(text.slice(i, j).toLowerCase()); i = j;
|
|
34
|
+
} else {
|
|
35
|
+
i++;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return tokens;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* ═══════════════════════════════════════
|
|
42
|
+
TF-IDF Vector computation
|
|
43
|
+
═══════════════════════════════════════ */
|
|
44
|
+
interface DocVector {
|
|
45
|
+
id: string;
|
|
46
|
+
tf: Map<string, number>;
|
|
47
|
+
norm: number;
|
|
48
|
+
content: string;
|
|
49
|
+
meta?: Record<string, any>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export class VectorIndex {
|
|
53
|
+
private docs: DocVector[] = [];
|
|
54
|
+
private idf: Map<string, number> = new Map();
|
|
55
|
+
private totalDocs = 0;
|
|
56
|
+
|
|
57
|
+
/** Add a document to the index. */
|
|
58
|
+
addDocument(id: string, content: string, meta?: Record<string, any>): void {
|
|
59
|
+
const tokens = tokenize(content);
|
|
60
|
+
const tf = new Map<string, number>();
|
|
61
|
+
for (const t of tokens) { tf.set(t, (tf.get(t) || 0) + 1); }
|
|
62
|
+
|
|
63
|
+
// Normalize by doc length
|
|
64
|
+
const tfIdf = new Map<string, number>();
|
|
65
|
+
let normSq = 0;
|
|
66
|
+
for (const [term, freq] of tf) {
|
|
67
|
+
const tfVal = freq / tokens.length;
|
|
68
|
+
const idfVal = this.idf.get(term) || 0;
|
|
69
|
+
const val = tfVal * Math.max(0.1, idfVal);
|
|
70
|
+
tfIdf.set(term, val);
|
|
71
|
+
normSq += val * val;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const norm = Math.sqrt(normSq);
|
|
75
|
+
this.docs.push({ id, tf: tfIdf, norm, content: content.slice(0, 500), meta });
|
|
76
|
+
this.totalDocs++;
|
|
77
|
+
|
|
78
|
+
// Update IDF
|
|
79
|
+
for (const term of tf.keys()) {
|
|
80
|
+
this.idf.set(term, Math.log((this.totalDocs + 1) / ((this.docFrequency(term) + 1))));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
addDocuments(docs: Array<{ id: string; content: string; meta?: Record<string, any> }>): void {
|
|
85
|
+
for (const d of docs) this.addDocument(d.id, d.content, d.meta);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private docFrequency(term: string): number {
|
|
89
|
+
let count = 0;
|
|
90
|
+
for (const d of this.docs) { if (d.tf.has(term)) count++; }
|
|
91
|
+
return count;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Search for documents similar to query. Returns [score, doc] pairs. */
|
|
95
|
+
search(query: string, topK: number = 5, minScore: number = 0.01): Array<[number, DocVector]> {
|
|
96
|
+
const queryTokens = tokenize(query);
|
|
97
|
+
const queryTf = new Map<string, number>();
|
|
98
|
+
for (const t of queryTokens) { queryTf.set(t, (queryTf.get(t) || 0) + 1); }
|
|
99
|
+
|
|
100
|
+
// Query vector
|
|
101
|
+
const qv = new Map<string, number>();
|
|
102
|
+
let qNormSq = 0;
|
|
103
|
+
for (const [term, freq] of queryTf) {
|
|
104
|
+
const tfVal = freq / queryTokens.length;
|
|
105
|
+
const idfVal = this.idf.get(term) || 0;
|
|
106
|
+
const val = tfVal * Math.max(0.1, idfVal);
|
|
107
|
+
qv.set(term, val);
|
|
108
|
+
qNormSq += val * val;
|
|
109
|
+
}
|
|
110
|
+
const qNorm = Math.sqrt(qNormSq);
|
|
111
|
+
if (qNorm === 0) return [];
|
|
112
|
+
|
|
113
|
+
// Cosine similarity against all docs
|
|
114
|
+
const scored: Array<[number, DocVector]> = [];
|
|
115
|
+
for (const doc of this.docs) {
|
|
116
|
+
if (doc.norm === 0) continue;
|
|
117
|
+
let dot = 0;
|
|
118
|
+
for (const [term, qVal] of qv) {
|
|
119
|
+
dot += qVal * (doc.tf.get(term) || 0);
|
|
120
|
+
}
|
|
121
|
+
const score = dot / (qNorm * doc.norm);
|
|
122
|
+
if (score >= minScore) scored.push([score, doc]);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
scored.sort((a, b) => b[0] - a[0]);
|
|
126
|
+
return scored.slice(0, topK);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** Remove a document by ID. */
|
|
130
|
+
removeDocument(id: string): void {
|
|
131
|
+
this.docs = this.docs.filter(d => d.id !== id);
|
|
132
|
+
this.totalDocs = this.docs.length;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
get size(): number { return this.docs.length; }
|
|
136
|
+
|
|
137
|
+
clear(): void { this.docs = []; this.idf.clear(); this.totalDocs = 0; }
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* ═══════════════════════════════════════
|
|
141
|
+
Singleton instance for memory recall
|
|
142
|
+
═══════════════════════════════════════ */
|
|
143
|
+
let globalIndex: VectorIndex | null = null;
|
|
144
|
+
|
|
145
|
+
export function getVectorIndex(): VectorIndex {
|
|
146
|
+
if (!globalIndex) globalIndex = new VectorIndex();
|
|
147
|
+
return globalIndex;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export function resetVectorIndex(): void {
|
|
151
|
+
globalIndex = new VectorIndex();
|
|
152
|
+
}
|