@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,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt resolver service
|
|
3
|
+
*
|
|
4
|
+
* Resolves entity references and file mentions in agent prompts:
|
|
5
|
+
* - Injects [[s-xxxxx]] or @s-xxxxx spec references with markdown content
|
|
6
|
+
* - Injects [[i-xxxxx]] or @i-xxxxx issue references with markdown content
|
|
7
|
+
* - Tracks @file mentions but leaves them for agent to handle
|
|
8
|
+
*/
|
|
9
|
+
import { getSpecById } from "./specs.js";
|
|
10
|
+
import { getIssueById } from "./issues.js";
|
|
11
|
+
/**
|
|
12
|
+
* PromptResolver service
|
|
13
|
+
*
|
|
14
|
+
* Extracts and resolves entity references in agent prompts
|
|
15
|
+
*/
|
|
16
|
+
export class PromptResolver {
|
|
17
|
+
db;
|
|
18
|
+
constructor(db) {
|
|
19
|
+
this.db = db;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve all references in a prompt
|
|
23
|
+
*
|
|
24
|
+
* @param prompt - The raw prompt with [[entity-id]], @entity-id, and @file references
|
|
25
|
+
* @param alreadyExpandedIds - Optional set of entity IDs that were already expanded in parent executions
|
|
26
|
+
* @param implicitIssueId - Optional issue ID to automatically include even if not mentioned in prompt (for issue-based executions)
|
|
27
|
+
* @returns Resolution result with resolved prompt, references, and errors
|
|
28
|
+
*/
|
|
29
|
+
async resolve(prompt, alreadyExpandedIds = new Set(), implicitIssueId) {
|
|
30
|
+
const references = [];
|
|
31
|
+
const errors = [];
|
|
32
|
+
const expandedEntityIds = [];
|
|
33
|
+
// Extract all references (order matters - extract entity IDs first)
|
|
34
|
+
const specRefs = this.extractSpecReferences(prompt);
|
|
35
|
+
const issueRefs = this.extractIssueReferences(prompt);
|
|
36
|
+
// Extract entity IDs for filtering file mentions
|
|
37
|
+
const entityIds = new Set([
|
|
38
|
+
...specRefs.map((r) => r.id),
|
|
39
|
+
...issueRefs.map((r) => r.id),
|
|
40
|
+
]);
|
|
41
|
+
const fileRefs = this.extractFileMentions(prompt, entityIds);
|
|
42
|
+
// Track all references
|
|
43
|
+
references.push(...fileRefs);
|
|
44
|
+
// Resolve and inject specs (replace inline)
|
|
45
|
+
let resolvedPrompt = prompt;
|
|
46
|
+
for (const ref of specRefs) {
|
|
47
|
+
// Skip if already expanded in parent execution
|
|
48
|
+
if (alreadyExpandedIds.has(ref.id)) {
|
|
49
|
+
ref.found = true;
|
|
50
|
+
references.push(ref);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const spec = getSpecById(this.db, ref.id);
|
|
54
|
+
if (spec) {
|
|
55
|
+
ref.found = true;
|
|
56
|
+
resolvedPrompt = this.replaceReference(resolvedPrompt, ref.id, this.formatSpec(spec));
|
|
57
|
+
expandedEntityIds.push(ref.id);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
ref.found = false;
|
|
61
|
+
ref.error = `Spec ${ref.id} not found`;
|
|
62
|
+
errors.push(ref.error);
|
|
63
|
+
}
|
|
64
|
+
references.push(ref);
|
|
65
|
+
}
|
|
66
|
+
// Resolve issues (keep reference, append content at end)
|
|
67
|
+
const issueAppendixes = [];
|
|
68
|
+
for (const ref of issueRefs) {
|
|
69
|
+
// Skip if already expanded in parent execution
|
|
70
|
+
if (alreadyExpandedIds.has(ref.id)) {
|
|
71
|
+
ref.found = true;
|
|
72
|
+
references.push(ref);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const issue = getIssueById(this.db, ref.id);
|
|
76
|
+
if (issue) {
|
|
77
|
+
ref.found = true;
|
|
78
|
+
// Don't replace the reference - append content at end instead
|
|
79
|
+
issueAppendixes.push(`\n\nIssue ${ref.id}:\n${this.formatIssue(issue)}`);
|
|
80
|
+
expandedEntityIds.push(ref.id);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
ref.found = false;
|
|
84
|
+
ref.error = `Issue ${ref.id} not found`;
|
|
85
|
+
errors.push(ref.error);
|
|
86
|
+
}
|
|
87
|
+
references.push(ref);
|
|
88
|
+
}
|
|
89
|
+
// If an implicit issue ID is provided (for issue-based executions),
|
|
90
|
+
// automatically include it even if not mentioned in the prompt
|
|
91
|
+
if (implicitIssueId && !alreadyExpandedIds.has(implicitIssueId)) {
|
|
92
|
+
// Check if it's already in the issueRefs (explicitly mentioned)
|
|
93
|
+
const alreadyMentioned = issueRefs.some((ref) => ref.id === implicitIssueId);
|
|
94
|
+
if (!alreadyMentioned) {
|
|
95
|
+
const issue = getIssueById(this.db, implicitIssueId);
|
|
96
|
+
if (issue) {
|
|
97
|
+
// Add implicit issue reference
|
|
98
|
+
references.push({
|
|
99
|
+
type: "issue",
|
|
100
|
+
id: implicitIssueId,
|
|
101
|
+
found: true,
|
|
102
|
+
});
|
|
103
|
+
// Append content at the end
|
|
104
|
+
issueAppendixes.push(`\n\nIssue ${implicitIssueId}:\n${this.formatIssue(issue)}`);
|
|
105
|
+
expandedEntityIds.push(implicitIssueId);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const error = `Implicit issue ${implicitIssueId} not found`;
|
|
109
|
+
errors.push(error);
|
|
110
|
+
references.push({
|
|
111
|
+
type: "issue",
|
|
112
|
+
id: implicitIssueId,
|
|
113
|
+
found: false,
|
|
114
|
+
error,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Append all issue contents at the end
|
|
120
|
+
if (issueAppendixes.length > 0) {
|
|
121
|
+
resolvedPrompt += issueAppendixes.join("");
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
resolvedPrompt,
|
|
125
|
+
references,
|
|
126
|
+
errors,
|
|
127
|
+
expandedEntityIds,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Extract spec references from prompt
|
|
132
|
+
* Supports two patterns:
|
|
133
|
+
* - [[s-xxxxx]] (bracket syntax)
|
|
134
|
+
* - @s-xxxxx (@ mention syntax)
|
|
135
|
+
*/
|
|
136
|
+
extractSpecReferences(prompt) {
|
|
137
|
+
const refs = [];
|
|
138
|
+
// Extract bracket syntax: [[s-xxxxx]]
|
|
139
|
+
const bracketPattern = /\[\[(s-[a-z0-9]+)\]\]/gi;
|
|
140
|
+
const bracketMatches = prompt.matchAll(bracketPattern);
|
|
141
|
+
for (const match of bracketMatches) {
|
|
142
|
+
const id = match[1].toLowerCase();
|
|
143
|
+
if (!refs.some((r) => r.id === id)) {
|
|
144
|
+
refs.push({
|
|
145
|
+
type: "spec",
|
|
146
|
+
id,
|
|
147
|
+
found: false,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Extract @ mention syntax: @s-xxxxx
|
|
152
|
+
const mentionPattern = /@(s-[a-z0-9]+)(?=\s|$|[^\w-])/gi;
|
|
153
|
+
const mentionMatches = prompt.matchAll(mentionPattern);
|
|
154
|
+
for (const match of mentionMatches) {
|
|
155
|
+
const id = match[1].toLowerCase();
|
|
156
|
+
if (!refs.some((r) => r.id === id)) {
|
|
157
|
+
refs.push({
|
|
158
|
+
type: "spec",
|
|
159
|
+
id,
|
|
160
|
+
found: false,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return refs;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Extract issue references from prompt
|
|
168
|
+
* Supports two patterns:
|
|
169
|
+
* - [[i-xxxxx]] (bracket syntax)
|
|
170
|
+
* - @i-xxxxx (@ mention syntax)
|
|
171
|
+
*/
|
|
172
|
+
extractIssueReferences(prompt) {
|
|
173
|
+
const refs = [];
|
|
174
|
+
// Extract bracket syntax: [[i-xxxxx]]
|
|
175
|
+
const bracketPattern = /\[\[(i-[a-z0-9]+)\]\]/gi;
|
|
176
|
+
const bracketMatches = prompt.matchAll(bracketPattern);
|
|
177
|
+
for (const match of bracketMatches) {
|
|
178
|
+
const id = match[1].toLowerCase();
|
|
179
|
+
if (!refs.some((r) => r.id === id)) {
|
|
180
|
+
refs.push({
|
|
181
|
+
type: "issue",
|
|
182
|
+
id,
|
|
183
|
+
found: false,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Extract @ mention syntax: @i-xxxxx
|
|
188
|
+
const mentionPattern = /@(i-[a-z0-9]+)(?=\s|$|[^\w-])/gi;
|
|
189
|
+
const mentionMatches = prompt.matchAll(mentionPattern);
|
|
190
|
+
for (const match of mentionMatches) {
|
|
191
|
+
const id = match[1].toLowerCase();
|
|
192
|
+
if (!refs.some((r) => r.id === id)) {
|
|
193
|
+
refs.push({
|
|
194
|
+
type: "issue",
|
|
195
|
+
id,
|
|
196
|
+
found: false,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return refs;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Extract file mentions from prompt
|
|
204
|
+
* Pattern: @filepath (but not @s-xxxxx or @i-xxxxx)
|
|
205
|
+
*
|
|
206
|
+
* Note: File mentions are tracked but not resolved (agent handles them)
|
|
207
|
+
*/
|
|
208
|
+
extractFileMentions(prompt, entityIds) {
|
|
209
|
+
const pattern = /@([^\s@]+)/g;
|
|
210
|
+
const matches = prompt.matchAll(pattern);
|
|
211
|
+
const refs = [];
|
|
212
|
+
for (const match of matches) {
|
|
213
|
+
let path = match[1];
|
|
214
|
+
// Remove trailing punctuation (period, comma, etc.)
|
|
215
|
+
path = path.replace(/[.,;:!?]+$/, "");
|
|
216
|
+
// Skip if it's a spec or issue ID (already handled)
|
|
217
|
+
if (entityIds.has(path.toLowerCase())) {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
// Avoid duplicates
|
|
221
|
+
if (!refs.some((r) => r.id === path)) {
|
|
222
|
+
refs.push({
|
|
223
|
+
type: "file",
|
|
224
|
+
id: path,
|
|
225
|
+
found: true, // Files are not resolved here, just tracked
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return refs;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Replace a reference with formatted content
|
|
233
|
+
* Handles both [[id]] and @id syntaxes
|
|
234
|
+
*/
|
|
235
|
+
replaceReference(prompt, id, content) {
|
|
236
|
+
// Replace bracket syntax: [[id]]
|
|
237
|
+
const bracketPattern = new RegExp(`\\[\\[${id}\\]\\]`, "gi");
|
|
238
|
+
prompt = prompt.replace(bracketPattern, content);
|
|
239
|
+
// Replace @ mention syntax: @id
|
|
240
|
+
const mentionPattern = new RegExp(`@${id}(?=\\s|$|[^\\w-])`, "gi");
|
|
241
|
+
prompt = prompt.replace(mentionPattern, content);
|
|
242
|
+
return prompt;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Format spec - returns all information shown in CLI show command
|
|
246
|
+
*/
|
|
247
|
+
formatSpec(spec) {
|
|
248
|
+
const parts = [];
|
|
249
|
+
// Header
|
|
250
|
+
parts.push(`**${spec.id}: ${spec.title}**`);
|
|
251
|
+
parts.push("");
|
|
252
|
+
// Metadata
|
|
253
|
+
parts.push(`**Priority:** ${spec.priority}`);
|
|
254
|
+
if (spec.file_path) {
|
|
255
|
+
parts.push(`**File:** ${spec.file_path}`);
|
|
256
|
+
}
|
|
257
|
+
if (spec.parent_id) {
|
|
258
|
+
parts.push(`**Parent:** ${spec.parent_id}`);
|
|
259
|
+
}
|
|
260
|
+
parts.push(`**Created:** ${spec.created_at}`);
|
|
261
|
+
parts.push(`**Updated:** ${spec.updated_at}`);
|
|
262
|
+
// Tags
|
|
263
|
+
const tags = this.getTags(spec.id, "spec");
|
|
264
|
+
if (tags.length > 0) {
|
|
265
|
+
parts.push(`**Tags:** ${tags.join(", ")}`);
|
|
266
|
+
}
|
|
267
|
+
// Relationships
|
|
268
|
+
const outgoing = this.getOutgoingRelationships(spec.id, "spec");
|
|
269
|
+
if (outgoing.length > 0) {
|
|
270
|
+
parts.push("");
|
|
271
|
+
parts.push("**Outgoing Relationships:**");
|
|
272
|
+
for (const rel of outgoing) {
|
|
273
|
+
parts.push(`- ${rel.relationship_type} → ${rel.to_id} (${rel.to_type})`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const incoming = this.getIncomingRelationships(spec.id, "spec");
|
|
277
|
+
if (incoming.length > 0) {
|
|
278
|
+
parts.push("");
|
|
279
|
+
parts.push("**Incoming Relationships:**");
|
|
280
|
+
for (const rel of incoming) {
|
|
281
|
+
parts.push(`- ${rel.from_id} (${rel.from_type}) → ${rel.relationship_type}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Content
|
|
285
|
+
if (spec.content) {
|
|
286
|
+
parts.push("");
|
|
287
|
+
parts.push("**Content:**");
|
|
288
|
+
parts.push(spec.content);
|
|
289
|
+
}
|
|
290
|
+
return parts.join("\n");
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Format issue - returns all information shown in CLI show command
|
|
294
|
+
*/
|
|
295
|
+
formatIssue(issue) {
|
|
296
|
+
const parts = [];
|
|
297
|
+
// Header
|
|
298
|
+
parts.push(`**${issue.id}: ${issue.title}**`);
|
|
299
|
+
parts.push("");
|
|
300
|
+
// Metadata
|
|
301
|
+
parts.push(`**Status:** ${issue.status}`);
|
|
302
|
+
parts.push(`**Priority:** ${issue.priority}`);
|
|
303
|
+
if (issue.assignee) {
|
|
304
|
+
parts.push(`**Assignee:** ${issue.assignee}`);
|
|
305
|
+
}
|
|
306
|
+
if (issue.parent_id) {
|
|
307
|
+
parts.push(`**Parent:** ${issue.parent_id}`);
|
|
308
|
+
}
|
|
309
|
+
parts.push(`**Created:** ${issue.created_at}`);
|
|
310
|
+
parts.push(`**Updated:** ${issue.updated_at}`);
|
|
311
|
+
if (issue.closed_at) {
|
|
312
|
+
parts.push(`**Closed:** ${issue.closed_at}`);
|
|
313
|
+
}
|
|
314
|
+
// Tags
|
|
315
|
+
const tags = this.getTags(issue.id, "issue");
|
|
316
|
+
if (tags.length > 0) {
|
|
317
|
+
parts.push(`**Tags:** ${tags.join(", ")}`);
|
|
318
|
+
}
|
|
319
|
+
// Relationships
|
|
320
|
+
const outgoing = this.getOutgoingRelationships(issue.id, "issue");
|
|
321
|
+
if (outgoing.length > 0) {
|
|
322
|
+
parts.push("");
|
|
323
|
+
parts.push("**Outgoing Relationships:**");
|
|
324
|
+
for (const rel of outgoing) {
|
|
325
|
+
parts.push(`- ${rel.relationship_type} → ${rel.to_id} (${rel.to_type})`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
const incoming = this.getIncomingRelationships(issue.id, "issue");
|
|
329
|
+
if (incoming.length > 0) {
|
|
330
|
+
parts.push("");
|
|
331
|
+
parts.push("**Incoming Relationships:**");
|
|
332
|
+
for (const rel of incoming) {
|
|
333
|
+
parts.push(`- ${rel.from_id} (${rel.from_type}) → ${rel.relationship_type}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// Content
|
|
337
|
+
if (issue.content) {
|
|
338
|
+
parts.push("");
|
|
339
|
+
parts.push("**Content:**");
|
|
340
|
+
parts.push(issue.content);
|
|
341
|
+
}
|
|
342
|
+
return parts.join("\n");
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get tags for an entity
|
|
346
|
+
*/
|
|
347
|
+
getTags(entityId, entityType) {
|
|
348
|
+
const query = this.db.prepare(`
|
|
349
|
+
SELECT tag FROM tags WHERE entity_id = ? AND entity_type = ?
|
|
350
|
+
`);
|
|
351
|
+
const rows = query.all(entityId, entityType);
|
|
352
|
+
return rows.map((r) => r.tag);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Get outgoing relationships for an entity
|
|
356
|
+
*/
|
|
357
|
+
getOutgoingRelationships(entityId, entityType) {
|
|
358
|
+
const query = this.db.prepare(`
|
|
359
|
+
SELECT relationship_type, to_id, to_type
|
|
360
|
+
FROM relationships
|
|
361
|
+
WHERE from_id = ? AND from_type = ?
|
|
362
|
+
`);
|
|
363
|
+
return query.all(entityId, entityType);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Get incoming relationships for an entity
|
|
367
|
+
*/
|
|
368
|
+
getIncomingRelationships(entityId, entityType) {
|
|
369
|
+
const query = this.db.prepare(`
|
|
370
|
+
SELECT relationship_type, from_id, from_type
|
|
371
|
+
FROM relationships
|
|
372
|
+
WHERE to_id = ? AND to_type = ?
|
|
373
|
+
`);
|
|
374
|
+
return query.all(entityId, entityType);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=prompt-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-resolver.js","sourceRoot":"","sources":["../../src/services/prompt-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ export interface RepositoryInfo {
|
|
|
6
6
|
branch: string;
|
|
7
7
|
path: string;
|
|
8
8
|
}
|
|
9
|
+
export interface BranchInfo {
|
|
10
|
+
current: string;
|
|
11
|
+
branches: string[];
|
|
12
|
+
}
|
|
9
13
|
/**
|
|
10
14
|
* Get repository information for a given repository path
|
|
11
15
|
*
|
|
@@ -14,4 +18,12 @@ export interface RepositoryInfo {
|
|
|
14
18
|
* @throws Error if the path is not a valid git repository
|
|
15
19
|
*/
|
|
16
20
|
export declare function getRepositoryInfo(repoPath: string): Promise<RepositoryInfo>;
|
|
21
|
+
/**
|
|
22
|
+
* Get branch information for a given repository path
|
|
23
|
+
*
|
|
24
|
+
* @param repoPath - Absolute path to the repository root
|
|
25
|
+
* @returns Current branch and list of all local branches
|
|
26
|
+
* @throws Error if the path is not a valid git repository
|
|
27
|
+
*/
|
|
28
|
+
export declare function getRepositoryBranches(repoPath: string): Promise<BranchInfo>;
|
|
17
29
|
//# sourceMappingURL=repo-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-info.d.ts","sourceRoot":"","sources":["../../src/services/repo-info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAgDzB"}
|
|
1
|
+
{"version":3,"file":"repo-info.d.ts","sourceRoot":"","sources":["../../src/services/repo-info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAgDzB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CA8CrB"}
|
|
@@ -50,4 +50,50 @@ export async function getRepositoryInfo(repoPath) {
|
|
|
50
50
|
path: repoPath,
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Get branch information for a given repository path
|
|
55
|
+
*
|
|
56
|
+
* @param repoPath - Absolute path to the repository root
|
|
57
|
+
* @returns Current branch and list of all local branches
|
|
58
|
+
* @throws Error if the path is not a valid git repository
|
|
59
|
+
*/
|
|
60
|
+
export async function getRepositoryBranches(repoPath) {
|
|
61
|
+
const gitCli = new GitCli();
|
|
62
|
+
// Check if repoPath is a valid git repository
|
|
63
|
+
const isValidRepo = await gitCli.isValidRepo(repoPath);
|
|
64
|
+
if (!isValidRepo) {
|
|
65
|
+
throw new Error("Not a git repository");
|
|
66
|
+
}
|
|
67
|
+
// Get current branch
|
|
68
|
+
let currentBranch = "(detached)";
|
|
69
|
+
try {
|
|
70
|
+
const output = gitCli["execGit"]("git rev-parse --abbrev-ref HEAD", repoPath);
|
|
71
|
+
currentBranch = output.trim();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error("Failed to get current branch:", error);
|
|
75
|
+
}
|
|
76
|
+
// Get all local branches
|
|
77
|
+
const branches = [];
|
|
78
|
+
try {
|
|
79
|
+
const output = gitCli["execGit"]("git branch --format='%(refname:short)'", repoPath);
|
|
80
|
+
const branchList = output
|
|
81
|
+
.trim()
|
|
82
|
+
.split("\n")
|
|
83
|
+
.map((b) => b.trim())
|
|
84
|
+
.filter((b) => b.length > 0);
|
|
85
|
+
branches.push(...branchList);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error("Failed to get branches:", error);
|
|
89
|
+
// Fallback to just current branch if we can't list branches
|
|
90
|
+
if (currentBranch !== "(detached)") {
|
|
91
|
+
branches.push(currentBranch);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
current: currentBranch,
|
|
96
|
+
branches,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
53
99
|
//# sourceMappingURL=repo-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-info.js","sourceRoot":"","sources":["../../src/services/repo-info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"repo-info.js","sourceRoot":"","sources":["../../src/services/repo-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface VersionInfo {
|
|
2
|
+
cli: string;
|
|
3
|
+
server: string;
|
|
4
|
+
frontend: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Get version information for all packages.
|
|
8
|
+
* Handles both development (monorepo) and production (installed npm package) environments.
|
|
9
|
+
*
|
|
10
|
+
* @param baseDir - Optional base directory for testing. Defaults to __dirname.
|
|
11
|
+
* @returns Version information for CLI, server, and frontend packages
|
|
12
|
+
*/
|
|
13
|
+
export declare function getVersionInfo(baseDir?: string): VersionInfo;
|
|
14
|
+
//# sourceMappingURL=version-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-service.d.ts","sourceRoot":"","sources":["../../src/services/version-service.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAkB,GAAG,WAAW,CAoDvE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = path.dirname(__filename);
|
|
6
|
+
/**
|
|
7
|
+
* Get version information for all packages.
|
|
8
|
+
* Handles both development (monorepo) and production (installed npm package) environments.
|
|
9
|
+
*
|
|
10
|
+
* @param baseDir - Optional base directory for testing. Defaults to __dirname.
|
|
11
|
+
* @returns Version information for CLI, server, and frontend packages
|
|
12
|
+
*/
|
|
13
|
+
export function getVersionInfo(baseDir = __dirname) {
|
|
14
|
+
// Determine if we're in development (monorepo) or production (installed package)
|
|
15
|
+
// In dev: baseDir is server/dist/services, workspace root has server/ and cli/ and frontend/
|
|
16
|
+
// In prod: baseDir is node_modules/@sudocode-ai/local-server/dist/services
|
|
17
|
+
// Check for monorepo structure by looking for both server/package.json (us) and frontend/package.json
|
|
18
|
+
const projectRoot = path.join(baseDir, "../../..");
|
|
19
|
+
const isDev = existsSync(path.join(projectRoot, "server/package.json")) &&
|
|
20
|
+
existsSync(path.join(projectRoot, "frontend/package.json"));
|
|
21
|
+
let cliPackage, serverPackage, frontendPackage;
|
|
22
|
+
if (isDev) {
|
|
23
|
+
// Development: Read from monorepo structure
|
|
24
|
+
// From server/dist/services -> server/dist -> server -> workspace root
|
|
25
|
+
const projectRoot = path.join(baseDir, "../../..");
|
|
26
|
+
const cliPackagePath = path.join(projectRoot, "cli/package.json");
|
|
27
|
+
const serverPackagePath = path.join(projectRoot, "server/package.json");
|
|
28
|
+
const frontendPackagePath = path.join(projectRoot, "frontend/package.json");
|
|
29
|
+
cliPackage = JSON.parse(readFileSync(cliPackagePath, "utf-8"));
|
|
30
|
+
serverPackage = JSON.parse(readFileSync(serverPackagePath, "utf-8"));
|
|
31
|
+
frontendPackage = JSON.parse(readFileSync(frontendPackagePath, "utf-8"));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Production: Read from installed npm packages
|
|
35
|
+
// From dist/services -> dist -> local-server (package root)
|
|
36
|
+
const serverPackagePath = path.join(baseDir, "../../package.json");
|
|
37
|
+
serverPackage = JSON.parse(readFileSync(serverPackagePath, "utf-8"));
|
|
38
|
+
// CLI package is in node_modules (sibling to local-server)
|
|
39
|
+
// From dist/services -> dist -> local-server -> @sudocode-ai -> cli
|
|
40
|
+
const cliPackagePath = path.join(baseDir, "../../../cli/package.json");
|
|
41
|
+
if (existsSync(cliPackagePath)) {
|
|
42
|
+
cliPackage = JSON.parse(readFileSync(cliPackagePath, "utf-8"));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Fallback: use server version if CLI package not found
|
|
46
|
+
cliPackage = serverPackage;
|
|
47
|
+
}
|
|
48
|
+
// Frontend is bundled with server, use server version
|
|
49
|
+
frontendPackage = serverPackage;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
cli: cliPackage.version,
|
|
53
|
+
server: serverPackage.version,
|
|
54
|
+
frontend: frontendPackage.version,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=version-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-service.js","sourceRoot":"","sources":["../../src/services/version-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAQ3C;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,SAAS;IACxD,iFAAiF;IACjF,6FAA6F;IAC7F,2EAA2E;IAC3E,sGAAsG;IACtG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,KAAK,GACT,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAE9D,IAAI,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC;IAE/C,IAAI,KAAK,EAAE,CAAC;QACV,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CACnC,WAAW,EACX,uBAAuB,CACxB,CAAC;QAEF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,+CAA+C;QAC/C,4DAA4D;QAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACnE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QAErE,2DAA2D;QAC3D,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QAEvE,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,UAAU,GAAG,aAAa,CAAC;QAC7B,CAAC;QAED,sDAAsD;QACtD,eAAe,GAAG,aAAa,CAAC;IAClC,CAAC;IAED,OAAO;QACL,GAAG,EAAE,UAAU,CAAC,OAAO;QACvB,MAAM,EAAE,aAAa,CAAC,OAAO;QAC7B,QAAQ,EAAE,eAAe,CAAC,OAAO;KAClC,CAAC;AACJ,CAAC"}
|
|
@@ -13,10 +13,6 @@ export interface ServerWatcherOptions {
|
|
|
13
13
|
* Base directory to watch (e.g., .sudocode)
|
|
14
14
|
*/
|
|
15
15
|
baseDir: string;
|
|
16
|
-
/**
|
|
17
|
-
* Debounce delay in milliseconds (default: 2000)
|
|
18
|
-
*/
|
|
19
|
-
debounceDelay?: number;
|
|
20
16
|
/**
|
|
21
17
|
* Enable reverse sync (JSONL → Markdown) when JSONL files change (default: false)
|
|
22
18
|
*/
|
|
@@ -27,9 +23,12 @@ export interface ServerWatcherOptions {
|
|
|
27
23
|
*/
|
|
28
24
|
onFileChange?: (info: {
|
|
29
25
|
filePath: string;
|
|
26
|
+
baseDir: string;
|
|
30
27
|
event: "add" | "change" | "unlink";
|
|
31
28
|
entityType?: "spec" | "issue";
|
|
32
29
|
entityId?: string;
|
|
30
|
+
entity?: any;
|
|
31
|
+
timestamp: Date;
|
|
33
32
|
}) => void;
|
|
34
33
|
}
|
|
35
34
|
export interface ServerWatcherControl {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,kCAAkC,CAAC;AAG1C,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACnC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,SAAS,EAAE,IAAI,CAAC;KACjB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,GAC5B,oBAAoB,CAuDtB"}
|