opentasks 0.0.5 → 0.0.7
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 +108 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +217 -8
- package/dist/cli.js.map +1 -1
- package/dist/client/client.d.ts +47 -1
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +71 -0
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/config/schema.d.ts +232 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +161 -7
- package/dist/config/schema.js.map +1 -1
- package/dist/context-files/context-files.d.ts +72 -0
- package/dist/context-files/context-files.d.ts.map +1 -0
- package/dist/context-files/context-files.js +145 -0
- package/dist/context-files/context-files.js.map +1 -0
- package/dist/context-files/index.d.ts +16 -0
- package/dist/context-files/index.d.ts.map +1 -0
- package/dist/context-files/index.js +14 -0
- package/dist/context-files/index.js.map +1 -0
- package/dist/context-files/resolver.d.ts +43 -0
- package/dist/context-files/resolver.d.ts.map +1 -0
- package/dist/context-files/resolver.js +127 -0
- package/dist/context-files/resolver.js.map +1 -0
- package/dist/context-files/types.d.ts +94 -0
- package/dist/context-files/types.d.ts.map +1 -0
- package/dist/context-files/types.js +10 -0
- package/dist/context-files/types.js.map +1 -0
- package/dist/context-files/watcher-integration.d.ts +47 -0
- package/dist/context-files/watcher-integration.d.ts.map +1 -0
- package/dist/context-files/watcher-integration.js +47 -0
- package/dist/context-files/watcher-integration.js.map +1 -0
- package/dist/core/merge-driver.d.ts +11 -2
- package/dist/core/merge-driver.d.ts.map +1 -1
- package/dist/core/merge-driver.js +46 -7
- package/dist/core/merge-driver.js.map +1 -1
- package/dist/core/worktree.js +1 -1
- package/dist/core/worktree.js.map +1 -1
- package/dist/daemon/index.d.ts +6 -4
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +3 -2
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/ipc.d.ts.map +1 -1
- package/dist/daemon/ipc.js +12 -2
- package/dist/daemon/ipc.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +143 -25
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/location-state.d.ts +12 -6
- package/dist/daemon/location-state.d.ts.map +1 -1
- package/dist/daemon/location-state.js +50 -20
- package/dist/daemon/location-state.js.map +1 -1
- package/dist/daemon/methods/context-files.d.ts +14 -0
- package/dist/daemon/methods/context-files.d.ts.map +1 -0
- package/dist/daemon/methods/context-files.js +95 -0
- package/dist/daemon/methods/context-files.js.map +1 -0
- package/dist/daemon/methods/provider.d.ts.map +1 -1
- package/dist/daemon/methods/provider.js +15 -0
- package/dist/daemon/methods/provider.js.map +1 -1
- package/dist/daemon/methods/tools.d.ts +1 -1
- package/dist/daemon/methods/tools.d.ts.map +1 -1
- package/dist/daemon/methods/tools.js +3 -2
- package/dist/daemon/methods/tools.js.map +1 -1
- package/dist/daemon/sessionlog-linker.d.ts +71 -0
- package/dist/daemon/sessionlog-linker.d.ts.map +1 -0
- package/dist/daemon/sessionlog-linker.js +472 -0
- package/dist/daemon/sessionlog-linker.js.map +1 -0
- package/dist/daemon/sessionlog-watcher.d.ts +79 -0
- package/dist/daemon/sessionlog-watcher.d.ts.map +1 -0
- package/dist/daemon/sessionlog-watcher.js +289 -0
- package/dist/daemon/sessionlog-watcher.js.map +1 -0
- package/dist/graph/git-graph-syncer.js +1 -1
- package/dist/graph/git-graph-syncer.js.map +1 -1
- package/dist/graph/index.d.ts +1 -1
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/provider-store.d.ts +78 -4
- package/dist/graph/provider-store.d.ts.map +1 -1
- package/dist/graph/provider-store.js +579 -55
- package/dist/graph/provider-store.js.map +1 -1
- package/dist/graph/store.d.ts.map +1 -1
- package/dist/graph/store.js +3 -0
- package/dist/graph/store.js.map +1 -1
- package/dist/graph/types.d.ts +16 -0
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/types.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/materialization/git-archive-store.js +2 -2
- package/dist/materialization/git-archive-store.js.map +1 -1
- package/dist/materialization/git-remote-store.js +2 -2
- package/dist/materialization/git-remote-store.js.map +1 -1
- package/dist/materialization/snapshot.js +4 -4
- package/dist/materialization/snapshot.js.map +1 -1
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +39 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +677 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/stdio.d.ts +14 -0
- package/dist/mcp/stdio.d.ts.map +1 -0
- package/dist/mcp/stdio.js +19 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/providers/beads.d.ts.map +1 -1
- package/dist/providers/beads.js +17 -1
- package/dist/providers/beads.js.map +1 -1
- package/dist/providers/claude-tasks-fs.d.ts +22 -0
- package/dist/providers/claude-tasks-fs.d.ts.map +1 -0
- package/dist/providers/claude-tasks-fs.js +158 -0
- package/dist/providers/claude-tasks-fs.js.map +1 -0
- package/dist/providers/claude-tasks.d.ts +13 -4
- package/dist/providers/claude-tasks.d.ts.map +1 -1
- package/dist/providers/claude-tasks.js +318 -5
- package/dist/providers/claude-tasks.js.map +1 -1
- package/dist/providers/from-config.d.ts +3 -0
- package/dist/providers/from-config.d.ts.map +1 -1
- package/dist/providers/from-config.js +64 -17
- package/dist/providers/from-config.js.map +1 -1
- package/dist/providers/global.d.ts.map +1 -1
- package/dist/providers/global.js +5 -0
- package/dist/providers/global.js.map +1 -1
- package/dist/providers/index.d.ts +9 -4
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +10 -3
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/map-client-factory.d.ts +55 -0
- package/dist/providers/map-client-factory.d.ts.map +1 -0
- package/dist/providers/map-client-factory.js +123 -0
- package/dist/providers/map-client-factory.js.map +1 -0
- package/dist/providers/map-event-bridge.d.ts +146 -0
- package/dist/providers/map-event-bridge.d.ts.map +1 -0
- package/dist/providers/map-event-bridge.js +208 -0
- package/dist/providers/map-event-bridge.js.map +1 -0
- package/dist/providers/map.d.ts +115 -0
- package/dist/providers/map.d.ts.map +1 -0
- package/dist/providers/map.js +381 -0
- package/dist/providers/map.js.map +1 -0
- package/dist/providers/materialization.d.ts +23 -5
- package/dist/providers/materialization.d.ts.map +1 -1
- package/dist/providers/materialization.js +95 -4
- package/dist/providers/materialization.js.map +1 -1
- package/dist/providers/native.d.ts.map +1 -1
- package/dist/providers/native.js +5 -0
- package/dist/providers/native.js.map +1 -1
- package/dist/providers/sessionlog.d.ts +81 -0
- package/dist/providers/sessionlog.d.ts.map +1 -0
- package/dist/providers/sessionlog.js +478 -0
- package/dist/providers/sessionlog.js.map +1 -0
- package/dist/providers/sudocode.d.ts.map +1 -1
- package/dist/providers/sudocode.js +17 -1
- package/dist/providers/sudocode.js.map +1 -1
- package/dist/providers/traits/Reconcilable.d.ts +57 -0
- package/dist/providers/traits/Reconcilable.d.ts.map +1 -0
- package/dist/providers/traits/Reconcilable.js +18 -0
- package/dist/providers/traits/Reconcilable.js.map +1 -0
- package/dist/providers/traits/index.d.ts +2 -0
- package/dist/providers/traits/index.d.ts.map +1 -1
- package/dist/providers/traits/index.js +1 -0
- package/dist/providers/traits/index.js.map +1 -1
- package/dist/providers/types.d.ts +63 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +22 -0
- package/dist/providers/types.js.map +1 -1
- package/dist/schema/edges.d.ts +3 -3
- package/dist/schema/edges.d.ts.map +1 -1
- package/dist/sessionlog/agent/agents/claude-code.d.ts +76 -0
- package/dist/sessionlog/agent/agents/claude-code.d.ts.map +1 -0
- package/dist/sessionlog/agent/agents/claude-code.js +759 -0
- package/dist/sessionlog/agent/agents/claude-code.js.map +1 -0
- package/dist/sessionlog/agent/agents/cursor.d.ts +35 -0
- package/dist/sessionlog/agent/agents/cursor.d.ts.map +1 -0
- package/dist/sessionlog/agent/agents/cursor.js +294 -0
- package/dist/sessionlog/agent/agents/cursor.js.map +1 -0
- package/dist/sessionlog/agent/agents/gemini-cli.d.ts +62 -0
- package/dist/sessionlog/agent/agents/gemini-cli.d.ts.map +1 -0
- package/dist/sessionlog/agent/agents/gemini-cli.js +462 -0
- package/dist/sessionlog/agent/agents/gemini-cli.js.map +1 -0
- package/dist/sessionlog/agent/agents/opencode.d.ts +100 -0
- package/dist/sessionlog/agent/agents/opencode.d.ts.map +1 -0
- package/dist/sessionlog/agent/agents/opencode.js +423 -0
- package/dist/sessionlog/agent/agents/opencode.js.map +1 -0
- package/dist/sessionlog/agent/registry.d.ts +54 -0
- package/dist/sessionlog/agent/registry.d.ts.map +1 -0
- package/dist/sessionlog/agent/registry.js +123 -0
- package/dist/sessionlog/agent/registry.js.map +1 -0
- package/dist/sessionlog/agent/session-types.d.ts +45 -0
- package/dist/sessionlog/agent/session-types.d.ts.map +1 -0
- package/dist/sessionlog/agent/session-types.js +50 -0
- package/dist/sessionlog/agent/session-types.js.map +1 -0
- package/dist/sessionlog/agent/types.d.ts +126 -0
- package/dist/sessionlog/agent/types.d.ts.map +1 -0
- package/dist/sessionlog/agent/types.js +39 -0
- package/dist/sessionlog/agent/types.js.map +1 -0
- package/dist/sessionlog/commands/clean.d.ts +40 -0
- package/dist/sessionlog/commands/clean.d.ts.map +1 -0
- package/dist/sessionlog/commands/clean.js +105 -0
- package/dist/sessionlog/commands/clean.js.map +1 -0
- package/dist/sessionlog/commands/disable.d.ts +23 -0
- package/dist/sessionlog/commands/disable.d.ts.map +1 -0
- package/dist/sessionlog/commands/disable.js +57 -0
- package/dist/sessionlog/commands/disable.js.map +1 -0
- package/dist/sessionlog/commands/doctor.d.ts +43 -0
- package/dist/sessionlog/commands/doctor.d.ts.map +1 -0
- package/dist/sessionlog/commands/doctor.js +97 -0
- package/dist/sessionlog/commands/doctor.js.map +1 -0
- package/dist/sessionlog/commands/enable.d.ts +31 -0
- package/dist/sessionlog/commands/enable.d.ts.map +1 -0
- package/dist/sessionlog/commands/enable.js +102 -0
- package/dist/sessionlog/commands/enable.js.map +1 -0
- package/dist/sessionlog/commands/explain.d.ts +69 -0
- package/dist/sessionlog/commands/explain.d.ts.map +1 -0
- package/dist/sessionlog/commands/explain.js +185 -0
- package/dist/sessionlog/commands/explain.js.map +1 -0
- package/dist/sessionlog/commands/reset.d.ts +23 -0
- package/dist/sessionlog/commands/reset.d.ts.map +1 -0
- package/dist/sessionlog/commands/reset.js +68 -0
- package/dist/sessionlog/commands/reset.js.map +1 -0
- package/dist/sessionlog/commands/resume.d.ts +42 -0
- package/dist/sessionlog/commands/resume.d.ts.map +1 -0
- package/dist/sessionlog/commands/resume.js +134 -0
- package/dist/sessionlog/commands/resume.js.map +1 -0
- package/dist/sessionlog/commands/rewind.d.ts +40 -0
- package/dist/sessionlog/commands/rewind.d.ts.map +1 -0
- package/dist/sessionlog/commands/rewind.js +155 -0
- package/dist/sessionlog/commands/rewind.js.map +1 -0
- package/dist/sessionlog/commands/status.d.ts +54 -0
- package/dist/sessionlog/commands/status.d.ts.map +1 -0
- package/dist/sessionlog/commands/status.js +95 -0
- package/dist/sessionlog/commands/status.js.map +1 -0
- package/dist/sessionlog/config.d.ts +40 -0
- package/dist/sessionlog/config.d.ts.map +1 -0
- package/dist/sessionlog/config.js +126 -0
- package/dist/sessionlog/config.js.map +1 -0
- package/dist/sessionlog/git-operations.d.ts +173 -0
- package/dist/sessionlog/git-operations.d.ts.map +1 -0
- package/dist/sessionlog/git-operations.js +399 -0
- package/dist/sessionlog/git-operations.js.map +1 -0
- package/dist/sessionlog/hooks/git-hooks.d.ts +22 -0
- package/dist/sessionlog/hooks/git-hooks.d.ts.map +1 -0
- package/dist/sessionlog/hooks/git-hooks.js +145 -0
- package/dist/sessionlog/hooks/git-hooks.js.map +1 -0
- package/dist/sessionlog/hooks/lifecycle.d.ts +21 -0
- package/dist/sessionlog/hooks/lifecycle.d.ts.map +1 -0
- package/dist/sessionlog/hooks/lifecycle.js +179 -0
- package/dist/sessionlog/hooks/lifecycle.js.map +1 -0
- package/dist/sessionlog/index.d.ts +69 -0
- package/dist/sessionlog/index.d.ts.map +1 -0
- package/dist/sessionlog/index.js +154 -0
- package/dist/sessionlog/index.js.map +1 -0
- package/dist/sessionlog/security/redaction.d.ts +35 -0
- package/dist/sessionlog/security/redaction.d.ts.map +1 -0
- package/dist/sessionlog/security/redaction.js +221 -0
- package/dist/sessionlog/security/redaction.js.map +1 -0
- package/dist/sessionlog/session/state-machine.d.ts +90 -0
- package/dist/sessionlog/session/state-machine.d.ts.map +1 -0
- package/dist/sessionlog/session/state-machine.js +347 -0
- package/dist/sessionlog/session/state-machine.js.map +1 -0
- package/dist/sessionlog/store/checkpoint-store.d.ts +47 -0
- package/dist/sessionlog/store/checkpoint-store.d.ts.map +1 -0
- package/dist/sessionlog/store/checkpoint-store.js +309 -0
- package/dist/sessionlog/store/checkpoint-store.js.map +1 -0
- package/dist/sessionlog/store/native-store.d.ts +21 -0
- package/dist/sessionlog/store/native-store.d.ts.map +1 -0
- package/dist/sessionlog/store/native-store.js +162 -0
- package/dist/sessionlog/store/native-store.js.map +1 -0
- package/dist/sessionlog/store/provider-types.d.ts +78 -0
- package/dist/sessionlog/store/provider-types.d.ts.map +1 -0
- package/dist/sessionlog/store/provider-types.js +12 -0
- package/dist/sessionlog/store/provider-types.js.map +1 -0
- package/dist/sessionlog/store/session-store.d.ts +28 -0
- package/dist/sessionlog/store/session-store.d.ts.map +1 -0
- package/dist/sessionlog/store/session-store.js +187 -0
- package/dist/sessionlog/store/session-store.js.map +1 -0
- package/dist/sessionlog/strategy/attribution.d.ts +39 -0
- package/dist/sessionlog/strategy/attribution.d.ts.map +1 -0
- package/dist/sessionlog/strategy/attribution.js +227 -0
- package/dist/sessionlog/strategy/attribution.js.map +1 -0
- package/dist/sessionlog/strategy/common.d.ts +60 -0
- package/dist/sessionlog/strategy/common.d.ts.map +1 -0
- package/dist/sessionlog/strategy/common.js +162 -0
- package/dist/sessionlog/strategy/common.js.map +1 -0
- package/dist/sessionlog/strategy/content-overlap.d.ts +33 -0
- package/dist/sessionlog/strategy/content-overlap.d.ts.map +1 -0
- package/dist/sessionlog/strategy/content-overlap.js +168 -0
- package/dist/sessionlog/strategy/content-overlap.js.map +1 -0
- package/dist/sessionlog/strategy/manual-commit.d.ts +35 -0
- package/dist/sessionlog/strategy/manual-commit.d.ts.map +1 -0
- package/dist/sessionlog/strategy/manual-commit.js +732 -0
- package/dist/sessionlog/strategy/manual-commit.js.map +1 -0
- package/dist/sessionlog/strategy/types.d.ts +163 -0
- package/dist/sessionlog/strategy/types.d.ts.map +1 -0
- package/dist/sessionlog/strategy/types.js +49 -0
- package/dist/sessionlog/strategy/types.js.map +1 -0
- package/dist/sessionlog/summarize/claude-generator.d.ts +25 -0
- package/dist/sessionlog/summarize/claude-generator.d.ts.map +1 -0
- package/dist/sessionlog/summarize/claude-generator.js +87 -0
- package/dist/sessionlog/summarize/claude-generator.js.map +1 -0
- package/dist/sessionlog/summarize/summarize.d.ts +52 -0
- package/dist/sessionlog/summarize/summarize.d.ts.map +1 -0
- package/dist/sessionlog/summarize/summarize.js +335 -0
- package/dist/sessionlog/summarize/summarize.js.map +1 -0
- package/dist/sessionlog/types.d.ts +298 -0
- package/dist/sessionlog/types.d.ts.map +1 -0
- package/dist/sessionlog/types.js +104 -0
- package/dist/sessionlog/types.js.map +1 -0
- package/dist/sessionlog/utils/chunk-files.d.ts +25 -0
- package/dist/sessionlog/utils/chunk-files.d.ts.map +1 -0
- package/dist/sessionlog/utils/chunk-files.js +47 -0
- package/dist/sessionlog/utils/chunk-files.js.map +1 -0
- package/dist/sessionlog/utils/commit-message.d.ts +11 -0
- package/dist/sessionlog/utils/commit-message.d.ts.map +1 -0
- package/dist/sessionlog/utils/commit-message.js +54 -0
- package/dist/sessionlog/utils/commit-message.js.map +1 -0
- package/dist/sessionlog/utils/detect-agent.d.ts +19 -0
- package/dist/sessionlog/utils/detect-agent.d.ts.map +1 -0
- package/dist/sessionlog/utils/detect-agent.js +34 -0
- package/dist/sessionlog/utils/detect-agent.js.map +1 -0
- package/dist/sessionlog/utils/hook-managers.d.ts +24 -0
- package/dist/sessionlog/utils/hook-managers.d.ts.map +1 -0
- package/dist/sessionlog/utils/hook-managers.js +87 -0
- package/dist/sessionlog/utils/hook-managers.js.map +1 -0
- package/dist/sessionlog/utils/ide-tags.d.ts +12 -0
- package/dist/sessionlog/utils/ide-tags.d.ts.map +1 -0
- package/dist/sessionlog/utils/ide-tags.js +30 -0
- package/dist/sessionlog/utils/ide-tags.js.map +1 -0
- package/dist/sessionlog/utils/paths.d.ts +32 -0
- package/dist/sessionlog/utils/paths.d.ts.map +1 -0
- package/dist/sessionlog/utils/paths.js +55 -0
- package/dist/sessionlog/utils/paths.js.map +1 -0
- package/dist/sessionlog/utils/preview-rewind.d.ts +23 -0
- package/dist/sessionlog/utils/preview-rewind.d.ts.map +1 -0
- package/dist/sessionlog/utils/preview-rewind.js +63 -0
- package/dist/sessionlog/utils/preview-rewind.js.map +1 -0
- package/dist/sessionlog/utils/rewind-conflict.d.ts +52 -0
- package/dist/sessionlog/utils/rewind-conflict.d.ts.map +1 -0
- package/dist/sessionlog/utils/rewind-conflict.js +79 -0
- package/dist/sessionlog/utils/rewind-conflict.js.map +1 -0
- package/dist/sessionlog/utils/shadow-branch.d.ts +53 -0
- package/dist/sessionlog/utils/shadow-branch.d.ts.map +1 -0
- package/dist/sessionlog/utils/shadow-branch.js +97 -0
- package/dist/sessionlog/utils/shadow-branch.js.map +1 -0
- package/dist/sessionlog/utils/string-utils.d.ts +24 -0
- package/dist/sessionlog/utils/string-utils.d.ts.map +1 -0
- package/dist/sessionlog/utils/string-utils.js +47 -0
- package/dist/sessionlog/utils/string-utils.js.map +1 -0
- package/dist/sessionlog/utils/todo-extract.d.ts +52 -0
- package/dist/sessionlog/utils/todo-extract.d.ts.map +1 -0
- package/dist/sessionlog/utils/todo-extract.js +167 -0
- package/dist/sessionlog/utils/todo-extract.js.map +1 -0
- package/dist/sessionlog/utils/trailers.d.ts +36 -0
- package/dist/sessionlog/utils/trailers.d.ts.map +1 -0
- package/dist/sessionlog/utils/trailers.js +149 -0
- package/dist/sessionlog/utils/trailers.js.map +1 -0
- package/dist/sessionlog/utils/transcript-parse.d.ts +57 -0
- package/dist/sessionlog/utils/transcript-parse.d.ts.map +1 -0
- package/dist/sessionlog/utils/transcript-parse.js +126 -0
- package/dist/sessionlog/utils/transcript-parse.js.map +1 -0
- package/dist/sessionlog/utils/transcript-timestamp.d.ts +22 -0
- package/dist/sessionlog/utils/transcript-timestamp.d.ts.map +1 -0
- package/dist/sessionlog/utils/transcript-timestamp.js +56 -0
- package/dist/sessionlog/utils/transcript-timestamp.js.map +1 -0
- package/dist/sessionlog/utils/tree-ops.d.ts +47 -0
- package/dist/sessionlog/utils/tree-ops.d.ts.map +1 -0
- package/dist/sessionlog/utils/tree-ops.js +145 -0
- package/dist/sessionlog/utils/tree-ops.js.map +1 -0
- package/dist/sessionlog/utils/tty.d.ts +25 -0
- package/dist/sessionlog/utils/tty.d.ts.map +1 -0
- package/dist/sessionlog/utils/tty.js +70 -0
- package/dist/sessionlog/utils/tty.js.map +1 -0
- package/dist/sessionlog/utils/validation.d.ts +31 -0
- package/dist/sessionlog/utils/validation.d.ts.map +1 -0
- package/dist/sessionlog/utils/validation.js +59 -0
- package/dist/sessionlog/utils/validation.js.map +1 -0
- package/dist/sessionlog/utils/worktree.d.ts +16 -0
- package/dist/sessionlog/utils/worktree.d.ts.map +1 -0
- package/dist/sessionlog/utils/worktree.js +50 -0
- package/dist/sessionlog/utils/worktree.js.map +1 -0
- package/dist/storage/sqlite-schema.d.ts.map +1 -1
- package/dist/storage/sqlite-schema.js +2 -0
- package/dist/storage/sqlite-schema.js.map +1 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +18 -4
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/query.d.ts +2 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +217 -7
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/types.d.ts +57 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tracking/transcript-extractor.d.ts +3 -3
- package/dist/tracking/transcript-extractor.d.ts.map +1 -1
- package/dist/tracking/transcript-extractor.js +1 -1
- package/dist/tracking/transcript-extractor.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-files.js","sourceRoot":"","sources":["../../src/context-files/context-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files
|
|
3
|
+
*
|
|
4
|
+
* Support for context nodes that reference codebase files (code, markdown, etc.).
|
|
5
|
+
* Context-file nodes are lightweight pointers with versioning metadata (commit SHA,
|
|
6
|
+
* content hash). File content is resolved on demand, not stored in the graph.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
export type { ContextFileMetadata, ContextFileType, ContextFileResolution, DriftResult, CreateContextFileInput, SyncContextFileOptions, } from './types.js';
|
|
11
|
+
export { contentHash, getHeadCommit, readFileFromWorktree, readFileAtCommit, resolveContextFile, fileExists, fileExistsAtCommit, inferFileType, } from './resolver.js';
|
|
12
|
+
export type { ContextFileManager } from './context-files.js';
|
|
13
|
+
export { isContextFileNode, getContextFileMetadata, createContextFileManager, } from './context-files.js';
|
|
14
|
+
export type { ContextFileWatcherOptions } from './watcher-integration.js';
|
|
15
|
+
export { createContextFileChangeHandler } from './watcher-integration.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context-files/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files
|
|
3
|
+
*
|
|
4
|
+
* Support for context nodes that reference codebase files (code, markdown, etc.).
|
|
5
|
+
* Context-file nodes are lightweight pointers with versioning metadata (commit SHA,
|
|
6
|
+
* content hash). File content is resolved on demand, not stored in the graph.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
// Resolver
|
|
11
|
+
export { contentHash, getHeadCommit, readFileFromWorktree, readFileAtCommit, resolveContextFile, fileExists, fileExistsAtCommit, inferFileType, } from './resolver.js';
|
|
12
|
+
export { isContextFileNode, getContextFileMetadata, createContextFileManager, } from './context-files.js';
|
|
13
|
+
export { createContextFileChangeHandler } from './watcher-integration.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context-files/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,WAAW;AACX,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files — Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves file content from the working tree or at a specific git commit.
|
|
5
|
+
* Computes content hashes for drift detection.
|
|
6
|
+
*/
|
|
7
|
+
import type { ContextFileResolution, ContextFileType } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Compute SHA-256 hex hash of content.
|
|
10
|
+
*/
|
|
11
|
+
export declare function contentHash(content: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Get the current HEAD commit SHA for a repository.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getHeadCommit(repoRoot: string): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Read file content from the working tree.
|
|
18
|
+
*/
|
|
19
|
+
export declare function readFileFromWorktree(repoRoot: string, filePath: string): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Read file content at a specific git commit via `git show <sha>:<path>`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function readFileAtCommit(repoRoot: string, filePath: string, commit: string): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a context file — read content and compute hashes.
|
|
26
|
+
*
|
|
27
|
+
* If `atCommit` is provided, reads the file at that specific commit.
|
|
28
|
+
* Otherwise reads from the working tree and uses HEAD as the commit.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveContextFile(repoRoot: string, filePath: string, capturedHash?: string, atCommit?: string): Promise<ContextFileResolution>;
|
|
31
|
+
/**
|
|
32
|
+
* Check if a file exists in the working tree.
|
|
33
|
+
*/
|
|
34
|
+
export declare function fileExists(repoRoot: string, filePath: string): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Check if a file exists at a specific git commit.
|
|
37
|
+
*/
|
|
38
|
+
export declare function fileExistsAtCommit(repoRoot: string, filePath: string, commit: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Infer the context-file type from a file path.
|
|
41
|
+
*/
|
|
42
|
+
export declare function inferFileType(filePath: string): ContextFileType;
|
|
43
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/context-files/resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQzE;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAsBhC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAuB/D"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files — Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves file content from the working tree or at a specific git commit.
|
|
5
|
+
* Computes content hashes for drift detection.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
import { execFile } from 'node:child_process';
|
|
9
|
+
import { readFile } from 'node:fs/promises';
|
|
10
|
+
import * as path from 'node:path';
|
|
11
|
+
import { promisify } from 'node:util';
|
|
12
|
+
const execFileAsync = promisify(execFile);
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Public API
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Compute SHA-256 hex hash of content.
|
|
18
|
+
*/
|
|
19
|
+
export function contentHash(content) {
|
|
20
|
+
return createHash('sha256').update(content, 'utf8').digest('hex');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get the current HEAD commit SHA for a repository.
|
|
24
|
+
*/
|
|
25
|
+
export async function getHeadCommit(repoRoot) {
|
|
26
|
+
const { stdout } = await execFileAsync('git', ['rev-parse', 'HEAD'], {
|
|
27
|
+
cwd: repoRoot,
|
|
28
|
+
});
|
|
29
|
+
return stdout.trim();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Read file content from the working tree.
|
|
33
|
+
*/
|
|
34
|
+
export async function readFileFromWorktree(repoRoot, filePath) {
|
|
35
|
+
const absolute = path.resolve(repoRoot, filePath);
|
|
36
|
+
return readFile(absolute, 'utf8');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Read file content at a specific git commit via `git show <sha>:<path>`.
|
|
40
|
+
*/
|
|
41
|
+
export async function readFileAtCommit(repoRoot, filePath, commit) {
|
|
42
|
+
// Normalize to forward-slash for git
|
|
43
|
+
const gitPath = filePath.split(path.sep).join('/');
|
|
44
|
+
const { stdout } = await execFileAsync('git', ['show', `${commit}:${gitPath}`], {
|
|
45
|
+
cwd: repoRoot,
|
|
46
|
+
maxBuffer: 10 * 1024 * 1024, // 10 MB
|
|
47
|
+
});
|
|
48
|
+
return stdout;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a context file — read content and compute hashes.
|
|
52
|
+
*
|
|
53
|
+
* If `atCommit` is provided, reads the file at that specific commit.
|
|
54
|
+
* Otherwise reads from the working tree and uses HEAD as the commit.
|
|
55
|
+
*/
|
|
56
|
+
export async function resolveContextFile(repoRoot, filePath, capturedHash, atCommit) {
|
|
57
|
+
let content;
|
|
58
|
+
let commit;
|
|
59
|
+
if (atCommit) {
|
|
60
|
+
content = await readFileAtCommit(repoRoot, filePath, atCommit);
|
|
61
|
+
commit = atCommit;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
content = await readFileFromWorktree(repoRoot, filePath);
|
|
65
|
+
commit = await getHeadCommit(repoRoot);
|
|
66
|
+
}
|
|
67
|
+
const hash = contentHash(content);
|
|
68
|
+
const drifted = capturedHash !== undefined && hash !== capturedHash;
|
|
69
|
+
return {
|
|
70
|
+
content,
|
|
71
|
+
commit,
|
|
72
|
+
contentHash: hash,
|
|
73
|
+
drifted,
|
|
74
|
+
filePath,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if a file exists in the working tree.
|
|
79
|
+
*/
|
|
80
|
+
export async function fileExists(repoRoot, filePath) {
|
|
81
|
+
try {
|
|
82
|
+
await readFile(path.resolve(repoRoot, filePath));
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if a file exists at a specific git commit.
|
|
91
|
+
*/
|
|
92
|
+
export async function fileExistsAtCommit(repoRoot, filePath, commit) {
|
|
93
|
+
try {
|
|
94
|
+
const gitPath = filePath.split(path.sep).join('/');
|
|
95
|
+
await execFileAsync('git', ['cat-file', '-e', `${commit}:${gitPath}`], {
|
|
96
|
+
cwd: repoRoot,
|
|
97
|
+
});
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Infer the context-file type from a file path.
|
|
106
|
+
*/
|
|
107
|
+
export function inferFileType(filePath) {
|
|
108
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
109
|
+
if (ext === '.md' || ext === '.mdx') {
|
|
110
|
+
return 'markdown';
|
|
111
|
+
}
|
|
112
|
+
const codeExtensions = new Set([
|
|
113
|
+
'.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
|
|
114
|
+
'.py', '.rb', '.go', '.rs', '.java', '.kt', '.kts',
|
|
115
|
+
'.c', '.cpp', '.cc', '.h', '.hpp',
|
|
116
|
+
'.cs', '.swift', '.scala', '.clj', '.cljs',
|
|
117
|
+
'.sh', '.bash', '.zsh', '.fish',
|
|
118
|
+
'.sql', '.graphql', '.gql',
|
|
119
|
+
'.yaml', '.yml', '.toml', '.json', '.jsonl',
|
|
120
|
+
'.html', '.css', '.scss', '.less', '.vue', '.svelte',
|
|
121
|
+
]);
|
|
122
|
+
if (codeExtensions.has(ext)) {
|
|
123
|
+
return 'code';
|
|
124
|
+
}
|
|
125
|
+
return 'text';
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/context-files/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files — Types
|
|
3
|
+
*
|
|
4
|
+
* Metadata schema for context nodes that reference files in the codebase.
|
|
5
|
+
* A context-file node stores a lightweight pointer to a repo file plus
|
|
6
|
+
* versioning info (commit SHA, content hash). The actual file content is
|
|
7
|
+
* resolved on access rather than duplicated into the graph store.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Metadata fields added to a context node that references a codebase file.
|
|
11
|
+
*
|
|
12
|
+
* These live inside `node.metadata` alongside any other metadata.
|
|
13
|
+
*/
|
|
14
|
+
export interface ContextFileMetadata {
|
|
15
|
+
/** Marker — distinguishes context-file nodes from plain context nodes */
|
|
16
|
+
context_file: true;
|
|
17
|
+
/** Repo-relative path to the file (e.g. "src/auth/middleware.ts", "docs/arch.md") */
|
|
18
|
+
context_file_path: string;
|
|
19
|
+
/**
|
|
20
|
+
* File type hint.
|
|
21
|
+
* - "markdown" for .md files
|
|
22
|
+
* - "code" for source files
|
|
23
|
+
* - "text" for other text files
|
|
24
|
+
*/
|
|
25
|
+
context_file_type: ContextFileType;
|
|
26
|
+
/** Git commit SHA when the file was last synced/captured */
|
|
27
|
+
context_file_commit?: string;
|
|
28
|
+
/** SHA-256 hash of the file content at the synced commit */
|
|
29
|
+
context_file_content_hash?: string;
|
|
30
|
+
/** ISO 8601 timestamp of last sync from file */
|
|
31
|
+
context_file_synced_at?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* File type classification
|
|
35
|
+
*/
|
|
36
|
+
export type ContextFileType = 'markdown' | 'code' | 'text';
|
|
37
|
+
/**
|
|
38
|
+
* Result of resolving a context file's content.
|
|
39
|
+
*/
|
|
40
|
+
export interface ContextFileResolution {
|
|
41
|
+
/** The resolved file content */
|
|
42
|
+
content: string;
|
|
43
|
+
/** Commit SHA the content was read from (HEAD if worktree) */
|
|
44
|
+
commit: string;
|
|
45
|
+
/** SHA-256 of the resolved content */
|
|
46
|
+
contentHash: string;
|
|
47
|
+
/** Whether content differs from what was captured (hash mismatch) */
|
|
48
|
+
drifted: boolean;
|
|
49
|
+
/** Repo-relative file path */
|
|
50
|
+
filePath: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Drift detection result for a context-file node.
|
|
54
|
+
*/
|
|
55
|
+
export interface DriftResult {
|
|
56
|
+
/** Whether the file has changed since the node was synced */
|
|
57
|
+
drifted: boolean;
|
|
58
|
+
/** Current commit SHA (HEAD) */
|
|
59
|
+
currentCommit: string;
|
|
60
|
+
/** Commit SHA stored in the node */
|
|
61
|
+
capturedCommit?: string;
|
|
62
|
+
/** Current content hash */
|
|
63
|
+
currentHash: string;
|
|
64
|
+
/** Content hash stored in the node */
|
|
65
|
+
capturedHash?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Input for creating a context-file node.
|
|
69
|
+
*/
|
|
70
|
+
export interface CreateContextFileInput {
|
|
71
|
+
/** Repo-relative file path */
|
|
72
|
+
filePath: string;
|
|
73
|
+
/**
|
|
74
|
+
* Optional title. If omitted, derived from the file path
|
|
75
|
+
* (e.g. "src/auth/middleware.ts" → "auth/middleware.ts")
|
|
76
|
+
*/
|
|
77
|
+
title?: string;
|
|
78
|
+
/** Optional tags */
|
|
79
|
+
tags?: string[];
|
|
80
|
+
/** Optional priority */
|
|
81
|
+
priority?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Pin to a specific commit SHA. If omitted, uses current HEAD.
|
|
84
|
+
*/
|
|
85
|
+
commit?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Options for syncing a context-file node with the current file state.
|
|
89
|
+
*/
|
|
90
|
+
export interface SyncContextFileOptions {
|
|
91
|
+
/** Force sync even if content hash hasn't changed */
|
|
92
|
+
force?: boolean;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context-files/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,YAAY,EAAE,IAAI,CAAC;IAEnB,qFAAqF;IACrF,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,iBAAiB,EAAE,eAAe,CAAC;IAEnC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,4DAA4D;IAC5D,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAM3D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IAEjB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IAEjB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IAEtB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files — Types
|
|
3
|
+
*
|
|
4
|
+
* Metadata schema for context nodes that reference files in the codebase.
|
|
5
|
+
* A context-file node stores a lightweight pointer to a repo file plus
|
|
6
|
+
* versioning info (commit SHA, content hash). The actual file content is
|
|
7
|
+
* resolved on access rather than duplicated into the graph store.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/context-files/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files — Watcher Integration
|
|
3
|
+
*
|
|
4
|
+
* Bridges the daemon file watcher with context-file nodes.
|
|
5
|
+
* When a watched file changes, marks the corresponding context-file node
|
|
6
|
+
* as potentially drifted so callers can decide whether to re-sync.
|
|
7
|
+
*/
|
|
8
|
+
import type { FileChangeEvent, ChangeHandler } from '../daemon/watcher.js';
|
|
9
|
+
import type { GraphStore } from '../graph/store.js';
|
|
10
|
+
import type { Node } from '../schema/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Options for the context-file watcher handler.
|
|
13
|
+
*/
|
|
14
|
+
export interface ContextFileWatcherOptions {
|
|
15
|
+
/** The graph store to query for context-file nodes */
|
|
16
|
+
store: GraphStore;
|
|
17
|
+
/**
|
|
18
|
+
* Root of the repository (to compute repo-relative paths).
|
|
19
|
+
* The watcher emits absolute paths; we compare against
|
|
20
|
+
* `context_file_path` which is repo-relative.
|
|
21
|
+
*/
|
|
22
|
+
repoRoot: string;
|
|
23
|
+
/**
|
|
24
|
+
* Callback invoked when a context-file node's source file changes.
|
|
25
|
+
* Receives the node and the change event.
|
|
26
|
+
*/
|
|
27
|
+
onDrift?: (node: Node, event: FileChangeEvent) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Auto-sync context-file nodes when their source file changes.
|
|
30
|
+
* Default: false (only fires onDrift callback).
|
|
31
|
+
*/
|
|
32
|
+
autoSync?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a ChangeHandler that reacts to context-file source changes.
|
|
36
|
+
*
|
|
37
|
+
* Wire this into the daemon file watcher:
|
|
38
|
+
* ```ts
|
|
39
|
+
* const handler = createContextFileChangeHandler({ store, repoRoot });
|
|
40
|
+
* fileWatcher.onchange(handler);
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* The handler scans context-file nodes for any whose `context_file_path`
|
|
44
|
+
* matches the changed file, then fires the onDrift callback.
|
|
45
|
+
*/
|
|
46
|
+
export declare function createContextFileChangeHandler(options: ContextFileWatcherOptions): ChangeHandler;
|
|
47
|
+
//# sourceMappingURL=watcher-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher-integration.d.ts","sourceRoot":"","sources":["../../src/context-files/watcher-integration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAI/C;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,KAAK,EAAE,UAAU,CAAC;IAElB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,yBAAyB,GACjC,aAAa,CA0Bf"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Files — Watcher Integration
|
|
3
|
+
*
|
|
4
|
+
* Bridges the daemon file watcher with context-file nodes.
|
|
5
|
+
* When a watched file changes, marks the corresponding context-file node
|
|
6
|
+
* as potentially drifted so callers can decide whether to re-sync.
|
|
7
|
+
*/
|
|
8
|
+
import { isContextFileNode, getContextFileMetadata } from './context-files.js';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
/**
|
|
11
|
+
* Create a ChangeHandler that reacts to context-file source changes.
|
|
12
|
+
*
|
|
13
|
+
* Wire this into the daemon file watcher:
|
|
14
|
+
* ```ts
|
|
15
|
+
* const handler = createContextFileChangeHandler({ store, repoRoot });
|
|
16
|
+
* fileWatcher.onchange(handler);
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* The handler scans context-file nodes for any whose `context_file_path`
|
|
20
|
+
* matches the changed file, then fires the onDrift callback.
|
|
21
|
+
*/
|
|
22
|
+
export function createContextFileChangeHandler(options) {
|
|
23
|
+
const { store, repoRoot, onDrift } = options;
|
|
24
|
+
return async (event) => {
|
|
25
|
+
// Only react to file additions and changes (not unlinks for now)
|
|
26
|
+
if (event.type === 'unlink')
|
|
27
|
+
return;
|
|
28
|
+
// Compute repo-relative path from the absolute watcher path
|
|
29
|
+
const repoRelative = path.relative(repoRoot, event.path);
|
|
30
|
+
// Find context-file nodes that reference this file
|
|
31
|
+
const contextNodes = await store.query.nodes({ type: 'context' });
|
|
32
|
+
for (const node of contextNodes) {
|
|
33
|
+
if (!isContextFileNode(node))
|
|
34
|
+
continue;
|
|
35
|
+
const meta = getContextFileMetadata(node);
|
|
36
|
+
if (!meta)
|
|
37
|
+
continue;
|
|
38
|
+
// Normalize for comparison (forward slashes)
|
|
39
|
+
const metaPath = meta.context_file_path.split(path.sep).join('/');
|
|
40
|
+
const eventPath = repoRelative.split(path.sep).join('/');
|
|
41
|
+
if (metaPath === eventPath) {
|
|
42
|
+
onDrift?.(node, event);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=watcher-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher-integration.js","sourceRoot":"","sources":["../../src/context-files/watcher-integration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AA6BlC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAkC;IAElC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE7C,OAAO,KAAK,EAAE,KAAsB,EAAE,EAAE;QACtC,iEAAiE;QACjE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAEpC,4DAA4D;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzD,mDAAmD;QACnD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -29,6 +29,11 @@ export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
|
29
29
|
* - Both sides agree → use that value
|
|
30
30
|
* - Only one side changed → use the changed value
|
|
31
31
|
* - Both changed differently → last-writer-wins by updated_at
|
|
32
|
+
*
|
|
33
|
+
* For provider-authoritative nodes where both sides modified:
|
|
34
|
+
* - Structural fields (id, type, metadata) merge normally
|
|
35
|
+
* - Cached data fields (title, content, status, priority) take whichever side
|
|
36
|
+
* but are marked for re-fetch via provider_needs_reconcile
|
|
32
37
|
*/
|
|
33
38
|
export declare function fieldLevelMerge(base: JsonLine, ours: JsonLine, theirs: JsonLine): JsonLine;
|
|
34
39
|
/**
|
|
@@ -43,8 +48,12 @@ export declare function mergeJsonl(basePath: string, oursPath: string, theirsPat
|
|
|
43
48
|
/**
|
|
44
49
|
* Install the merge driver in git config and .gitattributes
|
|
45
50
|
*
|
|
46
|
-
*
|
|
51
|
+
* Places .gitattributes inside the opentasks directory so it doesn't
|
|
52
|
+
* pollute the project root. Git supports .gitattributes in subdirectories;
|
|
53
|
+
* patterns are matched relative to the directory containing the file.
|
|
54
|
+
*
|
|
55
|
+
* @param opentasksDir - Path to the opentasks data directory
|
|
47
56
|
*/
|
|
48
|
-
export declare function installMergeDriver(
|
|
57
|
+
export declare function installMergeDriver(opentasksDir: string): void;
|
|
49
58
|
export {};
|
|
50
59
|
//# sourceMappingURL=merge-driver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-driver.d.ts","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAoBxF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;
|
|
1
|
+
{"version":3,"file":"merge-driver.d.ts","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAoBxF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAsE1F;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0DzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA6B7D"}
|
|
@@ -99,6 +99,19 @@ function pickByNewerTimestamp(a, b) {
|
|
|
99
99
|
const bTime = b.updated_at || b.created_at || '';
|
|
100
100
|
return aTime >= bTime ? a : b;
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Fields that contain cached provider data.
|
|
104
|
+
* When both sides modify a provider-authoritative node, these fields are
|
|
105
|
+
* NOT three-way merged — instead the node is flagged for reconciliation.
|
|
106
|
+
*/
|
|
107
|
+
const PROVIDER_CACHED_FIELDS = new Set(['title', 'content', 'status', 'priority']);
|
|
108
|
+
/**
|
|
109
|
+
* Check if a JSONL entry is a provider-authoritative node
|
|
110
|
+
*/
|
|
111
|
+
function isProviderAuthoritative(entry) {
|
|
112
|
+
const metadata = entry.metadata;
|
|
113
|
+
return metadata?.provider_authoritative === true;
|
|
114
|
+
}
|
|
102
115
|
/**
|
|
103
116
|
* Field-level three-way merge
|
|
104
117
|
*
|
|
@@ -106,6 +119,11 @@ function pickByNewerTimestamp(a, b) {
|
|
|
106
119
|
* - Both sides agree → use that value
|
|
107
120
|
* - Only one side changed → use the changed value
|
|
108
121
|
* - Both changed differently → last-writer-wins by updated_at
|
|
122
|
+
*
|
|
123
|
+
* For provider-authoritative nodes where both sides modified:
|
|
124
|
+
* - Structural fields (id, type, metadata) merge normally
|
|
125
|
+
* - Cached data fields (title, content, status, priority) take whichever side
|
|
126
|
+
* but are marked for re-fetch via provider_needs_reconcile
|
|
109
127
|
*/
|
|
110
128
|
export function fieldLevelMerge(base, ours, theirs) {
|
|
111
129
|
const result = { ...base };
|
|
@@ -159,6 +177,23 @@ export function fieldLevelMerge(base, ours, theirs) {
|
|
|
159
177
|
if (times.length > 0) {
|
|
160
178
|
result.updated_at = times.sort().pop();
|
|
161
179
|
}
|
|
180
|
+
// Provider-authoritative handling: if both sides modified cached data fields,
|
|
181
|
+
// mark for reconciliation instead of trusting the merge result.
|
|
182
|
+
if (isProviderAuthoritative(result)) {
|
|
183
|
+
const hasCachedFieldConflict = [...PROVIDER_CACHED_FIELDS].some((key) => {
|
|
184
|
+
const bVal = base[key];
|
|
185
|
+
const oVal = ours[key];
|
|
186
|
+
const tVal = theirs[key];
|
|
187
|
+
// True conflict: both changed differently from base
|
|
188
|
+
return !deepEqual(bVal, oVal) && !deepEqual(bVal, tVal) && !deepEqual(oVal, tVal);
|
|
189
|
+
});
|
|
190
|
+
if (hasCachedFieldConflict) {
|
|
191
|
+
const metadata = (result.metadata ?? {});
|
|
192
|
+
metadata.provider_needs_reconcile = true;
|
|
193
|
+
metadata.provider_cached_at = null;
|
|
194
|
+
result.metadata = metadata;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
162
197
|
return result;
|
|
163
198
|
}
|
|
164
199
|
/**
|
|
@@ -224,11 +259,15 @@ export function mergeJsonl(basePath, oursPath, theirsPath) {
|
|
|
224
259
|
/**
|
|
225
260
|
* Install the merge driver in git config and .gitattributes
|
|
226
261
|
*
|
|
227
|
-
*
|
|
262
|
+
* Places .gitattributes inside the opentasks directory so it doesn't
|
|
263
|
+
* pollute the project root. Git supports .gitattributes in subdirectories;
|
|
264
|
+
* patterns are matched relative to the directory containing the file.
|
|
265
|
+
*
|
|
266
|
+
* @param opentasksDir - Path to the opentasks data directory
|
|
228
267
|
*/
|
|
229
|
-
export function installMergeDriver(
|
|
230
|
-
// 1. Add
|
|
231
|
-
const attrPath = `${
|
|
268
|
+
export function installMergeDriver(opentasksDir) {
|
|
269
|
+
// 1. Add .gitattributes inside the opentasks directory
|
|
270
|
+
const attrPath = `${opentasksDir}/.gitattributes`;
|
|
232
271
|
let attrContent = '';
|
|
233
272
|
try {
|
|
234
273
|
attrContent = fs.readFileSync(attrPath, 'utf-8');
|
|
@@ -237,17 +276,17 @@ export function installMergeDriver(worktreePath) {
|
|
|
237
276
|
// File doesn't exist yet
|
|
238
277
|
}
|
|
239
278
|
if (!attrContent.includes('merge=opentasks')) {
|
|
240
|
-
const addition = '\n# OpenTasks merge driver for graph.jsonl\n' + '
|
|
279
|
+
const addition = '\n# OpenTasks merge driver for graph.jsonl\n' + 'graph.jsonl merge=opentasks\n';
|
|
241
280
|
fs.writeFileSync(attrPath, attrContent + addition, 'utf-8');
|
|
242
281
|
}
|
|
243
282
|
// 2. Configure merge driver in git config
|
|
244
283
|
try {
|
|
245
284
|
execSync('git config merge.opentasks.name "OpenTasks JSONL merge driver"', {
|
|
246
|
-
cwd:
|
|
285
|
+
cwd: opentasksDir,
|
|
247
286
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
248
287
|
});
|
|
249
288
|
execSync('git config merge.opentasks.driver "opentasks merge-driver %O %A %B %L %P"', {
|
|
250
|
-
cwd:
|
|
289
|
+
cwd: opentasksDir,
|
|
251
290
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
252
291
|
});
|
|
253
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-driver.js","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"merge-driver.js","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"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"}
|
package/dist/core/worktree.js
CHANGED
|
@@ -306,7 +306,7 @@ export function worktreeSetup(targetPath, managerOpentasksPath, options = {}) {
|
|
|
306
306
|
}
|
|
307
307
|
// 7. Install merge driver
|
|
308
308
|
try {
|
|
309
|
-
installMergeDriver(
|
|
309
|
+
installMergeDriver(workerOpentasksDir);
|
|
310
310
|
}
|
|
311
311
|
catch {
|
|
312
312
|
// Non-fatal: merge driver installation might fail
|