@neurcode-ai/cli 0.7.1 → 0.7.3

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.
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Gitignore Updater Utility
4
+ *
5
+ * Ensures .neurcode directory is added to .gitignore
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ensureNeurcodeInGitignore = ensureNeurcodeInGitignore;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const GITIGNORE_FILE = '.gitignore';
12
+ const NEURCODE_IGNORE = '.neurcode';
13
+ /**
14
+ * Ensure .neurcode is in .gitignore
15
+ */
16
+ function ensureNeurcodeInGitignore(cwd = process.cwd()) {
17
+ const gitignorePath = (0, path_1.join)(cwd, GITIGNORE_FILE);
18
+ // If .gitignore doesn't exist, create it
19
+ if (!(0, fs_1.existsSync)(gitignorePath)) {
20
+ (0, fs_1.writeFileSync)(gitignorePath, `${NEURCODE_IGNORE}\n`, 'utf-8');
21
+ return;
22
+ }
23
+ // Read existing .gitignore
24
+ const content = (0, fs_1.readFileSync)(gitignorePath, 'utf-8');
25
+ const lines = content.split('\n').map(line => line.trim());
26
+ // Check if .neurcode is already in .gitignore
27
+ if (lines.includes(NEURCODE_IGNORE)) {
28
+ return; // Already present
29
+ }
30
+ // Append .neurcode to .gitignore
31
+ const newContent = content.trimEnd() + (content.endsWith('\n') ? '' : '\n') + `${NEURCODE_IGNORE}\n`;
32
+ (0, fs_1.writeFileSync)(gitignorePath, newContent, 'utf-8');
33
+ }
34
+ //# sourceMappingURL=gitignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/utils/gitignore.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAWH,8DAqBC;AA9BD,2BAA6D;AAC7D,+BAA4B;AAE5B,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC;;GAEG;AACH,SAAgB,yBAAyB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnE,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEhD,yCAAyC;IACzC,IAAI,CAAC,IAAA,eAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,IAAA,kBAAa,EAAC,aAAa,EAAE,GAAG,eAAe,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,2BAA2B;IAC3B,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3D,8CAA8C;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,kBAAkB;IAC5B,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,eAAe,IAAI,CAAC;IACrG,IAAA,kBAAa,EAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * State Management Utility
3
+ *
4
+ * Manages CLI state in .neurcode/config.json (project-local state)
5
+ * Separates session state from user auth config
6
+ */
7
+ export interface CliState {
8
+ projectId?: string;
9
+ sessionId?: string;
10
+ lastPlanId?: string;
11
+ }
12
+ /**
13
+ * Load state from .neurcode/config.json
14
+ */
15
+ export declare function loadState(): CliState;
16
+ /**
17
+ * Save state to .neurcode/config.json
18
+ */
19
+ export declare function saveState(state: Partial<CliState>): void;
20
+ /**
21
+ * Get session ID from state
22
+ */
23
+ export declare function getSessionId(): string | null;
24
+ /**
25
+ * Set session ID in state
26
+ */
27
+ export declare function setSessionId(sessionId: string): void;
28
+ /**
29
+ * Clear session ID from state
30
+ */
31
+ export declare function clearSessionId(): void;
32
+ /**
33
+ * Get project ID from state
34
+ */
35
+ export declare function getProjectId(): string | null;
36
+ /**
37
+ * Set project ID in state
38
+ */
39
+ export declare function setProjectId(projectId: string): void;
40
+ /**
41
+ * Get last plan ID from state
42
+ */
43
+ export declare function getLastPlanId(): string | null;
44
+ /**
45
+ * Set last plan ID in state
46
+ */
47
+ export declare function setLastPlanId(planId: string): void;
48
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4BD;;GAEG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAcpC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ /**
3
+ * State Management Utility
4
+ *
5
+ * Manages CLI state in .neurcode/config.json (project-local state)
6
+ * Separates session state from user auth config
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.loadState = loadState;
10
+ exports.saveState = saveState;
11
+ exports.getSessionId = getSessionId;
12
+ exports.setSessionId = setSessionId;
13
+ exports.clearSessionId = clearSessionId;
14
+ exports.getProjectId = getProjectId;
15
+ exports.setProjectId = setProjectId;
16
+ exports.getLastPlanId = getLastPlanId;
17
+ exports.setLastPlanId = setLastPlanId;
18
+ const fs_1 = require("fs");
19
+ const path_1 = require("path");
20
+ const gitignore_1 = require("./gitignore");
21
+ const STATE_DIR = '.neurcode';
22
+ const CONFIG_FILE = 'config.json'; // Changed from state.json to config.json
23
+ /**
24
+ * Get path to config file in current working directory
25
+ */
26
+ function getConfigPath() {
27
+ const cwd = process.cwd();
28
+ const stateDir = (0, path_1.join)(cwd, STATE_DIR);
29
+ const configPath = (0, path_1.join)(stateDir, CONFIG_FILE);
30
+ return configPath;
31
+ }
32
+ /**
33
+ * Ensure state directory exists and .neurcode is in .gitignore
34
+ */
35
+ function ensureStateDir() {
36
+ const cwd = process.cwd();
37
+ const stateDir = (0, path_1.join)(cwd, STATE_DIR);
38
+ if (!(0, fs_1.existsSync)(stateDir)) {
39
+ (0, fs_1.mkdirSync)(stateDir, { recursive: true });
40
+ }
41
+ // Auto-add .neurcode to .gitignore
42
+ (0, gitignore_1.ensureNeurcodeInGitignore)(cwd);
43
+ }
44
+ /**
45
+ * Load state from .neurcode/config.json
46
+ */
47
+ function loadState() {
48
+ const configPath = getConfigPath();
49
+ if (!(0, fs_1.existsSync)(configPath)) {
50
+ return {};
51
+ }
52
+ try {
53
+ const content = (0, fs_1.readFileSync)(configPath, 'utf-8');
54
+ return JSON.parse(content);
55
+ }
56
+ catch (error) {
57
+ // If file is corrupted, return empty state
58
+ return {};
59
+ }
60
+ }
61
+ /**
62
+ * Save state to .neurcode/config.json
63
+ */
64
+ function saveState(state) {
65
+ ensureStateDir();
66
+ const configPath = getConfigPath();
67
+ const currentState = loadState();
68
+ const newState = { ...currentState, ...state };
69
+ (0, fs_1.writeFileSync)(configPath, JSON.stringify(newState, null, 2) + '\n', 'utf-8');
70
+ }
71
+ /**
72
+ * Get session ID from state
73
+ */
74
+ function getSessionId() {
75
+ const state = loadState();
76
+ return state.sessionId || null;
77
+ }
78
+ /**
79
+ * Set session ID in state
80
+ */
81
+ function setSessionId(sessionId) {
82
+ saveState({ sessionId });
83
+ }
84
+ /**
85
+ * Clear session ID from state
86
+ */
87
+ function clearSessionId() {
88
+ const state = loadState();
89
+ delete state.sessionId;
90
+ saveState(state);
91
+ }
92
+ /**
93
+ * Get project ID from state
94
+ */
95
+ function getProjectId() {
96
+ const state = loadState();
97
+ return state.projectId || null;
98
+ }
99
+ /**
100
+ * Set project ID in state
101
+ */
102
+ function setProjectId(projectId) {
103
+ saveState({ projectId });
104
+ }
105
+ /**
106
+ * Get last plan ID from state
107
+ */
108
+ function getLastPlanId() {
109
+ const state = loadState();
110
+ return state.lastPlanId || null;
111
+ }
112
+ /**
113
+ * Set last plan ID in state
114
+ */
115
+ function setLastPlanId(planId) {
116
+ saveState({ lastPlanId: planId });
117
+ }
118
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurcode-ai/cli",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "description": "Neurcode CLI - AI code governance and diff analysis",
5
5
  "bin": {
6
6
  "neurcode": "./dist/index.js"