Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"env": { "CRUCIBLE_CODE_MOUSE_SCROLL_SPEED": "31" }
}
1 change: 0 additions & 1 deletion src/schema-validation.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@
"gaspar-3.0.json",
"github-action.json",
"github-funding.json",
"github-workflow-template-properties.json",
"github-workflow.json",
"helmfile.json",
"hemtt-0.6.2.json",
Expand Down
1 change: 1 addition & 0 deletions src/schemas/json/appveyor.json
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
"Visual Studio 2017",
"Visual Studio 2019",
"Visual Studio 2022",
"Visual Studio 2026",
"Visual Studio 2017 Preview",
"Visual Studio 2019 Preview",
"Previous Visual Studio 2013",
Expand Down
160 changes: 98 additions & 62 deletions src/schemas/json/crucible-code-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@
"minimum": 0,
"type": "integer"
},
"recap": {
"description": "Maximum tokens a structured compaction recap may produce; ordinary recaps stop earlier",
"minimum": 0,
"type": "integer"
},
"reserve": {
"description": "Tokens to keep free for the next answer and the tools it calls, instead of the room crucible works out from the model",
"minimum": 0,
Expand All @@ -41,6 +46,7 @@
"type": "integer"
},
"when": {
"default": "full",
"description": "Whether a full window is answered by compacting the session, or by letting the turn fail",
"enum": ["full", "never"],
"type": "string"
Expand All @@ -49,21 +55,34 @@
"type": "object"
},
"env": {
"additionalProperties": false,
"description": "Environment variables for the commands crucible runs. A file under the working directory may set only crucible's own CRUCIBLE_CODE_ names",
"patternProperties": {
"^[^$]": {
"type": "string"
}
"additionalProperties": {
"type": "string"
},
"description": "Environment variables for the commands crucible runs. A file under the working directory may set only crucible's own CRUCIBLE_CODE_ names",
"properties": {
"$schema": {
"type": "string"
},
"$comment": {
"type": "string"
},
"CRUCIBLE_CODE_MOUSE_SCROLL_SPEED": {
"default": "6",
"description": "How many rows of the transcript one notch of the wheel moves",
"pattern": "^\\+?0*(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30)$",
"type": "string"
}
},
"propertyNames": {
"anyOf": [
{
"pattern": "^[^$]"
},
{
"enum": ["$schema", "$comment"]
}
]
},
"type": "object"
},
"input": {
Expand All @@ -77,6 +96,7 @@
"type": "string"
},
"send": {
"default": "enter",
"description": "Which press sends a prompt: enter sends and Shift+Enter, Alt+Enter or Ctrl+J opens a line; altEnter swaps the two, for a terminal that keeps Enter for itself",
"enum": ["enter", "altEnter"],
"type": "string"
Expand All @@ -95,26 +115,25 @@
"type": "string"
},
"color": {
"default": "auto",
"description": "Whether to write colour: auto follows the terminal and NO_COLOR, always and never override it",
"enum": ["auto", "always", "never"],
"type": "string"
},
"glyphs": {
"default": "unicode",
"description": "Which characters crucible draws with: unicode for box drawing, ascii for a font that lacks it",
"enum": ["unicode", "ascii"],
"type": "string"
},
"mouse": {
"description": "off leaves the mouse to the terminal, so the wheel scrolls it; click lets you place the cursor in the prompt and open a result that was cut short, and the wheel stops scrolling",
"enum": ["off", "click"],
"type": "string"
},
"syntaxTheme": {
"default": "Monokai Extended",
"description": "Which theme fenced code is drawn in — a name from /theme, such as Monokai Extended, GitHub, Dracula or Nord",
"examples": ["Monokai Extended", "GitHub"],
"type": "string"
},
"theme": {
"default": "auto",
"description": "Which colours crucible draws with: auto follows the terminal's own background, ansi spends only the sixteen it already has",
"enum": [
"auto",
Expand All @@ -127,6 +146,7 @@
"type": "string"
},
"toolDetail": {
"default": "compact",
"description": "How much of a tool call and its result one line shows",
"enum": ["compact", "full"],
"type": "string"
Expand Down Expand Up @@ -184,6 +204,7 @@
"uniqueItems": true
},
"mode": {
"default": "ask",
"description": "What happens to a call no rule mentions: ask about every change and command, allow changes to files, or allow everything. Read only from the configuration file in your home directory",
"enum": ["ask", "allowEdits", "fullAccess"],
"type": "string"
Expand All @@ -196,64 +217,68 @@
"type": "string"
},
"providers": {
"additionalProperties": false,
"description": "Per-provider defaults, keyed by provider name",
"patternProperties": {
"^[^$]": {
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string"
},
"$comment": {
"type": "string"
},
"apiKeyEnv": {
"description": "Name of the environment variable holding this provider's API key — the name, never the key",
"type": "string"
},
"baseUrl": {
"description": "Address to send this provider's requests to instead of the vendor's, for a gateway or a proxy",
"examples": ["https://gateway.example/v1/messages"],
"type": "string"
"additionalProperties": {
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string"
},
"$comment": {
"type": "string"
},
"apiKeyEnv": {
"description": "Name of the environment variable holding this provider's API key — the name, never the key",
"type": "string"
},
"baseUrl": {
"description": "Address to send this provider's requests to instead of the vendor's, for a gateway or a proxy",
"examples": ["https://gateway.example/v1/messages"],
"type": "string"
},
"contextWindow": {
"additionalProperties": {
"minimum": 0,
"type": "integer"
},
"contextWindow": {
"additionalProperties": false,
"description": "How many tokens a model accepts at once, keyed by the model name, where crucible cannot ask the provider or has it wrong",
"patternProperties": {
"^[^$]": {
"minimum": 0,
"type": "integer"
}
"description": "How many tokens a model accepts at once, keyed by the model name, where crucible cannot ask the provider or has it wrong",
"properties": {
"$schema": {
"type": "string"
},
"properties": {
"$schema": {
"type": "string"
"$comment": {
"type": "string"
}
},
"propertyNames": {
"anyOf": [
{
"pattern": "^[^$]"
},
"$comment": {
"type": "string"
{
"enum": ["$schema", "$comment"]
}
},
"type": "object"
},
"defaultContextWindow": {
"description": "How many tokens to assume any model of this provider accepts, where it is not named above",
"minimum": 0,
"type": "integer"
},
"effort": {
"description": "How hard to think before answering, when --effort does not say. Left off, the vendor's own default for whichever model is being asked",
"enum": ["low", "medium", "high", "xhigh", "max"],
"type": "string"
]
},
"model": {
"description": "The model to ask when --model does not name one",
"type": "string"
}
"type": "object"
},
"type": "object"
}
"defaultContextWindow": {
"description": "How many tokens to assume any model of this provider accepts, where it is not named above",
"minimum": 0,
"type": "integer"
},
"effort": {
"description": "How hard to think before answering, when --effort does not say. Left off, the vendor's own default for whichever model is being asked",
"enum": ["low", "medium", "high", "xhigh", "max"],
"type": "string"
},
"model": {
"description": "The model to ask when --model does not name one",
"type": "string"
}
},
"type": "object"
},
"description": "Per-provider defaults, keyed by provider name",
"properties": {
"$schema": {
"type": "string"
Expand All @@ -262,6 +287,16 @@
"type": "string"
}
},
"propertyNames": {
"anyOf": [
{
"pattern": "^[^$]"
},
{
"enum": ["$schema", "$comment"]
}
]
},
"type": "object"
},
"updates": {
Expand All @@ -275,6 +310,7 @@
"type": "string"
},
"check": {
"default": "auto",
"description": "Whether crucible asks GitHub which release is newest, and says so when this one is behind",
"enum": ["auto", "never"],
"type": "string"
Expand Down
8 changes: 7 additions & 1 deletion src/schemas/json/github-workflow-template-properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,33 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://json.schemastore.org/github-workflow-template-properties.json",
"$comment": "https://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization",
"title": "GitHub starter workflow config file schema",
"description": "Metadata for a GitHub Actions starter workflow.\nhttps://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization",
"additionalProperties": false,
"properties": {
"name": {
"title": "Name",
"description": "A workflow template name\nhttps://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization#creating-a-starter-workflow",
"type": "string",
"minLength": 1,
"examples": ["Sample name"]
},
"description": {
"title": "Description",
"description": "A workflow template description\nhttps://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization#creating-a-starter-workflow",
"type": "string",
"minLength": 1,
"examples": ["Sample description"]
},
"iconName": {
"title": "Icon name",
"description": "A workflow template icon\nMust be the name of an SVG file, without the file name extension, stored in the workflow-templates directory\nhttps://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization#creating-a-starter-workflow",
"type": "string",
"minLength": 1,
"examples": ["Sample icon"]
},
"categories": {
"title": "Categories",
"description": "A workflow category\nhttps://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization#creating-a-starter-workflow",
"type": "array",
"uniqueItems": true,
Expand Down Expand Up @@ -899,6 +905,7 @@
}
},
"filePatterns": {
"title": "File patterns",
"description": "A file name pattern to match against repository to enable this workflow when match is succeed\nhttps://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization#creating-a-starter-workflow",
"type": "array",
"minItems": 1,
Expand All @@ -911,6 +918,5 @@
}
},
"required": ["name", "description"],
"title": "GitHub starter workflow config file schema",
"type": "object"
}
3 changes: 2 additions & 1 deletion src/test/crucible-code-schema/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"compaction": {
"askOnResume": 0,
"keep": 20000,
"recap": 8000,
"reserve": 16000,
"spendCeiling": 0,
"when": "full"
Expand All @@ -18,8 +19,8 @@
"output": {
"color": "auto",
"glyphs": "unicode",
"mouse": "click",
"syntaxTheme": "GitHub",
"theme": "dark",
"toolDetail": "compact"
},
"permissions": {
Expand Down