@fulmenhq/tsfulmen 0.2.0 → 0.2.2

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 (107) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +60 -7
  3. package/config/crucible-ts/agentic/roles/README.md +3 -3
  4. package/config/crucible-ts/library/fulencode/fixtures/README.md +18 -0
  5. package/config/crucible-ts/library/fulencode/fixtures/bom/bom.yaml +14 -0
  6. package/config/crucible-ts/library/fulencode/fixtures/detection/detection.yaml +12 -0
  7. package/config/crucible-ts/library/fulencode/fixtures/invalid-encodings/base64.yaml +10 -0
  8. package/config/crucible-ts/library/fulencode/fixtures/normalization/text-safe.yaml +10 -0
  9. package/config/crucible-ts/library/fulencode/fixtures/telemetry/telemetry-test-cases.yaml +24 -0
  10. package/config/crucible-ts/library/fulencode/fixtures/valid-encodings/base64.yaml +11 -0
  11. package/config/crucible-ts/taxonomy/library/platform-modules/v1.0.0/modules.yaml +2 -2
  12. package/config/crucible-ts/taxonomy/metrics.yaml +79 -1
  13. package/dist/appidentity/index.d.ts +1 -1
  14. package/dist/appidentity/index.js +122 -56
  15. package/dist/appidentity/index.js.map +1 -1
  16. package/dist/config/index.js +122 -56
  17. package/dist/config/index.js.map +1 -1
  18. package/dist/crucible/index.js +122 -56
  19. package/dist/crucible/index.js.map +1 -1
  20. package/dist/errors/index.d.ts +1 -1
  21. package/dist/errors/index.js +122 -56
  22. package/dist/errors/index.js.map +1 -1
  23. package/dist/foundry/index.js +122 -56
  24. package/dist/foundry/index.js.map +1 -1
  25. package/dist/fulencode/index.d.ts +102 -0
  26. package/dist/fulencode/index.js +806 -0
  27. package/dist/fulencode/index.js.map +1 -0
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.js +123 -57
  30. package/dist/index.js.map +1 -1
  31. package/dist/pathfinder/index.d.ts +1 -1
  32. package/dist/pathfinder/index.js +122 -56
  33. package/dist/pathfinder/index.js.map +1 -1
  34. package/dist/reports/license-inventory.csv +7 -6
  35. package/dist/schema/index.d.ts +2 -2
  36. package/dist/schema/index.js +122 -56
  37. package/dist/schema/index.js.map +1 -1
  38. package/dist/signals/index.js +122 -56
  39. package/dist/signals/index.js.map +1 -1
  40. package/dist/telemetry/http/index.js +122 -56
  41. package/dist/telemetry/http/index.js.map +1 -1
  42. package/dist/telemetry/index.d.ts +1 -1
  43. package/dist/telemetry/index.js +122 -56
  44. package/dist/telemetry/index.js.map +1 -1
  45. package/dist/telemetry/prometheus/index.d.ts +1 -1
  46. package/dist/telemetry/prometheus/index.js +122 -56
  47. package/dist/telemetry/prometheus/index.js.map +1 -1
  48. package/dist/{types-BJswWpQC.d.ts → types-DdoeE7F5.d.ts} +1 -1
  49. package/package.json +7 -2
  50. package/schemas/crucible-ts/library/fulencode/v1.0.0/README.md +37 -0
  51. package/schemas/crucible-ts/library/fulencode/v1.0.0/bom-result.schema.json +48 -0
  52. package/schemas/crucible-ts/library/fulencode/v1.0.0/decode-options.schema.json +60 -0
  53. package/schemas/crucible-ts/library/fulencode/v1.0.0/decoding-result.schema.json +70 -0
  54. package/schemas/crucible-ts/library/fulencode/v1.0.0/detect-options.schema.json +25 -0
  55. package/schemas/crucible-ts/library/fulencode/v1.0.0/detection-result.schema.json +57 -0
  56. package/schemas/crucible-ts/library/fulencode/v1.0.0/encode-options.schema.json +71 -0
  57. package/schemas/crucible-ts/library/fulencode/v1.0.0/encoding-result.schema.json +57 -0
  58. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +8 -4
  59. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-error.schema.json +66 -0
  60. package/schemas/crucible-ts/library/fulencode/v1.0.0/normalization-result.schema.json +73 -0
  61. package/schemas/crucible-ts/library/fulencode/v1.0.0/normalize-options.schema.json +44 -0
  62. package/schemas/crucible-ts/meta/README.md +38 -2
  63. package/schemas/crucible-ts/meta/draft-04/schema.json +222 -0
  64. package/schemas/crucible-ts/meta/draft-06/schema.json +218 -0
  65. package/schemas/crucible-ts/meta/draft-2019-09/meta/applicator.json +93 -0
  66. package/schemas/crucible-ts/meta/draft-2019-09/meta/content.json +21 -0
  67. package/schemas/crucible-ts/meta/draft-2019-09/meta/core.json +58 -0
  68. package/schemas/crucible-ts/meta/draft-2019-09/meta/format.json +15 -0
  69. package/schemas/crucible-ts/meta/draft-2019-09/meta/meta-data.json +35 -0
  70. package/schemas/crucible-ts/meta/draft-2019-09/meta/validation.json +119 -0
  71. package/schemas/crucible-ts/meta/draft-2019-09/offline.schema.json +148 -0
  72. package/schemas/crucible-ts/meta/draft-2019-09/schema.json +62 -0
  73. package/schemas/crucible-ts/meta/fixtures/draft-04-sample.json +16 -0
  74. package/schemas/crucible-ts/meta/fixtures/draft-06-sample.json +16 -0
  75. package/schemas/crucible-ts/meta/fixtures/draft-07-sample.json +34 -0
  76. package/schemas/crucible-ts/meta/fixtures/draft-2019-09-sample.json +21 -0
  77. package/schemas/crucible-ts/meta/fixtures/draft-2020-12-sample.json +21 -0
  78. package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.yaml +16 -0
  79. package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +64 -0
  80. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/access-tier.dimension.json +103 -0
  81. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/retention-lifecycle.dimension.json +103 -0
  82. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/schema-stability.dimension.json +100 -0
  83. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/sensitivity.dimension.json +130 -0
  84. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/velocity-mode.dimension.json +79 -0
  85. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volatility.dimension.json +72 -0
  86. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volume-tier.dimension.json +66 -0
  87. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +29 -0
  88. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/access-tier-classification.md +163 -0
  89. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +157 -0
  90. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +259 -0
  91. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/retention-lifecycle-classification.md +200 -0
  92. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/schema-stability-classification.md +205 -0
  93. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/velocity-mode-classification.md +222 -0
  94. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volatility-classification.md +209 -0
  95. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volume-tier-classification.md +200 -0
  96. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/ailink/v0/README.md +48 -0
  97. package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/prompt.schema.json +4 -18
  98. package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/search-response.schema.json +7 -37
  99. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/dimension-definition.schema.json +247 -0
  100. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/sensitivity-level.schema.json +67 -0
  101. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/error-response.schema.json +59 -0
  102. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.data.json +102 -0
  103. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.schema.json +101 -0
  104. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/release-phase.schema.json +18 -0
  105. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/types.schema.json +177 -0
  106. package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +0 -43
  107. /package/schemas/crucible-ts/upstream/3leaps/{agentic → crucible/schemas/agentic}/v0/role-prompt.schema.json +0 -0
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/meta/core",
4
+ "$recursiveAnchor": true,
5
+ "title": "Core vocabulary meta-schema",
6
+ "type": [
7
+ "object",
8
+ "boolean"
9
+ ],
10
+ "properties": {
11
+ "$id": {
12
+ "type": "string",
13
+ "format": "uri-reference",
14
+ "$comment": "Non-empty fragments not allowed.",
15
+ "pattern": "^[^#]*#?$"
16
+ },
17
+ "$schema": {
18
+ "type": "string",
19
+ "format": "uri"
20
+ },
21
+ "$anchor": {
22
+ "type": "string",
23
+ "pattern": "^[A-Za-z][-A-Za-z0-9.:_]*$"
24
+ },
25
+ "$ref": {
26
+ "type": "string",
27
+ "format": "uri-reference"
28
+ },
29
+ "$recursiveRef": {
30
+ "type": "string",
31
+ "format": "uri-reference"
32
+ },
33
+ "$recursiveAnchor": {
34
+ "type": "boolean",
35
+ "default": false
36
+ },
37
+ "$vocabulary": {
38
+ "type": "object",
39
+ "propertyNames": {
40
+ "type": "string",
41
+ "format": "uri"
42
+ },
43
+ "additionalProperties": {
44
+ "type": "boolean"
45
+ }
46
+ },
47
+ "$comment": {
48
+ "type": "string"
49
+ },
50
+ "$defs": {
51
+ "type": "object",
52
+ "additionalProperties": {
53
+ "$recursiveRef": "#"
54
+ },
55
+ "default": {}
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/meta/format",
4
+ "$recursiveAnchor": true,
5
+ "title": "Format vocabulary meta-schema",
6
+ "type": [
7
+ "object",
8
+ "boolean"
9
+ ],
10
+ "properties": {
11
+ "format": {
12
+ "type": "string"
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/meta/meta-data",
4
+ "$recursiveAnchor": true,
5
+ "title": "Meta-data vocabulary meta-schema",
6
+ "type": [
7
+ "object",
8
+ "boolean"
9
+ ],
10
+ "properties": {
11
+ "title": {
12
+ "type": "string"
13
+ },
14
+ "description": {
15
+ "type": "string"
16
+ },
17
+ "default": true,
18
+ "deprecated": {
19
+ "type": "boolean",
20
+ "default": false
21
+ },
22
+ "readOnly": {
23
+ "type": "boolean",
24
+ "default": false
25
+ },
26
+ "writeOnly": {
27
+ "type": "boolean",
28
+ "default": false
29
+ },
30
+ "examples": {
31
+ "type": "array",
32
+ "items": true
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/meta/validation",
4
+ "$recursiveAnchor": true,
5
+ "title": "Validation vocabulary meta-schema",
6
+ "type": [
7
+ "object",
8
+ "boolean"
9
+ ],
10
+ "properties": {
11
+ "multipleOf": {
12
+ "type": "number",
13
+ "exclusiveMinimum": 0
14
+ },
15
+ "maximum": {
16
+ "type": "number"
17
+ },
18
+ "exclusiveMaximum": {
19
+ "type": "number"
20
+ },
21
+ "minimum": {
22
+ "type": "number"
23
+ },
24
+ "exclusiveMinimum": {
25
+ "type": "number"
26
+ },
27
+ "maxLength": {
28
+ "$ref": "#/$defs/nonNegativeInteger"
29
+ },
30
+ "minLength": {
31
+ "$ref": "#/$defs/nonNegativeIntegerDefault0"
32
+ },
33
+ "pattern": {
34
+ "type": "string",
35
+ "format": "regex"
36
+ },
37
+ "maxItems": {
38
+ "$ref": "#/$defs/nonNegativeInteger"
39
+ },
40
+ "minItems": {
41
+ "$ref": "#/$defs/nonNegativeIntegerDefault0"
42
+ },
43
+ "uniqueItems": {
44
+ "type": "boolean",
45
+ "default": false
46
+ },
47
+ "maxContains": {
48
+ "$ref": "#/$defs/nonNegativeInteger"
49
+ },
50
+ "minContains": {
51
+ "$ref": "#/$defs/nonNegativeInteger",
52
+ "default": 1
53
+ },
54
+ "maxProperties": {
55
+ "$ref": "#/$defs/nonNegativeInteger"
56
+ },
57
+ "minProperties": {
58
+ "$ref": "#/$defs/nonNegativeIntegerDefault0"
59
+ },
60
+ "required": {
61
+ "$ref": "#/$defs/stringArray"
62
+ },
63
+ "dependentRequired": {
64
+ "type": "object",
65
+ "additionalProperties": {
66
+ "$ref": "#/$defs/stringArray"
67
+ }
68
+ },
69
+ "const": true,
70
+ "enum": {
71
+ "type": "array",
72
+ "items": true
73
+ },
74
+ "type": {
75
+ "anyOf": [
76
+ {
77
+ "$ref": "#/$defs/simpleTypes"
78
+ },
79
+ {
80
+ "type": "array",
81
+ "items": {
82
+ "$ref": "#/$defs/simpleTypes"
83
+ },
84
+ "minItems": 1,
85
+ "uniqueItems": true
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ "$defs": {
91
+ "nonNegativeInteger": {
92
+ "type": "integer",
93
+ "minimum": 0
94
+ },
95
+ "nonNegativeIntegerDefault0": {
96
+ "$ref": "#/$defs/nonNegativeInteger",
97
+ "default": 0
98
+ },
99
+ "simpleTypes": {
100
+ "enum": [
101
+ "array",
102
+ "boolean",
103
+ "integer",
104
+ "null",
105
+ "number",
106
+ "object",
107
+ "string"
108
+ ]
109
+ },
110
+ "stringArray": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "string"
114
+ },
115
+ "uniqueItems": true,
116
+ "default": []
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,148 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/schema",
4
+ "title": "Offline meta-schema (subset)",
5
+ "description": "Subset of the JSON Schema 2019-09 meta-schema for offline validation.",
6
+ "type": [
7
+ "object",
8
+ "boolean"
9
+ ],
10
+ "$defs": {
11
+ "simpleType": {
12
+ "enum": [
13
+ "array",
14
+ "boolean",
15
+ "integer",
16
+ "null",
17
+ "number",
18
+ "object",
19
+ "string"
20
+ ]
21
+ },
22
+ "schemaArray": {
23
+ "type": "array",
24
+ "minItems": 1,
25
+ "items": {
26
+ "$ref": "#"
27
+ }
28
+ },
29
+ "stringArray": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string"
33
+ },
34
+ "uniqueItems": true,
35
+ "default": []
36
+ }
37
+ },
38
+ "properties": {
39
+ "$id": {
40
+ "type": "string"
41
+ },
42
+ "$schema": {
43
+ "type": "string"
44
+ },
45
+ "$ref": {
46
+ "type": "string"
47
+ },
48
+ "$recursiveAnchor": {
49
+ "type": [
50
+ "boolean",
51
+ "string"
52
+ ]
53
+ },
54
+ "$recursiveRef": {
55
+ "type": "string"
56
+ },
57
+ "title": {
58
+ "type": "string"
59
+ },
60
+ "description": {
61
+ "type": "string"
62
+ },
63
+ "default": {},
64
+ "examples": {
65
+ "type": "array",
66
+ "items": {}
67
+ },
68
+ "type": {
69
+ "anyOf": [
70
+ {
71
+ "$ref": "#/$defs/simpleType"
72
+ },
73
+ {
74
+ "type": "array",
75
+ "items": {
76
+ "$ref": "#/$defs/simpleType"
77
+ },
78
+ "minItems": 1,
79
+ "uniqueItems": true
80
+ }
81
+ ]
82
+ },
83
+ "enum": {
84
+ "type": "array"
85
+ },
86
+ "allOf": {
87
+ "$ref": "#/$defs/schemaArray"
88
+ },
89
+ "anyOf": {
90
+ "$ref": "#/$defs/schemaArray"
91
+ },
92
+ "oneOf": {
93
+ "$ref": "#/$defs/schemaArray"
94
+ },
95
+ "not": {
96
+ "$ref": "#"
97
+ },
98
+ "definitions": {
99
+ "type": "object",
100
+ "additionalProperties": {
101
+ "$ref": "#"
102
+ },
103
+ "default": {}
104
+ },
105
+ "$defs": {
106
+ "type": "object",
107
+ "additionalProperties": {
108
+ "$ref": "#"
109
+ },
110
+ "default": {}
111
+ },
112
+ "properties": {
113
+ "type": "object",
114
+ "additionalProperties": {
115
+ "$ref": "#"
116
+ },
117
+ "default": {}
118
+ },
119
+ "items": {
120
+ "anyOf": [
121
+ {
122
+ "$ref": "#"
123
+ },
124
+ {
125
+ "$ref": "#/$defs/schemaArray"
126
+ }
127
+ ],
128
+ "default": {}
129
+ },
130
+ "required": {
131
+ "$ref": "#/$defs/stringArray"
132
+ },
133
+ "dependencies": {
134
+ "type": "object",
135
+ "additionalProperties": {
136
+ "anyOf": [
137
+ {
138
+ "$ref": "#"
139
+ },
140
+ {
141
+ "$ref": "#/$defs/stringArray"
142
+ }
143
+ ]
144
+ },
145
+ "default": {}
146
+ }
147
+ }
148
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/schema",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2019-09/vocab/core": true,
6
+ "https://json-schema.org/draft/2019-09/vocab/applicator": true,
7
+ "https://json-schema.org/draft/2019-09/vocab/validation": true,
8
+ "https://json-schema.org/draft/2019-09/vocab/meta-data": true,
9
+ "https://json-schema.org/draft/2019-09/vocab/format": false,
10
+ "https://json-schema.org/draft/2019-09/vocab/content": true
11
+ },
12
+ "$recursiveAnchor": true,
13
+ "title": "Core and Validation specifications meta-schema",
14
+ "allOf": [
15
+ {
16
+ "$ref": "meta/core"
17
+ },
18
+ {
19
+ "$ref": "meta/applicator"
20
+ },
21
+ {
22
+ "$ref": "meta/validation"
23
+ },
24
+ {
25
+ "$ref": "meta/meta-data"
26
+ },
27
+ {
28
+ "$ref": "meta/format"
29
+ },
30
+ {
31
+ "$ref": "meta/content"
32
+ }
33
+ ],
34
+ "type": [
35
+ "object",
36
+ "boolean"
37
+ ],
38
+ "properties": {
39
+ "definitions": {
40
+ "$comment": "While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.",
41
+ "type": "object",
42
+ "additionalProperties": {
43
+ "$recursiveRef": "#"
44
+ },
45
+ "default": {}
46
+ },
47
+ "dependencies": {
48
+ "$comment": "\"dependencies\" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to \"dependentSchemas\" and \"dependentRequired\"",
49
+ "type": "object",
50
+ "additionalProperties": {
51
+ "anyOf": [
52
+ {
53
+ "$recursiveRef": "#"
54
+ },
55
+ {
56
+ "$ref": "meta/validation#/$defs/stringArray"
57
+ }
58
+ ]
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "id": "http://example.com/schemas/draft-04-sample.json",
4
+ "title": "Draft-04 sample schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "minLength": 1
10
+ }
11
+ },
12
+ "required": [
13
+ "name"
14
+ ],
15
+ "additionalProperties": false
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-06/schema#",
3
+ "$id": "http://example.com/schemas/draft-06-sample.json",
4
+ "title": "Draft-06 sample schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "count": {
8
+ "type": "integer",
9
+ "const": 1
10
+ }
11
+ },
12
+ "required": [
13
+ "count"
14
+ ],
15
+ "additionalProperties": false
16
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "http://example.com/schemas/draft-07-sample.json",
4
+ "title": "Draft-07 sample schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "kind": {
8
+ "type": "string",
9
+ "enum": [
10
+ "number",
11
+ "other"
12
+ ]
13
+ },
14
+ "value": {
15
+ "type": "integer"
16
+ }
17
+ },
18
+ "if": {
19
+ "properties": {
20
+ "kind": {
21
+ "const": "number"
22
+ }
23
+ },
24
+ "required": [
25
+ "kind"
26
+ ]
27
+ },
28
+ "then": {
29
+ "required": [
30
+ "value"
31
+ ]
32
+ },
33
+ "additionalProperties": false
34
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "http://example.com/schemas/draft-2019-09-sample.json",
4
+ "title": "Draft 2019-09 sample schema",
5
+ "$defs": {
6
+ "positiveInt": {
7
+ "type": "integer",
8
+ "minimum": 1
9
+ }
10
+ },
11
+ "type": "object",
12
+ "properties": {
13
+ "n": {
14
+ "$ref": "#/$defs/positiveInt"
15
+ }
16
+ },
17
+ "required": [
18
+ "n"
19
+ ],
20
+ "unevaluatedProperties": false
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "http://example.com/schemas/draft-2020-12-sample.json",
4
+ "title": "Draft 2020-12 sample schema",
5
+ "$defs": {
6
+ "nonEmpty": {
7
+ "type": "string",
8
+ "minLength": 1
9
+ }
10
+ },
11
+ "type": "object",
12
+ "properties": {
13
+ "id": {
14
+ "$ref": "#/$defs/nonEmpty"
15
+ }
16
+ },
17
+ "required": [
18
+ "id"
19
+ ],
20
+ "unevaluatedProperties": false
21
+ }
@@ -91,6 +91,22 @@ custom_profiles:
91
91
  - "macOS uses NFD for file names"
92
92
  - "Windows/Linux prefer NFC"
93
93
  - "This profile standardizes to NFC"
94
+ text_safe:
95
+ based_on: nfc
96
+ restrictions:
97
+ - reject_control_chars: true
98
+ - reject_c1_controls: true
99
+ - reject_bidi_controls: true
100
+ - reject_zero_width: true
101
+ - allow_only_printable: true
102
+ use_case: "Log-safe and UI-safe text display (prevent spoofing and hidden content)"
103
+ transformations:
104
+ - "NFC composition"
105
+ - "Reject ASCII control characters (0x00-0x1F, 0x7F)"
106
+ - "Reject C1 controls (0x80-0x9F)"
107
+ - "Reject bidi override/isolate characters (U+202A..U+202E, U+2066..U+2069)"
108
+ - "Reject zero-width characters (U+200B, U+200C, U+200D, U+FEFF)"
109
+ security: "Prevents log injection, bidi spoofing, and hidden-content attacks"
94
110
  legacy_compatible:
95
111
  based_on: nfc
96
112
  strip_nonascii: false
@@ -0,0 +1,64 @@
1
+ # Provenance: 3leaps/crucible
2
+
3
+ **DO NOT EDIT THESE FILES.** They are vendored copies from upstream.
4
+
5
+ ## Source
6
+
7
+ | Field | Value |
8
+ | ---------- | ------------------------------------------ |
9
+ | Repository | https://github.com/3leaps/crucible |
10
+ | Tag | v0.1.4 |
11
+ | Commit | 415cec1e5931d091252f91209f6e0456838c6a22 |
12
+ | Date | 2026-01-22 |
13
+ | Synced By | devlead (Claude Opus 4.5 via Claude Code) |
14
+
15
+ ## Structure
16
+
17
+ ```
18
+ schemas/upstream/3leaps/crucible/
19
+ ├── schemas/
20
+ │ ├── agentic/v0/ # Role prompt schema (MANUAL)
21
+ │ ├── ailink/v0/ # Prompt/response schemas
22
+ │ ├── classifiers/v0/ # Dimension meta-schemas
23
+ │ └── foundation/v0/ # Type primitives, error response
24
+ ├── config/
25
+ │ └── classifiers/ # Dimension definitions
26
+ ├── docs/
27
+ │ ├── standards/ # Classification standards
28
+ │ └── catalog/ # Classifier catalog
29
+ └── PROVENANCE.md
30
+ ```
31
+
32
+ ## Files Synced
33
+
34
+ - **26 files** auto-synced via `3leaps-crucible-upstream-pull.ts`
35
+ - **1 file** manually synced: `schemas/agentic/v0/role-prompt.schema.json`
36
+
37
+ ## Canonical URLs
38
+
39
+ These schemas are canonically hosted at:
40
+
41
+ - `https://schemas.3leaps.dev/classifiers/v0/*.json`
42
+ - `https://schemas.3leaps.dev/foundation/v0/*.json`
43
+ - `https://schemas.3leaps.dev/ailink/v0/*.json`
44
+
45
+ ## Manual Sync Items
46
+
47
+ The following are NOT auto-synced - they require manual review for fulmenhq-specific customization:
48
+
49
+ - `schemas/agentic/v0/role-prompt.schema.json` - Present, manually synced
50
+ - `config/agentic/` - Not vendored (fulmenhq maintains its own role definitions)
51
+
52
+ ## Refresh
53
+
54
+ To refresh from upstream:
55
+
56
+ ```bash
57
+ bun run scripts/3leaps-crucible-upstream-pull.ts
58
+ ```
59
+
60
+ Or with dry-run to preview:
61
+
62
+ ```bash
63
+ bun run scripts/3leaps-crucible-upstream-pull.ts --dry-run
64
+ ```