@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.
- package/CHANGELOG.md +73 -512
- package/README.md +111 -28
- package/config/crucible-ts/agentic/roles/README.md +76 -0
- package/config/crucible-ts/agentic/roles/cicd.yaml +82 -0
- package/config/crucible-ts/agentic/roles/dataeng.yaml +104 -0
- package/config/crucible-ts/agentic/roles/devlead.yaml +84 -0
- package/config/crucible-ts/agentic/roles/devrev.yaml +105 -0
- package/config/crucible-ts/agentic/roles/entarch.yaml +101 -0
- package/config/crucible-ts/agentic/roles/infoarch.yaml +95 -0
- package/config/crucible-ts/agentic/roles/prodmktg.yaml +92 -0
- package/config/crucible-ts/agentic/roles/qa.yaml +148 -0
- package/config/crucible-ts/agentic/roles/secrev.yaml +101 -0
- package/config/crucible-ts/agentic/roles/uxdev.yaml +168 -0
- package/config/crucible-ts/branding/ecosystem.yaml +26 -0
- package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +26 -0
- package/config/crucible-ts/library/foundry/exit-codes.yaml +28 -3
- package/config/crucible-ts/library/foundry/patterns.yaml +2 -2
- package/config/crucible-ts/library/foundry/signal-resolution-fixtures.yaml +207 -0
- package/config/crucible-ts/library/foundry/signals.yaml +21 -0
- package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +9 -1
- package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml} +1 -1
- package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +1 -2
- package/config/crucible-ts/taxonomy/fixture-catalog.yaml +145 -0
- package/config/crucible-ts/taxonomy/languages.yaml +2 -2
- package/config/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalogs.yaml +77 -0
- package/config/crucible-ts/taxonomy/library/platform-modules/v1.1.0/modules.yaml +722 -0
- package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
- package/config/crucible-ts/taxonomy/repository-categories.yaml +134 -1
- package/dist/appidentity/index.d.ts +117 -35
- package/dist/appidentity/index.js +752 -592
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.js +118 -6
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js +118 -6
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.js +118 -6
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.d.ts +13 -676
- package/dist/foundry/index.js +118 -6
- package/dist/foundry/index.js.map +1 -1
- package/dist/foundry/similarity/index.d.ts +2 -2
- package/dist/fulhash/index.d.ts +64 -12
- package/dist/fulhash/index.js +292 -53
- package/dist/fulhash/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +753 -593
- package/dist/index.js.map +1 -1
- package/dist/{manager-D27vrdaS.d.ts → manager-CH3fX7zO.d.ts} +1 -1
- package/dist/pathfinder/index.js +368 -59
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +302 -0
- package/dist/schema/index.js +118 -6
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.d.ts +675 -0
- package/dist/signals/index.js +5790 -0
- package/dist/signals/index.js.map +1 -0
- package/dist/similarity/index.d.ts +2 -0
- package/dist/similarity/index.js +136 -0
- package/dist/similarity/index.js.map +1 -0
- package/dist/{suggest-Cv7SVQRu.d.ts → suggest-D8LbwtPV.d.ts} +1 -1
- package/dist/telemetry/http/index.js +704 -591
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.js +118 -6
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.d.ts +1 -1
- package/dist/telemetry/prometheus/index.js +175 -11
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/package.json +15 -6
- package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +1 -1
- package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +1 -1
- package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +3 -3
- package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +1 -1
- package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +1 -1
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +1 -1
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +3 -3
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +1 -1
- package/schemas/crucible-ts/config/sync-keys.schema.yaml +14 -0
- package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +1 -1
- package/schemas/crucible-ts/design/README.md +159 -0
- package/schemas/crucible-ts/design/core/v1.0.0/component-states.schema.json +204 -0
- package/schemas/crucible-ts/design/core/v1.0.0/semantic-colors.schema.json +179 -0
- package/schemas/crucible-ts/design/core/v1.0.0/spacing-scale.schema.json +165 -0
- package/schemas/crucible-ts/design/core/v1.0.0/typography-roles.schema.json +195 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/color-palette.schema.json +303 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/component.schema.json +374 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/layout.schema.json +272 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/theme.schema.json +205 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/typography.schema.json +316 -0
- package/schemas/crucible-ts/devsecops/lorage-central/activity/v1.0.0/activity.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/credentials.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/policy/v1.0.0/policy.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/recipe.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/runbook.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/tenant.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/secrets/v1.0.0/secrets.schema.json +1 -1
- package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json +140 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +6 -1
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +1 -1
- package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +2 -2
- package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +61 -1
- package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-entry.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-info.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-manifest.schema.json +2 -2
- package/schemas/crucible-ts/library/fulpack/v1.0.0/create-options.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-options.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-result.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/scan-options.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/validation-result.schema.json +1 -1
- package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
- package/schemas/crucible-ts/library/{foundry → similarity}/v1.0.0/similarity.schema.json +2 -2
- package/schemas/crucible-ts/library/{foundry → similarity}/v2.0.0/similarity.schema.json +2 -2
- package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +1 -1
- package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +1 -1
- package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +1 -1
- package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +1 -1
- package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +1 -1
- package/schemas/crucible-ts/standards/publishing/v1.0.0/spec-catalog.schema.json +134 -0
- package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/modules/v1.0.0/devsecops-module-entry.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/fixture/v1.0.0/fixture-catalog.schema.json +166 -0
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalog-entry.schema.json +98 -0
- package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulencode/encoding-families/v1.0.0/families.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulhash/algorithms/v1.0.0/algorithms.yaml +16 -0
- package/schemas/crucible-ts/taxonomy/library/modules/v1.0.0/module-entry.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/modules/v1.1.0/module-entry.schema.json +436 -0
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +16 -8
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +1 -1
- package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +43 -0
- package/schemas/crucible-ts/upstream/3leaps/agentic/v0/role-prompt.schema.json +183 -0
- package/schemas/crucible-ts/upstream/3leaps/ailink/v0/prompt.schema.json +204 -0
- package/schemas/crucible-ts/upstream/3leaps/ailink/v0/search-response.schema.json +152 -0
- package/schemas/crucible-ts/upstream/README.md +50 -0
- package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +1 -1
- package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +1 -1
- package/schemas/crucible-ts/config/goneat/README.md +0 -60
- package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +0 -234
- package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +0 -344
- package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +0 -20
- package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +0 -17
- package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +0 -178
- package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +0 -205
- package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +0 -177
- package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +0 -146
package/CHANGELOG.md
CHANGED
|
@@ -5,25 +5,89 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
<!-- RETENTION POLICY: This file maintains the last 10 releases in reverse chronological order.
|
|
9
|
+
Older releases are archived in docs/releases/v{version}.md -->
|
|
10
|
+
|
|
8
11
|
## [Unreleased]
|
|
9
12
|
|
|
10
|
-
|
|
13
|
+
_No unreleased changes._
|
|
14
|
+
|
|
15
|
+
## [0.2.0] - 2026-01-13
|
|
11
16
|
|
|
12
17
|
### Added
|
|
13
18
|
|
|
14
|
-
- **
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
+
- **Trust Anchor Bootstrap** - New `scripts/make-bootstrap.sh` implementing sfetch → goneat trust pyramid
|
|
20
|
+
- Cryptographic verification of toolchain via minisign signatures
|
|
21
|
+
- Foundation scope tools installation via `goneat doctor tools --scope foundation`
|
|
22
|
+
- Consistent with pyfulmen/rsfulmen bootstrap patterns
|
|
23
|
+
|
|
24
|
+
- **Package Cooling Policy** (`.goneat/dependencies.yaml`) - Supply chain security controls
|
|
25
|
+
- 7-day cooling period for new packages
|
|
26
|
+
- Minimum download thresholds (100 total, 10 recent)
|
|
27
|
+
- Exception for `@fulmenhq/*` organization packages
|
|
28
|
+
- License compliance: forbidden GPL/LGPL/AGPL/MPL/CDDL
|
|
29
|
+
|
|
30
|
+
- **License Audit Target** (`make license-audit`) - Automated forbidden license detection
|
|
31
|
+
- Generates `dist/reports/license-inventory.csv`
|
|
32
|
+
- Integrated into `make check-all` and pre-push hooks
|
|
33
|
+
|
|
34
|
+
- **Signals Module Entry Point** - New `@fulmenhq/tsfulmen/signals` for direct signal handling access
|
|
35
|
+
|
|
36
|
+
- **Embedded App Identity Fallback** - Resilient identity discovery when `.fulmen/app.yaml` not in ancestor path
|
|
19
37
|
|
|
20
38
|
### Changed
|
|
21
39
|
|
|
22
|
-
- **
|
|
40
|
+
- **Role-Based Agent Model** - Migrated from named identities to functional roles
|
|
41
|
+
- AGENTS.md rewritten for devlead/devrev/infoarch/entarch/secrev roles
|
|
42
|
+
- MAINTAINERS.md updated (removed AI Co-Maintainers section)
|
|
43
|
+
- ADR frontmatter updated to use role slugs
|
|
44
|
+
- Attribution format: `Generated by <Model> via <Interface>` with `Role:` trailer
|
|
45
|
+
|
|
46
|
+
- **Crucible SSOT** - Updated to v0.4.8
|
|
47
|
+
- Role catalog expanded: devlead, devrev, infoarch, entarch, secrev, cicd, dataeng, prodmktg, uxdev, qa
|
|
48
|
+
- Signal resolution standard with cross-language fixtures
|
|
49
|
+
- TUI design system schemas (`schemas/crucible-ts/design/`)
|
|
50
|
+
- OpenAPI spec coverage standard (ADR-0014)
|
|
51
|
+
- Ecosystem branding configuration (`config/crucible-ts/branding/`)
|
|
52
|
+
- Similarity module promoted to dedicated path (`config/crucible-ts/library/similarity/`)
|
|
53
|
+
- Canonical URI resolution standard for spec publishing
|
|
54
|
+
|
|
55
|
+
- **Makefile Refactoring** - Adopted GONEAT_RESOLVE/SFETCH_RESOLVE patterns
|
|
56
|
+
- Bumped GONEAT_VERSION to v0.5.1
|
|
57
|
+
- Pre-push hooks now include `dependencies` category assessment
|
|
58
|
+
- All goneat invocations use consistent resolution logic
|
|
59
|
+
|
|
60
|
+
- **Tools Configuration** (`.goneat/tools.yaml`) - Added foundation scope
|
|
61
|
+
- Tools: actionlint, ripgrep, jq, yq, bun, yamlfmt
|
|
62
|
+
- Platform-specific installer priorities
|
|
63
|
+
|
|
64
|
+
- **YAML Formatting** - Added `.yamlfmt` configuration for consistent YAML styling
|
|
23
65
|
|
|
24
66
|
---
|
|
25
67
|
|
|
26
|
-
## [0.1.
|
|
68
|
+
## [0.1.14] - 2025-11-28
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
|
|
72
|
+
- **Unified Hashing Stack** (`@fulmenhq/tsfulmen/fulhash`) - Consolidated hashing implementations on `hash-wasm`
|
|
73
|
+
- Added support for **CRC32** and **CRC32C** algorithms (block and streaming)
|
|
74
|
+
- Implemented `multiHash()` for efficient single-pass multi-algorithm hashing
|
|
75
|
+
- Implemented `verify()` for checksum validation
|
|
76
|
+
- Benchmarked performance: XXH3-128 (~5GB/s), SHA-256 (~2GB/s), CRC (~1.2GB/s)
|
|
77
|
+
- Added comprehensive tests for streaming, concurrency, and encoding handling
|
|
78
|
+
|
|
79
|
+
### Changed
|
|
80
|
+
|
|
81
|
+
- **Crucible SSOT** - Updated to v0.2.20 (syncs latest fulhash types)
|
|
82
|
+
- **Dependency Cleanup** - Removed `crc-32` and `fast-crc32c` in favor of `hash-wasm` consolidation
|
|
83
|
+
- **Bug Fixes**:
|
|
84
|
+
- Fixed `Digest.parse` to support 8-char CRC checksums
|
|
85
|
+
- Fixed XXH3 encoding handling for non-UTF8 inputs
|
|
86
|
+
- Improved `MultiHashResult` typing and deduplication
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## [0.1.13] - 2025-11-20
|
|
27
91
|
|
|
28
92
|
### Fixed
|
|
29
93
|
|
|
@@ -370,507 +434,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
370
434
|
|
|
371
435
|
---
|
|
372
436
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
**Foundry Similarity v2.0.0** - Major upgrade to similarity module with multiple distance metrics, normalization presets, WASM-backed performance, and Turkish locale support.
|
|
376
|
-
|
|
377
|
-
### Added
|
|
378
|
-
|
|
379
|
-
- **Similarity v2.0.0**: Complete implementation of Crucible Foundry Similarity Standard v2.0.0
|
|
380
|
-
- **Multiple Metrics**: Five distance/similarity algorithms
|
|
381
|
-
- Levenshtein distance (Wagner-Fischer)
|
|
382
|
-
- Damerau-Levenshtein OSA (Optimal String Alignment)
|
|
383
|
-
- Damerau-Levenshtein unrestricted (true Damerau)
|
|
384
|
-
- Jaro-Winkler similarity with prefix scaling
|
|
385
|
-
- Longest common substring (LCS)
|
|
386
|
-
- **Normalization Presets**: Four standardized text normalization levels
|
|
387
|
-
- `none`: No transformation
|
|
388
|
-
- `minimal`: NFC + trim
|
|
389
|
-
- `default`: NFC + casefold + trim
|
|
390
|
-
- `aggressive`: NFKD + casefold + strip accents + remove punctuation
|
|
391
|
-
- **Turkish Locale Support**: Proper İ/i handling via `@3leaps/string-metrics-wasm` v0.3.8
|
|
392
|
-
- **Rich Suggestion API**: Enhanced metadata in suggestion results
|
|
393
|
-
- `matchedRange`: Character positions for substring matches
|
|
394
|
-
- `reason`: Score explanation strings
|
|
395
|
-
- `normalizedValue`: Post-normalization text
|
|
396
|
-
- **WASM Performance**: 4x faster than pure TypeScript implementation
|
|
397
|
-
- Levenshtein: 0.0028ms avg (was 0.059ms)
|
|
398
|
-
- Score: 0.0022ms avg (was 0.058ms)
|
|
399
|
-
- <1ms p95 target exceeded: 0.004ms p95
|
|
400
|
-
- **Comprehensive Testing**: 143 tests including fixture-driven validation
|
|
401
|
-
- 76 fixture tests against Crucible v2.0.0 standard
|
|
402
|
-
- 67 unit and integration tests
|
|
403
|
-
- Build artifacts test prevents WASM bundling
|
|
404
|
-
|
|
405
|
-
### Changed
|
|
406
|
-
|
|
407
|
-
- **Similarity API**: Metric parameter added to distance/score functions
|
|
408
|
-
- `distance(a, b, metric?)` - specify algorithm
|
|
409
|
-
- `score(a, b, metric?)` - normalized similarity with metric selection
|
|
410
|
-
- Backward compatible: defaults to `"levenshtein"`
|
|
411
|
-
- **Normalization API**: Preset-based interface with backward compatibility
|
|
412
|
-
- `normalize(value, preset?, locale?)` - preset string parameter
|
|
413
|
-
- Legacy `normalize(value, options)` still supported
|
|
414
|
-
- Enhanced with locale parameter for Turkish/Lithuanian/Azeri
|
|
415
|
-
- **Suggestion Options**: Extended with v2 parameters
|
|
416
|
-
- `metric`: Algorithm selection
|
|
417
|
-
- `normalizePreset`: Preset-based normalization
|
|
418
|
-
- `preferPrefix`: Jaro-Winkler prefix boost
|
|
419
|
-
- Legacy `normalize` boolean still supported
|
|
420
|
-
|
|
421
|
-
### Dependencies
|
|
422
|
-
|
|
423
|
-
- Added `@3leaps/string-metrics-wasm` v0.3.8 (WASM-backed algorithms)
|
|
424
|
-
- Upgraded normalization to support locale-aware casefolding
|
|
425
|
-
|
|
426
|
-
### Fixed
|
|
427
|
-
|
|
428
|
-
- Turkish dotted İ now correctly normalized to lowercase i with `locale: "tr"`
|
|
429
|
-
- Build artifacts test prevents accidental WASM bundling (tsup externalization verified)
|
|
430
|
-
|
|
431
|
-
### Documentation
|
|
432
|
-
|
|
433
|
-
- Updated `src/foundry/similarity/README.md` with v2 API documentation
|
|
434
|
-
- Migration guide for v1 to v2 upgrade
|
|
435
|
-
- Performance benchmarks and Unicode support details
|
|
436
|
-
- Turkish locale support memo in `.plans/memos/`
|
|
437
|
-
|
|
438
|
-
### Added
|
|
439
|
-
|
|
440
|
-
- **Pathfinder Module**: Enterprise filesystem traversal with observability and checksums
|
|
441
|
-
- **Core Traversal**: Recursive directory scanning with glob pattern matching
|
|
442
|
-
- `includePatterns` and `excludePatterns` for flexible file selection
|
|
443
|
-
- `maxDepth` control for traversal depth limiting
|
|
444
|
-
- `followSymlinks` and `includeHidden` for advanced filesystem access
|
|
445
|
-
- Streaming results via `findIterable()` for memory-efficient large directory processing
|
|
446
|
-
- **Ignore File Support**: `.fulmenignore` and `.gitignore` with nested precedence
|
|
447
|
-
- Hierarchical ignore pattern loading from directory tree
|
|
448
|
-
- Child directory patterns override parent directory rules
|
|
449
|
-
- Configurable via `honorIgnoreFiles: boolean`
|
|
450
|
-
- **FulHash Integration**: Optional streaming checksum calculation
|
|
451
|
-
- Algorithms: `xxh3-128` (default) and `sha256` support
|
|
452
|
-
- Streaming implementation prevents memory exhaustion on large files
|
|
453
|
-
- Checksum errors handled gracefully with error metadata preservation
|
|
454
|
-
- `<10% performance overhead` verified via benchmarks
|
|
455
|
-
- **Path Constraints**: Security-focused path validation with enforcement levels
|
|
456
|
-
- `EnforcementLevel.STRICT`: Reject violations with FulmenError
|
|
457
|
-
- `EnforcementLevel.WARN`: Log warnings and continue operation
|
|
458
|
-
- `EnforcementLevel.PERMISSIVE`: No enforcement (default)
|
|
459
|
-
- Path traversal attack prevention with root boundary enforcement
|
|
460
|
-
- `allowedPrefixes` and `forbiddenPatterns` for fine-grained control
|
|
461
|
-
- **Enterprise Observability**: Full integration with TSFulmen infrastructure
|
|
462
|
-
- Structured `FulmenError` with correlation IDs and severity levels
|
|
463
|
-
- Telemetry metrics: `pathfinder_find_ms`, `pathfinder_security_warnings`
|
|
464
|
-
- Progressive logging integration with policy-driven profiles
|
|
465
|
-
- Schema validation via existing TSFulmen schema module
|
|
466
|
-
- **Convenience Helpers**: Pre-configured finders for common use cases
|
|
467
|
-
- `findConfigFiles()`: Discover YAML/JSON configuration files
|
|
468
|
-
- `findSchemaFiles()`: Find `.schema.json` and `.schema.yaml` files
|
|
469
|
-
- `findByExtensions()`: Generic extension-based file discovery
|
|
470
|
-
- **Cross-Platform Support**: Linux, macOS, Windows compatibility
|
|
471
|
-
- Path normalization and separator handling
|
|
472
|
-
- Symlink resolution consistent across platforms
|
|
473
|
-
- Windows-specific path length and character constraints
|
|
474
|
-
- **Comprehensive Testing**: 44 tests with 111 assertions
|
|
475
|
-
- Unit tests for all core functionality
|
|
476
|
-
- Integration tests with real filesystem operations
|
|
477
|
-
- Cross-platform fixture validation
|
|
478
|
-
- Performance benchmark verification
|
|
479
|
-
|
|
480
|
-
---
|
|
481
|
-
|
|
482
|
-
## [0.1.2] - 2025-10-25
|
|
483
|
-
|
|
484
|
-
**Error Handling, Telemetry, and Core Utilities** - Comprehensive error handling with FulmenError, telemetry instrumentation across modules, FulHash for integrity verification, Similarity utilities, DocScribe for document processing, Progressive Logging, and complete Crucible Shim.
|
|
485
|
-
|
|
486
|
-
### Added
|
|
487
|
-
|
|
488
|
-
- **Error Handling Module**: Schema-backed error handling with FulmenError
|
|
489
|
-
- `FulmenError` class with immutable data structure and schema validation
|
|
490
|
-
- Static constructors: `fromError()`, `wrap()`, `fromData()`
|
|
491
|
-
- Schema-compliant JSON serialization via `toJSON()`
|
|
492
|
-
- Correlation ID support for distributed tracing
|
|
493
|
-
- Severity levels with numeric mapping (critical: 1000, high: 750, medium: 500, low: 250, info: 100)
|
|
494
|
-
- Exit code guidance for CLI applications
|
|
495
|
-
- Context preservation from wrapped errors
|
|
496
|
-
- Type guards: `isFulmenError()`, `isFulmenErrorData()`
|
|
497
|
-
- Validator integration for schema compliance checking
|
|
498
|
-
- 43 tests covering construction, wrapping, serialization, and validation
|
|
499
|
-
|
|
500
|
-
- **Telemetry Module**: Metrics collection and aggregation with OTLP export support
|
|
501
|
-
- **Counter**: Monotonically increasing values (`inc()`)
|
|
502
|
-
- **Gauge**: Arbitrary point-in-time values (`set()`, `inc()`, `dec()`)
|
|
503
|
-
- **Histogram**: Distribution tracking with automatic bucketing
|
|
504
|
-
- ADR-0007 compliant buckets for `_ms` metrics: [1, 5, 10, 50, 100, 500, 1000, 5000, 10000]
|
|
505
|
-
- Percentile calculations (p50, p95, p99)
|
|
506
|
-
- Count, sum, min, max aggregations
|
|
507
|
-
- **Global Registry**: Singleton registry accessible via `metrics.counter()`, `metrics.gauge()`, `metrics.histogram()`
|
|
508
|
-
- **Export Formats**: OTLP-compatible JSON with RFC3339 timestamps
|
|
509
|
-
- **Taxonomy Integration**: Loads metric definitions from `config/crucible-ts/taxonomy/metrics.yaml`
|
|
510
|
-
- **Lifecycle Management**: `export()`, `flush()`, `clear()` for metric lifecycle
|
|
511
|
-
- **Type Safety**: Full TypeScript types for all metric operations
|
|
512
|
-
- 85 tests covering counters, gauges, histograms, registry, and taxonomy
|
|
513
|
-
|
|
514
|
-
- **Telemetry Instrumentation**: Observability across config, schema, and crucible modules
|
|
515
|
-
- **Config Module Metrics**:
|
|
516
|
-
- `config_load_ms` histogram - Directory/file operation timing
|
|
517
|
-
- `config_load_errors` counter - Failed operations
|
|
518
|
-
- Instrumented: `ensureDirExists()`, `resolveConfigPath()`
|
|
519
|
-
- 7 telemetry integration tests
|
|
520
|
-
- **Schema Module Metrics**:
|
|
521
|
-
- `schema_validations` counter - Successful validations
|
|
522
|
-
- `schema_validation_errors` counter - Failed validations
|
|
523
|
-
- Instrumented: `validateData()`, `compileSchemaById()`, `validateDataBySchemaId()`, `validateFileBySchemaId()`
|
|
524
|
-
- 9 telemetry integration tests
|
|
525
|
-
- **Crucible Module Metrics**:
|
|
526
|
-
- `foundry_lookup_count` counter - Successful asset loads
|
|
527
|
-
- Instrumented: `loadSchemaById()`, `getDocumentation()`, `getConfigDefaults()`
|
|
528
|
-
- 8 telemetry integration tests
|
|
529
|
-
- **Zero Breaking Changes**: All error types unchanged, telemetry is transparent observation layer
|
|
530
|
-
- **Taxonomy Compliance**: All metrics defined in Crucible taxonomy
|
|
531
|
-
- 24 total telemetry tests, all existing tests pass
|
|
532
|
-
|
|
533
|
-
- **FulHash Module**: Fast, cross-language compatible hashing for integrity verification and checksums
|
|
534
|
-
- **Block Hashing API**: One-shot hashing for in-memory data
|
|
535
|
-
- `hash()` - Hash strings or byte arrays with configurable algorithm
|
|
536
|
-
- `hashString()` - Convenience wrapper for string inputs
|
|
537
|
-
- `hashBytes()` - Convenience wrapper for Uint8Array inputs
|
|
538
|
-
- Async API supporting both SHA-256 and XXH3-128
|
|
539
|
-
- Default algorithm: XXH3-128 (7.5 GB/s throughput, non-cryptographic)
|
|
540
|
-
- SHA-256 option for cryptographic integrity (2.4 GB/s throughput)
|
|
541
|
-
- **Streaming API**: Incremental hashing for large files without memory pressure
|
|
542
|
-
- `createStreamHasher()` - Factory for streaming hash operations
|
|
543
|
-
- `update()` - Chainable method for incremental data feeding
|
|
544
|
-
- `digest()` - Finalize and return hash digest
|
|
545
|
-
- `reset()` - Reuse hasher for multiple operations
|
|
546
|
-
- State management preventing incorrect usage patterns
|
|
547
|
-
- Concurrency-safe with factory pattern (each hasher owns WASM instance)
|
|
548
|
-
- **Digest Operations**: Parse, verify, and compare hash checksums
|
|
549
|
-
- `Digest.parse()` - Parse formatted checksums (`algorithm:hex`)
|
|
550
|
-
- `Digest.verify()` - Verify data against checksum
|
|
551
|
-
- `digest.equals()` - Compare digests for equality
|
|
552
|
-
- `digest.formatted` - Standard `algorithm:hex` format
|
|
553
|
-
- Immutable digest objects with defensive copying
|
|
554
|
-
- **Cross-Language Compatibility**: Matches gofulmen/pyfulmen implementations
|
|
555
|
-
- Standard checksum format: `algorithm:lowercase-hex`
|
|
556
|
-
- Shared fixture validation (12 fixtures: 6 hash, 4 format, 2 error)
|
|
557
|
-
- Consistent error naming across ecosystem
|
|
558
|
-
- **High Performance**: Exceeds standard targets by 7-24x
|
|
559
|
-
- XXH3-128: 7.5 GB/s on 100MB (target: 1 GB/s)
|
|
560
|
-
- SHA-256: 2.4 GB/s on 100MB (target: 100 MB/s)
|
|
561
|
-
- Streaming overhead: -33% (faster than block hashing!)
|
|
562
|
-
- Small string hashing: <0.5ms per operation (10K ops)
|
|
563
|
-
- Concurrent hashing: 1 GB/s aggregate throughput (100 ops)
|
|
564
|
-
- **Concurrency Safety**: Factory pattern prevents race conditions
|
|
565
|
-
- Each hash operation gets fresh WASM instance
|
|
566
|
-
- No shared state between concurrent operations
|
|
567
|
-
- Deterministic results under high concurrency
|
|
568
|
-
- Stream hashers maintain independent state
|
|
569
|
-
- **Error Handling**: Clear, actionable error messages
|
|
570
|
-
- `UnsupportedAlgorithmError` - Lists supported algorithms
|
|
571
|
-
- `InvalidChecksumFormatError` - Describes expected format
|
|
572
|
-
- `InvalidChecksumError` - Explains validation failure
|
|
573
|
-
- `DigestStateError` - Prevents incorrect hasher reuse
|
|
574
|
-
- All errors extend `FulHashError` base class
|
|
575
|
-
- **Package Exports**: Added `@fulmenhq/tsfulmen/fulhash` subpath
|
|
576
|
-
- **Comprehensive Testing**: 157 tests across 11 test suites
|
|
577
|
-
- Block hashing: 21 tests (SHA-256, XXH3-128, fixtures)
|
|
578
|
-
- Streaming API: 20 tests (state management, reset, chaining)
|
|
579
|
-
- Digest operations: 30 tests (parse, verify, compare, format)
|
|
580
|
-
- Concurrency safety: 17 tests (race conditions, isolation)
|
|
581
|
-
- Integration examples: 17 tests (real-world usage patterns)
|
|
582
|
-
- Performance benchmarks: 10 tests (throughput, overhead)
|
|
583
|
-
- Fixture validation: 12 tests (cross-language parity)
|
|
584
|
-
- Error handling: 15 tests (all error conditions)
|
|
585
|
-
- Type contracts: 15 tests (TypeScript interface validation)
|
|
586
|
-
- **Documentation**: Complete API reference in `src/fulhash/README.md`
|
|
587
|
-
- Quick start examples
|
|
588
|
-
- Block and streaming usage patterns
|
|
589
|
-
- Checksum validation workflows
|
|
590
|
-
- Performance characteristics
|
|
591
|
-
- Security considerations (crypto vs non-crypto)
|
|
592
|
-
- Error handling guide
|
|
593
|
-
- Cross-language compatibility notes
|
|
594
|
-
- **Type Safety**: Full TypeScript strict mode with exported types
|
|
595
|
-
- `Algorithm` enum (SHA256, XXH3_128)
|
|
596
|
-
- `Digest` interface (immutable hash result)
|
|
597
|
-
- `HashOptions` interface (algorithm, encoding)
|
|
598
|
-
- `StreamHasher` interface (update, digest, reset)
|
|
599
|
-
- `StreamHasherOptions` interface (algorithm configuration)
|
|
600
|
-
|
|
601
|
-
- **Foundry Similarity Module**: Text similarity and normalization utilities implementing Crucible 2025.10.2 standard
|
|
602
|
-
- **Levenshtein Distance**: Wagner-Fischer algorithm with O(min(m,n)) space complexity
|
|
603
|
-
- `distance()` - Calculate edit distance between strings
|
|
604
|
-
- Grapheme cluster support via spread operator
|
|
605
|
-
- Handles Unicode, emoji, combining marks correctly
|
|
606
|
-
- **Similarity Scoring**: Normalized 0.0-1.0 similarity scores
|
|
607
|
-
- `score()` - Calculate normalized similarity (1 - distance/maxLen)
|
|
608
|
-
- Empty string handling (returns 1.0 for identical empty strings)
|
|
609
|
-
- **Unicode Normalization**: Text normalization with configurable options
|
|
610
|
-
- `normalize()` - Trim, case folding, optional accent stripping
|
|
611
|
-
- `casefold()` - Unicode-aware lowercase with locale support
|
|
612
|
-
- `stripAccents()` - NFD decomposition + combining mark removal
|
|
613
|
-
- `equalsIgnoreCase()` - Normalized string comparison
|
|
614
|
-
- Turkish locale support (dotted/dotless i handling)
|
|
615
|
-
- **Suggestion API**: Ranked suggestions with configurable thresholds
|
|
616
|
-
- `suggest()` - Get ranked suggestions with score filtering
|
|
617
|
-
- Configurable minScore (default: 0.6), maxSuggestions (default: 3)
|
|
618
|
-
- Optional normalization (default: true)
|
|
619
|
-
- Score-based sorting with alphabetical tie-breaking
|
|
620
|
-
- **High Performance**: <0.1ms p95 latency for 128-character strings (11x faster than <1ms target)
|
|
621
|
-
- **Package Exports**: Added `@fulmenhq/tsfulmen/foundry` and `@fulmenhq/tsfulmen/foundry/similarity` subpaths
|
|
622
|
-
- **Comprehensive Testing**: 127 tests with fixture-driven validation
|
|
623
|
-
- **Type Safety**: Full TypeScript strict mode with exported types (Suggestion, SuggestOptions, NormalizeOptions)
|
|
624
|
-
- **Documentation**: Complete API reference in `src/foundry/similarity/README.md`
|
|
625
|
-
|
|
626
|
-
- **Progressive Logging Module**: Policy-based logging with profile support (Phase 2 complete)
|
|
627
|
-
- **Logging Profiles**: Simple, Standard, Detailed, Audit with automatic policy enforcement
|
|
628
|
-
- **Policy Engine**: Enforces allowed fields, metadata, and severity levels per profile
|
|
629
|
-
- **Pino Integration**: High-performance structured logging with 9.5.0
|
|
630
|
-
- **Middleware System**: Transform events before emission
|
|
631
|
-
- **Type Safety**: Full TypeScript types with discriminated unions
|
|
632
|
-
- **Package Exports**: Added `@fulmenhq/tsfulmen/logging` subpath
|
|
633
|
-
- **Comprehensive Testing**: 83 tests across 6 test suites
|
|
634
|
-
- **Documentation**: Complete API reference in `src/logging/README.md`
|
|
635
|
-
|
|
636
|
-
- **Crucible Shim Module**: Complete implementation (Phases 1-4)
|
|
637
|
-
- **Asset Discovery**: Fast discovery across schemas, docs, config with glob-based filtering
|
|
638
|
-
- **Schema Access**: `listSchemas()`, `loadSchemaById()` with kind filtering (api, config, meta, etc.)
|
|
639
|
-
- **Documentation Access**: `listDocumentation()`, `getDocumentation()` with metadata extraction
|
|
640
|
-
- **Config Defaults**: `listConfigDefaults()`, `getConfigDefaults()` with version matching
|
|
641
|
-
- **Version Parsing**: Intelligent version extraction from asset IDs
|
|
642
|
-
- **Normalization**: Asset ID to path conversion with category awareness
|
|
643
|
-
- **Error Handling**: AssetNotFoundError with similarity-based suggestions (3 suggestions, 60% threshold)
|
|
644
|
-
- **Performance**: <250ms full discovery, <5ms individual category discovery
|
|
645
|
-
- **Type Safety**: Full TypeScript types for all asset categories
|
|
646
|
-
- **Comprehensive Testing**: 96 tests including integration and performance benchmarks
|
|
647
|
-
|
|
648
|
-
- **DocScribe Module**: Complete document processing pipeline
|
|
649
|
-
- **Format Detection**: Identifies markdown, YAML, JSON, TOML, YAML-stream, and plain text
|
|
650
|
-
- Magic number detection (JSON: `{`/`[`, YAML: `---`)
|
|
651
|
-
- Heuristic analysis for ambiguous formats
|
|
652
|
-
- Frontmatter-aware (distinguishes markdown with YAML from pure YAML)
|
|
653
|
-
- YAML stream detection (multiple `---` separators)
|
|
654
|
-
- **Frontmatter Processing**: YAML frontmatter parsing with schema awareness
|
|
655
|
-
- `parseFrontmatter()` - Extract metadata and body with line tracking
|
|
656
|
-
- `stripFrontmatter()` - Remove frontmatter, return body only
|
|
657
|
-
- `extractMetadata()` - Metadata extraction only
|
|
658
|
-
- Schema-aware normalization (title, author, date, tags, version, etc.)
|
|
659
|
-
- Error handling with line/column position information
|
|
660
|
-
- Handles empty frontmatter gracefully
|
|
661
|
-
- **Header Extraction**: Markdown header parsing with slug generation
|
|
662
|
-
- `extractHeaders()` - Extract all headers with level, text, slug, line number
|
|
663
|
-
- ATX-style headers (`# Header`) with configurable depth limit
|
|
664
|
-
- Customizable slugification function
|
|
665
|
-
- Line number tracking for each header
|
|
666
|
-
- **Document Splitting**: Multi-document splitting for YAML streams and markdown
|
|
667
|
-
- `splitDocuments()` - Split content into individual documents
|
|
668
|
-
- YAML stream support (multiple `---` separators)
|
|
669
|
-
- Markdown splitting with heuristic detection
|
|
670
|
-
- Fence-aware (respects code blocks: ```/~~~)
|
|
671
|
-
- Configurable document limit with automatic merging
|
|
672
|
-
- Line range tracking for each split
|
|
673
|
-
- **Document Inspection**: Comprehensive document analysis
|
|
674
|
-
- `inspectDocument()` - Full document metadata, format, headers, sections
|
|
675
|
-
- Returns format, frontmatter status, metadata, header count, line count, size
|
|
676
|
-
- Estimated section count based on headers
|
|
677
|
-
- **Polymorphic Input**: Accepts `string | Uint8Array | ArrayBufferLike`
|
|
678
|
-
- UTF-8 decoding with TextDecoder
|
|
679
|
-
- Consistent normalization via `normalizeInput()`
|
|
680
|
-
- **Type Safety**: Readonly types, discriminated unions, comprehensive error hierarchy
|
|
681
|
-
- **Test Coverage**: 4 test suites with fixtures (frontmatter, format, headers, split)
|
|
682
|
-
|
|
683
|
-
- **Updated SSOT Dependencies**: Synced artifacts from Crucible
|
|
684
|
-
- New schemas: `error-handling/v1.0.0/error-response.schema.json`
|
|
685
|
-
- New schemas: `observability/metrics/v1.0.0/metrics-event.schema.json`
|
|
686
|
-
- New standards: `library/modules/docscribe.md`, `library/modules/error-handling-propagation.md`, `library/modules/telemetry-metrics.md`
|
|
687
|
-
- Updated standards: `devsecops/pre-commit-processes.md`, observability/logging enhancements
|
|
688
|
-
- Updated ecosystem docs: Fulmen Forge Workhorse Standard, ecosystem guide
|
|
689
|
-
|
|
690
|
-
### Changed
|
|
691
|
-
|
|
692
|
-
- Version bump to 0.1.2
|
|
693
|
-
- Updated `docs/tsfulmen_overview.md` with all module statuses
|
|
694
|
-
- Updated `package.json` with error, telemetry, fulhash, logging, and docscribe export paths
|
|
695
|
-
- Updated README.md with comprehensive usage examples for new modules
|
|
696
|
-
- Enhanced test coverage to 981/991 tests passing (98.4% pass rate)
|
|
697
|
-
|
|
698
|
-
### Fixed
|
|
699
|
-
|
|
700
|
-
- Linting issues in format.ts and foundry modules
|
|
701
|
-
- Performance test thresholds adjusted to realistic values
|
|
702
|
-
- YAML detection and stream splitting improvements in docscribe and foundry
|
|
703
|
-
- Crucible schemas discovery performance threshold adjustment
|
|
704
|
-
|
|
705
|
-
---
|
|
706
|
-
|
|
707
|
-
## [0.1.1] - 2025-10-20
|
|
708
|
-
|
|
709
|
-
**Enterprise Module Implementation** - Implements Config Path API, Schema Validation, and complete Foundry module with pattern catalogs, HTTP status helpers, MIME type detection, and country codes.
|
|
710
|
-
|
|
711
|
-
### Added
|
|
712
|
-
|
|
713
|
-
- **Config Path API**: XDG-compliant configuration directory resolution
|
|
714
|
-
- `getAppConfigDir()`, `getAppDataDir()`, `getAppCacheDir()` for application directories
|
|
715
|
-
- `getFulmenConfigDir()`, `getFulmenDataDir()`, `getFulmenCacheDir()` for ecosystem directories
|
|
716
|
-
- Platform-aware path resolution (Linux/XDG, macOS, Windows)
|
|
717
|
-
- Security validation for absolute paths and traversal protection
|
|
718
|
-
- Comprehensive cross-platform test coverage
|
|
719
|
-
|
|
720
|
-
- **Schema Validation Module**: JSON Schema 2020-12 validation with AJV
|
|
721
|
-
- `validateDataBySchemaId()` for validating data against Crucible schemas
|
|
722
|
-
- `validateFileBySchemaId()` for validating JSON/YAML files
|
|
723
|
-
- `getGlobalRegistry()` for accessing schema registry
|
|
724
|
-
- `compileSchemaById()` for pre-compiling schemas
|
|
725
|
-
- `normalizeSchema()` for schema comparison and validation
|
|
726
|
-
- Optional goneat bridge for cross-tool validation parity
|
|
727
|
-
- Schema validation CLI (`bunx tsfulmen-schema`) for development
|
|
728
|
-
- Draft 2020-12 support with meta-schema loading from Crucible
|
|
729
|
-
- 45+ tests covering validation, registry, and goneat bridge
|
|
730
|
-
|
|
731
|
-
- **Foundry Module**: Complete pattern catalog implementation
|
|
732
|
-
- **Pattern Catalog**: 21 regex/glob patterns with language-specific flags
|
|
733
|
-
- `getPattern()`, `getPatternRegex()`, `matchPattern()` for pattern access
|
|
734
|
-
- `listPatterns()`, `describePattern()` for catalog exploration
|
|
735
|
-
- Deep immutability with frozen objects and defensive copying
|
|
736
|
-
- Lazy regex compilation with caching
|
|
737
|
-
- Glob pattern support via picomatch
|
|
738
|
-
- **HTTP Status Catalog**: 58 HTTP status codes across 5 groups
|
|
739
|
-
- `getHttpStatus()` for status lookup
|
|
740
|
-
- `isInformational()`, `isSuccess()`, `isRedirection()`, `isClientError()`, `isServerError()` helpers
|
|
741
|
-
- `getStatusReason()` for reason phrase lookup
|
|
742
|
-
- `listHttpStatuses()` for catalog exploration
|
|
743
|
-
- **MIME Type Catalog**: Content-based detection with magic numbers
|
|
744
|
-
- Magic number pattern database for JSON, XML, YAML (exact byte matching)
|
|
745
|
-
- Heuristic detection for NDJSON, CSV, Protocol Buffers, plain text
|
|
746
|
-
- Priority-based detection engine with UTF-8 BOM handling
|
|
747
|
-
- Streaming support for Buffer, ReadableStream, Node.js Readable, and file paths
|
|
748
|
-
- `detectMimeType()` polymorphic function for all input types
|
|
749
|
-
- `detectMimeTypeFromBuffer()` for direct buffer analysis
|
|
750
|
-
- `detectMimeTypeFromFile()` with Bun.file() optimization and Node.js fallback
|
|
751
|
-
- `detectMimeTypeFromStream()` for Web and Node.js streams
|
|
752
|
-
- `matchMagicNumber()` utility for pattern verification
|
|
753
|
-
- `getMimeTypeByExtension()` for fast extension-based lookup
|
|
754
|
-
- DetectionOptions interface for configurable byte reading and fallback
|
|
755
|
-
- 60+ tests for magic number detection across all formats
|
|
756
|
-
- Test fixtures for integration testing
|
|
757
|
-
- **Country Code Catalog**: ISO 3166 country codes with normalization
|
|
758
|
-
- `getCountryByAlpha2()`, `getCountryByAlpha3()`, `getCountryByNumeric()` lookups
|
|
759
|
-
- Case-insensitive alpha code matching (US, us, Us all work)
|
|
760
|
-
- Numeric code normalization with left-padding (76 → "076")
|
|
761
|
-
- `listCountries()` for catalog exploration
|
|
762
|
-
- Precomputed indexes for O(1) lookups
|
|
763
|
-
- 5 countries in MVP (US, CA, JP, DE, BR)
|
|
764
|
-
|
|
765
|
-
- **Foundry Infrastructure**:
|
|
766
|
-
- YAML catalog loading with schema validation via AJV
|
|
767
|
-
- Fail-fast error handling with descriptive FoundryCatalogError
|
|
768
|
-
- Bun-first file loading with Node.js fallback
|
|
769
|
-
- `loadAllCatalogs()` for parallel catalog initialization
|
|
770
|
-
- Comprehensive test coverage (193 tests across all catalogs)
|
|
771
|
-
- Zero runtime dependencies (uses yaml, ajv, picomatch)
|
|
772
|
-
|
|
773
|
-
### Changed
|
|
774
|
-
|
|
775
|
-
- Updated README with comprehensive usage examples for all modules
|
|
776
|
-
- Enhanced test coverage from 30%+ to 70%+ (292 total tests)
|
|
777
|
-
- Improved documentation with API examples and detection strategies
|
|
778
|
-
|
|
779
|
-
### Fixed
|
|
780
|
-
|
|
781
|
-
- Foundry loader test regression with readonly Bun global property
|
|
782
|
-
- Import ordering and linting issues across all new modules
|
|
783
|
-
|
|
784
|
-
---
|
|
785
|
-
|
|
786
|
-
## [0.1.0] - 2025-10-15
|
|
787
|
-
|
|
788
|
-
**Bootstrap Scaffold Release** - Establishes project foundation, governance, and tooling infrastructure. No working module implementations yet.
|
|
789
|
-
|
|
790
|
-
**Release Strategy**: TSFulmen follows a progressive upscaling approach:
|
|
791
|
-
|
|
792
|
-
- **v0.1.0**: Bootstrap scaffold (this release)
|
|
793
|
-
- **v0.1.1 - v0.1.x**: Progressive module implementations (Config Path API, Crucible Shim, Logging, Schema Validation)
|
|
794
|
-
- **v0.2.0**: First public release with complete Fulmen Helper Library Standard compliance
|
|
795
|
-
|
|
796
|
-
**Not Production Ready**: This release is for maintainer coordination and ecosystem alignment only. First usable release will be v0.2.0.
|
|
797
|
-
|
|
798
|
-
### Added
|
|
799
|
-
|
|
800
|
-
- **Project Foundation**: Initial repository structure and governance
|
|
801
|
-
- TypeScript library scaffold with src/ layout
|
|
802
|
-
- Bun-based dependency management and build tooling
|
|
803
|
-
- tsup bundler configuration for ESM/CJS dual exports
|
|
804
|
-
- Vitest testing framework with coverage support
|
|
805
|
-
- Biome for linting and formatting
|
|
806
|
-
|
|
807
|
-
- **Repository Governance**: Complete project governance framework
|
|
808
|
-
- AGENTS.md with Module Weaver identity (@module-weaver)
|
|
809
|
-
- MAINTAINERS.md with human maintainer roster
|
|
810
|
-
- REPOSITORY_SAFETY_PROTOCOLS.md for operational safety
|
|
811
|
-
- CONTRIBUTING.md with development guidelines
|
|
812
|
-
- MIT LICENSE
|
|
813
|
-
|
|
814
|
-
- **Makefile Standard**: FulmenHQ-compliant Makefile with all required standard targets
|
|
815
|
-
- Core targets: `bootstrap`, `tools`, `sync-ssot`, `test`, `build`, `build-all`, `clean`
|
|
816
|
-
- Quality targets: `lint` (Biome + goneat assess), `fmt` (Biome + goneat format), `typecheck` (tsc)
|
|
817
|
-
- Version targets: `version`, `version-set`, `version-bump-{major,minor,patch,calver}`
|
|
818
|
-
- Release targets: `release-check`, `release-prepare`, `release-build`
|
|
819
|
-
- Hook targets: `precommit`, `prepush`
|
|
820
|
-
- ADR targets: `adr-validate`, `adr-new`
|
|
821
|
-
- Additional: `test-watch`, `test-coverage`, `bootstrap-force`
|
|
822
|
-
- **Split linting approach**: Biome for TS/JS source, goneat for JSON/YAML/Markdown (matches pyfulmen/gofulmen pattern)
|
|
823
|
-
|
|
824
|
-
- **SSOT Integration**: Crucible asset synchronization via goneat
|
|
825
|
-
- .goneat/ssot-consumer.yaml configuration
|
|
826
|
-
- docs/crucible-ts/ for synced documentation
|
|
827
|
-
- schemas/crucible-ts/ for synced JSON schemas
|
|
828
|
-
- config/crucible-ts/ for synced config defaults
|
|
829
|
-
- .crucible/metadata/ for sync metadata
|
|
830
|
-
|
|
831
|
-
- **Documentation**: Comprehensive project documentation
|
|
832
|
-
- README.md with quick start and architecture overview
|
|
833
|
-
- docs/tsfulmen_overview.md with module catalog and roadmap
|
|
834
|
-
- docs/development/ with operations, bootstrap, and ADR documentation
|
|
835
|
-
- docs/development/adr/ for Architecture Decision Records
|
|
836
|
-
- Local ADR index and guidelines
|
|
837
|
-
- Ecosystem ADR adoption tracking
|
|
838
|
-
- ADR validation and creation tooling via Makefile
|
|
839
|
-
- **ADR-0001**: Split linting approach (Biome for TS/JS, goneat for config/docs)
|
|
840
|
-
- VSCode workspace configuration for development
|
|
841
|
-
- Cross-references to ecosystem standards
|
|
842
|
-
|
|
843
|
-
- **Package Configuration**: Modern TypeScript package setup
|
|
844
|
-
- package.json with proper exports and scripts
|
|
845
|
-
- tsconfig.json with strict TypeScript configuration
|
|
846
|
-
- ESM/CJS dual module support
|
|
847
|
-
- Type definitions for all exports
|
|
848
|
-
|
|
849
|
-
- **Development Tools**: Quality assurance tooling
|
|
850
|
-
- Biome configuration (biome.json)
|
|
851
|
-
- Vitest configuration (vitest.config.ts)
|
|
852
|
-
- Git hooks preparation
|
|
853
|
-
- EditorConfig for consistent formatting
|
|
854
|
-
|
|
855
|
-
- **Version Management**: Initial versioning infrastructure
|
|
856
|
-
- VERSION file (0.1.0)
|
|
857
|
-
- LIFECYCLE_PHASE file (alpha)
|
|
858
|
-
- Semantic versioning support via Makefile
|
|
859
|
-
|
|
860
|
-
### Changed
|
|
861
|
-
|
|
862
|
-
- **Agent Documentation**: Enhanced AGENTS.md with improvements from sibling repos
|
|
863
|
-
- Added DO NOT Rules section with TypeScript-specific guidelines
|
|
864
|
-
- Enhanced agent identity section with Mission, Capabilities, Communication Channels
|
|
865
|
-
- Improved commit attribution examples
|
|
866
|
-
- Added Safety Protocols and Development Philosophy sections
|
|
867
|
-
- Added Getting Started section for agent interaction
|
|
868
|
-
|
|
869
|
-
### Fixed
|
|
870
|
-
|
|
871
|
-
- Repository structure aligned with Fulmen Helper Library Standard
|
|
872
|
-
- Cross-language consistency with gofulmen and pyfulmen governance
|
|
873
|
-
|
|
874
|
-
---
|
|
875
|
-
|
|
876
|
-
_Note: This changelog tracks the progressive upscaling of TSFulmen through v0.1.x releases._
|
|
437
|
+
<!-- Older releases (v0.1.3 and earlier) archived in docs/releases/ -->
|