@cat-factory/app 0.153.0 → 0.153.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.
- package/app/components/board/FailureDetail.vue +1 -2
- package/app/components/board/StepExecutionHistory.vue +1 -2
- package/app/components/docs/DocInterviewWindow.vue +1 -2
- package/app/components/environments/EnvironmentStatusPanel.vue +1 -2
- package/app/components/environments/steps/EnvPreflightStep.vue +1 -2
- package/app/components/panels/AgentStepDetail.vue +2 -4
- package/app/components/panels/ObservabilityPanel.vue +8 -16
- package/app/components/provisioning/ProvisioningLogsDrawer.vue +1 -2
- package/app/components/ralph/RalphLoopResultView.vue +1 -2
- package/app/components/sandbox/SandboxPanel.vue +1 -2
- package/app/components/testing/TestReportWindow.vue +1 -2
- package/app/docs/consumer-extensions.md +3 -9
- package/package.json +6 -6
|
@@ -68,8 +68,7 @@ const entries = computed<Entry[]>(() =>
|
|
|
68
68
|
<CopyButton :text="entry.output.output" class="absolute end-1 top-1 z-10" />
|
|
69
69
|
<pre
|
|
70
70
|
class="max-h-40 overflow-auto whitespace-pre-wrap rounded bg-slate-950/80 p-1.5 pe-9 text-[10px] leading-snug text-slate-300"
|
|
71
|
-
>{{ entry.output.output }}</pre
|
|
72
|
-
>
|
|
71
|
+
>{{ entry.output.output }}</pre>
|
|
73
72
|
</div>
|
|
74
73
|
<p v-if="entry.output.truncated" class="mt-1 text-[10px] text-slate-500">
|
|
75
74
|
{{ t('panels.stepDetail.outputTruncated') }}
|
|
@@ -111,8 +111,7 @@ const onProceed = () => flushThen((id) => docInterview.proceedInterview(id))
|
|
|
111
111
|
<pre
|
|
112
112
|
v-if="session.brief"
|
|
113
113
|
class="whitespace-pre-wrap break-words text-[13px] leading-relaxed text-slate-300"
|
|
114
|
-
>{{ session.brief }}</pre
|
|
115
|
-
>
|
|
114
|
+
>{{ session.brief }}</pre>
|
|
116
115
|
<p v-else class="text-[13px] text-slate-400">{{ t('docInterview.converged') }}</p>
|
|
117
116
|
</div>
|
|
118
117
|
|
|
@@ -128,8 +128,7 @@ const ENV_STATUS_META = computed<
|
|
|
128
128
|
(environment.status === 'failed' || environment.status === 'expired')
|
|
129
129
|
"
|
|
130
130
|
class="mt-1 max-h-32 overflow-auto whitespace-pre-wrap rounded border border-rose-900/60 bg-rose-950/40 p-1.5 text-[11px] text-rose-200/90"
|
|
131
|
-
>{{ environment.lastError }}</pre
|
|
132
|
-
>
|
|
131
|
+
>{{ environment.lastError }}</pre>
|
|
133
132
|
</div>
|
|
134
133
|
<p v-else class="text-[12px] text-slate-500">
|
|
135
134
|
{{ degradedReason ?? t('environments.empty') }}
|
|
@@ -94,8 +94,7 @@ const PREFLIGHT_COLOR: Record<'pass' | 'warn' | 'fail', 'success' | 'warning' |
|
|
|
94
94
|
<pre
|
|
95
95
|
v-if="r.status !== 'pass' && r.remediation"
|
|
96
96
|
class="mt-1 max-h-40 overflow-auto whitespace-pre-wrap rounded border border-amber-900/40 bg-amber-950/20 p-1.5 text-[11px] text-amber-200/90"
|
|
97
|
-
>{{ r.remediation }}</pre
|
|
98
|
-
>
|
|
97
|
+
>{{ r.remediation }}</pre>
|
|
99
98
|
</li>
|
|
100
99
|
</ul>
|
|
101
100
|
|
|
@@ -601,8 +601,7 @@ async function copyOutput() {
|
|
|
601
601
|
</div>
|
|
602
602
|
<pre
|
|
603
603
|
class="mb-2 max-h-24 overflow-auto whitespace-pre-wrap rounded bg-slate-950/60 p-2 text-[11px] text-slate-300"
|
|
604
|
-
>{{ draftTarget.quotedSource }}</pre
|
|
605
|
-
>
|
|
604
|
+
>{{ draftTarget.quotedSource }}</pre>
|
|
606
605
|
<UTextarea
|
|
607
606
|
v-model="draftBody"
|
|
608
607
|
:rows="3"
|
|
@@ -646,8 +645,7 @@ async function copyOutput() {
|
|
|
646
645
|
</div>
|
|
647
646
|
<pre
|
|
648
647
|
class="mb-1 max-h-20 overflow-auto whitespace-pre-wrap rounded bg-slate-950/50 p-1.5 text-[10px] text-slate-400"
|
|
649
|
-
>{{ c.quotedSource }}</pre
|
|
650
|
-
>
|
|
648
|
+
>{{ c.quotedSource }}</pre>
|
|
651
649
|
<p class="text-[12px] text-slate-200">{{ c.body }}</p>
|
|
652
650
|
</div>
|
|
653
651
|
|
|
@@ -495,8 +495,7 @@ function exportJson() {
|
|
|
495
495
|
</div>
|
|
496
496
|
<pre
|
|
497
497
|
class="max-h-72 overflow-auto rounded-lg bg-slate-950/70 p-3 text-[11px] leading-relaxed text-slate-300"
|
|
498
|
-
>{{ prettyPrompt(c.promptText) }}</pre
|
|
499
|
-
>
|
|
498
|
+
>{{ prettyPrompt(c.promptText) }}</pre>
|
|
500
499
|
</div>
|
|
501
500
|
<div>
|
|
502
501
|
<div class="mb-1 text-[11px] uppercase tracking-wide text-slate-500">
|
|
@@ -504,8 +503,7 @@ function exportJson() {
|
|
|
504
503
|
</div>
|
|
505
504
|
<pre
|
|
506
505
|
class="max-h-72 overflow-auto rounded-lg bg-slate-950/70 p-3 text-[11px] leading-relaxed text-slate-300"
|
|
507
|
-
>{{ c.responseText || '—' }}</pre
|
|
508
|
-
>
|
|
506
|
+
>{{ c.responseText || '—' }}</pre>
|
|
509
507
|
</div>
|
|
510
508
|
<div v-if="c.reasoningText">
|
|
511
509
|
<div class="mb-1 text-[11px] uppercase tracking-wide text-slate-500">
|
|
@@ -513,8 +511,7 @@ function exportJson() {
|
|
|
513
511
|
</div>
|
|
514
512
|
<pre
|
|
515
513
|
class="max-h-72 overflow-auto rounded-lg bg-slate-950/70 p-3 text-[11px] leading-relaxed text-slate-400"
|
|
516
|
-
>{{ c.reasoningText }}</pre
|
|
517
|
-
>
|
|
514
|
+
>{{ c.reasoningText }}</pre>
|
|
518
515
|
</div>
|
|
519
516
|
</div>
|
|
520
517
|
</li>
|
|
@@ -597,8 +594,7 @@ function exportJson() {
|
|
|
597
594
|
</div>
|
|
598
595
|
<pre
|
|
599
596
|
class="max-h-72 overflow-auto rounded-lg bg-slate-950/70 p-3 text-[11px] leading-relaxed text-slate-300"
|
|
600
|
-
>{{ s.systemPrompt || '—' }}</pre
|
|
601
|
-
>
|
|
597
|
+
>{{ s.systemPrompt || '—' }}</pre>
|
|
602
598
|
</div>
|
|
603
599
|
<div>
|
|
604
600
|
<div class="mb-1 text-[11px] uppercase tracking-wide text-slate-500">
|
|
@@ -606,8 +602,7 @@ function exportJson() {
|
|
|
606
602
|
</div>
|
|
607
603
|
<pre
|
|
608
604
|
class="max-h-72 overflow-auto rounded-lg bg-slate-950/70 p-3 text-[11px] leading-relaxed text-slate-300"
|
|
609
|
-
>{{ s.userPrompt || '—' }}</pre
|
|
610
|
-
>
|
|
605
|
+
>{{ s.userPrompt || '—' }}</pre>
|
|
611
606
|
</div>
|
|
612
607
|
<div v-if="s.fragments.length">
|
|
613
608
|
<div class="mb-1 text-[11px] uppercase tracking-wide text-slate-500">
|
|
@@ -621,8 +616,7 @@ function exportJson() {
|
|
|
621
616
|
<div class="mb-1 text-[11px] text-slate-400">{{ f.id }}</div>
|
|
622
617
|
<pre
|
|
623
618
|
class="max-h-48 overflow-auto text-[11px] leading-relaxed text-slate-300"
|
|
624
|
-
>{{ f.body }}</pre
|
|
625
|
-
>
|
|
619
|
+
>{{ f.body }}</pre>
|
|
626
620
|
</div>
|
|
627
621
|
</div>
|
|
628
622
|
<div v-if="s.contextFiles.length">
|
|
@@ -640,8 +634,7 @@ function exportJson() {
|
|
|
640
634
|
</div>
|
|
641
635
|
<pre
|
|
642
636
|
class="max-h-72 overflow-auto text-[11px] leading-relaxed text-slate-300"
|
|
643
|
-
>{{ file.content }}</pre
|
|
644
|
-
>
|
|
637
|
+
>{{ file.content }}</pre>
|
|
645
638
|
</div>
|
|
646
639
|
</div>
|
|
647
640
|
<div>
|
|
@@ -650,8 +643,7 @@ function exportJson() {
|
|
|
650
643
|
</div>
|
|
651
644
|
<pre
|
|
652
645
|
class="max-h-48 overflow-auto rounded-lg bg-slate-950/70 p-3 text-[11px] leading-relaxed text-slate-400"
|
|
653
|
-
>{{ prettyExtras(s.extras) }}</pre
|
|
654
|
-
>
|
|
646
|
+
>{{ prettyExtras(s.extras) }}</pre>
|
|
655
647
|
</div>
|
|
656
648
|
</div>
|
|
657
649
|
</li>
|
|
@@ -156,8 +156,7 @@ function when(epochMs: number): string {
|
|
|
156
156
|
<pre
|
|
157
157
|
v-if="entry.error"
|
|
158
158
|
class="mt-1 max-h-28 overflow-auto whitespace-pre-wrap rounded border border-rose-900/50 bg-rose-950/30 p-1.5 text-[11px] text-rose-200/90"
|
|
159
|
-
>{{ entry.error }}</pre
|
|
160
|
-
>
|
|
159
|
+
>{{ entry.error }}</pre>
|
|
161
160
|
</li>
|
|
162
161
|
</ul>
|
|
163
162
|
</div>
|
|
@@ -147,8 +147,7 @@ const STATUS_META = computed<
|
|
|
147
147
|
<CopyButton :text="ralph.lastValidationTail" class="absolute end-1 top-1" />
|
|
148
148
|
<pre
|
|
149
149
|
class="whitespace-pre-wrap pe-8 font-mono text-[11px] leading-relaxed text-slate-400"
|
|
150
|
-
>{{ ralph.lastValidationTail }}</pre
|
|
151
|
-
>
|
|
150
|
+
>{{ ralph.lastValidationTail }}</pre>
|
|
152
151
|
</div>
|
|
153
152
|
</template>
|
|
154
153
|
|
|
@@ -462,8 +462,7 @@ async function archive(prompt: SandboxPromptVersion) {
|
|
|
462
462
|
<pre
|
|
463
463
|
v-if="selectedRun.outputText"
|
|
464
464
|
class="max-h-48 overflow-auto whitespace-pre-wrap rounded bg-slate-950/60 p-2 text-[11px] text-slate-300"
|
|
465
|
-
>{{ selectedRun.outputText }}</pre
|
|
466
|
-
>
|
|
465
|
+
>{{ selectedRun.outputText }}</pre>
|
|
467
466
|
<div v-if="gradeByRun.get(selectedRun.id)" class="mt-2 space-y-0.5">
|
|
468
467
|
<p
|
|
469
468
|
v-for="d in gradeByRun.get(selectedRun.id)!.scores"
|
|
@@ -419,8 +419,7 @@ const GROUP_STATUS_META: Record<ScenarioGroup['status'], { icon: string; text: s
|
|
|
419
419
|
v-if="showInfraSetupLogs"
|
|
420
420
|
data-testid="tester-infra-setup-logs"
|
|
421
421
|
class="mt-2 max-h-64 overflow-auto rounded bg-slate-950/70 p-2 font-mono text-[11px] leading-relaxed text-slate-300"
|
|
422
|
-
>{{ infraSetup.logs }}</pre
|
|
423
|
-
>
|
|
422
|
+
>{{ infraSetup.logs }}</pre>
|
|
424
423
|
</template>
|
|
425
424
|
</div>
|
|
426
425
|
|
|
@@ -35,15 +35,9 @@ export default defineNuxtPlugin(() => {
|
|
|
35
35
|
version: '1.0.0',
|
|
36
36
|
slots: {
|
|
37
37
|
resultViews: [{ id: 'acme:security-report', component: AcmeSecurityReport }],
|
|
38
|
-
agentKinds: [
|
|
39
|
-
|
|
40
|
-
],
|
|
41
|
-
nav: [
|
|
42
|
-
/* sidebar / command-palette destinations — see "Navigation" */
|
|
43
|
-
],
|
|
44
|
-
inspectorPanels: [
|
|
45
|
-
/* per-block detail panels — see "Inspector panels" */
|
|
46
|
-
],
|
|
38
|
+
agentKinds: [/* palette entries — see "Agent kinds" */],
|
|
39
|
+
nav: [/* sidebar / command-palette destinations — see "Navigation" */],
|
|
40
|
+
inspectorPanels: [/* per-block detail panels — see "Inspector panels" */],
|
|
47
41
|
},
|
|
48
42
|
}),
|
|
49
43
|
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.153.
|
|
3
|
+
"version": "0.153.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",
|
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
"@modular-frontend/core": "^0.6.0",
|
|
22
22
|
"@modular-vue/core": "^1.5.0",
|
|
23
23
|
"@modular-vue/journeys": "^1.4.0",
|
|
24
|
-
"@modular-vue/nuxt": "^0.4.
|
|
24
|
+
"@modular-vue/nuxt": "^0.4.1",
|
|
25
25
|
"@modular-vue/runtime": "^1.4.1",
|
|
26
|
-
"@modular-vue/vue": "^1.4.
|
|
26
|
+
"@modular-vue/vue": "^1.4.1",
|
|
27
27
|
"@nuxt/ui": "^4.10.0",
|
|
28
|
-
"@nuxtjs/i18n": "^10.
|
|
28
|
+
"@nuxtjs/i18n": "^10.5.0",
|
|
29
29
|
"@pinia/nuxt": "^1.0.1",
|
|
30
30
|
"@toad-contracts/core": "0.4.0",
|
|
31
31
|
"@toad-contracts/frontend-http-client": "0.3.2",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@toad-contracts/testing": "0.3.2",
|
|
47
47
|
"@types/markdown-it": "^14.1.2",
|
|
48
|
-
"happy-dom": "^20.
|
|
48
|
+
"happy-dom": "^20.11.1",
|
|
49
49
|
"msw": "^2.15.0",
|
|
50
50
|
"nuxt": "^4.5.0",
|
|
51
51
|
"typescript": "^6.0.3",
|
|
52
52
|
"vitest": "^4.1.10",
|
|
53
53
|
"vue-i18n-extract": "^2.0.7",
|
|
54
|
-
"vue-tsc": "^3.3.
|
|
54
|
+
"vue-tsc": "^3.3.8"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"nuxt": "^4.5.0"
|