@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
@@ -0,0 +1,183 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.3leaps.dev/agentic/v0/role-prompt.schema.json",
4
+ "title": "Agentic Role Prompt",
5
+ "description": "Schema for AI coding agent role prompts. Defines structured role definitions that guide AI assistants working in repositories.",
6
+ "type": "object",
7
+ "required": [
8
+ "slug",
9
+ "name",
10
+ "description",
11
+ "version",
12
+ "status",
13
+ "scope",
14
+ "responsibilities",
15
+ "escalates_to",
16
+ "does_not"
17
+ ],
18
+ "properties": {
19
+ "slug": {
20
+ "type": "string",
21
+ "pattern": "^[a-z][a-z0-9]*$",
22
+ "minLength": 2,
23
+ "maxLength": 16,
24
+ "description": "Role identifier (lowercase letters/numbers, no hyphens). Examples: devlead, secrev, infoarch"
25
+ },
26
+ "name": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "maxLength": 64,
30
+ "description": "Human-readable role name. Example: Development Lead"
31
+ },
32
+ "description": {
33
+ "type": "string",
34
+ "minLength": 10,
35
+ "maxLength": 256,
36
+ "description": "One-line description of the role's purpose"
37
+ },
38
+ "version": {
39
+ "type": "string",
40
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
41
+ "description": "Semantic version for role prompt evolution"
42
+ },
43
+ "author": {
44
+ "type": "string",
45
+ "maxLength": 64,
46
+ "description": "Role prompt author (role slug or human identifier)"
47
+ },
48
+ "status": {
49
+ "type": "string",
50
+ "enum": ["draft", "review", "approved", "deprecated"],
51
+ "description": "Role prompt lifecycle status"
52
+ },
53
+ "category": {
54
+ "type": "string",
55
+ "enum": ["agentic", "automation", "review", "governance", "marketing"],
56
+ "description": "Role category for organization"
57
+ },
58
+ "tags": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "string",
62
+ "pattern": "^[a-z][a-z0-9-]*$"
63
+ },
64
+ "description": "Searchable tags for the role"
65
+ },
66
+ "extends": {
67
+ "type": "string",
68
+ "format": "uri",
69
+ "description": "URL to base role this extends"
70
+ },
71
+ "context": {
72
+ "type": "string",
73
+ "description": "When to use this role, distinct from similar roles"
74
+ },
75
+ "scope": {
76
+ "type": "array",
77
+ "items": {
78
+ "type": "string"
79
+ },
80
+ "minItems": 1,
81
+ "description": "What this role covers - boundaries of responsibility"
82
+ },
83
+ "mindset": {
84
+ "type": "object",
85
+ "properties": {
86
+ "focus": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string"
90
+ },
91
+ "description": "Key questions to ask, thinking patterns"
92
+ },
93
+ "principles": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string"
97
+ },
98
+ "description": "Guiding principles for this role"
99
+ }
100
+ },
101
+ "description": "Context engineering - shapes how the agent approaches problems"
102
+ },
103
+ "responsibilities": {
104
+ "type": "array",
105
+ "items": {
106
+ "type": "string"
107
+ },
108
+ "minItems": 1,
109
+ "description": "Specific tasks and duties"
110
+ },
111
+ "escalates_to": {
112
+ "type": "array",
113
+ "items": {
114
+ "$ref": "#/$defs/escalation"
115
+ },
116
+ "minItems": 1,
117
+ "description": "When and to whom to escalate"
118
+ },
119
+ "does_not": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "string"
123
+ },
124
+ "minItems": 1,
125
+ "description": "Explicit exclusions and out-of-scope items"
126
+ },
127
+ "examples": {
128
+ "type": "array",
129
+ "items": {
130
+ "$ref": "#/$defs/example"
131
+ },
132
+ "description": "Concrete examples of role application"
133
+ },
134
+ "checklists": {
135
+ "type": "object",
136
+ "additionalProperties": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "string"
140
+ }
141
+ },
142
+ "description": "Named checklists for common tasks"
143
+ }
144
+ },
145
+ "additionalProperties": false,
146
+ "$defs": {
147
+ "escalation": {
148
+ "type": "object",
149
+ "required": ["target", "when"],
150
+ "properties": {
151
+ "target": {
152
+ "type": "string",
153
+ "description": "Who to escalate to (role slug, 'human maintainers', etc.)"
154
+ },
155
+ "when": {
156
+ "type": "string",
157
+ "description": "Conditions that trigger escalation"
158
+ }
159
+ },
160
+ "additionalProperties": false
161
+ },
162
+ "example": {
163
+ "type": "object",
164
+ "required": ["type", "content"],
165
+ "properties": {
166
+ "type": {
167
+ "type": "string",
168
+ "enum": ["commit", "review", "checklist", "other"],
169
+ "description": "Type of example"
170
+ },
171
+ "title": {
172
+ "type": "string",
173
+ "description": "Example title"
174
+ },
175
+ "content": {
176
+ "type": "string",
177
+ "description": "Example content (may be multi-line)"
178
+ }
179
+ },
180
+ "additionalProperties": false
181
+ }
182
+ }
183
+ }
@@ -0,0 +1,204 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.3leaps.dev/ailink/v0/prompt.schema.json",
4
+ "title": "AILink Prompt Configuration",
5
+ "description": "Schema for AILink prompt configuration files. Prompts define how AI backends process requests, including input variables, tools, and response validation.",
6
+ "type": "object",
7
+ "required": [
8
+ "slug",
9
+ "name",
10
+ "description",
11
+ "version"
12
+ ],
13
+ "properties": {
14
+ "slug": {
15
+ "type": "string",
16
+ "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$",
17
+ "minLength": 1,
18
+ "maxLength": 64,
19
+ "description": "Unique identifier for the prompt (lowercase alphanumeric with hyphens)"
20
+ },
21
+ "name": {
22
+ "type": "string",
23
+ "minLength": 1,
24
+ "maxLength": 128,
25
+ "description": "Human-readable display name"
26
+ },
27
+ "description": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "maxLength": 512,
31
+ "description": "Brief description of what this prompt does"
32
+ },
33
+ "version": {
34
+ "type": "string",
35
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
36
+ "description": "Semantic version for prompt content evolution"
37
+ },
38
+ "author": {
39
+ "type": "string",
40
+ "maxLength": 64,
41
+ "description": "Prompt author or maintainer"
42
+ },
43
+ "updated": {
44
+ "type": "string",
45
+ "format": "date",
46
+ "description": "Last update date (YYYY-MM-DD)"
47
+ },
48
+ "input": {
49
+ "type": "object",
50
+ "description": "Input specification for prompt variables",
51
+ "properties": {
52
+ "required_variables": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "string",
56
+ "pattern": "^[a-z][a-z0-9_]*$"
57
+ },
58
+ "description": "Variables that must be provided"
59
+ },
60
+ "optional_variables": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "string",
64
+ "pattern": "^[a-z][a-z0-9_]*$"
65
+ },
66
+ "description": "Optional variables with defaults"
67
+ },
68
+ "accepts_images": {
69
+ "type": "boolean",
70
+ "default": false,
71
+ "description": "Whether this prompt accepts image input"
72
+ },
73
+ "image_types": {
74
+ "type": "array",
75
+ "items": {
76
+ "type": "string",
77
+ "enum": [
78
+ "image/png",
79
+ "image/jpeg",
80
+ "image/webp",
81
+ "image/gif"
82
+ ]
83
+ },
84
+ "description": "Accepted image MIME types (if accepts_images is true)"
85
+ },
86
+ "max_images": {
87
+ "type": "integer",
88
+ "minimum": 1,
89
+ "maximum": 20,
90
+ "default": 1,
91
+ "description": "Maximum number of images allowed"
92
+ }
93
+ },
94
+ "additionalProperties": false
95
+ },
96
+ "system_template": {
97
+ "type": "string",
98
+ "minLength": 1,
99
+ "description": "System prompt template with {{variable}} placeholders"
100
+ },
101
+ "user_template": {
102
+ "type": "string",
103
+ "default": "{{input}}",
104
+ "description": "User prompt template (optional)"
105
+ },
106
+ "depth_variants": {
107
+ "type": "object",
108
+ "additionalProperties": {
109
+ "type": "string"
110
+ },
111
+ "description": "Keyed user prompt variants (e.g., quick, deep, thorough)"
112
+ },
113
+ "tools": {
114
+ "type": "array",
115
+ "items": {
116
+ "$ref": "#/$defs/tool"
117
+ },
118
+ "description": "Server-side tools the prompt may use"
119
+ },
120
+ "response_schema": {
121
+ "anyOf": [
122
+ {
123
+ "type": "object",
124
+ "description": "Inline JSONSchema for response validation"
125
+ },
126
+ {
127
+ "type": "object",
128
+ "required": [
129
+ "$ref"
130
+ ],
131
+ "properties": {
132
+ "$ref": {
133
+ "type": "string",
134
+ "description": "Reference to external schema"
135
+ }
136
+ },
137
+ "additionalProperties": false
138
+ }
139
+ ],
140
+ "description": "JSONSchema for expected response structure"
141
+ },
142
+ "response_options": {
143
+ "type": "object",
144
+ "properties": {
145
+ "may_include_images": {
146
+ "type": "boolean",
147
+ "default": false,
148
+ "description": "Whether response may contain images"
149
+ },
150
+ "image_types": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "string"
154
+ },
155
+ "description": "Expected image MIME types in response"
156
+ }
157
+ },
158
+ "additionalProperties": false
159
+ },
160
+ "provider_hints": {
161
+ "type": "object",
162
+ "properties": {
163
+ "preferred_models": {
164
+ "type": "array",
165
+ "items": {
166
+ "type": "string"
167
+ },
168
+ "description": "Models known to work well with this prompt"
169
+ },
170
+ "min_context_window": {
171
+ "type": "integer",
172
+ "minimum": 1000,
173
+ "description": "Minimum context window size needed"
174
+ },
175
+ "supports_tools": {
176
+ "type": "boolean",
177
+ "default": true,
178
+ "description": "Whether this prompt benefits from tool use"
179
+ }
180
+ },
181
+ "additionalProperties": false
182
+ }
183
+ },
184
+ "additionalProperties": false,
185
+ "$defs": {
186
+ "tool": {
187
+ "type": "object",
188
+ "required": [
189
+ "type"
190
+ ],
191
+ "properties": {
192
+ "type": {
193
+ "type": "string",
194
+ "description": "Tool type identifier (e.g., web_search, x_search, code_execution)"
195
+ },
196
+ "config": {
197
+ "type": "object",
198
+ "description": "Tool-specific configuration"
199
+ }
200
+ },
201
+ "additionalProperties": false
202
+ }
203
+ }
204
+ }
@@ -0,0 +1,152 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.3leaps.dev/ailink/v0/search-response.schema.json",
4
+ "title": "AILink Search Response",
5
+ "description": "Base schema for AILink search/analysis response validation. Extensible for domain-specific responses.",
6
+ "type": "object",
7
+ "required": [
8
+ "summary"
9
+ ],
10
+ "properties": {
11
+ "summary": {
12
+ "type": "string",
13
+ "minLength": 1,
14
+ "description": "Concise overall assessment"
15
+ },
16
+ "risk_level": {
17
+ "type": "string",
18
+ "enum": [
19
+ "low",
20
+ "medium",
21
+ "high",
22
+ "critical",
23
+ "unknown"
24
+ ],
25
+ "description": "Overall risk assessment"
26
+ },
27
+ "confidence": {
28
+ "type": "number",
29
+ "minimum": 0,
30
+ "maximum": 1,
31
+ "description": "Model's confidence in the assessment (0-1)"
32
+ },
33
+ "insights": {
34
+ "type": "array",
35
+ "items": {
36
+ "type": "string"
37
+ },
38
+ "description": "Key findings as bullet points"
39
+ },
40
+ "mentions": {
41
+ "type": "array",
42
+ "items": {
43
+ "$ref": "#/$defs/mention"
44
+ },
45
+ "description": "Relevant mentions found during search"
46
+ },
47
+ "recommendations": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "Actionable recommendations"
53
+ },
54
+ "attachments": {
55
+ "type": "array",
56
+ "items": {
57
+ "$ref": "#/$defs/attachment"
58
+ },
59
+ "description": "Images or other media in response"
60
+ }
61
+ },
62
+ "additionalProperties": true,
63
+ "$defs": {
64
+ "mention": {
65
+ "type": "object",
66
+ "required": [
67
+ "source",
68
+ "description"
69
+ ],
70
+ "properties": {
71
+ "source": {
72
+ "type": "string",
73
+ "enum": [
74
+ "web",
75
+ "news",
76
+ "social",
77
+ "github",
78
+ "registry",
79
+ "trademark",
80
+ "other"
81
+ ],
82
+ "description": "Source type of the mention"
83
+ },
84
+ "description": {
85
+ "type": "string",
86
+ "description": "Brief summary of the finding"
87
+ },
88
+ "url": {
89
+ "type": "string",
90
+ "format": "uri",
91
+ "description": "URL to the source (if available)"
92
+ },
93
+ "relevance": {
94
+ "type": "string",
95
+ "enum": [
96
+ "high",
97
+ "medium",
98
+ "low"
99
+ ],
100
+ "description": "Relevance to the query"
101
+ },
102
+ "sentiment": {
103
+ "type": "string",
104
+ "enum": [
105
+ "positive",
106
+ "neutral",
107
+ "negative",
108
+ "mixed"
109
+ ],
110
+ "description": "Sentiment of the mention"
111
+ },
112
+ "date": {
113
+ "type": "string",
114
+ "format": "date-time",
115
+ "description": "When the mention was found or published"
116
+ }
117
+ },
118
+ "additionalProperties": true
119
+ },
120
+ "attachment": {
121
+ "type": "object",
122
+ "required": [
123
+ "type"
124
+ ],
125
+ "properties": {
126
+ "type": {
127
+ "type": "string",
128
+ "description": "IANA media type (e.g., image/png)"
129
+ },
130
+ "data": {
131
+ "type": "string",
132
+ "contentEncoding": "base64",
133
+ "description": "Base64-encoded binary data"
134
+ },
135
+ "url": {
136
+ "type": "string",
137
+ "format": "uri",
138
+ "description": "URL reference (alternative to inline data)"
139
+ },
140
+ "name": {
141
+ "type": "string",
142
+ "description": "Filename if applicable"
143
+ },
144
+ "description": {
145
+ "type": "string",
146
+ "description": "Description or alt text"
147
+ }
148
+ },
149
+ "additionalProperties": true
150
+ }
151
+ }
152
+ }
@@ -0,0 +1,50 @@
1
+ # Upstream Schemas
2
+
3
+ **DO NOT EDIT FILES IN THIS DIRECTORY.**
4
+
5
+ This directory contains vendored copies of schemas from upstream repositories. These files are copied verbatim for offline validation and CI reliability.
6
+
7
+ ## Why Vendoring?
8
+
9
+ CI pipelines need to validate against these schemas without network dependencies. Fetching from remote URLs at build time creates fragile builds that fail when upstream is unavailable.
10
+
11
+ ## Refresh Process
12
+
13
+ When upstream schemas change:
14
+
15
+ 1. Pull latest from upstream repository
16
+ 2. Copy updated schemas to appropriate subdirectory
17
+ 3. Update `PROVENANCE.md` in the source directory
18
+ 4. Run `make precommit` to validate
19
+ 5. Commit with clear attribution
20
+
21
+ ```bash
22
+ # Example refresh from local clone
23
+ cp -r ../3leaps/crucible/schemas/ailink schemas/upstream/3leaps/
24
+ cp -r ../3leaps/crucible/schemas/agentic schemas/upstream/3leaps/
25
+ # Update PROVENANCE.md with new commit hash
26
+ ```
27
+
28
+ ## Directory Structure
29
+
30
+ ```
31
+ upstream/
32
+ ├── README.md # This file
33
+ └── 3leaps/ # From github.com/3leaps/crucible
34
+ ├── PROVENANCE.md # Source commit and date
35
+ ├── ailink/v0/ # AILink prompt schemas
36
+ └── agentic/v0/ # Agentic role prompt schemas
37
+ ```
38
+
39
+ ## Provenance
40
+
41
+ Each upstream source has a `PROVENANCE.md` documenting:
42
+
43
+ - Source repository
44
+ - Commit hash
45
+ - Sync date
46
+ - Files included
47
+
48
+ ## Related
49
+
50
+ - [goneat metaschemas](https://github.com/fulmenhq/goneat) - Same pattern for JSON Schema metaschemas
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://schemas.fulmenhq.dev/web/branding/v1.0.0/site-branding.schema.json",
2
+ "$id": "https://schemas.fulmenhq.dev/crucible/web/branding/v1.0.0/site-branding.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "title": "Fulmen Site Branding",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://schemas.fulmenhq.dev/web/styling/v1.0.0/site-styling.schema.json",
2
+ "$id": "https://schemas.fulmenhq.dev/crucible/web/styling/v1.0.0/site-styling.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "title": "Fulmen Site Styling",
@@ -1,60 +0,0 @@
1
- # Goneat Configuration Schemas
2
-
3
- This directory contains JSON Schema definitions that codify configuration and policy
4
- files consumed by the goneat toolchain. Each schema is published at
5
- `https://schemas.fulmenhq.dev/config/goneat/<name>-<version>.schema.json` and should
6
- be referenced from the corresponding YAML/JSON policy files via the `$schema` field
7
- whenever possible.
8
-
9
- ## Available Schemas
10
-
11
- | Schema | Purpose |
12
- | --------------------------------------------- | ---------------------------------------------------------------- |
13
- | `goneat-config.yaml` | Core goneat CLI configuration (toolchain sources, telemetry opt) |
14
- | `dates.yaml` | Date formatting conventions for release automation |
15
- | `security-policy.yaml` | Security scanning and suppression policy |
16
- | `lifecycle-phase.json` / `release-phase.json` | Lifecycle metadata used by release automation |
17
- | `version-policy.schema.yaml` | Version SSOT propagation policy (new in v0.3.0) |
18
-
19
- ## Version Policy (`version-policy.schema.yaml`)
20
-
21
- The version policy schema enables repositories to describe how the authoritative
22
- `VERSION` file propagates into downstream package manifests using goneat’s
23
- `version propagate` command. Policies live at `.goneat/version-policy.yaml` in consumer
24
- repositories and should reference the schema via:
25
-
26
- ```yaml
27
- $schema: https://schemas.fulmenhq.dev/config/goneat/version-policy-v1.0.0.schema.json
28
- ```
29
-
30
- Key capabilities:
31
-
32
- - **Schemes & Channels**: declare whether the repo uses SemVer or CalVer and optionally
33
- constrain prerelease channels.
34
- - **Propagation Rules**: control default include/exclude patterns, handler-specific
35
- overrides, workspace behaviour, and backup retention.
36
- - **Content Rules vs Guards**: `rules` describes version content constraints (channels,
37
- tags, prerelease allowances) while `guards` enforce execution preconditions (branch
38
- allow-lists, dirty worktree checks). Both sections are optional—planned for Phase 3a of
39
- goneat’s roadmap.
40
- - **Extensibility**: `metadata` allows teams to attach internal annotations that goneat
41
- will ignore while keeping the schema forward-compatible.
42
-
43
- The schema keys align with manifest filenames (e.g., `package.json`, `pyproject.toml`,
44
- `go.mod`). The workspace strategy supports three patterns:
45
-
46
- - `single-version`: all manifests inherit the root VERSION.
47
- - `opt-in`: only globs listed in `allowlist` receive independent version control.
48
- - `opt-out`: everything propagates except paths explicitly listed in `blocklist`.
49
-
50
- See the schema `examples` block for a reference configuration that covers common
51
- use cases (JS + Python monorepo with Go validation only). Additional cookbook
52
- samples will ship with goneat v0.3.0 documentation.
53
-
54
- ## Contributing
55
-
56
- - Update the `$id` to point at the published schema URL when introducing new versions.
57
- - Keep the schema version number in lock-step with goneat releases that introduce
58
- breaking changes to the configuration surface.
59
- - Whenever a schema is added or updated, ensure `make check-all` passes so that
60
- downstream language wrappers receive the new definition during sync.