@staticpayload/zai-code 1.0.0

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 (100) hide show
  1. package/LICENSE +678 -0
  2. package/README.md +115 -0
  3. package/bin/zcode +3 -0
  4. package/dist/apply.d.ts +44 -0
  5. package/dist/apply.d.ts.map +1 -0
  6. package/dist/apply.js +307 -0
  7. package/dist/apply.js.map +1 -0
  8. package/dist/auth.d.ts +9 -0
  9. package/dist/auth.d.ts.map +1 -0
  10. package/dist/auth.js +170 -0
  11. package/dist/auth.js.map +1 -0
  12. package/dist/cli.d.ts +3 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +179 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/commands.d.ts +15 -0
  17. package/dist/commands.d.ts.map +1 -0
  18. package/dist/commands.js +560 -0
  19. package/dist/commands.js.map +1 -0
  20. package/dist/config.d.ts +9 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +97 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/context/context_builder.d.ts +29 -0
  25. package/dist/context/context_builder.d.ts.map +1 -0
  26. package/dist/context/context_builder.js +307 -0
  27. package/dist/context/context_builder.js.map +1 -0
  28. package/dist/context/project_memory.d.ts +14 -0
  29. package/dist/context/project_memory.d.ts.map +1 -0
  30. package/dist/context/project_memory.js +142 -0
  31. package/dist/context/project_memory.js.map +1 -0
  32. package/dist/doctor.d.ts +2 -0
  33. package/dist/doctor.d.ts.map +1 -0
  34. package/dist/doctor.js +3 -0
  35. package/dist/doctor.js.map +1 -0
  36. package/dist/git.d.ts +10 -0
  37. package/dist/git.d.ts.map +1 -0
  38. package/dist/git.js +90 -0
  39. package/dist/git.js.map +1 -0
  40. package/dist/history.d.ts +14 -0
  41. package/dist/history.d.ts.map +1 -0
  42. package/dist/history.js +103 -0
  43. package/dist/history.js.map +1 -0
  44. package/dist/interactive.d.ts +6 -0
  45. package/dist/interactive.d.ts.map +1 -0
  46. package/dist/interactive.js +83 -0
  47. package/dist/interactive.js.map +1 -0
  48. package/dist/orchestrator.d.ts +11 -0
  49. package/dist/orchestrator.d.ts.map +1 -0
  50. package/dist/orchestrator.js +135 -0
  51. package/dist/orchestrator.js.map +1 -0
  52. package/dist/planner.d.ts +22 -0
  53. package/dist/planner.d.ts.map +1 -0
  54. package/dist/planner.js +259 -0
  55. package/dist/planner.js.map +1 -0
  56. package/dist/profiles.d.ts +16 -0
  57. package/dist/profiles.d.ts.map +1 -0
  58. package/dist/profiles.js +80 -0
  59. package/dist/profiles.js.map +1 -0
  60. package/dist/rollback.d.ts +27 -0
  61. package/dist/rollback.d.ts.map +1 -0
  62. package/dist/rollback.js +154 -0
  63. package/dist/rollback.js.map +1 -0
  64. package/dist/runtime.d.ts +131 -0
  65. package/dist/runtime.d.ts.map +1 -0
  66. package/dist/runtime.js +374 -0
  67. package/dist/runtime.js.map +1 -0
  68. package/dist/session.d.ts +95 -0
  69. package/dist/session.d.ts.map +1 -0
  70. package/dist/session.js +174 -0
  71. package/dist/session.js.map +1 -0
  72. package/dist/settings.d.ts +41 -0
  73. package/dist/settings.d.ts.map +1 -0
  74. package/dist/settings.js +225 -0
  75. package/dist/settings.js.map +1 -0
  76. package/dist/settings_menu.d.ts +2 -0
  77. package/dist/settings_menu.d.ts.map +1 -0
  78. package/dist/settings_menu.js +265 -0
  79. package/dist/settings_menu.js.map +1 -0
  80. package/dist/shell.d.ts +18 -0
  81. package/dist/shell.d.ts.map +1 -0
  82. package/dist/shell.js +128 -0
  83. package/dist/shell.js.map +1 -0
  84. package/dist/task_runner.d.ts +22 -0
  85. package/dist/task_runner.d.ts.map +1 -0
  86. package/dist/task_runner.js +230 -0
  87. package/dist/task_runner.js.map +1 -0
  88. package/dist/ui.d.ts +15 -0
  89. package/dist/ui.d.ts.map +1 -0
  90. package/dist/ui.js +160 -0
  91. package/dist/ui.js.map +1 -0
  92. package/dist/workspace.d.ts +17 -0
  93. package/dist/workspace.d.ts.map +1 -0
  94. package/dist/workspace.js +134 -0
  95. package/dist/workspace.js.map +1 -0
  96. package/dist/workspace_model.d.ts +45 -0
  97. package/dist/workspace_model.d.ts.map +1 -0
  98. package/dist/workspace_model.js +253 -0
  99. package/dist/workspace_model.js.map +1 -0
  100. package/package.json +45 -0
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLAN_SCHEMA = void 0;
4
+ exports.createSession = createSession;
5
+ exports.getSession = getSession;
6
+ exports.resetSession = resetSession;
7
+ exports.addOpenFile = addOpenFile;
8
+ exports.removeOpenFile = removeOpenFile;
9
+ exports.clearOpenFiles = clearOpenFiles;
10
+ exports.setLastPlan = setLastPlan;
11
+ exports.setLastDiff = setLastDiff;
12
+ exports.setPendingActions = setPendingActions;
13
+ exports.setMode = setMode;
14
+ exports.setDryRun = setDryRun;
15
+ exports.getMode = getMode;
16
+ exports.isDryRun = isDryRun;
17
+ exports.setIntent = setIntent;
18
+ exports.getIntent = getIntent;
19
+ exports.clearIntent = clearIntent;
20
+ exports.setIntentType = setIntentType;
21
+ exports.getIntentType = getIntentType;
22
+ exports.setLastExecResult = setLastExecResult;
23
+ exports.getLastExecResult = getLastExecResult;
24
+ exports.setTaskSteps = setTaskSteps;
25
+ exports.getTaskSteps = getTaskSteps;
26
+ exports.getCurrentStep = getCurrentStep;
27
+ exports.advanceStep = advanceStep;
28
+ exports.updateStepStatus = updateStepStatus;
29
+ exports.getStepProgress = getStepProgress;
30
+ exports.PLAN_SCHEMA = {
31
+ type: 'object',
32
+ required: ['status', 'plan'],
33
+ properties: {
34
+ status: { type: 'string', enum: ['success', 'error'] },
35
+ plan: {
36
+ type: 'array',
37
+ items: {
38
+ type: 'object',
39
+ required: ['id', 'description'],
40
+ properties: {
41
+ id: { type: 'string' },
42
+ description: { type: 'string' },
43
+ files: { type: 'array', items: { type: 'string' } },
44
+ },
45
+ },
46
+ },
47
+ error: { type: 'string' },
48
+ },
49
+ };
50
+ // Create a new session state
51
+ function createSession(workingDirectory) {
52
+ return {
53
+ openFiles: [],
54
+ lastPlan: null,
55
+ lastDiff: null,
56
+ pendingActions: null,
57
+ mode: 'edit',
58
+ dryRun: false,
59
+ workingDirectory: workingDirectory || process.cwd(),
60
+ currentIntent: null,
61
+ intentType: null,
62
+ lastExecResult: null,
63
+ taskSteps: [],
64
+ currentStepIndex: 0,
65
+ };
66
+ }
67
+ // Global session instance
68
+ let currentSession = null;
69
+ // Get or create the current session
70
+ function getSession() {
71
+ if (!currentSession) {
72
+ currentSession = createSession();
73
+ }
74
+ return currentSession;
75
+ }
76
+ // Reset the session to initial state
77
+ function resetSession() {
78
+ currentSession = createSession(currentSession?.workingDirectory);
79
+ }
80
+ // Session mutation helpers
81
+ function addOpenFile(path) {
82
+ const session = getSession();
83
+ if (!session.openFiles.includes(path)) {
84
+ session.openFiles.push(path);
85
+ }
86
+ }
87
+ function removeOpenFile(path) {
88
+ const session = getSession();
89
+ session.openFiles = session.openFiles.filter(f => f !== path);
90
+ }
91
+ function clearOpenFiles() {
92
+ getSession().openFiles = [];
93
+ }
94
+ function setLastPlan(plan) {
95
+ getSession().lastPlan = plan;
96
+ }
97
+ function setLastDiff(diff) {
98
+ getSession().lastDiff = diff;
99
+ }
100
+ function setPendingActions(actions) {
101
+ getSession().pendingActions = actions;
102
+ }
103
+ function setMode(mode) {
104
+ getSession().mode = mode;
105
+ }
106
+ function setDryRun(enabled) {
107
+ getSession().dryRun = enabled;
108
+ }
109
+ function getMode() {
110
+ return getSession().mode;
111
+ }
112
+ function isDryRun() {
113
+ return getSession().dryRun;
114
+ }
115
+ function setIntent(intent) {
116
+ getSession().currentIntent = intent;
117
+ }
118
+ function getIntent() {
119
+ return getSession().currentIntent;
120
+ }
121
+ function clearIntent() {
122
+ getSession().currentIntent = null;
123
+ }
124
+ function setIntentType(type) {
125
+ getSession().intentType = type;
126
+ }
127
+ function getIntentType() {
128
+ return getSession().intentType;
129
+ }
130
+ function setLastExecResult(result) {
131
+ getSession().lastExecResult = result;
132
+ }
133
+ function getLastExecResult() {
134
+ return getSession().lastExecResult;
135
+ }
136
+ // Multi-step task helpers
137
+ function setTaskSteps(steps) {
138
+ const session = getSession();
139
+ session.taskSteps = steps;
140
+ session.currentStepIndex = 0;
141
+ }
142
+ function getTaskSteps() {
143
+ return getSession().taskSteps;
144
+ }
145
+ function getCurrentStep() {
146
+ const session = getSession();
147
+ if (session.taskSteps.length === 0)
148
+ return null;
149
+ if (session.currentStepIndex >= session.taskSteps.length)
150
+ return null;
151
+ return session.taskSteps[session.currentStepIndex];
152
+ }
153
+ function advanceStep() {
154
+ const session = getSession();
155
+ session.currentStepIndex++;
156
+ return getCurrentStep();
157
+ }
158
+ function updateStepStatus(stepId, status) {
159
+ const session = getSession();
160
+ const step = session.taskSteps.find(s => s.id === stepId);
161
+ if (step) {
162
+ step.status = status;
163
+ }
164
+ }
165
+ function getStepProgress() {
166
+ const session = getSession();
167
+ const completed = session.taskSteps.filter(s => s.status === 'applied' || s.status === 'skipped').length;
168
+ return {
169
+ current: session.currentStepIndex + 1,
170
+ total: session.taskSteps.length,
171
+ completed,
172
+ };
173
+ }
174
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export interface Settings {
2
+ model: {
3
+ current: string;
4
+ };
5
+ ui: {
6
+ asciiLogo: 'on' | 'off';
7
+ color: 'auto' | 'on' | 'off';
8
+ promptStyle: 'compact' | 'verbose';
9
+ };
10
+ execution: {
11
+ confirmationMode: 'strict' | 'normal';
12
+ maxPlanIterations: number;
13
+ allowShellExec: boolean;
14
+ };
15
+ context: {
16
+ scope: 'open' | 'touched' | 'full';
17
+ maxTokens: number;
18
+ };
19
+ debug: {
20
+ logging: boolean;
21
+ errorDetail: 'brief' | 'full';
22
+ dumpState: boolean;
23
+ };
24
+ firstRun: boolean;
25
+ }
26
+ export declare const AVAILABLE_MODELS: string[];
27
+ export declare function loadSettings(): Settings;
28
+ export declare function saveSettings(settings: Settings): void;
29
+ export declare function getSetting<K extends keyof Settings>(key: K): Settings[K];
30
+ export declare function getModel(): string;
31
+ export declare function setModel(model: string): void;
32
+ export declare function markFirstRunComplete(): void;
33
+ export declare function isFirstRun(): boolean;
34
+ export declare function shouldShowColor(): boolean;
35
+ export declare function shouldShowLogo(): boolean;
36
+ export declare function setNestedSetting(path: string, value: string): boolean;
37
+ export declare function loadProjectSettings(projectPath?: string): Partial<Settings> | null;
38
+ export declare function getEffectiveSettings(projectPath?: string): Settings;
39
+ export declare function saveProjectSettings(settings: Partial<Settings>, projectPath?: string): void;
40
+ export declare function hasProjectSettings(projectPath?: string): boolean;
41
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,EAAE,EAAE;QACF,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;QAC7B,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC;KACpC,CAAC;IACF,SAAS,EAAE;QACT,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,CAAC;QACtC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;CACnB;AA6BD,eAAO,MAAM,gBAAgB,UAK5B,CAAC;AAIF,wBAAgB,YAAY,IAAI,QAAQ,CAiBvC;AAcD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAOrD;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAExE;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5C;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAwBrE;AAGD,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAclF;AAGD,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CASnE;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAU3F;AAGD,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAIhE"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AVAILABLE_MODELS = void 0;
37
+ exports.loadSettings = loadSettings;
38
+ exports.saveSettings = saveSettings;
39
+ exports.getSetting = getSetting;
40
+ exports.getModel = getModel;
41
+ exports.setModel = setModel;
42
+ exports.markFirstRunComplete = markFirstRunComplete;
43
+ exports.isFirstRun = isFirstRun;
44
+ exports.shouldShowColor = shouldShowColor;
45
+ exports.shouldShowLogo = shouldShowLogo;
46
+ exports.setNestedSetting = setNestedSetting;
47
+ exports.loadProjectSettings = loadProjectSettings;
48
+ exports.getEffectiveSettings = getEffectiveSettings;
49
+ exports.saveProjectSettings = saveProjectSettings;
50
+ exports.hasProjectSettings = hasProjectSettings;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ const SETTINGS_FILE = path.join(os.homedir(), '.zai', 'settings.json');
55
+ const PROJECT_SETTINGS_FILE = '.zai/settings.json';
56
+ const DEFAULT_SETTINGS = {
57
+ model: {
58
+ current: 'claude-sonnet-4-20250514',
59
+ },
60
+ ui: {
61
+ asciiLogo: 'on',
62
+ color: 'auto',
63
+ promptStyle: 'compact',
64
+ },
65
+ execution: {
66
+ confirmationMode: 'strict',
67
+ maxPlanIterations: 5,
68
+ allowShellExec: false,
69
+ },
70
+ context: {
71
+ scope: 'open',
72
+ maxTokens: 50000,
73
+ },
74
+ debug: {
75
+ logging: false,
76
+ errorDetail: 'brief',
77
+ dumpState: false,
78
+ },
79
+ firstRun: true,
80
+ };
81
+ // Available models
82
+ exports.AVAILABLE_MODELS = [
83
+ 'claude-sonnet-4-20250514',
84
+ 'claude-3-5-sonnet-20241022',
85
+ 'claude-3-5-haiku-20241022',
86
+ 'claude-3-opus-20240229',
87
+ ];
88
+ let cachedSettings = null;
89
+ function loadSettings() {
90
+ if (cachedSettings)
91
+ return cachedSettings;
92
+ try {
93
+ if (fs.existsSync(SETTINGS_FILE)) {
94
+ const content = fs.readFileSync(SETTINGS_FILE, 'utf-8');
95
+ const loaded = JSON.parse(content);
96
+ // Deep merge with defaults
97
+ cachedSettings = deepMerge(DEFAULT_SETTINGS, loaded);
98
+ return cachedSettings;
99
+ }
100
+ }
101
+ catch {
102
+ // Fall through to defaults
103
+ }
104
+ cachedSettings = { ...DEFAULT_SETTINGS };
105
+ return cachedSettings;
106
+ }
107
+ function deepMerge(defaults, overrides) {
108
+ const result = { ...defaults };
109
+ for (const key in overrides) {
110
+ if (overrides[key] !== null && typeof overrides[key] === 'object' && !Array.isArray(overrides[key])) {
111
+ result[key] = deepMerge(defaults[key], overrides[key]);
112
+ }
113
+ else if (overrides[key] !== undefined) {
114
+ result[key] = overrides[key];
115
+ }
116
+ }
117
+ return result;
118
+ }
119
+ function saveSettings(settings) {
120
+ const dir = path.dirname(SETTINGS_FILE);
121
+ if (!fs.existsSync(dir)) {
122
+ fs.mkdirSync(dir, { recursive: true });
123
+ }
124
+ fs.writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2), 'utf-8');
125
+ cachedSettings = settings;
126
+ }
127
+ function getSetting(key) {
128
+ return loadSettings()[key];
129
+ }
130
+ function getModel() {
131
+ return loadSettings().model.current;
132
+ }
133
+ function setModel(model) {
134
+ const settings = loadSettings();
135
+ settings.model.current = model;
136
+ saveSettings(settings);
137
+ }
138
+ function markFirstRunComplete() {
139
+ const settings = loadSettings();
140
+ settings.firstRun = false;
141
+ saveSettings(settings);
142
+ }
143
+ function isFirstRun() {
144
+ return loadSettings().firstRun;
145
+ }
146
+ function shouldShowColor() {
147
+ const settings = loadSettings();
148
+ if (settings.ui.color === 'off')
149
+ return false;
150
+ if (settings.ui.color === 'on')
151
+ return true;
152
+ return process.stdout.isTTY && process.env.TERM !== 'dumb';
153
+ }
154
+ function shouldShowLogo() {
155
+ return loadSettings().ui.asciiLogo === 'on';
156
+ }
157
+ function setNestedSetting(path, value) {
158
+ const settings = loadSettings();
159
+ const parts = path.split('.');
160
+ // Handle all nested settings
161
+ try {
162
+ let obj = settings;
163
+ for (let i = 0; i < parts.length - 1; i++) {
164
+ obj = obj[parts[i]];
165
+ if (!obj)
166
+ return false;
167
+ }
168
+ const key = parts[parts.length - 1];
169
+ // Type coercion
170
+ if (value === 'true')
171
+ obj[key] = true;
172
+ else if (value === 'false')
173
+ obj[key] = false;
174
+ else if (!isNaN(Number(value)))
175
+ obj[key] = Number(value);
176
+ else
177
+ obj[key] = value;
178
+ saveSettings(settings);
179
+ return true;
180
+ }
181
+ catch {
182
+ return false;
183
+ }
184
+ }
185
+ // Load project settings from current directory if exists
186
+ function loadProjectSettings(projectPath) {
187
+ const cwd = projectPath || process.cwd();
188
+ const projectSettingsPath = path.join(cwd, PROJECT_SETTINGS_FILE);
189
+ try {
190
+ if (fs.existsSync(projectSettingsPath)) {
191
+ const content = fs.readFileSync(projectSettingsPath, 'utf-8');
192
+ return JSON.parse(content);
193
+ }
194
+ }
195
+ catch {
196
+ // Ignore
197
+ }
198
+ return null;
199
+ }
200
+ // Get effective settings (project overrides global)
201
+ function getEffectiveSettings(projectPath) {
202
+ const globalSettings = loadSettings();
203
+ const projectSettings = loadProjectSettings(projectPath);
204
+ if (!projectSettings) {
205
+ return globalSettings;
206
+ }
207
+ return deepMerge(globalSettings, projectSettings);
208
+ }
209
+ // Save project settings
210
+ function saveProjectSettings(settings, projectPath) {
211
+ const cwd = projectPath || process.cwd();
212
+ const dir = path.join(cwd, '.zai');
213
+ const settingsPath = path.join(dir, 'settings.json');
214
+ if (!fs.existsSync(dir)) {
215
+ fs.mkdirSync(dir, { recursive: true });
216
+ }
217
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
218
+ }
219
+ // Check if project settings exist
220
+ function hasProjectSettings(projectPath) {
221
+ const cwd = projectPath || process.cwd();
222
+ const projectSettingsPath = path.join(cwd, PROJECT_SETTINGS_FILE);
223
+ return fs.existsSync(projectSettingsPath);
224
+ }
225
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,oCAiBC;AAcD,oCAOC;AAED,gCAEC;AAED,4BAEC;AAED,4BAIC;AAED,oDAIC;AAED,gCAEC;AAED,0CAKC;AAED,wCAEC;AAED,4CAwBC;AAGD,kDAcC;AAGD,oDASC;AAGD,kDAUC;AAGD,gDAIC;AAzND,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AACvE,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AA4BnD,MAAM,gBAAgB,GAAa;IACjC,KAAK,EAAE;QACL,OAAO,EAAE,0BAA0B;KACpC;IACD,EAAE,EAAE;QACF,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,SAAS;KACvB;IACD,SAAS,EAAE;QACT,gBAAgB,EAAE,QAAQ;QAC1B,iBAAiB,EAAE,CAAC;QACpB,cAAc,EAAE,KAAK;KACtB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,KAAK;KACjB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,KAAK;KACjB;IACD,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,mBAAmB;AACN,QAAA,gBAAgB,GAAG;IAC9B,0BAA0B;IAC1B,4BAA4B;IAC5B,2BAA2B;IAC3B,wBAAwB;CACzB,CAAC;AAEF,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C,SAAgB,YAAY;IAC1B,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAE1C,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,2BAA2B;YAC3B,cAAc,GAAG,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,cAAc,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACzC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,SAAS,CAAI,QAAW,EAAE,SAAqB;IACtD,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnG,MAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAE,QAAgB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAQ,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACvC,MAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,YAAY,CAAC,QAAkB;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,cAAc,GAAG,QAAQ,CAAC;AAC5B,CAAC;AAED,SAAgB,UAAU,CAA2B,GAAM;IACzD,OAAO,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,QAAQ;IACtB,OAAO,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACtC,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAa;IACpC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC/B,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,oBAAoB;IAClC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC,QAAQ,CAAC;AACjC,CAAC;AAED,SAAgB,eAAe;IAC7B,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;AAC7D,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,YAAY,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,6BAA6B;IAC7B,IAAI,CAAC;QACH,IAAI,GAAG,GAAQ,QAAQ,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEpC,gBAAgB;QAChB,IAAI,KAAK,KAAK,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aACjC,IAAI,KAAK,KAAK,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;YACpD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAEtB,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,SAAgB,mBAAmB,CAAC,WAAoB;IACtD,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oDAAoD;AACpD,SAAgB,oBAAoB,CAAC,WAAoB;IACvD,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED,wBAAwB;AACxB,SAAgB,mBAAmB,CAAC,QAA2B,EAAE,WAAoB;IACnF,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAED,kCAAkC;AAClC,SAAgB,kBAAkB,CAAC,WAAoB;IACrD,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function openSettingsMenu(): Promise<void>;
2
+ //# sourceMappingURL=settings_menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings_menu.d.ts","sourceRoot":"","sources":["../src/settings_menu.ts"],"names":[],"mappings":"AAwJA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2ItD"}