@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
@@ -1512,7 +1512,10 @@ async function loadReferencedSchema(uri) {
1512
1512
  const repoRoot = join(__dirname4, "..", "..");
1513
1513
  let resolvedPath;
1514
1514
  if (uri.startsWith("https://schemas.fulmenhq.dev/")) {
1515
- const relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1515
+ let relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1516
+ if (relativePath.startsWith("crucible/")) {
1517
+ relativePath = relativePath.slice("crucible/".length);
1518
+ }
1516
1519
  if (relativePath.startsWith("config/taxonomy/")) {
1517
1520
  resolvedPath = join(
1518
1521
  repoRoot,
@@ -1729,7 +1732,9 @@ async function compileSchemaById(schemaId, registryOptions) {
1729
1732
  const aliases = [];
1730
1733
  const normalizedRelativePath = metadata.relativePath.replace(/\\/g, "/");
1731
1734
  if (normalizedRelativePath) {
1732
- aliases.push(new URL(normalizedRelativePath, "https://schemas.fulmenhq.dev/").toString());
1735
+ aliases.push(
1736
+ new URL(`crucible/${normalizedRelativePath}`, "https://schemas.fulmenhq.dev/").toString()
1737
+ );
1733
1738
  }
1734
1739
  return compileSchema(content, { aliases });
1735
1740
  } catch (error) {
@@ -2247,6 +2252,12 @@ var init_exitCodes = __esm({
2247
2252
  EXIT_TEST_USAGE_ERROR: 94,
2248
2253
  EXIT_TEST_NO_TESTS_COLLECTED: 95,
2249
2254
  EXIT_COVERAGE_THRESHOLD_NOT_MET: 96,
2255
+ // Shell & Process Control (124-127)
2256
+ // Exit codes from shell conventions and process control utilities (timeout, exec)
2257
+ EXIT_TIMEOUT: 124,
2258
+ EXIT_TIMEOUT_INTERNAL: 125,
2259
+ EXIT_CANNOT_EXECUTE: 126,
2260
+ EXIT_NOT_FOUND: 127,
2250
2261
  // Signal-Induced Exits (128-165)
2251
2262
  // 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.
2252
2263
  EXIT_SIGNAL_HUP: 129,
@@ -2584,6 +2595,36 @@ var init_exitCodes = __esm({
2584
2595
  context: "Code coverage validation, quality gate failure",
2585
2596
  category: "testing"
2586
2597
  },
2598
+ 124: {
2599
+ code: 124,
2600
+ name: "EXIT_TIMEOUT",
2601
+ description: "Command timed out before completion",
2602
+ context: "GNU timeout or similar utility terminated command after deadline",
2603
+ category: "shell"
2604
+ },
2605
+ 125: {
2606
+ code: 125,
2607
+ name: "EXIT_TIMEOUT_INTERNAL",
2608
+ description: "Timeout utility itself failed",
2609
+ context: "Error in timeout tool before or during command execution (not command failure)",
2610
+ category: "shell"
2611
+ },
2612
+ 126: {
2613
+ code: 126,
2614
+ name: "EXIT_CANNOT_EXECUTE",
2615
+ description: "Command found but could not be executed",
2616
+ context: "Permission denied, not executable, exec format error",
2617
+ category: "shell",
2618
+ bsdEquivalent: "EX_NOPERM (partial)"
2619
+ },
2620
+ 127: {
2621
+ code: 127,
2622
+ name: "EXIT_NOT_FOUND",
2623
+ description: "Command not found",
2624
+ context: "Executable not found in PATH or specified path does not exist",
2625
+ category: "shell",
2626
+ bsdEquivalent: "EX_UNAVAILABLE (partial)"
2627
+ },
2587
2628
  129: {
2588
2629
  code: 129,
2589
2630
  name: "EXIT_SIGNAL_HUP",
@@ -5230,6 +5271,45 @@ ${cause.message}`;
5230
5271
  ${cause.message}`;
5231
5272
  return new _AppIdentityError(message, path, cause);
5232
5273
  }
5274
+ /**
5275
+ * Create error for embedded identity already registered
5276
+ *
5277
+ * Uses first-wins semantics - once registered, cannot be replaced
5278
+ */
5279
+ static alreadyRegistered() {
5280
+ const message = "Embedded identity already registered. Registration uses first-wins semantics and cannot be replaced.";
5281
+ return new _AppIdentityError(message);
5282
+ }
5283
+ /**
5284
+ * Create error for embedded identity YAML parsing failure
5285
+ */
5286
+ static embeddedParseFailed(cause) {
5287
+ const message = `Failed to parse embedded identity YAML: ${cause.message}`;
5288
+ return new _AppIdentityError(message, void 0, cause);
5289
+ }
5290
+ /**
5291
+ * Create error for embedded identity schema validation failure
5292
+ */
5293
+ static embeddedValidationFailed(diagnostics) {
5294
+ const errorCount = diagnostics.filter((d) => d.severity === "ERROR").length;
5295
+ const warningCount = diagnostics.filter((d) => d.severity === "WARN").length;
5296
+ let message = "Invalid embedded identity\n";
5297
+ message += `Validation errors: ${errorCount} error(s), ${warningCount} warning(s)
5298
+ `;
5299
+ const displayDiagnostics = diagnostics.slice(0, 3);
5300
+ for (const diag of displayDiagnostics) {
5301
+ message += ` - ${diag.message}`;
5302
+ if (diag.pointer) {
5303
+ message += ` at ${diag.pointer}`;
5304
+ }
5305
+ message += "\n";
5306
+ }
5307
+ if (diagnostics.length > 3) {
5308
+ message += ` ... and ${diagnostics.length - 3} more
5309
+ `;
5310
+ }
5311
+ return new _AppIdentityError(message);
5312
+ }
5233
5313
  };
5234
5314
  }
5235
5315
  });
@@ -5287,6 +5367,18 @@ var init_discovery = __esm({
5287
5367
  init_errors5();
5288
5368
  }
5289
5369
  });
5370
+ function getEmbeddedIdentity() {
5371
+ return embeddedIdentity;
5372
+ }
5373
+ var embeddedIdentity;
5374
+ var init_embedded = __esm({
5375
+ "src/appidentity/embedded.ts"() {
5376
+ init_schema();
5377
+ init_constants();
5378
+ init_errors5();
5379
+ embeddedIdentity = null;
5380
+ }
5381
+ });
5290
5382
 
5291
5383
  // src/appidentity/loader.ts
5292
5384
  var loader_exports = {};
@@ -5315,11 +5407,30 @@ async function loadIdentity(options) {
5315
5407
  return cached;
5316
5408
  }
5317
5409
  }
5318
- const discovery = await discoverIdentityPath({
5319
- path: options?.path,
5320
- startDir: options?.startDir
5321
- });
5410
+ let discovery;
5411
+ try {
5412
+ discovery = await discoverIdentityPath({
5413
+ path: options?.path,
5414
+ startDir: options?.startDir
5415
+ });
5416
+ } catch (error) {
5417
+ const hasExplicitPath = Boolean(options?.path);
5418
+ const hasEnvOverride = Boolean(process.env[APP_IDENTITY_ENV_VAR]);
5419
+ if (!hasExplicitPath && !hasEnvOverride && error instanceof AppIdentityError) {
5420
+ const embedded = getEmbeddedIdentity();
5421
+ if (embedded) {
5422
+ setCachedIdentity(embedded);
5423
+ return embedded;
5424
+ }
5425
+ }
5426
+ throw error;
5427
+ }
5322
5428
  if (!discovery) {
5429
+ const embedded = getEmbeddedIdentity();
5430
+ if (embedded) {
5431
+ setCachedIdentity(embedded);
5432
+ return embedded;
5433
+ }
5323
5434
  throw AppIdentityError.notFound([]);
5324
5435
  }
5325
5436
  let content;
@@ -5356,6 +5467,7 @@ var init_loader2 = __esm({
5356
5467
  init_cache();
5357
5468
  init_constants();
5358
5469
  init_discovery();
5470
+ init_embedded();
5359
5471
  init_errors5();
5360
5472
  }
5361
5473
  });