@fulmenhq/tsfulmen 0.3.2 → 0.4.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 (128) hide show
  1. package/CHANGELOG.md +65 -1
  2. package/README.md +30 -1
  3. package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
  4. package/dist/appidentity/index.d.ts +15 -5
  5. package/dist/appidentity/index.js +9 -2204
  6. package/dist/appidentity/index.js.map +1 -1
  7. package/dist/assets/index.d.ts +179 -0
  8. package/dist/assets/index.js +4 -0
  9. package/dist/assets/index.js.map +1 -0
  10. package/dist/bin/prometheus-cli.js +15 -9134
  11. package/dist/bin/prometheus-cli.js.map +1 -1
  12. package/dist/bin/schema-cli.js +4 -6098
  13. package/dist/bin/schema-cli.js.map +1 -1
  14. package/dist/bin/signals-cli.js +15 -1910
  15. package/dist/bin/signals-cli.js.map +1 -1
  16. package/dist/chunk-3HISR2XI.js +36 -0
  17. package/dist/chunk-3HISR2XI.js.map +1 -0
  18. package/dist/chunk-5HZEJGZ5.js +725 -0
  19. package/dist/chunk-5HZEJGZ5.js.map +1 -0
  20. package/dist/chunk-7SVYOPJ3.js +9412 -0
  21. package/dist/chunk-7SVYOPJ3.js.map +1 -0
  22. package/dist/chunk-BCO3FUUO.js +682 -0
  23. package/dist/chunk-BCO3FUUO.js.map +1 -0
  24. package/dist/chunk-BJDL6JEX.js +208 -0
  25. package/dist/chunk-BJDL6JEX.js.map +1 -0
  26. package/dist/chunk-BTUS6PZZ.js +302 -0
  27. package/dist/chunk-BTUS6PZZ.js.map +1 -0
  28. package/dist/chunk-CW4CSNVF.js +410 -0
  29. package/dist/chunk-CW4CSNVF.js.map +1 -0
  30. package/dist/chunk-HIBZ2AY7.js +194 -0
  31. package/dist/chunk-HIBZ2AY7.js.map +1 -0
  32. package/dist/chunk-HS4F3BRR.js +985 -0
  33. package/dist/chunk-HS4F3BRR.js.map +1 -0
  34. package/dist/chunk-HY6JQOFN.js +32 -0
  35. package/dist/chunk-HY6JQOFN.js.map +1 -0
  36. package/dist/chunk-K2FYT43R.js +837 -0
  37. package/dist/chunk-K2FYT43R.js.map +1 -0
  38. package/dist/chunk-K7BMFGQP.js +43 -0
  39. package/dist/chunk-K7BMFGQP.js.map +1 -0
  40. package/dist/chunk-LWAH2UG7.js +103 -0
  41. package/dist/chunk-LWAH2UG7.js.map +1 -0
  42. package/dist/chunk-OHE2AOH4.js +273 -0
  43. package/dist/chunk-OHE2AOH4.js.map +1 -0
  44. package/dist/chunk-P3DNOZOG.js +1488 -0
  45. package/dist/chunk-P3DNOZOG.js.map +1 -0
  46. package/dist/chunk-PQ6TKPUN.js +27 -0
  47. package/dist/chunk-PQ6TKPUN.js.map +1 -0
  48. package/dist/chunk-QCCN6POA.js +211 -0
  49. package/dist/chunk-QCCN6POA.js.map +1 -0
  50. package/dist/chunk-RSLFR4TO.js +631 -0
  51. package/dist/chunk-RSLFR4TO.js.map +1 -0
  52. package/dist/chunk-UP2VWCW5.js +33 -0
  53. package/dist/chunk-UP2VWCW5.js.map +1 -0
  54. package/dist/chunk-W6TQFTTY.js +130 -0
  55. package/dist/chunk-W6TQFTTY.js.map +1 -0
  56. package/dist/chunk-WSMVLWLB.js +269 -0
  57. package/dist/chunk-WSMVLWLB.js.map +1 -0
  58. package/dist/config/index.d.ts +69 -11
  59. package/dist/config/index.js +24 -1227
  60. package/dist/config/index.js.map +1 -1
  61. package/dist/crucible/fulpack/index.js +2 -25
  62. package/dist/crucible/fulpack/index.js.map +1 -1
  63. package/dist/crucible/index.js +13 -1129
  64. package/dist/crucible/index.js.map +1 -1
  65. package/dist/docscribe/index.js +2 -680
  66. package/dist/docscribe/index.js.map +1 -1
  67. package/dist/errors/index.js +5 -1831
  68. package/dist/errors/index.js.map +1 -1
  69. package/dist/errors-D7KXV3QW.js +4 -0
  70. package/dist/errors-D7KXV3QW.js.map +1 -0
  71. package/dist/errors-RBJX6ETJ.js +8 -0
  72. package/dist/errors-RBJX6ETJ.js.map +1 -0
  73. package/dist/export-BWRETGYS.js +6 -0
  74. package/dist/export-BWRETGYS.js.map +1 -0
  75. package/dist/foundry/index.d.ts +1 -1
  76. package/dist/foundry/index.js +340 -3949
  77. package/dist/foundry/index.js.map +1 -1
  78. package/dist/foundry/similarity/index.js +3 -134
  79. package/dist/foundry/similarity/index.js.map +1 -1
  80. package/dist/fulencode/index.js +3 -319
  81. package/dist/fulencode/index.js.map +1 -1
  82. package/dist/fulhash/index.js +3 -611
  83. package/dist/fulhash/index.js.map +1 -1
  84. package/dist/fulpack/index.js +3 -1515
  85. package/dist/fulpack/index.js.map +1 -1
  86. package/dist/hash-YOJYVOWH.js +4 -0
  87. package/dist/hash-YOJYVOWH.js.map +1 -0
  88. package/dist/index.d.ts +2 -2
  89. package/dist/index.js +14 -4390
  90. package/dist/index.js.map +1 -1
  91. package/dist/loader-H5K7HSO5.js +9 -0
  92. package/dist/loader-H5K7HSO5.js.map +1 -0
  93. package/dist/logging/index.js +2 -723
  94. package/dist/logging/index.js.map +1 -1
  95. package/dist/pathfinder/index.js +18 -2341
  96. package/dist/pathfinder/index.js.map +1 -1
  97. package/dist/prom-client-PNEBGD3G.js +4801 -0
  98. package/dist/prom-client-PNEBGD3G.js.map +1 -0
  99. package/dist/reports/license-inventory.csv +1 -1
  100. package/dist/schema/index.d.ts +19 -6
  101. package/dist/schema/index.js +4 -6148
  102. package/dist/schema/index.js.map +1 -1
  103. package/dist/signals/index.d.ts +1 -1
  104. package/dist/signals/index.js +8 -2767
  105. package/dist/signals/index.js.map +1 -1
  106. package/dist/similarity/index.js +3 -134
  107. package/dist/similarity/index.js.map +1 -1
  108. package/dist/telemetry/http/index.js +9 -930
  109. package/dist/telemetry/http/index.js.map +1 -1
  110. package/dist/telemetry/index.js +4 -1561
  111. package/dist/telemetry/index.js.map +1 -1
  112. package/dist/telemetry/prometheus/index.js +7 -8417
  113. package/dist/telemetry/prometheus/index.js.map +1 -1
  114. package/dist/{types-Dv5TERCM.d.ts → types-CHDvDRCf.d.ts} +17 -1
  115. package/dist/validator-U4CKD2Y3.js +6 -0
  116. package/dist/validator-U4CKD2Y3.js.map +1 -0
  117. package/package.json +5 -1
  118. package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
  119. package/schemas/crucible-ts/observability/logging/v1.0.0/definitions.schema.json +1 -1
  120. package/schemas/crucible-ts/observability/logging/v1.0.0/log-event.schema.json +13 -13
  121. package/schemas/crucible-ts/observability/logging/v1.0.0/logger-config.schema.json +2 -2
  122. package/schemas/crucible-ts/observability/logging/v1.0.0/logging-policy.schema.json +1 -1
  123. package/schemas/crucible-ts/observability/logging/v1.0.0/middleware-config.schema.json +2 -2
  124. package/schemas/crucible-ts/observability/logging/v1.0.0/severity-filter.schema.json +3 -3
  125. package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +3 -3
  126. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +1 -1
  127. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +1 -1
  128. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +1 -1
@@ -0,0 +1,631 @@
1
+ // src/crucible/foundry/exitCodes.ts
2
+ var exitCodes = {
3
+ // Standard Exit Codes (0-1)
4
+ // POSIX standard success and generic failure codes
5
+ EXIT_SUCCESS: 0,
6
+ EXIT_FAILURE: 1,
7
+ // Networking & Port Management (10-19)
8
+ // Network-related failures (ports, connectivity, etc.)
9
+ EXIT_PORT_IN_USE: 10,
10
+ EXIT_PORT_RANGE_EXHAUSTED: 11,
11
+ EXIT_INSTANCE_ALREADY_RUNNING: 12,
12
+ EXIT_NETWORK_UNREACHABLE: 13,
13
+ EXIT_CONNECTION_REFUSED: 14,
14
+ EXIT_CONNECTION_TIMEOUT: 15,
15
+ // Configuration & Validation (20-29)
16
+ // Configuration errors, validation failures, version mismatches
17
+ EXIT_CONFIG_INVALID: 20,
18
+ EXIT_MISSING_DEPENDENCY: 21,
19
+ EXIT_SSOT_VERSION_MISMATCH: 22,
20
+ EXIT_CONFIG_FILE_NOT_FOUND: 23,
21
+ EXIT_ENVIRONMENT_INVALID: 24,
22
+ // Runtime Errors (30-39)
23
+ // Errors during normal operation (health checks, database, etc.)
24
+ EXIT_HEALTH_CHECK_FAILED: 30,
25
+ EXIT_DATABASE_UNAVAILABLE: 31,
26
+ EXIT_EXTERNAL_SERVICE_UNAVAILABLE: 32,
27
+ EXIT_RESOURCE_EXHAUSTED: 33,
28
+ EXIT_OPERATION_TIMEOUT: 34,
29
+ // Command-Line Usage Errors (40-49)
30
+ // Invalid arguments, missing required flags, usage errors
31
+ EXIT_INVALID_ARGUMENT: 40,
32
+ EXIT_MISSING_REQUIRED_ARGUMENT: 41,
33
+ EXIT_USAGE: 64,
34
+ // Permissions & File Access (50-59)
35
+ // Permission denied, file not found, access errors
36
+ EXIT_PERMISSION_DENIED: 50,
37
+ EXIT_FILE_NOT_FOUND: 51,
38
+ EXIT_DIRECTORY_NOT_FOUND: 52,
39
+ EXIT_FILE_READ_ERROR: 53,
40
+ EXIT_FILE_WRITE_ERROR: 54,
41
+ // Data & Processing Errors (60-69)
42
+ // Data validation, parsing, transformation failures
43
+ EXIT_DATA_INVALID: 60,
44
+ EXIT_PARSE_ERROR: 61,
45
+ EXIT_TRANSFORMATION_FAILED: 62,
46
+ EXIT_DATA_CORRUPT: 63,
47
+ // Security & Authentication (70-79)
48
+ // Authentication failures, authorization errors, security violations
49
+ EXIT_AUTHENTICATION_FAILED: 70,
50
+ EXIT_AUTHORIZATION_FAILED: 71,
51
+ EXIT_SECURITY_VIOLATION: 72,
52
+ EXIT_CERTIFICATE_INVALID: 73,
53
+ // Observability & Monitoring (80-89)
54
+ // Observability infrastructure failures. Use when observability is CRITICAL to operation (e.g., monitoring agents, telemetry exporters). For workhorses where observability is auxiliary: - Log warning and continue (don't exit) - Emit degraded health status - Only exit if explicitly configured (fail_on_observability_error: true)
55
+ EXIT_METRICS_UNAVAILABLE: 80,
56
+ EXIT_TRACING_FAILED: 81,
57
+ EXIT_LOGGING_FAILED: 82,
58
+ EXIT_ALERT_SYSTEM_FAILED: 83,
59
+ EXIT_STRUCTURED_LOGGING_FAILED: 84,
60
+ // Testing & Validation (91-99)
61
+ // Test execution outcomes and validation failures. NOTE: Test harnesses MUST use EXIT_SUCCESS (0) for successful test runs per ecosystem conventions (pytest, Go testing, Jest all use 0 for success). Codes in this category are for FAILURES and exceptional conditions only.
62
+ EXIT_TEST_FAILURE: 91,
63
+ EXIT_TEST_ERROR: 92,
64
+ EXIT_TEST_INTERRUPTED: 93,
65
+ EXIT_TEST_USAGE_ERROR: 94,
66
+ EXIT_TEST_NO_TESTS_COLLECTED: 95,
67
+ EXIT_COVERAGE_THRESHOLD_NOT_MET: 96,
68
+ // Shell & Process Control (124-127)
69
+ // Exit codes from shell conventions and process control utilities (timeout, exec)
70
+ EXIT_TIMEOUT: 124,
71
+ EXIT_TIMEOUT_INTERNAL: 125,
72
+ EXIT_CANNOT_EXECUTE: 126,
73
+ EXIT_NOT_FOUND: 127,
74
+ // Signal-Induced Exits (128-165)
75
+ // Process terminated by Unix signals (128+N pattern per POSIX). Signal codes follow Linux numbering; macOS/FreeBSD differ for SIGUSR1/SIGUSR2. For full signal semantics, see config/library/foundry/signals.yaml. For signal handling patterns, see docs/standards/library/modules/signal-handling.md.
76
+ EXIT_SIGNAL_HUP: 129,
77
+ EXIT_SIGNAL_INT: 130,
78
+ EXIT_SIGNAL_QUIT: 131,
79
+ EXIT_SIGNAL_KILL: 137,
80
+ EXIT_SIGNAL_PIPE: 141,
81
+ EXIT_SIGNAL_ALRM: 142,
82
+ EXIT_SIGNAL_TERM: 143,
83
+ EXIT_SIGNAL_USR1: 138,
84
+ EXIT_SIGNAL_USR2: 140
85
+ };
86
+ var exitCodeMetadata = {
87
+ 0: {
88
+ code: 0,
89
+ name: "EXIT_SUCCESS",
90
+ description: "Successful execution",
91
+ context: "Command completed without errors",
92
+ category: "standard"
93
+ },
94
+ 1: {
95
+ code: 1,
96
+ name: "EXIT_FAILURE",
97
+ description: "Generic failure (unspecified error)",
98
+ context: "Use when no more specific exit code applies",
99
+ category: "standard"
100
+ },
101
+ 10: {
102
+ code: 10,
103
+ name: "EXIT_PORT_IN_USE",
104
+ description: "Specified port is already in use",
105
+ context: "Server startup when port unavailable and fail_if_unavailable strategy",
106
+ category: "networking"
107
+ },
108
+ 11: {
109
+ code: 11,
110
+ name: "EXIT_PORT_RANGE_EXHAUSTED",
111
+ description: "No available ports in configured range",
112
+ context: "Server startup when all ports in environment range occupied",
113
+ category: "networking"
114
+ },
115
+ 12: {
116
+ code: 12,
117
+ name: "EXIT_INSTANCE_ALREADY_RUNNING",
118
+ description: "Another instance already running on target port",
119
+ context: "Server startup when PID registry shows active process on port",
120
+ category: "networking"
121
+ },
122
+ 13: {
123
+ code: 13,
124
+ name: "EXIT_NETWORK_UNREACHABLE",
125
+ description: "Network destination unreachable",
126
+ context: "Client connections, health checks, external service validation",
127
+ category: "networking"
128
+ },
129
+ 14: {
130
+ code: 14,
131
+ name: "EXIT_CONNECTION_REFUSED",
132
+ description: "Connection refused by remote host",
133
+ context: "Database connections, API endpoints, upstream services",
134
+ category: "networking"
135
+ },
136
+ 15: {
137
+ code: 15,
138
+ name: "EXIT_CONNECTION_TIMEOUT",
139
+ description: "Connection attempt timed out",
140
+ context: "Slow networks, unresponsive services, firewall blocks",
141
+ category: "networking"
142
+ },
143
+ 20: {
144
+ code: 20,
145
+ name: "EXIT_CONFIG_INVALID",
146
+ description: "Configuration file failed validation",
147
+ context: "Startup validation, schema mismatches, invalid YAML/JSON",
148
+ category: "configuration",
149
+ retryHint: "no_retry"
150
+ },
151
+ 21: {
152
+ code: 21,
153
+ name: "EXIT_MISSING_DEPENDENCY",
154
+ description: "Required dependency not found",
155
+ context: "Missing binaries, libraries, or runtime requirements",
156
+ category: "configuration",
157
+ retryHint: "investigate"
158
+ },
159
+ 22: {
160
+ code: 22,
161
+ name: "EXIT_SSOT_VERSION_MISMATCH",
162
+ description: "SSOT (Crucible) version incompatible",
163
+ context: "Helper library detects unsupported Crucible version",
164
+ category: "configuration",
165
+ retryHint: "no_retry"
166
+ },
167
+ 23: {
168
+ code: 23,
169
+ name: "EXIT_CONFIG_FILE_NOT_FOUND",
170
+ description: "Required configuration file not found",
171
+ context: "Explicitly specified config path doesn't exist",
172
+ category: "configuration"
173
+ },
174
+ 24: {
175
+ code: 24,
176
+ name: "EXIT_ENVIRONMENT_INVALID",
177
+ description: "Invalid or unsupported environment specification",
178
+ context: "Unknown environment name, missing environment config",
179
+ category: "configuration"
180
+ },
181
+ 30: {
182
+ code: 30,
183
+ name: "EXIT_HEALTH_CHECK_FAILED",
184
+ description: "Health check endpoint returned non-healthy status",
185
+ context: "Startup health validation, readiness probes",
186
+ category: "runtime",
187
+ retryHint: "retry"
188
+ },
189
+ 31: {
190
+ code: 31,
191
+ name: "EXIT_DATABASE_UNAVAILABLE",
192
+ description: "Database connection failed or unavailable",
193
+ context: "Startup connection checks, critical query failures",
194
+ category: "runtime",
195
+ retryHint: "retry"
196
+ },
197
+ 32: {
198
+ code: 32,
199
+ name: "EXIT_EXTERNAL_SERVICE_UNAVAILABLE",
200
+ description: "Required external service unavailable",
201
+ context: "API dependencies, message queues, cache servers",
202
+ category: "runtime"
203
+ },
204
+ 33: {
205
+ code: 33,
206
+ name: "EXIT_RESOURCE_EXHAUSTED",
207
+ description: "System resources exhausted (memory, disk, file descriptors)",
208
+ context: "Out-of-memory, disk full, too many open files",
209
+ category: "runtime",
210
+ retryHint: "investigate"
211
+ },
212
+ 34: {
213
+ code: 34,
214
+ name: "EXIT_OPERATION_TIMEOUT",
215
+ description: "Operation exceeded timeout threshold",
216
+ context: "Long-running tasks, async operations, batch processing",
217
+ category: "runtime",
218
+ retryHint: "retry"
219
+ },
220
+ 40: {
221
+ code: 40,
222
+ name: "EXIT_INVALID_ARGUMENT",
223
+ description: "Invalid command-line argument or flag value",
224
+ context: "Type errors, out-of-range values, malformed input",
225
+ category: "usage"
226
+ },
227
+ 41: {
228
+ code: 41,
229
+ name: "EXIT_MISSING_REQUIRED_ARGUMENT",
230
+ description: "Required command-line argument not provided",
231
+ context: "Missing --config, --port, or other required flags",
232
+ category: "usage"
233
+ },
234
+ 64: {
235
+ code: 64,
236
+ name: "EXIT_USAGE",
237
+ description: "Command-line usage error",
238
+ context: "BSD sysexits.h EX_USAGE - wrong number of arguments, bad syntax",
239
+ category: "usage",
240
+ bsdEquivalent: "EX_USAGE"
241
+ },
242
+ 50: {
243
+ code: 50,
244
+ name: "EXIT_PERMISSION_DENIED",
245
+ description: "Insufficient permissions for operation",
246
+ context: "File access, port binding (<1024), privileged operations",
247
+ category: "permissions"
248
+ },
249
+ 51: {
250
+ code: 51,
251
+ name: "EXIT_FILE_NOT_FOUND",
252
+ description: "Required file not found",
253
+ context: "Assets, templates, data files (not config - use 23)",
254
+ category: "permissions"
255
+ },
256
+ 52: {
257
+ code: 52,
258
+ name: "EXIT_DIRECTORY_NOT_FOUND",
259
+ description: "Required directory not found",
260
+ context: "State directories, log paths, data directories",
261
+ category: "permissions"
262
+ },
263
+ 53: {
264
+ code: 53,
265
+ name: "EXIT_FILE_READ_ERROR",
266
+ description: "Error reading file",
267
+ context: "Corrupt files, I/O errors, encoding issues",
268
+ category: "permissions"
269
+ },
270
+ 54: {
271
+ code: 54,
272
+ name: "EXIT_FILE_WRITE_ERROR",
273
+ description: "Error writing file",
274
+ context: "Disk full, read-only filesystem, permission errors",
275
+ category: "permissions"
276
+ },
277
+ 60: {
278
+ code: 60,
279
+ name: "EXIT_DATA_INVALID",
280
+ description: "Input data failed validation",
281
+ context: "Schema validation, business rule violations",
282
+ category: "data"
283
+ },
284
+ 61: {
285
+ code: 61,
286
+ name: "EXIT_PARSE_ERROR",
287
+ description: "Error parsing input data",
288
+ context: "Malformed JSON/YAML/XML, syntax errors",
289
+ category: "data"
290
+ },
291
+ 62: {
292
+ code: 62,
293
+ name: "EXIT_TRANSFORMATION_FAILED",
294
+ description: "Data transformation or conversion failed",
295
+ context: "Type conversions, format transformations, encoding changes",
296
+ category: "data"
297
+ },
298
+ 63: {
299
+ code: 63,
300
+ name: "EXIT_DATA_CORRUPT",
301
+ description: "Data corruption detected",
302
+ context: "Checksum failures, integrity violations",
303
+ category: "data"
304
+ },
305
+ 70: {
306
+ code: 70,
307
+ name: "EXIT_AUTHENTICATION_FAILED",
308
+ description: "Authentication failed",
309
+ context: "Invalid credentials, expired tokens, auth service unavailable",
310
+ category: "security"
311
+ },
312
+ 71: {
313
+ code: 71,
314
+ name: "EXIT_AUTHORIZATION_FAILED",
315
+ description: "Authorization failed (authenticated but insufficient permissions)",
316
+ context: "RBAC failures, scope violations, resource access denied",
317
+ category: "security"
318
+ },
319
+ 72: {
320
+ code: 72,
321
+ name: "EXIT_SECURITY_VIOLATION",
322
+ description: "Security policy violation detected",
323
+ context: "Suspicious activity, rate limit exceeded, IP blocklist",
324
+ category: "security"
325
+ },
326
+ 73: {
327
+ code: 73,
328
+ name: "EXIT_CERTIFICATE_INVALID",
329
+ description: "TLS/SSL certificate validation failed",
330
+ context: "Expired certs, untrusted CAs, hostname mismatches",
331
+ category: "security",
332
+ bsdEquivalent: "EX_PROTOCOL"
333
+ },
334
+ 80: {
335
+ code: 80,
336
+ name: "EXIT_METRICS_UNAVAILABLE",
337
+ description: "Metrics endpoint or collection system unavailable",
338
+ context: "Use for observability-focused tools (Prometheus exporters, StatsD agents).\nWorkhorses SHOULD log warning and continue unless configured to fail-fast.\n",
339
+ category: "observability"
340
+ },
341
+ 81: {
342
+ code: 81,
343
+ name: "EXIT_TRACING_FAILED",
344
+ description: "Distributed tracing system unavailable",
345
+ context: "OTLP exporter failed, Jaeger collector unreachable",
346
+ category: "observability"
347
+ },
348
+ 82: {
349
+ code: 82,
350
+ name: "EXIT_LOGGING_FAILED",
351
+ description: "Logging system unavailable or misconfigured",
352
+ context: "Log aggregator unreachable, log file unwritable",
353
+ category: "observability"
354
+ },
355
+ 83: {
356
+ code: 83,
357
+ name: "EXIT_ALERT_SYSTEM_FAILED",
358
+ description: "Alerting system unavailable",
359
+ context: "PagerDuty API failed, Slack webhook unreachable",
360
+ category: "observability"
361
+ },
362
+ 84: {
363
+ code: 84,
364
+ name: "EXIT_STRUCTURED_LOGGING_FAILED",
365
+ description: "Structured logging system unavailable",
366
+ context: "JSON log aggregator unreachable, log schema validation failed",
367
+ category: "observability"
368
+ },
369
+ 91: {
370
+ code: 91,
371
+ name: "EXIT_TEST_FAILURE",
372
+ description: "One or more tests failed",
373
+ context: "Test assertions failed, expected behavior not met.\nMaps to pytest exit code 1, Go test failure, Jest failure.\n",
374
+ category: "testing"
375
+ },
376
+ 92: {
377
+ code: 92,
378
+ name: "EXIT_TEST_ERROR",
379
+ description: "Test execution error (not test failure)",
380
+ context: "Test setup failed, fixture unavailable, test harness error.\nMaps to pytest exit code 3 (internal error).\n",
381
+ category: "testing"
382
+ },
383
+ 93: {
384
+ code: 93,
385
+ name: "EXIT_TEST_INTERRUPTED",
386
+ description: "Test run interrupted by user or system",
387
+ context: "Ctrl+C during tests, system signal, user cancellation.\nMaps to pytest exit code 2.\n",
388
+ category: "testing"
389
+ },
390
+ 94: {
391
+ code: 94,
392
+ name: "EXIT_TEST_USAGE_ERROR",
393
+ description: "Test command usage error",
394
+ context: "Invalid test arguments, bad configuration.\nMaps to pytest exit code 4.\n",
395
+ category: "testing"
396
+ },
397
+ 95: {
398
+ code: 95,
399
+ name: "EXIT_TEST_NO_TESTS_COLLECTED",
400
+ description: "No tests found or all tests skipped",
401
+ context: "Empty test suite, all tests deselected or skipped.\nMaps to pytest exit code 5.\n",
402
+ category: "testing"
403
+ },
404
+ 96: {
405
+ code: 96,
406
+ name: "EXIT_COVERAGE_THRESHOLD_NOT_MET",
407
+ description: "Test coverage below required threshold",
408
+ context: "Code coverage validation, quality gate failure",
409
+ category: "testing"
410
+ },
411
+ 124: {
412
+ code: 124,
413
+ name: "EXIT_TIMEOUT",
414
+ description: "Command timed out before completion",
415
+ context: "GNU timeout or similar utility terminated command after deadline",
416
+ category: "shell"
417
+ },
418
+ 125: {
419
+ code: 125,
420
+ name: "EXIT_TIMEOUT_INTERNAL",
421
+ description: "Timeout utility itself failed",
422
+ context: "Error in timeout tool before or during command execution (not command failure)",
423
+ category: "shell"
424
+ },
425
+ 126: {
426
+ code: 126,
427
+ name: "EXIT_CANNOT_EXECUTE",
428
+ description: "Command found but could not be executed",
429
+ context: "Permission denied, not executable, exec format error",
430
+ category: "shell",
431
+ bsdEquivalent: "EX_NOPERM (partial)"
432
+ },
433
+ 127: {
434
+ code: 127,
435
+ name: "EXIT_NOT_FOUND",
436
+ description: "Command not found",
437
+ context: "Executable not found in PATH or specified path does not exist",
438
+ category: "shell",
439
+ bsdEquivalent: "EX_UNAVAILABLE (partial)"
440
+ },
441
+ 129: {
442
+ code: 129,
443
+ name: "EXIT_SIGNAL_HUP",
444
+ description: "Hangup signal (SIGHUP) - config reload via restart",
445
+ context: "Config reload via restart-based pattern (mandatory schema validation).\nProcess exits with 129, supervisor restarts with new config.\nSee signals.yaml for reload behavior definition.",
446
+ category: "signals",
447
+ bsdEquivalent: "128 + 1"
448
+ },
449
+ 130: {
450
+ code: 130,
451
+ name: "EXIT_SIGNAL_INT",
452
+ description: "Interrupt signal (SIGINT) - user interrupt with Ctrl+C double-tap",
453
+ context: "Ctrl+C pressed. First tap initiates graceful shutdown, second within 2s forces immediate exit.\nSame exit code (130) for both graceful and force modes.\nSee signals.yaml for double-tap behavior definition.",
454
+ category: "signals",
455
+ bsdEquivalent: "128 + 2"
456
+ },
457
+ 131: {
458
+ code: 131,
459
+ name: "EXIT_SIGNAL_QUIT",
460
+ description: "Quit signal (SIGQUIT) - immediate exit",
461
+ context: "Ctrl+\\ on Unix, Ctrl+Break on Windows. Immediate termination without cleanup.\nUse for emergency shutdown or debugging (core dumps).",
462
+ category: "signals",
463
+ bsdEquivalent: "128 + 3"
464
+ },
465
+ 137: {
466
+ code: 137,
467
+ name: "EXIT_SIGNAL_KILL",
468
+ description: "Kill signal (SIGKILL)",
469
+ context: "Forceful termination, non-graceful shutdown (not catchable)",
470
+ category: "signals",
471
+ bsdEquivalent: "128 + 9",
472
+ pythonNote: "Cannot be caught in Python (OS-level)"
473
+ },
474
+ 141: {
475
+ code: 141,
476
+ name: "EXIT_SIGNAL_PIPE",
477
+ description: "Broken pipe (SIGPIPE) - observe only",
478
+ context: "Writing to closed pipe/socket. Fulmen default is observe_only (log + graceful exit).\nApplications may override to ignore for network services.\nSee signals.yaml for SIGPIPE handling guidance.",
479
+ category: "signals",
480
+ bsdEquivalent: "128 + 13",
481
+ pythonNote: "Raised as BrokenPipeError exception"
482
+ },
483
+ 142: {
484
+ code: 142,
485
+ name: "EXIT_SIGNAL_ALRM",
486
+ description: "Alarm signal (SIGALRM) - watchdog timeout",
487
+ context: "Watchdog timer expired. Treat as timeout-induced exit.\nWatchdog pattern out of scope for v1.0.0 module implementations.",
488
+ category: "signals",
489
+ bsdEquivalent: "128 + 14",
490
+ pythonNote: "Supported by signal module, rarely used in practice"
491
+ },
492
+ 143: {
493
+ code: 143,
494
+ name: "EXIT_SIGNAL_TERM",
495
+ description: "Termination signal (SIGTERM) - graceful shutdown",
496
+ context: "Graceful shutdown requested by container orchestrator or process supervisor.\nStandard 30-second timeout for cleanup. Applications run cleanup handlers before exit.\nSee signals.yaml for graceful shutdown behavior definition.",
497
+ category: "signals",
498
+ bsdEquivalent: "128 + 15",
499
+ pythonNote: "Default signal for graceful shutdown"
500
+ },
501
+ 138: {
502
+ code: 138,
503
+ name: "EXIT_SIGNAL_USR1",
504
+ description: "User-defined signal 1 (SIGUSR1) - custom handler",
505
+ context: "Application-specific signal (e.g., reopen logs, dump stats, trigger profiling).\nApplications register custom handlers. Exit code 138 on Linux (128+10).\nPlatform differences: macOS/FreeBSD use signal 30 (exit 158), not 10.",
506
+ category: "signals"
507
+ },
508
+ 140: {
509
+ code: 140,
510
+ name: "EXIT_SIGNAL_USR2",
511
+ description: "User-defined signal 2 (SIGUSR2) - custom handler",
512
+ context: "Application-specific signal (e.g., toggle debug mode, rotate credentials).\nApplications register custom handlers. Exit code 140 on Linux (128+12).\nPlatform differences: macOS/FreeBSD use signal 31 (exit 159), not 12.",
513
+ category: "signals"
514
+ }
515
+ };
516
+ function getExitCodeInfo(code) {
517
+ return exitCodeMetadata[code];
518
+ }
519
+ var EXIT_CODES_VERSION = "v1.0.0";
520
+
521
+ // src/foundry/exit-codes/capabilities.ts
522
+ function supportsSignalExitCodes() {
523
+ return process.platform !== "win32";
524
+ }
525
+ function getPlatform() {
526
+ return process.platform;
527
+ }
528
+ function isWindows() {
529
+ return process.platform === "win32";
530
+ }
531
+ function isPOSIX() {
532
+ return !isWindows();
533
+ }
534
+ function getPlatformCapabilities() {
535
+ return {
536
+ platform: getPlatform(),
537
+ supportsSignalExitCodes: supportsSignalExitCodes(),
538
+ isPOSIX: isPOSIX(),
539
+ isWindows: isWindows()
540
+ };
541
+ }
542
+
543
+ // src/foundry/exit-codes/simplified.ts
544
+ var SimplifiedMode = /* @__PURE__ */ ((SimplifiedMode2) => {
545
+ SimplifiedMode2["BASIC"] = "basic";
546
+ SimplifiedMode2["SEVERITY"] = "severity";
547
+ return SimplifiedMode2;
548
+ })(SimplifiedMode || {});
549
+ function mapExitCodeToSimplified(code, mode = "basic" /* BASIC */) {
550
+ if (code === 0) {
551
+ return 0;
552
+ }
553
+ if (mode === "basic" /* BASIC */) {
554
+ return 1;
555
+ }
556
+ const info = exitCodeMetadata[code];
557
+ if (!info) {
558
+ return 3;
559
+ }
560
+ if (info.retryHint === "retry") {
561
+ return 1;
562
+ }
563
+ if (info.retryHint === "no_retry") {
564
+ return 2;
565
+ }
566
+ if (info.retryHint === "investigate") {
567
+ return 3;
568
+ }
569
+ switch (info.category) {
570
+ case "configuration":
571
+ case "usage":
572
+ return 2;
573
+ case "networking":
574
+ case "runtime":
575
+ return 1;
576
+ case "permissions":
577
+ case "data":
578
+ return 2;
579
+ case "security":
580
+ return 3;
581
+ case "observability":
582
+ return 1;
583
+ case "testing":
584
+ return 1;
585
+ case "signals":
586
+ return 3;
587
+ default:
588
+ return 1;
589
+ }
590
+ }
591
+ function getSimplifiedCodes(mode) {
592
+ switch (mode) {
593
+ case "basic" /* BASIC */:
594
+ return [0, 1];
595
+ case "severity" /* SEVERITY */:
596
+ return [0, 1, 2, 3];
597
+ default:
598
+ return [0, 1];
599
+ }
600
+ }
601
+ function getSimplifiedCodeDescription(code, mode) {
602
+ if (mode === "basic" /* BASIC */) {
603
+ switch (code) {
604
+ case 0:
605
+ return "Success";
606
+ case 1:
607
+ return "Failure";
608
+ default:
609
+ return "Unknown";
610
+ }
611
+ }
612
+ if (mode === "severity" /* SEVERITY */) {
613
+ switch (code) {
614
+ case 0:
615
+ return "Success";
616
+ case 1:
617
+ return "Recoverable error (retry possible)";
618
+ case 2:
619
+ return "Configuration error (fix config, don't retry)";
620
+ case 3:
621
+ return "Fatal error (investigate required)";
622
+ default:
623
+ return "Unknown";
624
+ }
625
+ }
626
+ return "Unknown mode";
627
+ }
628
+
629
+ export { EXIT_CODES_VERSION, SimplifiedMode, exitCodeMetadata, exitCodes, getExitCodeInfo, getPlatform, getPlatformCapabilities, getSimplifiedCodeDescription, getSimplifiedCodes, isPOSIX, isWindows, mapExitCodeToSimplified, supportsSignalExitCodes };
630
+ //# sourceMappingURL=chunk-RSLFR4TO.js.map
631
+ //# sourceMappingURL=chunk-RSLFR4TO.js.map