@sudocode-ai/local-server 0.1.7 → 0.1.9
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/README.md +6 -0
- package/dist/errors/agent-errors.d.ts +43 -0
- package/dist/errors/agent-errors.d.ts.map +1 -0
- package/dist/errors/agent-errors.js +69 -0
- package/dist/errors/agent-errors.js.map +1 -0
- package/dist/execution/adapters/claude-adapter.d.ts +63 -0
- package/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/claude-adapter.js +82 -0
- package/dist/execution/adapters/claude-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-adapter.d.ts +67 -0
- package/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/codex-adapter.js +183 -0
- package/dist/execution/adapters/codex-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-config-builder.d.ts +30 -0
- package/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/codex-config-builder.js +110 -0
- package/dist/execution/adapters/codex-config-builder.js.map +1 -0
- package/dist/execution/adapters/copilot-adapter.d.ts +94 -0
- package/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-adapter.js +163 -0
- package/dist/execution/adapters/copilot-adapter.js.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.js +125 -0
- package/dist/execution/adapters/copilot-config-builder.js.map +1 -0
- package/dist/execution/adapters/cursor-adapter.d.ts +66 -0
- package/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-adapter.js +121 -0
- package/dist/execution/adapters/cursor-adapter.js.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.js +49 -0
- package/dist/execution/adapters/cursor-config-builder.js.map +1 -0
- package/dist/execution/adapters/shared/config-presets.d.ts +102 -0
- package/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-presets.js +205 -0
- package/dist/execution/adapters/shared/config-presets.js.map +1 -0
- package/dist/execution/adapters/shared/config-utils.d.ts +95 -0
- package/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-utils.js +163 -0
- package/dist/execution/adapters/shared/config-utils.js.map +1 -0
- package/dist/execution/adapters/shared/index.d.ts +8 -0
- package/dist/execution/adapters/shared/index.d.ts.map +1 -0
- package/dist/execution/adapters/shared/index.js +8 -0
- package/dist/execution/adapters/shared/index.js.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts +153 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.js +652 -0
- package/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
- package/dist/execution/executors/executor-factory.d.ts +95 -0
- package/dist/execution/executors/executor-factory.d.ts.map +1 -0
- package/dist/execution/executors/executor-factory.js +120 -0
- package/dist/execution/executors/executor-factory.js.map +1 -0
- package/dist/execution/output/ag-ui-adapter.d.ts +0 -2
- package/dist/execution/output/ag-ui-adapter.d.ts.map +1 -1
- package/dist/execution/output/ag-ui-adapter.js +0 -2
- package/dist/execution/output/ag-ui-adapter.js.map +1 -1
- package/dist/execution/output/index.d.ts +0 -3
- package/dist/execution/output/index.d.ts.map +1 -1
- package/dist/execution/output/index.js +0 -2
- package/dist/execution/output/index.js.map +1 -1
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
- package/dist/execution/process/builders/claude.d.ts +24 -57
- package/dist/execution/process/builders/claude.d.ts.map +1 -1
- package/dist/execution/process/builders/claude.js +153 -19
- package/dist/execution/process/builders/claude.js.map +1 -1
- package/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
- package/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
- package/dist/execution/transport/ipc-transport-manager.js +104 -0
- package/dist/execution/transport/ipc-transport-manager.js.map +1 -0
- package/dist/execution/transport/transport-manager.d.ts.map +1 -1
- package/dist/execution/transport/transport-manager.js +3 -0
- package/dist/execution/transport/transport-manager.js.map +1 -1
- package/dist/execution/worktree/conflict-detector.d.ts +85 -0
- package/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
- package/dist/execution/worktree/conflict-detector.js +129 -0
- package/dist/execution/worktree/conflict-detector.js.map +1 -0
- package/dist/execution/worktree/git-cli.d.ts +9 -0
- package/dist/execution/worktree/git-cli.d.ts.map +1 -1
- package/dist/execution/worktree/git-cli.js +10 -0
- package/dist/execution/worktree/git-cli.js.map +1 -1
- package/dist/execution/worktree/git-sync-cli.d.ts +198 -0
- package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
- package/dist/execution/worktree/git-sync-cli.js +401 -0
- package/dist/execution/worktree/git-sync-cli.js.map +1 -0
- package/dist/execution/worktree/manager.d.ts +18 -0
- package/dist/execution/worktree/manager.d.ts.map +1 -1
- package/dist/execution/worktree/manager.js +9 -3
- package/dist/execution/worktree/manager.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +124 -229
- package/dist/index.js.map +1 -1
- package/dist/middleware/project-context.d.ts +37 -0
- package/dist/middleware/project-context.d.ts.map +1 -0
- package/dist/middleware/project-context.js +91 -0
- package/dist/middleware/project-context.js.map +1 -0
- package/dist/public/assets/index-DV9Tbujb.css +1 -0
- package/dist/public/assets/index-DcDX9-Ad.js +740 -0
- package/dist/public/assets/index-DcDX9-Ad.js.map +1 -0
- package/dist/public/assets/{react-vendor-ByUx1V_q.js → react-vendor-DiL5hC7l.js} +2 -2
- package/dist/public/assets/{react-vendor-ByUx1V_q.js.map → react-vendor-DiL5hC7l.js.map} +1 -1
- package/dist/public/assets/ui-vendor-B4WMPEfa.js +54 -0
- package/dist/public/assets/ui-vendor-B4WMPEfa.js.map +1 -0
- package/dist/public/index.html +4 -4
- package/dist/routes/agents.d.ts +3 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +62 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +25 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/editors.d.ts +15 -0
- package/dist/routes/editors.d.ts.map +1 -0
- package/dist/routes/editors.js +98 -0
- package/dist/routes/editors.js.map +1 -0
- package/dist/routes/executions-stream.d.ts +8 -5
- package/dist/routes/executions-stream.d.ts.map +1 -1
- package/dist/routes/executions-stream.js +10 -6
- package/dist/routes/executions-stream.js.map +1 -1
- package/dist/routes/executions.d.ts +6 -10
- package/dist/routes/executions.d.ts.map +1 -1
- package/dist/routes/executions.js +792 -37
- package/dist/routes/executions.js.map +1 -1
- package/dist/routes/feedback.d.ts +3 -2
- package/dist/routes/feedback.d.ts.map +1 -1
- package/dist/routes/feedback.js +12 -10
- package/dist/routes/feedback.js.map +1 -1
- package/dist/routes/files.d.ts +18 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +89 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/issues.d.ts +3 -2
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +19 -18
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/projects.d.ts +11 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +447 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/relationships.d.ts +3 -2
- package/dist/routes/relationships.d.ts.map +1 -1
- package/dist/routes/relationships.js +12 -10
- package/dist/routes/relationships.js.map +1 -1
- package/dist/routes/repo-info.d.ts +3 -0
- package/dist/routes/repo-info.d.ts.map +1 -0
- package/dist/routes/repo-info.js +203 -0
- package/dist/routes/repo-info.js.map +1 -0
- package/dist/routes/specs.d.ts +3 -2
- package/dist/routes/specs.d.ts.map +1 -1
- package/dist/routes/specs.js +19 -18
- package/dist/routes/specs.js.map +1 -1
- package/dist/routes/version.d.ts +3 -0
- package/dist/routes/version.d.ts.map +1 -0
- package/dist/routes/version.js +25 -0
- package/dist/routes/version.js.map +1 -0
- package/dist/services/agent-registry.d.ts +140 -0
- package/dist/services/agent-registry.d.ts.map +1 -0
- package/dist/services/agent-registry.js +272 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/editor-service.d.ts +57 -0
- package/dist/services/editor-service.d.ts.map +1 -0
- package/dist/services/editor-service.js +204 -0
- package/dist/services/editor-service.js.map +1 -0
- package/dist/services/execution-changes-service.d.ts +110 -0
- package/dist/services/execution-changes-service.d.ts.map +1 -0
- package/dist/services/execution-changes-service.js +700 -0
- package/dist/services/execution-changes-service.js.map +1 -0
- package/dist/services/execution-lifecycle.d.ts +1 -0
- package/dist/services/execution-lifecycle.d.ts.map +1 -1
- package/dist/services/execution-lifecycle.js +37 -7
- package/dist/services/execution-lifecycle.js.map +1 -1
- package/dist/services/execution-logs-store.d.ts +75 -0
- package/dist/services/execution-logs-store.d.ts.map +1 -1
- package/dist/services/execution-logs-store.js +142 -2
- package/dist/services/execution-logs-store.js.map +1 -1
- package/dist/services/execution-service.d.ts +82 -59
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +514 -469
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/execution-worker-pool.d.ts +116 -0
- package/dist/services/execution-worker-pool.d.ts.map +1 -0
- package/dist/services/execution-worker-pool.js +326 -0
- package/dist/services/execution-worker-pool.js.map +1 -0
- package/dist/services/executions.d.ts +3 -0
- package/dist/services/executions.d.ts.map +1 -1
- package/dist/services/executions.js +11 -17
- package/dist/services/executions.js.map +1 -1
- package/dist/services/export.d.ts +8 -2
- package/dist/services/export.d.ts.map +1 -1
- package/dist/services/export.js +29 -23
- package/dist/services/export.js.map +1 -1
- package/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
- package/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
- package/dist/services/file-search/git-ls-files-strategy.js +176 -0
- package/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
- package/dist/services/file-search/index.d.ts +9 -0
- package/dist/services/file-search/index.d.ts.map +1 -0
- package/dist/services/file-search/index.js +10 -0
- package/dist/services/file-search/index.js.map +1 -0
- package/dist/services/file-search/registry.d.ts +97 -0
- package/dist/services/file-search/registry.d.ts.map +1 -0
- package/dist/services/file-search/registry.js +140 -0
- package/dist/services/file-search/registry.js.map +1 -0
- package/dist/services/file-search/strategy.d.ts +58 -0
- package/dist/services/file-search/strategy.d.ts.map +1 -0
- package/dist/services/file-search/strategy.js +8 -0
- package/dist/services/file-search/strategy.js.map +1 -0
- package/dist/services/project-context.d.ts +69 -0
- package/dist/services/project-context.d.ts.map +1 -0
- package/dist/services/project-context.js +113 -0
- package/dist/services/project-context.js.map +1 -0
- package/dist/services/project-manager.d.ts +95 -0
- package/dist/services/project-manager.d.ts.map +1 -0
- package/dist/services/project-manager.js +388 -0
- package/dist/services/project-manager.js.map +1 -0
- package/dist/services/project-registry.d.ts +98 -0
- package/dist/services/project-registry.d.ts.map +1 -0
- package/dist/services/project-registry.js +289 -0
- package/dist/services/project-registry.js.map +1 -0
- package/dist/services/prompt-resolver.d.ts +97 -0
- package/dist/services/prompt-resolver.d.ts.map +1 -0
- package/dist/services/prompt-resolver.js +377 -0
- package/dist/services/prompt-resolver.js.map +1 -0
- package/dist/services/repo-info.d.ts +12 -0
- package/dist/services/repo-info.d.ts.map +1 -1
- package/dist/services/repo-info.js +46 -0
- package/dist/services/repo-info.js.map +1 -1
- package/dist/services/version-service.d.ts +14 -0
- package/dist/services/version-service.d.ts.map +1 -0
- package/dist/services/version-service.js +57 -0
- package/dist/services/version-service.js.map +1 -0
- package/dist/services/watcher.d.ts +3 -4
- package/dist/services/watcher.d.ts.map +1 -1
- package/dist/services/watcher.js +18 -35
- package/dist/services/watcher.js.map +1 -1
- package/dist/services/websocket.d.ts +30 -16
- package/dist/services/websocket.d.ts.map +1 -1
- package/dist/services/websocket.js +102 -37
- package/dist/services/websocket.js.map +1 -1
- package/dist/services/worktree-sync-service.d.ts +326 -0
- package/dist/services/worktree-sync-service.d.ts.map +1 -0
- package/dist/services/worktree-sync-service.js +1091 -0
- package/dist/services/worktree-sync-service.js.map +1 -0
- package/dist/types/editor.d.ts +49 -0
- package/dist/types/editor.d.ts.map +1 -0
- package/dist/types/editor.js +50 -0
- package/dist/types/editor.js.map +1 -0
- package/dist/types/project.d.ts +58 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +10 -0
- package/dist/types/project.js.map +1 -0
- package/dist/utils/executable-check.d.ts +36 -0
- package/dist/utils/executable-check.d.ts.map +1 -0
- package/dist/utils/executable-check.js +79 -0
- package/dist/utils/executable-check.js.map +1 -0
- package/dist/workers/execution-worker.d.ts +18 -0
- package/dist/workers/execution-worker.d.ts.map +1 -0
- package/dist/workers/execution-worker.js +340 -0
- package/dist/workers/execution-worker.js.map +1 -0
- package/dist/workers/worker-ipc.d.ts +84 -0
- package/dist/workers/worker-ipc.d.ts.map +1 -0
- package/dist/workers/worker-ipc.js +29 -0
- package/dist/workers/worker-ipc.js.map +1 -0
- package/package.json +6 -5
- package/dist/execution/output/ag-ui-integration.d.ts +0 -96
- package/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
- package/dist/execution/output/ag-ui-integration.js +0 -96
- package/dist/execution/output/ag-ui-integration.js.map +0 -1
- package/dist/execution/output/claude-code-output-processor.d.ts +0 -321
- package/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
- package/dist/execution/output/claude-code-output-processor.js +0 -769
- package/dist/execution/output/claude-code-output-processor.js.map +0 -1
- package/dist/public/assets/index-B3SEMufD.js +0 -580
- package/dist/public/assets/index-B3SEMufD.js.map +0 -1
- package/dist/public/assets/index-D2YGL3gX.css +0 -1
- package/dist/public/assets/ui-vendor-CotR6bx9.js +0 -54
- package/dist/public/assets/ui-vendor-CotR6bx9.js.map +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { Router } from "express";
|
|
2
|
+
import { getRepositoryInfo, getRepositoryBranches, } from "../services/repo-info.js";
|
|
3
|
+
import { GitSyncCli } from "../execution/worktree/git-sync-cli.js";
|
|
4
|
+
import { ConflictDetector } from "../execution/worktree/conflict-detector.js";
|
|
5
|
+
import * as fs from "fs";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
export function createRepoInfoRouter() {
|
|
8
|
+
const router = Router();
|
|
9
|
+
// Repository info endpoint - returns git repository information for current project
|
|
10
|
+
router.get("/", async (req, res) => {
|
|
11
|
+
try {
|
|
12
|
+
const repoInfo = await getRepositoryInfo(req.project.path);
|
|
13
|
+
res.status(200).json({
|
|
14
|
+
success: true,
|
|
15
|
+
data: repoInfo,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
const err = error;
|
|
20
|
+
if (err.message === "Not a git repository") {
|
|
21
|
+
res.status(404).json({
|
|
22
|
+
success: false,
|
|
23
|
+
data: null,
|
|
24
|
+
message: err.message,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.error("Failed to get repository info:", error);
|
|
29
|
+
res.status(500).json({
|
|
30
|
+
success: false,
|
|
31
|
+
data: null,
|
|
32
|
+
message: "Failed to get repository info",
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// Repository branches endpoint - returns list of all local branches
|
|
38
|
+
router.get("/branches", async (req, res) => {
|
|
39
|
+
try {
|
|
40
|
+
const branchInfo = await getRepositoryBranches(req.project.path);
|
|
41
|
+
res.status(200).json({
|
|
42
|
+
success: true,
|
|
43
|
+
data: branchInfo,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
const err = error;
|
|
48
|
+
if (err.message === "Not a git repository") {
|
|
49
|
+
res.status(404).json({
|
|
50
|
+
success: false,
|
|
51
|
+
data: null,
|
|
52
|
+
message: err.message,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.error("Failed to get repository branches:", error);
|
|
57
|
+
res.status(500).json({
|
|
58
|
+
success: false,
|
|
59
|
+
data: null,
|
|
60
|
+
message: "Failed to get repository branches",
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
// Worktrees endpoint - returns all worktrees that actually exist in .sudocode/worktrees/
|
|
66
|
+
router.get("/worktrees", (req, res) => {
|
|
67
|
+
try {
|
|
68
|
+
const db = req.project.db;
|
|
69
|
+
const repoPath = req.project.path;
|
|
70
|
+
const worktreesDir = path.join(repoPath, ".sudocode", "worktrees");
|
|
71
|
+
// Check if worktrees directory exists
|
|
72
|
+
if (!fs.existsSync(worktreesDir)) {
|
|
73
|
+
res.json({
|
|
74
|
+
success: true,
|
|
75
|
+
data: [],
|
|
76
|
+
});
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Read all directories in .sudocode/worktrees/
|
|
80
|
+
const worktreeDirs = fs
|
|
81
|
+
.readdirSync(worktreesDir, { withFileTypes: true })
|
|
82
|
+
.filter((dirent) => dirent.isDirectory())
|
|
83
|
+
.map((dirent) => dirent.name);
|
|
84
|
+
// For each worktree directory, try to find corresponding execution in database
|
|
85
|
+
const worktrees = worktreeDirs
|
|
86
|
+
.map((dirName) => {
|
|
87
|
+
const worktreePath = path.join(worktreesDir, dirName);
|
|
88
|
+
// Find execution by worktree_path
|
|
89
|
+
const execution = db
|
|
90
|
+
.prepare(`SELECT * FROM executions
|
|
91
|
+
WHERE worktree_path = ?
|
|
92
|
+
LIMIT 1`)
|
|
93
|
+
.get(worktreePath);
|
|
94
|
+
// If execution found, return it; otherwise return basic info
|
|
95
|
+
if (execution) {
|
|
96
|
+
return execution;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// Worktree exists but no execution record - return minimal info
|
|
100
|
+
return {
|
|
101
|
+
id: null,
|
|
102
|
+
worktree_path: worktreePath,
|
|
103
|
+
branch_name: dirName,
|
|
104
|
+
status: "orphaned",
|
|
105
|
+
created_at: null,
|
|
106
|
+
updated_at: null,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
.filter((wt) => wt !== null);
|
|
111
|
+
res.json({
|
|
112
|
+
success: true,
|
|
113
|
+
data: worktrees,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
console.error("Error listing worktrees:", error);
|
|
118
|
+
res.status(500).json({
|
|
119
|
+
success: false,
|
|
120
|
+
data: null,
|
|
121
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
122
|
+
message: "Failed to list worktrees",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
// Worktree sync preview endpoint - Preview sync for a worktree
|
|
127
|
+
router.post("/worktrees/preview", async (req, res) => {
|
|
128
|
+
try {
|
|
129
|
+
const projectPath = req.project.path;
|
|
130
|
+
const { worktreePath, branchName, targetBranch } = req.body;
|
|
131
|
+
// Validate inputs
|
|
132
|
+
if (!worktreePath || !branchName || !targetBranch) {
|
|
133
|
+
res.status(400).json({
|
|
134
|
+
success: false,
|
|
135
|
+
error: "Missing required parameters",
|
|
136
|
+
message: "worktreePath, branchName, and targetBranch are required",
|
|
137
|
+
});
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Check worktree exists
|
|
141
|
+
if (!fs.existsSync(worktreePath)) {
|
|
142
|
+
res.status(404).json({
|
|
143
|
+
success: false,
|
|
144
|
+
error: "Worktree not found",
|
|
145
|
+
message: `Worktree does not exist at path: ${worktreePath}`,
|
|
146
|
+
});
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Create git clients for main repo and worktree
|
|
150
|
+
const mainGitSync = new GitSyncCli(projectPath);
|
|
151
|
+
const worktreeGitSync = new GitSyncCli(worktreePath);
|
|
152
|
+
const worktreeConflictDetector = new ConflictDetector(worktreePath);
|
|
153
|
+
// Find merge base
|
|
154
|
+
const mergeBase = mainGitSync.getMergeBase(branchName, targetBranch);
|
|
155
|
+
// Get commit list
|
|
156
|
+
const commits = mainGitSync.getCommitList(mergeBase, branchName);
|
|
157
|
+
// Get diff summary
|
|
158
|
+
const diff = mainGitSync.getDiff(mergeBase, branchName);
|
|
159
|
+
// Detect conflicts
|
|
160
|
+
const conflicts = worktreeConflictDetector.detectConflicts(branchName, targetBranch);
|
|
161
|
+
// Check for uncommitted changes
|
|
162
|
+
const uncommittedFiles = worktreeGitSync.getUncommittedFiles();
|
|
163
|
+
const uncommittedStats = worktreeGitSync.getUncommittedStats();
|
|
164
|
+
const uncommittedJSONL = uncommittedFiles.filter((file) => file.endsWith(".jsonl") &&
|
|
165
|
+
(file.includes(".sudocode/") || file.startsWith(".sudocode/")));
|
|
166
|
+
// Generate warnings
|
|
167
|
+
const warnings = [];
|
|
168
|
+
if (conflicts.codeConflicts.length > 0) {
|
|
169
|
+
warnings.push(`${conflicts.codeConflicts.length} code conflict(s) detected. Manual resolution required.`);
|
|
170
|
+
}
|
|
171
|
+
if (uncommittedJSONL.length > 0) {
|
|
172
|
+
warnings.push(`${uncommittedJSONL.length} uncommitted JSONL file(s) will be included in sync.`);
|
|
173
|
+
}
|
|
174
|
+
// Determine if sync can proceed
|
|
175
|
+
const canSync = conflicts.codeConflicts.length === 0;
|
|
176
|
+
const preview = {
|
|
177
|
+
canSync,
|
|
178
|
+
conflicts,
|
|
179
|
+
diff,
|
|
180
|
+
commits,
|
|
181
|
+
mergeBase,
|
|
182
|
+
uncommittedJSONLChanges: uncommittedJSONL,
|
|
183
|
+
uncommittedChanges: uncommittedStats,
|
|
184
|
+
executionStatus: null, // Not execution-specific
|
|
185
|
+
warnings,
|
|
186
|
+
};
|
|
187
|
+
res.json({
|
|
188
|
+
success: true,
|
|
189
|
+
data: preview,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
console.error("Failed to preview worktree sync:", error);
|
|
194
|
+
res.status(500).json({
|
|
195
|
+
success: false,
|
|
196
|
+
error: "Failed to preview worktree sync",
|
|
197
|
+
message: error instanceof Error ? error.message : String(error),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
return router;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=repo-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-info.js","sourceRoot":"","sources":["../../src/routes/repo-info.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/specs.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Specs API routes (mapped to /api/specs)
|
|
3
|
+
*
|
|
4
|
+
* Note: All routes require X-Project-ID header via requireProject() middleware
|
|
3
5
|
*/
|
|
4
6
|
import { Router } from "express";
|
|
5
|
-
|
|
6
|
-
export declare function createSpecsRouter(db: Database.Database): Router;
|
|
7
|
+
export declare function createSpecsRouter(): Router;
|
|
7
8
|
//# sourceMappingURL=specs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/routes/specs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/routes/specs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAapD,wBAAgB,iBAAiB,IAAI,MAAM,CAgS1C"}
|
package/dist/routes/specs.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Specs API routes (mapped to /api/specs)
|
|
3
|
+
*
|
|
4
|
+
* Note: All routes require X-Project-ID header via requireProject() middleware
|
|
3
5
|
*/
|
|
4
6
|
import { Router } from "express";
|
|
5
7
|
import { getAllSpecs, getSpecById, createNewSpec, updateExistingSpec, deleteExistingSpec, } from "../services/specs.js";
|
|
6
8
|
import { generateSpecId } from "@sudocode-ai/cli/dist/id-generator.js";
|
|
7
9
|
import { broadcastSpecUpdate } from "../services/websocket.js";
|
|
8
|
-
import { getSudocodeDir } from "../utils/sudocode-dir.js";
|
|
9
10
|
import { triggerExport, syncEntityToMarkdown } from "../services/export.js";
|
|
10
11
|
import * as path from "path";
|
|
11
|
-
export function createSpecsRouter(
|
|
12
|
+
export function createSpecsRouter() {
|
|
12
13
|
const router = Router();
|
|
13
14
|
/**
|
|
14
15
|
* GET /api/specs - List all specs
|
|
@@ -31,7 +32,7 @@ export function createSpecsRouter(db) {
|
|
|
31
32
|
if (req.query.offset) {
|
|
32
33
|
options.offset = parseInt(req.query.offset, 10);
|
|
33
34
|
}
|
|
34
|
-
const specs = getAllSpecs(db, options);
|
|
35
|
+
const specs = getAllSpecs(req.project.db, options);
|
|
35
36
|
res.json({
|
|
36
37
|
success: true,
|
|
37
38
|
data: specs,
|
|
@@ -53,7 +54,7 @@ export function createSpecsRouter(db) {
|
|
|
53
54
|
router.get("/:id", (req, res) => {
|
|
54
55
|
try {
|
|
55
56
|
const { id } = req.params;
|
|
56
|
-
const spec = getSpecById(db, id);
|
|
57
|
+
const spec = getSpecById(req.project.db, id);
|
|
57
58
|
if (!spec) {
|
|
58
59
|
res.status(404).json({
|
|
59
60
|
success: false,
|
|
@@ -101,12 +102,12 @@ export function createSpecsRouter(db) {
|
|
|
101
102
|
return;
|
|
102
103
|
}
|
|
103
104
|
// Generate new spec ID
|
|
104
|
-
const outputDir =
|
|
105
|
-
const { id, uuid } = generateSpecId(db, outputDir);
|
|
105
|
+
const outputDir = req.project.sudocodeDir;
|
|
106
|
+
const { id, uuid } = generateSpecId(req.project.db, outputDir);
|
|
106
107
|
// Generate file path for the spec
|
|
107
108
|
const file_path = path.join(outputDir, "specs", `${id}.md`);
|
|
108
109
|
// Create spec using CLI operation
|
|
109
|
-
const spec = createNewSpec(db, {
|
|
110
|
+
const spec = createNewSpec(req.project.db, {
|
|
110
111
|
id,
|
|
111
112
|
uuid,
|
|
112
113
|
title,
|
|
@@ -116,13 +117,13 @@ export function createSpecsRouter(db) {
|
|
|
116
117
|
parent_id: parent_id || undefined,
|
|
117
118
|
});
|
|
118
119
|
// Trigger export to JSONL files
|
|
119
|
-
triggerExport(db);
|
|
120
|
+
triggerExport(req.project.db, req.project.sudocodeDir);
|
|
120
121
|
// Sync this specific spec to its markdown file (don't wait for it)
|
|
121
|
-
syncEntityToMarkdown(db, spec.id, "spec").catch((error) => {
|
|
122
|
+
syncEntityToMarkdown(req.project.db, spec.id, "spec", req.project.sudocodeDir).catch((error) => {
|
|
122
123
|
console.error(`Failed to sync spec ${spec.id} to markdown:`, error);
|
|
123
124
|
});
|
|
124
125
|
// Broadcast spec creation to WebSocket clients
|
|
125
|
-
broadcastSpecUpdate(spec.id, "created", spec);
|
|
126
|
+
broadcastSpecUpdate(req.project.id, spec.id, "created", spec);
|
|
126
127
|
res.status(201).json({
|
|
127
128
|
success: true,
|
|
128
129
|
data: spec,
|
|
@@ -184,15 +185,15 @@ export function createSpecsRouter(db) {
|
|
|
184
185
|
updateInput.archived_at = archived ? new Date().toISOString() : null;
|
|
185
186
|
}
|
|
186
187
|
// Update spec using CLI operation
|
|
187
|
-
const spec = updateExistingSpec(db, id, updateInput);
|
|
188
|
+
const spec = updateExistingSpec(req.project.db, id, updateInput);
|
|
188
189
|
// Trigger export to JSONL files
|
|
189
|
-
triggerExport(db);
|
|
190
|
+
triggerExport(req.project.db, req.project.sudocodeDir);
|
|
190
191
|
// Sync this specific spec to its markdown file (don't wait for it)
|
|
191
|
-
syncEntityToMarkdown(db, spec.id, "spec").catch((error) => {
|
|
192
|
+
syncEntityToMarkdown(req.project.db, spec.id, "spec", req.project.sudocodeDir).catch((error) => {
|
|
192
193
|
console.error(`Failed to sync spec ${spec.id} to markdown:`, error);
|
|
193
194
|
});
|
|
194
195
|
// Broadcast spec update to WebSocket clients
|
|
195
|
-
broadcastSpecUpdate(spec.id, "updated", spec);
|
|
196
|
+
broadcastSpecUpdate(req.project.id, spec.id, "updated", spec);
|
|
196
197
|
res.json({
|
|
197
198
|
success: true,
|
|
198
199
|
data: spec,
|
|
@@ -224,7 +225,7 @@ export function createSpecsRouter(db) {
|
|
|
224
225
|
try {
|
|
225
226
|
const { id } = req.params;
|
|
226
227
|
// Check if spec exists first
|
|
227
|
-
const existingSpec = getSpecById(db, id);
|
|
228
|
+
const existingSpec = getSpecById(req.project.db, id);
|
|
228
229
|
if (!existingSpec) {
|
|
229
230
|
res.status(404).json({
|
|
230
231
|
success: false,
|
|
@@ -234,12 +235,12 @@ export function createSpecsRouter(db) {
|
|
|
234
235
|
return;
|
|
235
236
|
}
|
|
236
237
|
// Delete spec using CLI operation
|
|
237
|
-
const deleted = deleteExistingSpec(db, id);
|
|
238
|
+
const deleted = deleteExistingSpec(req.project.db, id);
|
|
238
239
|
if (deleted) {
|
|
239
240
|
// Trigger export to JSONL files
|
|
240
|
-
triggerExport(db);
|
|
241
|
+
triggerExport(req.project.db, req.project.sudocodeDir);
|
|
241
242
|
// Broadcast spec deletion to WebSocket clients
|
|
242
|
-
broadcastSpecUpdate(id, "deleted", { id });
|
|
243
|
+
broadcastSpecUpdate(req.project.id, id, "deleted", { id });
|
|
243
244
|
res.json({
|
|
244
245
|
success: true,
|
|
245
246
|
data: {
|
package/dist/routes/specs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/routes/specs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/routes/specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/routes/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAGpD,wBAAgB,mBAAmB,IAAI,MAAM,CAsB5C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Router } from "express";
|
|
2
|
+
import { getVersionInfo } from "../services/version-service.js";
|
|
3
|
+
export function createVersionRouter() {
|
|
4
|
+
const router = Router();
|
|
5
|
+
// Version endpoint - returns versions of all packages
|
|
6
|
+
router.get("/", (_req, res) => {
|
|
7
|
+
try {
|
|
8
|
+
const versions = getVersionInfo();
|
|
9
|
+
res.status(200).json({
|
|
10
|
+
success: true,
|
|
11
|
+
data: versions,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error("Failed to read version information:", error);
|
|
16
|
+
res.status(500).json({
|
|
17
|
+
success: false,
|
|
18
|
+
data: null,
|
|
19
|
+
message: "Failed to read version information",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return router;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/routes/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,sDAAsD;IACtD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,oCAAoC;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Registry Service
|
|
3
|
+
*
|
|
4
|
+
* Centralized service for managing agent adapters and providing agent discovery.
|
|
5
|
+
* Wraps the agent-execution-engine's AgentRegistry with sudocode-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { IAgentAdapter, AgentMetadata } from "agent-execution-engine/agents";
|
|
8
|
+
import type { AgentType } from "@sudocode-ai/types/agents";
|
|
9
|
+
import { type VerificationResult } from "../utils/executable-check.js";
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when an agent is not found in the registry
|
|
12
|
+
*/
|
|
13
|
+
export declare class AgentNotFoundError extends Error {
|
|
14
|
+
constructor(agentType: string);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Error thrown when attempting to use an unimplemented agent
|
|
18
|
+
*/
|
|
19
|
+
export declare class AgentNotImplementedError extends Error {
|
|
20
|
+
constructor(agentType: string);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Agent metadata with implementation status
|
|
24
|
+
*/
|
|
25
|
+
export interface AgentInfo extends AgentMetadata {
|
|
26
|
+
/** Whether the agent is fully implemented (vs. stub) */
|
|
27
|
+
implemented: boolean;
|
|
28
|
+
/** Whether the agent executable is available on the system */
|
|
29
|
+
available?: boolean;
|
|
30
|
+
/** Path to the agent executable if found */
|
|
31
|
+
executablePath?: string;
|
|
32
|
+
/** Error message if verification failed */
|
|
33
|
+
verificationError?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare class AgentRegistryService {
|
|
36
|
+
private registry;
|
|
37
|
+
private implementedAgents;
|
|
38
|
+
private initialized;
|
|
39
|
+
/**
|
|
40
|
+
* Map of agent types to their default executable names
|
|
41
|
+
*/
|
|
42
|
+
private agentExecutables;
|
|
43
|
+
/**
|
|
44
|
+
* Cache for verification results
|
|
45
|
+
* Key: agent type, Value: cached verification result with timestamp
|
|
46
|
+
*/
|
|
47
|
+
private verificationCache;
|
|
48
|
+
/**
|
|
49
|
+
* Cache TTL in milliseconds (default: 24 hours)
|
|
50
|
+
* Set to a very long duration since agent installations rarely change
|
|
51
|
+
*/
|
|
52
|
+
private cacheTTL;
|
|
53
|
+
constructor();
|
|
54
|
+
/**
|
|
55
|
+
* Initialize the registry by registering all agent adapters
|
|
56
|
+
* Called automatically on first use (lazy initialization)
|
|
57
|
+
*/
|
|
58
|
+
private initialize;
|
|
59
|
+
/**
|
|
60
|
+
* Get all available agents with their metadata and implementation status
|
|
61
|
+
*
|
|
62
|
+
* @returns Array of agent information
|
|
63
|
+
*/
|
|
64
|
+
getAvailableAgents(): AgentInfo[];
|
|
65
|
+
/**
|
|
66
|
+
* Get an agent adapter by type
|
|
67
|
+
*
|
|
68
|
+
* @param agentType - The agent type to retrieve
|
|
69
|
+
* @returns The agent adapter
|
|
70
|
+
* @throws {AgentNotFoundError} If agent is not registered
|
|
71
|
+
*/
|
|
72
|
+
getAdapter(agentType: AgentType): IAgentAdapter;
|
|
73
|
+
/**
|
|
74
|
+
* Check if an agent is fully implemented
|
|
75
|
+
*
|
|
76
|
+
* @param agentType - The agent type to check
|
|
77
|
+
* @returns True if the agent is implemented, false if it's a stub
|
|
78
|
+
*/
|
|
79
|
+
isAgentImplemented(agentType: AgentType): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Check if an agent is registered in the registry
|
|
82
|
+
*
|
|
83
|
+
* @param agentType - The agent type to check
|
|
84
|
+
* @returns True if the agent is registered
|
|
85
|
+
*/
|
|
86
|
+
hasAgent(agentType: AgentType): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Mark an agent as implemented
|
|
89
|
+
* Used when upgrading a stub adapter to a full implementation
|
|
90
|
+
*
|
|
91
|
+
* @param agentType - The agent type to mark as implemented
|
|
92
|
+
*/
|
|
93
|
+
markAsImplemented(agentType: AgentType): void;
|
|
94
|
+
/**
|
|
95
|
+
* Check if cached verification is still valid
|
|
96
|
+
*
|
|
97
|
+
* @param agentType - The agent type to check
|
|
98
|
+
* @returns Cached result if valid, undefined otherwise
|
|
99
|
+
*/
|
|
100
|
+
private getCachedVerification;
|
|
101
|
+
/**
|
|
102
|
+
* Cache a verification result
|
|
103
|
+
*
|
|
104
|
+
* @param agentType - The agent type
|
|
105
|
+
* @param result - The verification result to cache
|
|
106
|
+
*/
|
|
107
|
+
private cacheVerification;
|
|
108
|
+
/**
|
|
109
|
+
* Clear verification cache for a specific agent or all agents
|
|
110
|
+
*
|
|
111
|
+
* @param agentType - Optional agent type to clear. If not provided, clears all cache.
|
|
112
|
+
*/
|
|
113
|
+
clearVerificationCache(agentType?: AgentType): void;
|
|
114
|
+
/**
|
|
115
|
+
* Verify if a specific agent's executable is available on the system
|
|
116
|
+
* Results are cached for performance
|
|
117
|
+
*
|
|
118
|
+
* @param agentType - The agent type to verify
|
|
119
|
+
* @param skipCache - If true, bypass cache and perform fresh verification
|
|
120
|
+
* @returns Promise<VerificationResult>
|
|
121
|
+
*/
|
|
122
|
+
verifyAgent(agentType: AgentType, skipCache?: boolean): Promise<VerificationResult>;
|
|
123
|
+
/**
|
|
124
|
+
* Verify all implemented agents and return their availability status
|
|
125
|
+
*
|
|
126
|
+
* @returns Promise<Map<string, VerificationResult>>
|
|
127
|
+
*/
|
|
128
|
+
verifyAllAgents(): Promise<Map<string, VerificationResult>>;
|
|
129
|
+
/**
|
|
130
|
+
* Get all available agents with their verification status included
|
|
131
|
+
*
|
|
132
|
+
* @returns Promise<AgentInfo[]> - Array of agent information with availability status
|
|
133
|
+
*/
|
|
134
|
+
getAvailableAgentsWithVerification(): Promise<AgentInfo[]>;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Global agent registry service instance
|
|
138
|
+
*/
|
|
139
|
+
export declare const agentRegistryService: AgentRegistryService;
|
|
140
|
+
//# sourceMappingURL=agent-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/services/agent-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,SAAS,EAAE,MAAM;CAI9B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,SAAS,EAAE,MAAM;CAI9B;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAgBD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,iBAAiB,CAKtB;IACH,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAKtB;IAEF;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAyC;IAElE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAuB;;IAMvC;;;OAGG;IACH,OAAO,CAAC,UAAU;IAclB;;;;OAIG;IACH,kBAAkB,IAAI,SAAS,EAAE;IAQjC;;;;;;OAMG;IACH,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa;IAS/C;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAKjD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAKvC;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAQ7C;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAQnD;;;;;;;OAOG;IACG,WAAW,CACf,SAAS,EAAE,SAAS,EACpB,SAAS,UAAQ,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAgD9B;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAoBjE;;;;OAIG;IACG,kCAAkC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAejE;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|