@cat-factory/app 0.269.0 → 0.269.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.
@@ -25,6 +25,7 @@ import {
25
25
  GENERATION_CONTEXT_CAPABILITY,
26
26
  isBinaryGeneratorCapability,
27
27
  isBinaryModality,
28
+ isHarnessTransport,
28
29
  type BinaryGenerationOptions,
29
30
  type BinaryGeneratorCapability,
30
31
  type BinaryModality,
@@ -126,10 +127,21 @@ const contextItems = computed(() =>
126
127
  * Generative candidates: every integration the deployment registered, labelled with what it
127
128
  * produces so the choice is legible without cross-referencing. No filter — unlike the storage
128
129
  * half there is no capability to require, and any registered integration is one admission accepts.
130
+ *
131
+ * A HARNESS-served one carries its CLI in the label, because that is the one property of a
132
+ * candidate that constrains something outside this picker: the step's model. Without it the
133
+ * constraint first appears as a refused run start against a selection this very list offered.
129
134
  */
130
135
  const generatorItems = computed(() =>
131
136
  agents.binaryGenerators.map((generator) => ({
132
- label: `${generator.name} — ${generator.modalities.map(modalityLabel).join(', ')}`,
137
+ label: [
138
+ `${generator.name} — ${generator.modalities.map(modalityLabel).join(', ')}`,
139
+ isHarnessTransport(generator) && generator.harness
140
+ ? t('pipeline.builder.binaryOutputGeneratorVia', { harness: generator.harness })
141
+ : '',
142
+ ]
143
+ .filter(Boolean)
144
+ .join(' · '),
133
145
  value: generator.id,
134
146
  })),
135
147
  )
@@ -440,6 +452,16 @@ const comparisonUnreachable = computed(() => {
440
452
  return (config.value?.generatorIds?.length ?? 0) < 2
441
453
  })
442
454
 
455
+ /**
456
+ * The selected harness-served integrations as `id (cli)`, for the advisory that names both.
457
+ *
458
+ * Assembled here rather than in the read model because it is display text; the pairs themselves
459
+ * are computed there, so the picker cannot come to a different answer about which ones they are.
460
+ */
461
+ const harnessServedSummary = computed(() =>
462
+ pick.value.harnessServedGenerators.map((entry) => `${entry.id} (${entry.harness})`).join(', '),
463
+ )
464
+
443
465
  /** What the SELECTED integrations say they emit — the discoverable half of the free-text field. */
444
466
  const declaredFormats = computed(() => {
445
467
  const byId = new Map(agents.binaryGenerators.map((generator) => [generator.id, generator]))
@@ -871,6 +893,18 @@ const declaredFormats = computed(() => {
871
893
  })
872
894
  }}
873
895
  </p>
896
+ <!-- ADVISORY, and the only line here whose remedy is not on this form: a harness-served
897
+ integration is generated by an agent CLI, so the step needs a MODEL that runs that CLI.
898
+ A pipeline is a template and the model is resolved per block at dispatch, so the builder
899
+ cannot judge whether the constraint is met — it states it, and the run start refuses the
900
+ mismatch. Silence here is what turned it into a surprise at the door. -->
901
+ <p
902
+ v-if="has('generator_harness_required')"
903
+ class="text-[10px] text-slate-500"
904
+ data-testid="binary-output-generator-harness"
905
+ >
906
+ {{ t('pipeline.builder.binaryOutputGeneratorHarness', { generators: harnessServedSummary }) }}
907
+ </p>
874
908
  <!-- ADVISORY, and grouped with the line above it rather than the refusals: selecting two
875
909
  producers of one content type is the reason the selection is a list, and nothing about
876
910
  the step is wrong. What it costs is a decision nobody wrote down, so the remedy this
@@ -711,6 +711,39 @@ describe('binaryOutputPickIssues, generative half', () => {
711
711
  expect(pick.generatorOverlaps).toEqual([{ modality: 'image', generatorIds: ['retro', 'flux'] }])
712
712
  })
713
713
 
714
+ it('states a HARNESS-served integration as advice, naming the CLI the step then needs', () => {
715
+ // Advice and not a refusal on purpose: a pipeline is a template, and the model that decides
716
+ // which CLI a step runs under is chosen per task, not here. What the surface CAN say is the
717
+ // constraint the selection carries, which is the whole difference between this being known in
718
+ // advance and arriving as a refused run start against a selection this picker offered.
719
+ const pick = binaryOutputPickIssues(
720
+ { storageServiceId: 'files', generatorIds: ['codex-images'] },
721
+ catalog,
722
+ true,
723
+ [
724
+ {
725
+ id: 'codex-images',
726
+ modalities: ['image' as const],
727
+ transport: 'harness',
728
+ harness: 'codex',
729
+ },
730
+ ],
731
+ )
732
+ expect(pick.issues).toEqual(['generator_harness_required'])
733
+ expect(pick.harnessServedGenerators).toEqual([{ id: 'codex-images', harness: 'codex' }])
734
+ })
735
+
736
+ it('says nothing about an API integration, which every CLI reaches over HTTP', () => {
737
+ const pick = binaryOutputPickIssues(
738
+ { storageServiceId: 'files', generatorIds: ['retro'] },
739
+ catalog,
740
+ true,
741
+ generators,
742
+ )
743
+ expect(pick.issues).not.toContain('generator_harness_required')
744
+ expect(pick.harnessServedGenerators).toEqual([])
745
+ })
746
+
714
747
  it('reads a repeated id as ONE integration, exactly as the backend resolves it', () => {
715
748
  // A step naming one integration twice holds one producer, so there is no choice to advise
716
749
  // about, and the unknown-id list must not name the same missing id twice either.
@@ -6,6 +6,7 @@ import {
6
6
  binaryValueCoverage,
7
7
  conflictingOutputSizeOptions,
8
8
  isBinaryModality,
9
+ isHarnessTransport,
9
10
  modalityCarriesPixelDimensions,
10
11
  normalizeMediaType,
11
12
  requiredBinaryCapabilities,
@@ -454,6 +455,17 @@ export function binaryOutputHasWarnings(view: BinaryOutputView): boolean {
454
455
  // The pipeline builder's half: what is wrong with a step's SELECTION, before it is saved.
455
456
  // ---------------------------------------------------------------------------
456
457
 
458
+ /**
459
+ * What this half of the surface needs to know about a registered integration: what it produces,
460
+ * what it can be asked for, and how it is REACHED. Named once rather than spelled as a `Pick` at
461
+ * each of the three signatures that take it, which is how `transport` came to be carried on the
462
+ * wire and read by nobody.
463
+ */
464
+ type GeneratorCandidate = Pick<
465
+ RegisteredBinaryGenerator,
466
+ 'id' | 'modalities' | 'mediaTypes' | 'capabilities' | 'accepts' | 'transport' | 'harness'
467
+ >
468
+
457
469
  /**
458
470
  * One thing wrong with a binary-generating step's selection, as the builder can see it.
459
471
  *
@@ -558,6 +570,22 @@ export type BinaryOutputPickIssue =
558
570
  * would ride nearly every step carrying an aspect ratio.
559
571
  */
560
572
  | 'option_value_unverifiable'
573
+ /**
574
+ * A selected integration is served by an agent CLI rather than an API, so the step only works on
575
+ * a model that runs THAT CLI (kernel refuses the mismatch at run start as
576
+ * `generator_harness_unavailable`).
577
+ *
578
+ * ADVISORY here, and it is the one member whose disposition differs from the backend's ON
579
+ * PURPOSE rather than as a softening. A pipeline is a TEMPLATE: the model is resolved per block
580
+ * at dispatch, from a pin this surface is not editing, so the builder genuinely cannot know
581
+ * which CLI a step will run under and a refusal here would be a claim it cannot make. What it
582
+ * CAN state is the constraint the selection carries, which is what turns the run-start refusal
583
+ * from a surprise into something the person picking already knew.
584
+ *
585
+ * Kept apart from `generator_overlap` (the other advisory about the selection itself) because
586
+ * the remedy is somewhere else entirely: the step's or block's MODEL, not its prompt.
587
+ */
588
+ | 'generator_harness_required'
561
589
  /**
562
590
  * The step states an exact output size AND another option that restates the delivered
563
591
  * dimensions (`aspectRatio`, `upscale`). A refusal, mirroring `assertUnambiguousOutputSize` at
@@ -605,6 +633,12 @@ export interface BinaryOutputPickState {
605
633
  * which field to delete. Computed through contracts' own rule, so this cannot come to a
606
634
  * different answer from the save that refuses it. */
607
635
  conflictingSizeOptions: readonly ConflictingOutputSizeOption[]
636
+ /**
637
+ * The selected integrations an agent CLI serves, each with the CLI that serves it, so the
638
+ * advisory can name both the integration and the model constraint it carries. Grouped by
639
+ * harness would read better in one line and lose which id is which, which is the fix.
640
+ */
641
+ harnessServedGenerators: readonly { id: string; harness: string }[]
608
642
  }
609
643
 
610
644
  /**
@@ -630,10 +664,7 @@ export interface BinaryOutputPickState {
630
664
  */
631
665
  function generatorPickIssues(
632
666
  config: BinaryOutputConfig | undefined,
633
- generators: readonly Pick<
634
- RegisteredBinaryGenerator,
635
- 'id' | 'modalities' | 'mediaTypes' | 'capabilities' | 'accepts'
636
- >[],
667
+ generators: readonly GeneratorCandidate[],
637
668
  unavailable: boolean,
638
669
  ): {
639
670
  issues: BinaryOutputPickIssue[]
@@ -647,6 +678,7 @@ function generatorPickIssues(
647
678
  unacceptedValues: BinaryUnacceptedValue[]
648
679
  partiallyAcceptedValues: BinaryPartiallyAcceptedValue[]
649
680
  unverifiableValues: BinaryValueOption[]
681
+ harnessServed: { id: string; harness: string }[]
650
682
  } {
651
683
  const none = {
652
684
  unknownGeneratorIds: [],
@@ -659,6 +691,7 @@ function generatorPickIssues(
659
691
  unacceptedValues: [],
660
692
  partiallyAcceptedValues: [],
661
693
  unverifiableValues: [],
694
+ harnessServed: [],
662
695
  }
663
696
  if (unavailable) return { issues: ['generators_unavailable'], ...none }
664
697
  const byId = new Map(generators.map((g) => [g.id, g]))
@@ -690,6 +723,14 @@ function generatorPickIssues(
690
723
  // beside it, so the line this surface shows and the refusal the backend raises are one
691
724
  // judgement rather than two that agree until somebody edits one of them.
692
725
  const value = binaryValueCoverage(config?.generation, selected)
726
+ // The REACHABILITY constraint, read off the same resolved selection. `isHarnessTransport` rather
727
+ // than `transport === 'harness'`, so an integration registered before the field existed is not
728
+ // read as harness-served; the `?? ''` can only be reached by a snapshot from a newer mothership,
729
+ // since the schema refuses a harness transport that names no CLI.
730
+ const harnessServed = selected
731
+ .filter(isHarnessTransport)
732
+ .map((generator) => ({ id: generator.id, harness: generator.harness ?? '' }))
733
+ .filter((entry) => entry.harness !== '')
693
734
  const issues: BinaryOutputPickIssue[] = []
694
735
  if (unknownGeneratorIds.length) issues.push('unknown_generator')
695
736
  if (uncovered.length) issues.push('modality_uncovered')
@@ -701,6 +742,7 @@ function generatorPickIssues(
701
742
  if (value.unaccepted.length) issues.push('option_value_unaccepted')
702
743
  if (value.partial.length) issues.push('option_value_partial')
703
744
  if (value.unverifiable.length) issues.push('option_value_unverifiable')
745
+ if (harnessServed.length) issues.push('generator_harness_required')
704
746
  return {
705
747
  issues,
706
748
  unknownGeneratorIds,
@@ -713,6 +755,7 @@ function generatorPickIssues(
713
755
  unacceptedValues: value.unaccepted,
714
756
  partiallyAcceptedValues: value.partial,
715
757
  unverifiableValues: value.unverifiable,
758
+ harnessServed,
716
759
  }
717
760
  }
718
761
 
@@ -747,10 +790,7 @@ export function binaryOutputPickIssues(
747
790
  // that registers no integrations cannot satisfy a step that selects one. So a call site that
748
791
  // omits this FLAGS a selection rather than passing it — the loud direction — and the default
749
792
  // stays a legitimate value rather than a hole.
750
- generators: readonly Pick<
751
- RegisteredBinaryGenerator,
752
- 'id' | 'modalities' | 'mediaTypes' | 'capabilities' | 'accepts'
753
- >[] = [],
793
+ generators: readonly GeneratorCandidate[] = [],
754
794
  // Whether the deployment's integrations could not be READ. Defaulted to `false` — the honest
755
795
  // default, since every deployment but a mothership-mode node reads them in-process and cannot
756
796
  // fail — so an omitting call site judges the list it was given rather than claiming an outage.
@@ -791,6 +831,7 @@ export function binaryOutputPickIssues(
791
831
  partiallyAcceptedValues: generative.partiallyAcceptedValues,
792
832
  unverifiableValues: generative.unverifiableValues,
793
833
  conflictingSizeOptions,
834
+ harnessServedGenerators: generative.harnessServed,
794
835
  }
795
836
  }
796
837
 
@@ -821,5 +862,6 @@ export function binaryOutputPickIssues(
821
862
  partiallyAcceptedValues: generative.partiallyAcceptedValues,
822
863
  unverifiableValues: generative.unverifiableValues,
823
864
  conflictingSizeOptions,
865
+ harnessServedGenerators: generative.harnessServed,
824
866
  }
825
867
  }
@@ -4494,6 +4494,8 @@
4494
4494
  "binaryOutputMediaTypeUnusable": "Nicht gespeichert, denn dies sind keine Medientypen: {entries}. Schreibe jeden als type/subtype.",
4495
4495
  "binaryOutputGeneratorMissing": "Diese Installation registriert diese generativen Integrationen nicht: {ids}. Sie werden im Code der Installation registriert, nicht in diesem Workspace.",
4496
4496
  "binaryOutputGeneratorOverlap": "Mehrere ausgewählte Integrationen erzeugen denselben Inhaltstyp ({overlaps}). Daran ist nichts falsch, aber der Inhaltstyp entscheidet nicht mehr, welche der Agent aufruft: Lege im Prompt dieses Schritts fest, welche wofür verwendet wird, sonst wählt er eine aus und bleibt dabei.",
4497
+ "binaryOutputGeneratorVia": "über {harness}",
4498
+ "binaryOutputGeneratorHarness": "Diese Integrationen werden von einer Agenten-CLI statt von einer API erzeugt ({generators}); dieser Schritt funktioniert daher nur mit einem Modell, das auf dieser CLI läuft. Ein Lauf mit einem anderen Modell wird beim Start abgelehnt.",
4497
4499
  "binaryOutputModalityUncovered": "Keine ausgewählte Integration erzeugt {modalities}, was dieser Schritt liefern soll.",
4498
4500
  "binaryOutputModalityRetired": "{modality} (nicht mehr verfügbar — wähle die Inhaltstypen dieses Schritts neu)",
4499
4501
  "binaryOutputModality": {
@@ -5850,7 +5852,7 @@
5850
5852
  "pipeline_schedule_intake_unconfigured": "Ein Bug-Intake-Schritt bezieht seine Arbeit aus der Ticket-Erfassung des Zeitplans, und der verknüpfte Zeitplan hat keine. Konfigurieren Sie zuerst die Ticket-Erfassung im Zeitplan.",
5851
5853
  "foundational_service_exists": "Ein Basisdienst mit dieser ID ist in diesem Bereich bereits registriert. Öffnen Sie den vorhandenen Eintrag und bearbeiten Sie ihn — zwei Dienste können sich keine ID teilen, denn die ID ist der Name, den ein Architekt in seinem Entwurf verwendet.",
5852
5854
  "binary_output_service_invalid": "Ein Schritt, der Binärausgaben erzeugt, wählt einen Basisdienst aus, den der Katalog dieses Workspace nicht auflösen kann: Die ID ist unbekannt, oder der gewählte Speicherdienst trägt nicht die Fähigkeit asset-storage. Korrigieren Sie die Auswahl des Schritts oder registrieren Sie den Dienst und starten Sie erneut.",
5853
- "binary_output_generator_invalid": "Ein Schritt, der Binärausgaben erzeugt, wählt eine generative Integration aus, die diese Installation nicht registriert, oder keine der gewählten Integrationen erzeugt einen Inhaltstyp, den der Schritt liefern muss. Generative Integrationen werden im Code der Installation registriert, nicht in diesem Workspace: registrieren Sie sie oder korrigieren Sie die Auswahl des Schritts und starten Sie erneut.",
5855
+ "binary_output_generator_invalid": "Ein Schritt, der Binärausgaben erzeugt, wählt eine generative Integration aus, die diese Installation nicht registriert, keine der gewählten Integrationen erzeugt einen Inhaltstyp, den der Schritt liefern muss, oder eine davon wird von einer Agenten-CLI erzeugt, auf der das Modell dieses Schritts nicht läuft. Generative Integrationen werden im Code der Installation registriert, nicht in diesem Workspace: registrieren Sie sie, korrigieren Sie die Auswahl des Schritts oder legen Sie für den Schritt ein Modell fest, das die erforderliche CLI ausführt, und starten Sie erneut.",
5854
5856
  "foundational_service_not_inherited": "Abwählen gilt für einen vom Konto geerbten Dienst. Diese ID ist von diesem Board registriert, es gibt also nichts abzuwählen - lösche stattdessen den eigenen Eintrag des Boards.",
5855
5857
  "input_gate_not_parked": "Dieser Lauf wartet nicht mehr auf seine Eingabeprüfung. Möglicherweise hat sie jemand schon beantwortet oder der Lauf ist weitergelaufen.",
5856
5858
  "input_gate_parked": "Dieser Lauf wartet auf seine Eingabeprüfung, die über die Freigabe nicht beantwortet werden kann. Nutzen Sie den Hinweis am Lauf: Aufgabe ergänzen und erneut prüfen, oder trotzdem ausführen.",
@@ -700,7 +700,7 @@
700
700
  "pipeline_schedule_intake_unconfigured": "A bug intake step draws its work from the schedule issue intake settings, and the attached schedule has none. Configure issue intake on the schedule first.",
701
701
  "foundational_service_exists": "A foundational service with this id is already registered at this scope. Open the existing entry and edit it — two services cannot share an id, because the id is what an architect names in its design.",
702
702
  "binary_output_service_invalid": "A step that generates binary outputs selects a foundational service this workspace's catalog can't resolve: the id is unknown, or the chosen storage service doesn't carry the asset-storage capability. Fix the step's selection or register the service, then start again.",
703
- "binary_output_generator_invalid": "A step that generates binary outputs selects a generative integration this deployment doesn't register, or none of the selected integrations produces a content type the step must deliver. Generative integrations are registered in the deployment's code, not in this workspace: register it or fix the step's selection, then start again.",
703
+ "binary_output_generator_invalid": "A step that generates binary outputs selects a generative integration this deployment doesn't register, none of the selected integrations produces a content type the step must deliver, or one of them is generated by an agent CLI this step's model doesn't run on. Generative integrations are registered in the deployment's code, not in this workspace: register it, fix the step's selection, or pin the step to a model that runs the required CLI, then start again.",
704
704
  "foundational_service_not_inherited": "Opting out applies to a service inherited from the account. This id is registered by this board, so there is nothing to opt out of - delete the board's own entry instead.",
705
705
  "input_gate_not_parked": "This run is not waiting on its input check any more. Someone may have answered it already, or the run has moved on.",
706
706
  "input_gate_parked": "This run is parked on its input check, which the approval rail cannot answer. Use the notice on the run: fix the task and re-check, or run it anyway.",
@@ -5105,6 +5105,9 @@
5105
5105
  "binaryOutputGeneratorMissing": "This deployment does not register these generative integrations: {ids}. They are registered in the deployment's code, not in this workspace.",
5106
5106
  "binaryOutputGeneratorOverlap": "More than one selected integration produces the same content type ({overlaps}). Nothing is wrong with that, but the content type no longer decides which one the agent calls: say in this step's prompt which to use for what, or it will pick one and keep picking it.",
5107
5107
  "@binaryOutputGeneratorOverlap": "{overlaps} is assembled by the app, not prose: a semicolon-separated list of 'content type: id, id' (e.g. 'Images: flux, retro-diffusion'). The ids are raw machine values and must not be translated; only the content-type label before each colon is translated, and it comes from its own key. This is advice, not an error: the step saves and runs either way, so keep the tone neutral.",
5108
+ "binaryOutputGeneratorVia": "via {harness}",
5109
+ "binaryOutputGeneratorHarness": "These integrations are generated by an agent CLI rather than an API ({generators}), so this step only works on a model that runs that CLI. A run whose model does not is refused at start.",
5110
+ "@binaryOutputGeneratorHarness": "{generators} is assembled by the app, not prose: a comma-separated list of 'id (cli)' (e.g. 'codex-images (codex)'). Both the id and the CLI name are raw machine values and must not be translated. This is advice, not an error: the pipeline saves and this surface cannot judge whether the constraint is met, because the model is chosen per task, not here. Keep the tone neutral.",
5108
5111
  "binaryOutputModalityUncovered": "No selected integration produces {modalities}, which this step is set to deliver.",
5109
5112
  "binaryOutputModalityRetired": "{modality} (no longer offered — re-pick this step's content types)",
5110
5113
  "@binaryOutputModalityRetired": "A content type saved on a step that this build no longer defines. {modality} is a raw machine value (e.g. 3d) and must not be translated. Appears inside the binaryOutputModalityUncovered sentence, so keep it a short noun phrase, not a sentence.",
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "Un paso de entrada de errores toma su trabajo de la entrada de incidencias de la programación, y la programación vinculada no la tiene. Configure la entrada de incidencias en la programación primero.",
629
629
  "foundational_service_exists": "Ya hay un servicio fundacional con este identificador registrado en este ámbito. Abre la entrada existente y edítala: dos servicios no pueden compartir un identificador, porque es el nombre que un arquitecto usa en su diseño.",
630
630
  "binary_output_service_invalid": "Un paso que genera salidas binarias selecciona un servicio fundacional que el catálogo de este espacio de trabajo no puede resolver: el identificador es desconocido, o el servicio de almacenamiento elegido no tiene la capacidad asset-storage. Corrige la selección del paso o registra el servicio y vuelve a iniciarlo.",
631
- "binary_output_generator_invalid": "Un paso que genera salidas binarias selecciona una integración generativa que esta instalación no registra, o ninguna de las integraciones seleccionadas produce un tipo de contenido que el paso debe entregar. Las integraciones generativas se registran en el código de la instalación, no en este espacio de trabajo: regístrala o corrige la selección del paso y vuelve a iniciar.",
631
+ "binary_output_generator_invalid": "Un paso que genera salidas binarias selecciona una integración generativa que esta instalación no registra, ninguna de las integraciones seleccionadas produce un tipo de contenido que el paso debe entregar, o una de ellas la genera una CLI de agente en la que no se ejecuta el modelo de este paso. Las integraciones generativas se registran en el código de la instalación, no en este espacio de trabajo: regístrala, corrige la selección del paso o fija en el paso un modelo que ejecute la CLI necesaria, y vuelve a iniciar.",
632
632
  "foundational_service_not_inherited": "La exclusión se aplica a un servicio heredado de la cuenta. Este id está registrado por este tablero, así que no hay nada que excluir: elimina la entrada propia del tablero.",
633
633
  "input_gate_not_parked": "Esta ejecución ya no espera su comprobación de entrada. Puede que alguien la haya respondido o que la ejecución haya avanzado.",
634
634
  "input_gate_parked": "Esta ejecución está detenida en su comprobación de entrada, que la vía de aprobación no puede resolver. Usa el aviso de la ejecución: corrige la tarea y vuelve a comprobar, o ejecútala de todos modos.",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "No se guardó, porque esto no son tipos de medio: {entries}. Escribe cada uno como type/subtype.",
4938
4938
  "binaryOutputGeneratorMissing": "Esta instalación no registra estas integraciones generativas: {ids}. Se registran en el código de la instalación, no en este espacio de trabajo.",
4939
4939
  "binaryOutputGeneratorOverlap": "Más de una integración seleccionada produce el mismo tipo de contenido ({overlaps}). No hay nada malo en ello, pero el tipo de contenido ya no decide a cuál llama el agente: indica en el prompt de este paso cuál usar para qué, o elegirá una y seguirá usando esa.",
4940
+ "binaryOutputGeneratorVia": "vía {harness}",
4941
+ "binaryOutputGeneratorHarness": "Estas integraciones las genera una CLI de agente en lugar de una API ({generators}), por lo que este paso solo funciona con un modelo que se ejecute en esa CLI. Una ejecución con otro modelo se rechaza al iniciarse.",
4940
4942
  "binaryOutputModalityUncovered": "Ninguna integración seleccionada produce {modalities}, que este paso debe entregar.",
4941
4943
  "binaryOutputModalityRetired": "{modality} (ya no disponible: vuelve a elegir los tipos de contenido de este paso)",
4942
4944
  "binaryOutputModality": {
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "Une étape de collecte de bogues tire son travail des réglages de collecte de tickets de la planification, et la planification associée n'en a aucun. Configurez d'abord la collecte de tickets sur la planification.",
629
629
  "foundational_service_exists": "Un service fondamental portant cet identifiant est déjà enregistré dans cette portée. Ouvrez l’entrée existante et modifiez-la : deux services ne peuvent pas partager un identifiant, car c’est le nom qu’un architecte emploie dans sa conception.",
630
630
  "binary_output_service_invalid": "Une étape qui génère des sorties binaires sélectionne un service fondamental que le catalogue de cet espace de travail ne peut pas résoudre : l’identifiant est inconnu, ou le service de stockage choisi ne porte pas la capacité asset-storage. Corrigez la sélection de l’étape ou enregistrez le service, puis relancez.",
631
- "binary_output_generator_invalid": "Une étape qui génère des sorties binaires sélectionne une intégration générative que ce déploiement n’enregistre pas, ou aucune des intégrations sélectionnées ne produit un type de contenu que l’étape doit livrer. Les intégrations génératives sont enregistrées dans le code du déploiement, pas dans cet espace de travail : enregistrez-la ou corrigez la sélection de l’étape, puis relancez.",
631
+ "binary_output_generator_invalid": "Une étape qui génère des sorties binaires sélectionne une intégration générative que ce déploiement n’enregistre pas, aucune des intégrations sélectionnées ne produit un type de contenu que l’étape doit livrer, ou l’une d’elles est générée par une CLI d’agent sur laquelle le modèle de cette étape ne s’exécute pas. Les intégrations génératives sont enregistrées dans le code du déploiement, pas dans cet espace de travail : enregistrez-la, corrigez la sélection de l’étape, ou fixez pour l’étape un modèle exécutant la CLI requise, puis relancez.",
632
632
  "foundational_service_not_inherited": "L'écartement s'applique à un service hérité du compte. Cet identifiant est enregistré par ce tableau : il n'y a donc rien à écarter - supprimez plutôt l'entrée propre au tableau.",
633
633
  "input_gate_not_parked": "Cette exécution n'attend plus sa vérification d'entrée. Quelqu'un y a peut-être déjà répondu, ou l'exécution a avancé.",
634
634
  "input_gate_parked": "Cette exécution est en attente de sa vérification d'entrée, à laquelle la validation ne peut pas répondre. Utilisez l'avis sur l'exécution : corrigez la tâche et relancez la vérification, ou exécutez-la quand même.",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "Non enregistré, car ce ne sont pas des types de média : {entries}. Écrivez chacun sous la forme type/subtype.",
4938
4938
  "binaryOutputGeneratorMissing": "Ce déploiement n'enregistre pas ces intégrations génératives : {ids}. Elles s'enregistrent dans le code du déploiement, pas dans cet espace de travail.",
4939
4939
  "binaryOutputGeneratorOverlap": "Plusieurs intégrations sélectionnées produisent le même type de contenu ({overlaps}). Ce n’est pas un problème en soi, mais le type de contenu ne décide plus laquelle l’agent appelle : indiquez dans le prompt de cette étape laquelle utiliser et pour quoi, sinon il en choisira une et s’y tiendra.",
4940
+ "binaryOutputGeneratorVia": "via {harness}",
4941
+ "binaryOutputGeneratorHarness": "Ces intégrations sont générées par une CLI d’agent et non par une API ({generators}) : cette étape ne fonctionne donc qu’avec un modèle exécuté sur cette CLI. Une exécution avec un autre modèle est refusée au démarrage.",
4940
4942
  "binaryOutputModalityUncovered": "Aucune intégration sélectionnée ne produit {modalities}, que cette étape doit livrer.",
4941
4943
  "binaryOutputModalityRetired": "{modality} (n'est plus proposé — resélectionnez les types de contenu de cette étape)",
4942
4944
  "binaryOutputModality": {
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "שלב קליטת באגים שואב את עבודתו מהגדרות קליטת הפניות של התזמון, ולתזמון המקושר אין כאלה. הגדירו קודם קליטת פניות בתזמון.",
629
629
  "foundational_service_exists": "שירות תשתית עם מזהה זה כבר רשום בהיקף הזה. פתחו את הרשומה הקיימת וערכו אותה — שני שירותים אינם יכולים לחלוק מזהה, מפני שהמזהה הוא השם שארכיטקט מציין בתכנון שלו.",
630
630
  "binary_output_service_invalid": "שלב שמייצר פלט בינארי בוחר שירות תשתית שהקטלוג של סביבת העבודה אינו יכול לזהות: המזהה אינו מוכר, או ששירות האחסון שנבחר אינו נושא את היכולת asset-storage. תקנו את הבחירה בשלב או רשמו את השירות, ואז התחילו מחדש.",
631
- "binary_output_generator_invalid": "שלב שמייצר פלט בינארי בוחר אינטגרציה גנרטיבית שהפריסה הזו אינה רושמת, או שאף אחת מהאינטגרציות שנבחרו אינה מייצרת סוג תוכן שהשלב אמור לספק. אינטגרציות גנרטיביות נרשמות בקוד של הפריסה ולא במרחב העבודה הזה: רשמו אותה או תקנו את הבחירה בשלב, ואז התחילו מחדש.",
631
+ "binary_output_generator_invalid": "שלב שמייצר פלט בינארי בוחר אינטגרציה גנרטיבית שהפריסה הזו אינה רושמת, אף אחת מהאינטגרציות שנבחרו אינה מייצרת סוג תוכן שהשלב אמור לספק, או שאחת מהן נוצרת על ידי CLI של סוכן שהמודל של השלב הזה אינו רץ עליו. אינטגרציות גנרטיביות נרשמות בקוד של הפריסה ולא במרחב העבודה הזה: רשמו אותה, תקנו את הבחירה בשלב, או קבעו לשלב מודל שרץ על ה-CLI הנדרש, ואז התחילו מחדש.",
632
632
  "foundational_service_not_inherited": "החרגה חלה על שירות שנורש מהחשבון. המזהה הזה רשום על ידי הלוח הזה, ולכן אין מה להחריג - מחקו במקום זאת את הרשומה של הלוח עצמו.",
633
633
  "input_gate_not_parked": "ההרצה כבר לא ממתינה לבדיקת הקלט. ייתכן שמישהו כבר השיב, או שההרצה התקדמה.",
634
634
  "input_gate_parked": "הרצה זו ממתינה לבדיקת הקלט שלה, ומסלול האישור אינו יכול להשיב עליה. השתמשו בהודעה שעל ההרצה: תקנו את המשימה ובדקו שוב, או הריצו בכל זאת.",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "לא נשמר, כי אלה אינם סוגי מדיה: {entries}. כתבו כל אחד בצורה type/subtype.",
4938
4938
  "binaryOutputGeneratorMissing": "ההתקנה הזו אינה רושמת את האינטגרציות הגנרטיביות האלה: {ids}. הן נרשמות בקוד ההתקנה, לא במרחב העבודה הזה.",
4939
4939
  "binaryOutputGeneratorOverlap": "יותר מאינטגרציה אחת שנבחרה מפיקה את אותו סוג תוכן ({overlaps}). אין בכך שום פסול, אבל סוג התוכן כבר לא קובע באיזו מהן הסוכן ישתמש: ציינו בהנחיות של השלב הזה באיזו להשתמש ולשם מה, אחרת הוא יבחר אחת וימשיך איתה.",
4940
+ "binaryOutputGeneratorVia": "דרך {harness}",
4941
+ "binaryOutputGeneratorHarness": "האינטגרציות האלה נוצרות על ידי CLI של סוכן ולא על ידי API ({generators}), ולכן השלב הזה עובד רק עם מודל שרץ על אותו CLI. הרצה עם מודל אחר נדחית כבר בהתחלה.",
4940
4942
  "binaryOutputModalityUncovered": "אף אינטגרציה שנבחרה אינה מייצרת {modalities}, שהשלב הזה אמור לספק.",
4941
4943
  "binaryOutputModalityRetired": "{modality} (כבר לא נתמך — בחרו מחדש את סוגי התוכן של השלב)",
4942
4944
  "binaryOutputModality": {
@@ -4494,6 +4494,8 @@
4494
4494
  "binaryOutputMediaTypeUnusable": "Non salvato, perché questi non sono tipi di media: {entries}. Scrivi ciascuno come type/subtype.",
4495
4495
  "binaryOutputGeneratorMissing": "Questa installazione non registra queste integrazioni generative: {ids}. Si registrano nel codice dell'installazione, non in questo spazio di lavoro.",
4496
4496
  "binaryOutputGeneratorOverlap": "Più di un’integrazione selezionata produce lo stesso tipo di contenuto ({overlaps}). Non c’è nulla di sbagliato, ma il tipo di contenuto non decide più quale l’agente chiama: indica nel prompt di questo passaggio quale usare e per cosa, altrimenti ne sceglierà una e continuerà a usare quella.",
4497
+ "binaryOutputGeneratorVia": "tramite {harness}",
4498
+ "binaryOutputGeneratorHarness": "Queste integrazioni sono generate da una CLI dell’agente anziché da un’API ({generators}), quindi questo passaggio funziona solo con un modello eseguito su quella CLI. Un’esecuzione con un altro modello viene rifiutata all’avvio.",
4497
4499
  "binaryOutputModalityUncovered": "Nessuna integrazione selezionata produce {modalities}, che questo passaggio deve fornire.",
4498
4500
  "binaryOutputModalityRetired": "{modality} (non più disponibile: riseleziona i tipi di contenuto di questo passaggio)",
4499
4501
  "binaryOutputModality": {
@@ -5850,7 +5852,7 @@
5850
5852
  "pipeline_schedule_intake_unconfigured": "Un passo di raccolta bug prende il lavoro dalle impostazioni di raccolta ticket della pianificazione, e la pianificazione collegata non le ha. Configura prima la raccolta ticket sulla pianificazione.",
5851
5853
  "foundational_service_exists": "Un servizio fondamentale con questo identificatore è già registrato in questo ambito. Apri la voce esistente e modificala: due servizi non possono condividere un identificatore, perché è il nome che un architetto indica nella sua progettazione.",
5852
5854
  "binary_output_service_invalid": "Un passaggio che genera output binari seleziona un servizio fondamentale che il catalogo di questo workspace non riesce a risolvere: l'identificatore è sconosciuto, oppure il servizio di archiviazione scelto non ha la capacità asset-storage. Correggi la selezione del passaggio o registra il servizio, poi riavvia.",
5853
- "binary_output_generator_invalid": "Un passaggio che genera output binari seleziona un'integrazione generativa che questa installazione non registra, oppure nessuna delle integrazioni selezionate produce un tipo di contenuto che il passaggio deve consegnare. Le integrazioni generative si registrano nel codice dell'installazione, non in questo workspace: registrala o correggi la selezione del passaggio, poi riavvia.",
5855
+ "binary_output_generator_invalid": "Un passaggio che genera output binari seleziona unintegrazione generativa che questa installazione non registra, nessuna delle integrazioni selezionate produce un tipo di contenuto che il passaggio deve consegnare, oppure una di esse è generata da una CLI dell’agente su cui il modello di questo passaggio non viene eseguito. Le integrazioni generative si registrano nel codice dellinstallazione, non in questo workspace: registrala, correggi la selezione del passaggio, oppure fissa per il passaggio un modello che esegua la CLI richiesta, poi riavvia.",
5854
5856
  "foundational_service_not_inherited": "L'esclusione vale per un servizio ereditato dall'account. Questo id è registrato da questa bacheca, quindi non c'è nulla da escludere: elimina invece la voce propria della bacheca.",
5855
5857
  "input_gate_not_parked": "Questa esecuzione non attende più il controllo dell'input. Forse qualcuno ha già risposto, o l'esecuzione è andata avanti.",
5856
5858
  "input_gate_parked": "Questa esecuzione è in attesa del suo controllo di input, a cui l'approvazione non può rispondere. Usa l'avviso sull'esecuzione: correggi l'attività e ricontrolla, oppure eseguila comunque.",
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "バグ取り込みステップはスケジュールの課題取り込み設定から作業を取得しますが、関連付けられたスケジュールにその設定がありません。先にスケジュールで課題取り込みを設定してください。",
629
629
  "foundational_service_exists": "この ID の基盤サービスはこのスコープにすでに登録されています。既存のエントリを開いて編集してください。ID は設計でアーキテクトが指定する名前なので、2 つのサービスが同じ ID を共有することはできません。",
630
630
  "binary_output_service_invalid": "バイナリ出力を生成するステップが、このワークスペースのカタログでは解決できない基盤サービスを選択しています。ID が不明か、選択した保存先サービスに asset-storage ケイパビリティがありません。ステップの選択を修正するかサービスを登録して、もう一度開始してください。",
631
- "binary_output_generator_invalid": "バイナリ出力を生成するステップが、このデプロイメントに登録されていない生成インテグレーションを選択しているか、選択されたインテグレーションのいずれもステップが提供すべきコンテンツタイプを生成できません。生成インテグレーションはこのワークスペースではなくデプロイメントのコードに登録します。登録するかステップの選択を修正して、もう一度開始してください。",
631
+ "binary_output_generator_invalid": "バイナリ出力を生成するステップが、このデプロイに登録されていない生成連携を選択しているか、選択された連携のどれもステップが提供すべきコンテンツタイプを生成しないか、あるいはそのうちの一つがこのステップのモデルでは動作しないエージェント CLI によって生成されます。生成連携はこのワークスペースではなくデプロイのコードに登録されます。連携を登録するか、ステップの選択を修正するか、必要な CLI で動作するモデルをステップに固定してから、もう一度開始してください。",
632
632
  "foundational_service_not_inherited": "除外はアカウントから継承したサービスに対する操作です。この ID はこのボード自身が登録しているため、除外するものがありません。代わりにボード自身のエントリを削除してください。",
633
633
  "input_gate_not_parked": "この実行はもう入力チェックを待っていません。すでに誰かが応答したか、実行が先に進んだ可能性があります。",
634
634
  "input_gate_parked": "この実行は入力チェックで停止しており、承認からは回答できません。実行の通知から、タスクを修正して再チェックするか、そのまま実行してください。",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "メディアタイプではないため保存されませんでした: {entries}。それぞれ type/subtype の形で入力してください。",
4938
4938
  "binaryOutputGeneratorMissing": "このデプロイメントは次の生成統合を登録していません: {ids}。これらはこのワークスペースではなくデプロイメントのコードで登録します。",
4939
4939
  "binaryOutputGeneratorOverlap": "選択された統合のうち複数が同じコンテンツタイプを生成します({overlaps})。それ自体は問題ありませんが、どれを呼び出すかをコンテンツタイプが決められなくなります。このステップのプロンプトで、どれを何に使うかを指定してください。指定がなければエージェントは一つを選び、そのまま使い続けます。",
4940
+ "binaryOutputGeneratorVia": "{harness} 経由",
4941
+ "binaryOutputGeneratorHarness": "これらの連携は API ではなくエージェント CLI が生成します({generators})。そのため、このステップはその CLI で動作するモデルでのみ機能します。別のモデルで実行しようとすると、開始時に拒否されます。",
4940
4942
  "binaryOutputModalityUncovered": "このステップが提供することになっている {modalities} を、選択されたどの統合も生成できません。",
4941
4943
  "binaryOutputModalityRetired": "{modality}(現在は提供されていません。このステップのコンテンツ種別を選び直してください)",
4942
4944
  "binaryOutputModality": {
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "Krok pobierania błędów czerpie pracę z ustawień pobierania zgłoszeń harmonogramu, a powiązany harmonogram ich nie ma. Najpierw skonfiguruj pobieranie zgłoszeń w harmonogramie.",
629
629
  "foundational_service_exists": "Usługa fundamentalna o tym identyfikatorze jest już zarejestrowana w tym zakresie. Otwórz istniejący wpis i go edytuj — dwie usługi nie mogą współdzielić identyfikatora, ponieważ to jego nazwą architekt posługuje się w projekcie.",
630
630
  "binary_output_service_invalid": "Krok generujący wyniki binarne wybiera usługę fundamentalną, której katalog tego obszaru roboczego nie może rozpoznać: identyfikator jest nieznany albo wybrana usługa przechowywania nie ma zdolności asset-storage. Popraw wybór w kroku lub zarejestruj usługę, a następnie uruchom ponownie.",
631
- "binary_output_generator_invalid": "Krok generujący dane binarne wybiera integrację generatywną, której to wdrożenie nie rejestruje, albo żadna z wybranych integracji nie tworzy typu treści, który krok ma dostarczyć. Integracje generatywne rejestruje się w kodzie wdrożenia, a nie w tej przestrzeni roboczej: zarejestruj lub popraw wybór w kroku, a następnie uruchom ponownie.",
631
+ "binary_output_generator_invalid": "Krok generujący dane binarne wybiera integrację generatywną, której to wdrożenie nie rejestruje, żadna z wybranych integracji nie tworzy typu treści, który krok ma dostarczyć, albo jedną z nich tworzy CLI agenta, na którym model tego kroku nie działa. Integracje generatywne rejestruje się w kodzie wdrożenia, a nie w tej przestrzeni roboczej: zarejestruj ją, popraw wybór kroku albo przypisz krokowi model działający w wymaganym CLI, a następnie uruchom ponownie.",
632
632
  "foundational_service_not_inherited": "Wyłączenie dotyczy usługi dziedziczonej z konta. Ten identyfikator jest zarejestrowany przez tę tablicę, więc nie ma czego wyłączać - usuń zamiast tego własny wpis tablicy.",
633
633
  "input_gate_not_parked": "Ten przebieg nie czeka już na kontrolę danych wejściowych. Ktoś mógł już na nią odpowiedzieć albo przebieg poszedł dalej.",
634
634
  "input_gate_parked": "To uruchomienie czeka na kontrolę danych wejściowych, której nie da się rozstrzygnąć przez zatwierdzenie. Skorzystaj z powiadomienia przy uruchomieniu: popraw zadanie i sprawdź ponownie albo uruchom mimo to.",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "Nie zapisano, bo to nie są typy mediów: {entries}. Zapisz każdy jako type/subtype.",
4938
4938
  "binaryOutputGeneratorMissing": "Ta instalacja nie rejestruje tych integracji generatywnych: {ids}. Rejestruje się je w kodzie instalacji, a nie w tym obszarze roboczym.",
4939
4939
  "binaryOutputGeneratorOverlap": "Więcej niż jedna wybrana integracja tworzy ten sam typ treści ({overlaps}). Nie ma w tym nic złego, ale typ treści nie decyduje już, którą wywoła agent: napisz w promptcie tego kroku, której użyć i do czego, bo inaczej wybierze jedną i będzie jej używał dalej.",
4940
+ "binaryOutputGeneratorVia": "przez {harness}",
4941
+ "binaryOutputGeneratorHarness": "Te integracje są tworzone przez CLI agenta, a nie przez API ({generators}), więc ten krok działa tylko z modelem uruchamianym w tym CLI. Uruchomienie z innym modelem zostanie odrzucone na starcie.",
4940
4942
  "binaryOutputModalityUncovered": "Żadna wybrana integracja nie tworzy {modalities}, które ten krok ma dostarczyć.",
4941
4943
  "binaryOutputModalityRetired": "{modality} (już niedostępne — wybierz ponownie typy treści tego kroku)",
4942
4944
  "binaryOutputModality": {
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "Hata alımı adımı işini zamanlamanın sorun alımı ayarlarından alır ve bağlı zamanlamada bu ayar yok. Önce zamanlamada sorun alımını yapılandırın.",
629
629
  "foundational_service_exists": "Bu kimliğe sahip bir temel hizmet bu kapsamda zaten kayıtlı. Var olan kaydı açıp düzenleyin — iki hizmet aynı kimliği paylaşamaz, çünkü kimlik bir mimarın tasarımında andığı addır.",
630
630
  "binary_output_service_invalid": "İkili çıktılar üreten bir adım, bu çalışma alanının kataloğunda çözümlenemeyen bir temel hizmet seçiyor: kimlik bilinmiyor ya da seçilen depolama hizmeti asset-storage yeteneğini taşımıyor. Adımın seçimini düzeltin veya hizmeti kaydedin, sonra yeniden başlatın.",
631
- "binary_output_generator_invalid": "İkili çıktı üreten bir adım, bu dağıtımın kaydetmediği bir üretken entegrasyon seçiyor ya da seçilen entegrasyonların hiçbiri adımın teslim etmesi gereken içerik türünü üretmiyor. Üretken entegrasyonlar bu çalışma alanında değil, dağıtımın kodunda kaydedilir: entegrasyonu kaydedin veya adımın seçimini düzeltin, sonra yeniden başlatın.",
631
+ "binary_output_generator_invalid": "İkili çıktı üreten bir adım, bu kurulumun kaydetmediği bir üretken entegrasyon seçiyor; seçili entegrasyonlardan hiçbiri adımın teslim etmesi gereken içerik türünü üretmiyor; ya da bunlardan biri, bu adımın modelinin çalışmadığı bir aracı CLI tarafından üretiliyor. Üretken entegrasyonlar bu çalışma alanında değil, kurulumun kodunda kaydedilir: entegrasyonu kaydedin, adımın seçimini düzeltin ya da adıma gereken CLI üzerinde çalışan bir model sabitleyin, sonra yeniden başlatın.",
632
632
  "foundational_service_not_inherited": "Devre dışı bırakma, hesaptan devralınan bir hizmet için geçerlidir. Bu kimlik bu pano tarafından kaydedilmiş, dolayısıyla devre dışı bırakılacak bir şey yok - bunun yerine panonun kendi kaydını silin.",
633
633
  "input_gate_not_parked": "Bu çalışma artık giriş denetimini beklemiyor. Biri onu yanıtlamış ya da çalışma ilerlemiş olabilir.",
634
634
  "input_gate_parked": "Bu çalıştırma girdi kontrolünde bekliyor ve onay akışı bunu yanıtlayamaz. Çalıştırmadaki bildirimi kullanın: görevi düzeltip yeniden kontrol edin ya da yine de çalıştırın.",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "Kaydedilmedi, çünkü bunlar ortam türü değil: {entries}. Her birini type/subtype olarak yazın.",
4938
4938
  "binaryOutputGeneratorMissing": "Bu kurulum şu üretken entegrasyonları kaydetmiyor: {ids}. Bunlar bu çalışma alanında değil, kurulumun kodunda kaydedilir.",
4939
4939
  "binaryOutputGeneratorOverlap": "Seçili entegrasyonlardan birden fazlası aynı içerik türünü üretiyor ({overlaps}). Bunda bir sakınca yok, ancak artık hangisinin çağrılacağına içerik türü karar vermiyor: bu adımın isteminde hangisinin ne için kullanılacağını belirtin, yoksa ajan birini seçip onu kullanmayı sürdürür.",
4940
+ "binaryOutputGeneratorVia": "{harness} üzerinden",
4941
+ "binaryOutputGeneratorHarness": "Bu entegrasyonlar bir API yerine bir aracı CLI tarafından üretilir ({generators}); bu nedenle bu adım yalnızca o CLI üzerinde çalışan bir modelle işler. Başka bir modelle başlatılan çalıştırma başlangıçta reddedilir.",
4940
4942
  "binaryOutputModalityUncovered": "Seçili entegrasyonların hiçbiri, bu adımın teslim etmesi gereken {modalities} içeriğini üretmiyor.",
4941
4943
  "binaryOutputModalityRetired": "{modality} (artık sunulmuyor — bu adımın içerik türlerini yeniden seçin)",
4942
4944
  "binaryOutputModality": {
@@ -628,7 +628,7 @@
628
628
  "pipeline_schedule_intake_unconfigured": "Крок збору помилок бере роботу з налаштувань збору звернень у розкладі, а привʼязаний розклад їх не має. Спершу налаштуйте збір звернень у розкладі.",
629
629
  "foundational_service_exists": "Базовий сервіс із цим ідентифікатором уже зареєстровано в цій області. Відкрийте наявний запис і відредагуйте його — два сервіси не можуть мати спільний ідентифікатор, бо саме його архітектор називає у своєму проєкті.",
630
630
  "binary_output_service_invalid": "Крок, що генерує бінарні результати, вибирає базовий сервіс, який каталог цього робочого простору не може розпізнати: ідентифікатор невідомий або вибраний сервіс зберігання не має здатності asset-storage. Виправте вибір у кроці або зареєструйте сервіс і запустіть знову.",
631
- "binary_output_generator_invalid": "Крок, що генерує бінарні результати, вибирає генеративну інтеграцію, якої це розгортання не реєструє, або жодна з вибраних інтеграцій не створює тип вмісту, який крок має надати. Генеративні інтеграції реєструються в коді розгортання, а не в цьому робочому просторі: зареєструйте її або виправте вибір у кроці й запустіть знову.",
631
+ "binary_output_generator_invalid": "Крок, який створює двійкові результати, вибирає генеративну інтеграцію, якої це розгортання не реєструє; жодна з вибраних інтеграцій не створює тип вмісту, який крок має надати; або одну з них створює CLI агента, на якому модель цього кроку не виконується. Генеративні інтеграції реєструються в коді розгортання, а не в цьому робочому просторі: зареєструйте її, виправте вибір кроку або закріпіть за кроком модель, яка виконується на потрібному CLI, і запустіть знову.",
632
632
  "foundational_service_not_inherited": "Вимкнення стосується сервісу, успадкованого від облікового запису. Цей ідентифікатор зареєстровано цією дошкою, тож вимикати нічого - натомість видаліть власний запис дошки.",
633
633
  "input_gate_not_parked": "Цей запуск більше не чекає на перевірку вхідних даних. Можливо, хтось уже відповів, або запуск рушив далі.",
634
634
  "input_gate_parked": "Цей запуск очікує на перевірку вхідних даних, і схвалення її не розвʼязує. Скористайтеся повідомленням на запуску: виправте завдання й перевірте ще раз або запустіть попри це.",
@@ -4937,6 +4937,8 @@
4937
4937
  "binaryOutputMediaTypeUnusable": "Не збережено, бо це не типи медіа: {entries}. Запишіть кожен як type/subtype.",
4938
4938
  "binaryOutputGeneratorMissing": "Ця інсталяція не реєструє ці генеративні інтеграції: {ids}. Їх реєструють у коді інсталяції, а не в цьому робочому просторі.",
4939
4939
  "binaryOutputGeneratorOverlap": "Кілька вибраних інтеграцій створюють той самий тип вмісту ({overlaps}). Нічого поганого в цьому немає, але тип вмісту більше не визначає, яку з них викличе агент: зазначте в промті цього кроку, яку і для чого використовувати, інакше він обере одну й користуватиметься лише нею.",
4940
+ "binaryOutputGeneratorVia": "через {harness}",
4941
+ "binaryOutputGeneratorHarness": "Ці інтеграції створює CLI агента, а не API ({generators}), тому цей крок працює лише з моделлю, яка виконується на цьому CLI. Запуск з іншою моделлю буде відхилено на старті.",
4940
4942
  "binaryOutputModalityUncovered": "Жодна вибрана інтеграція не створює {modalities}, які має надати цей крок.",
4941
4943
  "binaryOutputModalityRetired": "{modality} (більше не пропонується — виберіть типи вмісту цього кроку заново)",
4942
4944
  "binaryOutputModality": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.269.0",
3
+ "version": "0.269.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",
@@ -40,7 +40,7 @@
40
40
  "valibot": "^1.4.2",
41
41
  "vue": "3.5.41",
42
42
  "wretch": "^3.0.9",
43
- "@cat-factory/contracts": "0.305.0"
43
+ "@cat-factory/contracts": "0.306.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",