@lwelliott/cortex-cli 1.0.7 → 1.0.9

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 (74) hide show
  1. package/README.md +9 -5
  2. package/dist/cli/project-resolver.js +1 -1
  3. package/dist/cli/project-resolver.js.map +1 -1
  4. package/dist/cli/review.d.ts.map +1 -1
  5. package/dist/cli/review.js +22 -0
  6. package/dist/cli/review.js.map +1 -1
  7. package/dist/cli/test-report.d.ts.map +1 -1
  8. package/dist/cli/test-report.js +22 -0
  9. package/dist/cli/test-report.js.map +1 -1
  10. package/dist/config/config.d.ts +8 -2
  11. package/dist/config/config.d.ts.map +1 -1
  12. package/dist/config/config.js +25 -9
  13. package/dist/config/config.js.map +1 -1
  14. package/dist/config/paths.d.ts +13 -0
  15. package/dist/config/paths.d.ts.map +1 -0
  16. package/dist/config/paths.js +76 -0
  17. package/dist/config/paths.js.map +1 -0
  18. package/dist/config/registry.d.ts +10 -3
  19. package/dist/config/registry.d.ts.map +1 -1
  20. package/dist/config/registry.js +49 -13
  21. package/dist/config/registry.js.map +1 -1
  22. package/dist/config/resolver.d.ts +6 -9
  23. package/dist/config/resolver.d.ts.map +1 -1
  24. package/dist/config/resolver.js +13 -30
  25. package/dist/config/resolver.js.map +1 -1
  26. package/dist/models/project.d.ts +3 -3
  27. package/dist/models/project.d.ts.map +1 -1
  28. package/dist/services/project.js +4 -4
  29. package/dist/services/project.js.map +1 -1
  30. package/dist/services/review-service.d.ts +20 -0
  31. package/dist/services/review-service.d.ts.map +1 -1
  32. package/dist/services/review-service.js +58 -0
  33. package/dist/services/review-service.js.map +1 -1
  34. package/dist/utils/errors.d.ts +5 -4
  35. package/dist/utils/errors.d.ts.map +1 -1
  36. package/dist/utils/errors.js +13 -13
  37. package/dist/utils/errors.js.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/cli/entity.d.ts +0 -3
  40. package/dist/cli/entity.d.ts.map +0 -1
  41. package/dist/cli/entity.js +0 -135
  42. package/dist/cli/entity.js.map +0 -1
  43. package/dist/cli/schema.d.ts +0 -3
  44. package/dist/cli/schema.d.ts.map +0 -1
  45. package/dist/cli/schema.js +0 -94
  46. package/dist/cli/schema.js.map +0 -1
  47. package/dist/db/builtin-schema-constants.d.ts +0 -109
  48. package/dist/db/builtin-schema-constants.d.ts.map +0 -1
  49. package/dist/db/builtin-schema-constants.js +0 -32
  50. package/dist/db/builtin-schema-constants.js.map +0 -1
  51. package/dist/models/entity-model.d.ts +0 -30
  52. package/dist/models/entity-model.d.ts.map +0 -1
  53. package/dist/models/entity-model.js +0 -99
  54. package/dist/models/entity-model.js.map +0 -1
  55. package/dist/services/audit-checks/mapping-check.d.ts +0 -4
  56. package/dist/services/audit-checks/mapping-check.d.ts.map +0 -1
  57. package/dist/services/audit-checks/mapping-check.js +0 -74
  58. package/dist/services/audit-checks/mapping-check.js.map +0 -1
  59. package/dist/services/audit-checks/orphan-entities-check.d.ts +0 -4
  60. package/dist/services/audit-checks/orphan-entities-check.d.ts.map +0 -1
  61. package/dist/services/audit-checks/orphan-entities-check.js +0 -39
  62. package/dist/services/audit-checks/orphan-entities-check.js.map +0 -1
  63. package/dist/services/audit-checks/sprint-consistency-check.d.ts +0 -4
  64. package/dist/services/audit-checks/sprint-consistency-check.d.ts.map +0 -1
  65. package/dist/services/audit-checks/sprint-consistency-check.js +0 -80
  66. package/dist/services/audit-checks/sprint-consistency-check.js.map +0 -1
  67. package/dist/services/audit-checks/type-mismatch-check.d.ts +0 -4
  68. package/dist/services/audit-checks/type-mismatch-check.d.ts.map +0 -1
  69. package/dist/services/audit-checks/type-mismatch-check.js +0 -55
  70. package/dist/services/audit-checks/type-mismatch-check.js.map +0 -1
  71. package/dist/services/doc-entity-mapping.d.ts +0 -19
  72. package/dist/services/doc-entity-mapping.d.ts.map +0 -1
  73. package/dist/services/doc-entity-mapping.js +0 -35
  74. package/dist/services/doc-entity-mapping.js.map +0 -1
package/README.md CHANGED
@@ -4,6 +4,8 @@ A TypeScript CLI for managing software project artifacts — sprints, kanban boa
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@lwelliott/cortex-cli.svg)](https://www.npmjs.com/package/@lwelliott/cortex-cli) [![license](https://img.shields.io/npm/l/@lwelliott/cortex-cli.svg)](https://github.com/lwelliot/cortex-cli/blob/main/LICENSE)
6
6
 
7
+ > **Latest release:** v1.0.8 — [Release notes](releases/release-notes-1.0.8.md)
8
+
7
9
  ## Installation
8
10
 
9
11
  ### From npm (recommended)
@@ -52,11 +54,11 @@ cortex-cli --project my-project sprint set-status sprint-001 --status CLOSED
52
54
 
53
55
  ## Project Resolution
54
56
 
55
- Every command requires an explicit project. Choose one of:
57
+ Every command requires an explicit project. Resolution follows this priority order:
56
58
 
57
- 1. `--project <name>` flag on every command
58
- 2. Set `CORTEX_CLI_PROJECT` environment variable
59
- 3. Run commands from a registered project directory
59
+ 1. `--project <name>` flag highest priority; if specified but the name is not found in the registry, the command fails immediately (short-circuit — no fall-through to CWD match)
60
+ 2. Current working directory match — if the CWD is within a registered project directory, that project is used
61
+ 3. If neither method resolves a project, the command fails with an error instructing the user to use `--project <name>` or run from a registered project directory
60
62
 
61
63
  There is no longer a default project concept.
62
64
 
@@ -140,8 +142,10 @@ Schema is auto-initialized from `project-schema.yaml` during `project create` wi
140
142
  |---------|-------------|
141
143
  | `review add <id>` | Create reviews with positional ID |
142
144
  | `review list [--sprint]` / `review show <id>` | Browse review records |
145
+ | `review remove <id>` | Permanently delete a review |
143
146
  | `test-report add <id>` | Record test execution results |
144
147
  | `test-report list` / `test-report show <id>` | Browse test reports |
148
+ | `test-report remove <id>` | Permanently delete a test report |
145
149
  | `lesson update` | Record and update lessons learned |
146
150
 
147
151
  ### Board Validation
@@ -197,7 +201,7 @@ Dropped Dropped In Review In Progress In Review
197
201
 
198
202
  | Option | Description |
199
203
  |--------|-------------|
200
- | `-p, --project <name>` | Target a specific project (required unless CORTEX_CLI_PROJECT is set or CWD is registered) |
204
+ | `-p, --project <name>` | Target a specific project (required unless CWD is in a registered project directory) |
201
205
  | `--sprint <id>` | Scope to a sprint |
202
206
  | `--format <type>` | Output format: table, json, markdown, quiet |
203
207
  | `--json` | Shorthand for `--format json` |
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  // Project resolver adapter for CLI context
3
- // Wraps MOD-002 ProjectResolver for CLI context (flag -> env -> CWD)
3
+ // Wraps MOD-002 ProjectResolver for CLI context (flag -> CWD)
4
4
  // Implements AD-0012: Single Entry Point with Declarative Routing
5
5
  // Module: MOD-007
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"project-resolver.js","sourceRoot":"","sources":["../../src/cli/project-resolver.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,qEAAqE;AACrE,kEAAkE;AAClE,kBAAkB;;AAgBlB,wCAIC;AAKD,8BAEC;AAzBD,iDAAoD;AAUpD;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAa;IAC1C,OAAO,IAAA,yBAAc,EAAC;QACpB,IAAI,EAAE,IAAI,CAAC,OAA6B;KACzC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,OAAwB;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"project-resolver.js","sourceRoot":"","sources":["../../src/cli/project-resolver.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,8DAA8D;AAC9D,kEAAkE;AAClE,kBAAkB;;AAgBlB,wCAIC;AAKD,8BAEC;AAzBD,iDAAoD;AAUpD;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAa;IAC1C,OAAO,IAAA,yBAAc,EAAC;QACpB,IAAI,EAAE,IAAI,CAAC,OAA6B;KACzC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,OAAwB;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/cli/review.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAyG3C"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/cli/review.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4H3C"}
@@ -2,6 +2,7 @@
2
2
  // CLI subcommands for review group
3
3
  // SAD-0031: Explicit Command IDs — --id required for review add
4
4
  // SAD-0010: Review show requires --sprint, --content-file replaces --content
5
+ // AD-0054: Review remove command
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
7
  exports.createReviewGroup = createReviewGroup;
7
8
  const commander_1 = require("commander");
@@ -126,6 +127,27 @@ function createReviewGroup() {
126
127
  }
127
128
  }, _cmd);
128
129
  });
130
+ // review remove — AD-0054
131
+ group.command('remove')
132
+ .description('Remove a review (permanently deletes)')
133
+ .argument('<id>', 'Review ID (4-digit zero-padded, e.g., 0001)')
134
+ .option('--sprint <id>', 'Sprint ID')
135
+ .action((reviewId, _opts, _cmd) => {
136
+ run((opts) => {
137
+ const format = (0, format_selector_1.selectFormat)(opts);
138
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
139
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
140
+ try {
141
+ (0, migration_1.initializeSchema)(db);
142
+ const sprintId = (0, sprint_1.resolveSprint)(db, opts.sprint).id;
143
+ const result = (0, review_service_1.removeReview)(db, reviewId, sprintId);
144
+ return (0, format_selector_1.formatOutput)(result, format, 'review');
145
+ }
146
+ finally {
147
+ db.close();
148
+ }
149
+ }, _cmd);
150
+ });
129
151
  return group;
130
152
  }
131
153
  //# sourceMappingURL=review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/cli/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/cli/review.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-report.d.ts","sourceRoot":"","sources":["../../src/cli/test-report.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,qBAAqB,IAAI,OAAO,CAgH/C"}
1
+ {"version":3,"file":"test-report.d.ts","sourceRoot":"","sources":["../../src/cli/test-report.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,qBAAqB,IAAI,OAAO,CAmI/C"}
@@ -2,6 +2,7 @@
2
2
  // CLI subcommands for test-report group
3
3
  // SAD-0031: Explicit Command IDs, --task removal, --content-file import
4
4
  // SAD-0010: --content-file replaces --report-path, atomic import, show command
5
+ // AD-0054: Test-report remove command
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
7
  exports.createTestReportGroup = createTestReportGroup;
7
8
  const commander_1 = require("commander");
@@ -129,6 +130,27 @@ function createTestReportGroup() {
129
130
  }
130
131
  }, _cmd);
131
132
  });
133
+ // test-report remove — AD-0054
134
+ group.command('remove')
135
+ .description('Remove a test report (permanently deletes)')
136
+ .argument('<id>', 'Test report ID (4-digit zero-padded, e.g., 0001)')
137
+ .option('--sprint <id>', 'Sprint ID')
138
+ .action((testReportId, _opts, _cmd) => {
139
+ run((opts) => {
140
+ const format = (0, format_selector_1.selectFormat)(opts);
141
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
142
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
143
+ try {
144
+ (0, migration_1.initializeSchema)(db);
145
+ const sprintId = (0, sprint_1.resolveSprint)(db, opts.sprint).id;
146
+ const result = (0, review_service_1.removeTestReport)(db, testReportId, sprintId);
147
+ return (0, format_selector_1.formatOutput)(result, format, 'test-report');
148
+ }
149
+ finally {
150
+ db.close();
151
+ }
152
+ }, _cmd);
153
+ });
132
154
  return group;
133
155
  }
134
156
  //# sourceMappingURL=test-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../src/cli/test-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../src/cli/test-report.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import type { GlobalConfig } from '../models/project';
2
- /** Default path for the global config */
3
- export declare const DEFAULT_CONFIG_PATH: string;
2
+ /**
3
+ * Resolve the effective config path at call time.
4
+ * Checks primary dir first, then legacy fallback, then defaults to primary.
5
+ * Replaced the former module-level DEFAULT_CONFIG_PATH const to avoid
6
+ * capturing a stale path when the primary directory is created after import.
7
+ */
8
+ export declare function getDefaultConfigPath(): string;
4
9
  /**
5
10
  * Load the global config from disk.
6
11
  * Creates the file with empty config if it doesn't exist.
@@ -9,6 +14,7 @@ export declare function loadConfig(configPath?: string): GlobalConfig;
9
14
  /**
10
15
  * Save the global config to disk.
11
16
  * Creates parent directories if they don't exist.
17
+ * Writes to the primary path regardless of where the config was loaded from.
12
18
  */
13
19
  export declare function saveConfig(config: GlobalConfig, configPath?: string): void;
14
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,yCAAyC;AACzC,eAAO,MAAM,mBAAmB,QAAyB,CAAC;AAQ1D;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAwB5D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAgB1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAK9F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAY7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAwB5D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAiB1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAK9F"}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  // Global config manager
3
- // Manages ~/.config/cortex-cli/config.json
3
+ // Manages <base>/.cortex-cli/config.json
4
+ // Primary path: <base>/.cortex-cli/ (POSIX: $HOME, Windows: %APPDATA%)
5
+ // Legacy fallback (read-only): <base>/.config/cortex-cli/
4
6
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.DEFAULT_CONFIG_PATH = void 0;
7
+ exports.getDefaultConfigPath = getDefaultConfigPath;
6
8
  exports.loadConfig = loadConfig;
7
9
  exports.saveConfig = saveConfig;
8
10
  exports.updateConfig = updateConfig;
@@ -10,19 +12,31 @@ const fs_1 = require("fs");
10
12
  const path_1 = require("path");
11
13
  const project_1 = require("../models/project");
12
14
  const errors_1 = require("../utils/errors");
13
- /** Default path for the global config */
14
- exports.DEFAULT_CONFIG_PATH = getDefaultConfigPath();
15
+ const paths_1 = require("./paths");
16
+ /**
17
+ * Resolve the effective config path at call time.
18
+ * Checks primary dir first, then legacy fallback, then defaults to primary.
19
+ * Replaced the former module-level DEFAULT_CONFIG_PATH const to avoid
20
+ * capturing a stale path when the primary directory is created after import.
21
+ */
15
22
  function getDefaultConfigPath() {
16
- const xdgConfig = process.env.XDG_CONFIG_HOME;
17
- const configDir = xdgConfig || `${process.env.HOME}/.config`;
18
- return `${configDir}/cortex-cli/config.json`;
23
+ const primaryDir = (0, paths_1.getPrimaryConfigDir)();
24
+ const legacyDir = (0, paths_1.getLegacyConfigDir)();
25
+ if ((0, fs_1.existsSync)(primaryDir)) {
26
+ return (0, path_1.join)(primaryDir, 'config.json');
27
+ }
28
+ if ((0, fs_1.existsSync)(legacyDir)) {
29
+ return (0, path_1.join)(legacyDir, 'config.json');
30
+ }
31
+ // Neither exists — use primary (will be created on first write)
32
+ return (0, path_1.join)(primaryDir, 'config.json');
19
33
  }
20
34
  /**
21
35
  * Load the global config from disk.
22
36
  * Creates the file with empty config if it doesn't exist.
23
37
  */
24
38
  function loadConfig(configPath) {
25
- const path = configPath ?? exports.DEFAULT_CONFIG_PATH;
39
+ const path = configPath ?? getDefaultConfigPath();
26
40
  if (!(0, fs_1.existsSync)(path)) {
27
41
  saveConfig(project_1.EMPTY_CONFIG, path);
28
42
  return { ...project_1.EMPTY_CONFIG };
@@ -44,13 +58,15 @@ function loadConfig(configPath) {
44
58
  /**
45
59
  * Save the global config to disk.
46
60
  * Creates parent directories if they don't exist.
61
+ * Writes to the primary path regardless of where the config was loaded from.
47
62
  */
48
63
  function saveConfig(config, configPath) {
49
- const path = configPath ?? exports.DEFAULT_CONFIG_PATH;
64
+ const path = configPath ?? (0, path_1.join)((0, paths_1.getPrimaryConfigDir)(), 'config.json');
50
65
  try {
51
66
  const dir = (0, path_1.dirname)(path);
52
67
  if (!(0, fs_1.existsSync)(dir)) {
53
68
  (0, fs_1.mkdirSync)(dir, { recursive: true });
69
+ (0, paths_1.ensureConfigDirWritable)(dir);
54
70
  }
55
71
  (0, fs_1.writeFileSync)(path, JSON.stringify(config, null, 2) + '\n', 'utf-8');
56
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";AAAA,wBAAwB;AACxB,2CAA2C;;;AAqB3C,gCAwBC;AAMD,gCAgBC;AAKD,oCAKC;AA3ED,2BAAwE;AACxE,+BAA+B;AAE/B,+CAAiD;AACjD,4CAA8C;AAE9C,yCAAyC;AAC5B,QAAA,mBAAmB,GAAG,oBAAoB,EAAE,CAAC;AAE1D,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,MAAM,SAAS,GAAG,SAAS,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC;IAC7D,OAAO,GAAG,SAAS,yBAAyB,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,IAAI,GAAG,UAAU,IAAI,2BAAmB,CAAC;IAE/C,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,UAAU,CAAC,sBAAY,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,EAAE,GAAG,sBAAY,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QAEjD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,oBAAW,CAAC,6BAA6B,IAAI,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAW;YAAE,MAAM,GAAG,CAAC;QAC1C,MAAM,IAAI,oBAAW,CACnB,6BAA6B,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzF,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,MAAoB,EAAE,UAAmB;IAClE,MAAM,IAAI,GAAG,UAAU,IAAI,2BAAmB,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,oBAAW,CACnB,8BAA8B,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,OAA8B,EAAE,UAAmB;IAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";AAAA,wBAAwB;AACxB,yCAAyC;AACzC,uEAAuE;AACvE,0DAA0D;;AAe1D,oDAYC;AAMD,gCAwBC;AAOD,gCAiBC;AAKD,oCAKC;AAzFD,2BAAwE;AACxE,+BAAqC;AAErC,+CAAiD;AACjD,4CAA8C;AAC9C,mCAA2F;AAE3F;;;;;GAKG;AACH,SAAgB,oBAAoB;IAClC,MAAM,UAAU,GAAG,IAAA,2BAAmB,GAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAA,0BAAkB,GAAE,CAAC;IAEvC,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAA,WAAI,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC;IACD,gEAAgE;IAChE,OAAO,IAAA,WAAI,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,IAAI,GAAG,UAAU,IAAI,oBAAoB,EAAE,CAAC;IAElD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,UAAU,CAAC,sBAAY,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,EAAE,GAAG,sBAAY,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QAEjD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,oBAAW,CAAC,6BAA6B,IAAI,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAW;YAAE,MAAM,GAAG,CAAC;QAC1C,MAAM,IAAI,oBAAW,CACnB,6BAA6B,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzF,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,MAAoB,EAAE,UAAmB;IAClE,MAAM,IAAI,GAAG,UAAU,IAAI,IAAA,WAAI,EAAC,IAAA,2BAAmB,GAAE,EAAE,aAAa,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,IAAA,+BAAuB,EAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,oBAAW,CACnB,8BAA8B,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,OAA8B,EAAE,UAAmB;IAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** Get the platform-appropriate base directory for config files */
2
+ export declare function getConfigBaseDir(): string;
3
+ /** Primary config directory: <base>/.cortex-cli/ */
4
+ export declare function getPrimaryConfigDir(): string;
5
+ /** Legacy config directory (read-only fallback): <base>/.config/cortex-cli/ */
6
+ export declare function getLegacyConfigDir(): string;
7
+ /**
8
+ * Verify that the resolved config directory is writable.
9
+ * Returns the directory path if it is accessible or can be created,
10
+ * throws ConfigBaseDirError if the directory exists but is not writable.
11
+ */
12
+ export declare function ensureConfigDirWritable(dir: string): string;
13
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAWA,mEAAmE;AACnE,wBAAgB,gBAAgB,IAAI,MAAM,CA0BzC;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,IAAI,MAAM,CAM5C;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkB3D"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ // Platform-aware config directory resolution
3
+ // Resolves config base directory: POSIX uses $HOME, Windows uses %APPDATA%
4
+ // Primary path: <base>/.cortex-cli/
5
+ // Legacy fallback (read-only): <base>/.config/cortex-cli/
6
+ // Implements AD-0005 config directory resolution
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.getConfigBaseDir = getConfigBaseDir;
9
+ exports.getPrimaryConfigDir = getPrimaryConfigDir;
10
+ exports.getLegacyConfigDir = getLegacyConfigDir;
11
+ exports.ensureConfigDirWritable = ensureConfigDirWritable;
12
+ const os_1 = require("os");
13
+ const path_1 = require("path");
14
+ const fs_1 = require("fs");
15
+ const errors_1 = require("../utils/errors");
16
+ /** Get the platform-appropriate base directory for config files */
17
+ function getConfigBaseDir() {
18
+ // Support XDG_CONFIG_HOME override (POSIX standard, also used by tests)
19
+ const xdgConfig = process.env.XDG_CONFIG_HOME;
20
+ if (xdgConfig) {
21
+ return xdgConfig;
22
+ }
23
+ if ((0, os_1.platform)() === 'win32') {
24
+ const appData = process.env.APPDATA;
25
+ if (!appData) {
26
+ throw new errors_1.ConfigBaseDirError('APPDATA environment variable is not set — cannot resolve config directory', 'APPDATA');
27
+ }
28
+ return appData;
29
+ }
30
+ // POSIX: use $HOME
31
+ const home = process.env.HOME;
32
+ if (!home) {
33
+ throw new errors_1.ConfigBaseDirError('HOME environment variable is not set — cannot resolve config directory', 'HOME');
34
+ }
35
+ return home;
36
+ }
37
+ /** Primary config directory: <base>/.cortex-cli/ */
38
+ function getPrimaryConfigDir() {
39
+ const xdgConfig = process.env.XDG_CONFIG_HOME;
40
+ if (xdgConfig) {
41
+ return (0, path_1.join)(xdgConfig, 'cortex-cli');
42
+ }
43
+ return (0, path_1.join)(getConfigBaseDir(), '.cortex-cli');
44
+ }
45
+ /** Legacy config directory (read-only fallback): <base>/.config/cortex-cli/ */
46
+ function getLegacyConfigDir() {
47
+ const xdgConfig = process.env.XDG_CONFIG_HOME;
48
+ if (xdgConfig) {
49
+ return (0, path_1.join)(xdgConfig, 'cortex-cli');
50
+ }
51
+ return (0, path_1.join)(getConfigBaseDir(), '.config', 'cortex-cli');
52
+ }
53
+ /**
54
+ * Verify that the resolved config directory is writable.
55
+ * Returns the directory path if it is accessible or can be created,
56
+ * throws ConfigBaseDirError if the directory exists but is not writable.
57
+ */
58
+ function ensureConfigDirWritable(dir) {
59
+ try {
60
+ (0, fs_1.accessSync)(dir, fs_1.constants.W_OK);
61
+ }
62
+ catch (err) {
63
+ const code = err.code;
64
+ // ENOENT: directory doesn't exist yet — fine, creation happens downstream
65
+ if (code === 'ENOENT') {
66
+ return dir;
67
+ }
68
+ // EACCES / EPERM: directory exists but we don't have write permission
69
+ if (code === 'EACCES' || code === 'EPERM') {
70
+ throw new errors_1.ConfigBaseDirError(`Config directory "${dir}" exists but is not writable`);
71
+ }
72
+ throw err;
73
+ }
74
+ return dir;
75
+ }
76
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":";AAAA,6CAA6C;AAC7C,2EAA2E;AAC3E,oCAAoC;AACpC,0DAA0D;AAC1D,iDAAiD;;AAQjD,4CA0BC;AAGD,kDAMC;AAGD,gDAMC;AAOD,0DAkBC;AA3ED,2BAA8B;AAC9B,+BAA4B;AAC5B,2BAA2C;AAC3C,4CAAqD;AAErD,mEAAmE;AACnE,SAAgB,gBAAgB;IAC9B,wEAAwE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAA,aAAQ,GAAE,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,2BAAkB,CAC1B,2EAA2E,EAC3E,SAAS,CACV,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,mBAAmB;IACnB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,2BAAkB,CAC1B,wEAAwE,EACxE,MAAM,CACP,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oDAAoD;AACpD,SAAgB,mBAAmB;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAA,WAAI,EAAC,gBAAgB,EAAE,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,SAAgB,kBAAkB;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAA,WAAI,EAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,IAAA,eAAU,EAAC,GAAG,EAAE,cAAS,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,0EAA0E;QAC1E,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,sEAAsE;QACtE,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,2BAAkB,CAC1B,qBAAqB,GAAG,8BAA8B,CACvD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import type { ProjectsRegistry, ProjectEntry } from '../models/project';
2
- /** Default path for the global projects registry */
3
- export declare const DEFAULT_REGISTRY_PATH: string;
2
+ /**
3
+ * Resolve the effective registry path at call time.
4
+ * Checks primary dir first, then legacy fallback, then defaults to primary.
5
+ * Replaced the former module-level DEFAULT_REGISTRY_PATH const to avoid
6
+ * capturing a stale path when the primary directory is created after import.
7
+ */
8
+ export declare function getDefaultRegistryPath(): string;
4
9
  /**
5
10
  * Load the projects registry from disk.
6
11
  * Creates the file with empty registry if it doesn't exist.
@@ -10,7 +15,8 @@ export declare function loadRegistry(registryPath?: string): ProjectsRegistry;
10
15
  /**
11
16
  * Save the projects registry to disk atomically.
12
17
  * Per FS-SS-002-0010 VR-003: write to temp file, then rename.
13
- * Rename is atomic on POSIX (same filesystem).
18
+ * Rename is atomic on POSIX and reliable on Windows for same-volume moves.
19
+ * Writes always go to the primary path.
14
20
  */
15
21
  export declare function saveRegistry(registry: ProjectsRegistry, registryPath?: string): void;
16
22
  /**
@@ -35,6 +41,7 @@ export declare function listProjects(registryPath?: string): ProjectsRegistry;
35
41
  /**
36
42
  * Find a project by folder path (for CWD resolution).
37
43
  * Uses longest-prefix match to handle subdirectories.
44
+ * Per FS-SS-002-0007 VR-003: paths are normalized to OS-native format before comparison.
38
45
  */
39
46
  export declare function findProjectByFolder(folder: string, registryPath?: string): {
40
47
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWxE,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,QAA2B,CAAC;AAQ9D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA+CpE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAyBpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAchG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAWnF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAS5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAEpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAiBvH"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAYxE;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAY/C;AAOD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA+CpE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CA0BpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAchG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAWnF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAS5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAmCvH"}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  // Global project registry manager
3
3
  // Implements AD-0001: JSON Registry for Global Project Registry
4
- // Manages ~/.config/cortex-cli/registry.json
4
+ // Primary path: <base>/.cortex-cli/registry.json (POSIX: $HOME, Windows: %APPDATA%)
5
+ // Legacy fallback (read-only): <base>/.config/cortex-cli/registry.json
5
6
  // + FS-SS-002-0010 VR-003 (atomic writes), ERR-REG-001..005
6
7
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DEFAULT_REGISTRY_PATH = void 0;
8
+ exports.getDefaultRegistryPath = getDefaultRegistryPath;
8
9
  exports.loadRegistry = loadRegistry;
9
10
  exports.saveRegistry = saveRegistry;
10
11
  exports.addProject = addProject;
@@ -15,12 +16,28 @@ exports.findProjectByFolder = findProjectByFolder;
15
16
  const fs_1 = require("fs");
16
17
  const path_1 = require("path");
17
18
  const errors_1 = require("../utils/errors");
18
- /** Default path for the global projects registry */
19
- exports.DEFAULT_REGISTRY_PATH = getDefaultRegistryPath();
19
+ const paths_1 = require("./paths");
20
+ /**
21
+ * Resolve the effective registry path at call time.
22
+ * Checks primary dir first, then legacy fallback, then defaults to primary.
23
+ * Replaced the former module-level DEFAULT_REGISTRY_PATH const to avoid
24
+ * capturing a stale path when the primary directory is created after import.
25
+ */
20
26
  function getDefaultRegistryPath() {
21
- const xdgConfig = process.env.XDG_CONFIG_HOME;
22
- const configDir = xdgConfig || `${process.env.HOME}/.config`;
23
- return `${configDir}/cortex-cli/registry.json`;
27
+ const primaryDir = (0, paths_1.getPrimaryConfigDir)();
28
+ const legacyDir = (0, paths_1.getLegacyConfigDir)();
29
+ if ((0, fs_1.existsSync)(primaryDir)) {
30
+ return (0, path_1.join)(primaryDir, 'registry.json');
31
+ }
32
+ if ((0, fs_1.existsSync)(legacyDir)) {
33
+ return (0, path_1.join)(legacyDir, 'registry.json');
34
+ }
35
+ // Neither exists — use primary (will be created on first write)
36
+ return (0, path_1.join)(primaryDir, 'registry.json');
37
+ }
38
+ /** Primary registry path (always writes go here) */
39
+ function getPrimaryRegistryPath() {
40
+ return (0, path_1.join)((0, paths_1.getPrimaryConfigDir)(), 'registry.json');
24
41
  }
25
42
  /**
26
43
  * Load the projects registry from disk.
@@ -69,15 +86,17 @@ function loadRegistry(registryPath) {
69
86
  /**
70
87
  * Save the projects registry to disk atomically.
71
88
  * Per FS-SS-002-0010 VR-003: write to temp file, then rename.
72
- * Rename is atomic on POSIX (same filesystem).
89
+ * Rename is atomic on POSIX and reliable on Windows for same-volume moves.
90
+ * Writes always go to the primary path.
73
91
  */
74
92
  function saveRegistry(registry, registryPath) {
75
- const path = registryPath ?? exports.DEFAULT_REGISTRY_PATH;
93
+ const path = registryPath ?? getPrimaryRegistryPath();
76
94
  try {
77
95
  const dir = (0, path_1.dirname)(path);
78
96
  if (!(0, fs_1.existsSync)(dir)) {
79
97
  try {
80
98
  (0, fs_1.mkdirSync)(dir, { recursive: true });
99
+ (0, paths_1.ensureConfigDirWritable)(dir);
81
100
  }
82
101
  catch (err) {
83
102
  throw new errors_1.RegistryDirCreateError(err instanceof Error ? err.message : String(err));
@@ -144,15 +163,32 @@ function listProjects(registryPath) {
144
163
  /**
145
164
  * Find a project by folder path (for CWD resolution).
146
165
  * Uses longest-prefix match to handle subdirectories.
166
+ * Per FS-SS-002-0007 VR-003: paths are normalized to OS-native format before comparison.
147
167
  */
148
168
  function findProjectByFolder(folder, registryPath) {
149
169
  const registry = loadRegistry(registryPath);
150
170
  let bestMatch = null;
171
+ // Normalize paths to OS-native separators
172
+ const isWindows = process.platform === 'win32';
173
+ const normalize = (p) => {
174
+ // Strip trailing slashes, normalize separators to OS-native
175
+ let normalized = p.replace(/[/\\]+$/, '');
176
+ if (isWindows) {
177
+ // On Windows, normalize forward slashes to backslashes
178
+ normalized = normalized.replace(/\//g, '\\');
179
+ }
180
+ return normalized;
181
+ };
182
+ // On Windows, normalize to lowercase for case-insensitive comparison
183
+ const compareFolder = isWindows ? normalize(folder).toLowerCase() : normalize(folder);
184
+ const sep = isWindows ? '\\' : '/';
151
185
  for (const [name, entry] of Object.entries(registry.projects)) {
152
- // Normalize both paths for comparison
153
- const normalizedFolder = folder.replace(/\/+$/, '');
154
- const normalizedEntry = entry.folder.replace(/\/+$/, '');
155
- if (normalizedFolder === normalizedEntry || normalizedFolder.startsWith(normalizedEntry + '/')) {
186
+ const normalizedEntry = isWindows
187
+ ? normalize(entry.folder).toLowerCase()
188
+ : normalize(entry.folder);
189
+ // Exact match or the CWD starts with the entry folder followed by a separator
190
+ if (compareFolder === normalizedEntry ||
191
+ (compareFolder.startsWith(normalizedEntry + sep))) {
156
192
  if (!bestMatch || normalizedEntry.length > bestMatch.matchLen) {
157
193
  bestMatch = { name, entry, matchLen: normalizedEntry.length };
158
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,8 @@
1
1
  import type { ResolvedProject } from '../models/project';
2
- /** Environment variable name for project override */
3
- export declare const ENV_PROJECT_VAR = "CORTEX_CLI_PROJECT";
4
2
  /** Options for project resolution */
5
3
  export interface ResolveOptions {
6
4
  /** Explicit project name from --project flag */
7
5
  flag?: string;
8
- /** Override environment variable (for testing) */
9
- envVar?: string;
10
6
  /** Override current working directory (for testing) */
11
7
  cwd?: string;
12
8
  /** Override registry path (for testing) */
@@ -15,11 +11,12 @@ export interface ResolveOptions {
15
11
  /**
16
12
  * Resolve which project to use.
17
13
  *
18
- * Priority cascade (AD-0005 v2):
19
- * 1. --project flag (explicit)
20
- * 2. CORTEX_CLI_PROJECT environment variable
21
- * 3. Current working directory matches a registered project folder
22
- * 4. Error: ProjectResolutionError (ERR-PROJ-011)
14
+ * Priority cascade (AD-0005):
15
+ * 1. --project flag (explicit) — fails immediately on unknown name (ERR-PROJ-009)
16
+ * 2. Current working directory matches a registered project folder
17
+ * 3. Error: ProjectResolutionError (ERR-PROJ-011)
18
+ *
19
+ * There is no default project and no environment variable step.
23
20
  */
24
21
  export declare function resolveProject(opts?: ResolveOptions): ResolvedProject;
25
22
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQzD,qDAAqD;AACrD,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAEpD,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,eAAe,CAoDrE"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOzD,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,eAAe,CAoCrE"}