sqlew 4.1.1 → 4.1.2

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 (117) hide show
  1. package/CHANGELOG.md +1830 -1817
  2. package/dist/database/initialization/schema-version.js +1 -1
  3. package/dist/database/initialization/schema-version.js.map +1 -1
  4. package/dist/database/migrations/v4/20251126000000_v4_bootstrap.js +32 -32
  5. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.d.ts +14 -0
  6. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.d.ts.map +1 -0
  7. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.js +201 -0
  8. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.js.map +1 -0
  9. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.d.ts +12 -0
  10. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.d.ts.map +1 -0
  11. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.js +61 -0
  12. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.js.map +1 -0
  13. package/dist/server/setup.d.ts.map +1 -1
  14. package/dist/server/setup.js +28 -6
  15. package/dist/server/setup.js.map +1 -1
  16. package/dist/tests/database/sql-dump/table-ordering.test.js +6 -1
  17. package/dist/tests/database/sql-dump/table-ordering.test.js.map +1 -1
  18. package/dist/tests/docker/native/constraint-operations.test.js +74 -137
  19. package/dist/tests/docker/native/constraint-operations.test.js.map +1 -1
  20. package/dist/tests/docker/native/decision-operations.test.js +52 -40
  21. package/dist/tests/docker/native/decision-operations.test.js.map +1 -1
  22. package/dist/tests/docker/native/help-system.test.d.ts +3 -2
  23. package/dist/tests/docker/native/help-system.test.d.ts.map +1 -1
  24. package/dist/tests/docker/native/help-system.test.js +90 -80
  25. package/dist/tests/docker/native/help-system.test.js.map +1 -1
  26. package/dist/tests/docker/native/suggest-tool.test.d.ts +2 -2
  27. package/dist/tests/docker/native/suggest-tool.test.js +130 -63
  28. package/dist/tests/docker/native/suggest-tool.test.js.map +1 -1
  29. package/dist/tests/docker/native/task-operations.test.js +9 -19
  30. package/dist/tests/docker/native/task-operations.test.js.map +1 -1
  31. package/dist/tests/docker/native/test-harness.d.ts.map +1 -1
  32. package/dist/tests/docker/native/test-harness.js +6 -5
  33. package/dist/tests/docker/native/test-harness.js.map +1 -1
  34. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js +7 -8
  35. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js.map +1 -1
  36. package/dist/tests/feature/decision/context-modular.test.js +1 -3
  37. package/dist/tests/feature/decision/context-modular.test.js.map +1 -1
  38. package/dist/tests/feature/help/help-system.test.d.ts +1 -13
  39. package/dist/tests/feature/help/help-system.test.d.ts.map +1 -1
  40. package/dist/tests/feature/help/help-system.test.js +107 -331
  41. package/dist/tests/feature/help/help-system.test.js.map +1 -1
  42. package/dist/tests/feature/task/auto-pruning-decision-link.test.js +2 -4
  43. package/dist/tests/feature/task/auto-pruning-decision-link.test.js.map +1 -1
  44. package/dist/tests/integration/all-features.standalone.js +1 -3
  45. package/dist/tests/integration/all-features.standalone.js.map +1 -1
  46. package/dist/tests/migrations/test-all-versions-real.js +2 -4
  47. package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
  48. package/dist/tests/migrations/test-all-versions.js +3 -7
  49. package/dist/tests/migrations/test-all-versions.js.map +1 -1
  50. package/dist/tests/unit/universal-knex.test.js +3 -0
  51. package/dist/tests/unit/universal-knex.test.js.map +1 -1
  52. package/dist/tests/unit/utils/config-loader.test.js +130 -191
  53. package/dist/tests/unit/utils/config-loader.test.js.map +1 -1
  54. package/dist/tests/unit/utils/project-detector.test.js +24 -0
  55. package/dist/tests/unit/utils/project-detector.test.js.map +1 -1
  56. package/dist/tests/unit/validation/parameter-validation.test.js +2 -2
  57. package/dist/tests/unit/validation/parameter-validation.test.js.map +1 -1
  58. package/dist/tests/unit/validation/policy-validation.test.js +1 -3
  59. package/dist/tests/unit/validation/policy-validation.test.js.map +1 -1
  60. package/dist/tools/files/help/example.js +8 -8
  61. package/dist/tools/files/help/example.js.map +1 -1
  62. package/dist/tools/files/help/help.js +4 -4
  63. package/dist/tools/files/help/help.js.map +1 -1
  64. package/dist/tools/files/internal/validation.d.ts.map +1 -1
  65. package/dist/tools/files/internal/validation.js +1 -2
  66. package/dist/tools/files/internal/validation.js.map +1 -1
  67. package/dist/tools/help-queries.d.ts.map +1 -1
  68. package/dist/tools/help-queries.js +57 -27
  69. package/dist/tools/help-queries.js.map +1 -1
  70. package/dist/tools/suggest/actions/by-tags.d.ts.map +1 -1
  71. package/dist/tools/suggest/actions/by-tags.js +3 -1
  72. package/dist/tools/suggest/actions/by-tags.js.map +1 -1
  73. package/dist/tools/suggest/help/constraint-help.js +2 -2
  74. package/dist/tools/suggest/help/constraint-help.js.map +1 -1
  75. package/dist/tools/tasks/help/example.d.ts.map +1 -1
  76. package/dist/tools/tasks/help/example.js +10 -0
  77. package/dist/tools/tasks/help/example.js.map +1 -1
  78. package/dist/tools/tasks/help/help.d.ts.map +1 -1
  79. package/dist/tools/tasks/help/help.js +10 -0
  80. package/dist/tools/tasks/help/help.js.map +1 -1
  81. package/dist/tools/use_case/actions/search.js +5 -5
  82. package/dist/tools/use_case/actions/search.js.map +1 -1
  83. package/dist/tools/use_case/help/example.d.ts +2 -7
  84. package/dist/tools/use_case/help/example.d.ts.map +1 -1
  85. package/dist/tools/use_case/help/example.js +24 -37
  86. package/dist/tools/use_case/help/example.js.map +1 -1
  87. package/dist/tools/use_case/help/help.js +1 -1
  88. package/dist/tools/use_case/help/help.js.map +1 -1
  89. package/dist/types.d.ts +2 -2
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/utils/action-specs/decision-specs.d.ts.map +1 -1
  92. package/dist/utils/action-specs/decision-specs.js +2 -3
  93. package/dist/utils/action-specs/decision-specs.js.map +1 -1
  94. package/dist/utils/action-specs/file-specs.d.ts.map +1 -1
  95. package/dist/utils/action-specs/file-specs.js +4 -6
  96. package/dist/utils/action-specs/file-specs.js.map +1 -1
  97. package/dist/utils/db-aggregations.d.ts.map +1 -1
  98. package/dist/utils/db-aggregations.js +44 -1
  99. package/dist/utils/db-aggregations.js.map +1 -1
  100. package/dist/utils/project-detector.js +21 -6
  101. package/dist/utils/project-detector.js.map +1 -1
  102. package/dist/utils/suggestion-scorer.d.ts.map +1 -1
  103. package/dist/utils/suggestion-scorer.js +5 -0
  104. package/dist/utils/suggestion-scorer.js.map +1 -1
  105. package/package.json +87 -123
  106. package/dist/tests/feature/vcs/git-aware-completion.test.d.ts +0 -6
  107. package/dist/tests/feature/vcs/git-aware-completion.test.d.ts.map +0 -1
  108. package/dist/tests/feature/vcs/git-aware-completion.test.js +0 -197
  109. package/dist/tests/feature/vcs/git-aware-completion.test.js.map +0 -1
  110. package/dist/tests/feature/vcs/two-step-git-completion.test.d.ts +0 -6
  111. package/dist/tests/feature/vcs/two-step-git-completion.test.d.ts.map +0 -1
  112. package/dist/tests/feature/vcs/two-step-git-completion.test.js +0 -305
  113. package/dist/tests/feature/vcs/two-step-git-completion.test.js.map +0 -1
  114. package/dist/tests/feature/vcs/vcs-staging.test.d.ts +0 -6
  115. package/dist/tests/feature/vcs/vcs-staging.test.d.ts.map +0 -1
  116. package/dist/tests/feature/vcs/vcs-staging.test.js +0 -142
  117. package/dist/tests/feature/vcs/vcs-staging.test.js.map +0 -1
@@ -1,142 +0,0 @@
1
- /**
2
- * VCS Staging Detection Tests (v3.5.2)
3
- * Tests for getStagedFiles() method across Git, Mercurial, and SVN adapters
4
- */
5
- import { describe, it, before, after } from 'node:test';
6
- import assert from 'node:assert/strict';
7
- import { mkdirSync, rmSync, existsSync, writeFileSync } from 'fs';
8
- import { join } from 'path';
9
- import { execSync } from 'child_process';
10
- import { GitAdapter, MercurialAdapter, SVNAdapter } from '../../../utils/vcs-adapter.js';
11
- const TEST_DIR = join(process.cwd(), 'test-vcs-staging');
12
- // Helper to clean up test directory
13
- function cleanupTestDir() {
14
- if (existsSync(TEST_DIR)) {
15
- rmSync(TEST_DIR, { recursive: true, force: true });
16
- }
17
- }
18
- describe('VCS Staging Detection Tests', () => {
19
- before(() => {
20
- cleanupTestDir();
21
- mkdirSync(TEST_DIR, { recursive: true });
22
- });
23
- after(() => {
24
- cleanupTestDir();
25
- });
26
- describe('GitAdapter - getStagedFiles()', () => {
27
- let gitDir;
28
- let adapter;
29
- before(() => {
30
- gitDir = join(TEST_DIR, 'git-test');
31
- mkdirSync(gitDir, { recursive: true });
32
- // Initialize git repo
33
- execSync('git init', { cwd: gitDir });
34
- execSync('git config user.email "test@example.com"', { cwd: gitDir });
35
- execSync('git config user.name "Test User"', { cwd: gitDir });
36
- adapter = new GitAdapter(gitDir);
37
- });
38
- it('should return empty array when no files are staged', async () => {
39
- const stagedFiles = await adapter.getStagedFiles();
40
- assert.deepStrictEqual(stagedFiles, []);
41
- });
42
- it('should detect staged files', async () => {
43
- // Create and stage files
44
- writeFileSync(join(gitDir, 'file1.txt'), 'content1');
45
- writeFileSync(join(gitDir, 'file2.txt'), 'content2');
46
- execSync('git add file1.txt file2.txt', { cwd: gitDir });
47
- const stagedFiles = await adapter.getStagedFiles();
48
- assert.strictEqual(stagedFiles.length, 2);
49
- assert.ok(stagedFiles.includes('file1.txt'));
50
- assert.ok(stagedFiles.includes('file2.txt'));
51
- });
52
- it('should return only staged files, not modified unstaged files', async () => {
53
- // Commit previously staged files
54
- execSync('git commit -m "Initial commit"', { cwd: gitDir });
55
- // Create new file but don't stage it
56
- writeFileSync(join(gitDir, 'file3.txt'), 'content3');
57
- // Modify existing file but don't stage it
58
- writeFileSync(join(gitDir, 'file1.txt'), 'modified content');
59
- const stagedFiles = await adapter.getStagedFiles();
60
- // Should be empty since nothing is staged
61
- assert.deepStrictEqual(stagedFiles, []);
62
- });
63
- it('should detect partially staged files', async () => {
64
- // Stage only file3
65
- execSync('git add file3.txt', { cwd: gitDir });
66
- const stagedFiles = await adapter.getStagedFiles();
67
- assert.strictEqual(stagedFiles.length, 1);
68
- assert.strictEqual(stagedFiles[0], 'file3.txt');
69
- });
70
- it('should handle non-git directory gracefully', async () => {
71
- const nonGitAdapter = new GitAdapter(TEST_DIR);
72
- const stagedFiles = await nonGitAdapter.getStagedFiles();
73
- // When running inside a git repo (e.g., during development with uncommitted v3.9.0 changes),
74
- // filter to only files within the test directory to avoid false positives
75
- const testDirRelative = 'test-vcs-staging';
76
- const filteredFiles = stagedFiles.filter(f => f.startsWith(testDirRelative));
77
- // Should return empty array for test directory files (not throw)
78
- assert.deepStrictEqual(filteredFiles, []);
79
- assert.ok(Array.isArray(stagedFiles)); // Verify it's an array and doesn't throw
80
- });
81
- });
82
- describe('SVNAdapter - getStagedFiles()', () => {
83
- it('should return modified and added files as "staged"', async () => {
84
- // SVN doesn't have staging - all modified/added files are considered "staged"
85
- const adapter = new SVNAdapter(TEST_DIR);
86
- // Mock SVN status output
87
- // In real scenario, this would query actual SVN repo
88
- // For now, test that it returns empty for non-SVN directory
89
- const stagedFiles = await adapter.getStagedFiles();
90
- // Should return empty for non-SVN directory
91
- assert.ok(Array.isArray(stagedFiles));
92
- });
93
- it('should handle non-SVN directory gracefully', async () => {
94
- const adapter = new SVNAdapter(TEST_DIR);
95
- const stagedFiles = await adapter.getStagedFiles();
96
- // Should return empty array, not throw
97
- assert.deepStrictEqual(stagedFiles, []);
98
- });
99
- });
100
- describe('MercurialAdapter - getStagedFiles()', () => {
101
- it('should return modified, added, and removed files as "staged"', async () => {
102
- // Mercurial doesn't have staging - all modified/added/removed files are considered "staged"
103
- const adapter = new MercurialAdapter(TEST_DIR);
104
- const stagedFiles = await adapter.getStagedFiles();
105
- // Should return empty for non-Mercurial directory
106
- assert.ok(Array.isArray(stagedFiles));
107
- });
108
- it('should handle non-Mercurial directory gracefully', async () => {
109
- const adapter = new MercurialAdapter(TEST_DIR);
110
- const stagedFiles = await adapter.getStagedFiles();
111
- // Should return empty array, not throw
112
- assert.deepStrictEqual(stagedFiles, []);
113
- });
114
- });
115
- describe('Edge Cases', () => {
116
- it('should handle empty repository', async () => {
117
- const emptyGitDir = join(TEST_DIR, 'empty-git');
118
- mkdirSync(emptyGitDir, { recursive: true });
119
- execSync('git init', { cwd: emptyGitDir });
120
- execSync('git config user.email "test@example.com"', { cwd: emptyGitDir });
121
- execSync('git config user.name "Test User"', { cwd: emptyGitDir });
122
- const adapter = new GitAdapter(emptyGitDir);
123
- const stagedFiles = await adapter.getStagedFiles();
124
- assert.deepStrictEqual(stagedFiles, []);
125
- });
126
- it('should handle files with spaces in names', async () => {
127
- const gitDir = join(TEST_DIR, 'git-spaces');
128
- mkdirSync(gitDir, { recursive: true });
129
- execSync('git init', { cwd: gitDir });
130
- execSync('git config user.email "test@example.com"', { cwd: gitDir });
131
- execSync('git config user.name "Test User"', { cwd: gitDir });
132
- // Create file with space in name
133
- writeFileSync(join(gitDir, 'file with spaces.txt'), 'content');
134
- execSync('git add "file with spaces.txt"', { cwd: gitDir });
135
- const adapter = new GitAdapter(gitDir);
136
- const stagedFiles = await adapter.getStagedFiles();
137
- assert.strictEqual(stagedFiles.length, 1);
138
- assert.strictEqual(stagedFiles[0], 'file with spaces.txt');
139
- });
140
- });
141
- });
142
- //# sourceMappingURL=vcs-staging.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vcs-staging.test.js","sourceRoot":"","sources":["../../../../src/tests/feature/vcs/vcs-staging.test.ts"],"names":[],"mappings":"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"}