@ai-setting/roy-agent-core 1.0.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/dist/index.js +99145 -0
- package/package.json +114 -0
- package/src/config/config-component.test.ts +627 -0
- package/src/config/config-component.ts +906 -0
- package/src/config/config-parser.test.ts +319 -0
- package/src/config/config-parser.ts +203 -0
- package/src/config/decentralized-config.test.ts +740 -0
- package/src/config/env-key.ts +210 -0
- package/src/config/env-source.test.ts +252 -0
- package/src/config/env-source.ts +301 -0
- package/src/config/file-source.test.ts +357 -0
- package/src/config/file-source.ts +421 -0
- package/src/config/index.ts +24 -0
- package/src/config/protocol-resolver.test.ts +217 -0
- package/src/config/protocol-resolver.ts +228 -0
- package/src/env/agent/agent-component.abort.test.ts +511 -0
- package/src/env/agent/agent-component.record-session.test.ts +349 -0
- package/src/env/agent/agent-component.test.ts +1389 -0
- package/src/env/agent/agent-component.tool-error.test.ts +327 -0
- package/src/env/agent/agent-component.ts +1711 -0
- package/src/env/agent/agent-config-registration.test.ts +226 -0
- package/src/env/agent/agent-config-registration.ts +46 -0
- package/src/env/agent/agent-reminder-plugin.integration.test.ts +243 -0
- package/src/env/agent/index.ts +10 -0
- package/src/env/agent/summary-agent.parse-hint.test.ts +360 -0
- package/src/env/agent/summary-agent.ts +508 -0
- package/src/env/agent/types.ts +536 -0
- package/src/env/commands/commands-component.test.ts +364 -0
- package/src/env/commands/commands-component.ts +604 -0
- package/src/env/commands/commands-config-registration.test.ts +198 -0
- package/src/env/commands/commands-config-registration.ts +38 -0
- package/src/env/commands/index.ts +21 -0
- package/src/env/commands/parser.test.ts +203 -0
- package/src/env/commands/parser.ts +115 -0
- package/src/env/commands/types.ts +184 -0
- package/src/env/commands-prompt-integration.test.ts +243 -0
- package/src/env/component-env.test.ts +119 -0
- package/src/env/component.ts +335 -0
- package/src/env/constants.test.ts +72 -0
- package/src/env/constants.ts +123 -0
- package/src/env/debug/debug-component.test.ts +114 -0
- package/src/env/debug/debug-component.ts +547 -0
- package/src/env/debug/formatters/index.ts +9 -0
- package/src/env/debug/formatters/repl-formatter.test.ts +139 -0
- package/src/env/debug/formatters/repl-formatter.ts +358 -0
- package/src/env/debug/formatters/trace-formatter.test.ts +119 -0
- package/src/env/debug/formatters/trace-formatter.ts +191 -0
- package/src/env/debug/formatters/tree-formatter.test.ts +107 -0
- package/src/env/debug/formatters/tree-formatter.ts +325 -0
- package/src/env/debug/index.ts +38 -0
- package/src/env/debug/parser/regex-parser.test.ts +201 -0
- package/src/env/debug/parser/regex-parser.ts +196 -0
- package/src/env/debug/parser/span-builder.test.ts +241 -0
- package/src/env/debug/parser/span-builder.ts +386 -0
- package/src/env/debug/reader/log-reader.test.ts +170 -0
- package/src/env/debug/reader/log-reader.ts +186 -0
- package/src/env/debug/reader/span-db-reader.test.ts +118 -0
- package/src/env/debug/reader/span-db-reader.ts +201 -0
- package/src/env/debug/types.test.ts +187 -0
- package/src/env/debug/types.ts +171 -0
- package/src/env/environment-init.test.ts +183 -0
- package/src/env/environment-lifecycle.test.ts +516 -0
- package/src/env/environment-service.test.ts +332 -0
- package/src/env/environment.handle-query.test.ts +96 -0
- package/src/env/environment.test.ts +232 -0
- package/src/env/environment.ts +708 -0
- package/src/env/errors.test.ts +165 -0
- package/src/env/errors.ts +157 -0
- package/src/env/event-source/event-source-agent-handler.test.ts +193 -0
- package/src/env/event-source/event-source-agent-handler.ts +111 -0
- package/src/env/event-source/event-source-component.process-cleanup.test.ts +236 -0
- package/src/env/event-source/event-source-component.stop.test.ts +346 -0
- package/src/env/event-source/event-source-component.test.ts +1207 -0
- package/src/env/event-source/event-source-component.ts +1379 -0
- package/src/env/event-source/event-source-config-registration.test.ts +242 -0
- package/src/env/event-source/event-source-config-registration.ts +37 -0
- package/src/env/event-source/event-source-integration.test.ts +320 -0
- package/src/env/event-source/event-source-platform.test.ts +630 -0
- package/src/env/event-source/types.ts +298 -0
- package/src/env/hook/global-hook-manager.ts +162 -0
- package/src/env/hook/hook-manager.test.ts +374 -0
- package/src/env/hook/hook-manager.ts +309 -0
- package/src/env/hook/index.ts +38 -0
- package/src/env/hook/types.ts +138 -0
- package/src/env/index.ts +144 -0
- package/src/env/interface.ts +203 -0
- package/src/env/llm/hooks.test.ts +293 -0
- package/src/env/llm/hooks.ts +316 -0
- package/src/env/llm/index.ts +61 -0
- package/src/env/llm/invoke-threshold-check.test.ts +88 -0
- package/src/env/llm/invoke-timeout.test.ts +54 -0
- package/src/env/llm/invoke.test.ts +71 -0
- package/src/env/llm/invoke.ts +1039 -0
- package/src/env/llm/llm-config.test.ts +523 -0
- package/src/env/llm/llm.test.ts +233 -0
- package/src/env/llm/llm.ts +568 -0
- package/src/env/llm/provider.test.ts +182 -0
- package/src/env/llm/provider.ts +108 -0
- package/src/env/llm/transform.test.ts +251 -0
- package/src/env/llm/transform.ts +286 -0
- package/src/env/llm/types.test.ts +580 -0
- package/src/env/llm/types.ts +424 -0
- package/src/env/log-trace/decorator-otel.test.ts +182 -0
- package/src/env/log-trace/decorator.ts +230 -0
- package/src/env/log-trace/index.ts +79 -0
- package/src/env/log-trace/log-trace-component.test.ts +242 -0
- package/src/env/log-trace/log-trace-component.ts +497 -0
- package/src/env/log-trace/log-trace-config-registration.test.ts +348 -0
- package/src/env/log-trace/log-trace-config-registration.ts +45 -0
- package/src/env/log-trace/logger.test.ts +149 -0
- package/src/env/log-trace/logger.ts +522 -0
- package/src/env/log-trace/opentelemetry/cli-propagation.test.ts +147 -0
- package/src/env/log-trace/opentelemetry/cli-propagation.ts +194 -0
- package/src/env/log-trace/opentelemetry/integration.test.ts +668 -0
- package/src/env/log-trace/opentelemetry/mod.ts +25 -0
- package/src/env/log-trace/opentelemetry/propagation-env.test.ts +181 -0
- package/src/env/log-trace/opentelemetry/propagation-env.ts +136 -0
- package/src/env/log-trace/opentelemetry/propagation.test.ts +259 -0
- package/src/env/log-trace/opentelemetry/propagation.ts +215 -0
- package/src/env/log-trace/opentelemetry/tracer-provider-context.test.ts +166 -0
- package/src/env/log-trace/opentelemetry/tracer-provider.test.ts +379 -0
- package/src/env/log-trace/opentelemetry/tracer-provider.ts +612 -0
- package/src/env/log-trace/span-storage.test.ts +145 -0
- package/src/env/log-trace/span-storage.ts +230 -0
- package/src/env/log-trace/trace-context.test.ts +187 -0
- package/src/env/log-trace/trace-context.ts +162 -0
- package/src/env/log-trace/types.test.ts +63 -0
- package/src/env/log-trace/types.ts +172 -0
- package/src/env/mcp/README.md +244 -0
- package/src/env/mcp/__integration__/mcp-component.integration.test.ts +373 -0
- package/src/env/mcp/config.test.ts +74 -0
- package/src/env/mcp/config.ts +116 -0
- package/src/env/mcp/index.ts +41 -0
- package/src/env/mcp/loader.test.ts +161 -0
- package/src/env/mcp/loader.ts +209 -0
- package/src/env/mcp/mcp-component.test.ts +111 -0
- package/src/env/mcp/mcp-component.ts +358 -0
- package/src/env/mcp/mcp-config-registration.test.ts +304 -0
- package/src/env/mcp/mcp-config-registration.ts +50 -0
- package/src/env/mcp/scanner.test.ts +170 -0
- package/src/env/mcp/scanner.ts +246 -0
- package/src/env/mcp/tool/adapter.test.ts +520 -0
- package/src/env/mcp/tool/adapter.ts +521 -0
- package/src/env/mcp/tool/index.ts +5 -0
- package/src/env/mcp/types.test.ts +171 -0
- package/src/env/mcp/types.ts +79 -0
- package/src/env/memory/README.md +177 -0
- package/src/env/memory/built-in/index.ts +59 -0
- package/src/env/memory/built-in/recall-memory.ts +103 -0
- package/src/env/memory/built-in/record-memory.ts +148 -0
- package/src/env/memory/index.ts +20 -0
- package/src/env/memory/memory-component.test.ts +239 -0
- package/src/env/memory/memory-component.ts +503 -0
- package/src/env/memory/memory-config-registration.test.ts +67 -0
- package/src/env/memory/memory-config-registration.ts +48 -0
- package/src/env/memory/memory-config.ts +45 -0
- package/src/env/memory/memory-file.test.ts +268 -0
- package/src/env/memory/plugin/index.ts +48 -0
- package/src/env/memory/plugin/memory-agent.test.ts +249 -0
- package/src/env/memory/plugin/memory-agent.ts +365 -0
- package/src/env/memory/plugin/memory-manager.ts +198 -0
- package/src/env/memory/plugin/memory-plugin-agent.test.ts +145 -0
- package/src/env/memory/plugin/memory-plugin.ts +210 -0
- package/src/env/memory/plugin/plugin-simplified.test.ts +51 -0
- package/src/env/memory/plugin/recall-memory.test.ts +106 -0
- package/src/env/memory/plugin/recall-memory.ts +53 -0
- package/src/env/memory/plugin/types.ts +101 -0
- package/src/env/memory/tools/memory-agent-tools.ts +228 -0
- package/src/env/memory/types.ts +85 -0
- package/src/env/paths.ts +118 -0
- package/src/env/prompt/index.ts +18 -0
- package/src/env/prompt/memory-prompts.test.ts +91 -0
- package/src/env/prompt/prompt-component.test.ts +491 -0
- package/src/env/prompt/prompt-component.ts +619 -0
- package/src/env/prompt/prompt-config-registration.test.ts +213 -0
- package/src/env/prompt/prompt-config-registration.ts +39 -0
- package/src/env/prompt/prompts-index.ts +504 -0
- package/src/env/prompt/renderer.ts +67 -0
- package/src/env/prompt/types.ts +136 -0
- package/src/env/session/hooks.ts +18 -0
- package/src/env/session/index.ts +37 -0
- package/src/env/session/search-query-parser.test.ts +425 -0
- package/src/env/session/search-query-parser.ts +171 -0
- package/src/env/session/session-checkpoint.test.ts +523 -0
- package/src/env/session/session-component.extract-recent-messages.test.ts +209 -0
- package/src/env/session/session-component.test.ts +132 -0
- package/src/env/session/session-component.ts +1249 -0
- package/src/env/session/session-config-registration.test.ts +138 -0
- package/src/env/session/session-config-registration.ts +52 -0
- package/src/env/session/session-message-converter.test.ts +763 -0
- package/src/env/session/session-message-converter.ts +415 -0
- package/src/env/session/session-message-e2e.test.ts +448 -0
- package/src/env/session/session-search.test.ts +391 -0
- package/src/env/session/session-store.test.ts +362 -0
- package/src/env/session/session-store.ts +141 -0
- package/src/env/session/storage/index.ts +6 -0
- package/src/env/session/storage/memory.ts +502 -0
- package/src/env/session/storage/sqlite.ts +794 -0
- package/src/env/session/types.ts +742 -0
- package/src/env/skill/config.ts +39 -0
- package/src/env/skill/index.ts +6 -0
- package/src/env/skill/parser.test.ts +116 -0
- package/src/env/skill/parser.ts +77 -0
- package/src/env/skill/scanner.test.ts +211 -0
- package/src/env/skill/scanner.ts +119 -0
- package/src/env/skill/skill-component.test.ts +234 -0
- package/src/env/skill/skill-component.ts +352 -0
- package/src/env/skill/skill-config-registration.test.ts +60 -0
- package/src/env/skill/skill-config-registration.ts +43 -0
- package/src/env/skill/tool/index.ts +1 -0
- package/src/env/skill/tool/skill-tool.test.ts +100 -0
- package/src/env/skill/tool/skill-tool.ts +72 -0
- package/src/env/skill/types.ts +64 -0
- package/src/env/task/delegate/delegate-tool.test.ts +498 -0
- package/src/env/task/delegate/delegate-tool.ts +1014 -0
- package/src/env/task/delegate/index.ts +18 -0
- package/src/env/task/delegate/stop-tool.test.ts +140 -0
- package/src/env/task/delegate/stop-tool.ts +119 -0
- package/src/env/task/delegate/task-events.test.ts +178 -0
- package/src/env/task/delegate/task-events.ts +143 -0
- package/src/env/task/hooks/contexts.test.ts +92 -0
- package/src/env/task/hooks/contexts.ts +192 -0
- package/src/env/task/hooks/index.ts +23 -0
- package/src/env/task/hooks/task-hook-points.test.ts +32 -0
- package/src/env/task/hooks/task-hook-points.ts +54 -0
- package/src/env/task/index.ts +7 -0
- package/src/env/task/plugins/index.ts +13 -0
- package/src/env/task/plugins/task-plugin.test.ts +74 -0
- package/src/env/task/plugins/task-plugin.ts +89 -0
- package/src/env/task/plugins/task-tag-plugin.test.ts +377 -0
- package/src/env/task/plugins/task-tag-plugin.ts +319 -0
- package/src/env/task/plugins/task-workflow-extractor.integration.test.ts +226 -0
- package/src/env/task/plugins/workflow-extractor-agent.test.ts +107 -0
- package/src/env/task/plugins/workflow-extractor-agent.ts +225 -0
- package/src/env/task/storage/index.ts +6 -0
- package/src/env/task/storage/sqlite-task-store.test.ts +283 -0
- package/src/env/task/storage/sqlite-task-store.ts +903 -0
- package/src/env/task/storage/task-search.test.ts +291 -0
- package/src/env/task/tag-service.test.ts +198 -0
- package/src/env/task/tag-service.ts +264 -0
- package/src/env/task/task-component.test.ts +193 -0
- package/src/env/task/task-component.ts +658 -0
- package/src/env/task/task-config-registration.test.ts +57 -0
- package/src/env/task/task-config-registration.ts +37 -0
- package/src/env/task/task-types.test.ts +137 -0
- package/src/env/task/tools/complete-tool.ts +44 -0
- package/src/env/task/tools/create-tool.ts +49 -0
- package/src/env/task/tools/delete-tool.ts +43 -0
- package/src/env/task/tools/get-tool.ts +59 -0
- package/src/env/task/tools/index.ts +10 -0
- package/src/env/task/tools/list-tool.ts +40 -0
- package/src/env/task/tools/operation/create-tool.ts +48 -0
- package/src/env/task/tools/operation/delete-tool.ts +43 -0
- package/src/env/task/tools/operation/get-tool.ts +43 -0
- package/src/env/task/tools/operation/index.ts +9 -0
- package/src/env/task/tools/operation/list-tool.ts +40 -0
- package/src/env/task/tools/operation/operation-tools.test.ts +274 -0
- package/src/env/task/tools/operation/operation-types.ts +75 -0
- package/src/env/task/tools/operation/update-tool.ts +47 -0
- package/src/env/task/tools/task-tools.test.ts +203 -0
- package/src/env/task/tools/task-types.test.ts +75 -0
- package/src/env/task/tools/task-types.ts +68 -0
- package/src/env/task/tools/update-tool.ts +70 -0
- package/src/env/task/types.ts +160 -0
- package/src/env/tool/built-in/bash.ts +201 -0
- package/src/env/tool/built-in/echo.ts +29 -0
- package/src/env/tool/built-in/edit-file.test.ts +136 -0
- package/src/env/tool/built-in/edit-file.ts +92 -0
- package/src/env/tool/built-in/glob.test.ts +94 -0
- package/src/env/tool/built-in/glob.ts +65 -0
- package/src/env/tool/built-in/grep.test.ts +122 -0
- package/src/env/tool/built-in/grep.ts +108 -0
- package/src/env/tool/built-in/index.ts +44 -0
- package/src/env/tool/built-in/read-file.test.ts +84 -0
- package/src/env/tool/built-in/read-file.ts +75 -0
- package/src/env/tool/built-in/write-file.test.ts +119 -0
- package/src/env/tool/built-in/write-file.ts +68 -0
- package/src/env/tool/index.ts +24 -0
- package/src/env/tool/registry.test.ts +257 -0
- package/src/env/tool/registry.ts +167 -0
- package/src/env/tool/tool-component.test.ts +559 -0
- package/src/env/tool/tool-component.ts +563 -0
- package/src/env/tool/tool-config-registration.test.ts +249 -0
- package/src/env/tool/tool-config-registration.ts +46 -0
- package/src/env/tool/types.ts +267 -0
- package/src/env/tool/validator.test.ts +143 -0
- package/src/env/tool/validator.ts +44 -0
- package/src/env/types.ts +180 -0
- package/src/env/workflow/ask-user-tool-registration.test.ts +216 -0
- package/src/env/workflow/complex-workflow.integration.test.ts +1900 -0
- package/src/env/workflow/decorators/decorator-node.ts +229 -0
- package/src/env/workflow/decorators/decorator.test.ts +196 -0
- package/src/env/workflow/decorators/edge.ts +82 -0
- package/src/env/workflow/decorators/index.ts +31 -0
- package/src/env/workflow/decorators/node-as.ts +98 -0
- package/src/env/workflow/decorators/workflow.ts +54 -0
- package/src/env/workflow/engine/dag-manager.test.ts +570 -0
- package/src/env/workflow/engine/dag-manager.ts +594 -0
- package/src/env/workflow/engine/engine.ts +1422 -0
- package/src/env/workflow/engine/event-bus.test.ts +359 -0
- package/src/env/workflow/engine/event-bus.ts +156 -0
- package/src/env/workflow/engine/executor-agent-session.test.ts +84 -0
- package/src/env/workflow/engine/executor.test.ts +619 -0
- package/src/env/workflow/engine/executor.ts +593 -0
- package/src/env/workflow/engine/index.ts +24 -0
- package/src/env/workflow/engine/node-registry.test.ts +560 -0
- package/src/env/workflow/engine/node-registry.ts +289 -0
- package/src/env/workflow/engine/resume-removed.test.ts +22 -0
- package/src/env/workflow/engine/scheduler.test.ts +715 -0
- package/src/env/workflow/engine/scheduler.ts +318 -0
- package/src/env/workflow/engine/workflow-engine.test.ts +815 -0
- package/src/env/workflow/extractor/workflow-converter.ts +306 -0
- package/src/env/workflow/fixtures.ts +380 -0
- package/src/env/workflow/index.ts +38 -0
- package/src/env/workflow/integration/run-resume-unified.test.ts +186 -0
- package/src/env/workflow/integration/service-integration.test.ts +267 -0
- package/src/env/workflow/metadata/keys.ts +12 -0
- package/src/env/workflow/nodes/agent-component-adapter.test.ts +318 -0
- package/src/env/workflow/nodes/agent-component-adapter.ts +448 -0
- package/src/env/workflow/nodes/agent-node.test.ts +371 -0
- package/src/env/workflow/nodes/agent-node.ts +598 -0
- package/src/env/workflow/nodes/ask-user-node.ts +113 -0
- package/src/env/workflow/nodes/condition-node.ts +200 -0
- package/src/env/workflow/nodes/index.ts +9 -0
- package/src/env/workflow/nodes/merge-node.ts +141 -0
- package/src/env/workflow/nodes/skill-node.test.ts +253 -0
- package/src/env/workflow/nodes/skill-node.ts +393 -0
- package/src/env/workflow/nodes/tool-node.test.ts +251 -0
- package/src/env/workflow/nodes/tool-node.ts +493 -0
- package/src/env/workflow/nodes/workflow-llm-history.test.ts +455 -0
- package/src/env/workflow/nodes/workflow-node.test.ts +315 -0
- package/src/env/workflow/nodes/workflow-node.ts +311 -0
- package/src/env/workflow/service/index.ts +27 -0
- package/src/env/workflow/service/registry.test.ts +133 -0
- package/src/env/workflow/service/registry.ts +71 -0
- package/src/env/workflow/service/workflow-service.test.ts +310 -0
- package/src/env/workflow/service/workflow-service.ts +393 -0
- package/src/env/workflow/storage/index.ts +28 -0
- package/src/env/workflow/storage/mock-repositories.ts +385 -0
- package/src/env/workflow/storage/sqlite.test.ts +179 -0
- package/src/env/workflow/storage/sqlite.ts +163 -0
- package/src/env/workflow/storage/workflow-repo.test.ts +780 -0
- package/src/env/workflow/storage/workflow-repo.ts +342 -0
- package/src/env/workflow/tools/ask-user-tool.ts +82 -0
- package/src/env/workflow/tools/index.ts +26 -0
- package/src/env/workflow/tools/run-workflow.test.ts +352 -0
- package/src/env/workflow/tools/run-workflow.ts +214 -0
- package/src/env/workflow/types/context.ts +18 -0
- package/src/env/workflow/types/decorators-types.ts +198 -0
- package/src/env/workflow/types/event.test.ts +515 -0
- package/src/env/workflow/types/event.ts +193 -0
- package/src/env/workflow/types/index.ts +49 -0
- package/src/env/workflow/types/run.test.ts +437 -0
- package/src/env/workflow/types/run.ts +173 -0
- package/src/env/workflow/types/workflow-hil.ts +114 -0
- package/src/env/workflow/types/workflow-message.test.ts +138 -0
- package/src/env/workflow/types/workflow-message.ts +196 -0
- package/src/env/workflow/types/workflow-session.test.ts +95 -0
- package/src/env/workflow/types/workflow-session.ts +59 -0
- package/src/env/workflow/types/workflow.test.ts +495 -0
- package/src/env/workflow/types/workflow.ts +195 -0
- package/src/env/workflow/types_compat.ts +51 -0
- package/src/env/workflow/utils/create-workflow.ts +47 -0
- package/src/env/workflow/utils/execution-state.ts +245 -0
- package/src/env/workflow/utils/index.ts +18 -0
- package/src/env/workflow/utils/node-registry-helper.ts +58 -0
- package/src/env/workflow/utils/recovery-validator.test.ts +460 -0
- package/src/env/workflow/utils/recovery-validator.ts +377 -0
- package/src/env/workflow/utils/session-parser.test.ts +111 -0
- package/src/env/workflow/utils/session-parser.ts +94 -0
- package/src/env/workflow/utils/session-recovery.test.ts +334 -0
- package/src/env/workflow/utils/session-recovery.ts +188 -0
- package/src/env/workflow/utils/template-resolver.test.ts +258 -0
- package/src/env/workflow/utils/template-resolver.ts +436 -0
- package/src/env/workflow/utils/validation-rules.ts +149 -0
- package/src/env/workflow/workflow-component.ts +544 -0
- package/src/index.ts +422 -0
- package/src/utils/id.ts +21 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Debug Component Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for trace parsing, formatting, and debugging utilities.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Core Trace Types
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Trace action type
|
|
13
|
+
*/
|
|
14
|
+
export type TraceAction = 'enter' | 'quit' | 'error';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Log level type
|
|
18
|
+
*/
|
|
19
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Trace entry representing a single log line with trace info
|
|
23
|
+
*/
|
|
24
|
+
export interface TraceEntry {
|
|
25
|
+
/** Unique request/trace identifier */
|
|
26
|
+
traceId: string;
|
|
27
|
+
/** Timestamp of the entry (ISO format) */
|
|
28
|
+
timestamp: string;
|
|
29
|
+
/** Function/method name */
|
|
30
|
+
function: string;
|
|
31
|
+
/** Action type: enter, quit, or error */
|
|
32
|
+
action: TraceAction;
|
|
33
|
+
/** Parameters (for enter action) */
|
|
34
|
+
params?: unknown[];
|
|
35
|
+
/** Result (for quit action) */
|
|
36
|
+
result?: unknown;
|
|
37
|
+
/** Error message (for error action) */
|
|
38
|
+
error?: string;
|
|
39
|
+
/** Calculated duration in milliseconds (for quit action) */
|
|
40
|
+
durationMs?: number;
|
|
41
|
+
/** Span ID (for SQLite spans) */
|
|
42
|
+
spanId?: string;
|
|
43
|
+
/** Parent span ID (for SQLite spans) */
|
|
44
|
+
parentSpanId?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Call tree node for hierarchical trace visualization
|
|
49
|
+
*/
|
|
50
|
+
export interface TraceTreeNode {
|
|
51
|
+
/** Unique request/trace identifier */
|
|
52
|
+
traceId: string;
|
|
53
|
+
/** Function/method name */
|
|
54
|
+
function: string;
|
|
55
|
+
/** Start timestamp */
|
|
56
|
+
startTime: string;
|
|
57
|
+
/** End timestamp (for completed nodes) */
|
|
58
|
+
endTime?: string;
|
|
59
|
+
/** Duration in milliseconds */
|
|
60
|
+
durationMs?: number;
|
|
61
|
+
/** Child nodes */
|
|
62
|
+
children: TraceTreeNode[];
|
|
63
|
+
/** Original trace entry (optional for programmatically created nodes) */
|
|
64
|
+
entry?: TraceEntry;
|
|
65
|
+
/** Span ID (for SQLite spans) */
|
|
66
|
+
spanId?: string;
|
|
67
|
+
/** Parent span ID (for SQLite spans) */
|
|
68
|
+
parentSpanId?: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// Parser Types
|
|
73
|
+
// ============================================================================
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Options for parsing logs
|
|
77
|
+
*/
|
|
78
|
+
export interface ParserOptions {
|
|
79
|
+
/** Log file path to read */
|
|
80
|
+
logFile?: string;
|
|
81
|
+
/** Filter by trace ID */
|
|
82
|
+
traceId?: string;
|
|
83
|
+
/** Filter by function name (supports partial match) */
|
|
84
|
+
function?: string;
|
|
85
|
+
/** Start time filter (ISO format or relative like "1h") */
|
|
86
|
+
since?: string;
|
|
87
|
+
/** End time filter (ISO format) */
|
|
88
|
+
until?: string;
|
|
89
|
+
/** Log level filter */
|
|
90
|
+
level?: LogLevel;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Options for log discovery
|
|
95
|
+
*/
|
|
96
|
+
export interface LogDiscoveryOptions {
|
|
97
|
+
/** Log directory to search */
|
|
98
|
+
logDir?: string;
|
|
99
|
+
/** File pattern to match */
|
|
100
|
+
pattern?: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Parsed log line with extracted fields
|
|
105
|
+
*/
|
|
106
|
+
export interface ParsedLogLine {
|
|
107
|
+
/** Original log line */
|
|
108
|
+
raw: string;
|
|
109
|
+
/** Timestamp extracted from log */
|
|
110
|
+
timestamp: string;
|
|
111
|
+
/** Log level (INFO, DEBUG, WARN, ERROR) */
|
|
112
|
+
level: string;
|
|
113
|
+
/** Source file/location */
|
|
114
|
+
source: string;
|
|
115
|
+
/** Category (traced:...) */
|
|
116
|
+
category: string;
|
|
117
|
+
/** Action symbol (>>> or <<< or !!!) */
|
|
118
|
+
action: string;
|
|
119
|
+
/** Method/function name */
|
|
120
|
+
method: string;
|
|
121
|
+
/** Action type (enter, quit, error) */
|
|
122
|
+
actionType: TraceAction;
|
|
123
|
+
/** Raw arguments string */
|
|
124
|
+
rawArgs: string;
|
|
125
|
+
/** Request ID extracted from log (if present) */
|
|
126
|
+
requestId: string | null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Info Types
|
|
131
|
+
// ============================================================================
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Trace ID information summary
|
|
135
|
+
*/
|
|
136
|
+
export interface TraceIdInfo {
|
|
137
|
+
/** Trace ID */
|
|
138
|
+
traceId: string;
|
|
139
|
+
/** First occurrence timestamp */
|
|
140
|
+
firstTime: string;
|
|
141
|
+
/** Last occurrence timestamp */
|
|
142
|
+
lastTime?: string;
|
|
143
|
+
/** Number of entries for this trace */
|
|
144
|
+
count: number;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ============================================================================
|
|
148
|
+
// Formatter Types
|
|
149
|
+
// ============================================================================
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Output format options
|
|
153
|
+
*/
|
|
154
|
+
export interface FormatOptions {
|
|
155
|
+
/** Use pretty printing */
|
|
156
|
+
pretty?: boolean;
|
|
157
|
+
/** Maximum depth for recursive objects */
|
|
158
|
+
maxDepth?: number;
|
|
159
|
+
/** Include raw data */
|
|
160
|
+
includeRaw?: boolean;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Trace summary for list output
|
|
165
|
+
*/
|
|
166
|
+
export interface TraceSummary {
|
|
167
|
+
/** List of trace ID info */
|
|
168
|
+
traceIds: TraceIdInfo[];
|
|
169
|
+
/** Total count */
|
|
170
|
+
count: number;
|
|
171
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from "bun:test";
|
|
2
|
+
import { BaseEnvironment, type BaseEnvironmentConfig } from "./environment";
|
|
3
|
+
import { BaseComponent } from "./component";
|
|
4
|
+
|
|
5
|
+
// 全局初始化计数器,用于跟踪初始化顺序
|
|
6
|
+
let initCounter = 0;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 测试用 ConfigComponent
|
|
10
|
+
*/
|
|
11
|
+
class TestConfigComponent extends BaseComponent {
|
|
12
|
+
readonly name = "config";
|
|
13
|
+
readonly version = "1.0.0";
|
|
14
|
+
protected initOrder = 0;
|
|
15
|
+
|
|
16
|
+
getInitOrder(): number {
|
|
17
|
+
return this.initOrder;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
protected async onInit(): Promise<void> {
|
|
21
|
+
this.initOrder = ++initCounter;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 测试用 ToolComponent
|
|
27
|
+
*/
|
|
28
|
+
class TestToolComponent extends BaseComponent {
|
|
29
|
+
readonly name = "tool";
|
|
30
|
+
readonly version = "1.0.0";
|
|
31
|
+
protected initOrder = 0;
|
|
32
|
+
|
|
33
|
+
getInitOrder(): number {
|
|
34
|
+
return this.initOrder;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
protected async onInit(): Promise<void> {
|
|
38
|
+
this.initOrder = ++initCounter;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 测试用 PromptComponent
|
|
44
|
+
*/
|
|
45
|
+
class TestPromptComponent extends BaseComponent {
|
|
46
|
+
readonly name = "prompt";
|
|
47
|
+
readonly version = "1.0.0";
|
|
48
|
+
protected initOrder = 0;
|
|
49
|
+
|
|
50
|
+
getInitOrder(): number {
|
|
51
|
+
return this.initOrder;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
protected async onInit(): Promise<void> {
|
|
55
|
+
this.initOrder = ++initCounter;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
describe("Environment component initialization", () => {
|
|
60
|
+
let env: BaseEnvironment;
|
|
61
|
+
|
|
62
|
+
beforeEach(() => {
|
|
63
|
+
env = new BaseEnvironment({ name: "test-env", version: "1.0.0" });
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe("分阶段初始化", () => {
|
|
67
|
+
it("should init ConfigComponent first", async () => {
|
|
68
|
+
const configComp = new TestConfigComponent();
|
|
69
|
+
const toolComp = new TestToolComponent();
|
|
70
|
+
|
|
71
|
+
// 故意先注册 tool,再注册 config
|
|
72
|
+
env.registerComponent(toolComp);
|
|
73
|
+
env.registerComponent(configComp);
|
|
74
|
+
|
|
75
|
+
await env.init();
|
|
76
|
+
|
|
77
|
+
// ConfigComponent 应该先于 ToolComponent 完成初始化
|
|
78
|
+
expect(configComp.getStatus()).toBe("running");
|
|
79
|
+
expect(toolComp.getStatus()).toBe("running");
|
|
80
|
+
expect(configComp.getInitOrder()).toBeLessThan(toolComp.getInitOrder());
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it("should pass env to all components", async () => {
|
|
84
|
+
const toolComp = new TestToolComponent();
|
|
85
|
+
env.registerComponent(toolComp);
|
|
86
|
+
|
|
87
|
+
await env.init();
|
|
88
|
+
|
|
89
|
+
// 验证 env 被正确注入
|
|
90
|
+
expect((toolComp as any).env).toBe(env);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("should not re-init already initialized components", async () => {
|
|
94
|
+
const configComp = new TestConfigComponent();
|
|
95
|
+
env.registerComponent(configComp);
|
|
96
|
+
|
|
97
|
+
// 手动初始化
|
|
98
|
+
await configComp.init({
|
|
99
|
+
name: "config",
|
|
100
|
+
version: "1.0.0",
|
|
101
|
+
enabled: true,
|
|
102
|
+
env,
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const firstInitTime = configComp.getInitOrder();
|
|
106
|
+
|
|
107
|
+
// 调用环境初始化
|
|
108
|
+
await env.init();
|
|
109
|
+
|
|
110
|
+
// initOrder 不应该改变(因为已经初始化过了)
|
|
111
|
+
expect(configComp.getInitOrder()).toBe(firstInitTime);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it("should init multiple components in correct order", async () => {
|
|
115
|
+
const configComp = new TestConfigComponent();
|
|
116
|
+
const toolComp = new TestToolComponent();
|
|
117
|
+
const promptComp = new TestPromptComponent();
|
|
118
|
+
|
|
119
|
+
// 以任意顺序注册
|
|
120
|
+
env.registerComponent(promptComp);
|
|
121
|
+
env.registerComponent(toolComp);
|
|
122
|
+
env.registerComponent(configComp);
|
|
123
|
+
|
|
124
|
+
await env.init();
|
|
125
|
+
|
|
126
|
+
// 验证初始化顺序
|
|
127
|
+
expect(configComp.getInitOrder()).toBeLessThan(toolComp.getInitOrder());
|
|
128
|
+
expect(configComp.getInitOrder()).toBeLessThan(promptComp.getInitOrder());
|
|
129
|
+
|
|
130
|
+
// 验证所有组件都正确初始化
|
|
131
|
+
expect(configComp.getStatus()).toBe("running");
|
|
132
|
+
expect(toolComp.getStatus()).toBe("running");
|
|
133
|
+
expect(promptComp.getStatus()).toBe("running");
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it("should handle environment without ConfigComponent", async () => {
|
|
137
|
+
const toolComp = new TestToolComponent();
|
|
138
|
+
const promptComp = new TestPromptComponent();
|
|
139
|
+
|
|
140
|
+
env.registerComponent(toolComp);
|
|
141
|
+
env.registerComponent(promptComp);
|
|
142
|
+
|
|
143
|
+
await env.init();
|
|
144
|
+
|
|
145
|
+
// 没有 ConfigComponent 时,其他组件也应该正常初始化
|
|
146
|
+
expect(toolComp.getStatus()).toBe("running");
|
|
147
|
+
expect(promptComp.getStatus()).toBe("running");
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it("should set env property on Environment itself", async () => {
|
|
151
|
+
await env.init();
|
|
152
|
+
|
|
153
|
+
// Environment 自身也应该有 env 属性(自引用)
|
|
154
|
+
expect((env as any).env).toBe(env);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
describe("getEnv() access", () => {
|
|
159
|
+
it("should allow components to access env via getEnv()", async () => {
|
|
160
|
+
const toolComp = new TestToolComponent();
|
|
161
|
+
env.registerComponent(toolComp);
|
|
162
|
+
|
|
163
|
+
await env.init();
|
|
164
|
+
|
|
165
|
+
// 组件应该能通过 getEnv() 访问 Environment
|
|
166
|
+
expect(toolComp.getEnv()).toBe(env);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it("should allow components to get other components", async () => {
|
|
170
|
+
const configComp = new TestConfigComponent();
|
|
171
|
+
const toolComp = new TestToolComponent();
|
|
172
|
+
|
|
173
|
+
env.registerComponent(configComp);
|
|
174
|
+
env.registerComponent(toolComp);
|
|
175
|
+
|
|
176
|
+
await env.init();
|
|
177
|
+
|
|
178
|
+
// 组件应该能通过 env.getComponent() 获取其他组件
|
|
179
|
+
const retrieved = toolComp.getEnv().getComponent("config");
|
|
180
|
+
expect(retrieved).toBe(configComp);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|