xibecode 1.0.3 → 1.0.6
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/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +10 -7
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/diagnostics.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run-pr.d.ts.map +1 -1
- package/dist/commands/run-pr.js +10 -9
- package/dist/commands/run-pr.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +14 -13
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +3 -2
- package/dist/commands/skills.js.map +1 -1
- package/dist/components/AssistantMarkdown.js +1 -1
- package/dist/components/AssistantMarkdown.js.map +1 -1
- package/dist/ui/claude-style-chat.d.ts.map +1 -1
- package/dist/ui/claude-style-chat.js +12 -10
- package/dist/ui/claude-style-chat.js.map +1 -1
- package/dist/utils/built-in-skills-dir.d.ts +7 -0
- package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
- package/dist/utils/built-in-skills-dir.js +11 -0
- package/dist/utils/built-in-skills-dir.js.map +1 -0
- package/dist/utils/config.d.ts +2 -119
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +3 -88
- package/dist/utils/config.js.map +1 -1
- package/package.json +11 -17
- package/dist/commands/punycode.d.ts +0 -5
- package/dist/commands/punycode.d.ts.map +0 -1
- package/dist/commands/punycode.js +0 -48
- package/dist/commands/punycode.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -9
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -83
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/agent-tool-policies.d.ts +0 -5
- package/dist/core/agent-tool-policies.d.ts.map +0 -1
- package/dist/core/agent-tool-policies.js +0 -18
- package/dist/core/agent-tool-policies.js.map +0 -1
- package/dist/core/agent.d.ts +0 -181
- package/dist/core/agent.d.ts.map +0 -1
- package/dist/core/agent.js +0 -1777
- package/dist/core/agent.js.map +0 -1
- package/dist/core/background-agent.d.ts +0 -23
- package/dist/core/background-agent.d.ts.map +0 -1
- package/dist/core/background-agent.js +0 -175
- package/dist/core/background-agent.js.map +0 -1
- package/dist/core/code-graph.d.ts +0 -18
- package/dist/core/code-graph.d.ts.map +0 -1
- package/dist/core/code-graph.js +0 -105
- package/dist/core/code-graph.js.map +0 -1
- package/dist/core/conflict-solver.d.ts +0 -26
- package/dist/core/conflict-solver.d.ts.map +0 -1
- package/dist/core/conflict-solver.js +0 -108
- package/dist/core/conflict-solver.js.map +0 -1
- package/dist/core/context-compactor.d.ts +0 -10
- package/dist/core/context-compactor.d.ts.map +0 -1
- package/dist/core/context-compactor.js +0 -158
- package/dist/core/context-compactor.js.map +0 -1
- package/dist/core/context-pruner.d.ts +0 -19
- package/dist/core/context-pruner.d.ts.map +0 -1
- package/dist/core/context-pruner.js +0 -103
- package/dist/core/context-pruner.js.map +0 -1
- package/dist/core/context.d.ts +0 -82
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js +0 -273
- package/dist/core/context.js.map +0 -1
- package/dist/core/conversation-recovery.d.ts +0 -9
- package/dist/core/conversation-recovery.d.ts.map +0 -1
- package/dist/core/conversation-recovery.js +0 -15
- package/dist/core/conversation-recovery.js.map +0 -1
- package/dist/core/debug-workflow.d.ts +0 -9
- package/dist/core/debug-workflow.d.ts.map +0 -1
- package/dist/core/debug-workflow.js +0 -19
- package/dist/core/debug-workflow.js.map +0 -1
- package/dist/core/docs-scraper.d.ts +0 -40
- package/dist/core/docs-scraper.d.ts.map +0 -1
- package/dist/core/docs-scraper.js +0 -386
- package/dist/core/docs-scraper.js.map +0 -1
- package/dist/core/editor.d.ts +0 -87
- package/dist/core/editor.d.ts.map +0 -1
- package/dist/core/editor.js +0 -377
- package/dist/core/editor.js.map +0 -1
- package/dist/core/export.d.ts +0 -11
- package/dist/core/export.d.ts.map +0 -1
- package/dist/core/export.js +0 -54
- package/dist/core/export.js.map +0 -1
- package/dist/core/history-manager.d.ts +0 -75
- package/dist/core/history-manager.d.ts.map +0 -1
- package/dist/core/history-manager.js +0 -146
- package/dist/core/history-manager.js.map +0 -1
- package/dist/core/marketplace-client.d.ts +0 -52
- package/dist/core/marketplace-client.d.ts.map +0 -1
- package/dist/core/marketplace-client.js +0 -71
- package/dist/core/marketplace-client.js.map +0 -1
- package/dist/core/mcp/mcp-config.d.ts +0 -10
- package/dist/core/mcp/mcp-config.d.ts.map +0 -1
- package/dist/core/mcp/mcp-config.js +0 -70
- package/dist/core/mcp/mcp-config.js.map +0 -1
- package/dist/core/mcp/mcp-policy.d.ts +0 -17
- package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
- package/dist/core/mcp/mcp-policy.js +0 -56
- package/dist/core/mcp/mcp-policy.js.map +0 -1
- package/dist/core/mcp/oauth-flow.d.ts +0 -30
- package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
- package/dist/core/mcp/oauth-flow.js +0 -230
- package/dist/core/mcp/oauth-flow.js.map +0 -1
- package/dist/core/mcp/oauth-store.d.ts +0 -13
- package/dist/core/mcp/oauth-store.d.ts.map +0 -1
- package/dist/core/mcp/oauth-store.js +0 -68
- package/dist/core/mcp/oauth-store.js.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
- package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.js +0 -83
- package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
- package/dist/core/mcp-client.d.ts +0 -99
- package/dist/core/mcp-client.d.ts.map +0 -1
- package/dist/core/mcp-client.js +0 -317
- package/dist/core/mcp-client.js.map +0 -1
- package/dist/core/memory-promotions.d.ts +0 -15
- package/dist/core/memory-promotions.d.ts.map +0 -1
- package/dist/core/memory-promotions.js +0 -38
- package/dist/core/memory-promotions.js.map +0 -1
- package/dist/core/memory.d.ts +0 -32
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/memory.js +0 -121
- package/dist/core/memory.js.map +0 -1
- package/dist/core/modes.d.ts +0 -432
- package/dist/core/modes.d.ts.map +0 -1
- package/dist/core/modes.js +0 -1094
- package/dist/core/modes.js.map +0 -1
- package/dist/core/pattern-miner.d.ts +0 -43
- package/dist/core/pattern-miner.d.ts.map +0 -1
- package/dist/core/pattern-miner.js +0 -123
- package/dist/core/pattern-miner.js.map +0 -1
- package/dist/core/permission-store.d.ts +0 -15
- package/dist/core/permission-store.d.ts.map +0 -1
- package/dist/core/permission-store.js +0 -30
- package/dist/core/permission-store.js.map +0 -1
- package/dist/core/permissions.d.ts +0 -33
- package/dist/core/permissions.d.ts.map +0 -1
- package/dist/core/permissions.js +0 -141
- package/dist/core/permissions.js.map +0 -1
- package/dist/core/plan-artifacts.d.ts +0 -10
- package/dist/core/plan-artifacts.d.ts.map +0 -1
- package/dist/core/plan-artifacts.js +0 -60
- package/dist/core/plan-artifacts.js.map +0 -1
- package/dist/core/plan-session.d.ts +0 -25
- package/dist/core/plan-session.d.ts.map +0 -1
- package/dist/core/plan-session.js +0 -99
- package/dist/core/plan-session.js.map +0 -1
- package/dist/core/planMode.d.ts +0 -51
- package/dist/core/planMode.d.ts.map +0 -1
- package/dist/core/planMode.js +0 -245
- package/dist/core/planMode.js.map +0 -1
- package/dist/core/plugins.d.ts +0 -96
- package/dist/core/plugins.d.ts.map +0 -1
- package/dist/core/plugins.js +0 -204
- package/dist/core/plugins.js.map +0 -1
- package/dist/core/session-bridge.d.ts +0 -128
- package/dist/core/session-bridge.d.ts.map +0 -1
- package/dist/core/session-bridge.js +0 -328
- package/dist/core/session-bridge.js.map +0 -1
- package/dist/core/session-manager.d.ts +0 -80
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js +0 -166
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/session-memory.d.ts +0 -45
- package/dist/core/session-memory.d.ts.map +0 -1
- package/dist/core/session-memory.js +0 -103
- package/dist/core/session-memory.js.map +0 -1
- package/dist/core/skill-selection.d.ts +0 -36
- package/dist/core/skill-selection.d.ts.map +0 -1
- package/dist/core/skill-selection.js +0 -172
- package/dist/core/skill-selection.js.map +0 -1
- package/dist/core/skills-sh-client.d.ts +0 -19
- package/dist/core/skills-sh-client.d.ts.map +0 -1
- package/dist/core/skills-sh-client.js +0 -75
- package/dist/core/skills-sh-client.js.map +0 -1
- package/dist/core/skills.d.ts +0 -97
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -339
- package/dist/core/skills.js.map +0 -1
- package/dist/core/swarm.d.ts +0 -34
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -111
- package/dist/core/swarm.js.map +0 -1
- package/dist/core/task-status.d.ts +0 -13
- package/dist/core/task-status.d.ts.map +0 -1
- package/dist/core/task-status.js +0 -17
- package/dist/core/task-status.js.map +0 -1
- package/dist/core/tool-orchestrator.d.ts +0 -30
- package/dist/core/tool-orchestrator.d.ts.map +0 -1
- package/dist/core/tool-orchestrator.js +0 -89
- package/dist/core/tool-orchestrator.js.map +0 -1
- package/dist/core/tools.d.ts +0 -462
- package/dist/core/tools.d.ts.map +0 -1
- package/dist/core/tools.js +0 -2916
- package/dist/core/tools.js.map +0 -1
- package/dist/core/transcript-cleanup.d.ts +0 -8
- package/dist/core/transcript-cleanup.d.ts.map +0 -1
- package/dist/core/transcript-cleanup.js +0 -52
- package/dist/core/transcript-cleanup.js.map +0 -1
- package/dist/core/visual-feedback.d.ts +0 -20
- package/dist/core/visual-feedback.d.ts.map +0 -1
- package/dist/core/visual-feedback.js +0 -117
- package/dist/core/visual-feedback.js.map +0 -1
- package/dist/tools/browser.d.ts +0 -120
- package/dist/tools/browser.d.ts.map +0 -1
- package/dist/tools/browser.js +0 -439
- package/dist/tools/browser.js.map +0 -1
- package/dist/tools/test-generator.d.ts +0 -157
- package/dist/tools/test-generator.d.ts.map +0 -1
- package/dist/tools/test-generator.js +0 -893
- package/dist/tools/test-generator.js.map +0 -1
- package/dist/tui/InkApp.d.ts +0 -21
- package/dist/tui/InkApp.d.ts.map +0 -1
- package/dist/tui/InkApp.js +0 -146
- package/dist/tui/InkApp.js.map +0 -1
- package/dist/tui/MarkdownMessage.d.ts +0 -16
- package/dist/tui/MarkdownMessage.d.ts.map +0 -1
- package/dist/tui/MarkdownMessage.js +0 -63
- package/dist/tui/MarkdownMessage.js.map +0 -1
- package/dist/tui/blessed-chat.d.ts +0 -9
- package/dist/tui/blessed-chat.d.ts.map +0 -1
- package/dist/tui/blessed-chat.js +0 -887
- package/dist/tui/blessed-chat.js.map +0 -1
- package/dist/tui/markdown-to-blessed.d.ts +0 -6
- package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
- package/dist/tui/markdown-to-blessed.js +0 -26
- package/dist/tui/markdown-to-blessed.js.map +0 -1
- package/dist/ui/ink/App.d.ts +0 -25
- package/dist/ui/ink/App.d.ts.map +0 -1
- package/dist/ui/ink/App.js +0 -372
- package/dist/ui/ink/App.js.map +0 -1
- package/dist/utils/at-references.d.ts +0 -14
- package/dist/utils/at-references.d.ts.map +0 -1
- package/dist/utils/at-references.js +0 -47
- package/dist/utils/at-references.js.map +0 -1
- package/dist/utils/auto-memory.d.ts +0 -24
- package/dist/utils/auto-memory.d.ts.map +0 -1
- package/dist/utils/auto-memory.js +0 -153
- package/dist/utils/auto-memory.js.map +0 -1
- package/dist/utils/git.d.ts +0 -89
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -444
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/mcp-servers-file.d.ts +0 -46
- package/dist/utils/mcp-servers-file.d.ts.map +0 -1
- package/dist/utils/mcp-servers-file.js +0 -212
- package/dist/utils/mcp-servers-file.js.map +0 -1
- package/dist/utils/safety.d.ts +0 -60
- package/dist/utils/safety.d.ts.map +0 -1
- package/dist/utils/safety.js +0 -254
- package/dist/utils/safety.js.map +0 -1
- package/dist/utils/smithery.d.ts +0 -25
- package/dist/utils/smithery.d.ts.map +0 -1
- package/dist/utils/smithery.js +0 -50
- package/dist/utils/smithery.js.map +0 -1
- package/dist/utils/testRunner.d.ts +0 -44
- package/dist/utils/testRunner.d.ts.map +0 -1
- package/dist/utils/testRunner.js +0 -270
- package/dist/utils/testRunner.js.map +0 -1
package/dist/core/editor.js
DELETED
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs/promises';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as diff from 'diff';
|
|
4
|
-
import { sanitizePath } from '../utils/safety.js';
|
|
5
|
-
export class FileEditor {
|
|
6
|
-
workingDir;
|
|
7
|
-
backupDir;
|
|
8
|
-
constructor(workingDir) {
|
|
9
|
-
this.workingDir = workingDir;
|
|
10
|
-
this.backupDir = path.join(workingDir, '.xibecode_backups');
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Resolve filePath under workingDir (same rules as read_file / write_file).
|
|
14
|
-
* Rejects absolute paths outside the working directory (e.g. hallucinated /workspace/...).
|
|
15
|
-
*/
|
|
16
|
-
resolveSafePath(filePath) {
|
|
17
|
-
const r = sanitizePath(this.workingDir, filePath);
|
|
18
|
-
if (!r.ok) {
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
message: `${r.message} Use paths relative to the repository root (e.g. package.json, src/foo.ts), not absolute paths like /workspace or /app.`,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return { ok: true, fullPath: r.path };
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Smart edit - searches for unique section and replaces it
|
|
28
|
-
* This is the most reliable way to edit files
|
|
29
|
-
*/
|
|
30
|
-
async smartEdit(filePath, edit) {
|
|
31
|
-
const resolved = this.resolveSafePath(filePath);
|
|
32
|
-
if (!resolved.ok) {
|
|
33
|
-
return { success: false, message: resolved.message };
|
|
34
|
-
}
|
|
35
|
-
const fullPath = resolved.fullPath;
|
|
36
|
-
try {
|
|
37
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
38
|
-
// Count occurrences
|
|
39
|
-
const occurrences = (content.match(new RegExp(this.escapeRegex(edit.search), 'g')) || []).length;
|
|
40
|
-
if (occurrences === 0) {
|
|
41
|
-
return {
|
|
42
|
-
success: false,
|
|
43
|
-
message: `Search string not found in ${filePath}`,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
if (occurrences > 1 && !edit.all) {
|
|
47
|
-
return {
|
|
48
|
-
success: false,
|
|
49
|
-
message: `Search string appears ${occurrences} times. Please be more specific or use all:true`,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
// Perform replacement
|
|
53
|
-
const newContent = edit.all
|
|
54
|
-
? content.replaceAll(edit.search, edit.replace)
|
|
55
|
-
: content.replace(edit.search, edit.replace);
|
|
56
|
-
// Create backup
|
|
57
|
-
await this.createBackup(filePath, content);
|
|
58
|
-
// Write new content
|
|
59
|
-
await fs.writeFile(fullPath, newContent, 'utf-8');
|
|
60
|
-
// Generate diff
|
|
61
|
-
const patches = diff.createPatch(filePath, content, newContent);
|
|
62
|
-
const linesChanged = this.countChangedLines(patches);
|
|
63
|
-
return {
|
|
64
|
-
success: true,
|
|
65
|
-
message: `Successfully edited ${filePath}`,
|
|
66
|
-
diff: patches,
|
|
67
|
-
linesChanged,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
return {
|
|
72
|
-
success: false,
|
|
73
|
-
message: `Failed to edit ${filePath}: ${error.message}`,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Edit specific line range - good for large files
|
|
79
|
-
*/
|
|
80
|
-
async editLineRange(filePath, edit) {
|
|
81
|
-
const resolved = this.resolveSafePath(filePath);
|
|
82
|
-
if (!resolved.ok) {
|
|
83
|
-
return { success: false, message: resolved.message };
|
|
84
|
-
}
|
|
85
|
-
const fullPath = resolved.fullPath;
|
|
86
|
-
try {
|
|
87
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
88
|
-
const lines = content.split('\n');
|
|
89
|
-
if (edit.startLine < 1 || edit.endLine > lines.length) {
|
|
90
|
-
return {
|
|
91
|
-
success: false,
|
|
92
|
-
message: `Invalid line range: ${edit.startLine}-${edit.endLine} (file has ${lines.length} lines)`,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
// Create backup
|
|
96
|
-
await this.createBackup(filePath, content);
|
|
97
|
-
// Replace lines
|
|
98
|
-
const newLines = [
|
|
99
|
-
...lines.slice(0, edit.startLine - 1),
|
|
100
|
-
...edit.newContent.split('\n'),
|
|
101
|
-
...lines.slice(edit.endLine),
|
|
102
|
-
];
|
|
103
|
-
const newContent = newLines.join('\n');
|
|
104
|
-
await fs.writeFile(fullPath, newContent, 'utf-8');
|
|
105
|
-
// Generate diff
|
|
106
|
-
const patches = diff.createPatch(filePath, content, newContent);
|
|
107
|
-
const linesChanged = this.countChangedLines(patches);
|
|
108
|
-
return {
|
|
109
|
-
success: true,
|
|
110
|
-
message: `Successfully edited lines ${edit.startLine}-${edit.endLine} in ${filePath}`,
|
|
111
|
-
diff: patches,
|
|
112
|
-
linesChanged,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
return {
|
|
117
|
-
success: false,
|
|
118
|
-
message: `Failed to edit ${filePath}: ${error.message}`,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Verified edit - requires old content to match before replacing.
|
|
124
|
-
* This is the most reliable editing method as it prevents hallucinated edits.
|
|
125
|
-
* If the old content doesn't match, returns the actual content so the AI can self-correct.
|
|
126
|
-
*/
|
|
127
|
-
async verifiedEdit(filePath, edit) {
|
|
128
|
-
const resolved = this.resolveSafePath(filePath);
|
|
129
|
-
if (!resolved.ok) {
|
|
130
|
-
return { success: false, message: resolved.message };
|
|
131
|
-
}
|
|
132
|
-
const fullPath = resolved.fullPath;
|
|
133
|
-
try {
|
|
134
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
135
|
-
const lines = content.split('\n');
|
|
136
|
-
// Validate line range
|
|
137
|
-
if (edit.startLine < 1 || edit.endLine > lines.length) {
|
|
138
|
-
return {
|
|
139
|
-
success: false,
|
|
140
|
-
message: `Invalid line range: ${edit.startLine}-${edit.endLine} (file has ${lines.length} lines)`,
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
if (edit.startLine > edit.endLine) {
|
|
144
|
-
return {
|
|
145
|
-
success: false,
|
|
146
|
-
message: `Invalid line range: start_line (${edit.startLine}) must be <= end_line (${edit.endLine})`,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
// Extract actual content at the specified lines
|
|
150
|
-
const actualLines = lines.slice(edit.startLine - 1, edit.endLine);
|
|
151
|
-
const actualContent = actualLines.join('\n');
|
|
152
|
-
// Normalize for comparison: trim trailing whitespace per line, then compare
|
|
153
|
-
const normalize = (s) => s.split('\n').map(l => l.trimEnd()).join('\n').trim();
|
|
154
|
-
const normalizedActual = normalize(actualContent);
|
|
155
|
-
const normalizedExpected = normalize(edit.oldContent);
|
|
156
|
-
if (normalizedActual !== normalizedExpected) {
|
|
157
|
-
return {
|
|
158
|
-
success: false,
|
|
159
|
-
message: `Content mismatch at lines ${edit.startLine}-${edit.endLine}. The old_content you provided does not match the actual file content. Re-read the file and try again.`,
|
|
160
|
-
actual_content: actualContent,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
// Content verified — proceed with edit
|
|
164
|
-
await this.createBackup(filePath, content);
|
|
165
|
-
const newLines = [
|
|
166
|
-
...lines.slice(0, edit.startLine - 1),
|
|
167
|
-
...edit.newContent.split('\n'),
|
|
168
|
-
...lines.slice(edit.endLine),
|
|
169
|
-
];
|
|
170
|
-
const newContent = newLines.join('\n');
|
|
171
|
-
await fs.writeFile(fullPath, newContent, 'utf-8');
|
|
172
|
-
// Generate diff
|
|
173
|
-
const patches = diff.createPatch(filePath, content, newContent);
|
|
174
|
-
const linesChanged = this.countChangedLines(patches);
|
|
175
|
-
return {
|
|
176
|
-
success: true,
|
|
177
|
-
message: `Successfully verified and edited lines ${edit.startLine}-${edit.endLine} in ${filePath}`,
|
|
178
|
-
diff: patches,
|
|
179
|
-
linesChanged,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
return {
|
|
184
|
-
success: false,
|
|
185
|
-
message: `Failed to edit ${filePath}: ${error.message}`,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Insert content at specific line
|
|
191
|
-
*/
|
|
192
|
-
async insertAtLine(filePath, line, content) {
|
|
193
|
-
const resolved = this.resolveSafePath(filePath);
|
|
194
|
-
if (!resolved.ok) {
|
|
195
|
-
return { success: false, message: resolved.message };
|
|
196
|
-
}
|
|
197
|
-
const fullPath = resolved.fullPath;
|
|
198
|
-
try {
|
|
199
|
-
const originalContent = await fs.readFile(fullPath, 'utf-8');
|
|
200
|
-
const lines = originalContent.split('\n');
|
|
201
|
-
if (line < 1 || line > lines.length + 1) {
|
|
202
|
-
return {
|
|
203
|
-
success: false,
|
|
204
|
-
message: `Invalid line number: ${line} (file has ${lines.length} lines)`,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
// Create backup
|
|
208
|
-
await this.createBackup(filePath, originalContent);
|
|
209
|
-
// Insert content
|
|
210
|
-
lines.splice(line - 1, 0, content);
|
|
211
|
-
const newContent = lines.join('\n');
|
|
212
|
-
await fs.writeFile(fullPath, newContent, 'utf-8');
|
|
213
|
-
return {
|
|
214
|
-
success: true,
|
|
215
|
-
message: `Successfully inserted content at line ${line} in ${filePath}`,
|
|
216
|
-
linesChanged: content.split('\n').length,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
catch (error) {
|
|
220
|
-
return {
|
|
221
|
-
success: false,
|
|
222
|
-
message: `Failed to insert in ${filePath}: ${error.message}`,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Apply unified diff patch
|
|
228
|
-
*/
|
|
229
|
-
async applyPatch(filePath, patch) {
|
|
230
|
-
const resolved = this.resolveSafePath(filePath);
|
|
231
|
-
if (!resolved.ok) {
|
|
232
|
-
return { success: false, message: resolved.message };
|
|
233
|
-
}
|
|
234
|
-
const fullPath = resolved.fullPath;
|
|
235
|
-
try {
|
|
236
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
237
|
-
// Create backup
|
|
238
|
-
await this.createBackup(filePath, content);
|
|
239
|
-
// Apply patch
|
|
240
|
-
const patches = diff.parsePatch(patch);
|
|
241
|
-
if (patches.length === 0) {
|
|
242
|
-
return {
|
|
243
|
-
success: false,
|
|
244
|
-
message: 'Invalid patch format',
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
const result = diff.applyPatch(content, patches[0]);
|
|
248
|
-
if (result === false) {
|
|
249
|
-
return {
|
|
250
|
-
success: false,
|
|
251
|
-
message: 'Patch could not be applied (content may have changed)',
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
await fs.writeFile(fullPath, result, 'utf-8');
|
|
255
|
-
return {
|
|
256
|
-
success: true,
|
|
257
|
-
message: `Successfully applied patch to ${filePath}`,
|
|
258
|
-
diff: patch,
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
catch (error) {
|
|
262
|
-
return {
|
|
263
|
-
success: false,
|
|
264
|
-
message: `Failed to apply patch to ${filePath}: ${error.message}`,
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Revert file to backup
|
|
270
|
-
*/
|
|
271
|
-
async revertToBackup(filePath, backupIndex = 0) {
|
|
272
|
-
const resolved = this.resolveSafePath(filePath);
|
|
273
|
-
if (!resolved.ok) {
|
|
274
|
-
return { success: false, message: resolved.message };
|
|
275
|
-
}
|
|
276
|
-
const backups = await this.listBackups(filePath);
|
|
277
|
-
if (backups.length === 0) {
|
|
278
|
-
return {
|
|
279
|
-
success: false,
|
|
280
|
-
message: `No backups found for ${filePath}`,
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
if (backupIndex >= backups.length) {
|
|
284
|
-
return {
|
|
285
|
-
success: false,
|
|
286
|
-
message: `Backup index ${backupIndex} not found (have ${backups.length} backups)`,
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
const backupPath = backups[backupIndex];
|
|
290
|
-
const fullPath = resolved.fullPath;
|
|
291
|
-
try {
|
|
292
|
-
const backupContent = await fs.readFile(backupPath, 'utf-8');
|
|
293
|
-
await fs.writeFile(fullPath, backupContent, 'utf-8');
|
|
294
|
-
return {
|
|
295
|
-
success: true,
|
|
296
|
-
message: `Successfully reverted ${filePath} to backup ${backupIndex}`,
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
catch (error) {
|
|
300
|
-
return {
|
|
301
|
-
success: false,
|
|
302
|
-
message: `Failed to revert: ${error.message}`,
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Create backup of file
|
|
308
|
-
*/
|
|
309
|
-
async createBackup(filePath, content) {
|
|
310
|
-
await fs.mkdir(this.backupDir, { recursive: true });
|
|
311
|
-
const timestamp = Date.now();
|
|
312
|
-
const backupName = `${filePath.replace(/[\/\\]/g, '_')}.${timestamp}.backup`;
|
|
313
|
-
const backupPath = path.join(this.backupDir, backupName);
|
|
314
|
-
await fs.writeFile(backupPath, content, 'utf-8');
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* List backups for a file
|
|
318
|
-
*/
|
|
319
|
-
async listBackups(filePath) {
|
|
320
|
-
try {
|
|
321
|
-
const backupPrefix = filePath.replace(/[\/\\]/g, '_');
|
|
322
|
-
const files = await fs.readdir(this.backupDir);
|
|
323
|
-
const backups = files
|
|
324
|
-
.filter(f => f.startsWith(backupPrefix) && f.endsWith('.backup'))
|
|
325
|
-
.sort((a, b) => {
|
|
326
|
-
const timeA = parseInt(a.split('.')[1]);
|
|
327
|
-
const timeB = parseInt(b.split('.')[1]);
|
|
328
|
-
return timeB - timeA; // Most recent first
|
|
329
|
-
})
|
|
330
|
-
.map(f => path.join(this.backupDir, f));
|
|
331
|
-
return backups;
|
|
332
|
-
}
|
|
333
|
-
catch {
|
|
334
|
-
return [];
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Count changed lines in diff
|
|
339
|
-
*/
|
|
340
|
-
countChangedLines(patch) {
|
|
341
|
-
const lines = patch.split('\n');
|
|
342
|
-
return lines.filter(l => l.startsWith('+') || l.startsWith('-')).length;
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Escape special regex characters
|
|
346
|
-
*/
|
|
347
|
-
escapeRegex(str) {
|
|
348
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Get file info for display
|
|
352
|
-
*/
|
|
353
|
-
async getFileInfo(filePath) {
|
|
354
|
-
const resolved = this.resolveSafePath(filePath);
|
|
355
|
-
if (!resolved.ok) {
|
|
356
|
-
return { exists: false };
|
|
357
|
-
}
|
|
358
|
-
const fullPath = resolved.fullPath;
|
|
359
|
-
try {
|
|
360
|
-
const stats = await fs.stat(fullPath);
|
|
361
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
362
|
-
const lines = content.split('\n');
|
|
363
|
-
// Get first 10 lines as preview
|
|
364
|
-
const preview = lines.slice(0, 10).join('\n');
|
|
365
|
-
return {
|
|
366
|
-
exists: true,
|
|
367
|
-
lines: lines.length,
|
|
368
|
-
size: stats.size,
|
|
369
|
-
preview,
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
catch {
|
|
373
|
-
return { exists: false };
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
//# sourceMappingURL=editor.js.map
|
package/dist/core/editor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/core/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4BlD,MAAM,OAAO,UAAU;IACb,UAAU,CAAS;IACnB,SAAS,CAAS;IAE1B,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,QAAgB;QACtC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,yHAAyH;aAC/I,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,IAAuB;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD,oBAAoB;YACpB,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAEjG,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,8BAA8B,QAAQ,EAAE;iBAClD,CAAC;YACJ,CAAC;YAED,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,yBAAyB,WAAW,iDAAiD;iBAC/F,CAAC;YACJ,CAAC;YAED,sBAAsB;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;gBACzB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;gBAC/C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAE/C,gBAAgB;YAChB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE3C,oBAAoB;YACpB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,gBAAgB;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,uBAAuB,QAAQ,EAAE;gBAC1C,IAAI,EAAE,OAAO;gBACb,YAAY;aACb,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,kBAAkB,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,IAAmB;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACtD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,uBAAuB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,SAAS;iBAClG,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE3C,gBAAgB;YAChB,MAAM,QAAQ,GAAG;gBACf,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACrC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC9B,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,CAAC;YAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,gBAAgB;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,6BAA6B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,OAAO,QAAQ,EAAE;gBACrF,IAAI,EAAE,OAAO;gBACb,YAAY;aACb,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,kBAAkB,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,IAAkB;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,sBAAsB;YACtB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACtD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,uBAAuB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,SAAS;iBAClG,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,mCAAmC,IAAI,CAAC,SAAS,0BAA0B,IAAI,CAAC,OAAO,GAAG;iBACpG,CAAC;YACJ,CAAC;YAED,gDAAgD;YAChD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7C,4EAA4E;YAC5E,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACvF,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEtD,IAAI,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,6BAA6B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,wGAAwG;oBAC5K,cAAc,EAAE,aAAa;iBAC9B,CAAC;YACJ,CAAC;YAED,uCAAuC;YACvC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE3C,MAAM,QAAQ,GAAG;gBACf,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACrC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC9B,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,CAAC;YAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,gBAAgB;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,0CAA0C,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,OAAO,QAAQ,EAAE;gBAClG,IAAI,EAAE,OAAO;gBACb,YAAY;aACb,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,kBAAkB,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,IAAY,EAAE,OAAe;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,wBAAwB,IAAI,cAAc,KAAK,CAAC,MAAM,SAAS;iBACzE,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAEnD,iBAAiB;YACjB,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,yCAAyC,IAAI,OAAO,QAAQ,EAAE;gBACvE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;aACzC,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,uBAAuB,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,KAAa;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD,gBAAgB;YAChB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE3C,cAAc;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,sBAAsB;iBAChC,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,uDAAuD;iBACjE,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAgB,EAAE,OAAO,CAAC,CAAC;YAExD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,iCAAiC,QAAQ,EAAE;gBACpD,IAAI,EAAE,KAAK;aACZ,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,4BAA4B,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,cAAsB,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,wBAAwB,QAAQ,EAAE;aAC5C,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,gBAAgB,WAAW,oBAAoB,OAAO,CAAC,MAAM,WAAW;aAClF,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,yBAAyB,QAAQ,cAAc,WAAW,EAAE;aACtE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,qBAAqB,KAAK,CAAC,OAAO,EAAE;aAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,OAAe;QAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,SAAS,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,KAAK;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;iBAChE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACb,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,oBAAoB;YAC5C,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAE1C,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAa;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAMhC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,gCAAgC;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
|
package/dist/core/export.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { MessageParam } from '@anthropic-ai/sdk/resources/messages';
|
|
2
|
-
import type { ChatSession } from './session-manager.js';
|
|
3
|
-
export interface ExportMetadata {
|
|
4
|
-
title: string;
|
|
5
|
-
model: string;
|
|
6
|
-
created?: string;
|
|
7
|
-
updated?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function exportMessagesToMarkdown(messages: MessageParam[], meta: ExportMetadata): string;
|
|
10
|
-
export declare function exportSessionToMarkdown(session: ChatSession): string;
|
|
11
|
-
//# sourceMappingURL=export.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/core/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,EAAE,cAAc,GACnB,MAAM,CAiCR;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAOpE"}
|
package/dist/core/export.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export function exportMessagesToMarkdown(messages, meta) {
|
|
2
|
-
const lines = [];
|
|
3
|
-
lines.push(`# XibeCode Session: ${meta.title || 'Untitled Session'}`);
|
|
4
|
-
lines.push('');
|
|
5
|
-
lines.push(`**Model**: ${meta.model}`);
|
|
6
|
-
if (meta.created) {
|
|
7
|
-
lines.push(`**Created**: ${meta.created}`);
|
|
8
|
-
}
|
|
9
|
-
if (meta.updated) {
|
|
10
|
-
lines.push(`**Updated**: ${meta.updated}`);
|
|
11
|
-
}
|
|
12
|
-
lines.push('');
|
|
13
|
-
lines.push('## Conversation');
|
|
14
|
-
lines.push('');
|
|
15
|
-
for (const msg of messages) {
|
|
16
|
-
if (msg.role === 'user') {
|
|
17
|
-
const content = renderContent(msg);
|
|
18
|
-
lines.push('**You**:');
|
|
19
|
-
lines.push('');
|
|
20
|
-
lines.push(content);
|
|
21
|
-
lines.push('');
|
|
22
|
-
}
|
|
23
|
-
else if (msg.role === 'assistant') {
|
|
24
|
-
const content = renderContent(msg);
|
|
25
|
-
lines.push('**Assistant**:');
|
|
26
|
-
lines.push('');
|
|
27
|
-
lines.push(content);
|
|
28
|
-
lines.push('');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return lines.join('\n');
|
|
32
|
-
}
|
|
33
|
-
export function exportSessionToMarkdown(session) {
|
|
34
|
-
return exportMessagesToMarkdown(session.messages, {
|
|
35
|
-
title: session.title,
|
|
36
|
-
model: session.model,
|
|
37
|
-
created: session.created,
|
|
38
|
-
updated: session.updated,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function renderContent(msg) {
|
|
42
|
-
if (typeof msg.content === 'string')
|
|
43
|
-
return msg.content;
|
|
44
|
-
if (!Array.isArray(msg.content))
|
|
45
|
-
return '';
|
|
46
|
-
const parts = [];
|
|
47
|
-
for (const block of msg.content) {
|
|
48
|
-
if (block.type === 'text' && block.text) {
|
|
49
|
-
parts.push(block.text);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return parts.join('\n');
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=export.js.map
|
package/dist/core/export.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/core/export.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,wBAAwB,CACtC,QAAwB,EACxB,IAAoB;IAEpB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,KAAK,IAAI,kBAAkB,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAoB;IAC1D,OAAO,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,GAAiB;IACtC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAgB,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chat History Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages persistent chat conversations stored per-project in:
|
|
5
|
-
* ~/.xibecode/history/{project-hash}/
|
|
6
|
-
*
|
|
7
|
-
* Each conversation is stored as a JSON file with full message history.
|
|
8
|
-
*/
|
|
9
|
-
export interface HistoryMessage {
|
|
10
|
-
id: string;
|
|
11
|
-
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
12
|
-
content: string;
|
|
13
|
-
source?: 'tui' | 'webui';
|
|
14
|
-
toolName?: string;
|
|
15
|
-
toolStatus?: 'running' | 'success' | 'error';
|
|
16
|
-
timestamp: number;
|
|
17
|
-
}
|
|
18
|
-
export interface SavedConversation {
|
|
19
|
-
id: string;
|
|
20
|
-
title: string;
|
|
21
|
-
projectPath: string;
|
|
22
|
-
projectName: string;
|
|
23
|
-
created: string;
|
|
24
|
-
updated: string;
|
|
25
|
-
model: string;
|
|
26
|
-
mode: string;
|
|
27
|
-
messages: HistoryMessage[];
|
|
28
|
-
}
|
|
29
|
-
export interface ConversationSummary {
|
|
30
|
-
id: string;
|
|
31
|
-
title: string;
|
|
32
|
-
created: string;
|
|
33
|
-
updated: string;
|
|
34
|
-
messageCount: number;
|
|
35
|
-
model: string;
|
|
36
|
-
}
|
|
37
|
-
export declare class HistoryManager {
|
|
38
|
-
private workingDir;
|
|
39
|
-
private baseDir;
|
|
40
|
-
private projectDir;
|
|
41
|
-
constructor(workingDir: string);
|
|
42
|
-
/**
|
|
43
|
-
* Generate a safe directory name from the project path
|
|
44
|
-
*/
|
|
45
|
-
private getProjectHash;
|
|
46
|
-
/**
|
|
47
|
-
* Ensure the history directory exists
|
|
48
|
-
*/
|
|
49
|
-
private ensureDir;
|
|
50
|
-
/**
|
|
51
|
-
* Generate a title from the first user message
|
|
52
|
-
*/
|
|
53
|
-
static summarizeTitle(firstMessage: string): string;
|
|
54
|
-
/**
|
|
55
|
-
* Save a conversation (create or update)
|
|
56
|
-
*/
|
|
57
|
-
save(conversation: SavedConversation): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Load a conversation by ID
|
|
60
|
-
*/
|
|
61
|
-
load(id: string): Promise<SavedConversation | null>;
|
|
62
|
-
/**
|
|
63
|
-
* List all conversations for this project (sorted by updated, newest first)
|
|
64
|
-
*/
|
|
65
|
-
list(): Promise<ConversationSummary[]>;
|
|
66
|
-
/**
|
|
67
|
-
* Delete a conversation
|
|
68
|
-
*/
|
|
69
|
-
delete(id: string): Promise<boolean>;
|
|
70
|
-
/**
|
|
71
|
-
* Create a new conversation with a generated ID
|
|
72
|
-
*/
|
|
73
|
-
static createConversation(projectPath: string, firstMessage: string, model?: string, mode?: string): SavedConversation;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=history-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history-manager.d.ts","sourceRoot":"","sources":["../../src/core/history-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,cAAc;IAIb,OAAO,CAAC,UAAU;IAH9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEP,UAAU,EAAE,MAAM;IAKtC;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,SAAS;IAIvB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAanD;;OAEG;IACG,IAAI,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAUzD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAyC5C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,MAAW,EAClB,IAAI,GAAE,MAAgB,GACrB,iBAAiB;CAcrB"}
|