@sudocode-ai/local-server 0.1.0 → 0.1.1
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/dist/cli.js +6 -104
- package/dist/cli.js.map +1 -7
- package/dist/execution/engine/engine.js +10 -0
- package/dist/execution/engine/engine.js.map +1 -0
- package/dist/execution/engine/simple-engine.js +611 -0
- package/dist/execution/engine/simple-engine.js.map +1 -0
- package/dist/execution/engine/types.js +10 -0
- package/dist/execution/engine/types.js.map +1 -0
- package/dist/execution/output/ag-ui-adapter.js +438 -0
- package/dist/execution/output/ag-ui-adapter.js.map +1 -0
- package/dist/execution/output/ag-ui-integration.js +96 -0
- package/dist/execution/output/ag-ui-integration.js.map +1 -0
- package/dist/execution/output/claude-code-output-processor.js +769 -0
- package/dist/execution/output/claude-code-output-processor.js.map +1 -0
- package/dist/execution/output/index.js +15 -0
- package/dist/execution/output/index.js.map +1 -0
- package/dist/execution/output/types.js +22 -0
- package/dist/execution/output/types.js.map +1 -0
- package/dist/execution/process/builders/claude.js +59 -0
- package/dist/execution/process/builders/claude.js.map +1 -0
- package/dist/execution/process/index.js +15 -0
- package/dist/execution/process/index.js.map +1 -0
- package/dist/execution/process/manager.js +10 -0
- package/dist/execution/process/manager.js.map +1 -0
- package/dist/execution/process/simple-manager.js +336 -0
- package/dist/execution/process/simple-manager.js.map +1 -0
- package/dist/execution/process/types.js +10 -0
- package/dist/execution/process/types.js.map +1 -0
- package/dist/execution/process/utils.js +97 -0
- package/dist/execution/process/utils.js.map +1 -0
- package/dist/execution/resilience/circuit-breaker.js +291 -0
- package/dist/execution/resilience/circuit-breaker.js.map +1 -0
- package/dist/execution/resilience/executor.js +10 -0
- package/dist/execution/resilience/executor.js.map +1 -0
- package/dist/execution/resilience/index.js +15 -0
- package/dist/execution/resilience/index.js.map +1 -0
- package/dist/execution/resilience/resilient-executor.js +261 -0
- package/dist/execution/resilience/resilient-executor.js.map +1 -0
- package/dist/execution/resilience/retry.js +234 -0
- package/dist/execution/resilience/retry.js.map +1 -0
- package/dist/execution/resilience/types.js +30 -0
- package/dist/execution/resilience/types.js.map +1 -0
- package/dist/execution/transport/event-buffer.js +208 -0
- package/dist/execution/transport/event-buffer.js.map +1 -0
- package/dist/execution/transport/index.js +10 -0
- package/dist/execution/transport/index.js.map +1 -0
- package/dist/execution/transport/sse-transport.js +282 -0
- package/dist/execution/transport/sse-transport.js.map +1 -0
- package/dist/execution/transport/transport-manager.js +231 -0
- package/dist/execution/transport/transport-manager.js.map +1 -0
- package/dist/execution/workflow/index.js +13 -0
- package/dist/execution/workflow/index.js.map +1 -0
- package/dist/execution/workflow/linear-orchestrator.js +683 -0
- package/dist/execution/workflow/linear-orchestrator.js.map +1 -0
- package/dist/execution/workflow/memory-storage.js +68 -0
- package/dist/execution/workflow/memory-storage.js.map +1 -0
- package/dist/execution/workflow/orchestrator.js +9 -0
- package/dist/execution/workflow/orchestrator.js.map +1 -0
- package/dist/execution/workflow/types.js +9 -0
- package/dist/execution/workflow/types.js.map +1 -0
- package/dist/execution/workflow/utils.js +152 -0
- package/dist/execution/workflow/utils.js.map +1 -0
- package/dist/execution/worktree/config.js +280 -0
- package/dist/execution/worktree/config.js.map +1 -0
- package/dist/execution/worktree/git-cli.js +189 -0
- package/dist/execution/worktree/git-cli.js.map +1 -0
- package/dist/execution/worktree/index.js +15 -0
- package/dist/execution/worktree/index.js.map +1 -0
- package/dist/execution/worktree/manager.js +452 -0
- package/dist/execution/worktree/manager.js.map +1 -0
- package/dist/execution/worktree/types.js +42 -0
- package/dist/execution/worktree/types.js.map +1 -0
- package/dist/index.js +356 -104
- package/dist/index.js.map +1 -7
- package/dist/routes/executions-stream.js +55 -0
- package/dist/routes/executions-stream.js.map +1 -0
- package/dist/routes/executions.js +267 -0
- package/dist/routes/executions.js.map +1 -0
- package/dist/routes/feedback.js +329 -0
- package/dist/routes/feedback.js.map +1 -0
- package/dist/routes/issues.js +280 -0
- package/dist/routes/issues.js.map +1 -0
- package/dist/routes/relationships.js +308 -0
- package/dist/routes/relationships.js.map +1 -0
- package/dist/routes/specs.js +270 -0
- package/dist/routes/specs.js.map +1 -0
- package/dist/services/db.js +85 -0
- package/dist/services/db.js.map +1 -0
- package/dist/services/execution-lifecycle.js +286 -0
- package/dist/services/execution-lifecycle.js.map +1 -0
- package/dist/services/execution-service.js +676 -0
- package/dist/services/execution-service.js.map +1 -0
- package/dist/services/executions.js +164 -0
- package/dist/services/executions.js.map +1 -0
- package/dist/services/export.js +106 -0
- package/dist/services/export.js.map +1 -0
- package/dist/services/feedback.js +54 -0
- package/dist/services/feedback.js.map +1 -0
- package/dist/services/issues.js +35 -0
- package/dist/services/issues.js.map +1 -0
- package/dist/services/prompt-template-engine.js +212 -0
- package/dist/services/prompt-template-engine.js.map +1 -0
- package/dist/services/prompt-templates.js +236 -0
- package/dist/services/prompt-templates.js.map +1 -0
- package/dist/services/relationships.js +42 -0
- package/dist/services/relationships.js.map +1 -0
- package/dist/services/specs.js +35 -0
- package/dist/services/specs.js.map +1 -0
- package/dist/services/watcher.js +69 -0
- package/dist/services/watcher.js.map +1 -0
- package/dist/services/websocket.js +389 -0
- package/dist/services/websocket.js.map +1 -0
- package/dist/utils/sudocode-dir.js +9 -0
- package/dist/utils/sudocode-dir.js.map +1 -0
- package/package.json +4 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-service.js","sourceRoot":"","sources":["../../src/services/execution-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executions service - database operations for agent executions
|
|
3
|
+
*/
|
|
4
|
+
import { randomUUID } from "crypto";
|
|
5
|
+
/**
|
|
6
|
+
* Create a new execution
|
|
7
|
+
*/
|
|
8
|
+
export function createExecution(db, input) {
|
|
9
|
+
const id = input.id || randomUUID();
|
|
10
|
+
const now = new Date().toISOString();
|
|
11
|
+
// Get issue_uuid if issue_id is provided
|
|
12
|
+
let issue_uuid = null;
|
|
13
|
+
if (input.issue_id) {
|
|
14
|
+
const issue = db
|
|
15
|
+
.prepare(`SELECT uuid FROM issues WHERE id = ?`)
|
|
16
|
+
.get(input.issue_id);
|
|
17
|
+
if (issue) {
|
|
18
|
+
issue_uuid = issue.uuid;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const stmt = db.prepare(`
|
|
22
|
+
INSERT INTO executions (
|
|
23
|
+
id,
|
|
24
|
+
issue_id,
|
|
25
|
+
issue_uuid,
|
|
26
|
+
agent_type,
|
|
27
|
+
mode,
|
|
28
|
+
prompt,
|
|
29
|
+
config,
|
|
30
|
+
status,
|
|
31
|
+
started_at,
|
|
32
|
+
before_commit,
|
|
33
|
+
target_branch,
|
|
34
|
+
branch_name,
|
|
35
|
+
worktree_path,
|
|
36
|
+
created_at,
|
|
37
|
+
updated_at
|
|
38
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
39
|
+
`);
|
|
40
|
+
stmt.run(id, input.issue_id, issue_uuid, input.agent_type, input.mode || null, input.prompt || null, input.config || null, "running", now, input.before_commit || null, input.target_branch, input.branch_name, input.worktree_path || null, now, now);
|
|
41
|
+
const execution = getExecution(db, id);
|
|
42
|
+
if (!execution) {
|
|
43
|
+
throw new Error(`Failed to create execution with id ${id}`);
|
|
44
|
+
}
|
|
45
|
+
return execution;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get an execution by ID
|
|
49
|
+
*/
|
|
50
|
+
export function getExecution(db, id) {
|
|
51
|
+
const stmt = db.prepare(`
|
|
52
|
+
SELECT * FROM executions WHERE id = ?
|
|
53
|
+
`);
|
|
54
|
+
const row = stmt.get(id);
|
|
55
|
+
return row || null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all executions for an issue
|
|
59
|
+
*/
|
|
60
|
+
export function getExecutionsByIssueId(db, issue_id) {
|
|
61
|
+
const stmt = db.prepare(`
|
|
62
|
+
SELECT * FROM executions
|
|
63
|
+
WHERE issue_id = ?
|
|
64
|
+
ORDER BY started_at DESC
|
|
65
|
+
`);
|
|
66
|
+
return stmt.all(issue_id);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Update an execution
|
|
70
|
+
*/
|
|
71
|
+
export function updateExecution(db, id, input) {
|
|
72
|
+
const execution = getExecution(db, id);
|
|
73
|
+
if (!execution) {
|
|
74
|
+
throw new Error(`Execution not found: ${id}`);
|
|
75
|
+
}
|
|
76
|
+
const updates = [];
|
|
77
|
+
const values = [];
|
|
78
|
+
if (input.status !== undefined) {
|
|
79
|
+
updates.push("status = ?");
|
|
80
|
+
values.push(input.status);
|
|
81
|
+
}
|
|
82
|
+
if (input.completed_at !== undefined) {
|
|
83
|
+
updates.push("completed_at = ?");
|
|
84
|
+
values.push(input.completed_at);
|
|
85
|
+
}
|
|
86
|
+
if (input.exit_code !== undefined) {
|
|
87
|
+
updates.push("exit_code = ?");
|
|
88
|
+
values.push(input.exit_code);
|
|
89
|
+
}
|
|
90
|
+
if (input.error_message !== undefined) {
|
|
91
|
+
updates.push("error_message = ?");
|
|
92
|
+
values.push(input.error_message);
|
|
93
|
+
}
|
|
94
|
+
if (input.after_commit !== undefined) {
|
|
95
|
+
updates.push("after_commit = ?");
|
|
96
|
+
values.push(input.after_commit);
|
|
97
|
+
}
|
|
98
|
+
if (input.target_branch !== undefined) {
|
|
99
|
+
updates.push("target_branch = ?");
|
|
100
|
+
values.push(input.target_branch);
|
|
101
|
+
}
|
|
102
|
+
if (input.worktree_path !== undefined) {
|
|
103
|
+
updates.push("worktree_path = ?");
|
|
104
|
+
values.push(input.worktree_path);
|
|
105
|
+
}
|
|
106
|
+
if (input.session_id !== undefined) {
|
|
107
|
+
updates.push("session_id = ?");
|
|
108
|
+
values.push(input.session_id);
|
|
109
|
+
}
|
|
110
|
+
if (input.summary !== undefined) {
|
|
111
|
+
updates.push("summary = ?");
|
|
112
|
+
values.push(input.summary);
|
|
113
|
+
}
|
|
114
|
+
// Always update updated_at
|
|
115
|
+
updates.push("updated_at = ?");
|
|
116
|
+
values.push(new Date().toISOString());
|
|
117
|
+
if (updates.length === 1) {
|
|
118
|
+
// Only updated_at, no other changes
|
|
119
|
+
return execution;
|
|
120
|
+
}
|
|
121
|
+
values.push(id);
|
|
122
|
+
const stmt = db.prepare(`
|
|
123
|
+
UPDATE executions
|
|
124
|
+
SET ${updates.join(", ")}
|
|
125
|
+
WHERE id = ?
|
|
126
|
+
`);
|
|
127
|
+
stmt.run(...values);
|
|
128
|
+
const updated = getExecution(db, id);
|
|
129
|
+
if (!updated) {
|
|
130
|
+
throw new Error(`Failed to update execution ${id}`);
|
|
131
|
+
}
|
|
132
|
+
return updated;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Delete an execution
|
|
136
|
+
*/
|
|
137
|
+
export function deleteExecution(db, id) {
|
|
138
|
+
const stmt = db.prepare(`
|
|
139
|
+
DELETE FROM executions WHERE id = ?
|
|
140
|
+
`);
|
|
141
|
+
const result = stmt.run(id);
|
|
142
|
+
return result.changes > 0;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get all executions with optional status filter
|
|
146
|
+
*/
|
|
147
|
+
export function getAllExecutions(db, status) {
|
|
148
|
+
if (status) {
|
|
149
|
+
const stmt = db.prepare(`
|
|
150
|
+
SELECT * FROM executions
|
|
151
|
+
WHERE status = ?
|
|
152
|
+
ORDER BY started_at DESC
|
|
153
|
+
`);
|
|
154
|
+
return stmt.all(status);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
const stmt = db.prepare(`
|
|
158
|
+
SELECT * FROM executions
|
|
159
|
+
ORDER BY started_at DESC
|
|
160
|
+
`);
|
|
161
|
+
return stmt.all();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=executions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../src/services/executions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export service - handles syncing database to JSONL and Markdown files
|
|
3
|
+
*/
|
|
4
|
+
import { exportToJSONL } from "@sudocode-ai/cli/dist/export.js";
|
|
5
|
+
import { syncJSONLToMarkdown } from "@sudocode-ai/cli/dist/sync.js";
|
|
6
|
+
import { getSudocodeDir } from "../utils/sudocode-dir.js";
|
|
7
|
+
import * as path from "path";
|
|
8
|
+
// Global debouncer state
|
|
9
|
+
let exportDebouncer = null;
|
|
10
|
+
/**
|
|
11
|
+
* Initialize or get the export debouncer
|
|
12
|
+
*/
|
|
13
|
+
function getExportDebouncer(db) {
|
|
14
|
+
if (!exportDebouncer) {
|
|
15
|
+
exportDebouncer = {
|
|
16
|
+
db,
|
|
17
|
+
timeoutId: null,
|
|
18
|
+
pending: false,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return exportDebouncer;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Execute the full export (JSONL only)
|
|
25
|
+
* Note: Markdown files are not updated here to avoid triggering mass file changes.
|
|
26
|
+
* Markdown updates should happen through the watcher's reverse sync if enabled,
|
|
27
|
+
* or through explicit sync commands.
|
|
28
|
+
*/
|
|
29
|
+
async function executeFullExport(db) {
|
|
30
|
+
const outputDir = getSudocodeDir();
|
|
31
|
+
// Export to JSONL only
|
|
32
|
+
await exportToJSONL(db, { outputDir });
|
|
33
|
+
// Note: We don't sync to markdown here because:
|
|
34
|
+
// 1. It would update ALL markdown files on every change (inefficient)
|
|
35
|
+
// 2. The watcher can handle reverse sync if enabled (JSONL → Markdown)
|
|
36
|
+
// 3. For API updates, the markdown file will be updated when the watcher
|
|
37
|
+
// detects the JSONL change and does reverse sync
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Sync a single entity to its markdown file
|
|
41
|
+
*/
|
|
42
|
+
export async function syncEntityToMarkdown(db, entityId, entityType) {
|
|
43
|
+
const outputDir = getSudocodeDir();
|
|
44
|
+
if (entityType === "issue") {
|
|
45
|
+
const { getIssueById } = await import("./issues.js");
|
|
46
|
+
const issue = getIssueById(db, entityId);
|
|
47
|
+
if (issue) {
|
|
48
|
+
const mdPath = path.join(outputDir, "issues", `${issue.id}.md`);
|
|
49
|
+
await syncJSONLToMarkdown(db, issue.id, "issue", mdPath);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const { getSpecById } = await import("./specs.js");
|
|
54
|
+
const spec = getSpecById(db, entityId);
|
|
55
|
+
if (spec) {
|
|
56
|
+
const mdPath = spec.file_path
|
|
57
|
+
? path.join(outputDir, spec.file_path)
|
|
58
|
+
: path.join(outputDir, "specs", `${spec.id}.md`);
|
|
59
|
+
await syncJSONLToMarkdown(db, spec.id, "spec", mdPath);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Trigger an export to JSONL and Markdown files (debounced)
|
|
65
|
+
* This should be called after any database modifications
|
|
66
|
+
*/
|
|
67
|
+
export function triggerExport(db) {
|
|
68
|
+
const debouncer = getExportDebouncer(db);
|
|
69
|
+
debouncer.pending = true;
|
|
70
|
+
if (debouncer.timeoutId) {
|
|
71
|
+
clearTimeout(debouncer.timeoutId);
|
|
72
|
+
}
|
|
73
|
+
debouncer.timeoutId = setTimeout(async () => {
|
|
74
|
+
try {
|
|
75
|
+
await executeFullExport(db);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error("Export failed:", error);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
// Reset debouncer state after export completes
|
|
82
|
+
debouncer.pending = false;
|
|
83
|
+
debouncer.timeoutId = null;
|
|
84
|
+
}
|
|
85
|
+
}, 2000); // 2 second debounce
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Execute export immediately (bypass debouncing)
|
|
89
|
+
* Exports to both JSONL and Markdown files
|
|
90
|
+
*/
|
|
91
|
+
export async function executeExportNow(db) {
|
|
92
|
+
await executeFullExport(db);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Cleanup the export debouncer (cancel pending exports and reset)
|
|
96
|
+
* Should be called when closing the database or during test cleanup
|
|
97
|
+
*/
|
|
98
|
+
export function cleanupExport() {
|
|
99
|
+
if (exportDebouncer) {
|
|
100
|
+
if (exportDebouncer.timeoutId) {
|
|
101
|
+
clearTimeout(exportDebouncer.timeoutId);
|
|
102
|
+
}
|
|
103
|
+
exportDebouncer = null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/services/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service layer for Feedback API
|
|
3
|
+
* Wraps CLI operations for managing issue feedback on specs
|
|
4
|
+
*/
|
|
5
|
+
import { createFeedback, getFeedback, updateFeedback, deleteFeedback, listFeedback, getFeedbackForSpec, getFeedbackForIssue, dismissFeedback, } from "@sudocode-ai/cli/dist/operations/feedback.js";
|
|
6
|
+
/**
|
|
7
|
+
* Create a new feedback entry
|
|
8
|
+
*/
|
|
9
|
+
export function createNewFeedback(db, input) {
|
|
10
|
+
return createFeedback(db, input);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get a specific feedback by ID
|
|
14
|
+
*/
|
|
15
|
+
export function getFeedbackById(db, id) {
|
|
16
|
+
return getFeedback(db, id);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Update an existing feedback entry
|
|
20
|
+
*/
|
|
21
|
+
export function updateExistingFeedback(db, id, input) {
|
|
22
|
+
return updateFeedback(db, id, input);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Delete a feedback entry
|
|
26
|
+
*/
|
|
27
|
+
export function deleteExistingFeedback(db, id) {
|
|
28
|
+
return deleteFeedback(db, id);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* List feedback entries with optional filters
|
|
32
|
+
*/
|
|
33
|
+
export function getAllFeedback(db, options) {
|
|
34
|
+
return listFeedback(db, options || {});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get all feedback for a specific spec
|
|
38
|
+
*/
|
|
39
|
+
export function getSpecFeedback(db, spec_id) {
|
|
40
|
+
return getFeedbackForSpec(db, spec_id);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get all feedback for a specific issue
|
|
44
|
+
*/
|
|
45
|
+
export function getIssueFeedback(db, issue_id) {
|
|
46
|
+
return getFeedbackForIssue(db, issue_id);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Dismiss a feedback entry
|
|
50
|
+
*/
|
|
51
|
+
export function dismissExistingFeedback(db, id) {
|
|
52
|
+
return dismissFeedback(db, id);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/services/feedback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAIhB,MAAM,8CAA8C,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,KAA0B;IAE1B,OAAO,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,EAAU;IAEV,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,EAAU,EACV,KAA0B;IAE1B,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,EAAU;IAEV,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,OAA6B;IAE7B,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,OAAe;IAEf,OAAO,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAqB,EACrB,QAAgB;IAEhB,OAAO,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAqB,EACrB,EAAU;IAEV,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Issues service - wraps CLI operations for API use
|
|
3
|
+
*/
|
|
4
|
+
import { getIssue, listIssues, createIssue, updateIssue, deleteIssue, } from "@sudocode-ai/cli/dist/operations/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Get all issues with optional filtering
|
|
7
|
+
*/
|
|
8
|
+
export function getAllIssues(db, options) {
|
|
9
|
+
return listIssues(db, options || {});
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get a single issue by ID
|
|
13
|
+
*/
|
|
14
|
+
export function getIssueById(db, id) {
|
|
15
|
+
return getIssue(db, id);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a new issue
|
|
19
|
+
*/
|
|
20
|
+
export function createNewIssue(db, input) {
|
|
21
|
+
return createIssue(db, input);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Update an existing issue
|
|
25
|
+
*/
|
|
26
|
+
export function updateExistingIssue(db, id, input) {
|
|
27
|
+
return updateIssue(db, id, input);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Delete an issue
|
|
31
|
+
*/
|
|
32
|
+
export function deleteExistingIssue(db, id) {
|
|
33
|
+
return deleteIssue(db, id);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/services/issues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,GAIZ,MAAM,2CAA2C,CAAC;AAGnD;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAqB,EACrB,OAA2B;IAE3B,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB,EAAE,EAAU;IAC5D,OAAO,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,KAAuB;IAEvB,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAqB,EACrB,EAAU,EACV,KAAuB;IAEvB,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAqB,EACrB,EAAU;IAEV,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Template Engine
|
|
3
|
+
*
|
|
4
|
+
* Simple template engine with Handlebars-like syntax for rendering prompts.
|
|
5
|
+
* Supports variable substitution, conditionals, and loops.
|
|
6
|
+
*
|
|
7
|
+
* @module services/prompt-template-engine
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* PromptTemplateEngine - Render templates with context variables
|
|
11
|
+
*
|
|
12
|
+
* Template Syntax:
|
|
13
|
+
* - Variables: {{variable}} or {{object.nested.path}}
|
|
14
|
+
* - Conditionals: {{#if variable}}content{{/if}}
|
|
15
|
+
* - Loops: {{#each array}}content{{/each}}
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const engine = new PromptTemplateEngine();
|
|
20
|
+
* const result = engine.render(
|
|
21
|
+
* 'Hello {{name}}!',
|
|
22
|
+
* { name: 'World' }
|
|
23
|
+
* );
|
|
24
|
+
* // Result: 'Hello World!'
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class PromptTemplateEngine {
|
|
28
|
+
/**
|
|
29
|
+
* Render template with context variables
|
|
30
|
+
*
|
|
31
|
+
* @param template - Template string with {{variable}} syntax
|
|
32
|
+
* @param context - Object containing variable values
|
|
33
|
+
* @returns Rendered template string
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const template = `
|
|
38
|
+
* Issue: {{issue.title}}
|
|
39
|
+
* {{#if issue.description}}
|
|
40
|
+
* Description: {{issue.description}}
|
|
41
|
+
* {{/if}}
|
|
42
|
+
* {{#each specs}}
|
|
43
|
+
* - [[{{id}}]]: {{title}}
|
|
44
|
+
* {{/each}}
|
|
45
|
+
* `;
|
|
46
|
+
*
|
|
47
|
+
* const context = {
|
|
48
|
+
* issue: { title: 'Bug fix', description: 'Fix auth' },
|
|
49
|
+
* specs: [{ id: 'SPEC-001', title: 'Auth' }]
|
|
50
|
+
* };
|
|
51
|
+
*
|
|
52
|
+
* engine.render(template, context);
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
render(template, context) {
|
|
56
|
+
let result = template;
|
|
57
|
+
// Process in order: loops, conditionals, then variables
|
|
58
|
+
// Use a while loop to handle nested structures by processing innermost first
|
|
59
|
+
// 1. Handle loops: {{#each array}}...{{/each}}
|
|
60
|
+
// Process innermost loops first by finding balanced tags
|
|
61
|
+
let previousResult = '';
|
|
62
|
+
while (result !== previousResult) {
|
|
63
|
+
previousResult = result;
|
|
64
|
+
result = this.replaceLoop(result, context);
|
|
65
|
+
}
|
|
66
|
+
// 2. Handle conditionals: {{#if variable}}...{{/if}}
|
|
67
|
+
previousResult = '';
|
|
68
|
+
while (result !== previousResult) {
|
|
69
|
+
previousResult = result;
|
|
70
|
+
result = this.replaceConditional(result, context);
|
|
71
|
+
}
|
|
72
|
+
// 3. Replace simple variables: {{variable}}
|
|
73
|
+
result = result.replace(/\{\{([^}#/]+)\}\}/g, (match, key) => {
|
|
74
|
+
const value = this.getValue(context, key.trim());
|
|
75
|
+
return value !== undefined ? String(value) : match;
|
|
76
|
+
});
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Replace one {{#each}} loop with balanced tags
|
|
81
|
+
* Processes innermost loop first
|
|
82
|
+
*/
|
|
83
|
+
replaceLoop(template, context) {
|
|
84
|
+
const match = this.findBalancedTag(template, 'each');
|
|
85
|
+
if (!match)
|
|
86
|
+
return template;
|
|
87
|
+
const { key, content, fullMatch } = match;
|
|
88
|
+
const array = this.getValue(context, key.trim());
|
|
89
|
+
if (!Array.isArray(array)) {
|
|
90
|
+
return template.replace(fullMatch, '');
|
|
91
|
+
}
|
|
92
|
+
const replacement = array
|
|
93
|
+
.map((item) => this.render(content, item))
|
|
94
|
+
.join('');
|
|
95
|
+
return template.replace(fullMatch, replacement);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Replace one {{#if}} conditional with balanced tags
|
|
99
|
+
*/
|
|
100
|
+
replaceConditional(template, context) {
|
|
101
|
+
const match = this.findBalancedTag(template, 'if');
|
|
102
|
+
if (!match)
|
|
103
|
+
return template;
|
|
104
|
+
const { key, content, fullMatch } = match;
|
|
105
|
+
const value = this.getValue(context, key.trim());
|
|
106
|
+
const replacement = value ? content : '';
|
|
107
|
+
return template.replace(fullMatch, replacement);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Find a balanced {{#tagName}} ... {{/tagName}} pair
|
|
111
|
+
* Returns the FIRST match (outermost, will be processed recursively)
|
|
112
|
+
*/
|
|
113
|
+
findBalancedTag(template, tagName) {
|
|
114
|
+
const openPattern = `\\{\\{#${tagName}\\s+([^}]+)\\}\\}`;
|
|
115
|
+
const closePattern = `\\{\\{\\/${tagName}\\}\\}`;
|
|
116
|
+
const openRegex = new RegExp(openPattern);
|
|
117
|
+
const match = openRegex.exec(template);
|
|
118
|
+
if (!match)
|
|
119
|
+
return null;
|
|
120
|
+
const openIndex = match.index;
|
|
121
|
+
const key = match[1];
|
|
122
|
+
let depth = 1;
|
|
123
|
+
let i = openIndex + match[0].length;
|
|
124
|
+
const contentStart = i;
|
|
125
|
+
// Find the matching closing tag by counting depth
|
|
126
|
+
while (i < template.length && depth > 0) {
|
|
127
|
+
// Check for nested opening tags
|
|
128
|
+
const nestedOpen = template.slice(i).match(new RegExp(`^${openPattern}`));
|
|
129
|
+
if (nestedOpen) {
|
|
130
|
+
depth++;
|
|
131
|
+
i += nestedOpen[0].length;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
// Check for closing tags
|
|
135
|
+
const close = template.slice(i).match(new RegExp(`^${closePattern}`));
|
|
136
|
+
if (close) {
|
|
137
|
+
depth--;
|
|
138
|
+
if (depth === 0) {
|
|
139
|
+
const content = template.slice(contentStart, i);
|
|
140
|
+
const fullMatch = template.slice(openIndex, i + close[0].length);
|
|
141
|
+
return { key, content, fullMatch };
|
|
142
|
+
}
|
|
143
|
+
i += close[0].length;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
i++;
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get nested value from context using dot notation
|
|
152
|
+
*
|
|
153
|
+
* @param context - Context object
|
|
154
|
+
* @param path - Dot-separated path (e.g., 'user.name')
|
|
155
|
+
* @returns Value at path or undefined
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* getValue({ user: { name: 'Alice' } }, 'user.name')
|
|
160
|
+
* // Returns: 'Alice'
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
getValue(context, path) {
|
|
164
|
+
const keys = path.split('.');
|
|
165
|
+
let value = context;
|
|
166
|
+
for (const key of keys) {
|
|
167
|
+
if (value === null || value === undefined)
|
|
168
|
+
return undefined;
|
|
169
|
+
value = value[key];
|
|
170
|
+
}
|
|
171
|
+
return value;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validate template syntax
|
|
175
|
+
*
|
|
176
|
+
* Checks for:
|
|
177
|
+
* - Balanced {{#if}} / {{/if}} tags
|
|
178
|
+
* - Balanced {{#each}} / {{/each}} tags
|
|
179
|
+
*
|
|
180
|
+
* @param template - Template string to validate
|
|
181
|
+
* @returns Validation result with errors if any
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* engine.validate('{{#if x}}content{{/if}}')
|
|
186
|
+
* // Returns: { valid: true, errors: [] }
|
|
187
|
+
*
|
|
188
|
+
* engine.validate('{{#if x}}content')
|
|
189
|
+
* // Returns: { valid: false, errors: ['Unbalanced {{#if}} tags'] }
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
validate(template) {
|
|
193
|
+
const errors = [];
|
|
194
|
+
// Check for balanced {{#if}} tags
|
|
195
|
+
const ifCount = (template.match(/\{\{#if/g) || []).length;
|
|
196
|
+
const endIfCount = (template.match(/\{\{\/if\}\}/g) || []).length;
|
|
197
|
+
if (ifCount !== endIfCount) {
|
|
198
|
+
errors.push(`Unbalanced {{#if}} tags (${ifCount} vs ${endIfCount})`);
|
|
199
|
+
}
|
|
200
|
+
// Check for balanced {{#each}} tags
|
|
201
|
+
const eachCount = (template.match(/\{\{#each/g) || []).length;
|
|
202
|
+
const endEachCount = (template.match(/\{\{\/each\}\}/g) || []).length;
|
|
203
|
+
if (eachCount !== endEachCount) {
|
|
204
|
+
errors.push(`Unbalanced {{#each}} tags (${eachCount} vs ${endEachCount})`);
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
valid: errors.length === 0,
|
|
208
|
+
errors,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=prompt-template-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-template-engine.js","sourceRoot":"","sources":["../../src/services/prompt-template-engine.ts"],"names":[],"mappings":"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"}
|