lsh-framework 0.5.4

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 (90) hide show
  1. package/.env.example +51 -0
  2. package/README.md +399 -0
  3. package/dist/app.js +33 -0
  4. package/dist/cicd/analytics.js +261 -0
  5. package/dist/cicd/auth.js +269 -0
  6. package/dist/cicd/cache-manager.js +172 -0
  7. package/dist/cicd/data-retention.js +305 -0
  8. package/dist/cicd/performance-monitor.js +224 -0
  9. package/dist/cicd/webhook-receiver.js +634 -0
  10. package/dist/cli.js +500 -0
  11. package/dist/commands/api.js +343 -0
  12. package/dist/commands/self.js +318 -0
  13. package/dist/commands/theme.js +257 -0
  14. package/dist/commands/zsh-import.js +240 -0
  15. package/dist/components/App.js +1 -0
  16. package/dist/components/Divider.js +29 -0
  17. package/dist/components/REPL.js +43 -0
  18. package/dist/components/Terminal.js +232 -0
  19. package/dist/components/UserInput.js +30 -0
  20. package/dist/daemon/api-server.js +315 -0
  21. package/dist/daemon/job-registry.js +554 -0
  22. package/dist/daemon/lshd.js +822 -0
  23. package/dist/daemon/monitoring-api.js +220 -0
  24. package/dist/examples/supabase-integration.js +106 -0
  25. package/dist/lib/api-error-handler.js +183 -0
  26. package/dist/lib/associative-arrays.js +285 -0
  27. package/dist/lib/base-api-server.js +290 -0
  28. package/dist/lib/base-command-registrar.js +286 -0
  29. package/dist/lib/base-job-manager.js +293 -0
  30. package/dist/lib/brace-expansion.js +160 -0
  31. package/dist/lib/builtin-commands.js +439 -0
  32. package/dist/lib/cloud-config-manager.js +347 -0
  33. package/dist/lib/command-validator.js +190 -0
  34. package/dist/lib/completion-system.js +344 -0
  35. package/dist/lib/cron-job-manager.js +364 -0
  36. package/dist/lib/daemon-client-helper.js +141 -0
  37. package/dist/lib/daemon-client.js +501 -0
  38. package/dist/lib/database-persistence.js +638 -0
  39. package/dist/lib/database-schema.js +259 -0
  40. package/dist/lib/enhanced-history-system.js +246 -0
  41. package/dist/lib/env-validator.js +265 -0
  42. package/dist/lib/executors/builtin-executor.js +52 -0
  43. package/dist/lib/extended-globbing.js +411 -0
  44. package/dist/lib/extended-parameter-expansion.js +227 -0
  45. package/dist/lib/floating-point-arithmetic.js +256 -0
  46. package/dist/lib/history-system.js +245 -0
  47. package/dist/lib/interactive-shell.js +460 -0
  48. package/dist/lib/job-builtins.js +580 -0
  49. package/dist/lib/job-manager.js +386 -0
  50. package/dist/lib/job-storage-database.js +156 -0
  51. package/dist/lib/job-storage-memory.js +73 -0
  52. package/dist/lib/logger.js +274 -0
  53. package/dist/lib/lshrc-init.js +177 -0
  54. package/dist/lib/pathname-expansion.js +216 -0
  55. package/dist/lib/prompt-system.js +328 -0
  56. package/dist/lib/script-runner.js +226 -0
  57. package/dist/lib/secrets-manager.js +193 -0
  58. package/dist/lib/shell-executor.js +2504 -0
  59. package/dist/lib/shell-parser.js +958 -0
  60. package/dist/lib/shell-types.js +6 -0
  61. package/dist/lib/shell.lib.js +40 -0
  62. package/dist/lib/supabase-client.js +58 -0
  63. package/dist/lib/theme-manager.js +476 -0
  64. package/dist/lib/variable-expansion.js +385 -0
  65. package/dist/lib/zsh-compatibility.js +658 -0
  66. package/dist/lib/zsh-import-manager.js +699 -0
  67. package/dist/lib/zsh-options.js +328 -0
  68. package/dist/pipeline/job-tracker.js +491 -0
  69. package/dist/pipeline/mcli-bridge.js +302 -0
  70. package/dist/pipeline/pipeline-service.js +1116 -0
  71. package/dist/pipeline/workflow-engine.js +867 -0
  72. package/dist/services/api/api.js +58 -0
  73. package/dist/services/api/auth.js +35 -0
  74. package/dist/services/api/config.js +7 -0
  75. package/dist/services/api/file.js +22 -0
  76. package/dist/services/cron/cron-registrar.js +235 -0
  77. package/dist/services/cron/cron.js +9 -0
  78. package/dist/services/daemon/daemon-registrar.js +565 -0
  79. package/dist/services/daemon/daemon.js +9 -0
  80. package/dist/services/lib/lib.js +86 -0
  81. package/dist/services/log-file-extractor.js +170 -0
  82. package/dist/services/secrets/secrets.js +94 -0
  83. package/dist/services/shell/shell.js +28 -0
  84. package/dist/services/supabase/supabase-registrar.js +367 -0
  85. package/dist/services/supabase/supabase.js +9 -0
  86. package/dist/services/zapier.js +16 -0
  87. package/dist/simple-api-server.js +148 -0
  88. package/dist/store/store.js +31 -0
  89. package/dist/util/lib.util.js +11 -0
  90. package/package.json +144 -0
@@ -0,0 +1,328 @@
1
+ /**
2
+ * ZSH-Style Options System Implementation
3
+ * Provides setopt/unsetopt functionality and ZSH-specific options
4
+ */
5
+ export class ZshOptionsManager {
6
+ options;
7
+ optionAliases = new Map();
8
+ constructor() {
9
+ this.options = this.getDefaultOptions();
10
+ this.setupOptionAliases();
11
+ }
12
+ /**
13
+ * Set an option with setopt
14
+ */
15
+ setopt(optionName) {
16
+ const normalizedName = this.normalizeOptionName(optionName);
17
+ if (!(normalizedName in this.options)) {
18
+ return { success: false, message: `setopt: no such option: ${optionName}` };
19
+ }
20
+ this.options[normalizedName] = true;
21
+ return { success: true, message: '' };
22
+ }
23
+ /**
24
+ * Unset an option with unsetopt
25
+ */
26
+ unsetopt(optionName) {
27
+ const normalizedName = this.normalizeOptionName(optionName);
28
+ if (!(normalizedName in this.options)) {
29
+ return { success: false, message: `unsetopt: no such option: ${optionName}` };
30
+ }
31
+ this.options[normalizedName] = false;
32
+ return { success: true, message: '' };
33
+ }
34
+ /**
35
+ * Get option value
36
+ */
37
+ getOption(optionName) {
38
+ const normalizedName = this.normalizeOptionName(optionName);
39
+ return this.options[normalizedName];
40
+ }
41
+ /**
42
+ * Check if option is set
43
+ */
44
+ isOptionSet(optionName) {
45
+ return this.getOption(optionName) === true;
46
+ }
47
+ /**
48
+ * Get all options
49
+ */
50
+ getAllOptions() {
51
+ return { ...this.options };
52
+ }
53
+ /**
54
+ * List all options with their values
55
+ */
56
+ listOptions() {
57
+ const lines = [];
58
+ for (const [key, value] of Object.entries(this.options)) {
59
+ const status = value ? 'on' : 'off';
60
+ lines.push(`${key}: ${status}`);
61
+ }
62
+ return lines.sort().join('\n');
63
+ }
64
+ /**
65
+ * Parse setopt/unsetopt command arguments
66
+ */
67
+ parseSetoptCommand(args) {
68
+ if (args.length === 0) {
69
+ return { success: false, message: 'setopt: missing option name' };
70
+ }
71
+ for (const arg of args) {
72
+ if (arg.startsWith('-')) {
73
+ // Handle multiple options like setopt -o option1,option2
74
+ const options = arg.substring(2).split(',');
75
+ for (const option of options) {
76
+ const result = this.setopt(option);
77
+ if (!result.success) {
78
+ return result;
79
+ }
80
+ }
81
+ }
82
+ else {
83
+ const result = this.setopt(arg);
84
+ if (!result.success) {
85
+ return result;
86
+ }
87
+ }
88
+ }
89
+ return { success: true, message: '' };
90
+ }
91
+ /**
92
+ * Parse unsetopt command arguments
93
+ */
94
+ parseUnsetoptCommand(args) {
95
+ if (args.length === 0) {
96
+ return { success: false, message: 'unsetopt: missing option name' };
97
+ }
98
+ for (const arg of args) {
99
+ if (arg.startsWith('-')) {
100
+ // Handle multiple options like unsetopt -o option1,option2
101
+ const options = arg.substring(2).split(',');
102
+ for (const option of options) {
103
+ const result = this.unsetopt(option);
104
+ if (!result.success) {
105
+ return result;
106
+ }
107
+ }
108
+ }
109
+ else {
110
+ const result = this.unsetopt(arg);
111
+ if (!result.success) {
112
+ return result;
113
+ }
114
+ }
115
+ }
116
+ return { success: true, message: '' };
117
+ }
118
+ /**
119
+ * Get default options
120
+ */
121
+ getDefaultOptions() {
122
+ return {
123
+ // History options (defaults)
124
+ SHARE_HISTORY: false,
125
+ HIST_IGNORE_DUPS: false,
126
+ HIST_IGNORE_SPACE: false,
127
+ HIST_EXPIRE_DUPS_FIRST: false,
128
+ HIST_SAVE_NO_DUPS: false,
129
+ HIST_FIND_NO_DUPS: false,
130
+ HIST_REDUCE_BLANKS: false,
131
+ HIST_VERIFY: false,
132
+ HIST_BEEP: true,
133
+ HIST_FCNTL_LOCK: false,
134
+ HIST_LEX_WORDS: false,
135
+ HIST_NO_FUNCTIONS: false,
136
+ HIST_NO_STORE: false,
137
+ // Completion options (defaults)
138
+ AUTO_LIST: false,
139
+ AUTO_MENU: false,
140
+ AUTO_PARAM_SLASH: true,
141
+ AUTO_REMOVE_SLASH: true,
142
+ COMPLETE_IN_WORD: false,
143
+ COMPLETE_ALIASES: false,
144
+ GLOB_COMPLETE: false,
145
+ LIST_AMBIGUOUS: true,
146
+ LIST_PACKED: false,
147
+ LIST_ROWS_FIRST: false,
148
+ LIST_TYPES: false,
149
+ MENU_COMPLETE: false,
150
+ REC_EXACT: false,
151
+ // Globbing options (defaults)
152
+ EXTENDED_GLOB: false,
153
+ GLOB_DOTS: false,
154
+ GLOB_STAR_SHORT: false,
155
+ GLOB_SUBST: false,
156
+ NOMATCH: true,
157
+ NULL_GLOB: false,
158
+ // Directory options (defaults)
159
+ AUTO_CD: false,
160
+ AUTO_PUSHD: false,
161
+ CDABLE_VARS: false,
162
+ CD_SILENT: false,
163
+ PUSHD_IGNORE_DUPS: false,
164
+ PUSHD_MINUS: false,
165
+ PUSHD_SILENT: false,
166
+ PUSHD_TO_HOME: false,
167
+ // Input/Output options (defaults)
168
+ CORRECT: false,
169
+ CORRECT_ALL: false,
170
+ DVORAK: false,
171
+ FLOW_CONTROL: true,
172
+ IGNORE_EOF: false,
173
+ INTERACTIVE_COMMENTS: true,
174
+ PRINT_EIGHT_BIT: false,
175
+ PRINT_EXIT_VALUE: false,
176
+ RM_STAR_SILENT: false,
177
+ RM_STAR_WAIT: false,
178
+ SHORT_LOOPS: false,
179
+ SUN_KEYBOARD_HACK: false,
180
+ // Job control options (defaults)
181
+ AUTO_RESUME: false,
182
+ BG_NICE: false,
183
+ CHECK_JOBS: true,
184
+ HUP: true,
185
+ LONG_LIST_JOBS: false,
186
+ MONITOR: true,
187
+ NOTIFY: true,
188
+ // Prompt options (defaults)
189
+ PROMPT_BANG: true,
190
+ PROMPT_CR: true,
191
+ PROMPT_PERCENT: true,
192
+ PROMPT_SP: false,
193
+ PROMPT_SUBST: false,
194
+ TRANSIENT_RPROMPT: false,
195
+ // Zle options (defaults)
196
+ BEEP: true,
197
+ COMBINING_CHARS: false,
198
+ EMACS: true,
199
+ OVERSTRIKE: false,
200
+ SINGLE_LINE_ZLE: false,
201
+ VI: false,
202
+ ZLE: true,
203
+ // Other options (defaults)
204
+ ALWAYS_LAST_PROMPT: false,
205
+ APPEND_HISTORY: true,
206
+ BANG_HIST: true,
207
+ CLOBBER: true,
208
+ EQUALS: false,
209
+ FUNCTION_ARGZERO: false,
210
+ GLOBAL_EXPORT: false,
211
+ GLOBAL_RCS: true,
212
+ GLOBAL_SUBST: false,
213
+ HIST_APPEND: true,
214
+ HIST_EXPAND: true,
215
+ INC_APPEND_HISTORY: false,
216
+ KSH_ARRAYS: false,
217
+ KSH_AUTOLOAD: false,
218
+ KSH_GLOB: false,
219
+ KSH_OPTION_PRINT: false,
220
+ KSH_TYPESET: false,
221
+ KSH_ZERO_SUBSCRIPT: false,
222
+ MAGIC_EQUAL_SUBST: false,
223
+ MARK_DIRS: false,
224
+ MULTIOS: true,
225
+ NO_BEEP: false,
226
+ NO_CLOBBER: false,
227
+ NO_FLOW_CONTROL: false,
228
+ NO_GLOBAL_EXPORT: false,
229
+ NO_GLOBAL_RCS: false,
230
+ NO_GLOBAL_SUBST: false,
231
+ NO_HIST_BEEP: false,
232
+ NO_LIST_AMBIGUOUS: false,
233
+ NO_LIST_BEEP: false,
234
+ NO_LOGIN: false,
235
+ NO_MATCH: false,
236
+ NO_NOMATCH: false,
237
+ NO_PROMPT_BANG: false,
238
+ NO_PROMPT_CR: false,
239
+ NO_RM_STAR_SILENT: false,
240
+ NO_RM_STAR_WAIT: false,
241
+ NO_SHORT_LOOPS: false,
242
+ NO_UNSET: false,
243
+ NO_WARN_CREATE_GLOBAL: false,
244
+ NUMERIC_GLOB_SORT: false,
245
+ PIPE_FAIL: false,
246
+ POSIX_ALIASES: false,
247
+ POSIX_BUILTINS: false,
248
+ POSIX_CD: false,
249
+ POSIX_IDENTIFIERS: false,
250
+ POSIX_JOBS: false,
251
+ POSIX_STRINGS: false,
252
+ POSIX_TRAPS: false,
253
+ PRIVILEGED: false,
254
+ RC_EXPAND_PARAM: false,
255
+ RC_QUOTES: false,
256
+ SHORT_REPEAT: false,
257
+ UNSET: false,
258
+ WARN_CREATE_GLOBAL: false,
259
+ WARN_NESTED_VAR: false,
260
+ XTRACE: false,
261
+ };
262
+ }
263
+ /**
264
+ * Setup option aliases
265
+ */
266
+ setupOptionAliases() {
267
+ // Common aliases
268
+ this.optionAliases.set('autocd', 'AUTO_CD');
269
+ this.optionAliases.set('correct', 'CORRECT');
270
+ this.optionAliases.set('extendedglob', 'EXTENDED_GLOB');
271
+ this.optionAliases.set('sharehistory', 'SHARE_HISTORY');
272
+ this.optionAliases.set('histignoredups', 'HIST_IGNORE_DUPS');
273
+ this.optionAliases.set('histignorespace', 'HIST_IGNORE_SPACE');
274
+ this.optionAliases.set('automenu', 'AUTO_MENU');
275
+ this.optionAliases.set('autolist', 'AUTO_LIST');
276
+ this.optionAliases.set('menucomplete', 'MENU_COMPLETE');
277
+ this.optionAliases.set('globdots', 'GLOB_DOTS');
278
+ this.optionAliases.set('nomatch', 'NOMATCH');
279
+ this.optionAliases.set('nullglob', 'NULL_GLOB');
280
+ this.optionAliases.set('autopushd', 'AUTO_PUSHD');
281
+ this.optionAliases.set('pushdignoredups', 'PUSHD_IGNORE_DUPS');
282
+ this.optionAliases.set('pushdminus', 'PUSHD_MINUS');
283
+ this.optionAliases.set('pushdsilent', 'PUSHD_SILENT');
284
+ this.optionAliases.set('pushdtohome', 'PUSHD_TO_HOME');
285
+ this.optionAliases.set('cdsilent', 'CD_SILENT');
286
+ this.optionAliases.set('cdablevars', 'CDABLE_VARS');
287
+ this.optionAliases.set('correctall', 'CORRECT_ALL');
288
+ this.optionAliases.set('ignoreeof', 'IGNORE_EOF');
289
+ this.optionAliases.set('interactivecomments', 'INTERACTIVE_COMMENTS');
290
+ this.optionAliases.set('printeightbit', 'PRINT_EIGHT_BIT');
291
+ this.optionAliases.set('printexitvalue', 'PRINT_EXIT_VALUE');
292
+ this.optionAliases.set('rmstarsilent', 'RM_STAR_SILENT');
293
+ this.optionAliases.set('rmstarwait', 'RM_STAR_WAIT');
294
+ this.optionAliases.set('shortloops', 'SHORT_LOOPS');
295
+ this.optionAliases.set('autoresume', 'AUTO_RESUME');
296
+ this.optionAliases.set('bgnice', 'BG_NICE');
297
+ this.optionAliases.set('checkjobs', 'CHECK_JOBS');
298
+ this.optionAliases.set('hup', 'HUP');
299
+ this.optionAliases.set('longlistjobs', 'LONG_LIST_JOBS');
300
+ this.optionAliases.set('monitor', 'MONITOR');
301
+ this.optionAliases.set('notify', 'NOTIFY');
302
+ this.optionAliases.set('promptbang', 'PROMPT_BANG');
303
+ this.optionAliases.set('promptcr', 'PROMPT_CR');
304
+ this.optionAliases.set('promptpercent', 'PROMPT_PERCENT');
305
+ this.optionAliases.set('promptsp', 'PROMPT_SP');
306
+ this.optionAliases.set('promptsubst', 'PROMPT_SUBST');
307
+ this.optionAliases.set('transientrprompt', 'TRANSIENT_RPROMPT');
308
+ this.optionAliases.set('beep', 'BEEP');
309
+ this.optionAliases.set('combiningchars', 'COMBINING_CHARS');
310
+ this.optionAliases.set('emacs', 'EMACS');
311
+ this.optionAliases.set('overstrike', 'OVERSTRIKE');
312
+ this.optionAliases.set('singlelinezle', 'SINGLE_LINE_ZLE');
313
+ this.optionAliases.set('vi', 'VI');
314
+ this.optionAliases.set('zle', 'ZLE');
315
+ }
316
+ /**
317
+ * Normalize option name (handle aliases and case)
318
+ */
319
+ normalizeOptionName(optionName) {
320
+ const upperName = optionName.toUpperCase();
321
+ // Check if it's an alias
322
+ if (this.optionAliases.has(optionName.toLowerCase())) {
323
+ return this.optionAliases.get(optionName.toLowerCase());
324
+ }
325
+ return upperName;
326
+ }
327
+ }
328
+ export default ZshOptionsManager;