Skip to content

Conversation

@jmacAJ
Copy link
Contributor

@jmacAJ jmacAJ commented Dec 22, 2025

This pull request refactors the Redis key management logic in the Cortex File Handler to simplify scoping, improve security isolation, and clarify migration from legacy key formats. The main changes remove the concept of "scoped hashes" in favor of storing the context scoping at the Redis map level, ensure context isolation for file metadata, and update related tests and documentation accordingly.

Redis Key Management Refactor and Security Improvements:

  • Removed the getScopedHashKey function and the concept of "scoped hashes," so context scoping is now handled at the Redis map level (e.g., FileStoreMap:ctx:<contextId>) rather than by modifying the hash key itself. [1] [2] [3]
  • Updated the getFileStoreMap function to ensure that context-scoped lookups never fall back to unscoped or legacy keys, enforcing strict security isolation between contexts. [1] [2] [3] [4]
  • Refactored the removeFromFileStoreMap function to remove keys based on hash and contextId parameters, eliminating legacy logic for extracting base hashes from "scoped" keys. [1] [2]

Test and Documentation Updates:

  • Updated tests to reflect the new key management approach, removing references to getScopedHashKey, and ensuring tests use the correct parameters for context-scoped operations. [1] [2] [3] [4]
  • Improved documentation and comments throughout the code and tests to clarify the new key formats and migration behavior.

Minor Enhancements and Version Bump:

  • Added logic to reconstruct missing filenames from URLs and ensure hashes are set in the upload handler, improving robustness of file metadata responses. [1] [2]
  • Bumped the package version to 2.8.1 to reflect these changes. [1] [2]

- Added logic to reconstruct missing filenames from URLs in the CortexFileHandler, improving file upload responses.
- Ensured that hash values are set correctly when missing, enhancing data integrity.
- Refactored Redis key management to eliminate the use of scoped hash keys, improving security and clarity in key handling.
- Updated tests to reflect changes in key management and ensure proper functionality across various scenarios.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request refactors Redis key management in the Cortex File Handler to improve security isolation and simplify the scoping mechanism. The key change moves from hash-level scoping (e.g., hash:ctx:contextId) to Redis map-level scoping (e.g., storing hashes in FileStoreMap:ctx:contextId maps), ensuring strict context isolation and preventing cross-context data access.

  • Removed the getScopedHashKey helper function and all references to "scoped hash" keys
  • Enforced security isolation: context-scoped lookups never fall back to unscoped or legacy keys
  • Simplified the removeFromFileStoreMap function to work with hash and contextId parameters directly
  • Added filename reconstruction and hash enrichment logic in the upload handler to ensure complete metadata
  • Updated executeWorkspace.js to properly spread all pathway arguments (including contextId) before overriding specific fields

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
server/executeWorkspace.js Improved parameter passing by spreading all pathwayArgs first (including contextId), then overriding specific fields; added fallback for systemPrompt
helper-apps/cortex-file-handler/src/redis.js Removed getScopedHashKey function; enforced strict context isolation in getFileStoreMap; simplified removeFromFileStoreMap to use hash + contextId parameters
helper-apps/cortex-file-handler/src/index.js Added logic to reconstruct missing filenames from URLs and ensure hash field is set in upload responses
helper-apps/cortex-file-handler/tests/setRetention.test.js Removed import of getScopedHashKey function
helper-apps/cortex-file-handler/tests/redisMigration.test.js Updated tests to use hash + contextId parameters instead of getScopedHashKey; removed getScopedHashKey tests; updated documentation
helper-apps/cortex-file-handler/tests/deleteOperations.test.js Simplified test to remove references to getScopedHashKey and scoped key concepts
helper-apps/cortex-file-handler/package.json Bumped version from 2.8.0 to 2.8.1
helper-apps/cortex-file-handler/package-lock.json Updated version to match package.json
Files not reviewed (1)
  • helper-apps/cortex-file-handler/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

// Only allow fallback for unscoped keys (not context-scoped)
// Context-scoped keys are security-isolated and must match exactly
if (baseHash && !String(baseHash).includes(":")) {
if (hash && !String(hash).includes(":")) {
Copy link

Copilot AI Dec 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This use of variable 'hash' always evaluates to true.

Suggested change
if (hash && !String(hash).includes(":")) {
if (!String(hash).includes(":")) {

Copilot uses AI. Check for mistakes.
@jmacAJ jmacAJ merged commit b39d527 into main Dec 23, 2025
7 checks passed
@jmacAJ jmacAJ deleted the jmac_fix_workspace branch December 23, 2025 02:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants