@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
@@ -2050,6 +2050,45 @@ ${cause.message}`;
2050
2050
  ${cause.message}`;
2051
2051
  return new _AppIdentityError(message, path, cause);
2052
2052
  }
2053
+ /**
2054
+ * Create error for embedded identity already registered
2055
+ *
2056
+ * Uses first-wins semantics - once registered, cannot be replaced
2057
+ */
2058
+ static alreadyRegistered() {
2059
+ const message = "Embedded identity already registered. Registration uses first-wins semantics and cannot be replaced.";
2060
+ return new _AppIdentityError(message);
2061
+ }
2062
+ /**
2063
+ * Create error for embedded identity YAML parsing failure
2064
+ */
2065
+ static embeddedParseFailed(cause) {
2066
+ const message = `Failed to parse embedded identity YAML: ${cause.message}`;
2067
+ return new _AppIdentityError(message, void 0, cause);
2068
+ }
2069
+ /**
2070
+ * Create error for embedded identity schema validation failure
2071
+ */
2072
+ static embeddedValidationFailed(diagnostics) {
2073
+ const errorCount = diagnostics.filter((d) => d.severity === "ERROR").length;
2074
+ const warningCount = diagnostics.filter((d) => d.severity === "WARN").length;
2075
+ let message = "Invalid embedded identity\n";
2076
+ message += `Validation errors: ${errorCount} error(s), ${warningCount} warning(s)
2077
+ `;
2078
+ const displayDiagnostics = diagnostics.slice(0, 3);
2079
+ for (const diag of displayDiagnostics) {
2080
+ message += ` - ${diag.message}`;
2081
+ if (diag.pointer) {
2082
+ message += ` at ${diag.pointer}`;
2083
+ }
2084
+ message += "\n";
2085
+ }
2086
+ if (diagnostics.length > 3) {
2087
+ message += ` ... and ${diagnostics.length - 3} more
2088
+ `;
2089
+ }
2090
+ return new _AppIdentityError(message);
2091
+ }
2053
2092
  };
2054
2093
  }
2055
2094
  });
@@ -2107,6 +2146,18 @@ var init_discovery = __esm({
2107
2146
  init_errors3();
2108
2147
  }
2109
2148
  });
2149
+ function getEmbeddedIdentity() {
2150
+ return embeddedIdentity;
2151
+ }
2152
+ var embeddedIdentity;
2153
+ var init_embedded = __esm({
2154
+ "src/appidentity/embedded.ts"() {
2155
+ init_schema();
2156
+ init_constants();
2157
+ init_errors3();
2158
+ embeddedIdentity = null;
2159
+ }
2160
+ });
2110
2161
 
2111
2162
  // src/appidentity/loader.ts
2112
2163
  var loader_exports = {};
@@ -2135,11 +2186,30 @@ async function loadIdentity(options) {
2135
2186
  return cached;
2136
2187
  }
2137
2188
  }
2138
- const discovery = await discoverIdentityPath({
2139
- path: options?.path,
2140
- startDir: options?.startDir
2141
- });
2189
+ let discovery;
2190
+ try {
2191
+ discovery = await discoverIdentityPath({
2192
+ path: options?.path,
2193
+ startDir: options?.startDir
2194
+ });
2195
+ } catch (error) {
2196
+ const hasExplicitPath = Boolean(options?.path);
2197
+ const hasEnvOverride = Boolean(process.env[APP_IDENTITY_ENV_VAR]);
2198
+ if (!hasExplicitPath && !hasEnvOverride && error instanceof AppIdentityError) {
2199
+ const embedded = getEmbeddedIdentity();
2200
+ if (embedded) {
2201
+ setCachedIdentity(embedded);
2202
+ return embedded;
2203
+ }
2204
+ }
2205
+ throw error;
2206
+ }
2142
2207
  if (!discovery) {
2208
+ const embedded = getEmbeddedIdentity();
2209
+ if (embedded) {
2210
+ setCachedIdentity(embedded);
2211
+ return embedded;
2212
+ }
2143
2213
  throw AppIdentityError.notFound([]);
2144
2214
  }
2145
2215
  let content;
@@ -2176,6 +2246,7 @@ var init_loader = __esm({
2176
2246
  init_cache();
2177
2247
  init_constants();
2178
2248
  init_discovery();
2249
+ init_embedded();
2179
2250
  init_errors3();
2180
2251
  }
2181
2252
  });
@@ -2581,7 +2652,10 @@ async function loadReferencedSchema(uri) {
2581
2652
  const repoRoot = join(__dirname4, "..", "..");
2582
2653
  let resolvedPath;
2583
2654
  if (uri.startsWith("https://schemas.fulmenhq.dev/")) {
2584
- const relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
2655
+ let relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
2656
+ if (relativePath.startsWith("crucible/")) {
2657
+ relativePath = relativePath.slice("crucible/".length);
2658
+ }
2585
2659
  if (relativePath.startsWith("config/taxonomy/")) {
2586
2660
  resolvedPath = join(
2587
2661
  repoRoot,
@@ -2798,7 +2872,9 @@ async function compileSchemaById(schemaId, registryOptions) {
2798
2872
  const aliases = [];
2799
2873
  const normalizedRelativePath = metadata.relativePath.replace(/\\/g, "/");
2800
2874
  if (normalizedRelativePath) {
2801
- aliases.push(new URL(normalizedRelativePath, "https://schemas.fulmenhq.dev/").toString());
2875
+ aliases.push(
2876
+ new URL(`crucible/${normalizedRelativePath}`, "https://schemas.fulmenhq.dev/").toString()
2877
+ );
2802
2878
  }
2803
2879
  return compileSchema(content, { aliases });
2804
2880
  } catch (error) {
@@ -3141,6 +3217,12 @@ var init_exitCodes = __esm({
3141
3217
  EXIT_TEST_USAGE_ERROR: 94,
3142
3218
  EXIT_TEST_NO_TESTS_COLLECTED: 95,
3143
3219
  EXIT_COVERAGE_THRESHOLD_NOT_MET: 96,
3220
+ // Shell & Process Control (124-127)
3221
+ // Exit codes from shell conventions and process control utilities (timeout, exec)
3222
+ EXIT_TIMEOUT: 124,
3223
+ EXIT_TIMEOUT_INTERNAL: 125,
3224
+ EXIT_CANNOT_EXECUTE: 126,
3225
+ EXIT_NOT_FOUND: 127,
3144
3226
  // Signal-Induced Exits (128-165)
3145
3227
  // 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.
3146
3228
  EXIT_SIGNAL_HUP: 129,
@@ -3478,6 +3560,36 @@ var init_exitCodes = __esm({
3478
3560
  context: "Code coverage validation, quality gate failure",
3479
3561
  category: "testing"
3480
3562
  },
3563
+ 124: {
3564
+ code: 124,
3565
+ name: "EXIT_TIMEOUT",
3566
+ description: "Command timed out before completion",
3567
+ context: "GNU timeout or similar utility terminated command after deadline",
3568
+ category: "shell"
3569
+ },
3570
+ 125: {
3571
+ code: 125,
3572
+ name: "EXIT_TIMEOUT_INTERNAL",
3573
+ description: "Timeout utility itself failed",
3574
+ context: "Error in timeout tool before or during command execution (not command failure)",
3575
+ category: "shell"
3576
+ },
3577
+ 126: {
3578
+ code: 126,
3579
+ name: "EXIT_CANNOT_EXECUTE",
3580
+ description: "Command found but could not be executed",
3581
+ context: "Permission denied, not executable, exec format error",
3582
+ category: "shell",
3583
+ bsdEquivalent: "EX_NOPERM (partial)"
3584
+ },
3585
+ 127: {
3586
+ code: 127,
3587
+ name: "EXIT_NOT_FOUND",
3588
+ description: "Command not found",
3589
+ context: "Executable not found in PATH or specified path does not exist",
3590
+ category: "shell",
3591
+ bsdEquivalent: "EX_UNAVAILABLE (partial)"
3592
+ },
3481
3593
  129: {
3482
3594
  code: 129,
3483
3595
  name: "EXIT_SIGNAL_HUP",