gencode-ai 0.1.0
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/.env.example +11 -0
- package/CLAUDE.md +70 -0
- package/LICENSE +21 -0
- package/README.md +117 -0
- package/dist/agent/agent.d.ts +84 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +233 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/index.d.ts +6 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +6 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/types.d.ts +47 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/cli/components/App.d.ts +14 -0
- package/dist/cli/components/App.d.ts.map +1 -0
- package/dist/cli/components/App.js +395 -0
- package/dist/cli/components/App.js.map +1 -0
- package/dist/cli/components/CommandSuggestions.d.ts +13 -0
- package/dist/cli/components/CommandSuggestions.d.ts.map +1 -0
- package/dist/cli/components/CommandSuggestions.js +32 -0
- package/dist/cli/components/CommandSuggestions.js.map +1 -0
- package/dist/cli/components/Header.d.ts +9 -0
- package/dist/cli/components/Header.d.ts.map +1 -0
- package/dist/cli/components/Header.js +13 -0
- package/dist/cli/components/Header.js.map +1 -0
- package/dist/cli/components/Input.d.ts +13 -0
- package/dist/cli/components/Input.d.ts.map +1 -0
- package/dist/cli/components/Input.js +27 -0
- package/dist/cli/components/Input.js.map +1 -0
- package/dist/cli/components/Logo.d.ts +2 -0
- package/dist/cli/components/Logo.d.ts.map +1 -0
- package/dist/cli/components/Logo.js +8 -0
- package/dist/cli/components/Logo.js.map +1 -0
- package/dist/cli/components/Messages.d.ts +37 -0
- package/dist/cli/components/Messages.d.ts.map +1 -0
- package/dist/cli/components/Messages.js +106 -0
- package/dist/cli/components/Messages.js.map +1 -0
- package/dist/cli/components/ModelSelector.d.ts +13 -0
- package/dist/cli/components/ModelSelector.d.ts.map +1 -0
- package/dist/cli/components/ModelSelector.js +72 -0
- package/dist/cli/components/ModelSelector.js.map +1 -0
- package/dist/cli/components/Spinner.d.ts +12 -0
- package/dist/cli/components/Spinner.d.ts.map +1 -0
- package/dist/cli/components/Spinner.js +45 -0
- package/dist/cli/components/Spinner.js.map +1 -0
- package/dist/cli/components/index.d.ts +12 -0
- package/dist/cli/components/index.d.ts.map +1 -0
- package/dist/cli/components/index.js +12 -0
- package/dist/cli/components/index.js.map +1 -0
- package/dist/cli/components/theme.d.ts +31 -0
- package/dist/cli/components/theme.d.ts.map +1 -0
- package/dist/cli/components/theme.js +36 -0
- package/dist/cli/components/theme.js.map +1 -0
- package/dist/cli/index-legacy.d.ts +7 -0
- package/dist/cli/index-legacy.d.ts.map +1 -0
- package/dist/cli/index-legacy.js +431 -0
- package/dist/cli/index-legacy.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +116 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ink-cli.d.ts +7 -0
- package/dist/cli/ink-cli.d.ts.map +1 -0
- package/dist/cli/ink-cli.js +105 -0
- package/dist/cli/ink-cli.js.map +1 -0
- package/dist/cli/session-picker.d.ts +16 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +280 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli/ui.d.ts +61 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +364 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manager.d.ts +31 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +65 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/types.d.ts +22 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +10 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +9 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/init.d.ts +20 -0
- package/dist/memory/init.d.ts.map +1 -0
- package/dist/memory/init.js +332 -0
- package/dist/memory/init.js.map +1 -0
- package/dist/memory/manager.d.ts +85 -0
- package/dist/memory/manager.d.ts.map +1 -0
- package/dist/memory/manager.js +234 -0
- package/dist/memory/manager.js.map +1 -0
- package/dist/memory/types.d.ts +74 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +6 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/permissions/index.d.ts +7 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +6 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/manager.d.ts +32 -0
- package/dist/permissions/manager.d.ts.map +1 -0
- package/dist/permissions/manager.js +79 -0
- package/dist/permissions/manager.js.map +1 -0
- package/dist/permissions/types.d.ts +14 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/permissions/types.js +17 -0
- package/dist/permissions/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts +20 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +185 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/gemini.d.ts +21 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +241 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +34 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +72 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai.d.ts +19 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +221 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +125 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +6 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +6 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +101 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +295 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/types.d.ts +39 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +10 -0
- package/dist/session/types.js.map +1 -0
- package/dist/tools/builtin/bash.d.ts +7 -0
- package/dist/tools/builtin/bash.d.ts.map +1 -0
- package/dist/tools/builtin/bash.js +80 -0
- package/dist/tools/builtin/bash.js.map +1 -0
- package/dist/tools/builtin/edit.d.ts +7 -0
- package/dist/tools/builtin/edit.d.ts.map +1 -0
- package/dist/tools/builtin/edit.js +32 -0
- package/dist/tools/builtin/edit.js.map +1 -0
- package/dist/tools/builtin/glob.d.ts +7 -0
- package/dist/tools/builtin/glob.d.ts.map +1 -0
- package/dist/tools/builtin/glob.js +36 -0
- package/dist/tools/builtin/glob.js.map +1 -0
- package/dist/tools/builtin/grep.d.ts +7 -0
- package/dist/tools/builtin/grep.d.ts.map +1 -0
- package/dist/tools/builtin/grep.js +59 -0
- package/dist/tools/builtin/grep.js.map +1 -0
- package/dist/tools/builtin/read.d.ts +7 -0
- package/dist/tools/builtin/read.d.ts.map +1 -0
- package/dist/tools/builtin/read.js +29 -0
- package/dist/tools/builtin/read.js.map +1 -0
- package/dist/tools/builtin/write.d.ts +7 -0
- package/dist/tools/builtin/write.d.ts.map +1 -0
- package/dist/tools/builtin/write.js +24 -0
- package/dist/tools/builtin/write.js.map +1 -0
- package/dist/tools/index.d.ts +38 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +32 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +22 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +71 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +62 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +126 -0
- package/dist/tools/types.js.map +1 -0
- package/docs/README.md +16 -0
- package/docs/proposals/0001-web-fetch-tool.md +293 -0
- package/docs/proposals/0002-web-search-tool.md +306 -0
- package/docs/proposals/0003-task-subagents.md +333 -0
- package/docs/proposals/0004-plan-mode.md +338 -0
- package/docs/proposals/0005-todo-system.md +299 -0
- package/docs/proposals/0006-memory-system.md +539 -0
- package/docs/proposals/0007-context-management.md +429 -0
- package/docs/proposals/0008-checkpointing.md +327 -0
- package/docs/proposals/0009-hooks-system.md +343 -0
- package/docs/proposals/0010-mcp-integration.md +382 -0
- package/docs/proposals/0011-custom-commands.md +374 -0
- package/docs/proposals/0012-ask-user-question.md +317 -0
- package/docs/proposals/0013-multi-edit-tool.md +345 -0
- package/docs/proposals/0014-lsp-tool.md +478 -0
- package/docs/proposals/0015-ls-tool.md +407 -0
- package/docs/proposals/0016-kill-shell-tool.md +455 -0
- package/docs/proposals/0017-background-tasks.md +489 -0
- package/docs/proposals/0018-parallel-tool-execution.md +415 -0
- package/docs/proposals/0019-session-enhancements.md +462 -0
- package/docs/proposals/0020-session-summarization.md +447 -0
- package/docs/proposals/0021-skills-system.md +409 -0
- package/docs/proposals/0022-plugin-system.md +467 -0
- package/docs/proposals/0023-permission-enhancements.md +470 -0
- package/docs/proposals/0024-keyboard-shortcuts.md +443 -0
- package/docs/proposals/0025-cost-tracking.md +447 -0
- package/docs/proposals/0026-git-integration.md +475 -0
- package/docs/proposals/0027-enhanced-read-tool.md +514 -0
- package/docs/proposals/0028-enhanced-bash-tool.md +511 -0
- package/docs/proposals/0029-notebook-edit-tool.md +413 -0
- package/docs/proposals/0030-plugin-marketplace.md +360 -0
- package/docs/proposals/0031-command-suggestions.md +295 -0
- package/docs/proposals/0032-ide-integrations.md +328 -0
- package/docs/proposals/0033-enterprise-deployment.md +221 -0
- package/docs/proposals/0034-sandboxing.md +273 -0
- package/docs/proposals/0035-auto-updater.md +311 -0
- package/docs/proposals/0036-enhanced-glob-tool.md +267 -0
- package/docs/proposals/0037-enhanced-grep-tool.md +360 -0
- package/docs/proposals/0038-interactive-cli-ui.md +373 -0
- package/docs/proposals/0039-streaming-enhancements.md +359 -0
- package/docs/proposals/0040-multi-provider-enhancements.md +369 -0
- package/docs/proposals/README.md +84 -0
- package/docs/proposals/TEMPLATE.md +57 -0
- package/docs/proposals/research/claude-code-research.md +307 -0
- package/examples/agent-demo.ts +115 -0
- package/examples/basic.ts +166 -0
- package/package.json +50 -0
- package/src/agent/agent.ts +276 -0
- package/src/agent/index.ts +6 -0
- package/src/agent/types.ts +62 -0
- package/src/cli/components/App.tsx +565 -0
- package/src/cli/components/CommandSuggestions.tsx +58 -0
- package/src/cli/components/Header.tsx +36 -0
- package/src/cli/components/Input.tsx +60 -0
- package/src/cli/components/Logo.tsx +16 -0
- package/src/cli/components/Messages.tsx +210 -0
- package/src/cli/components/ModelSelector.tsx +135 -0
- package/src/cli/components/Spinner.tsx +72 -0
- package/src/cli/components/index.ts +21 -0
- package/src/cli/components/theme.ts +36 -0
- package/src/cli/index.tsx +136 -0
- package/src/config/index.ts +7 -0
- package/src/config/manager.ts +77 -0
- package/src/config/types.ts +25 -0
- package/src/index.ts +86 -0
- package/src/permissions/index.ts +7 -0
- package/src/permissions/manager.ts +97 -0
- package/src/permissions/types.ts +29 -0
- package/src/providers/anthropic.ts +224 -0
- package/src/providers/gemini.ts +295 -0
- package/src/providers/index.ts +97 -0
- package/src/providers/openai.ts +261 -0
- package/src/providers/types.ts +181 -0
- package/src/session/index.ts +6 -0
- package/src/session/manager.ts +354 -0
- package/src/session/types.ts +49 -0
- package/src/tools/builtin/bash.ts +92 -0
- package/src/tools/builtin/edit.ts +37 -0
- package/src/tools/builtin/glob.ts +42 -0
- package/src/tools/builtin/grep.ts +67 -0
- package/src/tools/builtin/read.ts +34 -0
- package/src/tools/builtin/write.ts +27 -0
- package/src/tools/index.ts +36 -0
- package/src/tools/registry.ts +83 -0
- package/src/tools/types.ts +172 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MemoryManager - Discovers, loads, and merges memory files
|
|
3
|
+
*
|
|
4
|
+
* Memory file priority (lowest to highest):
|
|
5
|
+
* 1. User memory (~/.mycode/AGENT.md) - global preferences
|
|
6
|
+
* 2. Project memory (CLAUDE.md or AGENT.md) - project-specific
|
|
7
|
+
* 3. Local memory (AGENT.local.md) - private project preferences
|
|
8
|
+
*
|
|
9
|
+
* CLAUDE.md takes precedence over AGENT.md for Claude Code compatibility.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from 'fs';
|
|
12
|
+
import { join, basename } from 'path';
|
|
13
|
+
import { homedir } from 'os';
|
|
14
|
+
// Memory file names in priority order (first match wins for each type)
|
|
15
|
+
// CLAUDE.md for Claude Code compatibility, AGENT.md as universal standard
|
|
16
|
+
const PROJECT_MEMORY_FILES = ['CLAUDE.md', 'AGENT.md'];
|
|
17
|
+
const LOCAL_MEMORY_FILE = 'AGENT.local.md';
|
|
18
|
+
const USER_MEMORY_FILE = 'AGENT.md';
|
|
19
|
+
// Priority values (lower = loaded first, higher = takes precedence)
|
|
20
|
+
const PRIORITY = {
|
|
21
|
+
user: 10,
|
|
22
|
+
project: 20,
|
|
23
|
+
local: 30,
|
|
24
|
+
rules: 25, // between project and local
|
|
25
|
+
};
|
|
26
|
+
export class MemoryManager {
|
|
27
|
+
cwd;
|
|
28
|
+
userHome;
|
|
29
|
+
cachedMemories = null;
|
|
30
|
+
constructor(cwd) {
|
|
31
|
+
this.cwd = cwd || process.cwd();
|
|
32
|
+
this.userHome = homedir();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Update working directory and clear cache
|
|
36
|
+
*/
|
|
37
|
+
setCwd(cwd) {
|
|
38
|
+
this.cwd = cwd;
|
|
39
|
+
this.cachedMemories = null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get current working directory
|
|
43
|
+
*/
|
|
44
|
+
getCwd() {
|
|
45
|
+
return this.cwd;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clear cached memories (call when files might have changed)
|
|
49
|
+
*/
|
|
50
|
+
clearCache() {
|
|
51
|
+
this.cachedMemories = null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Load all memory files in priority order
|
|
55
|
+
*/
|
|
56
|
+
loadMemories() {
|
|
57
|
+
if (this.cachedMemories) {
|
|
58
|
+
return this.cachedMemories;
|
|
59
|
+
}
|
|
60
|
+
const memories = [];
|
|
61
|
+
// 1. User memory (~/.mycode/AGENT.md)
|
|
62
|
+
const userMemory = this.loadUserMemory();
|
|
63
|
+
if (userMemory) {
|
|
64
|
+
memories.push(userMemory);
|
|
65
|
+
}
|
|
66
|
+
// 2. Project memory (CLAUDE.md or AGENT.md in cwd)
|
|
67
|
+
const projectMemory = this.loadProjectMemory();
|
|
68
|
+
if (projectMemory) {
|
|
69
|
+
memories.push(projectMemory);
|
|
70
|
+
}
|
|
71
|
+
// 3. Rules directory (.mycode/rules/*.md)
|
|
72
|
+
const rulesMemories = this.loadRulesMemories();
|
|
73
|
+
memories.push(...rulesMemories);
|
|
74
|
+
// 4. Local memory (AGENT.local.md)
|
|
75
|
+
const localMemory = this.loadLocalMemory();
|
|
76
|
+
if (localMemory) {
|
|
77
|
+
memories.push(localMemory);
|
|
78
|
+
}
|
|
79
|
+
// Sort by priority (lower first)
|
|
80
|
+
memories.sort((a, b) => a.priority - b.priority);
|
|
81
|
+
this.cachedMemories = memories;
|
|
82
|
+
return memories;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load user-level memory file
|
|
86
|
+
*/
|
|
87
|
+
loadUserMemory() {
|
|
88
|
+
const userMemoryPath = join(this.userHome, '.mycode', USER_MEMORY_FILE);
|
|
89
|
+
return this.loadFile(userMemoryPath, 'user', PRIORITY.user);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load project-level memory file (CLAUDE.md or AGENT.md)
|
|
93
|
+
*/
|
|
94
|
+
loadProjectMemory() {
|
|
95
|
+
for (const filename of PROJECT_MEMORY_FILES) {
|
|
96
|
+
const filePath = join(this.cwd, filename);
|
|
97
|
+
const memory = this.loadFile(filePath, 'project', PRIORITY.project);
|
|
98
|
+
if (memory) {
|
|
99
|
+
return memory; // Return first found (CLAUDE.md has priority)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Load local memory file (private, gitignored)
|
|
106
|
+
*/
|
|
107
|
+
loadLocalMemory() {
|
|
108
|
+
const localMemoryPath = join(this.cwd, LOCAL_MEMORY_FILE);
|
|
109
|
+
return this.loadFile(localMemoryPath, 'local', PRIORITY.local);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Load all .md files from .mycode/rules/ directory
|
|
113
|
+
*/
|
|
114
|
+
loadRulesMemories() {
|
|
115
|
+
const memories = [];
|
|
116
|
+
const rulesDir = join(this.cwd, '.mycode', 'rules');
|
|
117
|
+
if (!existsSync(rulesDir)) {
|
|
118
|
+
return memories;
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
const { readdirSync } = require('fs');
|
|
122
|
+
const files = readdirSync(rulesDir);
|
|
123
|
+
for (const file of files) {
|
|
124
|
+
if (file.endsWith('.md')) {
|
|
125
|
+
const filePath = join(rulesDir, file);
|
|
126
|
+
const memory = this.loadFile(filePath, 'rules', PRIORITY.rules);
|
|
127
|
+
if (memory) {
|
|
128
|
+
memories.push(memory);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Directory doesn't exist or can't be read
|
|
135
|
+
}
|
|
136
|
+
return memories;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Load a single memory file
|
|
140
|
+
*/
|
|
141
|
+
loadFile(filePath, type, priority) {
|
|
142
|
+
if (!existsSync(filePath)) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
147
|
+
if (!content.trim()) {
|
|
148
|
+
return null; // Skip empty files
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
path: filePath,
|
|
152
|
+
content: content.trim(),
|
|
153
|
+
type,
|
|
154
|
+
priority,
|
|
155
|
+
filename: basename(filePath),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Build merged context string from all memory files
|
|
164
|
+
*/
|
|
165
|
+
buildContext() {
|
|
166
|
+
const memories = this.loadMemories();
|
|
167
|
+
if (memories.length === 0) {
|
|
168
|
+
return '';
|
|
169
|
+
}
|
|
170
|
+
// Build sections with source annotations
|
|
171
|
+
const sections = memories.map((m) => {
|
|
172
|
+
const source = this.getSourceLabel(m);
|
|
173
|
+
return `<!-- Source: ${source} -->\n${m.content}`;
|
|
174
|
+
});
|
|
175
|
+
return sections.join('\n\n---\n\n');
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Get a human-readable source label for a memory file
|
|
179
|
+
*/
|
|
180
|
+
getSourceLabel(memory) {
|
|
181
|
+
switch (memory.type) {
|
|
182
|
+
case 'user':
|
|
183
|
+
return `~/.mycode/${memory.filename}`;
|
|
184
|
+
case 'project':
|
|
185
|
+
return `./${memory.filename}`;
|
|
186
|
+
case 'local':
|
|
187
|
+
return `./${memory.filename} (local)`;
|
|
188
|
+
case 'rules':
|
|
189
|
+
return `.mycode/rules/${memory.filename}`;
|
|
190
|
+
default:
|
|
191
|
+
return memory.filename;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get list of loaded memory files for display
|
|
196
|
+
*/
|
|
197
|
+
getLoadedFiles() {
|
|
198
|
+
return this.loadMemories().map((m) => ({
|
|
199
|
+
path: m.path,
|
|
200
|
+
type: m.type,
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if any memory files are loaded
|
|
205
|
+
*/
|
|
206
|
+
hasMemory() {
|
|
207
|
+
return this.loadMemories().length > 0;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get the path where /init should create the memory file
|
|
211
|
+
*/
|
|
212
|
+
getInitFilePath() {
|
|
213
|
+
return join(this.cwd, 'AGENT.md');
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if a project memory file already exists
|
|
217
|
+
*/
|
|
218
|
+
hasProjectMemory() {
|
|
219
|
+
return PROJECT_MEMORY_FILES.some((f) => existsSync(join(this.cwd, f)));
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get the existing project memory file path (if any)
|
|
223
|
+
*/
|
|
224
|
+
getExistingProjectMemoryPath() {
|
|
225
|
+
for (const filename of PROJECT_MEMORY_FILES) {
|
|
226
|
+
const filePath = join(this.cwd, filename);
|
|
227
|
+
if (existsSync(filePath)) {
|
|
228
|
+
return filePath;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/memory/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory System Types
|
|
3
|
+
* Types for the memory/context management system
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Type of memory file based on its location
|
|
7
|
+
*/
|
|
8
|
+
export type MemoryType = 'user' | 'project' | 'local' | 'rules';
|
|
9
|
+
/**
|
|
10
|
+
* Represents a loaded memory file
|
|
11
|
+
*/
|
|
12
|
+
export interface MemoryFile {
|
|
13
|
+
/** Absolute path to the file */
|
|
14
|
+
path: string;
|
|
15
|
+
/** File content */
|
|
16
|
+
content: string;
|
|
17
|
+
/** Type of memory (user, project, local, rules) */
|
|
18
|
+
type: MemoryType;
|
|
19
|
+
/** Priority for merging (lower = loaded first, higher = takes precedence) */
|
|
20
|
+
priority: number;
|
|
21
|
+
/** Original filename */
|
|
22
|
+
filename: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of project analysis for /init command
|
|
26
|
+
*/
|
|
27
|
+
export interface ProjectAnalysis {
|
|
28
|
+
/** Project name (from package.json, go.mod, etc.) */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Detected project type */
|
|
31
|
+
type: 'node' | 'python' | 'go' | 'rust' | 'java' | 'unknown';
|
|
32
|
+
/** Build commands found in config files */
|
|
33
|
+
buildCommands: string[];
|
|
34
|
+
/** Test commands found in config files */
|
|
35
|
+
testCommands: string[];
|
|
36
|
+
/** Key directories and their purposes */
|
|
37
|
+
directories: Array<{
|
|
38
|
+
path: string;
|
|
39
|
+
purpose: string;
|
|
40
|
+
}>;
|
|
41
|
+
/** Configuration files found */
|
|
42
|
+
configFiles: string[];
|
|
43
|
+
/** Package manager detected */
|
|
44
|
+
packageManager?: 'npm' | 'yarn' | 'pnpm' | 'pip' | 'poetry' | 'cargo' | 'go';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Options for the /init command
|
|
48
|
+
*/
|
|
49
|
+
export interface InitOptions {
|
|
50
|
+
/** Working directory to analyze */
|
|
51
|
+
cwd: string;
|
|
52
|
+
/** Force overwrite without prompting */
|
|
53
|
+
force?: boolean;
|
|
54
|
+
/** Output file path (default: AGENT.md in cwd) */
|
|
55
|
+
output?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Result from running /init
|
|
59
|
+
*/
|
|
60
|
+
export interface InitResult {
|
|
61
|
+
/** Whether initialization succeeded */
|
|
62
|
+
success: boolean;
|
|
63
|
+
/** Path to created/updated file */
|
|
64
|
+
filePath?: string;
|
|
65
|
+
/** User-friendly message */
|
|
66
|
+
message: string;
|
|
67
|
+
/** Whether file was created (true) or updated (false) */
|
|
68
|
+
created?: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Conflict resolution choice when file exists
|
|
72
|
+
*/
|
|
73
|
+
export type ConflictResolution = 'overwrite' | 'merge' | 'cancel';
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,IAAI,EAAE,UAAU,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,2CAA2C;IAC3C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,gCAAgC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CAC9E;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission Manager - Controls tool execution permissions
|
|
3
|
+
*/
|
|
4
|
+
import type { PermissionConfig, PermissionMode } from './types.js';
|
|
5
|
+
export type ConfirmCallback = (tool: string, input: unknown) => Promise<boolean>;
|
|
6
|
+
export declare class PermissionManager {
|
|
7
|
+
private config;
|
|
8
|
+
private confirmCallback?;
|
|
9
|
+
private approvedTools;
|
|
10
|
+
constructor(config?: Partial<PermissionConfig>);
|
|
11
|
+
/**
|
|
12
|
+
* Set the confirmation callback
|
|
13
|
+
*/
|
|
14
|
+
setConfirmCallback(callback: ConfirmCallback): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the permission mode for a tool
|
|
17
|
+
*/
|
|
18
|
+
getModeForTool(tool: string): PermissionMode;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a tool can be executed
|
|
21
|
+
*/
|
|
22
|
+
checkPermission(tool: string, input: unknown): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Approve a tool for this session
|
|
25
|
+
*/
|
|
26
|
+
approveToolForSession(tool: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all session approvals
|
|
29
|
+
*/
|
|
30
|
+
clearApprovals(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGnE,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,aAAa,CAA0B;gBAEnC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAO9C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAa5C;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCrE;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,cAAc,IAAI,IAAI;CAGvB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission Manager - Controls tool execution permissions
|
|
3
|
+
*/
|
|
4
|
+
import { DEFAULT_PERMISSION_CONFIG } from './types.js';
|
|
5
|
+
export class PermissionManager {
|
|
6
|
+
config;
|
|
7
|
+
confirmCallback;
|
|
8
|
+
approvedTools = new Set();
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = {
|
|
11
|
+
...DEFAULT_PERMISSION_CONFIG,
|
|
12
|
+
...config,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Set the confirmation callback
|
|
17
|
+
*/
|
|
18
|
+
setConfirmCallback(callback) {
|
|
19
|
+
this.confirmCallback = callback;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the permission mode for a tool
|
|
23
|
+
*/
|
|
24
|
+
getModeForTool(tool) {
|
|
25
|
+
for (const rule of this.config.rules) {
|
|
26
|
+
if (typeof rule.tool === 'string') {
|
|
27
|
+
if (rule.tool === tool) {
|
|
28
|
+
return rule.mode;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (rule.tool.test(tool)) {
|
|
32
|
+
return rule.mode;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return this.config.defaultMode;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if a tool can be executed
|
|
39
|
+
*/
|
|
40
|
+
async checkPermission(tool, input) {
|
|
41
|
+
const mode = this.getModeForTool(tool);
|
|
42
|
+
switch (mode) {
|
|
43
|
+
case 'auto':
|
|
44
|
+
return true;
|
|
45
|
+
case 'deny':
|
|
46
|
+
return false;
|
|
47
|
+
case 'confirm':
|
|
48
|
+
// Check if already approved this session
|
|
49
|
+
const key = `${tool}:${JSON.stringify(input)}`;
|
|
50
|
+
if (this.approvedTools.has(key)) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (!this.confirmCallback) {
|
|
54
|
+
// No callback, auto-approve in non-interactive mode
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
const approved = await this.confirmCallback(tool, input);
|
|
58
|
+
if (approved) {
|
|
59
|
+
this.approvedTools.add(key);
|
|
60
|
+
}
|
|
61
|
+
return approved;
|
|
62
|
+
default:
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Approve a tool for this session
|
|
68
|
+
*/
|
|
69
|
+
approveToolForSession(tool) {
|
|
70
|
+
this.approvedTools.add(tool);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clear all session approvals
|
|
74
|
+
*/
|
|
75
|
+
clearApprovals() {
|
|
76
|
+
this.approvedTools.clear();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAOvD,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAmB;IACzB,eAAe,CAAmB;IAClC,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE/C,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,yBAAyB;YAC5B,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAyB;QAC1C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,KAAc;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEvC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC;YAEd,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;YAEf,KAAK,SAAS;gBACZ,yCAAyC;gBACzC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC1B,oDAAoD;oBACpD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzD,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO,QAAQ,CAAC;YAElB;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,IAAY;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission System Types
|
|
3
|
+
*/
|
|
4
|
+
export type PermissionMode = 'auto' | 'confirm' | 'deny';
|
|
5
|
+
export interface PermissionRule {
|
|
6
|
+
tool: string | RegExp;
|
|
7
|
+
mode: PermissionMode;
|
|
8
|
+
}
|
|
9
|
+
export interface PermissionConfig {
|
|
10
|
+
defaultMode: PermissionMode;
|
|
11
|
+
rules: PermissionRule[];
|
|
12
|
+
}
|
|
13
|
+
export declare const DEFAULT_PERMISSION_CONFIG: PermissionConfig;
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,cAAc,CAAC;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAYvC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission System Types
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_PERMISSION_CONFIG = {
|
|
5
|
+
defaultMode: 'confirm',
|
|
6
|
+
rules: [
|
|
7
|
+
// Read-only tools are auto-approved
|
|
8
|
+
{ tool: 'Read', mode: 'auto' },
|
|
9
|
+
{ tool: 'Glob', mode: 'auto' },
|
|
10
|
+
{ tool: 'Grep', mode: 'auto' },
|
|
11
|
+
// Write operations require confirmation
|
|
12
|
+
{ tool: 'Write', mode: 'confirm' },
|
|
13
|
+
{ tool: 'Edit', mode: 'confirm' },
|
|
14
|
+
{ tool: 'Bash', mode: 'confirm' },
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE;QACL,oCAAoC;QACpC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAC9B,wCAAwC;QACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;KAClC;CACF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic Provider Implementation
|
|
3
|
+
* Supports Claude 3.5 Sonnet, Claude 3 Opus, Claude 3 Haiku, etc.
|
|
4
|
+
*/
|
|
5
|
+
import type { LLMProvider, CompletionOptions, CompletionResponse, StreamChunk, AnthropicConfig, ModelInfo } from './types.js';
|
|
6
|
+
export declare class AnthropicProvider implements LLMProvider {
|
|
7
|
+
readonly name = "anthropic";
|
|
8
|
+
private client;
|
|
9
|
+
constructor(config?: AnthropicConfig);
|
|
10
|
+
complete(options: CompletionOptions): Promise<CompletionResponse>;
|
|
11
|
+
stream(options: CompletionOptions): AsyncGenerator<StreamChunk, void, unknown>;
|
|
12
|
+
private convertMessages;
|
|
13
|
+
private convertToAnthropicContent;
|
|
14
|
+
private convertTools;
|
|
15
|
+
private convertResponse;
|
|
16
|
+
private convertContent;
|
|
17
|
+
private convertStopReason;
|
|
18
|
+
listModels(): Promise<ModelInfo[]>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EAKX,eAAe,EACf,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,GAAE,eAAoB;IAOlC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBhE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IA2DrF,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,yBAAyB;IAiCjC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAcnB,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAUzC"}
|