@roackb2/heddle 1.5.0 → 1.7.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/README.md +5 -0
- package/dist/examples/conversation-engine.js +10 -10
- package/dist/examples/conversation-engine.js.map +1 -1
- package/dist/examples/heartbeat-scheduler.js +2 -2
- package/dist/examples/heartbeat-scheduler.js.map +1 -1
- package/dist/examples/heartbeat.js +2 -2
- package/dist/examples/heartbeat.js.map +1 -1
- package/dist/examples/programmatic-loop.js +2 -2
- package/dist/examples/programmatic-loop.js.map +1 -1
- package/dist/examples/repo-investigator.js +4 -4
- package/dist/examples/repo-investigator.js.map +1 -1
- package/dist/src/cli/ask.d.ts.map +1 -1
- package/dist/src/cli/ask.js +5 -5
- package/dist/src/cli/ask.js.map +1 -1
- package/dist/src/cli/auth.d.ts +14 -7
- package/dist/src/cli/auth.d.ts.map +1 -1
- package/dist/src/cli/auth.js +75 -70
- package/dist/src/cli/auth.js.map +1 -1
- package/dist/src/cli/chat/adapters/conversation-activity-adapter.d.ts +1 -1
- package/dist/src/cli/chat/adapters/conversation-activity-adapter.d.ts.map +1 -1
- package/dist/src/cli/chat/adapters/conversation-activity-adapter.js +29 -19
- package/dist/src/cli/chat/adapters/conversation-activity-adapter.js.map +1 -1
- package/dist/src/cli/chat/adapters/slash-command-context.js +4 -4
- package/dist/src/cli/chat/adapters/slash-command-context.js.map +1 -1
- package/dist/src/cli/chat/commands/debug-snapshot-command.js +2 -2
- package/dist/src/cli/chat/commands/debug-snapshot-command.js.map +1 -1
- package/dist/src/cli/chat/components/ModelPickerPanel.d.ts +1 -1
- package/dist/src/cli/chat/components/ModelPickerPanel.js +1 -1
- package/dist/src/cli/chat/debug/tui-debug-snapshot.d.ts +1 -1
- package/dist/src/cli/chat/debug/tui-debug-snapshot.js +1 -1
- package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.js +3 -3
- package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.js.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.js +2 -2
- package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.js.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.js +3 -3
- package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.js.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/useAgentRunController.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/useAgentRunController.js +16 -6
- package/dist/src/cli/chat/hooks/controllers/useAgentRunController.js.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/useChatAppController.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/useChatAppController.js +9 -10
- package/dist/src/cli/chat/hooks/controllers/useChatAppController.js.map +1 -1
- package/dist/src/cli/chat/hooks/controllers/usePromptSubmissionController.d.ts +1 -1
- package/dist/src/cli/chat/hooks/useChatPickers.d.ts +1 -1
- package/dist/src/cli/chat/hooks/useChatPickers.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useChatPickers.js +7 -8
- package/dist/src/cli/chat/hooks/useChatPickers.js.map +1 -1
- package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useChatStatusSummary.js +3 -4
- package/dist/src/cli/chat/hooks/useChatStatusSummary.js.map +1 -1
- package/dist/src/cli/chat/state/local-commands.d.ts +1 -1
- package/dist/src/cli/chat/state/local-commands.d.ts.map +1 -1
- package/dist/src/cli/chat/state/local-commands.js +6 -6
- package/dist/src/cli/chat/state/local-commands.js.map +1 -1
- package/dist/src/cli/chat/utils/format.d.ts +0 -1
- package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/format.js +0 -1
- package/dist/src/cli/chat/utils/format.js.map +1 -1
- package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/runtime.js +6 -6
- package/dist/src/cli/chat/utils/runtime.js.map +1 -1
- package/dist/src/cli/main.js +32 -27
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/remote/control-plane-client.d.ts +3 -3
- package/dist/src/core/agent/budget/index.d.ts +2 -0
- package/dist/src/core/agent/budget/index.d.ts.map +1 -0
- package/dist/src/core/agent/budget/index.js +2 -0
- package/dist/src/core/agent/budget/index.js.map +1 -0
- package/dist/src/core/agent/budget/step-budget.d.ts +12 -0
- package/dist/src/core/agent/budget/step-budget.d.ts.map +1 -0
- package/dist/src/core/agent/budget/step-budget.js +21 -0
- package/dist/src/core/agent/budget/step-budget.js.map +1 -0
- package/dist/src/core/agent/context/run-context-builder.js +6 -6
- package/dist/src/core/agent/context/run-context-builder.js.map +1 -1
- package/dist/src/core/agent/tools/tool-dispatcher.d.ts +3 -4
- package/dist/src/core/agent/tools/tool-dispatcher.d.ts.map +1 -1
- package/dist/src/core/agent/tools/tool-dispatcher.js +2 -2
- package/dist/src/core/agent/tools/tool-dispatcher.js.map +1 -1
- package/dist/src/core/agent/types.d.ts +5 -5
- package/dist/src/core/agent/types.d.ts.map +1 -1
- package/dist/src/core/approvals/remembered-rules/schemas.d.ts +3 -3
- package/dist/src/core/auth/index.d.ts +4 -0
- package/dist/src/core/auth/index.d.ts.map +1 -0
- package/dist/src/core/auth/index.js +3 -0
- package/dist/src/core/auth/index.js.map +1 -0
- package/dist/src/core/auth/openai-oauth.d.ts +41 -61
- package/dist/src/core/auth/openai-oauth.d.ts.map +1 -1
- package/dist/src/core/auth/openai-oauth.js +264 -258
- package/dist/src/core/auth/openai-oauth.js.map +1 -1
- package/dist/src/core/auth/provider-credentials.d.ts +23 -51
- package/dist/src/core/auth/provider-credentials.d.ts.map +1 -1
- package/dist/src/core/auth/provider-credentials.js +69 -134
- package/dist/src/core/auth/provider-credentials.js.map +1 -1
- package/dist/src/core/auth/schemas.d.ts +54 -0
- package/dist/src/core/auth/schemas.d.ts.map +1 -0
- package/dist/src/core/auth/schemas.js +63 -0
- package/dist/src/core/auth/schemas.js.map +1 -0
- package/dist/src/core/auth/types.d.ts +80 -0
- package/dist/src/core/auth/types.d.ts.map +1 -0
- package/dist/src/core/auth/types.js +2 -0
- package/dist/src/core/auth/types.js.map +1 -0
- package/dist/src/core/chat/engine/compaction/service.js +2 -2
- package/dist/src/core/chat/engine/compaction/service.js.map +1 -1
- package/dist/src/core/chat/engine/compaction/summarizer/service.d.ts.map +1 -1
- package/dist/src/core/chat/engine/compaction/summarizer/service.js +9 -6
- package/dist/src/core/chat/engine/compaction/summarizer/service.js.map +1 -1
- package/dist/src/core/chat/engine/compaction/transcript-renderer.js +2 -2
- package/dist/src/core/chat/engine/compaction/transcript-renderer.js.map +1 -1
- package/dist/src/core/chat/engine/config.d.ts +2 -2
- package/dist/src/core/chat/engine/config.d.ts.map +1 -1
- package/dist/src/core/chat/engine/sessions/preferences/service.js +3 -3
- package/dist/src/core/chat/engine/sessions/preferences/service.js.map +1 -1
- package/dist/src/core/chat/engine/sessions/records/records.js +3 -3
- package/dist/src/core/chat/engine/sessions/records/records.js.map +1 -1
- package/dist/src/core/chat/engine/sessions/records/types.d.ts +2 -2
- package/dist/src/core/chat/engine/sessions/records/types.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/host/host-normalizer.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/host/host-normalizer.js +4 -4
- package/dist/src/core/chat/engine/turns/host/host-normalizer.js.map +1 -1
- package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js +11 -7
- package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js.map +1 -1
- package/dist/src/core/chat/engine/turns/persistence/types.d.ts +3 -3
- package/dist/src/core/chat/engine/turns/persistence/types.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js +12 -10
- package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js.map +1 -1
- package/dist/src/core/chat/engine/turns/types.d.ts +2 -3
- package/dist/src/core/chat/engine/turns/types.d.ts.map +1 -1
- package/dist/src/core/chat/engine/types.d.ts +4 -5
- package/dist/src/core/chat/engine/types.d.ts.map +1 -1
- package/dist/src/core/commands/slash/autocomplete.d.ts +9 -4
- package/dist/src/core/commands/slash/autocomplete.d.ts.map +1 -1
- package/dist/src/core/commands/slash/autocomplete.js +53 -48
- package/dist/src/core/commands/slash/autocomplete.js.map +1 -1
- package/dist/src/core/commands/slash/modules/auth/auth-commands.js +4 -4
- package/dist/src/core/commands/slash/modules/auth/auth-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/compaction/compaction-commands.js +2 -2
- package/dist/src/core/commands/slash/modules/compaction/compaction-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/drift/drift-commands.js +4 -4
- package/dist/src/core/commands/slash/modules/drift/drift-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.js +3 -3
- package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/model/model-commands.d.ts.map +1 -1
- package/dist/src/core/commands/slash/modules/model/model-commands.js +14 -15
- package/dist/src/core/commands/slash/modules/model/model-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/session/session-commands.js +6 -6
- package/dist/src/core/commands/slash/modules/session/session-commands.js.map +1 -1
- package/dist/src/core/commands/slash/parser.d.ts +10 -5
- package/dist/src/core/commands/slash/parser.d.ts.map +1 -1
- package/dist/src/core/commands/slash/parser.js +42 -37
- package/dist/src/core/commands/slash/parser.js.map +1 -1
- package/dist/src/core/commands/slash/registry.d.ts +12 -3
- package/dist/src/core/commands/slash/registry.d.ts.map +1 -1
- package/dist/src/core/commands/slash/registry.js +50 -45
- package/dist/src/core/commands/slash/registry.js.map +1 -1
- package/dist/src/core/heartbeat/wake/service.d.ts.map +1 -1
- package/dist/src/core/heartbeat/wake/service.js +2 -3
- package/dist/src/core/heartbeat/wake/service.js.map +1 -1
- package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.d.ts +21 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.js +66 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.js.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-codec.d.ts +16 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-codec.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-codec.js +64 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-codec.js.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.d.ts +17 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.js +20 -0
- package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.js.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/index.d.ts +4 -0
- package/dist/src/core/llm/adapters/anthropic/index.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/anthropic/index.js +3 -0
- package/dist/src/core/llm/adapters/anthropic/index.js.map +1 -0
- package/dist/src/core/llm/adapters/openai/index.d.ts +4 -0
- package/dist/src/core/llm/adapters/openai/index.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/openai/index.js +3 -0
- package/dist/src/core/llm/adapters/openai/index.js.map +1 -0
- package/dist/src/core/llm/adapters/openai/openai-adapter.d.ts +53 -0
- package/dist/src/core/llm/adapters/openai/openai-adapter.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/openai/openai-adapter.js +266 -0
- package/dist/src/core/llm/adapters/openai/openai-adapter.js.map +1 -0
- package/dist/src/core/llm/adapters/openai/openai-codec.d.ts +41 -0
- package/dist/src/core/llm/adapters/openai/openai-codec.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/openai/openai-codec.js +169 -0
- package/dist/src/core/llm/adapters/openai/openai-codec.js.map +1 -0
- package/dist/src/core/llm/adapters/openai/openai-provider-adapter.d.ts +17 -0
- package/dist/src/core/llm/adapters/openai/openai-provider-adapter.d.ts.map +1 -0
- package/dist/src/core/llm/adapters/openai/openai-provider-adapter.js +20 -0
- package/dist/src/core/llm/adapters/openai/openai-provider-adapter.js.map +1 -0
- package/dist/src/core/llm/index.d.ts +9 -0
- package/dist/src/core/llm/index.d.ts.map +1 -0
- package/dist/src/core/llm/index.js +5 -0
- package/dist/src/core/llm/index.js.map +1 -0
- package/dist/src/core/llm/models/index.d.ts +5 -0
- package/dist/src/core/llm/models/index.d.ts.map +1 -0
- package/dist/src/core/llm/models/index.js +3 -0
- package/dist/src/core/llm/models/index.js.map +1 -0
- package/dist/src/core/llm/models/model-catalog.d.ts +23 -0
- package/dist/src/core/llm/models/model-catalog.d.ts.map +1 -0
- package/dist/src/core/llm/models/model-catalog.js +132 -0
- package/dist/src/core/llm/models/model-catalog.js.map +1 -0
- package/dist/src/core/llm/models/model-policy-service.d.ts +70 -0
- package/dist/src/core/llm/models/model-policy-service.d.ts.map +1 -0
- package/dist/src/core/llm/models/model-policy-service.js +137 -0
- package/dist/src/core/llm/models/model-policy-service.js.map +1 -0
- package/dist/src/core/llm/registry/builtin-llm-providers.d.ts +5 -0
- package/dist/src/core/llm/registry/builtin-llm-providers.d.ts.map +1 -0
- package/dist/src/core/llm/registry/builtin-llm-providers.js +16 -0
- package/dist/src/core/llm/registry/builtin-llm-providers.js.map +1 -0
- package/dist/src/core/llm/registry/index.d.ts +5 -0
- package/dist/src/core/llm/registry/index.d.ts.map +1 -0
- package/dist/src/core/llm/registry/index.js +4 -0
- package/dist/src/core/llm/registry/index.js.map +1 -0
- package/dist/src/core/llm/registry/llm-provider-registry.d.ts +17 -0
- package/dist/src/core/llm/registry/llm-provider-registry.d.ts.map +1 -0
- package/dist/src/core/llm/registry/llm-provider-registry.js +51 -0
- package/dist/src/core/llm/registry/llm-provider-registry.js.map +1 -0
- package/dist/src/core/llm/registry/provider-inference.d.ts +18 -0
- package/dist/src/core/llm/registry/provider-inference.d.ts.map +1 -0
- package/dist/src/core/llm/registry/provider-inference.js +41 -0
- package/dist/src/core/llm/registry/provider-inference.js.map +1 -0
- package/dist/src/core/llm/registry/types.d.ts +16 -0
- package/dist/src/core/llm/registry/types.d.ts.map +1 -0
- package/dist/src/core/llm/registry/types.js +2 -0
- package/dist/src/core/llm/registry/types.js.map +1 -0
- package/dist/src/core/llm/service.d.ts +15 -0
- package/dist/src/core/llm/service.d.ts.map +1 -0
- package/dist/src/core/llm/service.js +44 -0
- package/dist/src/core/llm/service.js.map +1 -0
- package/dist/src/core/llm/types.d.ts +18 -1
- package/dist/src/core/llm/types.d.ts.map +1 -1
- package/dist/src/core/memory/catalog.d.ts +22 -40
- package/dist/src/core/memory/catalog.d.ts.map +1 -1
- package/dist/src/core/memory/catalog.js +166 -155
- package/dist/src/core/memory/catalog.js.map +1 -1
- package/dist/src/core/memory/index.d.ts +14 -0
- package/dist/src/core/memory/index.d.ts.map +1 -0
- package/dist/src/core/memory/index.js +13 -0
- package/dist/src/core/memory/index.js.map +1 -0
- package/dist/src/core/memory/maintainer-prompt.d.ts +14 -0
- package/dist/src/core/memory/maintainer-prompt.d.ts.map +1 -0
- package/dist/src/core/memory/maintainer-prompt.js +58 -0
- package/dist/src/core/memory/maintainer-prompt.js.map +1 -0
- package/dist/src/core/memory/maintainer.d.ts +20 -44
- package/dist/src/core/memory/maintainer.d.ts.map +1 -1
- package/dist/src/core/memory/maintainer.js +124 -184
- package/dist/src/core/memory/maintainer.js.map +1 -1
- package/dist/src/core/memory/maintenance-integration.d.ts +22 -19
- package/dist/src/core/memory/maintenance-integration.d.ts.map +1 -1
- package/dist/src/core/memory/maintenance-integration.js +158 -163
- package/dist/src/core/memory/maintenance-integration.js.map +1 -1
- package/dist/src/core/memory/maintenance-repository.d.ts +27 -0
- package/dist/src/core/memory/maintenance-repository.d.ts.map +1 -0
- package/dist/src/core/memory/maintenance-repository.js +134 -0
- package/dist/src/core/memory/maintenance-repository.js.map +1 -0
- package/dist/src/core/memory/note-service.d.ts +23 -0
- package/dist/src/core/memory/note-service.d.ts.map +1 -0
- package/dist/src/core/memory/note-service.js +165 -0
- package/dist/src/core/memory/note-service.js.map +1 -0
- package/dist/src/core/memory/path-utils.d.ts +15 -0
- package/dist/src/core/memory/path-utils.d.ts.map +1 -0
- package/dist/src/core/memory/path-utils.js +31 -0
- package/dist/src/core/memory/path-utils.js.map +1 -0
- package/dist/src/core/memory/schemas.d.ts +116 -0
- package/dist/src/core/memory/schemas.d.ts.map +1 -0
- package/dist/src/core/memory/schemas.js +53 -0
- package/dist/src/core/memory/schemas.js.map +1 -0
- package/dist/src/core/memory/types.d.ts +149 -0
- package/dist/src/core/memory/types.d.ts.map +1 -0
- package/dist/src/core/memory/types.js +2 -0
- package/dist/src/core/memory/types.js.map +1 -0
- package/dist/src/core/memory/validation.d.ts +20 -38
- package/dist/src/core/memory/validation.d.ts.map +1 -1
- package/dist/src/core/memory/validation.js +98 -83
- package/dist/src/core/memory/validation.js.map +1 -1
- package/dist/src/core/memory/visibility.d.ts +19 -41
- package/dist/src/core/memory/visibility.d.ts.map +1 -1
- package/dist/src/core/memory/visibility.js +53 -153
- package/dist/src/core/memory/visibility.js.map +1 -1
- package/dist/src/core/observability/activity/conversation-activity-projector.d.ts +24 -0
- package/dist/src/core/observability/activity/conversation-activity-projector.d.ts.map +1 -0
- package/dist/src/core/observability/activity/conversation-activity-projector.js +146 -0
- package/dist/src/core/observability/activity/conversation-activity-projector.js.map +1 -0
- package/dist/src/core/observability/activity/index.d.ts +4 -0
- package/dist/src/core/observability/activity/index.d.ts.map +1 -0
- package/dist/src/core/observability/activity/index.js +3 -0
- package/dist/src/core/observability/activity/index.js.map +1 -0
- package/dist/src/core/observability/activity/tool-activity-summarizer.d.ts +15 -0
- package/dist/src/core/observability/activity/tool-activity-summarizer.d.ts.map +1 -0
- package/dist/src/core/observability/activity/tool-activity-summarizer.js +92 -0
- package/dist/src/core/observability/activity/tool-activity-summarizer.js.map +1 -0
- package/dist/src/core/observability/activity/types.d.ts +87 -0
- package/dist/src/core/observability/activity/types.d.ts.map +1 -0
- package/dist/src/core/observability/activity/types.js +2 -0
- package/dist/src/core/observability/activity/types.js.map +1 -0
- package/dist/src/core/observability/index.d.ts +6 -0
- package/dist/src/core/observability/index.d.ts.map +1 -0
- package/dist/src/core/observability/index.js +4 -0
- package/dist/src/core/observability/index.js.map +1 -0
- package/dist/src/core/observability/semantics/index.d.ts +2 -0
- package/dist/src/core/observability/semantics/index.d.ts.map +1 -0
- package/dist/src/core/observability/semantics/index.js +2 -0
- package/dist/src/core/observability/semantics/index.js.map +1 -0
- package/dist/src/core/observability/{semantic-conventions.d.ts → semantics/trace-semantics.d.ts} +1 -1
- package/dist/src/core/observability/semantics/trace-semantics.d.ts.map +1 -0
- package/dist/src/core/observability/{semantic-conventions.js → semantics/trace-semantics.js} +1 -1
- package/dist/src/core/observability/semantics/trace-semantics.js.map +1 -0
- package/dist/src/core/observability/summaries/default-trace-summarizers.d.ts +3 -0
- package/dist/src/core/observability/summaries/default-trace-summarizers.d.ts.map +1 -0
- package/dist/src/core/observability/summaries/default-trace-summarizers.js +29 -0
- package/dist/src/core/observability/summaries/default-trace-summarizers.js.map +1 -0
- package/dist/src/core/observability/summaries/index.d.ts +4 -0
- package/dist/src/core/observability/summaries/index.d.ts.map +1 -0
- package/dist/src/core/observability/summaries/index.js +3 -0
- package/dist/src/core/observability/summaries/index.js.map +1 -0
- package/dist/src/core/observability/summaries/trace-summary-service.d.ts +17 -0
- package/dist/src/core/observability/summaries/trace-summary-service.d.ts.map +1 -0
- package/dist/src/core/observability/summaries/trace-summary-service.js +32 -0
- package/dist/src/core/observability/summaries/trace-summary-service.js.map +1 -0
- package/dist/src/core/observability/summaries/types.d.ts +15 -0
- package/dist/src/core/observability/summaries/types.d.ts.map +1 -0
- package/dist/src/core/observability/summaries/types.js +2 -0
- package/dist/src/core/observability/summaries/types.js.map +1 -0
- package/dist/src/core/review/index.d.ts +3 -0
- package/dist/src/core/review/index.d.ts.map +1 -0
- package/dist/src/core/review/index.js +2 -0
- package/dist/src/core/review/index.js.map +1 -0
- package/dist/src/core/review/service.d.ts +22 -0
- package/dist/src/core/review/service.d.ts.map +1 -0
- package/dist/src/core/review/service.js +143 -0
- package/dist/src/core/review/service.js.map +1 -0
- package/dist/src/core/review/{diff-domain.d.ts → types.d.ts} +1 -3
- package/dist/src/core/review/types.d.ts.map +1 -0
- package/dist/src/core/review/types.js +2 -0
- package/dist/src/core/review/types.js.map +1 -0
- package/dist/src/core/runtime/credentials/service.d.ts +1 -1
- package/dist/src/core/runtime/credentials/service.d.ts.map +1 -1
- package/dist/src/core/runtime/credentials/service.js +8 -6
- package/dist/src/core/runtime/credentials/service.js.map +1 -1
- package/dist/src/core/runtime/loop/service.d.ts.map +1 -1
- package/dist/src/core/runtime/loop/service.js +14 -6
- package/dist/src/core/runtime/loop/service.js.map +1 -1
- package/dist/src/core/runtime/tools/service.js +2 -2
- package/dist/src/core/runtime/tools/service.js.map +1 -1
- package/dist/src/core/tools/execute-tool.d.ts +5 -4
- package/dist/src/core/tools/execute-tool.d.ts.map +1 -1
- package/dist/src/core/tools/execute-tool.js +23 -25
- package/dist/src/core/tools/execute-tool.js.map +1 -1
- package/dist/src/core/tools/index.d.ts +5 -0
- package/dist/src/core/tools/index.d.ts.map +1 -0
- package/dist/src/core/tools/index.js +4 -0
- package/dist/src/core/tools/index.js.map +1 -0
- package/dist/src/core/tools/registry.d.ts +8 -7
- package/dist/src/core/tools/registry.d.ts.map +1 -1
- package/dist/src/core/tools/registry.js +18 -21
- package/dist/src/core/tools/registry.js.map +1 -1
- package/dist/src/core/tools/toolkit.d.ts +9 -4
- package/dist/src/core/tools/toolkit.d.ts.map +1 -1
- package/dist/src/core/tools/toolkit.js +21 -16
- package/dist/src/core/tools/toolkit.js.map +1 -1
- package/dist/src/core/tools/toolkits/external-context/view-image.d.ts.map +1 -1
- package/dist/src/core/tools/toolkits/external-context/view-image.js +15 -9
- package/dist/src/core/tools/toolkits/external-context/view-image.js.map +1 -1
- package/dist/src/core/tools/toolkits/external-context/web-search.d.ts.map +1 -1
- package/dist/src/core/tools/toolkits/external-context/web-search.js +15 -9
- package/dist/src/core/tools/toolkits/external-context/web-search.js.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.d.ts +1 -1
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.d.ts.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.js +48 -238
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.js.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/record-knowledge.d.ts.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/record-knowledge.js +75 -105
- package/dist/src/core/tools/toolkits/knowledge/record-knowledge.js.map +1 -1
- package/dist/src/core/trace/format.d.ts +9 -3
- package/dist/src/core/trace/format.d.ts.map +1 -1
- package/dist/src/core/trace/format.js +106 -107
- package/dist/src/core/trace/format.js.map +1 -1
- package/dist/src/core/trace/index.d.ts +4 -0
- package/dist/src/core/trace/index.d.ts.map +1 -0
- package/dist/src/core/trace/index.js +3 -0
- package/dist/src/core/trace/index.js.map +1 -0
- package/dist/src/core/trace/recorder.d.ts +10 -7
- package/dist/src/core/trace/recorder.d.ts.map +1 -1
- package/dist/src/core/trace/recorder.js +15 -17
- package/dist/src/core/trace/recorder.js.map +1 -1
- package/dist/src/core/trace/types.d.ts +7 -0
- package/dist/src/core/trace/types.d.ts.map +1 -0
- package/dist/src/core/trace/types.js +2 -0
- package/dist/src/core/trace/types.js.map +1 -0
- package/dist/src/index.d.ts +23 -28
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -15
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/ask.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/controllers/ask.js +10 -8
- package/dist/src/server/features/control-plane/controllers/ask.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.js +5 -5
- package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/chat-turn-review-presenter.js +3 -3
- package/dist/src/server/features/control-plane/controllers/chat-turn-review-presenter.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/memory.d.ts +2 -1
- package/dist/src/server/features/control-plane/controllers/memory.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/controllers/memory.js +8 -7
- package/dist/src/server/features/control-plane/controllers/memory.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/workspace-diff.js +2 -2
- package/dist/src/server/features/control-plane/controllers/workspace-diff.js.map +1 -1
- package/dist/src/server/features/control-plane/router.d.ts +3 -3
- package/dist/src/server/features/control-plane/router.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/router.js +5 -6
- package/dist/src/server/features/control-plane/router.js.map +1 -1
- package/dist/src/server/features/control-plane/types.d.ts +2 -2
- package/dist/src/server/features/control-plane/types.d.ts.map +1 -1
- package/dist/src/server/router.d.ts +3 -3
- package/dist/src/web/assets/{MonacoDiffViewer-F3AOHIps.js → MonacoDiffViewer-D_Fh9ndN.js} +1 -1
- package/dist/src/web/assets/index-B1wQ0pS4.js +87 -0
- package/dist/src/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/src/core/llm/anthropic.d.ts +0 -7
- package/dist/src/core/llm/anthropic.d.ts.map +0 -1
- package/dist/src/core/llm/anthropic.js +0 -115
- package/dist/src/core/llm/anthropic.js.map +0 -1
- package/dist/src/core/llm/factory.d.ts +0 -14
- package/dist/src/core/llm/factory.d.ts.map +0 -1
- package/dist/src/core/llm/factory.js +0 -46
- package/dist/src/core/llm/factory.js.map +0 -1
- package/dist/src/core/llm/model-policy.d.ts +0 -63
- package/dist/src/core/llm/model-policy.d.ts.map +0 -1
- package/dist/src/core/llm/model-policy.js +0 -131
- package/dist/src/core/llm/model-policy.js.map +0 -1
- package/dist/src/core/llm/openai-models.d.ts +0 -17
- package/dist/src/core/llm/openai-models.d.ts.map +0 -1
- package/dist/src/core/llm/openai-models.js +0 -127
- package/dist/src/core/llm/openai-models.js.map +0 -1
- package/dist/src/core/llm/openai.d.ts +0 -31
- package/dist/src/core/llm/openai.d.ts.map +0 -1
- package/dist/src/core/llm/openai.js +0 -405
- package/dist/src/core/llm/openai.js.map +0 -1
- package/dist/src/core/llm/providers.d.ts +0 -3
- package/dist/src/core/llm/providers.d.ts.map +0 -1
- package/dist/src/core/llm/providers.js +0 -21
- package/dist/src/core/llm/providers.js.map +0 -1
- package/dist/src/core/observability/conversation-activity.d.ts +0 -116
- package/dist/src/core/observability/conversation-activity.d.ts.map +0 -1
- package/dist/src/core/observability/conversation-activity.js +0 -255
- package/dist/src/core/observability/conversation-activity.js.map +0 -1
- package/dist/src/core/observability/semantic-conventions.d.ts.map +0 -1
- package/dist/src/core/observability/semantic-conventions.js.map +0 -1
- package/dist/src/core/observability/trace-summarizers.d.ts +0 -23
- package/dist/src/core/observability/trace-summarizers.d.ts.map +0 -1
- package/dist/src/core/observability/trace-summarizers.js +0 -60
- package/dist/src/core/observability/trace-summarizers.js.map +0 -1
- package/dist/src/core/review/diff-domain.d.ts.map +0 -1
- package/dist/src/core/review/diff-domain.js +0 -134
- package/dist/src/core/review/diff-domain.js.map +0 -1
- package/dist/src/core/utils/budget.d.ts +0 -13
- package/dist/src/core/utils/budget.d.ts.map +0 -1
- package/dist/src/core/utils/budget.js +0 -22
- package/dist/src/core/utils/budget.js.map +0 -1
- package/dist/src/web/assets/index-D6aK1OFb.js +0 -81
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { spawn } from 'node:child_process';
|
|
4
|
-
import { executeScopedEdit } from '../coding-files/file-edit-core.js';
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { MemoryNoteService } from '../../../../core/memory/note-service.js';
|
|
5
3
|
const DEFAULT_MEMORY_ROOT = resolve(process.cwd(), '.heddle', 'memory');
|
|
6
|
-
const DEFAULT_MAX_SEARCH_RESULTS = 100;
|
|
7
4
|
export function createListMemoryNotesTool(options = {}) {
|
|
8
5
|
return {
|
|
9
6
|
name: 'list_memory_notes',
|
|
@@ -19,37 +16,17 @@ export function createListMemoryNotesTool(options = {}) {
|
|
|
19
16
|
},
|
|
20
17
|
},
|
|
21
18
|
async execute(raw) {
|
|
22
|
-
if (!
|
|
19
|
+
if (!MemoryNotesToolInput.isList(raw)) {
|
|
23
20
|
return { ok: false, error: 'Invalid input for list_memory_notes. Optional field: path.' };
|
|
24
21
|
}
|
|
25
|
-
const memoryRoot = resolveMemoryRoot(options);
|
|
26
|
-
const targetPath = resolveMemoryPath(memoryRoot, raw.path ?? '.');
|
|
27
|
-
if (!targetPath.ok) {
|
|
28
|
-
return { ok: false, error: targetPath.error };
|
|
29
|
-
}
|
|
30
|
-
const exists = await pathExists(targetPath.path);
|
|
31
|
-
if (!exists) {
|
|
32
|
-
return { ok: true, output: '' };
|
|
33
|
-
}
|
|
34
22
|
try {
|
|
35
|
-
const info = await stat(targetPath.path);
|
|
36
|
-
if (info.isFile()) {
|
|
37
|
-
return {
|
|
38
|
-
ok: true,
|
|
39
|
-
output: toMemoryRelativePath(memoryRoot, targetPath.path),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const entries = await listMarkdownNotes(targetPath.path);
|
|
43
23
|
return {
|
|
44
24
|
ok: true,
|
|
45
|
-
output:
|
|
25
|
+
output: (await memoryNotes(options).list(raw)).join('\n'),
|
|
46
26
|
};
|
|
47
27
|
}
|
|
48
28
|
catch (error) {
|
|
49
|
-
return {
|
|
50
|
-
ok: false,
|
|
51
|
-
error: `Failed to list memory notes in ${targetPath.path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
52
|
-
};
|
|
29
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
53
30
|
}
|
|
54
31
|
},
|
|
55
32
|
};
|
|
@@ -78,32 +55,17 @@ export function createReadMemoryNoteTool(options = {}) {
|
|
|
78
55
|
required: ['path'],
|
|
79
56
|
},
|
|
80
57
|
async execute(raw) {
|
|
81
|
-
if (!
|
|
58
|
+
if (!MemoryNotesToolInput.isRead(raw)) {
|
|
82
59
|
return { ok: false, error: 'Invalid input for read_memory_note. Required field: path. Optional fields: maxLines, offset.' };
|
|
83
60
|
}
|
|
84
|
-
const memoryRoot = resolveMemoryRoot(options);
|
|
85
|
-
const targetPath = resolveMemoryPath(memoryRoot, raw.path);
|
|
86
|
-
if (!targetPath.ok) {
|
|
87
|
-
return { ok: false, error: targetPath.error };
|
|
88
|
-
}
|
|
89
61
|
try {
|
|
90
|
-
const content = await readFile(targetPath.path, 'utf8');
|
|
91
62
|
return {
|
|
92
63
|
ok: true,
|
|
93
|
-
output:
|
|
64
|
+
output: await memoryNotes(options).read(raw),
|
|
94
65
|
};
|
|
95
66
|
}
|
|
96
67
|
catch (error) {
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
ok: false,
|
|
100
|
-
error: `Failed to read ${targetPath.path}: path is a directory, not a file. Use list_memory_notes to inspect memory directories.`,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
return {
|
|
104
|
-
ok: false,
|
|
105
|
-
error: `Failed to read ${targetPath.path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
106
|
-
};
|
|
68
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
107
69
|
}
|
|
108
70
|
},
|
|
109
71
|
};
|
|
@@ -132,20 +94,18 @@ export function createSearchMemoryNotesTool(options = {}) {
|
|
|
132
94
|
required: ['query'],
|
|
133
95
|
},
|
|
134
96
|
async execute(raw) {
|
|
135
|
-
if (!
|
|
97
|
+
if (!MemoryNotesToolInput.isSearch(raw)) {
|
|
136
98
|
return { ok: false, error: 'Invalid input for search_memory_notes. Required field: query. Optional fields: path, maxResults.' };
|
|
137
99
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
100
|
+
try {
|
|
101
|
+
return {
|
|
102
|
+
ok: true,
|
|
103
|
+
output: await memoryNotes(options).search(raw),
|
|
104
|
+
};
|
|
142
105
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return { ok: true, output: 'No matches found.' };
|
|
106
|
+
catch (error) {
|
|
107
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
146
108
|
}
|
|
147
|
-
const searchResult = await searchWithCli(memoryRoot, targetPath.path, raw.query, sanitizeMaxResults(raw.maxResults));
|
|
148
|
-
return searchResult;
|
|
149
109
|
},
|
|
150
110
|
};
|
|
151
111
|
}
|
|
@@ -185,14 +145,7 @@ export function createEditMemoryNoteTool(options = {}) {
|
|
|
185
145
|
required: ['path'],
|
|
186
146
|
},
|
|
187
147
|
async execute(raw) {
|
|
188
|
-
return
|
|
189
|
-
toolName: 'edit_memory_note',
|
|
190
|
-
rootPath: resolveMemoryRoot(options),
|
|
191
|
-
rootLabel: 'memory root',
|
|
192
|
-
subjectLabel: 'memory note',
|
|
193
|
-
creationHint: 'Set createIfMissing to true if you want edit_memory_note to create it.',
|
|
194
|
-
enforceRoot: true,
|
|
195
|
-
});
|
|
148
|
+
return await memoryNotes(options).edit(raw);
|
|
196
149
|
},
|
|
197
150
|
};
|
|
198
151
|
}
|
|
@@ -200,184 +153,41 @@ export const listMemoryNotesTool = createListMemoryNotesTool();
|
|
|
200
153
|
export const readMemoryNoteTool = createReadMemoryNoteTool();
|
|
201
154
|
export const searchMemoryNotesTool = createSearchMemoryNotesTool();
|
|
202
155
|
export const editMemoryNoteTool = createEditMemoryNoteTool();
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (!requestedPath.trim()) {
|
|
208
|
-
return { ok: false, error: `Memory note paths must be non-empty and stay inside ${memoryRoot}.` };
|
|
209
|
-
}
|
|
210
|
-
const targetPath = resolve(memoryRoot, requestedPath);
|
|
211
|
-
const rel = relative(memoryRoot, targetPath);
|
|
212
|
-
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
213
|
-
return { ok: false, error: `Memory note paths must stay inside ${memoryRoot}. Refusing to access ${targetPath}.` };
|
|
214
|
-
}
|
|
215
|
-
return { ok: true, path: targetPath };
|
|
216
|
-
}
|
|
217
|
-
async function listMarkdownNotes(root) {
|
|
218
|
-
const results = [];
|
|
219
|
-
const entries = await readdir(root, { withFileTypes: true });
|
|
220
|
-
for (const entry of entries) {
|
|
221
|
-
const nextPath = resolve(root, entry.name);
|
|
222
|
-
if (entry.isDirectory()) {
|
|
223
|
-
results.push(...await listMarkdownNotes(nextPath));
|
|
224
|
-
continue;
|
|
156
|
+
class MemoryNotesToolInput {
|
|
157
|
+
static isList(raw) {
|
|
158
|
+
if (raw === undefined) {
|
|
159
|
+
return true;
|
|
225
160
|
}
|
|
226
|
-
if (
|
|
227
|
-
|
|
161
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
162
|
+
return false;
|
|
228
163
|
}
|
|
164
|
+
const input = raw;
|
|
165
|
+
return Object.keys(input).every((key) => key === 'path')
|
|
166
|
+
&& (input.path === undefined || typeof input.path === 'string');
|
|
229
167
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
function isMarkdownPath(path) {
|
|
252
|
-
return /\.md$/i.test(path);
|
|
253
|
-
}
|
|
254
|
-
async function pathExists(path) {
|
|
255
|
-
try {
|
|
256
|
-
await access(path);
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
|
-
catch {
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
function isListMemoryNotesInput(raw) {
|
|
264
|
-
if (raw === undefined) {
|
|
265
|
-
return true;
|
|
266
|
-
}
|
|
267
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
268
|
-
return false;
|
|
269
|
-
}
|
|
270
|
-
const input = raw;
|
|
271
|
-
const keys = Object.keys(input);
|
|
272
|
-
if (keys.some((key) => key !== 'path')) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
return input.path === undefined || typeof input.path === 'string';
|
|
276
|
-
}
|
|
277
|
-
function isReadMemoryNoteInput(raw) {
|
|
278
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
279
|
-
return false;
|
|
280
|
-
}
|
|
281
|
-
const input = raw;
|
|
282
|
-
const keys = Object.keys(input);
|
|
283
|
-
if (keys.some((key) => key !== 'path' && key !== 'maxLines' && key !== 'offset')) {
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
return (typeof input.path === 'string' &&
|
|
287
|
-
(input.maxLines === undefined || typeof input.maxLines === 'number') &&
|
|
288
|
-
(input.offset === undefined || typeof input.offset === 'number'));
|
|
289
|
-
}
|
|
290
|
-
function isSearchMemoryNotesInput(raw) {
|
|
291
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
292
|
-
return false;
|
|
293
|
-
}
|
|
294
|
-
const input = raw;
|
|
295
|
-
const keys = Object.keys(input);
|
|
296
|
-
if (keys.some((key) => key !== 'query' && key !== 'path' && key !== 'maxResults')) {
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
return (typeof input.query === 'string' &&
|
|
300
|
-
input.query.trim().length > 0 &&
|
|
301
|
-
(input.path === undefined || typeof input.path === 'string') &&
|
|
302
|
-
(input.maxResults === undefined || typeof input.maxResults === 'number'));
|
|
303
|
-
}
|
|
304
|
-
function isErrorWithCode(error, code) {
|
|
305
|
-
return error instanceof Error && 'code' in error && error.code === code;
|
|
306
|
-
}
|
|
307
|
-
async function searchWithCli(memoryRoot, targetPath, query, maxResults) {
|
|
308
|
-
const relativeTarget = toMemoryRelativePath(memoryRoot, targetPath);
|
|
309
|
-
const normalizedTarget = relativeTarget === '.' ? '.' : relativeTarget;
|
|
310
|
-
const rgResult = await runSearchCommand('rg', ['-n', '--no-heading', '--glob', '*.md', query, normalizedTarget], memoryRoot);
|
|
311
|
-
if (rgResult.kind === 'ok') {
|
|
312
|
-
return {
|
|
313
|
-
ok: true,
|
|
314
|
-
output: trimSearchOutput(rgResult.stdout, maxResults),
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
if (rgResult.kind === 'nonzero_no_match') {
|
|
318
|
-
return { ok: true, output: 'No matches found.' };
|
|
319
|
-
}
|
|
320
|
-
if (rgResult.kind !== 'missing_binary') {
|
|
321
|
-
return {
|
|
322
|
-
ok: false,
|
|
323
|
-
error: `Failed to search memory notes in ${targetPath}: ${rgResult.error}`,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
const grepResult = await runSearchCommand('grep', ['-R', '-n', '--include=*.md', query, normalizedTarget], memoryRoot);
|
|
327
|
-
if (grepResult.kind === 'ok') {
|
|
328
|
-
return {
|
|
329
|
-
ok: true,
|
|
330
|
-
output: trimSearchOutput(grepResult.stdout, maxResults),
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
if (grepResult.kind === 'nonzero_no_match') {
|
|
334
|
-
return { ok: true, output: 'No matches found.' };
|
|
168
|
+
static isRead(raw) {
|
|
169
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
const input = raw;
|
|
173
|
+
return Object.keys(input).every((key) => key === 'path' || key === 'maxLines' || key === 'offset')
|
|
174
|
+
&& typeof input.path === 'string'
|
|
175
|
+
&& (input.maxLines === undefined || typeof input.maxLines === 'number')
|
|
176
|
+
&& (input.offset === undefined || typeof input.offset === 'number');
|
|
177
|
+
}
|
|
178
|
+
static isSearch(raw) {
|
|
179
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
const input = raw;
|
|
183
|
+
return Object.keys(input).every((key) => key === 'query' || key === 'path' || key === 'maxResults')
|
|
184
|
+
&& typeof input.query === 'string'
|
|
185
|
+
&& input.query.trim().length > 0
|
|
186
|
+
&& (input.path === undefined || typeof input.path === 'string')
|
|
187
|
+
&& (input.maxResults === undefined || typeof input.maxResults === 'number');
|
|
335
188
|
}
|
|
336
|
-
return {
|
|
337
|
-
ok: false,
|
|
338
|
-
error: `Failed to search memory notes in ${targetPath}: ${grepResult.error}`,
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
function trimSearchOutput(stdout, maxResults) {
|
|
342
|
-
const lines = stdout
|
|
343
|
-
.split('\n')
|
|
344
|
-
.map((line) => line.trimEnd().replace(/^\.\//, ''))
|
|
345
|
-
.filter((line) => line.length > 0)
|
|
346
|
-
.slice(0, maxResults);
|
|
347
|
-
return lines.length > 0 ? lines.join('\n') : 'No matches found.';
|
|
348
189
|
}
|
|
349
|
-
|
|
350
|
-
return new
|
|
351
|
-
const child = spawn(binary, args, {
|
|
352
|
-
cwd,
|
|
353
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
354
|
-
});
|
|
355
|
-
let stdout = '';
|
|
356
|
-
let stderr = '';
|
|
357
|
-
child.stdout.on('data', (chunk) => {
|
|
358
|
-
stdout += chunk.toString();
|
|
359
|
-
});
|
|
360
|
-
child.stderr.on('data', (chunk) => {
|
|
361
|
-
stderr += chunk.toString();
|
|
362
|
-
});
|
|
363
|
-
child.on('error', (error) => {
|
|
364
|
-
if ('code' in error && error.code === 'ENOENT') {
|
|
365
|
-
resolvePromise({ kind: 'missing_binary', error: `${binary} is not available in the environment.` });
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
resolvePromise({ kind: 'error', error: error.message });
|
|
369
|
-
});
|
|
370
|
-
child.on('close', (code) => {
|
|
371
|
-
if (code === 0) {
|
|
372
|
-
resolvePromise({ kind: 'ok', stdout });
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
375
|
-
if (code === 1) {
|
|
376
|
-
resolvePromise({ kind: 'nonzero_no_match', error: stderr.trim() || `${binary} returned exit code 1` });
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
resolvePromise({ kind: 'error', error: stderr.trim() || `${binary} returned exit code ${code ?? 'unknown'}` });
|
|
380
|
-
});
|
|
381
|
-
});
|
|
190
|
+
function memoryNotes(options) {
|
|
191
|
+
return new MemoryNoteService(resolve(options.memoryRoot ?? DEFAULT_MEMORY_ROOT));
|
|
382
192
|
}
|
|
383
193
|
//# sourceMappingURL=memory-notes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-notes.js","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/memory-notes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-notes.js","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/memory-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAQlE,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAExE,MAAM,UAAU,yBAAyB,CAAC,UAAkC,EAAE;IAC5E,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,mcAAmc;QACrc,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;SACF;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAC;YAC5F,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC1D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkC,EAAE;IAC3E,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,+jBAA+jB;QACjkB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;iBACjD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;iBACjD;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8FAA8F,EAAE,CAAC;YAC9H,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC7C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAkC,EAAE;IAC9E,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,ugBAAugB;QACzgB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qEAAqE;iBACnF;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBAC1D;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kGAAkG,EAAE,CAAC;YAClI,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkC,EAAE;IAC3E,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,gkBAAgkB;QAClkB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6EAA6E;iBAC3F;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,yEAAyE;iBACvF;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;AAE7D,MAAM,oBAAoB;IACxB,MAAM,CAAC,MAAM,CAAC,GAAY;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC;eACnD,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAY;QACxB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,QAAQ,CAAC;eAC7F,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;eAC9B,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;eACpE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAY;QAC1B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,CAAC;eAC9F,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;eAC/B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;eAC7B,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;eAC5D,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;IAChF,CAAC;CACF;AAED,SAAS,WAAW,CAAC,OAA+B;IAClD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-knowledge.d.ts","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/record-knowledge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record-knowledge.d.ts","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/record-knowledge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAEpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC;AAmBF,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAoElG;AAED,eAAO,MAAM,mBAAmB,gBAA8B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { MemoryMaintenanceRepository } from '../../../../core/memory/maintenance-repository.js';
|
|
3
|
+
import { MemoryMaintenanceService } from '../../../../core/memory/maintainer.js';
|
|
3
4
|
const DEFAULT_MEMORY_ROOT = resolve(process.cwd(), '.heddle', 'memory');
|
|
4
5
|
const MAX_SUMMARY_LENGTH = 2000;
|
|
5
6
|
const MAX_EVIDENCE_ITEMS = 8;
|
|
@@ -45,12 +46,11 @@ export function createRecordKnowledgeTool(options = {}) {
|
|
|
45
46
|
required: ['summary'],
|
|
46
47
|
},
|
|
47
48
|
async execute(raw) {
|
|
48
|
-
const
|
|
49
|
+
const memoryRoot = resolveMemoryRoot(options);
|
|
50
|
+
const parsed = RecordKnowledgeToolInput.validate(raw, memoryRoot);
|
|
49
51
|
if (!parsed.ok) {
|
|
50
52
|
return { ok: false, error: parsed.error };
|
|
51
53
|
}
|
|
52
|
-
const memoryRoot = resolveMemoryRoot(options);
|
|
53
|
-
const candidatePath = resolve(memoryRoot, '_maintenance', 'candidates.jsonl');
|
|
54
54
|
const now = options.now?.() ?? new Date();
|
|
55
55
|
const record = {
|
|
56
56
|
id: options.nextId?.() ?? `candidate-${now.getTime()}`,
|
|
@@ -58,8 +58,7 @@ export function createRecordKnowledgeTool(options = {}) {
|
|
|
58
58
|
status: 'pending',
|
|
59
59
|
...parsed.input,
|
|
60
60
|
};
|
|
61
|
-
await
|
|
62
|
-
await appendFile(candidatePath, `${JSON.stringify(record)}\n`, 'utf8');
|
|
61
|
+
await new MemoryMaintenanceRepository(memoryRoot).appendCandidate(record);
|
|
63
62
|
return {
|
|
64
63
|
ok: true,
|
|
65
64
|
output: {
|
|
@@ -73,109 +72,80 @@ export function createRecordKnowledgeTool(options = {}) {
|
|
|
73
72
|
};
|
|
74
73
|
}
|
|
75
74
|
export const recordKnowledgeTool = createRecordKnowledgeTool();
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
function validateOptionalStringArray(raw, field, maxItems) {
|
|
136
|
-
if (raw === undefined) {
|
|
137
|
-
return { ok: true, values: [] };
|
|
138
|
-
}
|
|
139
|
-
if (!Array.isArray(raw) || raw.length > maxItems || raw.some((value) => typeof value !== 'string' || !value.trim() || value.length > MAX_TEXT_FIELD_LENGTH)) {
|
|
140
|
-
return { ok: false, error: `Invalid input for record_knowledge. Optional field ${field} must be an array of up to ${maxItems} non-empty strings, each up to ${MAX_TEXT_FIELD_LENGTH} characters.` };
|
|
141
|
-
}
|
|
142
|
-
return { ok: true, values: raw.map((value) => value.trim()) };
|
|
143
|
-
}
|
|
144
|
-
function containsSecretLikeText(value) {
|
|
145
|
-
const normalized = value.toLowerCase();
|
|
146
|
-
return /\b(api[_ -]?key|password|passwd|private[_ -]?key|access[_ -]?token|refresh[_ -]?token|bearer\s+[a-z0-9._~+/=-]{12,})\b/i.test(value)
|
|
147
|
-
|| /\bsecret\s*[:=]\s*\S{8,}/i.test(value)
|
|
148
|
-
|| /\bsk-[a-z0-9_-]{12,}\b/i.test(value)
|
|
149
|
-
|| normalized.includes('-----begin private key-----')
|
|
150
|
-
|| normalized.includes('-----begin rsa private key-----')
|
|
151
|
-
|| normalized.includes('-----begin openSSH private key-----'.toLowerCase());
|
|
152
|
-
}
|
|
153
|
-
function isSafeSourceRef(value, memoryRoot) {
|
|
154
|
-
if (value.includes('\0')) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
if (value.startsWith('trace-') || value.startsWith('session-') || value.startsWith('command:')) {
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
if (/^[a-z][a-z0-9+.-]*:/i.test(value)) {
|
|
161
|
-
return false;
|
|
75
|
+
class RecordKnowledgeToolInput {
|
|
76
|
+
static validate(raw, memoryRoot) {
|
|
77
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
78
|
+
return { ok: false, error: RecordKnowledgeToolInput.invalidInputMessage() };
|
|
79
|
+
}
|
|
80
|
+
const input = raw;
|
|
81
|
+
const allowedKeys = new Set(['summary', 'evidence', 'categoryHint', 'importance', 'confidence', 'sourceRefs']);
|
|
82
|
+
if (Object.keys(input).some((key) => !allowedKeys.has(key))) {
|
|
83
|
+
return { ok: false, error: RecordKnowledgeToolInput.invalidInputMessage() };
|
|
84
|
+
}
|
|
85
|
+
if (typeof input.summary !== 'string' || !input.summary.trim() || input.summary.length > MAX_SUMMARY_LENGTH) {
|
|
86
|
+
return { ok: false, error: `Invalid input for record_knowledge. Required field summary must be a non-empty string up to ${MAX_SUMMARY_LENGTH} characters.` };
|
|
87
|
+
}
|
|
88
|
+
const summary = input.summary.trim();
|
|
89
|
+
if (!MemoryMaintenanceService.isRecordableCandidateText(summary)) {
|
|
90
|
+
return { ok: false, error: 'record_knowledge refused secret-like content in summary. Do not store credentials, tokens, private keys, or passwords in memory.' };
|
|
91
|
+
}
|
|
92
|
+
const evidence = RecordKnowledgeToolInput.validateOptionalStringArray(input.evidence, 'evidence', MAX_EVIDENCE_ITEMS);
|
|
93
|
+
if (!evidence.ok) {
|
|
94
|
+
return { ok: false, error: evidence.error };
|
|
95
|
+
}
|
|
96
|
+
if (evidence.values.some((value) => !MemoryMaintenanceService.isRecordableCandidateText(value))) {
|
|
97
|
+
return { ok: false, error: 'record_knowledge refused secret-like content in evidence. Do not store credentials, tokens, private keys, or passwords in memory.' };
|
|
98
|
+
}
|
|
99
|
+
const sourceRefs = RecordKnowledgeToolInput.validateOptionalStringArray(input.sourceRefs, 'sourceRefs', MAX_SOURCE_REFS);
|
|
100
|
+
if (!sourceRefs.ok) {
|
|
101
|
+
return { ok: false, error: sourceRefs.error };
|
|
102
|
+
}
|
|
103
|
+
const invalidSourceRef = sourceRefs.values.find((sourceRef) => !MemoryMaintenanceService.isSafeSourceRef(sourceRef, memoryRoot));
|
|
104
|
+
if (invalidSourceRef) {
|
|
105
|
+
return { ok: false, error: `record_knowledge sourceRefs must be workspace-relative paths or non-path references. Refusing unsafe sourceRef: ${invalidSourceRef}` };
|
|
106
|
+
}
|
|
107
|
+
if (sourceRefs.values.some((value) => !MemoryMaintenanceService.isRecordableCandidateText(value))) {
|
|
108
|
+
return { ok: false, error: 'record_knowledge refused secret-like content in sourceRefs. Do not store credentials, tokens, private keys, or passwords in memory.' };
|
|
109
|
+
}
|
|
110
|
+
if (input.categoryHint !== undefined && (typeof input.categoryHint !== 'string' || !input.categoryHint.trim() || input.categoryHint.length > 80)) {
|
|
111
|
+
return { ok: false, error: 'Invalid input for record_knowledge. Optional field categoryHint must be a non-empty string up to 80 characters.' };
|
|
112
|
+
}
|
|
113
|
+
if (input.importance !== undefined && input.importance !== 'low' && input.importance !== 'medium' && input.importance !== 'high') {
|
|
114
|
+
return { ok: false, error: 'Invalid input for record_knowledge. Optional field importance must be one of: low, medium, high.' };
|
|
115
|
+
}
|
|
116
|
+
if (input.confidence !== undefined
|
|
117
|
+
&& input.confidence !== 'user-stated'
|
|
118
|
+
&& input.confidence !== 'tool-verified'
|
|
119
|
+
&& input.confidence !== 'inferred'
|
|
120
|
+
&& input.confidence !== 'historical') {
|
|
121
|
+
return { ok: false, error: 'Invalid input for record_knowledge. Optional field confidence must be one of: user-stated, tool-verified, inferred, historical.' };
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
ok: true,
|
|
125
|
+
input: {
|
|
126
|
+
summary,
|
|
127
|
+
evidence: evidence.values.length > 0 ? evidence.values : undefined,
|
|
128
|
+
categoryHint: typeof input.categoryHint === 'string' ? input.categoryHint.trim() : undefined,
|
|
129
|
+
importance: input.importance,
|
|
130
|
+
confidence: input.confidence,
|
|
131
|
+
sourceRefs: sourceRefs.values.length > 0 ? sourceRefs.values : undefined,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
162
134
|
}
|
|
163
|
-
|
|
164
|
-
|
|
135
|
+
static validateOptionalStringArray(raw, field, maxItems) {
|
|
136
|
+
if (raw === undefined) {
|
|
137
|
+
return { ok: true, values: [] };
|
|
138
|
+
}
|
|
139
|
+
if (!Array.isArray(raw) || raw.length > maxItems || raw.some((value) => typeof value !== 'string' || !value.trim() || value.length > MAX_TEXT_FIELD_LENGTH)) {
|
|
140
|
+
return { ok: false, error: `Invalid input for record_knowledge. Optional field ${field} must be an array of up to ${maxItems} non-empty strings, each up to ${MAX_TEXT_FIELD_LENGTH} characters.` };
|
|
141
|
+
}
|
|
142
|
+
return { ok: true, values: raw.map((value) => value.trim()) };
|
|
165
143
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return false;
|
|
144
|
+
static invalidInputMessage() {
|
|
145
|
+
return 'Invalid input for record_knowledge. Required field: summary. Optional fields: evidence, categoryHint, importance, confidence, sourceRefs.';
|
|
169
146
|
}
|
|
170
|
-
const workspaceRoot = resolve(memoryRoot, '..', '..');
|
|
171
|
-
const resolved = resolve(workspaceRoot, value);
|
|
172
|
-
const rel = relative(workspaceRoot, resolved);
|
|
173
|
-
return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
|
|
174
147
|
}
|
|
175
148
|
function resolveMemoryRoot(options) {
|
|
176
149
|
return resolve(options.memoryRoot ?? DEFAULT_MEMORY_ROOT);
|
|
177
150
|
}
|
|
178
|
-
function invalidInputMessage() {
|
|
179
|
-
return 'Invalid input for record_knowledge. Required field: summary. Optional fields: evidence, categoryHint, importance, confidence, sourceRefs.';
|
|
180
|
-
}
|
|
181
151
|
//# sourceMappingURL=record-knowledge.js.map
|