@machina.ai/cell-cli 1.59.0-rc1 → 1.60.0-rc1

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.
Files changed (98) hide show
  1. package/dist/index.js +4 -14
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +3 -3
  4. package/dist/src/commands/extensions/validate.js +7 -3
  5. package/dist/src/commands/extensions/validate.js.map +1 -1
  6. package/dist/src/commands/extensions/validate.test.js +51 -0
  7. package/dist/src/commands/extensions/validate.test.js.map +1 -1
  8. package/dist/src/config/config.js +2 -0
  9. package/dist/src/config/config.js.map +1 -1
  10. package/dist/src/config/config.test.js +6 -1
  11. package/dist/src/config/config.test.js.map +1 -1
  12. package/dist/src/config/extension-manager.d.ts +25 -0
  13. package/dist/src/config/extension-manager.js +88 -10
  14. package/dist/src/config/extension-manager.js.map +1 -1
  15. package/dist/src/config/extension-manager.test.js +236 -1
  16. package/dist/src/config/extension-manager.test.js.map +1 -1
  17. package/dist/src/config/extension.test.js +10 -7
  18. package/dist/src/config/extension.test.js.map +1 -1
  19. package/dist/src/config/extensionRegistryClient.js +1 -1
  20. package/dist/src/config/extensionRegistryClient.js.map +1 -1
  21. package/dist/src/config/extensions/consent.js +98 -1
  22. package/dist/src/config/extensions/consent.js.map +1 -1
  23. package/dist/src/config/extensions/consent.test.js +89 -0
  24. package/dist/src/config/extensions/consent.test.js.map +1 -1
  25. package/dist/src/config/settings.js +20 -4
  26. package/dist/src/config/settings.js.map +1 -1
  27. package/dist/src/config/settings.test.js +99 -0
  28. package/dist/src/config/settings.test.js.map +1 -1
  29. package/dist/src/config/settingsSchema.d.ts +18 -0
  30. package/dist/src/config/settingsSchema.js +18 -0
  31. package/dist/src/config/settingsSchema.js.map +1 -1
  32. package/dist/src/generated/git-commit.d.ts +2 -2
  33. package/dist/src/generated/git-commit.js +2 -2
  34. package/dist/src/services/FeedbackService.integration.test.d.ts +6 -0
  35. package/dist/src/services/FeedbackService.integration.test.js +212 -0
  36. package/dist/src/services/FeedbackService.integration.test.js.map +1 -0
  37. package/dist/src/services/FeedbackService.js +62 -6
  38. package/dist/src/services/FeedbackService.js.map +1 -1
  39. package/dist/src/services/FeedbackService.test.d.ts +6 -0
  40. package/dist/src/services/FeedbackService.test.js +282 -0
  41. package/dist/src/services/FeedbackService.test.js.map +1 -0
  42. package/dist/src/test-utils/createExtension.d.ts +1 -1
  43. package/dist/src/test-utils/createExtension.js +15 -1
  44. package/dist/src/test-utils/createExtension.js.map +1 -1
  45. package/dist/src/ui/commands/statsCommand.js +17 -2
  46. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  47. package/dist/src/ui/commands/statsCommand.test.js +2 -0
  48. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  49. package/dist/src/ui/components/AboutBox.js +1 -1
  50. package/dist/src/ui/components/AboutBox.js.map +1 -1
  51. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  52. package/dist/src/ui/components/AsciiArt.js +6 -6
  53. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  54. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  55. package/dist/src/ui/components/ModelDialog.js +11 -13
  56. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  57. package/dist/src/ui/components/ModelDialog.test.js +28 -24
  58. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  59. package/dist/src/ui/components/ModelStatsDisplay.test.js +2 -2
  60. package/dist/src/ui/components/SessionSummaryDisplay.js +28 -2
  61. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  62. package/dist/src/ui/components/SessionSummaryDisplay.test.js +41 -2
  63. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  64. package/dist/src/ui/components/StatsDisplay.d.ts +2 -1
  65. package/dist/src/ui/components/StatsDisplay.js +66 -4
  66. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  67. package/dist/src/ui/components/StatsDisplay.test.js +120 -3
  68. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  69. package/dist/src/ui/contexts/SessionContext.js +12 -0
  70. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  71. package/dist/src/ui/contexts/SessionContext.test.js +5 -0
  72. package/dist/src/ui/contexts/SessionContext.test.js.map +1 -1
  73. package/dist/src/ui/hooks/useGeminiStream.js +17 -3
  74. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  75. package/dist/src/ui/hooks/useGeminiStream.test.js +7 -1
  76. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  77. package/dist/src/ui/hooks/useQuotaAndFallback.js +4 -1
  78. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  79. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +3 -3
  80. package/dist/src/ui/types.d.ts +2 -1
  81. package/dist/src/ui/types.js.map +1 -1
  82. package/dist/src/utils/handleAutoUpdate.test.js +2 -2
  83. package/dist/src/utils/processUtils.d.ts +7 -0
  84. package/dist/src/utils/processUtils.js +29 -0
  85. package/dist/src/utils/processUtils.js.map +1 -1
  86. package/dist/src/utils/processUtils.test.js +33 -2
  87. package/dist/src/utils/processUtils.test.js.map +1 -1
  88. package/dist/src/utils/sandbox.js +46 -6
  89. package/dist/src/utils/sandbox.js.map +1 -1
  90. package/dist/src/utils/sandbox.test.js +101 -0
  91. package/dist/src/utils/sandbox.test.js.map +1 -1
  92. package/dist/src/utils/sandboxUtils.d.ts +14 -0
  93. package/dist/src/utils/sandboxUtils.js +76 -0
  94. package/dist/src/utils/sandboxUtils.js.map +1 -1
  95. package/dist/src/utils/sandboxUtils.test.js +87 -1
  96. package/dist/src/utils/sandboxUtils.test.js.map +1 -1
  97. package/dist/tsconfig.tsbuildinfo +1 -1
  98. package/package.json +3 -3
@@ -76,6 +76,31 @@ export declare class ExtensionManager extends ExtensionLoader {
76
76
  enableExtension(name: string, scope: SettingScope): Promise<void>;
77
77
  }
78
78
  export declare function copyExtension(source: string, destination: string): Promise<void>;
79
+ /**
80
+ * Context file candidate path validation result.
81
+ */
82
+ export interface ContextPathValidationResult {
83
+ isValid: boolean;
84
+ resolvedPath?: string;
85
+ errorMessage?: string;
86
+ }
87
+ /**
88
+ * Validates a single context file candidate path against the extension root.
89
+ * Enforces directory boundary and path formatting by:
90
+ * - Requiring a non-empty string without null bytes.
91
+ * - Rejecting absolute paths (both POSIX and Windows formats).
92
+ * - Disallowing relative parent directory references (e.g. '..'), including URL-encoded variations.
93
+ * - Verifying that the resolved path stays strictly within the extension root directory.
94
+ */
95
+ export declare function validateContextFilePath(contextFileName: unknown, effectiveExtensionPath: string): ContextPathValidationResult;
96
+ /**
97
+ * Resolves and validates context file paths defined in an extension configuration.
98
+ * Hardens path resolution and enforces directory boundaries by:
99
+ * - Validating each candidate context file path using validateContextFilePath.
100
+ * - Logging a warning when an invalid path is detected and skipping loading that context file.
101
+ * - Returning only paths that exist on disk.
102
+ */
103
+ export declare function resolveContextFilePaths(config: ExtensionConfig, effectiveExtensionPath: string): string[];
79
104
  export declare function inferInstallMetadata(source: string, args?: {
80
105
  ref?: string;
81
106
  autoUpdate?: boolean;
@@ -507,15 +507,7 @@ Would you like to attempt to install via "git clone" instead?`))) {
507
507
  }
508
508
  }
509
509
  }
510
- const contextFiles = getContextFileNames(config)
511
- .map((contextFileName) => {
512
- const contextFilePath = path.join(effectiveExtensionPath, contextFileName);
513
- if (!isSubpath(effectiveExtensionPath, contextFilePath)) {
514
- throw new Error(`Invalid context file path: "${contextFileName}". Context files must be within the extension directory.`);
515
- }
516
- return contextFilePath;
517
- })
518
- .filter((contextFilePath) => fs.existsSync(contextFilePath));
510
+ const contextFiles = resolveContextFilePaths(config, effectiveExtensionPath);
519
511
  const hydrationContext = {
520
512
  extensionPath: effectiveExtensionPath,
521
513
  workspacePath: this.workspaceDir,
@@ -580,6 +572,16 @@ Would you like to attempt to install via "git clone" instead?`))) {
580
572
  for (const error of agentLoadResult.errors) {
581
573
  debugLogger.warn(`[ExtensionManager] Error loading agent from ${config.name}: ${error.message}`);
582
574
  }
575
+ let plan = config.plan;
576
+ if (plan?.directory) {
577
+ if (typeof plan.directory !== 'string' ||
578
+ path.isAbsolute(plan.directory) ||
579
+ path.win32.isAbsolute(plan.directory) ||
580
+ plan.directory.includes('..')) {
581
+ debugLogger.warn(`[ExtensionManager] Invalid plan.directory in extension "${config.name}": "${plan.directory}". Relative parent navigation and absolute paths are not allowed.`);
582
+ plan = undefined;
583
+ }
584
+ }
583
585
  return {
584
586
  name: config.name,
585
587
  version: config.version,
@@ -599,7 +601,7 @@ Would you like to attempt to install via "git clone" instead?`))) {
599
601
  themes: config.themes,
600
602
  rules,
601
603
  checkers,
602
- plan: config.plan,
604
+ plan,
603
605
  };
604
606
  }
605
607
  catch (e) {
@@ -825,6 +827,82 @@ function getContextFileNames(config) {
825
827
  }
826
828
  return config.contextFileName;
827
829
  }
830
+ /**
831
+ * Validates a single context file candidate path against the extension root.
832
+ * Enforces directory boundary and path formatting by:
833
+ * - Requiring a non-empty string without null bytes.
834
+ * - Rejecting absolute paths (both POSIX and Windows formats).
835
+ * - Disallowing relative parent directory references (e.g. '..'), including URL-encoded variations.
836
+ * - Verifying that the resolved path stays strictly within the extension root directory.
837
+ */
838
+ export function validateContextFilePath(contextFileName, effectiveExtensionPath) {
839
+ if (typeof contextFileName !== 'string' || !contextFileName.trim()) {
840
+ return {
841
+ isValid: false,
842
+ errorMessage: 'expected a non-empty string.',
843
+ };
844
+ }
845
+ if (contextFileName.includes('\0')) {
846
+ return {
847
+ isValid: false,
848
+ errorMessage: 'null bytes are not allowed.',
849
+ };
850
+ }
851
+ // Reject absolute paths upfront (both POSIX and Windows formats)
852
+ if (path.isAbsolute(contextFileName) ||
853
+ path.win32.isAbsolute(contextFileName)) {
854
+ return {
855
+ isValid: false,
856
+ errorMessage: 'Absolute paths are not allowed.',
857
+ };
858
+ }
859
+ // Disallow relative parent directory references (e.g. ..)
860
+ let decodedFileName = contextFileName;
861
+ try {
862
+ decodedFileName = decodeURIComponent(contextFileName);
863
+ }
864
+ catch {
865
+ debugLogger.debug(`[ExtensionManager] Could not decode URI component in contextFileName: "${contextFileName}". Proceeding with undecoded name.`);
866
+ }
867
+ if (contextFileName.includes('..') || decodedFileName.includes('..')) {
868
+ return {
869
+ isValid: false,
870
+ errorMessage: 'Relative parent directory references ("..") are not allowed.',
871
+ };
872
+ }
873
+ const resolvedExtensionRoot = path.resolve(effectiveExtensionPath);
874
+ const contextFilePath = path.resolve(resolvedExtensionRoot, contextFileName);
875
+ // Verify that contextFilePath is strictly within resolvedExtensionRoot
876
+ if (!isSubpath(resolvedExtensionRoot, contextFilePath)) {
877
+ return {
878
+ isValid: false,
879
+ errorMessage: `escapes the extension directory boundary ("${resolvedExtensionRoot}").`,
880
+ };
881
+ }
882
+ return {
883
+ isValid: true,
884
+ resolvedPath: contextFilePath,
885
+ };
886
+ }
887
+ /**
888
+ * Resolves and validates context file paths defined in an extension configuration.
889
+ * Hardens path resolution and enforces directory boundaries by:
890
+ * - Validating each candidate context file path using validateContextFilePath.
891
+ * - Logging a warning when an invalid path is detected and skipping loading that context file.
892
+ * - Returning only paths that exist on disk.
893
+ */
894
+ export function resolveContextFilePaths(config, effectiveExtensionPath) {
895
+ return getContextFileNames(config)
896
+ .map((contextFileName) => {
897
+ const validation = validateContextFilePath(contextFileName, effectiveExtensionPath);
898
+ if (!validation.isValid) {
899
+ debugLogger.warn(`[ExtensionManager] Invalid contextFileName: "${contextFileName}" in extension "${config.name}". ${validation.errorMessage}`);
900
+ return null;
901
+ }
902
+ return validation.resolvedPath;
903
+ })
904
+ .filter((contextFilePath) => contextFilePath !== null && fs.existsSync(contextFilePath));
905
+ }
828
906
  function validateName(name) {
829
907
  if (!/^[a-zA-Z0-9-]+$/.test(name)) {
830
908
  throw new Error(`Invalid extension name: "${name}". Only letters (a-z, A-Z), numbers (0-9), and dashes (-) are allowed.`);
@@ -1 +1 @@
1
- {"version":3,"file":"extension-manager.js","sourceRoot":"","sources":["../../../src/config/extension-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-manager.js","sourceRoot":"","sources":["../../../src/config/extension-manager.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
7
  import * as fs from 'node:fs';
8
8
  import * as os from 'node:os';
9
9
  import * as path from 'node:path';
10
- import { ExtensionManager } from './extension-manager.js';
10
+ import { ExtensionManager, resolveContextFilePaths, validateContextFilePath, } from './extension-manager.js';
11
11
  import { createTestMergedSettings } from './settings.js';
12
12
  import { createExtension } from '../test-utils/createExtension.js';
13
13
  import { EXTENSIONS_DIRECTORY_NAME } from './extensions/variables.js';
@@ -426,5 +426,240 @@ describe('ExtensionManager', () => {
426
426
  expect(themeManager.getCustomThemeNames()).not.toContain('MyTheme (disabled-ext)');
427
427
  });
428
428
  });
429
+ describe('contextFileName directory boundary validation and path resolution', () => {
430
+ it('loads legitimate relative paths within the extension directory (e.g. context/GEMINI.md, ./GEMINI.md)', async () => {
431
+ const extDir = path.join(userExtensionsDir, 'legit-ext');
432
+ const contextDir = path.join(extDir, 'context');
433
+ fs.mkdirSync(contextDir, { recursive: true });
434
+ fs.writeFileSync(path.join(contextDir, 'GEMINI.md'), 'context content');
435
+ fs.writeFileSync(path.join(extDir, 'GEMINI.md'), 'root context content');
436
+ fs.writeFileSync(path.join(extDir, 'DOCS.md'), 'docs content');
437
+ fs.writeFileSync(path.join(extDir, 'gemini-extension.json'), JSON.stringify({
438
+ name: 'legit-ext',
439
+ version: '1.0.0',
440
+ contextFileName: ['context/GEMINI.md', './GEMINI.md', 'DOCS.md'],
441
+ }));
442
+ fs.writeFileSync(path.join(extDir, 'metadata.json'), JSON.stringify({ type: 'local', source: extDir }));
443
+ const extensions = await extensionManager.loadExtensions();
444
+ expect(extensions).toHaveLength(1);
445
+ const ext = extensions[0];
446
+ expect(ext.contextFiles).toEqual([
447
+ path.join(extDir, 'context', 'GEMINI.md'),
448
+ path.join(extDir, 'GEMINI.md'),
449
+ path.join(extDir, 'DOCS.md'),
450
+ ]);
451
+ });
452
+ it('rejects relative parent directory navigation using .. (e.g. ../../../../etc/passwd, ../secret.txt) and skips loading the invalid context file', async () => {
453
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
454
+ const extDir = path.join(userExtensionsDir, 'relative-parent-ext');
455
+ fs.mkdirSync(extDir, { recursive: true });
456
+ fs.writeFileSync(path.join(extDir, 'valid.md'), 'valid content');
457
+ fs.writeFileSync(path.join(extDir, 'gemini-extension.json'), JSON.stringify({
458
+ name: 'relative-parent-ext',
459
+ version: '1.0.0',
460
+ contextFileName: [
461
+ 'valid.md',
462
+ '../../../../etc/passwd',
463
+ '../secret.txt',
464
+ 'subdir/../../escaped.txt',
465
+ '..\\secret.txt',
466
+ '%2e%2e%2fsecret.txt',
467
+ ],
468
+ }));
469
+ fs.writeFileSync(path.join(extDir, 'metadata.json'), JSON.stringify({ type: 'local', source: extDir }));
470
+ const extensions = await extensionManager.loadExtensions();
471
+ expect(extensions).toHaveLength(1);
472
+ const ext = extensions[0];
473
+ // Only valid.md should be loaded; all invalid path attempts should be skipped
474
+ expect(ext.contextFiles).toEqual([path.join(extDir, 'valid.md')]);
475
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('../../../../etc/passwd'));
476
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('../secret.txt'));
477
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('subdir/../../escaped.txt'));
478
+ warnSpy.mockRestore();
479
+ });
480
+ it('rejects absolute paths (e.g. /etc/hosts or C:\\Windows\\System32) and skips loading the invalid context file', async () => {
481
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
482
+ const extDir = path.join(userExtensionsDir, 'absolute-ext');
483
+ fs.mkdirSync(extDir, { recursive: true });
484
+ fs.writeFileSync(path.join(extDir, 'valid.md'), 'valid content');
485
+ fs.writeFileSync(path.join(extDir, 'gemini-extension.json'), JSON.stringify({
486
+ name: 'absolute-ext',
487
+ version: '1.0.0',
488
+ contextFileName: [
489
+ 'valid.md',
490
+ '/etc/hosts',
491
+ '/etc/passwd',
492
+ 'C:\\Windows\\System32',
493
+ 'C:/Windows/System32',
494
+ '\\\\server\\share\\secret.txt',
495
+ ],
496
+ }));
497
+ fs.writeFileSync(path.join(extDir, 'metadata.json'), JSON.stringify({ type: 'local', source: extDir }));
498
+ const extensions = await extensionManager.loadExtensions();
499
+ expect(extensions).toHaveLength(1);
500
+ const ext = extensions[0];
501
+ expect(ext.contextFiles).toEqual([path.join(extDir, 'valid.md')]);
502
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('/etc/hosts'));
503
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('C:\\Windows\\System32'));
504
+ warnSpy.mockRestore();
505
+ });
506
+ it('skips non-string, empty, or whitespace-only contextFileName entries', async () => {
507
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
508
+ const extDir = path.join(userExtensionsDir, 'empty-ext');
509
+ fs.mkdirSync(extDir, { recursive: true });
510
+ fs.writeFileSync(path.join(extDir, 'valid.md'), 'valid content');
511
+ fs.writeFileSync(path.join(extDir, 'gemini-extension.json'), JSON.stringify({
512
+ name: 'empty-ext',
513
+ version: '1.0.0',
514
+ contextFileName: ['valid.md', '', ' ', null, 123],
515
+ }));
516
+ fs.writeFileSync(path.join(extDir, 'metadata.json'), JSON.stringify({ type: 'local', source: extDir }));
517
+ const extensions = await extensionManager.loadExtensions();
518
+ expect(extensions).toHaveLength(1);
519
+ expect(extensions[0].contextFiles).toEqual([
520
+ path.join(extDir, 'valid.md'),
521
+ ]);
522
+ warnSpy.mockRestore();
523
+ });
524
+ it('rejects context file path with null byte injection', async () => {
525
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
526
+ const extDir = path.join(userExtensionsDir, 'nullbyte-ext');
527
+ fs.mkdirSync(extDir, { recursive: true });
528
+ fs.writeFileSync(path.join(extDir, 'gemini-extension.json'), JSON.stringify({
529
+ name: 'nullbyte-ext',
530
+ version: '1.0.0',
531
+ contextFileName: 'context.md\0/etc/hosts',
532
+ }));
533
+ fs.writeFileSync(path.join(extDir, 'metadata.json'), JSON.stringify({ type: 'local', source: extDir }));
534
+ const extensions = await extensionManager.loadExtensions();
535
+ expect(extensions).toHaveLength(1);
536
+ expect(extensions[0].contextFiles).toHaveLength(0);
537
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('null bytes are not allowed'));
538
+ warnSpy.mockRestore();
539
+ });
540
+ it('sanitizes plan.directory against relative parent directory navigation', async () => {
541
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
542
+ const extDir = path.join(userExtensionsDir, 'plan-ext');
543
+ fs.mkdirSync(extDir, { recursive: true });
544
+ fs.writeFileSync(path.join(extDir, 'gemini-extension.json'), JSON.stringify({
545
+ name: 'plan-ext',
546
+ version: '1.0.0',
547
+ plan: {
548
+ directory: '../../../../etc',
549
+ },
550
+ }));
551
+ fs.writeFileSync(path.join(extDir, 'metadata.json'), JSON.stringify({ type: 'local', source: extDir }));
552
+ const extensions = await extensionManager.loadExtensions();
553
+ expect(extensions).toHaveLength(1);
554
+ expect(extensions[0].plan).toBeUndefined();
555
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Invalid plan.directory in extension "plan-ext"'));
556
+ warnSpy.mockRestore();
557
+ });
558
+ describe('resolveContextFilePaths unit tests', () => {
559
+ it('returns empty array when context files do not exist', () => {
560
+ const config = {
561
+ name: 'test',
562
+ version: '1.0.0',
563
+ contextFileName: 'non-existent.md',
564
+ };
565
+ const result = resolveContextFilePaths(config, tempWorkspaceDir);
566
+ expect(result).toEqual([]);
567
+ });
568
+ it('returns resolved paths for existing valid context files', () => {
569
+ const testFile = path.join(tempWorkspaceDir, 'valid.md');
570
+ fs.writeFileSync(testFile, 'test');
571
+ const config = {
572
+ name: 'test',
573
+ version: '1.0.0',
574
+ contextFileName: 'valid.md',
575
+ };
576
+ const result = resolveContextFilePaths(config, tempWorkspaceDir);
577
+ expect(result).toEqual([testFile]);
578
+ });
579
+ it('filters out relative parent directory paths even if target file exists on disk', () => {
580
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
581
+ const outsideFile = path.join(tempHomeDir, 'outside-secret.txt');
582
+ fs.writeFileSync(outsideFile, 'secret');
583
+ const extDir = path.join(tempHomeDir, 'ext-sub');
584
+ fs.mkdirSync(extDir, { recursive: true });
585
+ const config = {
586
+ name: 'test',
587
+ version: '1.0.0',
588
+ contextFileName: '../outside-secret.txt',
589
+ };
590
+ const result = resolveContextFilePaths(config, extDir);
591
+ expect(result).toEqual([]);
592
+ expect(warnSpy).toHaveBeenCalled();
593
+ warnSpy.mockRestore();
594
+ });
595
+ it('loads context file with percent characters without skipping it', () => {
596
+ const testFile = path.join(tempWorkspaceDir, '100%_complete.md');
597
+ fs.writeFileSync(testFile, '100% completed content');
598
+ const config = {
599
+ name: 'test',
600
+ version: '1.0.0',
601
+ contextFileName: '100%_complete.md',
602
+ };
603
+ const result = resolveContextFilePaths(config, tempWorkspaceDir);
604
+ expect(result).toEqual([testFile]);
605
+ });
606
+ });
607
+ describe('validateContextFilePath unit tests', () => {
608
+ it('validates standard relative context file path', () => {
609
+ const result = validateContextFilePath('GEMINI.md', tempWorkspaceDir);
610
+ expect(result.isValid).toBe(true);
611
+ expect(result.resolvedPath).toBe(path.resolve(tempWorkspaceDir, 'GEMINI.md'));
612
+ });
613
+ it('validates context file path in nested subdirectory', () => {
614
+ const result = validateContextFilePath('docs/context.md', tempWorkspaceDir);
615
+ expect(result.isValid).toBe(true);
616
+ expect(result.resolvedPath).toBe(path.resolve(tempWorkspaceDir, 'docs/context.md'));
617
+ });
618
+ it('validates context file path containing percent characters', () => {
619
+ const result = validateContextFilePath('progress_100%_report.md', tempWorkspaceDir);
620
+ expect(result.isValid).toBe(true);
621
+ expect(result.resolvedPath).toBe(path.resolve(tempWorkspaceDir, 'progress_100%_report.md'));
622
+ });
623
+ it('rejects relative parent directory navigation', () => {
624
+ const result = validateContextFilePath('../secret.txt', tempWorkspaceDir);
625
+ expect(result.isValid).toBe(false);
626
+ expect(result.errorMessage).toContain('Relative parent directory references ("..") are not allowed.');
627
+ });
628
+ it('rejects URL-encoded relative parent directory navigation', () => {
629
+ const resultLower = validateContextFilePath('%2e%2e/secret.txt', tempWorkspaceDir);
630
+ expect(resultLower.isValid).toBe(false);
631
+ expect(resultLower.errorMessage).toContain('Relative parent directory references ("..") are not allowed.');
632
+ const resultUpper = validateContextFilePath('%2E%2E/secret.txt', tempWorkspaceDir);
633
+ expect(resultUpper.isValid).toBe(false);
634
+ expect(resultUpper.errorMessage).toContain('Relative parent directory references ("..") are not allowed.');
635
+ });
636
+ it('rejects POSIX and Windows absolute paths', () => {
637
+ const resultPosix = validateContextFilePath('/etc/hosts', tempWorkspaceDir);
638
+ expect(resultPosix.isValid).toBe(false);
639
+ expect(resultPosix.errorMessage).toContain('Absolute paths are not allowed.');
640
+ const resultWin = validateContextFilePath('C:\\Windows\\System32', tempWorkspaceDir);
641
+ expect(resultWin.isValid).toBe(false);
642
+ expect(resultWin.errorMessage).toContain('Absolute paths are not allowed.');
643
+ });
644
+ it('rejects null bytes', () => {
645
+ const result = validateContextFilePath('context.md\0outside.txt', tempWorkspaceDir);
646
+ expect(result.isValid).toBe(false);
647
+ expect(result.errorMessage).toContain('null bytes are not allowed.');
648
+ });
649
+ it('rejects empty or non-string inputs', () => {
650
+ expect(validateContextFilePath('', tempWorkspaceDir).isValid).toBe(false);
651
+ expect(validateContextFilePath(' ', tempWorkspaceDir).isValid).toBe(false);
652
+ expect(validateContextFilePath(null, tempWorkspaceDir).isValid).toBe(false);
653
+ expect(validateContextFilePath(123, tempWorkspaceDir).isValid).toBe(false);
654
+ });
655
+ it('validates context files when root path casing varies on case-insensitive platforms', () => {
656
+ const lowerRoot = tempWorkspaceDir.toLowerCase();
657
+ const result = validateContextFilePath('GEMINI.md', lowerRoot);
658
+ if (process.platform === 'darwin' || process.platform === 'win32') {
659
+ expect(result.isValid).toBe(true);
660
+ }
661
+ });
662
+ });
663
+ });
429
664
  });
430
665
  //# sourceMappingURL=extension-manager.test.js.map