@fulmenhq/tsfulmen 0.1.13 → 0.2.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 (165) hide show
  1. package/CHANGELOG.md +73 -512
  2. package/README.md +111 -28
  3. package/config/crucible-ts/agentic/roles/README.md +76 -0
  4. package/config/crucible-ts/agentic/roles/cicd.yaml +82 -0
  5. package/config/crucible-ts/agentic/roles/dataeng.yaml +104 -0
  6. package/config/crucible-ts/agentic/roles/devlead.yaml +84 -0
  7. package/config/crucible-ts/agentic/roles/devrev.yaml +105 -0
  8. package/config/crucible-ts/agentic/roles/entarch.yaml +101 -0
  9. package/config/crucible-ts/agentic/roles/infoarch.yaml +95 -0
  10. package/config/crucible-ts/agentic/roles/prodmktg.yaml +92 -0
  11. package/config/crucible-ts/agentic/roles/qa.yaml +148 -0
  12. package/config/crucible-ts/agentic/roles/secrev.yaml +101 -0
  13. package/config/crucible-ts/agentic/roles/uxdev.yaml +168 -0
  14. package/config/crucible-ts/branding/ecosystem.yaml +26 -0
  15. package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +26 -0
  16. package/config/crucible-ts/library/foundry/exit-codes.yaml +28 -3
  17. package/config/crucible-ts/library/foundry/patterns.yaml +2 -2
  18. package/config/crucible-ts/library/foundry/signal-resolution-fixtures.yaml +207 -0
  19. package/config/crucible-ts/library/foundry/signals.yaml +21 -0
  20. package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +9 -1
  21. package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml} +1 -1
  22. package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +1 -2
  23. package/config/crucible-ts/taxonomy/fixture-catalog.yaml +145 -0
  24. package/config/crucible-ts/taxonomy/languages.yaml +2 -2
  25. package/config/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalogs.yaml +77 -0
  26. package/config/crucible-ts/taxonomy/library/platform-modules/v1.1.0/modules.yaml +722 -0
  27. package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
  28. package/config/crucible-ts/taxonomy/repository-categories.yaml +134 -1
  29. package/dist/appidentity/index.d.ts +117 -35
  30. package/dist/appidentity/index.js +752 -592
  31. package/dist/appidentity/index.js.map +1 -1
  32. package/dist/config/index.js +118 -6
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/crucible/index.js +118 -6
  35. package/dist/crucible/index.js.map +1 -1
  36. package/dist/errors/index.js +118 -6
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/foundry/index.d.ts +13 -676
  39. package/dist/foundry/index.js +118 -6
  40. package/dist/foundry/index.js.map +1 -1
  41. package/dist/foundry/similarity/index.d.ts +2 -2
  42. package/dist/fulhash/index.d.ts +64 -12
  43. package/dist/fulhash/index.js +292 -53
  44. package/dist/fulhash/index.js.map +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +753 -593
  47. package/dist/index.js.map +1 -1
  48. package/dist/{manager-D27vrdaS.d.ts → manager-CH3fX7zO.d.ts} +1 -1
  49. package/dist/pathfinder/index.js +368 -59
  50. package/dist/pathfinder/index.js.map +1 -1
  51. package/dist/reports/license-inventory.csv +302 -0
  52. package/dist/schema/index.js +118 -6
  53. package/dist/schema/index.js.map +1 -1
  54. package/dist/signals/index.d.ts +675 -0
  55. package/dist/signals/index.js +5790 -0
  56. package/dist/signals/index.js.map +1 -0
  57. package/dist/similarity/index.d.ts +2 -0
  58. package/dist/similarity/index.js +136 -0
  59. package/dist/similarity/index.js.map +1 -0
  60. package/dist/{suggest-Cv7SVQRu.d.ts → suggest-D8LbwtPV.d.ts} +1 -1
  61. package/dist/telemetry/http/index.js +704 -591
  62. package/dist/telemetry/http/index.js.map +1 -1
  63. package/dist/telemetry/index.js +118 -6
  64. package/dist/telemetry/index.js.map +1 -1
  65. package/dist/telemetry/prometheus/index.d.ts +1 -1
  66. package/dist/telemetry/prometheus/index.js +175 -11
  67. package/dist/telemetry/prometheus/index.js.map +1 -1
  68. package/package.json +15 -6
  69. package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +1 -1
  70. package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +1 -1
  71. package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +3 -3
  72. package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +1 -1
  73. package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +1 -1
  74. package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +1 -1
  75. package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +3 -3
  76. package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +1 -1
  77. package/schemas/crucible-ts/config/sync-keys.schema.yaml +14 -0
  78. package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +1 -1
  79. package/schemas/crucible-ts/design/README.md +159 -0
  80. package/schemas/crucible-ts/design/core/v1.0.0/component-states.schema.json +204 -0
  81. package/schemas/crucible-ts/design/core/v1.0.0/semantic-colors.schema.json +179 -0
  82. package/schemas/crucible-ts/design/core/v1.0.0/spacing-scale.schema.json +165 -0
  83. package/schemas/crucible-ts/design/core/v1.0.0/typography-roles.schema.json +195 -0
  84. package/schemas/crucible-ts/design/tui/v1.0.0/color-palette.schema.json +303 -0
  85. package/schemas/crucible-ts/design/tui/v1.0.0/component.schema.json +374 -0
  86. package/schemas/crucible-ts/design/tui/v1.0.0/layout.schema.json +272 -0
  87. package/schemas/crucible-ts/design/tui/v1.0.0/theme.schema.json +205 -0
  88. package/schemas/crucible-ts/design/tui/v1.0.0/typography.schema.json +316 -0
  89. package/schemas/crucible-ts/devsecops/lorage-central/activity/v1.0.0/activity.schema.json +1 -1
  90. package/schemas/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/credentials.schema.json +1 -1
  91. package/schemas/crucible-ts/devsecops/lorage-central/policy/v1.0.0/policy.schema.json +1 -1
  92. package/schemas/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/recipe.schema.json +1 -1
  93. package/schemas/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/runbook.schema.json +1 -1
  94. package/schemas/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/tenant.schema.json +1 -1
  95. package/schemas/crucible-ts/devsecops/secrets/v1.0.0/secrets.schema.json +1 -1
  96. package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +1 -1
  97. package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +1 -1
  98. package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +1 -1
  99. package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +1 -1
  100. package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +1 -1
  101. package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +1 -1
  102. package/schemas/crucible-ts/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json +140 -0
  103. package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +6 -1
  104. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +1 -1
  105. package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +2 -2
  106. package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +61 -1
  107. package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +1 -1
  108. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-entry.schema.json +1 -1
  109. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-info.schema.json +1 -1
  110. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-manifest.schema.json +2 -2
  111. package/schemas/crucible-ts/library/fulpack/v1.0.0/create-options.schema.json +1 -1
  112. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-options.schema.json +1 -1
  113. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-result.schema.json +1 -1
  114. package/schemas/crucible-ts/library/fulpack/v1.0.0/scan-options.schema.json +1 -1
  115. package/schemas/crucible-ts/library/fulpack/v1.0.0/validation-result.schema.json +1 -1
  116. package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
  117. package/schemas/crucible-ts/library/{foundry → similarity}/v1.0.0/similarity.schema.json +2 -2
  118. package/schemas/crucible-ts/library/{foundry → similarity}/v2.0.0/similarity.schema.json +2 -2
  119. package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +1 -1
  120. package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +1 -1
  121. package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +1 -1
  122. package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +1 -1
  123. package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +1 -1
  124. package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +1 -1
  125. package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +1 -1
  126. package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +1 -1
  127. package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +1 -1
  128. package/schemas/crucible-ts/standards/publishing/v1.0.0/spec-catalog.schema.json +134 -0
  129. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-key.schema.json +1 -1
  130. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-metadata.schema.json +1 -1
  131. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-key.schema.json +1 -1
  132. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-metadata.schema.json +1 -1
  133. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-key.schema.json +1 -1
  134. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-metadata.schema.json +1 -1
  135. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-key.schema.json +1 -1
  136. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-metadata.schema.json +1 -1
  137. package/schemas/crucible-ts/taxonomy/devsecops/modules/v1.0.0/devsecops-module-entry.schema.json +1 -1
  138. package/schemas/crucible-ts/taxonomy/fixture/v1.0.0/fixture-catalog.schema.json +166 -0
  139. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +1 -1
  140. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +1 -1
  141. package/schemas/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalog-entry.schema.json +98 -0
  142. package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.schema.json +1 -1
  143. package/schemas/crucible-ts/taxonomy/library/fulencode/encoding-families/v1.0.0/families.schema.json +1 -1
  144. package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.schema.json +1 -1
  145. package/schemas/crucible-ts/taxonomy/library/fulhash/algorithms/v1.0.0/algorithms.yaml +16 -0
  146. package/schemas/crucible-ts/taxonomy/library/modules/v1.0.0/module-entry.schema.json +1 -1
  147. package/schemas/crucible-ts/taxonomy/library/modules/v1.1.0/module-entry.schema.json +436 -0
  148. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +16 -8
  149. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +1 -1
  150. package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +43 -0
  151. package/schemas/crucible-ts/upstream/3leaps/agentic/v0/role-prompt.schema.json +183 -0
  152. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/prompt.schema.json +204 -0
  153. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/search-response.schema.json +152 -0
  154. package/schemas/crucible-ts/upstream/README.md +50 -0
  155. package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +1 -1
  156. package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +1 -1
  157. package/schemas/crucible-ts/config/goneat/README.md +0 -60
  158. package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +0 -234
  159. package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +0 -344
  160. package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +0 -20
  161. package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +0 -17
  162. package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +0 -178
  163. package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +0 -205
  164. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +0 -177
  165. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +0 -146
@@ -1560,7 +1560,10 @@ async function loadReferencedSchema(uri) {
1560
1560
  const repoRoot = join(__dirname4, "..", "..");
1561
1561
  let resolvedPath;
1562
1562
  if (uri.startsWith("https://schemas.fulmenhq.dev/")) {
1563
- const relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1563
+ let relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1564
+ if (relativePath.startsWith("crucible/")) {
1565
+ relativePath = relativePath.slice("crucible/".length);
1566
+ }
1564
1567
  if (relativePath.startsWith("config/taxonomy/")) {
1565
1568
  resolvedPath = join(
1566
1569
  repoRoot,
@@ -1777,7 +1780,9 @@ async function compileSchemaById(schemaId, registryOptions) {
1777
1780
  const aliases = [];
1778
1781
  const normalizedRelativePath = metadata.relativePath.replace(/\\/g, "/");
1779
1782
  if (normalizedRelativePath) {
1780
- aliases.push(new URL(normalizedRelativePath, "https://schemas.fulmenhq.dev/").toString());
1783
+ aliases.push(
1784
+ new URL(`crucible/${normalizedRelativePath}`, "https://schemas.fulmenhq.dev/").toString()
1785
+ );
1781
1786
  }
1782
1787
  return compileSchema(content, { aliases });
1783
1788
  } catch (error) {
@@ -2295,6 +2300,12 @@ var init_exitCodes = __esm({
2295
2300
  EXIT_TEST_USAGE_ERROR: 94,
2296
2301
  EXIT_TEST_NO_TESTS_COLLECTED: 95,
2297
2302
  EXIT_COVERAGE_THRESHOLD_NOT_MET: 96,
2303
+ // Shell & Process Control (124-127)
2304
+ // Exit codes from shell conventions and process control utilities (timeout, exec)
2305
+ EXIT_TIMEOUT: 124,
2306
+ EXIT_TIMEOUT_INTERNAL: 125,
2307
+ EXIT_CANNOT_EXECUTE: 126,
2308
+ EXIT_NOT_FOUND: 127,
2298
2309
  // Signal-Induced Exits (128-165)
2299
2310
  // 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.
2300
2311
  EXIT_SIGNAL_HUP: 129,
@@ -2632,6 +2643,36 @@ var init_exitCodes = __esm({
2632
2643
  context: "Code coverage validation, quality gate failure",
2633
2644
  category: "testing"
2634
2645
  },
2646
+ 124: {
2647
+ code: 124,
2648
+ name: "EXIT_TIMEOUT",
2649
+ description: "Command timed out before completion",
2650
+ context: "GNU timeout or similar utility terminated command after deadline",
2651
+ category: "shell"
2652
+ },
2653
+ 125: {
2654
+ code: 125,
2655
+ name: "EXIT_TIMEOUT_INTERNAL",
2656
+ description: "Timeout utility itself failed",
2657
+ context: "Error in timeout tool before or during command execution (not command failure)",
2658
+ category: "shell"
2659
+ },
2660
+ 126: {
2661
+ code: 126,
2662
+ name: "EXIT_CANNOT_EXECUTE",
2663
+ description: "Command found but could not be executed",
2664
+ context: "Permission denied, not executable, exec format error",
2665
+ category: "shell",
2666
+ bsdEquivalent: "EX_NOPERM (partial)"
2667
+ },
2668
+ 127: {
2669
+ code: 127,
2670
+ name: "EXIT_NOT_FOUND",
2671
+ description: "Command not found",
2672
+ context: "Executable not found in PATH or specified path does not exist",
2673
+ category: "shell",
2674
+ bsdEquivalent: "EX_UNAVAILABLE (partial)"
2675
+ },
2635
2676
  129: {
2636
2677
  code: 129,
2637
2678
  name: "EXIT_SIGNAL_HUP",
@@ -5278,6 +5319,45 @@ ${cause.message}`;
5278
5319
  ${cause.message}`;
5279
5320
  return new _AppIdentityError(message, path, cause);
5280
5321
  }
5322
+ /**
5323
+ * Create error for embedded identity already registered
5324
+ *
5325
+ * Uses first-wins semantics - once registered, cannot be replaced
5326
+ */
5327
+ static alreadyRegistered() {
5328
+ const message = "Embedded identity already registered. Registration uses first-wins semantics and cannot be replaced.";
5329
+ return new _AppIdentityError(message);
5330
+ }
5331
+ /**
5332
+ * Create error for embedded identity YAML parsing failure
5333
+ */
5334
+ static embeddedParseFailed(cause) {
5335
+ const message = `Failed to parse embedded identity YAML: ${cause.message}`;
5336
+ return new _AppIdentityError(message, void 0, cause);
5337
+ }
5338
+ /**
5339
+ * Create error for embedded identity schema validation failure
5340
+ */
5341
+ static embeddedValidationFailed(diagnostics) {
5342
+ const errorCount = diagnostics.filter((d) => d.severity === "ERROR").length;
5343
+ const warningCount = diagnostics.filter((d) => d.severity === "WARN").length;
5344
+ let message = "Invalid embedded identity\n";
5345
+ message += `Validation errors: ${errorCount} error(s), ${warningCount} warning(s)
5346
+ `;
5347
+ const displayDiagnostics = diagnostics.slice(0, 3);
5348
+ for (const diag of displayDiagnostics) {
5349
+ message += ` - ${diag.message}`;
5350
+ if (diag.pointer) {
5351
+ message += ` at ${diag.pointer}`;
5352
+ }
5353
+ message += "\n";
5354
+ }
5355
+ if (diagnostics.length > 3) {
5356
+ message += ` ... and ${diagnostics.length - 3} more
5357
+ `;
5358
+ }
5359
+ return new _AppIdentityError(message);
5360
+ }
5281
5361
  };
5282
5362
  }
5283
5363
  });
@@ -5335,6 +5415,18 @@ var init_discovery = __esm({
5335
5415
  init_errors5();
5336
5416
  }
5337
5417
  });
5418
+ function getEmbeddedIdentity() {
5419
+ return embeddedIdentity;
5420
+ }
5421
+ var embeddedIdentity;
5422
+ var init_embedded = __esm({
5423
+ "src/appidentity/embedded.ts"() {
5424
+ init_schema();
5425
+ init_constants();
5426
+ init_errors5();
5427
+ embeddedIdentity = null;
5428
+ }
5429
+ });
5338
5430
 
5339
5431
  // src/appidentity/loader.ts
5340
5432
  var loader_exports = {};
@@ -5363,11 +5455,30 @@ async function loadIdentity(options) {
5363
5455
  return cached;
5364
5456
  }
5365
5457
  }
5366
- const discovery = await discoverIdentityPath({
5367
- path: options?.path,
5368
- startDir: options?.startDir
5369
- });
5458
+ let discovery;
5459
+ try {
5460
+ discovery = await discoverIdentityPath({
5461
+ path: options?.path,
5462
+ startDir: options?.startDir
5463
+ });
5464
+ } catch (error) {
5465
+ const hasExplicitPath = Boolean(options?.path);
5466
+ const hasEnvOverride = Boolean(process.env[APP_IDENTITY_ENV_VAR]);
5467
+ if (!hasExplicitPath && !hasEnvOverride && error instanceof AppIdentityError) {
5468
+ const embedded = getEmbeddedIdentity();
5469
+ if (embedded) {
5470
+ setCachedIdentity(embedded);
5471
+ return embedded;
5472
+ }
5473
+ }
5474
+ throw error;
5475
+ }
5370
5476
  if (!discovery) {
5477
+ const embedded = getEmbeddedIdentity();
5478
+ if (embedded) {
5479
+ setCachedIdentity(embedded);
5480
+ return embedded;
5481
+ }
5371
5482
  throw AppIdentityError.notFound([]);
5372
5483
  }
5373
5484
  let content;
@@ -5404,6 +5515,7 @@ var init_loader2 = __esm({
5404
5515
  init_cache();
5405
5516
  init_constants();
5406
5517
  init_discovery();
5518
+ init_embedded();
5407
5519
  init_errors5();
5408
5520
  }
5409
5521
  });