@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
@@ -1660,7 +1660,10 @@ async function loadReferencedSchema(uri) {
1660
1660
  const repoRoot = join(__dirname4, "..", "..");
1661
1661
  let resolvedPath;
1662
1662
  if (uri.startsWith("https://schemas.fulmenhq.dev/")) {
1663
- const relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1663
+ let relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1664
+ if (relativePath.startsWith("crucible/")) {
1665
+ relativePath = relativePath.slice("crucible/".length);
1666
+ }
1664
1667
  if (relativePath.startsWith("config/taxonomy/")) {
1665
1668
  resolvedPath = join(
1666
1669
  repoRoot,
@@ -1877,7 +1880,9 @@ async function compileSchemaById(schemaId, registryOptions) {
1877
1880
  const aliases = [];
1878
1881
  const normalizedRelativePath = metadata.relativePath.replace(/\\/g, "/");
1879
1882
  if (normalizedRelativePath) {
1880
- aliases.push(new URL(normalizedRelativePath, "https://schemas.fulmenhq.dev/").toString());
1883
+ aliases.push(
1884
+ new URL(`crucible/${normalizedRelativePath}`, "https://schemas.fulmenhq.dev/").toString()
1885
+ );
1881
1886
  }
1882
1887
  return compileSchema(content, { aliases });
1883
1888
  } catch (error) {
@@ -2395,6 +2400,12 @@ var init_exitCodes = __esm({
2395
2400
  EXIT_TEST_USAGE_ERROR: 94,
2396
2401
  EXIT_TEST_NO_TESTS_COLLECTED: 95,
2397
2402
  EXIT_COVERAGE_THRESHOLD_NOT_MET: 96,
2403
+ // Shell & Process Control (124-127)
2404
+ // Exit codes from shell conventions and process control utilities (timeout, exec)
2405
+ EXIT_TIMEOUT: 124,
2406
+ EXIT_TIMEOUT_INTERNAL: 125,
2407
+ EXIT_CANNOT_EXECUTE: 126,
2408
+ EXIT_NOT_FOUND: 127,
2398
2409
  // Signal-Induced Exits (128-165)
2399
2410
  // 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.
2400
2411
  EXIT_SIGNAL_HUP: 129,
@@ -2732,6 +2743,36 @@ var init_exitCodes = __esm({
2732
2743
  context: "Code coverage validation, quality gate failure",
2733
2744
  category: "testing"
2734
2745
  },
2746
+ 124: {
2747
+ code: 124,
2748
+ name: "EXIT_TIMEOUT",
2749
+ description: "Command timed out before completion",
2750
+ context: "GNU timeout or similar utility terminated command after deadline",
2751
+ category: "shell"
2752
+ },
2753
+ 125: {
2754
+ code: 125,
2755
+ name: "EXIT_TIMEOUT_INTERNAL",
2756
+ description: "Timeout utility itself failed",
2757
+ context: "Error in timeout tool before or during command execution (not command failure)",
2758
+ category: "shell"
2759
+ },
2760
+ 126: {
2761
+ code: 126,
2762
+ name: "EXIT_CANNOT_EXECUTE",
2763
+ description: "Command found but could not be executed",
2764
+ context: "Permission denied, not executable, exec format error",
2765
+ category: "shell",
2766
+ bsdEquivalent: "EX_NOPERM (partial)"
2767
+ },
2768
+ 127: {
2769
+ code: 127,
2770
+ name: "EXIT_NOT_FOUND",
2771
+ description: "Command not found",
2772
+ context: "Executable not found in PATH or specified path does not exist",
2773
+ category: "shell",
2774
+ bsdEquivalent: "EX_UNAVAILABLE (partial)"
2775
+ },
2735
2776
  129: {
2736
2777
  code: 129,
2737
2778
  name: "EXIT_SIGNAL_HUP",
@@ -5045,6 +5086,45 @@ ${cause.message}`;
5045
5086
  ${cause.message}`;
5046
5087
  return new _AppIdentityError(message, path, cause);
5047
5088
  }
5089
+ /**
5090
+ * Create error for embedded identity already registered
5091
+ *
5092
+ * Uses first-wins semantics - once registered, cannot be replaced
5093
+ */
5094
+ static alreadyRegistered() {
5095
+ const message = "Embedded identity already registered. Registration uses first-wins semantics and cannot be replaced.";
5096
+ return new _AppIdentityError(message);
5097
+ }
5098
+ /**
5099
+ * Create error for embedded identity YAML parsing failure
5100
+ */
5101
+ static embeddedParseFailed(cause) {
5102
+ const message = `Failed to parse embedded identity YAML: ${cause.message}`;
5103
+ return new _AppIdentityError(message, void 0, cause);
5104
+ }
5105
+ /**
5106
+ * Create error for embedded identity schema validation failure
5107
+ */
5108
+ static embeddedValidationFailed(diagnostics) {
5109
+ const errorCount = diagnostics.filter((d) => d.severity === "ERROR").length;
5110
+ const warningCount = diagnostics.filter((d) => d.severity === "WARN").length;
5111
+ let message = "Invalid embedded identity\n";
5112
+ message += `Validation errors: ${errorCount} error(s), ${warningCount} warning(s)
5113
+ `;
5114
+ const displayDiagnostics = diagnostics.slice(0, 3);
5115
+ for (const diag of displayDiagnostics) {
5116
+ message += ` - ${diag.message}`;
5117
+ if (diag.pointer) {
5118
+ message += ` at ${diag.pointer}`;
5119
+ }
5120
+ message += "\n";
5121
+ }
5122
+ if (diagnostics.length > 3) {
5123
+ message += ` ... and ${diagnostics.length - 3} more
5124
+ `;
5125
+ }
5126
+ return new _AppIdentityError(message);
5127
+ }
5048
5128
  };
5049
5129
  }
5050
5130
  });
@@ -5102,6 +5182,18 @@ var init_discovery = __esm({
5102
5182
  init_errors4();
5103
5183
  }
5104
5184
  });
5185
+ function getEmbeddedIdentity() {
5186
+ return embeddedIdentity;
5187
+ }
5188
+ var embeddedIdentity;
5189
+ var init_embedded = __esm({
5190
+ "src/appidentity/embedded.ts"() {
5191
+ init_schema();
5192
+ init_constants();
5193
+ init_errors4();
5194
+ embeddedIdentity = null;
5195
+ }
5196
+ });
5105
5197
 
5106
5198
  // src/appidentity/loader.ts
5107
5199
  var loader_exports = {};
@@ -5130,11 +5222,30 @@ async function loadIdentity(options) {
5130
5222
  return cached;
5131
5223
  }
5132
5224
  }
5133
- const discovery = await discoverIdentityPath({
5134
- path: options?.path,
5135
- startDir: options?.startDir
5136
- });
5225
+ let discovery;
5226
+ try {
5227
+ discovery = await discoverIdentityPath({
5228
+ path: options?.path,
5229
+ startDir: options?.startDir
5230
+ });
5231
+ } catch (error) {
5232
+ const hasExplicitPath = Boolean(options?.path);
5233
+ const hasEnvOverride = Boolean(process.env[APP_IDENTITY_ENV_VAR]);
5234
+ if (!hasExplicitPath && !hasEnvOverride && error instanceof AppIdentityError) {
5235
+ const embedded = getEmbeddedIdentity();
5236
+ if (embedded) {
5237
+ setCachedIdentity(embedded);
5238
+ return embedded;
5239
+ }
5240
+ }
5241
+ throw error;
5242
+ }
5137
5243
  if (!discovery) {
5244
+ const embedded = getEmbeddedIdentity();
5245
+ if (embedded) {
5246
+ setCachedIdentity(embedded);
5247
+ return embedded;
5248
+ }
5138
5249
  throw AppIdentityError.notFound([]);
5139
5250
  }
5140
5251
  let content;
@@ -5171,6 +5282,7 @@ var init_loader2 = __esm({
5171
5282
  init_cache();
5172
5283
  init_constants();
5173
5284
  init_discovery();
5285
+ init_embedded();
5174
5286
  init_errors4();
5175
5287
  }
5176
5288
  });