stigmergy 1.1.6 → 1.2.6

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 (118) hide show
  1. package/LICENSE +18 -18
  2. package/README.md +28 -223
  3. package/STIGMERGY.md +61 -61
  4. package/docs/PROJECT_CONSTITUTION.md +433 -433
  5. package/docs/PROJECT_STRUCTURE_CURRENT.md +80 -80
  6. package/examples/calculator-example.js +72 -72
  7. package/examples/cline_usage_examples.md +364 -364
  8. package/examples/encryption-example.js +67 -67
  9. package/examples/json-parser-example.js +120 -120
  10. package/examples/json-validation-example.js +64 -64
  11. package/examples/rest-client-example.js +52 -52
  12. package/examples/rest_client_example.js +54 -54
  13. package/package.json +15 -7
  14. package/scripts/build.js +74 -74
  15. package/scripts/post-deployment-config.js +296 -296
  16. package/scripts/preinstall-check.js +173 -111
  17. package/scripts/publish.js +58 -268
  18. package/scripts/run-layered-tests.js +247 -0
  19. package/scripts/safe-install.js +139 -139
  20. package/scripts/simple-publish.js +57 -59
  21. package/src/adapters/claude/install_claude_integration.js +292 -0
  22. package/src/adapters/codebuddy/install_codebuddy_integration.js +349 -0
  23. package/src/adapters/codex/install_codex_integration.js +395 -0
  24. package/src/adapters/copilot/install_copilot_integration.js +716 -0
  25. package/src/adapters/gemini/install_gemini_integration.js +304 -0
  26. package/src/adapters/iflow/install_iflow_integration.js +304 -0
  27. package/src/adapters/qoder/install_qoder_integration.js +1090 -0
  28. package/src/adapters/qwen/install_qwen_integration.js +285 -0
  29. package/src/auth.js +173 -173
  30. package/src/auth_command.js +208 -208
  31. package/src/calculator.js +313 -313
  32. package/src/cli/router.js +792 -67
  33. package/src/core/cache_cleaner.js +767 -0
  34. package/src/core/cli_help_analyzer.js +680 -674
  35. package/src/core/cli_parameter_handler.js +132 -127
  36. package/src/core/cli_tools.js +89 -89
  37. package/src/core/coordination/index.js +16 -16
  38. package/src/core/coordination/nodejs/AdapterManager.js +102 -89
  39. package/src/core/coordination/nodejs/CLCommunication.js +132 -124
  40. package/src/core/coordination/nodejs/CLIIntegrationManager.js +272 -236
  41. package/src/core/coordination/nodejs/HealthChecker.js +76 -77
  42. package/src/core/coordination/nodejs/HookDeploymentManager.js +263 -190
  43. package/src/core/coordination/nodejs/StatisticsCollector.js +71 -71
  44. package/src/core/coordination/nodejs/index.js +90 -72
  45. package/src/core/coordination/nodejs/utils/Logger.js +29 -29
  46. package/src/core/enhanced_installer.js +479 -0
  47. package/src/core/enhanced_uninstaller.js +638 -0
  48. package/src/core/error_handler.js +406 -406
  49. package/src/core/installer.js +816 -294
  50. package/src/core/memory_manager.js +83 -83
  51. package/src/core/rest_client.js +160 -160
  52. package/src/core/smart_router.js +249 -146
  53. package/src/core/upgrade_manager.js +420 -0
  54. package/src/data_encryption.js +143 -143
  55. package/src/data_structures.js +440 -440
  56. package/src/deploy.js +55 -55
  57. package/src/index.js +30 -30
  58. package/src/test/cli-availability-checker.js +194 -0
  59. package/src/test/test-environment.js +289 -0
  60. package/src/utils/helpers.js +35 -35
  61. package/src/utils.js +921 -915
  62. package/src/weatherProcessor.js +228 -228
  63. package/test/calculator.test.js +0 -215
  64. package/test/collision-test.js +0 -26
  65. package/test/comprehensive-execution-test.js +0 -428
  66. package/test/conflict-prevention-test.js +0 -95
  67. package/test/cross-cli-detection-test.js +0 -33
  68. package/test/csv-processing-test.js +0 -36
  69. package/test/deploy-hooks-test.js +0 -250
  70. package/test/e2e/claude-cli-test.js +0 -128
  71. package/test/e2e/collaboration-test.js +0 -75
  72. package/test/e2e/comprehensive-test.js +0 -431
  73. package/test/e2e/error-handling-test.js +0 -90
  74. package/test/e2e/individual-tool-test.js +0 -143
  75. package/test/e2e/other-cli-test.js +0 -130
  76. package/test/e2e/qoder-cli-test.js +0 -128
  77. package/test/e2e/run-e2e-tests.js +0 -73
  78. package/test/e2e/test-data.js +0 -88
  79. package/test/e2e/test-utils.js +0 -222
  80. package/test/encryption-simple-test.js +0 -110
  81. package/test/encryption.test.js +0 -129
  82. package/test/enhanced-main-alignment.test.js +0 -298
  83. package/test/error-handling-test.js +0 -341
  84. package/test/fibonacci.test.js +0 -178
  85. package/test/final-deploy-test.js +0 -221
  86. package/test/final-install-test.js +0 -226
  87. package/test/hash-table-demo.js +0 -33
  88. package/test/hash-table-test.js +0 -26
  89. package/test/hash_table_test.js +0 -114
  90. package/test/hook-system-integration-test.js +0 -307
  91. package/test/iflow-integration-test.js +0 -292
  92. package/test/improved-install-test.js +0 -362
  93. package/test/install-command-test.js +0 -370
  94. package/test/json-parser-test.js +0 -161
  95. package/test/json-validation-test.js +0 -164
  96. package/test/natural-language-skills-test.js +0 -320
  97. package/test/nl-integration-test.js +0 -179
  98. package/test/parameter-parsing-test.js +0 -143
  99. package/test/plugin-deployment-test.js +0 -316
  100. package/test/postinstall-test.js +0 -269
  101. package/test/python-plugins-test.js +0 -259
  102. package/test/real-test.js +0 -435
  103. package/test/remaining-adapters-test.js +0 -256
  104. package/test/rest-client-test.js +0 -56
  105. package/test/rest_client.test.js +0 -85
  106. package/test/simple-iflow-hook-test.js +0 -137
  107. package/test/system-compatibility-test.js +0 -467
  108. package/test/tdd-deploy-fix-test.js +0 -324
  109. package/test/tdd-fixes-test.js +0 -211
  110. package/test/third-party-skills-test.js +0 -321
  111. package/test/tool-selection-integration-test.js +0 -158
  112. package/test/unit/calculator-full.test.js +0 -191
  113. package/test/unit/calculator-simple.test.js +0 -96
  114. package/test/unit/calculator.test.js +0 -97
  115. package/test/unit/cli-scanner.test.js +0 -291
  116. package/test/unit/cli_parameter_handler.test.js +0 -116
  117. package/test/unit/cross-cli-executor.test.js +0 -399
  118. package/test/weather-processor.test.js +0 -104
package/src/calculator.js CHANGED
@@ -1,313 +1,313 @@
1
- /**
2
- * Calculator class for performing basic arithmetic operations
3
- */
4
- class Calculator {
5
- /**
6
- * Create a new Calculator
7
- */
8
- constructor() {
9
- this.result = 0;
10
- }
11
-
12
- /**
13
- * Add two numbers
14
- * @param {number} a - First number
15
- * @param {number} b - Second number
16
- * @returns {number} Sum of a and b
17
- */
18
- add(a, b) {
19
- return a + b;
20
- }
21
-
22
- /**
23
- * Subtract two numbers
24
- * @param {number} a - First number
25
- * @param {number} b - Second number
26
- * @returns {number} Difference of a and b
27
- */
28
- subtract(a, b) {
29
- return a - b;
30
- }
31
-
32
- /**
33
- * Multiply two numbers
34
- * @param {number} a - First number
35
- * @param {number} b - Second number
36
- * @returns {number} Product of a and b
37
- */
38
- multiply(a, b) {
39
- return a * b;
40
- }
41
-
42
- /**
43
- * Divide two numbers
44
- * @param {number} a - Dividend
45
- * @param {number} b - Divisor
46
- * @returns {number} Quotient of a and b
47
- * @throws {Error} If dividing by zero
48
- */
49
- divide(a, b) {
50
- if (b === 0) {
51
- throw new Error('Cannot divide by zero');
52
- }
53
- return a / b;
54
- }
55
-
56
- /**
57
- * Calculate the power of a number
58
- * @param {number} base - Base number
59
- * @param {number} exponent - Exponent
60
- * @returns {number} Base raised to the power of exponent
61
- */
62
- power(base, exponent) {
63
- return Math.pow(base, exponent);
64
- }
65
-
66
- /**
67
- * Calculate the square root of a number
68
- * @param {number} a - Number to calculate square root for
69
- * @returns {number} Square root of a
70
- * @throws {Error} If calculating square root of negative number
71
- */
72
- sqrt(a) {
73
- if (a < 0) {
74
- throw new Error('Cannot calculate square root of negative number');
75
- }
76
- return Math.sqrt(a);
77
- }
78
-
79
- /**
80
- * Calculate the factorial of a number
81
- * @param {number} n - Number to calculate factorial for
82
- * @returns {number} Factorial of n
83
- * @throws {Error} If calculating factorial of negative number
84
- */
85
- factorial(n) {
86
- if (n < 0) {
87
- throw new Error('Cannot calculate factorial of negative number');
88
- }
89
-
90
- if (n === 0 || n === 1) {
91
- return 1;
92
- }
93
-
94
- let result = 1;
95
- for (let i = 2; i <= n; i++) {
96
- result *= i;
97
- }
98
- return result;
99
- }
100
-
101
- /**
102
- * Calculate percentage
103
- * @param {number} part - Part value
104
- * @param {number} whole - Whole value
105
- * @returns {number} Percentage of part in relation to whole
106
- */
107
- percentage(part, whole) {
108
- if (whole === 0) {
109
- throw new Error('Cannot calculate percentage with zero as whole');
110
- }
111
- return (part / whole) * 100;
112
- }
113
-
114
- /**
115
- * Find the maximum of two numbers
116
- * @param {number} a - First number
117
- * @param {number} b - Second number
118
- * @returns {number} The larger of the two numbers
119
- */
120
- max(a, b) {
121
- return Math.max(a, b);
122
- }
123
-
124
- /**
125
- * Find the minimum of two numbers
126
- * @param {number} a - First number
127
- * @param {number} b - Second number
128
- * @returns {number} The smaller of the two numbers
129
- */
130
- min(a, b) {
131
- return Math.min(a, b);
132
- }
133
-
134
- /**
135
- * Calculate the nth Fibonacci number
136
- * @param {number} n - Position in the Fibonacci sequence (0-indexed)
137
- * @returns {number} The nth Fibonacci number
138
- * @throws {Error} If n is negative or not an integer
139
- */
140
- fibonacci(n) {
141
- if (n < 0) {
142
- throw new Error('Cannot calculate Fibonacci of negative number');
143
- }
144
-
145
- if (!Number.isInteger(n)) {
146
- throw new Error('Fibonacci input must be an integer');
147
- }
148
-
149
- if (n === 0) return 0;
150
- if (n === 1) return 1;
151
-
152
- let prev = 0;
153
- let curr = 1;
154
-
155
- for (let i = 2; i <= n; i++) {
156
- const next = prev + curr;
157
- prev = curr;
158
- curr = next;
159
- }
160
-
161
- return curr;
162
- }
163
-
164
- /**
165
- * Generate a Fibonacci sequence up to n terms
166
- * @param {number} n - Number of terms to generate
167
- * @returns {Array<number>} Array containing the first n Fibonacci numbers
168
- * @throws {Error} If n is negative or not an integer
169
- */
170
- fibonacciSequence(n) {
171
- if (n < 0) {
172
- throw new Error(
173
- 'Cannot generate Fibonacci sequence with negative length',
174
- );
175
- }
176
-
177
- if (!Number.isInteger(n)) {
178
- throw new Error('Fibonacci sequence length must be an integer');
179
- }
180
-
181
- if (n === 0) return [];
182
- if (n === 1) return [0];
183
- if (n === 2) return [0, 1];
184
-
185
- const sequence = [0, 1];
186
-
187
- for (let i = 2; i < n; i++) {
188
- sequence[i] = sequence[i - 1] + sequence[i - 2];
189
- }
190
-
191
- return sequence;
192
- }
193
-
194
- /**
195
- * Calculate the circumference of a circle
196
- * @param {number} radius - The radius of the circle
197
- * @returns {number} The circumference of the circle
198
- * @throws {Error} If radius is negative
199
- */
200
- circleCircumference(radius) {
201
- if (radius < 0) {
202
- throw new Error('Radius cannot be negative');
203
- }
204
- return 2 * Math.PI * radius;
205
- }
206
-
207
- /**
208
- * Chain calculations with a running result
209
- * @param {number} initialValue - Starting value for calculations
210
- * @returns {CalculationChain} Object for chaining calculations
211
- */
212
- chain(initialValue = 0) {
213
- return new CalculationChain(initialValue);
214
- }
215
- }
216
-
217
- /**
218
- * Helper class for chaining calculations
219
- */
220
- class CalculationChain {
221
- /**
222
- * Create a new calculation chain
223
- * @param {number} initialValue - Starting value
224
- */
225
- constructor(initialValue) {
226
- this.result = initialValue;
227
- }
228
-
229
- /**
230
- * Add a number to the current result
231
- * @param {number} value - Number to add
232
- * @returns {CalculationChain} This chain instance
233
- */
234
- add(value) {
235
- this.result += value;
236
- return this;
237
- }
238
-
239
- /**
240
- * Subtract a number from the current result
241
- * @param {number} value - Number to subtract
242
- * @returns {CalculationChain} This chain instance
243
- */
244
- subtract(value) {
245
- this.result -= value;
246
- return this;
247
- }
248
-
249
- /**
250
- * Multiply the current result by a number
251
- * @param {number} value - Number to multiply by
252
- * @returns {CalculationChain} This chain instance
253
- */
254
- multiply(value) {
255
- this.result *= value;
256
- return this;
257
- }
258
-
259
- /**
260
- * Divide the current result by a number
261
- * @param {number} value - Number to divide by
262
- * @returns {CalculationChain} This chain instance
263
- * @throws {Error} If dividing by zero
264
- */
265
- divide(value) {
266
- if (value === 0) {
267
- throw new Error('Cannot divide by zero');
268
- }
269
- this.result /= value;
270
- return this;
271
- }
272
-
273
- /**
274
- * Raise the current result to a power
275
- * @param {number} exponent - Exponent
276
- * @returns {CalculationChain} This chain instance
277
- */
278
- power(exponent) {
279
- this.result = Math.pow(this.result, exponent);
280
- return this;
281
- }
282
-
283
- /**
284
- * Calculate the square root of the current result
285
- * @returns {CalculationChain} This chain instance
286
- * @throws {Error} If calculating square root of negative number
287
- */
288
- sqrt() {
289
- if (this.result < 0) {
290
- throw new Error('Cannot calculate square root of negative number');
291
- }
292
- this.result = Math.sqrt(this.result);
293
- return this;
294
- }
295
-
296
- /**
297
- * Get the final result of the chained calculations
298
- * @returns {number} Final result
299
- */
300
- equals() {
301
- return this.result;
302
- }
303
-
304
- /**
305
- * Get the current result without ending the chain
306
- * @returns {number} Current result
307
- */
308
- value() {
309
- return this.result;
310
- }
311
- }
312
-
313
- module.exports = Calculator;
1
+ /**
2
+ * Calculator class for performing basic arithmetic operations
3
+ */
4
+ class Calculator {
5
+ /**
6
+ * Create a new Calculator
7
+ */
8
+ constructor() {
9
+ this.result = 0;
10
+ }
11
+
12
+ /**
13
+ * Add two numbers
14
+ * @param {number} a - First number
15
+ * @param {number} b - Second number
16
+ * @returns {number} Sum of a and b
17
+ */
18
+ add(a, b) {
19
+ return a + b;
20
+ }
21
+
22
+ /**
23
+ * Subtract two numbers
24
+ * @param {number} a - First number
25
+ * @param {number} b - Second number
26
+ * @returns {number} Difference of a and b
27
+ */
28
+ subtract(a, b) {
29
+ return a - b;
30
+ }
31
+
32
+ /**
33
+ * Multiply two numbers
34
+ * @param {number} a - First number
35
+ * @param {number} b - Second number
36
+ * @returns {number} Product of a and b
37
+ */
38
+ multiply(a, b) {
39
+ return a * b;
40
+ }
41
+
42
+ /**
43
+ * Divide two numbers
44
+ * @param {number} a - Dividend
45
+ * @param {number} b - Divisor
46
+ * @returns {number} Quotient of a and b
47
+ * @throws {Error} If dividing by zero
48
+ */
49
+ divide(a, b) {
50
+ if (b === 0) {
51
+ throw new Error('Cannot divide by zero');
52
+ }
53
+ return a / b;
54
+ }
55
+
56
+ /**
57
+ * Calculate the power of a number
58
+ * @param {number} base - Base number
59
+ * @param {number} exponent - Exponent
60
+ * @returns {number} Base raised to the power of exponent
61
+ */
62
+ power(base, exponent) {
63
+ return Math.pow(base, exponent);
64
+ }
65
+
66
+ /**
67
+ * Calculate the square root of a number
68
+ * @param {number} a - Number to calculate square root for
69
+ * @returns {number} Square root of a
70
+ * @throws {Error} If calculating square root of negative number
71
+ */
72
+ sqrt(a) {
73
+ if (a < 0) {
74
+ throw new Error('Cannot calculate square root of negative number');
75
+ }
76
+ return Math.sqrt(a);
77
+ }
78
+
79
+ /**
80
+ * Calculate the factorial of a number
81
+ * @param {number} n - Number to calculate factorial for
82
+ * @returns {number} Factorial of n
83
+ * @throws {Error} If calculating factorial of negative number
84
+ */
85
+ factorial(n) {
86
+ if (n < 0) {
87
+ throw new Error('Cannot calculate factorial of negative number');
88
+ }
89
+
90
+ if (n === 0 || n === 1) {
91
+ return 1;
92
+ }
93
+
94
+ let result = 1;
95
+ for (let i = 2; i <= n; i++) {
96
+ result *= i;
97
+ }
98
+ return result;
99
+ }
100
+
101
+ /**
102
+ * Calculate percentage
103
+ * @param {number} part - Part value
104
+ * @param {number} whole - Whole value
105
+ * @returns {number} Percentage of part in relation to whole
106
+ */
107
+ percentage(part, whole) {
108
+ if (whole === 0) {
109
+ throw new Error('Cannot calculate percentage with zero as whole');
110
+ }
111
+ return (part / whole) * 100;
112
+ }
113
+
114
+ /**
115
+ * Find the maximum of two numbers
116
+ * @param {number} a - First number
117
+ * @param {number} b - Second number
118
+ * @returns {number} The larger of the two numbers
119
+ */
120
+ max(a, b) {
121
+ return Math.max(a, b);
122
+ }
123
+
124
+ /**
125
+ * Find the minimum of two numbers
126
+ * @param {number} a - First number
127
+ * @param {number} b - Second number
128
+ * @returns {number} The smaller of the two numbers
129
+ */
130
+ min(a, b) {
131
+ return Math.min(a, b);
132
+ }
133
+
134
+ /**
135
+ * Calculate the nth Fibonacci number
136
+ * @param {number} n - Position in the Fibonacci sequence (0-indexed)
137
+ * @returns {number} The nth Fibonacci number
138
+ * @throws {Error} If n is negative or not an integer
139
+ */
140
+ fibonacci(n) {
141
+ if (n < 0) {
142
+ throw new Error('Cannot calculate Fibonacci of negative number');
143
+ }
144
+
145
+ if (!Number.isInteger(n)) {
146
+ throw new Error('Fibonacci input must be an integer');
147
+ }
148
+
149
+ if (n === 0) return 0;
150
+ if (n === 1) return 1;
151
+
152
+ let prev = 0;
153
+ let curr = 1;
154
+
155
+ for (let i = 2; i <= n; i++) {
156
+ const next = prev + curr;
157
+ prev = curr;
158
+ curr = next;
159
+ }
160
+
161
+ return curr;
162
+ }
163
+
164
+ /**
165
+ * Generate a Fibonacci sequence up to n terms
166
+ * @param {number} n - Number of terms to generate
167
+ * @returns {Array<number>} Array containing the first n Fibonacci numbers
168
+ * @throws {Error} If n is negative or not an integer
169
+ */
170
+ fibonacciSequence(n) {
171
+ if (n < 0) {
172
+ throw new Error(
173
+ 'Cannot generate Fibonacci sequence with negative length',
174
+ );
175
+ }
176
+
177
+ if (!Number.isInteger(n)) {
178
+ throw new Error('Fibonacci sequence length must be an integer');
179
+ }
180
+
181
+ if (n === 0) return [];
182
+ if (n === 1) return [0];
183
+ if (n === 2) return [0, 1];
184
+
185
+ const sequence = [0, 1];
186
+
187
+ for (let i = 2; i < n; i++) {
188
+ sequence[i] = sequence[i - 1] + sequence[i - 2];
189
+ }
190
+
191
+ return sequence;
192
+ }
193
+
194
+ /**
195
+ * Calculate the circumference of a circle
196
+ * @param {number} radius - The radius of the circle
197
+ * @returns {number} The circumference of the circle
198
+ * @throws {Error} If radius is negative
199
+ */
200
+ circleCircumference(radius) {
201
+ if (radius < 0) {
202
+ throw new Error('Radius cannot be negative');
203
+ }
204
+ return 2 * Math.PI * radius;
205
+ }
206
+
207
+ /**
208
+ * Chain calculations with a running result
209
+ * @param {number} initialValue - Starting value for calculations
210
+ * @returns {CalculationChain} Object for chaining calculations
211
+ */
212
+ chain(initialValue = 0) {
213
+ return new CalculationChain(initialValue);
214
+ }
215
+ }
216
+
217
+ /**
218
+ * Helper class for chaining calculations
219
+ */
220
+ class CalculationChain {
221
+ /**
222
+ * Create a new calculation chain
223
+ * @param {number} initialValue - Starting value
224
+ */
225
+ constructor(initialValue) {
226
+ this.result = initialValue;
227
+ }
228
+
229
+ /**
230
+ * Add a number to the current result
231
+ * @param {number} value - Number to add
232
+ * @returns {CalculationChain} This chain instance
233
+ */
234
+ add(value) {
235
+ this.result += value;
236
+ return this;
237
+ }
238
+
239
+ /**
240
+ * Subtract a number from the current result
241
+ * @param {number} value - Number to subtract
242
+ * @returns {CalculationChain} This chain instance
243
+ */
244
+ subtract(value) {
245
+ this.result -= value;
246
+ return this;
247
+ }
248
+
249
+ /**
250
+ * Multiply the current result by a number
251
+ * @param {number} value - Number to multiply by
252
+ * @returns {CalculationChain} This chain instance
253
+ */
254
+ multiply(value) {
255
+ this.result *= value;
256
+ return this;
257
+ }
258
+
259
+ /**
260
+ * Divide the current result by a number
261
+ * @param {number} value - Number to divide by
262
+ * @returns {CalculationChain} This chain instance
263
+ * @throws {Error} If dividing by zero
264
+ */
265
+ divide(value) {
266
+ if (value === 0) {
267
+ throw new Error('Cannot divide by zero');
268
+ }
269
+ this.result /= value;
270
+ return this;
271
+ }
272
+
273
+ /**
274
+ * Raise the current result to a power
275
+ * @param {number} exponent - Exponent
276
+ * @returns {CalculationChain} This chain instance
277
+ */
278
+ power(exponent) {
279
+ this.result = Math.pow(this.result, exponent);
280
+ return this;
281
+ }
282
+
283
+ /**
284
+ * Calculate the square root of the current result
285
+ * @returns {CalculationChain} This chain instance
286
+ * @throws {Error} If calculating square root of negative number
287
+ */
288
+ sqrt() {
289
+ if (this.result < 0) {
290
+ throw new Error('Cannot calculate square root of negative number');
291
+ }
292
+ this.result = Math.sqrt(this.result);
293
+ return this;
294
+ }
295
+
296
+ /**
297
+ * Get the final result of the chained calculations
298
+ * @returns {number} Final result
299
+ */
300
+ equals() {
301
+ return this.result;
302
+ }
303
+
304
+ /**
305
+ * Get the current result without ending the chain
306
+ * @returns {number} Current result
307
+ */
308
+ value() {
309
+ return this.result;
310
+ }
311
+ }
312
+
313
+ module.exports = Calculator;