@nogataka/smart-edit 0.0.16 → 0.3.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/LICENSE +0 -1
- package/README.md +144 -67
- package/dist/cli.js +2 -2
- package/dist/devtools/generate_prompt_factory.js +5 -5
- package/dist/index.d.ts +33 -34
- package/dist/index.js +33 -34
- package/dist/interprompt/multilang_prompt.js +2 -2
- package/dist/interprompt/prompt_factory.js +2 -2
- package/dist/interprompt/util/class_decorators.d.ts +1 -1
- package/dist/interprompt/util/class_decorators.js +1 -1
- package/dist/{serena → smart-edit}/agent.d.ts +20 -20
- package/dist/{serena → smart-edit}/agent.js +43 -43
- package/dist/{serena → smart-edit}/analytics.d.ts +1 -1
- package/dist/{serena → smart-edit}/analytics.js +3 -3
- package/dist/smart-edit/cli.d.ts +9 -0
- package/dist/{serena → smart-edit}/cli.js +49 -99
- package/dist/{serena → smart-edit}/code_editor.d.ts +7 -7
- package/dist/{serena → smart-edit}/config/context_mode.d.ts +13 -13
- package/dist/{serena → smart-edit}/config/context_mode.js +12 -12
- package/dist/{serena/config/serena_config.d.ts → smart-edit/config/smart_edit_config.d.ts} +14 -14
- package/dist/{serena/config/serena_config.js → smart-edit/config/smart_edit_config.js} +31 -31
- package/dist/smart-edit/constants.d.ts +18 -0
- package/dist/smart-edit/constants.js +27 -0
- package/dist/{serena → smart-edit}/dashboard.d.ts +3 -3
- package/dist/{serena → smart-edit}/dashboard.js +10 -10
- package/dist/{serena → smart-edit}/gui_log_viewer.js +6 -6
- package/dist/{serena → smart-edit}/mcp.d.ts +40 -40
- package/dist/{serena → smart-edit}/mcp.js +38 -38
- package/dist/{serena → smart-edit}/project.d.ts +7 -7
- package/dist/{serena → smart-edit}/project.js +18 -18
- package/dist/{serena → smart-edit}/prompt_factory.d.ts +3 -3
- package/dist/{serena → smart-edit}/prompt_factory.js +1 -1
- package/dist/{serena → smart-edit}/resources/config/contexts/codex.yml +2 -2
- package/dist/{serena → smart-edit}/resources/config/contexts/context.template.yml +1 -1
- package/dist/{serena → smart-edit}/resources/config/contexts/ide-assistant.yml +2 -2
- package/dist/{serena → smart-edit}/resources/config/modes/mode.template.yml +1 -1
- package/dist/{serena → smart-edit}/resources/config/prompt_templates/simple_tool_outputs.yml +1 -1
- package/dist/smart-edit/resources/dashboard/dashboard.js +13 -0
- package/dist/smart-edit/resources/dashboard/index.css +1 -0
- package/dist/smart-edit/resources/dashboard/index.html +13 -0
- package/dist/{serena → smart-edit}/resources/project.template.yml +6 -6
- package/dist/{serena/resources/serena_config.template.yml → smart-edit/resources/smart_edit_config.template.yml} +14 -14
- package/dist/{serena → smart-edit}/symbol.d.ts +7 -7
- package/dist/{serena → smart-edit}/symbol.js +2 -2
- package/dist/{serena → smart-edit}/text_utils.js +2 -2
- package/dist/{serena → smart-edit}/tools/config_tools.d.ts +1 -1
- package/dist/{serena → smart-edit}/tools/config_tools.js +6 -6
- package/dist/{serena → smart-edit}/tools/memory_tools.d.ts +4 -4
- package/dist/{serena → smart-edit}/tools/memory_tools.js +5 -5
- package/dist/{serena → smart-edit}/tools/tools_base.d.ts +15 -15
- package/dist/{serena → smart-edit}/tools/tools_base.js +7 -7
- package/dist/{serena → smart-edit}/util/exception.d.ts +2 -2
- package/dist/{serena → smart-edit}/util/exception.js +2 -2
- package/dist/{serena → smart-edit}/util/file_system.js +3 -3
- package/dist/{serena → smart-edit}/util/git.js +3 -3
- package/dist/{serena → smart-edit}/util/inspection.d.ts +3 -3
- package/dist/{serena → smart-edit}/util/inspection.js +3 -3
- package/dist/{serena → smart-edit}/util/logging.d.ts +6 -6
- package/dist/{serena → smart-edit}/util/logging.js +7 -7
- package/dist/{serena → smart-edit}/util/shell.js +1 -1
- package/dist/smart-edit/version.d.ts +1 -0
- package/dist/{serena → smart-edit}/version.js +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/autoload.js +1 -1
- package/dist/smart-lsp/language_servers/bash_language_server.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/bash_language_server.js +8 -8
- package/dist/{solidlsp → smart-lsp}/language_servers/clangd_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/clangd_language_server.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/clojure_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/clojure_lsp.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/common.d.ts +2 -2
- package/dist/{solidlsp → smart-lsp}/language_servers/common.js +1 -1
- package/dist/{solidlsp → smart-lsp}/language_servers/csharp_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/csharp_language_server.js +12 -12
- package/dist/smart-lsp/language_servers/dart_language_server.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/dart_language_server.js +13 -13
- package/dist/{solidlsp → smart-lsp}/language_servers/eclipse_jdtls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/eclipse_jdtls.js +12 -12
- package/dist/{solidlsp → smart-lsp}/language_servers/erlang_language_server.d.ts +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/erlang_language_server.js +6 -6
- package/dist/{solidlsp → smart-lsp}/language_servers/gopls.d.ts +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/gopls.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/intelephense.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/intelephense.js +11 -11
- package/dist/{solidlsp → smart-lsp}/language_servers/jedi_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/jedi_server.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/kotlin_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/kotlin_language_server.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/lua_ls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/lua_ls.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/nixd_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/nixd_language_server.js +7 -7
- package/dist/{solidlsp → smart-lsp}/language_servers/pyright_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/pyright_server.js +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/r_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/r_language_server.js +5 -5
- package/dist/smart-lsp/language_servers/ruby_common.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_common.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_lsp.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/rust_analyzer.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/rust_analyzer.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/solargraph.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/solargraph.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/sourcekit_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/sourcekit_lsp.js +7 -7
- package/dist/{solidlsp → smart-lsp}/language_servers/terraform_ls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/terraform_ls.js +14 -14
- package/dist/{solidlsp → smart-lsp}/language_servers/typescript_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/typescript_language_server.js +11 -11
- package/dist/{solidlsp → smart-lsp}/language_servers/vts_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/vts_language_server.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/zls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/zls.js +6 -6
- package/dist/{solidlsp → smart-lsp}/ls.d.ts +25 -25
- package/dist/{solidlsp → smart-lsp}/ls.js +19 -19
- package/dist/{solidlsp → smart-lsp}/ls_config.d.ts +0 -5
- package/dist/{solidlsp → smart-lsp}/ls_config.js +0 -5
- package/dist/{solidlsp → smart-lsp}/ls_exceptions.d.ts +1 -1
- package/dist/{solidlsp → smart-lsp}/ls_exceptions.js +2 -2
- package/dist/{solidlsp → smart-lsp}/ls_handler.d.ts +7 -7
- package/dist/{solidlsp → smart-lsp}/ls_handler.js +12 -12
- package/dist/{solidlsp → smart-lsp}/ls_request.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/ls_request.js +3 -3
- package/package.json +14 -4
- package/dist/serena/agno.d.ts +0 -111
- package/dist/serena/agno.js +0 -278
- package/dist/serena/cli.d.ts +0 -9
- package/dist/serena/constants.d.ts +0 -18
- package/dist/serena/constants.js +0 -27
- package/dist/serena/resources/dashboard/dashboard.js +0 -815
- package/dist/serena/resources/dashboard/index.html +0 -307
- package/dist/serena/resources/dashboard/jquery.min.js +0 -3
- package/dist/serena/version.d.ts +0 -1
- package/dist/solidlsp/language_servers/bash_language_server.d.ts +0 -10
- package/dist/solidlsp/language_servers/dart_language_server.d.ts +0 -10
- package/dist/solidlsp/language_servers/ruby_common.d.ts +0 -10
- /package/dist/{serena → smart-edit}/code_editor.js +0 -0
- /package/dist/{serena → smart-edit}/generated/generated_prompt_factory.d.ts +0 -0
- /package/dist/{serena → smart-edit}/generated/generated_prompt_factory.js +0 -0
- /package/dist/{serena → smart-edit}/gui_log_viewer.d.ts +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/agent.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/chatgpt.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/desktop-app.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/oaicompat-agent.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/internal_modes/jetbrains.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/editing.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/interactive.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/no-onboarding.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/onboarding.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/one-shot.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/planning.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/prompt_templates/system_prompt.yml +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-16.svg → smart-edit/resources/dashboard/smart-edit-icon-16.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-32.svg → smart-edit/resources/dashboard/smart-edit-icon-32.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-48.svg → smart-edit/resources/dashboard/smart-edit-icon-48.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-logs-dark-mode.svg → smart-edit/resources/dashboard/smart-edit-logs-dark-mode.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-logs.svg → smart-edit/resources/dashboard/smart-edit-logs.svg} +0 -0
- /package/dist/{serena → smart-edit}/text_utils.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/cmd_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/cmd_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/file_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/file_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/index.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/index.js +0 -0
- /package/dist/{serena → smart-edit}/tools/symbol_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/symbol_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/workflow_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/workflow_tools.js +0 -0
- /package/dist/{serena → smart-edit}/util/class_decorators.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/class_decorators.js +0 -0
- /package/dist/{serena → smart-edit}/util/file_system.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/general.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/general.js +0 -0
- /package/dist/{serena → smart-edit}/util/git.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/shell.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/thread.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/thread.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/language_servers/autoload.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/ls_types.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/ls_types.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/lsp_protocol_handler/server.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/lsp_protocol_handler/server.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/subprocess_util.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/subprocess_util.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/zip.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/zip.js +0 -0
package/dist/serena/agno.d.ts
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import type { Tool, ToolApplyFunction, ToolApplyMetadata } from './tools/tools_base.js';
|
|
2
|
-
import { SerenaAgent } from './agent.js';
|
|
3
|
-
export interface SerenaAgnoFunctionDefinition {
|
|
4
|
-
readonly name: string;
|
|
5
|
-
readonly apply: ToolApplyFunction<Record<string, unknown>, string>;
|
|
6
|
-
readonly entrypoint: (args: Record<string, unknown>) => Promise<string>;
|
|
7
|
-
readonly skipEntrypointProcessing: boolean;
|
|
8
|
-
readonly metadata: ToolApplyMetadata;
|
|
9
|
-
readonly tool: Tool;
|
|
10
|
-
}
|
|
11
|
-
export interface SerenaAgnoToolkitData {
|
|
12
|
-
readonly name: string;
|
|
13
|
-
readonly functions: Record<string, SerenaAgnoFunctionDefinition>;
|
|
14
|
-
readonly functionList: SerenaAgnoFunctionDefinition[];
|
|
15
|
-
}
|
|
16
|
-
export interface SerenaAgnoAgentFactoryOptions {
|
|
17
|
-
name: string;
|
|
18
|
-
model: unknown;
|
|
19
|
-
description: string;
|
|
20
|
-
toolkits: unknown[];
|
|
21
|
-
storage: unknown;
|
|
22
|
-
systemMessage: string;
|
|
23
|
-
showToolCalls: boolean;
|
|
24
|
-
markdown: boolean;
|
|
25
|
-
telemetry: boolean;
|
|
26
|
-
memory: unknown;
|
|
27
|
-
addHistoryToMessages: boolean;
|
|
28
|
-
numHistoryResponses: number;
|
|
29
|
-
}
|
|
30
|
-
export interface SerenaAgnoIntegration {
|
|
31
|
-
createToolkit(data: SerenaAgnoToolkitData): unknown;
|
|
32
|
-
createAgent(options: SerenaAgnoAgentFactoryOptions): unknown;
|
|
33
|
-
createMemory(): unknown;
|
|
34
|
-
createStorage(options: {
|
|
35
|
-
tableName: string;
|
|
36
|
-
dbFile: string;
|
|
37
|
-
}): unknown;
|
|
38
|
-
}
|
|
39
|
-
export declare class DefaultAgnoFunction {
|
|
40
|
-
readonly name: string;
|
|
41
|
-
entrypoint: (args: Record<string, unknown>) => Promise<string>;
|
|
42
|
-
skipEntrypointProcessing: boolean;
|
|
43
|
-
readonly apply: ToolApplyFunction<Record<string, unknown>, string>;
|
|
44
|
-
readonly metadata: ToolApplyMetadata;
|
|
45
|
-
constructor(definition: SerenaAgnoFunctionDefinition);
|
|
46
|
-
}
|
|
47
|
-
export declare class DefaultAgnoToolkit {
|
|
48
|
-
readonly name: string;
|
|
49
|
-
readonly functions: Record<string, DefaultAgnoFunction>;
|
|
50
|
-
constructor(data: SerenaAgnoToolkitData);
|
|
51
|
-
}
|
|
52
|
-
export declare class DefaultAgnoAgentMemory {
|
|
53
|
-
}
|
|
54
|
-
export declare class DefaultAgnoSqliteStorage {
|
|
55
|
-
readonly tableName: string;
|
|
56
|
-
readonly dbFile: string;
|
|
57
|
-
constructor(options: {
|
|
58
|
-
tableName: string;
|
|
59
|
-
dbFile: string;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
export declare class DefaultAgnoAgent {
|
|
63
|
-
readonly name: string;
|
|
64
|
-
readonly model: unknown;
|
|
65
|
-
readonly description: string;
|
|
66
|
-
readonly toolkits: DefaultAgnoToolkit[];
|
|
67
|
-
readonly storage: DefaultAgnoSqliteStorage;
|
|
68
|
-
readonly systemMessage: string;
|
|
69
|
-
readonly options: Omit<SerenaAgnoAgentFactoryOptions, 'name' | 'model' | 'description' | 'toolkits' | 'storage' | 'systemMessage'>;
|
|
70
|
-
constructor(config: SerenaAgnoAgentFactoryOptions & {
|
|
71
|
-
toolkits: DefaultAgnoToolkit[];
|
|
72
|
-
storage: DefaultAgnoSqliteStorage;
|
|
73
|
-
});
|
|
74
|
-
toString(): string;
|
|
75
|
-
}
|
|
76
|
-
export declare class DefaultSerenaAgnoIntegration implements SerenaAgnoIntegration {
|
|
77
|
-
createToolkit(data: SerenaAgnoToolkitData): DefaultAgnoToolkit;
|
|
78
|
-
createAgent(options: SerenaAgnoAgentFactoryOptions): DefaultAgnoAgent;
|
|
79
|
-
createMemory(): DefaultAgnoAgentMemory;
|
|
80
|
-
createStorage(options: {
|
|
81
|
-
tableName: string;
|
|
82
|
-
dbFile: string;
|
|
83
|
-
}): DefaultAgnoSqliteStorage;
|
|
84
|
-
}
|
|
85
|
-
export declare function configureSerenaAgnoIntegration(integration: SerenaAgnoIntegration): void;
|
|
86
|
-
export declare function getSerenaAgnoIntegration(): SerenaAgnoIntegration;
|
|
87
|
-
export declare class SerenaAgnoToolkit {
|
|
88
|
-
readonly name: string;
|
|
89
|
-
readonly functions: Record<string, SerenaAgnoFunctionDefinition>;
|
|
90
|
-
constructor(serenaAgent: {
|
|
91
|
-
getExposedToolInstances(): Iterable<Tool>;
|
|
92
|
-
});
|
|
93
|
-
toToolkitData(): SerenaAgnoToolkitData;
|
|
94
|
-
buildToolkit(integration?: SerenaAgnoIntegration): unknown;
|
|
95
|
-
static createFunctionDefinition(tool: Tool): SerenaAgnoFunctionDefinition;
|
|
96
|
-
}
|
|
97
|
-
export interface SerenaAgnoAgentProviderOptions {
|
|
98
|
-
argv?: string[];
|
|
99
|
-
integration?: SerenaAgnoIntegration;
|
|
100
|
-
projectFileOverride?: string | null;
|
|
101
|
-
serenaAgentFactory?: (projectFile: string | null) => SerenaAgent;
|
|
102
|
-
}
|
|
103
|
-
export declare class SerenaAgnoAgentProvider {
|
|
104
|
-
private static agent;
|
|
105
|
-
private static serenaAgentFactoryOverride;
|
|
106
|
-
static configure(options?: {
|
|
107
|
-
serenaAgentFactory?: (projectFile: string | null) => SerenaAgent;
|
|
108
|
-
}): void;
|
|
109
|
-
static reset(): void;
|
|
110
|
-
static getAgent(model: unknown, options?: SerenaAgnoAgentProviderOptions): unknown;
|
|
111
|
-
}
|
package/dist/serena/agno.js
DELETED
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import process from 'node:process';
|
|
4
|
-
import { createRequire } from 'node:module';
|
|
5
|
-
import { createSerenaLogger } from './util/logging.js';
|
|
6
|
-
import { REPO_ROOT } from './constants.js';
|
|
7
|
-
import { SerenaAgent } from './agent.js';
|
|
8
|
-
import { SerenaAgentContext } from './config/context_mode.js';
|
|
9
|
-
import { showFatalExceptionSafe } from './util/exception.js';
|
|
10
|
-
const { logger: log } = createSerenaLogger({ name: 'smart-edit.agno' });
|
|
11
|
-
const DEFAULT_TOOLKIT_NAME = 'Serena';
|
|
12
|
-
const DEFAULT_SQLITE_TABLE_NAME = 'serena_agent_sessions';
|
|
13
|
-
const DEFAULT_SQLITE_RELATIVE_PATH = path.join('temp', 'agno_agent_storage.db');
|
|
14
|
-
function now() {
|
|
15
|
-
return process.hrtime.bigint();
|
|
16
|
-
}
|
|
17
|
-
function formatDurationMs(start, end) {
|
|
18
|
-
const durationMs = Number(end - start) / 1_000_000;
|
|
19
|
-
return `${durationMs.toFixed(2)}ms`;
|
|
20
|
-
}
|
|
21
|
-
function loadDotenvIfAvailable() {
|
|
22
|
-
try {
|
|
23
|
-
const require = createRequire(import.meta.url);
|
|
24
|
-
const maybeDotenv = require('dotenv');
|
|
25
|
-
if (maybeDotenv && typeof maybeDotenv.config === 'function') {
|
|
26
|
-
maybeDotenv.config();
|
|
27
|
-
log.debug('Loaded environment variables using dotenv.');
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
log.debug(`dotenv not available or failed to load: ${String(error)}`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export class DefaultAgnoFunction {
|
|
35
|
-
name;
|
|
36
|
-
entrypoint;
|
|
37
|
-
skipEntrypointProcessing;
|
|
38
|
-
apply;
|
|
39
|
-
metadata;
|
|
40
|
-
constructor(definition) {
|
|
41
|
-
this.name = definition.name;
|
|
42
|
-
this.apply = definition.apply;
|
|
43
|
-
this.entrypoint = definition.entrypoint;
|
|
44
|
-
this.skipEntrypointProcessing = definition.skipEntrypointProcessing;
|
|
45
|
-
this.metadata = definition.metadata;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export class DefaultAgnoToolkit {
|
|
49
|
-
name;
|
|
50
|
-
functions = {};
|
|
51
|
-
constructor(data) {
|
|
52
|
-
this.name = data.name;
|
|
53
|
-
for (const definition of data.functionList) {
|
|
54
|
-
this.functions[definition.name] = new DefaultAgnoFunction(definition);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export class DefaultAgnoAgentMemory {
|
|
59
|
-
}
|
|
60
|
-
export class DefaultAgnoSqliteStorage {
|
|
61
|
-
tableName;
|
|
62
|
-
dbFile;
|
|
63
|
-
constructor(options) {
|
|
64
|
-
this.tableName = options.tableName;
|
|
65
|
-
this.dbFile = options.dbFile;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export class DefaultAgnoAgent {
|
|
69
|
-
name;
|
|
70
|
-
model;
|
|
71
|
-
description;
|
|
72
|
-
toolkits;
|
|
73
|
-
storage;
|
|
74
|
-
systemMessage;
|
|
75
|
-
options;
|
|
76
|
-
constructor(config) {
|
|
77
|
-
this.name = config.name;
|
|
78
|
-
this.model = config.model;
|
|
79
|
-
this.description = config.description;
|
|
80
|
-
this.toolkits = config.toolkits;
|
|
81
|
-
this.storage = config.storage;
|
|
82
|
-
this.systemMessage = config.systemMessage;
|
|
83
|
-
this.options = {
|
|
84
|
-
addHistoryToMessages: config.addHistoryToMessages,
|
|
85
|
-
markdown: config.markdown,
|
|
86
|
-
memory: config.memory,
|
|
87
|
-
numHistoryResponses: config.numHistoryResponses,
|
|
88
|
-
showToolCalls: config.showToolCalls,
|
|
89
|
-
telemetry: config.telemetry
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
toString() {
|
|
93
|
-
return `${this.name} Agent (toolkits=${this.toolkits.length})`;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
export class DefaultSerenaAgnoIntegration {
|
|
97
|
-
createToolkit(data) {
|
|
98
|
-
return new DefaultAgnoToolkit(data);
|
|
99
|
-
}
|
|
100
|
-
createAgent(options) {
|
|
101
|
-
const storage = options.storage instanceof DefaultAgnoSqliteStorage
|
|
102
|
-
? options.storage
|
|
103
|
-
: new DefaultAgnoSqliteStorage({
|
|
104
|
-
tableName: DEFAULT_SQLITE_TABLE_NAME,
|
|
105
|
-
dbFile: path.resolve(REPO_ROOT, DEFAULT_SQLITE_RELATIVE_PATH)
|
|
106
|
-
});
|
|
107
|
-
const toolkits = options.toolkits.map((toolkit) => toolkit instanceof DefaultAgnoToolkit
|
|
108
|
-
? toolkit
|
|
109
|
-
: new DefaultAgnoToolkit({ name: DEFAULT_TOOLKIT_NAME, functions: {}, functionList: [] }));
|
|
110
|
-
const configWithDefaults = {
|
|
111
|
-
name: options.name,
|
|
112
|
-
model: options.model,
|
|
113
|
-
description: options.description,
|
|
114
|
-
toolkits,
|
|
115
|
-
storage,
|
|
116
|
-
systemMessage: options.systemMessage,
|
|
117
|
-
showToolCalls: options.showToolCalls,
|
|
118
|
-
markdown: options.markdown,
|
|
119
|
-
telemetry: options.telemetry,
|
|
120
|
-
memory: options.memory,
|
|
121
|
-
addHistoryToMessages: options.addHistoryToMessages,
|
|
122
|
-
numHistoryResponses: options.numHistoryResponses
|
|
123
|
-
};
|
|
124
|
-
return new DefaultAgnoAgent(configWithDefaults);
|
|
125
|
-
}
|
|
126
|
-
createMemory() {
|
|
127
|
-
return new DefaultAgnoAgentMemory();
|
|
128
|
-
}
|
|
129
|
-
createStorage(options) {
|
|
130
|
-
return new DefaultAgnoSqliteStorage(options);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
let activeIntegration = new DefaultSerenaAgnoIntegration();
|
|
134
|
-
export function configureSerenaAgnoIntegration(integration) {
|
|
135
|
-
activeIntegration = integration;
|
|
136
|
-
}
|
|
137
|
-
export function getSerenaAgnoIntegration() {
|
|
138
|
-
return activeIntegration;
|
|
139
|
-
}
|
|
140
|
-
function normalizeKwargs(rawArgs) {
|
|
141
|
-
if (!('kwargs' in rawArgs)) {
|
|
142
|
-
return { ...rawArgs };
|
|
143
|
-
}
|
|
144
|
-
const { kwargs, ...rest } = rawArgs;
|
|
145
|
-
if (kwargs && typeof kwargs === 'object' && !Array.isArray(kwargs)) {
|
|
146
|
-
return { ...rest, ...kwargs };
|
|
147
|
-
}
|
|
148
|
-
return rest;
|
|
149
|
-
}
|
|
150
|
-
function resolveProjectArgument(argv) {
|
|
151
|
-
let pendingFlag = null;
|
|
152
|
-
for (const arg of argv) {
|
|
153
|
-
if (pendingFlag) {
|
|
154
|
-
return typeof arg === 'string' ? arg : null;
|
|
155
|
-
}
|
|
156
|
-
if (arg.startsWith('--project=')) {
|
|
157
|
-
return arg.slice('--project='.length);
|
|
158
|
-
}
|
|
159
|
-
if (arg.startsWith('--project-file=')) {
|
|
160
|
-
return arg.slice('--project-file='.length);
|
|
161
|
-
}
|
|
162
|
-
if (arg === '--project' || arg === '--project-file') {
|
|
163
|
-
pendingFlag = arg;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return null;
|
|
167
|
-
}
|
|
168
|
-
export class SerenaAgnoToolkit {
|
|
169
|
-
name = DEFAULT_TOOLKIT_NAME;
|
|
170
|
-
functions = {};
|
|
171
|
-
constructor(serenaAgent) {
|
|
172
|
-
const toolInstances = serenaAgent.getExposedToolInstances();
|
|
173
|
-
for (const tool of toolInstances) {
|
|
174
|
-
const definition = SerenaAgnoToolkit.createFunctionDefinition(tool);
|
|
175
|
-
this.functions[definition.name] = definition;
|
|
176
|
-
}
|
|
177
|
-
log.info(`Agno agent functions: ${Object.keys(this.functions).join(', ')}`);
|
|
178
|
-
}
|
|
179
|
-
toToolkitData() {
|
|
180
|
-
const functionList = Object.values(this.functions);
|
|
181
|
-
return {
|
|
182
|
-
name: this.name,
|
|
183
|
-
functions: { ...this.functions },
|
|
184
|
-
functionList
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
buildToolkit(integration = getSerenaAgnoIntegration()) {
|
|
188
|
-
return integration.createToolkit(this.toToolkitData());
|
|
189
|
-
}
|
|
190
|
-
static createFunctionDefinition(tool) {
|
|
191
|
-
const toolClass = tool.constructor;
|
|
192
|
-
const name = toolClass.getNameFromCls();
|
|
193
|
-
const applyFn = tool.getApplyFn();
|
|
194
|
-
const metadata = tool.getApplyFnMetadata();
|
|
195
|
-
const entrypoint = async (rawArgs) => {
|
|
196
|
-
const normalizedArgs = normalizeKwargs(rawArgs);
|
|
197
|
-
log.info(`Calling tool ${toolClass.name}`);
|
|
198
|
-
return tool.applyEx(normalizedArgs, {
|
|
199
|
-
logCall: true,
|
|
200
|
-
catchExceptions: true
|
|
201
|
-
});
|
|
202
|
-
};
|
|
203
|
-
return {
|
|
204
|
-
name,
|
|
205
|
-
apply: applyFn,
|
|
206
|
-
entrypoint,
|
|
207
|
-
skipEntrypointProcessing: true,
|
|
208
|
-
metadata,
|
|
209
|
-
tool
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
export class SerenaAgnoAgentProvider {
|
|
214
|
-
static agent = null;
|
|
215
|
-
static serenaAgentFactoryOverride = null;
|
|
216
|
-
static configure(options = {}) {
|
|
217
|
-
this.serenaAgentFactoryOverride = options.serenaAgentFactory ?? null;
|
|
218
|
-
}
|
|
219
|
-
static reset() {
|
|
220
|
-
this.agent = null;
|
|
221
|
-
}
|
|
222
|
-
static getAgent(model, options = {}) {
|
|
223
|
-
if (this.agent) {
|
|
224
|
-
return this.agent;
|
|
225
|
-
}
|
|
226
|
-
process.chdir(REPO_ROOT);
|
|
227
|
-
loadDotenvIfAvailable();
|
|
228
|
-
const argv = options.argv ?? process.argv.slice(2);
|
|
229
|
-
const projectFlagValue = options.projectFileOverride ?? resolveProjectArgument(argv);
|
|
230
|
-
const projectFile = projectFlagValue ? path.resolve(projectFlagValue) : null;
|
|
231
|
-
const start = now();
|
|
232
|
-
let serenaAgent;
|
|
233
|
-
try {
|
|
234
|
-
const factory = options.serenaAgentFactory ?? this.serenaAgentFactoryOverride ?? ((project) => new SerenaAgent({
|
|
235
|
-
project: project ?? undefined,
|
|
236
|
-
context: SerenaAgentContext.load('agent')
|
|
237
|
-
}));
|
|
238
|
-
serenaAgent = factory(projectFile);
|
|
239
|
-
}
|
|
240
|
-
catch (error) {
|
|
241
|
-
void showFatalExceptionSafe(error);
|
|
242
|
-
throw error;
|
|
243
|
-
}
|
|
244
|
-
const end = now();
|
|
245
|
-
log.info(`Loading Serena agent finished in ${formatDurationMs(start, end)}`);
|
|
246
|
-
const toolkit = new SerenaAgnoToolkit(serenaAgent);
|
|
247
|
-
const integration = options.integration ?? getSerenaAgnoIntegration();
|
|
248
|
-
const toolkitInstance = toolkit.buildToolkit(integration);
|
|
249
|
-
const sqlitePath = path.resolve(REPO_ROOT, DEFAULT_SQLITE_RELATIVE_PATH);
|
|
250
|
-
fs.mkdirSync(path.dirname(sqlitePath), { recursive: true });
|
|
251
|
-
log.info(`Deleting DB from PID ${process.pid}`);
|
|
252
|
-
if (fs.existsSync(sqlitePath)) {
|
|
253
|
-
fs.rmSync(sqlitePath);
|
|
254
|
-
}
|
|
255
|
-
const storage = integration.createStorage({
|
|
256
|
-
tableName: DEFAULT_SQLITE_TABLE_NAME,
|
|
257
|
-
dbFile: sqlitePath
|
|
258
|
-
});
|
|
259
|
-
const memory = integration.createMemory();
|
|
260
|
-
const agent = integration.createAgent({
|
|
261
|
-
name: DEFAULT_TOOLKIT_NAME,
|
|
262
|
-
model,
|
|
263
|
-
description: 'A fully-featured coding assistant',
|
|
264
|
-
toolkits: [toolkitInstance],
|
|
265
|
-
storage,
|
|
266
|
-
systemMessage: serenaAgent.createSystemPrompt(),
|
|
267
|
-
showToolCalls: false,
|
|
268
|
-
markdown: true,
|
|
269
|
-
telemetry: false,
|
|
270
|
-
memory,
|
|
271
|
-
addHistoryToMessages: true,
|
|
272
|
-
numHistoryResponses: 100
|
|
273
|
-
});
|
|
274
|
-
this.agent = agent;
|
|
275
|
-
log.info(`Agent instantiated: ${String(agent)}`);
|
|
276
|
-
return agent;
|
|
277
|
-
}
|
|
278
|
-
}
|
package/dist/serena/cli.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
interface CreateCliOptions {
|
|
3
|
-
writeOut?: (str: string) => void;
|
|
4
|
-
writeErr?: (str: string) => void;
|
|
5
|
-
enableExitOverride?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function createSerenaCli(options?: CreateCliOptions): Command;
|
|
8
|
-
export declare function runSerenaCli(argv?: readonly string[]): Promise<void>;
|
|
9
|
-
export default runSerenaCli;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare const SERENA_MANAGED_DIR_NAME = ".smart-edit";
|
|
2
|
-
export declare const SERENA_MANAGED_DIR_IN_HOME: string;
|
|
3
|
-
export declare const REPO_ROOT: string;
|
|
4
|
-
export declare const PROMPT_TEMPLATES_DIR_INTERNAL: string;
|
|
5
|
-
export declare const PROMPT_TEMPLATES_DIR_IN_USER_HOME: string;
|
|
6
|
-
export declare const SERENAS_OWN_CONTEXT_YAMLS_DIR: string;
|
|
7
|
-
export declare const USER_CONTEXT_YAMLS_DIR: string;
|
|
8
|
-
export declare const SERENAS_OWN_MODE_YAMLS_DIR: string;
|
|
9
|
-
export declare const USER_MODE_YAMLS_DIR: string;
|
|
10
|
-
export declare const INTERNAL_MODE_YAMLS_DIR: string;
|
|
11
|
-
export declare const SERENA_DASHBOARD_DIR: string;
|
|
12
|
-
export declare const SERENA_ICON_DIR: string;
|
|
13
|
-
export declare const DEFAULT_ENCODING = "utf-8";
|
|
14
|
-
export declare const DEFAULT_CONTEXT = "desktop-app";
|
|
15
|
-
export declare const DEFAULT_MODES: readonly ["interactive", "editing"];
|
|
16
|
-
export declare const PROJECT_TEMPLATE_FILE: string;
|
|
17
|
-
export declare const SERENA_CONFIG_TEMPLATE_FILE: string;
|
|
18
|
-
export declare const SERENA_LOG_FORMAT = "%(levelname)-5s %(asctime)-15s [%(threadName)s] %(name)s:%(funcName)s:%(lineno)d - %(message)s";
|
package/dist/serena/constants.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import os from 'node:os';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = path.dirname(__filename);
|
|
6
|
-
const repoRoot = path.resolve(__dirname, '..', '..');
|
|
7
|
-
const serenaPackageRoot = path.resolve(__dirname);
|
|
8
|
-
const serenaManagedDirName = '.smart-edit';
|
|
9
|
-
const serenaManagedDirInHome = path.join(os.homedir(), serenaManagedDirName);
|
|
10
|
-
export const SERENA_MANAGED_DIR_NAME = serenaManagedDirName;
|
|
11
|
-
export const SERENA_MANAGED_DIR_IN_HOME = serenaManagedDirInHome;
|
|
12
|
-
export const REPO_ROOT = repoRoot;
|
|
13
|
-
export const PROMPT_TEMPLATES_DIR_INTERNAL = path.join(serenaPackageRoot, 'resources', 'config', 'prompt_templates');
|
|
14
|
-
export const PROMPT_TEMPLATES_DIR_IN_USER_HOME = path.join(serenaManagedDirInHome, 'prompt_templates');
|
|
15
|
-
export const SERENAS_OWN_CONTEXT_YAMLS_DIR = path.join(serenaPackageRoot, 'resources', 'config', 'contexts');
|
|
16
|
-
export const USER_CONTEXT_YAMLS_DIR = path.join(serenaManagedDirInHome, 'contexts');
|
|
17
|
-
export const SERENAS_OWN_MODE_YAMLS_DIR = path.join(serenaPackageRoot, 'resources', 'config', 'modes');
|
|
18
|
-
export const USER_MODE_YAMLS_DIR = path.join(serenaManagedDirInHome, 'modes');
|
|
19
|
-
export const INTERNAL_MODE_YAMLS_DIR = path.join(serenaPackageRoot, 'resources', 'config', 'internal_modes');
|
|
20
|
-
export const SERENA_DASHBOARD_DIR = path.join(serenaPackageRoot, 'resources', 'dashboard');
|
|
21
|
-
export const SERENA_ICON_DIR = path.join(serenaPackageRoot, 'resources', 'icons');
|
|
22
|
-
export const DEFAULT_ENCODING = 'utf-8';
|
|
23
|
-
export const DEFAULT_CONTEXT = 'desktop-app';
|
|
24
|
-
export const DEFAULT_MODES = ['interactive', 'editing'];
|
|
25
|
-
export const PROJECT_TEMPLATE_FILE = path.join(serenaPackageRoot, 'resources', 'project.template.yml');
|
|
26
|
-
export const SERENA_CONFIG_TEMPLATE_FILE = path.join(serenaPackageRoot, 'resources', 'serena_config.template.yml');
|
|
27
|
-
export const SERENA_LOG_FORMAT = '%(levelname)-5s %(asctime)-15s [%(threadName)s] %(name)s:%(funcName)s:%(lineno)d - %(message)s';
|