diff --git a/.gitignore b/.gitignore index 2363727be2..f20655a9ea 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ go.work go.work.sum # Claude Code local settings -.serena/cache +.serena .claude/settings.local.json .claude/* !.claude/skills/ diff --git a/.serena/.gitignore b/.serena/.gitignore deleted file mode 100644 index 14d86ad623..0000000000 --- a/.serena/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/cache diff --git a/.serena/project.yml b/.serena/project.yml deleted file mode 100644 index c0463d20a5..0000000000 --- a/.serena/project.yml +++ /dev/null @@ -1,125 +0,0 @@ -# whether to use the project's gitignore file to ignore files -# Added on 2025-04-07 -ignore_all_files_in_gitignore: true -# list of additional paths to ignore -# same syntax as gitignore, so you can use * and ** -# Was previously called `ignored_dirs`, please update your config if you are using that. -# Added (renamed) on 2025-04-07 -ignored_paths: [] - -# whether the project is in read-only mode -# If set to true, all editing tools will be disabled and attempts to use them will result in an error -# Added on 2025-04-18 -read_only: false - -# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details. -# Below is the complete list of tools for convenience. -# To make sure you have the latest list of tools, and to view their descriptions, -# execute `uv run scripts/print_tool_overview.py`. -# -# * `activate_project`: Activates a project by name. -# * `check_onboarding_performed`: Checks whether project onboarding was already performed. -# * `create_text_file`: Creates/overwrites a file in the project directory. -# * `delete_lines`: Deletes a range of lines within a file. -# * `delete_memory`: Deletes a memory from Serena's project-specific memory store. -# * `execute_shell_command`: Executes a shell command. -# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced. -# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type). -# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type). -# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes. -# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file. -# * `initial_instructions`: Gets the initial instructions for the current project. -# Should only be used in settings where the system prompt cannot be set, -# e.g. in clients you have no control over, like Claude Desktop. -# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol. -# * `insert_at_line`: Inserts content at a given line in a file. -# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol. -# * `list_dir`: Lists files and directories in the given directory (optionally with recursion). -# * `list_memories`: Lists memories in Serena's project-specific memory store. -# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building). -# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context). -# * `read_file`: Reads a file within the project directory. -# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store. -# * `remove_project`: Removes a project from the Serena configuration. -# * `replace_lines`: Replaces a range of lines within a file with new content. -# * `replace_symbol_body`: Replaces the full definition of a symbol. -# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen. -# * `search_for_pattern`: Performs a search for a pattern in the project. -# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase. -# * `switch_modes`: Activates modes by providing a list of their names -# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information. -# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task. -# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed. -# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store. -excluded_tools: [] - -# initial prompt for the project. It will always be given to the LLM upon activating the project -# (contrary to the memories, which are loaded on demand). -initial_prompt: '' -# the name by which the project can be referenced within Serena -project_name: 'ui' - -# list of mode names to that are always to be included in the set of active modes -# The full set of modes to be activated is base_modes + default_modes. -# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply. -# Otherwise, this setting overrides the global configuration. -# Set this to [] to disable base modes for this project. -# Set this to a list of mode names to always include the respective modes for this project. -base_modes: - -# list of mode names that are to be activated by default. -# The full set of modes to be activated is base_modes + default_modes. -# If the setting is undefined, the default_modes from the global configuration (serena_config.yml) apply. -# Otherwise, this overrides the setting from the global configuration (serena_config.yml). -# This setting can, in turn, be overridden by CLI parameters (--mode). -default_modes: - -# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default) -included_optional_tools: [] - -# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools. -# This cannot be combined with non-empty excluded_tools or included_optional_tools. -fixed_tools: [] - -# the encoding used by text files in the project -# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings -encoding: utf-8 - -# list of languages for which language servers are started; choose from: -# al bash clojure cpp csharp -# csharp_omnisharp dart elixir elm erlang -# fortran fsharp go groovy haskell -# java julia kotlin lua markdown -# matlab nix pascal perl php -# powershell python python_jedi r rego -# ruby ruby_solargraph rust scala swift -# terraform toml typescript typescript_vts vue -# yaml zig -# (This list may be outdated. For the current list, see values of Language enum here: -# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py -# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.) -# Note: -# - For C, use cpp -# - For JavaScript, use typescript -# - For Free Pascal/Lazarus, use pascal -# Special requirements: -# Some languages require additional setup/installations. -# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers -# When using multiple languages, the first language server that supports a given file will be used for that file. -# The first language is the default language and the respective language server will be used as a fallback. -# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored. -languages: - - typescript - -# time budget (seconds) per tool call for the retrieval of additional symbol information -# such as docstrings or parameter information. -# This overrides the corresponding setting in the global configuration; see the documentation there. -# If null or missing, use the setting from the global configuration. -symbol_info_budget: - -# The language backend to use for this project. -# If not set, the global setting from serena_config.yml is used. -# Valid values: LSP, JetBrains -# Note: the backend is fixed at startup. If a project with a different backend -# is activated post-init, an error will be returned. -language_backend: diff --git a/server/go.mod b/server/go.mod index 530e8748fe..e6c2066d00 100644 --- a/server/go.mod +++ b/server/go.mod @@ -11,7 +11,7 @@ require ( github.com/labstack/echo/v4 v4.13.4 github.com/stretchr/testify v1.10.0 github.com/urfave/cli/v2 v2.3.0 - go.temporal.io/api v1.62.2 + go.temporal.io/api v1.62.6 golang.org/x/net v0.48.0 golang.org/x/oauth2 v0.34.0 google.golang.org/grpc v1.79.3 diff --git a/server/go.sum b/server/go.sum index c3b8709884..17fd38fe1d 100644 --- a/server/go.sum +++ b/server/go.sum @@ -88,8 +88,8 @@ go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2W go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= -go.temporal.io/api v1.62.2 h1:jFhIzlqNyJsJZTiCRQmTIMv6OTQ5BZ57z8gbgLGMaoo= -go.temporal.io/api v1.62.2/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= +go.temporal.io/api v1.62.6 h1:JLH8y9URdY9WbdvwMXfGknlhohoPBrXOc9AbQkPInOc= +go.temporal.io/api v1.62.6/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= diff --git a/src/lib/components/event/event-card.svelte b/src/lib/components/event/event-card.svelte index a09931586f..944384c109 100644 --- a/src/lib/components/event/event-card.svelte +++ b/src/lib/components/event/event-card.svelte @@ -35,7 +35,12 @@ ? translate('events.category.local-activity') : spaceBetweenCapitalLetters(event.name), ); - const attributes = $derived(formatAttributes(event)); + const attributes = $derived.by(() => { + const attrs = formatAttributes(event); + if (event?.principal?.name) attrs.principalName = event.principal.name; + if (event?.principal?.type) attrs.principalType = event.principal.type; + return attrs; + }); const fields = $derived(Object.entries(attributes)); const payloadFields = $derived( fields.filter( diff --git a/src/lib/models/event-history/index.ts b/src/lib/models/event-history/index.ts index c57be0696d..6e71197a8c 100644 --- a/src/lib/models/event-history/index.ts +++ b/src/lib/models/event-history/index.ts @@ -87,6 +87,8 @@ export const toEvent = ( const completionLinks = completionCallbacks || attachedCompletionCallbacks; const links = historyEvent?.links || completionLinks || []; + const principal = historyEvent?.principal; + const event = { ...historyEvent, name: eventType, @@ -96,6 +98,7 @@ export const toEvent = ( classification, category, links, + principal, billableActions: 0, attributes: simplifyAttributes({ type: key, ...attributes }), }; diff --git a/src/lib/types/events.ts b/src/lib/types/events.ts index ed4a2c7b76..34242a663a 100644 --- a/src/lib/types/events.ts +++ b/src/lib/types/events.ts @@ -13,7 +13,12 @@ export type EventHistory = Replace< export type HistoryEvent = Replace< import('$lib/types').HistoryEvent, - { eventType: EventType; eventId: string; links?: EventLink[] } + { + eventType: EventType; + eventId: string; + links?: EventLink[]; + principal?: Principal; + } >; export type GetWorkflowExecutionHistoryResponse = Replace< @@ -72,6 +77,12 @@ export type EventWithMetadata = { historyEvent: HistoryEvent; } & EventRequestMetadata; +// Remove once TS SDK has support +export type Principal = { + type?: string; + name?: string; +}; + export type EventType = import('$lib/utilities/is-event-type').EventType; export type EventTypeCategory = @@ -89,6 +100,7 @@ export interface WorkflowEvent extends HistoryEvent { name: EventType; links?: EventLink[]; billableActions?: number; + principal?: Principal; } export type WorkflowEvents = WorkflowEvent[]; @@ -110,7 +122,8 @@ export type CommonEventKey = | 'category' | 'workerMayIgnore' | 'name' - | 'links'; + | 'links' + | 'principal'; export type CommonHistoryEvent = Pick; diff --git a/src/lib/utilities/format-event-attributes.ts b/src/lib/utilities/format-event-attributes.ts index 05b6d0ac73..774d8e37f3 100644 --- a/src/lib/utilities/format-event-attributes.ts +++ b/src/lib/utilities/format-event-attributes.ts @@ -25,6 +25,8 @@ export type CombinedAttributes = EventAttribute & { continuedExecutionRunId?: string; newExecutionRunId?: string; namespace?: string; + principalName?: string; + principalType?: string; }; const keysToExpand: Readonly> = new Set([