@cat-factory/app 0.23.0 → 0.23.1
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.
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import type { CreateTaskType, TaskSourceKind, TaskTypeFields } from '~/types/domain'
|
|
15
15
|
import ContextDocumentPicker from '~/components/documents/ContextDocumentPicker.vue'
|
|
16
16
|
import ContextIssuePicker from '~/components/tasks/ContextIssuePicker.vue'
|
|
17
|
+
import { mergePresetOptionLabel, mergePresetThresholds } from '~/utils/mergePreset'
|
|
17
18
|
|
|
18
19
|
const ui = useUiStore()
|
|
19
20
|
const board = useBoardStore()
|
|
@@ -104,13 +105,13 @@ const presetMenu = computed(() => [
|
|
|
104
105
|
[
|
|
105
106
|
{
|
|
106
107
|
label: mergePresets.defaultPreset
|
|
107
|
-
? `Default (${mergePresets.defaultPreset.name})`
|
|
108
|
+
? `Default (${mergePresets.defaultPreset.name}) — ${mergePresetThresholds(mergePresets.defaultPreset)}`
|
|
108
109
|
: 'Workspace default',
|
|
109
110
|
icon: 'i-lucide-rotate-ccw',
|
|
110
111
|
onSelect: () => (mergePresetId.value = ''),
|
|
111
112
|
},
|
|
112
113
|
...mergePresets.presets.map((p) => ({
|
|
113
|
-
label: p
|
|
114
|
+
label: mergePresetOptionLabel(p),
|
|
114
115
|
icon: 'i-lucide-git-merge',
|
|
115
116
|
onSelect: () => (mergePresetId.value = p.id),
|
|
116
117
|
})),
|
|
@@ -119,10 +120,11 @@ const presetMenu = computed(() => [
|
|
|
119
120
|
const selectedPresetLabel = computed(() => {
|
|
120
121
|
if (!mergePresetId.value) {
|
|
121
122
|
return mergePresets.defaultPreset
|
|
122
|
-
? `Default (${mergePresets.defaultPreset.name})`
|
|
123
|
+
? `Default (${mergePresets.defaultPreset.name}) — ${mergePresetThresholds(mergePresets.defaultPreset)}`
|
|
123
124
|
: 'Workspace default'
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
+
const picked = mergePresets.presets.find((p) => p.id === mergePresetId.value)
|
|
127
|
+
return picked ? mergePresetOptionLabel(picked) : 'Workspace default'
|
|
126
128
|
})
|
|
127
129
|
|
|
128
130
|
// Model preset: which model each agent runs on. Empty = workspace default preset.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { computed, onMounted } from 'vue'
|
|
3
3
|
import type { Block } from '~/types/domain'
|
|
4
4
|
import type { WritebackOverride } from '~/types/tracker'
|
|
5
|
+
import { mergePresetOptionLabel, mergePresetThresholds } from '~/utils/mergePreset'
|
|
5
6
|
|
|
6
7
|
const props = defineProps<{ block: Block }>()
|
|
7
8
|
|
|
@@ -61,13 +62,13 @@ const presetMenu = computed(() => [
|
|
|
61
62
|
[
|
|
62
63
|
{
|
|
63
64
|
label: mergePresets.defaultPreset
|
|
64
|
-
? `Default (${mergePresets.defaultPreset.name})`
|
|
65
|
+
? `Default (${mergePresets.defaultPreset.name}) — ${mergePresetThresholds(mergePresets.defaultPreset)}`
|
|
65
66
|
: 'Workspace default',
|
|
66
67
|
icon: 'i-lucide-rotate-ccw',
|
|
67
68
|
onSelect: () => setPreset(''),
|
|
68
69
|
},
|
|
69
70
|
...mergePresets.presets.map((p) => ({
|
|
70
|
-
label: p
|
|
71
|
+
label: mergePresetOptionLabel(p),
|
|
71
72
|
icon: 'i-lucide-git-merge',
|
|
72
73
|
onSelect: () => setPreset(p.id),
|
|
73
74
|
})),
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MergeThresholdPreset } from '~/types/merge'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A compact one-line summary of a merge preset's auto-merge ceilings + CI-fix budget,
|
|
5
|
+
* suitable for a dropdown option label so the user sees each preset's actual thresholds
|
|
6
|
+
* (not just its name) while choosing one. Percentages are the stored 0..1 ratios
|
|
7
|
+
* rendered as whole percents.
|
|
8
|
+
*/
|
|
9
|
+
export function mergePresetThresholds(p: MergeThresholdPreset): string {
|
|
10
|
+
const pct = (n: number) => `${Math.round(n * 100)}%`
|
|
11
|
+
return `cx ≤${pct(p.maxComplexity)} · risk ≤${pct(p.maxRisk)} · impact ≤${pct(
|
|
12
|
+
p.maxImpact,
|
|
13
|
+
)} · ${p.ciMaxAttempts} CI fixes`
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** The preset name followed by its thresholds, for a single-line dropdown option. */
|
|
17
|
+
export function mergePresetOptionLabel(p: MergeThresholdPreset): string {
|
|
18
|
+
return `${p.name} — ${mergePresetThresholds(p)}`
|
|
19
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.1",
|
|
4
4
|
"description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|