@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
@@ -1489,7 +1489,10 @@ async function loadReferencedSchema(uri) {
1489
1489
  const repoRoot = join(__dirname4, "..", "..");
1490
1490
  let resolvedPath;
1491
1491
  if (uri.startsWith("https://schemas.fulmenhq.dev/")) {
1492
- const relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1492
+ let relativePath = uri.replace("https://schemas.fulmenhq.dev/", "");
1493
+ if (relativePath.startsWith("crucible/")) {
1494
+ relativePath = relativePath.slice("crucible/".length);
1495
+ }
1493
1496
  if (relativePath.startsWith("config/taxonomy/")) {
1494
1497
  resolvedPath = join(
1495
1498
  repoRoot,
@@ -1706,7 +1709,9 @@ async function compileSchemaById(schemaId, registryOptions) {
1706
1709
  const aliases = [];
1707
1710
  const normalizedRelativePath = metadata.relativePath.replace(/\\/g, "/");
1708
1711
  if (normalizedRelativePath) {
1709
- aliases.push(new URL(normalizedRelativePath, "https://schemas.fulmenhq.dev/").toString());
1712
+ aliases.push(
1713
+ new URL(`crucible/${normalizedRelativePath}`, "https://schemas.fulmenhq.dev/").toString()
1714
+ );
1710
1715
  }
1711
1716
  return compileSchema(content, { aliases });
1712
1717
  } catch (error) {
@@ -2224,6 +2229,12 @@ var init_exitCodes = __esm({
2224
2229
  EXIT_TEST_USAGE_ERROR: 94,
2225
2230
  EXIT_TEST_NO_TESTS_COLLECTED: 95,
2226
2231
  EXIT_COVERAGE_THRESHOLD_NOT_MET: 96,
2232
+ // Shell & Process Control (124-127)
2233
+ // Exit codes from shell conventions and process control utilities (timeout, exec)
2234
+ EXIT_TIMEOUT: 124,
2235
+ EXIT_TIMEOUT_INTERNAL: 125,
2236
+ EXIT_CANNOT_EXECUTE: 126,
2237
+ EXIT_NOT_FOUND: 127,
2227
2238
  // Signal-Induced Exits (128-165)
2228
2239
  // 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.
2229
2240
  EXIT_SIGNAL_HUP: 129,
@@ -2561,6 +2572,36 @@ var init_exitCodes = __esm({
2561
2572
  context: "Code coverage validation, quality gate failure",
2562
2573
  category: "testing"
2563
2574
  },
2575
+ 124: {
2576
+ code: 124,
2577
+ name: "EXIT_TIMEOUT",
2578
+ description: "Command timed out before completion",
2579
+ context: "GNU timeout or similar utility terminated command after deadline",
2580
+ category: "shell"
2581
+ },
2582
+ 125: {
2583
+ code: 125,
2584
+ name: "EXIT_TIMEOUT_INTERNAL",
2585
+ description: "Timeout utility itself failed",
2586
+ context: "Error in timeout tool before or during command execution (not command failure)",
2587
+ category: "shell"
2588
+ },
2589
+ 126: {
2590
+ code: 126,
2591
+ name: "EXIT_CANNOT_EXECUTE",
2592
+ description: "Command found but could not be executed",
2593
+ context: "Permission denied, not executable, exec format error",
2594
+ category: "shell",
2595
+ bsdEquivalent: "EX_NOPERM (partial)"
2596
+ },
2597
+ 127: {
2598
+ code: 127,
2599
+ name: "EXIT_NOT_FOUND",
2600
+ description: "Command not found",
2601
+ context: "Executable not found in PATH or specified path does not exist",
2602
+ category: "shell",
2603
+ bsdEquivalent: "EX_UNAVAILABLE (partial)"
2604
+ },
2564
2605
  129: {
2565
2606
  code: 129,
2566
2607
  name: "EXIT_SIGNAL_HUP",
@@ -5207,6 +5248,45 @@ ${cause.message}`;
5207
5248
  ${cause.message}`;
5208
5249
  return new _AppIdentityError(message, path, cause);
5209
5250
  }
5251
+ /**
5252
+ * Create error for embedded identity already registered
5253
+ *
5254
+ * Uses first-wins semantics - once registered, cannot be replaced
5255
+ */
5256
+ static alreadyRegistered() {
5257
+ const message = "Embedded identity already registered. Registration uses first-wins semantics and cannot be replaced.";
5258
+ return new _AppIdentityError(message);
5259
+ }
5260
+ /**
5261
+ * Create error for embedded identity YAML parsing failure
5262
+ */
5263
+ static embeddedParseFailed(cause) {
5264
+ const message = `Failed to parse embedded identity YAML: ${cause.message}`;
5265
+ return new _AppIdentityError(message, void 0, cause);
5266
+ }
5267
+ /**
5268
+ * Create error for embedded identity schema validation failure
5269
+ */
5270
+ static embeddedValidationFailed(diagnostics) {
5271
+ const errorCount = diagnostics.filter((d) => d.severity === "ERROR").length;
5272
+ const warningCount = diagnostics.filter((d) => d.severity === "WARN").length;
5273
+ let message = "Invalid embedded identity\n";
5274
+ message += `Validation errors: ${errorCount} error(s), ${warningCount} warning(s)
5275
+ `;
5276
+ const displayDiagnostics = diagnostics.slice(0, 3);
5277
+ for (const diag of displayDiagnostics) {
5278
+ message += ` - ${diag.message}`;
5279
+ if (diag.pointer) {
5280
+ message += ` at ${diag.pointer}`;
5281
+ }
5282
+ message += "\n";
5283
+ }
5284
+ if (diagnostics.length > 3) {
5285
+ message += ` ... and ${diagnostics.length - 3} more
5286
+ `;
5287
+ }
5288
+ return new _AppIdentityError(message);
5289
+ }
5210
5290
  };
5211
5291
  }
5212
5292
  });
@@ -5264,6 +5344,18 @@ var init_discovery = __esm({
5264
5344
  init_errors5();
5265
5345
  }
5266
5346
  });
5347
+ function getEmbeddedIdentity() {
5348
+ return embeddedIdentity;
5349
+ }
5350
+ var embeddedIdentity;
5351
+ var init_embedded = __esm({
5352
+ "src/appidentity/embedded.ts"() {
5353
+ init_schema();
5354
+ init_constants();
5355
+ init_errors5();
5356
+ embeddedIdentity = null;
5357
+ }
5358
+ });
5267
5359
 
5268
5360
  // src/appidentity/loader.ts
5269
5361
  var loader_exports = {};
@@ -5292,11 +5384,30 @@ async function loadIdentity(options) {
5292
5384
  return cached;
5293
5385
  }
5294
5386
  }
5295
- const discovery = await discoverIdentityPath({
5296
- path: options?.path,
5297
- startDir: options?.startDir
5298
- });
5387
+ let discovery;
5388
+ try {
5389
+ discovery = await discoverIdentityPath({
5390
+ path: options?.path,
5391
+ startDir: options?.startDir
5392
+ });
5393
+ } catch (error) {
5394
+ const hasExplicitPath = Boolean(options?.path);
5395
+ const hasEnvOverride = Boolean(process.env[APP_IDENTITY_ENV_VAR]);
5396
+ if (!hasExplicitPath && !hasEnvOverride && error instanceof AppIdentityError) {
5397
+ const embedded = getEmbeddedIdentity();
5398
+ if (embedded) {
5399
+ setCachedIdentity(embedded);
5400
+ return embedded;
5401
+ }
5402
+ }
5403
+ throw error;
5404
+ }
5299
5405
  if (!discovery) {
5406
+ const embedded = getEmbeddedIdentity();
5407
+ if (embedded) {
5408
+ setCachedIdentity(embedded);
5409
+ return embedded;
5410
+ }
5300
5411
  throw AppIdentityError.notFound([]);
5301
5412
  }
5302
5413
  let content;
@@ -5333,6 +5444,7 @@ var init_loader2 = __esm({
5333
5444
  init_cache();
5334
5445
  init_constants();
5335
5446
  init_discovery();
5447
+ init_embedded();
5336
5448
  init_errors5();
5337
5449
  }
5338
5450
  });