@sudocode-ai/local-server 0.1.0 → 0.1.2

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.
Files changed (117) hide show
  1. package/dist/cli.js +6 -104
  2. package/dist/cli.js.map +1 -7
  3. package/dist/execution/engine/engine.js +10 -0
  4. package/dist/execution/engine/engine.js.map +1 -0
  5. package/dist/execution/engine/simple-engine.js +611 -0
  6. package/dist/execution/engine/simple-engine.js.map +1 -0
  7. package/dist/execution/engine/types.js +10 -0
  8. package/dist/execution/engine/types.js.map +1 -0
  9. package/dist/execution/output/ag-ui-adapter.js +438 -0
  10. package/dist/execution/output/ag-ui-adapter.js.map +1 -0
  11. package/dist/execution/output/ag-ui-integration.js +96 -0
  12. package/dist/execution/output/ag-ui-integration.js.map +1 -0
  13. package/dist/execution/output/claude-code-output-processor.js +769 -0
  14. package/dist/execution/output/claude-code-output-processor.js.map +1 -0
  15. package/dist/execution/output/index.js +15 -0
  16. package/dist/execution/output/index.js.map +1 -0
  17. package/dist/execution/output/types.js +22 -0
  18. package/dist/execution/output/types.js.map +1 -0
  19. package/dist/execution/process/builders/claude.js +59 -0
  20. package/dist/execution/process/builders/claude.js.map +1 -0
  21. package/dist/execution/process/index.js +15 -0
  22. package/dist/execution/process/index.js.map +1 -0
  23. package/dist/execution/process/manager.js +10 -0
  24. package/dist/execution/process/manager.js.map +1 -0
  25. package/dist/execution/process/simple-manager.js +336 -0
  26. package/dist/execution/process/simple-manager.js.map +1 -0
  27. package/dist/execution/process/types.js +10 -0
  28. package/dist/execution/process/types.js.map +1 -0
  29. package/dist/execution/process/utils.js +97 -0
  30. package/dist/execution/process/utils.js.map +1 -0
  31. package/dist/execution/resilience/circuit-breaker.js +291 -0
  32. package/dist/execution/resilience/circuit-breaker.js.map +1 -0
  33. package/dist/execution/resilience/executor.js +10 -0
  34. package/dist/execution/resilience/executor.js.map +1 -0
  35. package/dist/execution/resilience/index.js +15 -0
  36. package/dist/execution/resilience/index.js.map +1 -0
  37. package/dist/execution/resilience/resilient-executor.js +261 -0
  38. package/dist/execution/resilience/resilient-executor.js.map +1 -0
  39. package/dist/execution/resilience/retry.js +234 -0
  40. package/dist/execution/resilience/retry.js.map +1 -0
  41. package/dist/execution/resilience/types.js +30 -0
  42. package/dist/execution/resilience/types.js.map +1 -0
  43. package/dist/execution/transport/event-buffer.js +208 -0
  44. package/dist/execution/transport/event-buffer.js.map +1 -0
  45. package/dist/execution/transport/index.js +10 -0
  46. package/dist/execution/transport/index.js.map +1 -0
  47. package/dist/execution/transport/sse-transport.js +282 -0
  48. package/dist/execution/transport/sse-transport.js.map +1 -0
  49. package/dist/execution/transport/transport-manager.js +231 -0
  50. package/dist/execution/transport/transport-manager.js.map +1 -0
  51. package/dist/execution/workflow/index.js +13 -0
  52. package/dist/execution/workflow/index.js.map +1 -0
  53. package/dist/execution/workflow/linear-orchestrator.js +683 -0
  54. package/dist/execution/workflow/linear-orchestrator.js.map +1 -0
  55. package/dist/execution/workflow/memory-storage.js +68 -0
  56. package/dist/execution/workflow/memory-storage.js.map +1 -0
  57. package/dist/execution/workflow/orchestrator.js +9 -0
  58. package/dist/execution/workflow/orchestrator.js.map +1 -0
  59. package/dist/execution/workflow/types.js +9 -0
  60. package/dist/execution/workflow/types.js.map +1 -0
  61. package/dist/execution/workflow/utils.js +152 -0
  62. package/dist/execution/workflow/utils.js.map +1 -0
  63. package/dist/execution/worktree/config.js +280 -0
  64. package/dist/execution/worktree/config.js.map +1 -0
  65. package/dist/execution/worktree/git-cli.js +189 -0
  66. package/dist/execution/worktree/git-cli.js.map +1 -0
  67. package/dist/execution/worktree/index.js +15 -0
  68. package/dist/execution/worktree/index.js.map +1 -0
  69. package/dist/execution/worktree/manager.js +452 -0
  70. package/dist/execution/worktree/manager.js.map +1 -0
  71. package/dist/execution/worktree/types.js +42 -0
  72. package/dist/execution/worktree/types.js.map +1 -0
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +357 -104
  75. package/dist/index.js.map +1 -7
  76. package/dist/routes/executions-stream.js +55 -0
  77. package/dist/routes/executions-stream.js.map +1 -0
  78. package/dist/routes/executions.js +267 -0
  79. package/dist/routes/executions.js.map +1 -0
  80. package/dist/routes/feedback.js +329 -0
  81. package/dist/routes/feedback.js.map +1 -0
  82. package/dist/routes/issues.js +280 -0
  83. package/dist/routes/issues.js.map +1 -0
  84. package/dist/routes/relationships.js +308 -0
  85. package/dist/routes/relationships.js.map +1 -0
  86. package/dist/routes/specs.js +270 -0
  87. package/dist/routes/specs.js.map +1 -0
  88. package/dist/services/db.js +85 -0
  89. package/dist/services/db.js.map +1 -0
  90. package/dist/services/execution-lifecycle.d.ts.map +1 -1
  91. package/dist/services/execution-lifecycle.js +291 -0
  92. package/dist/services/execution-lifecycle.js.map +1 -0
  93. package/dist/services/execution-service.js +676 -0
  94. package/dist/services/execution-service.js.map +1 -0
  95. package/dist/services/executions.js +164 -0
  96. package/dist/services/executions.js.map +1 -0
  97. package/dist/services/export.js +106 -0
  98. package/dist/services/export.js.map +1 -0
  99. package/dist/services/feedback.js +54 -0
  100. package/dist/services/feedback.js.map +1 -0
  101. package/dist/services/issues.js +35 -0
  102. package/dist/services/issues.js.map +1 -0
  103. package/dist/services/prompt-template-engine.js +212 -0
  104. package/dist/services/prompt-template-engine.js.map +1 -0
  105. package/dist/services/prompt-templates.js +236 -0
  106. package/dist/services/prompt-templates.js.map +1 -0
  107. package/dist/services/relationships.js +42 -0
  108. package/dist/services/relationships.js.map +1 -0
  109. package/dist/services/specs.js +35 -0
  110. package/dist/services/specs.js.map +1 -0
  111. package/dist/services/watcher.js +69 -0
  112. package/dist/services/watcher.js.map +1 -0
  113. package/dist/services/websocket.js +389 -0
  114. package/dist/services/websocket.js.map +1 -0
  115. package/dist/utils/sudocode-dir.js +9 -0
  116. package/dist/utils/sudocode-dir.js.map +1 -0
  117. 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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"}