diff --git a/cypress/e2e/16-form-trigger-node.cy.ts b/cypress/e2e/16-form-trigger-node.cy.ts
index 60fbd7c419586..ed901107ea60e 100644
--- a/cypress/e2e/16-form-trigger-node.cy.ts
+++ b/cypress/e2e/16-form-trigger-node.cy.ts
@@ -44,8 +44,7 @@ describe('n8n Form Trigger', () => {
':nth-child(3) > .border-top-dashed > .parameter-input-list-wrapper > :nth-child(1) > .parameter-item',
)
.find('input[placeholder*="e.g. What is your name?"]')
- .type('Test Field 3')
- .blur();
+ .type('Test Field 3');
cy.get(
':nth-child(3) > .border-top-dashed > .parameter-input-list-wrapper > :nth-child(2) > .parameter-item',
).click();
@@ -56,27 +55,24 @@ describe('n8n Form Trigger', () => {
':nth-child(4) > .border-top-dashed > .parameter-input-list-wrapper > :nth-child(1) > .parameter-item',
)
.find('input[placeholder*="e.g. What is your name?"]')
- .type('Test Field 4')
- .blur();
+ .type('Test Field 4');
cy.get(
':nth-child(4) > .border-top-dashed > .parameter-input-list-wrapper > :nth-child(2) > .parameter-item',
).click();
getVisibleSelect().contains('Dropdown').click();
- cy.get(
- '.border-top-dashed > :nth-child(2) > :nth-child(3) > .multi-parameter > .fixed-collection-parameter > :nth-child(2) > .button',
- ).click();
- cy.get(
- ':nth-child(4) > :nth-child(1) > :nth-child(2) > :nth-child(3) > .multi-parameter > .fixed-collection-parameter > .fixed-collection-parameter-property > :nth-child(1) > :nth-child(1)',
- )
- .find('input')
- .type('Option 1')
- .blur();
- cy.get(
- ':nth-child(4) > :nth-child(1) > :nth-child(2) > :nth-child(3) > .multi-parameter > .fixed-collection-parameter > .fixed-collection-parameter-property > :nth-child(1) > :nth-child(2)',
- )
- .find('input')
- .type('Option 2')
- .blur();
+ cy.contains('button', 'Add Field Option').click();
+ cy.contains('label', 'Field Options')
+ .parent()
+ .nextAll()
+ .find('[data-test-id="parameter-input-field"]')
+ .eq(0)
+ .type('Option 1');
+ cy.contains('label', 'Field Options')
+ .parent()
+ .nextAll()
+ .find('[data-test-id="parameter-input-field"]')
+ .eq(1)
+ .type('Option 2');
//add optional submitted message
cy.get('.param-options').click();
@@ -94,7 +90,6 @@ describe('n8n Form Trigger', () => {
.children()
.children()
.first()
- .clear()
.type('Your test form was successfully submitted');
ndv.getters.backToCanvas().click();
diff --git a/cypress/e2e/5-ndv.cy.ts b/cypress/e2e/5-ndv.cy.ts
index e8215db38f345..8bad4245544c0 100644
--- a/cypress/e2e/5-ndv.cy.ts
+++ b/cypress/e2e/5-ndv.cy.ts
@@ -65,26 +65,6 @@ describe('NDV', () => {
cy.shouldNotHaveConsoleErrors();
});
- it('should disconect Switch outputs if rules order was changed', () => {
- cy.createFixtureWorkflow('NDV-test-switch_reorder.json', 'NDV test switch reorder');
- workflowPage.actions.zoomToFit();
-
- workflowPage.actions.executeWorkflow();
- workflowPage.actions.openNode('Merge');
- ndv.getters.outputPanel().contains('2 items').should('exist');
- cy.contains('span', 'first').should('exist');
- ndv.getters.backToCanvas().click();
-
- workflowPage.actions.openNode('Switch');
- cy.get('.cm-line').realMouseMove(100, 100);
- cy.get('.fa-angle-down').first().click();
- ndv.getters.backToCanvas().click();
- workflowPage.actions.executeWorkflow();
- workflowPage.actions.openNode('Merge');
- ndv.getters.outputPanel().contains('2 items').should('exist');
- cy.contains('span', 'zero').should('exist');
- });
-
it('should show correct validation state for resource locator params', () => {
workflowPage.actions.addNodeToCanvas('Typeform', true, true);
ndv.getters.container().should('be.visible');
diff --git a/packages/design-system/src/css/_tokens.dark.scss b/packages/design-system/src/css/_tokens.dark.scss
index a3fc653550f1a..4390bc1da81cb 100644
--- a/packages/design-system/src/css/_tokens.dark.scss
+++ b/packages/design-system/src/css/_tokens.dark.scss
@@ -462,6 +462,9 @@
--color-configurable-node-name: var(--color-text-dark);
--color-secondary-link: var(--prim-color-secondary-tint-200);
--color-secondary-link-hover: var(--prim-color-secondary-tint-100);
+ //Params
+ --color-icon-base: var(--color-text-light);
+ --color-icon-hover: var(--prim-color-primary);
--color-menu-background: var(--prim-gray-740);
--color-menu-hover-background: var(--prim-gray-670);
diff --git a/packages/design-system/src/css/_tokens.scss b/packages/design-system/src/css/_tokens.scss
index b8f3049cf2eaf..944652e43e3bc 100644
--- a/packages/design-system/src/css/_tokens.scss
+++ b/packages/design-system/src/css/_tokens.scss
@@ -621,6 +621,10 @@
--spacing-3xl: 4rem;
--spacing-4xl: 8rem;
--spacing-5xl: 16rem;
+
+ //Params
+ --color-icon-base: var(--color-text-light);
+ --color-icon-hover: var(--prim-color-primary);
}
:root {
diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json
index 3cf113d98fc0d..68b13e13f492d 100644
--- a/packages/editor-ui/package.json
+++ b/packages/editor-ui/package.json
@@ -82,6 +82,7 @@
"vue-router": "catalog:frontend",
"vue-virtual-scroller": "2.0.0-beta.8",
"vue3-touch-events": "^4.1.3",
+ "vuedraggable": "4.1.0",
"xss": "catalog:"
},
"devDependencies": {
diff --git a/packages/editor-ui/src/components/AssignmentCollection/Assignment.vue b/packages/editor-ui/src/components/AssignmentCollection/Assignment.vue
index 7240dac1e2c11..614ae3f590071 100644
--- a/packages/editor-ui/src/components/AssignmentCollection/Assignment.vue
+++ b/packages/editor-ui/src/components/AssignmentCollection/Assignment.vue
@@ -152,6 +152,14 @@ const onBlur = (): void => {
}"
data-test-id="assignment"
>
+
{
size="mini"
icon="trash"
data-test-id="assignment-remove"
- :class="$style.remove"
+ :class="[$style.iconButton, $style.extraTopPadding]"
@click="onRemove"
>
@@ -241,7 +249,7 @@ const onBlur = (): void => {
}
&:hover {
- .remove {
+ .iconButton {
opacity: 1;
}
}
@@ -269,12 +277,19 @@ const onBlur = (): void => {
}
}
-.remove {
+.iconButton {
position: absolute;
left: 0;
- top: var(--spacing-l);
opacity: 0;
transition: opacity 100ms ease-in;
+ color: var(--icon-base-color);
+}
+.extraTopPadding {
+ top: calc(20px + var(--spacing-l));
+}
+
+.defaultTopPadding {
+ top: var(--spacing-l);
}
.status {
diff --git a/packages/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue b/packages/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue
index 24545bd7b9085..0aebc16bb64fe 100644
--- a/packages/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue
+++ b/packages/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue
@@ -15,6 +15,7 @@ import ParameterOptions from '../ParameterOptions.vue';
import Assignment from './Assignment.vue';
import { inputDataToAssignments, typeFromExpression } from './utils';
import { propertyNameFromExpression } from '@/utils/mappingUtils';
+import Draggable from 'vuedraggable';
interface Props {
parameter: INodeProperties;
@@ -133,19 +134,27 @@ function optionSelected(action: string) {
-
-
onAssignmentUpdate(index, value)"
- @remove="() => onAssignmentRemove(index)"
- >
-
-
+
+
+ onAssignmentUpdate(index, value)"
+ @remove="() => onAssignmentRemove(index)"
+ >
+
+
+
diff --git a/packages/editor-ui/src/components/FilterConditions/Condition.vue b/packages/editor-ui/src/components/FilterConditions/Condition.vue
index 316b6827fac93..be4d02224c2e7 100644
--- a/packages/editor-ui/src/components/FilterConditions/Condition.vue
+++ b/packages/editor-ui/src/components/FilterConditions/Condition.vue
@@ -33,6 +33,7 @@ interface Props {
canRemove?: boolean;
readOnly?: boolean;
index?: number;
+ canDrag?: boolean;
}
const props = withDefaults(defineProps
(), {
@@ -41,6 +42,7 @@ const props = withDefaults(defineProps(), {
fixedLeftValue: false,
readOnly: false,
index: 0,
+ canDrag: true,
});
const emit = defineEmits<{
@@ -152,6 +154,15 @@ const onBlur = (): void => {
}"
data-test-id="filter-condition"
>
+
{
icon="trash"
data-test-id="filter-remove-condition"
:title="i18n.baseText('filter.removeCondition')"
- :class="$style.remove"
+ :class="[$style.iconButton, $style.extraTopPadding]"
@click="onRemove"
>
@@ -248,7 +259,7 @@ const onBlur = (): void => {
}
&:hover {
- .remove {
+ .iconButton {
opacity: 1;
}
}
@@ -261,13 +272,21 @@ const onBlur = (): void => {
.statusIcon {
padding-left: var(--spacing-4xs);
+ padding-right: var(--spacing-4xs);
}
-.remove {
+.iconButton {
position: absolute;
left: 0;
- top: var(--spacing-l);
opacity: 0;
transition: opacity 100ms ease-in;
+ color: var(--icon-base-color);
+}
+
+.defaultTopPadding {
+ top: var(--spacing-m);
+}
+.extraTopPadding {
+ top: calc(14px + var(--spacing-m));
}
diff --git a/packages/editor-ui/src/components/FilterConditions/FilterConditions.vue b/packages/editor-ui/src/components/FilterConditions/FilterConditions.vue
index 6b58fb4290be5..41ef0f7430ce8 100644
--- a/packages/editor-ui/src/components/FilterConditions/FilterConditions.vue
+++ b/packages/editor-ui/src/components/FilterConditions/FilterConditions.vue
@@ -23,6 +23,7 @@ import Condition from './Condition.vue';
import CombinatorSelect from './CombinatorSelect.vue';
import { resolveParameter } from '@/composables/useWorkflowHelpers';
import { v4 as uuid } from 'uuid';
+import Draggable from 'vuedraggable';
interface Props {
parameter: INodeProperties;
@@ -161,30 +162,41 @@ function getIssues(index: number): string[] {
-
-
-
- onConditionUpdate(index, value)"
- @remove="() => onConditionRemove(index)"
- >
-
+
+
+
+
+
+ onConditionUpdate(index, value)"
+ @remove="() => onConditionRemove(index)"
+ >
+
+
+
.combinator {
+ display: none;
+}
diff --git a/packages/editor-ui/src/components/FixedCollectionParameter.vue b/packages/editor-ui/src/components/FixedCollectionParameter.vue
index de7359dfddb9a..59eacfdb100e6 100644
--- a/packages/editor-ui/src/components/FixedCollectionParameter.vue
+++ b/packages/editor-ui/src/components/FixedCollectionParameter.vue
@@ -17,6 +17,7 @@ import {
N8nButton,
} from 'n8n-design-system';
import ParameterInputList from './ParameterInputList.vue';
+import Draggable from 'vuedraggable';
const locale = useI18n();
@@ -126,42 +127,6 @@ const getOptionProperties = (optionName: string) => {
return undefined;
};
-const moveOptionDown = (optionName: string, index: number) => {
- if (Array.isArray(mutableValues.value[optionName])) {
- mutableValues.value[optionName].splice(
- index + 1,
- 0,
- mutableValues.value[optionName].splice(index, 1)[0],
- );
- }
-
- const parameterData: ValueChangedEvent = {
- name: getPropertyPath(optionName),
- value: mutableValues.value[optionName],
- type: 'optionsOrderChanged',
- };
-
- emit('valueChanged', parameterData);
-};
-
-const moveOptionUp = (optionName: string, index: number) => {
- if (Array.isArray(mutableValues.value[optionName])) {
- mutableValues.value?.[optionName].splice(
- index - 1,
- 0,
- mutableValues.value[optionName].splice(index, 1)[0],
- );
- }
-
- const parameterData: ValueChangedEvent = {
- name: getPropertyPath(optionName),
- value: mutableValues.value[optionName],
- type: 'optionsOrderChanged',
- };
-
- emit('valueChanged', parameterData);
-};
-
const optionSelected = (optionName: string) => {
const option = getOptionProperties(optionName);
if (option === undefined) {
@@ -219,6 +184,15 @@ const optionSelected = (optionName: string) => {
const valueChanged = (parameterData: IUpdateInformation) => {
emit('valueChanged', parameterData);
};
+const onDragChange = (optionName: string) => {
+ const parameterData: ValueChangedEvent = {
+ name: getPropertyPath(optionName),
+ value: mutableValues.value[optionName],
+ type: 'optionsOrderChanged',
+ };
+
+ emit('valueChanged', parameterData);
+};
@@ -246,59 +220,61 @@ const valueChanged = (parameterData: IUpdateInformation) => {
color="text-dark"
/>
-
-
+
{
.fixed-collection-parameter {
padding-left: var(--spacing-s);
- .delete-option {
+ .icon-button {
display: flex;
flex-direction: column;
}
@@ -390,21 +366,36 @@ const valueChanged = (parameterData: IUpdateInformation) => {
.fixed-collection-parameter-property {
margin: var(--spacing-xs) 0;
+ margin-bottom: 0;
}
-.parameter-item:hover > .parameter-item-wrapper > .delete-option {
+.parameter-item:hover > .parameter-item-wrapper > .icon-button {
opacity: 1;
}
.parameter-item {
position: relative;
- padding: 0 0 0 1em;
+ padding: 0 0 var(--spacing-s) var(--spacing-s);
+ .parameter-item {
.parameter-item-wrapper {
- .delete-option {
- top: 14px;
+ .default-top-padding {
+ top: calc(1.2 * var(--spacing-s));
}
+ .extra-top-padding {
+ top: calc(2.2 * var(--spacing-s));
+ }
+ }
+ }
+}
+
+.parameter-item:first-of-type {
+ .parameter-item-wrapper {
+ .default-top-padding {
+ top: var(--spacing-3xs);
+ }
+ .extra-top-padding {
+ top: var(--spacing-l);
}
}
}
@@ -416,4 +407,20 @@ const valueChanged = (parameterData: IUpdateInformation) => {
.no-items-exist {
margin: var(--spacing-xs) 0;
}
+.ghost,
+.dragging {
+ border-radius: var(--border-radius-base);
+ padding-right: var(--spacing-xs);
+}
+.ghost {
+ background-color: var(--color-background-base);
+ opacity: 0.5;
+}
+.dragging {
+ background-color: var(--color-background-xlight);
+ .parameter-item-wrapper {
+ border: none;
+ }
+ opacity: 0.7;
+}
diff --git a/packages/editor-ui/src/components/ParameterInputList.vue b/packages/editor-ui/src/components/ParameterInputList.vue
index 91249fbafba45..3b7bde2df653f 100644
--- a/packages/editor-ui/src/components/ParameterInputList.vue
+++ b/packages/editor-ui/src/components/ParameterInputList.vue
@@ -531,16 +531,6 @@ function getParameterValue
-
{{ i18n.baseText('parameterInputList.loadingError') }}
+
@@ -650,12 +650,18 @@ function getParameterValue
.parameter-input-list-wrapper {
- .delete-option {
+ .icon-button {
position: absolute;
opacity: 0;
top: 0;
- left: calc(-1 * var(--spacing-2xs));
+ left: calc(-0.5 * var(--spacing-2xs));
transition: opacity 100ms ease-in;
+ Button {
+ color: var(--color-icon-base);
+ }
+ }
+ .icon-button > Button:hover {
+ color: var(--color-icon-hover);
}
.indent > div {
@@ -675,8 +681,8 @@ function getParameterValue .delete-option,
- .multi-parameter:hover > .delete-option {
+ .parameter-item:hover > .icon-button,
+ .multi-parameter:hover > .icon-button {
opacity: 1;
}
diff --git a/packages/editor-ui/src/plugins/i18n/locales/en.json b/packages/editor-ui/src/plugins/i18n/locales/en.json
index b47906f28d612..d7dd178d93f47 100644
--- a/packages/editor-ui/src/plugins/i18n/locales/en.json
+++ b/packages/editor-ui/src/plugins/i18n/locales/en.json
@@ -856,6 +856,7 @@
"fixedCollectionParameter.choose": "Choose...",
"fixedCollectionParameter.currentlyNoItemsExist": "Currently no items exist",
"fixedCollectionParameter.deleteItem": "Delete item",
+ "fixedCollectionParameter.dragItem": "Drag item",
"fixedCollectionParameter.moveDown": "Move down",
"fixedCollectionParameter.moveUp": "Move up",
"forgotPassword": "Forgot my password",
@@ -2706,6 +2707,7 @@
"filter.combinator.and": "AND",
"filter.addCondition": "Add condition",
"filter.removeCondition": "Remove condition",
+ "filter.dragCondition": "Drag condition",
"filter.maxConditions": "Maximum conditions reached",
"filter.condition.resolvedTrue": "This condition is true for the first input item",
"filter.condition.resolvedFalse": "This condition is false for the first input item",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5744a83fb2a53..07e4f3faa68cd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -283,7 +283,7 @@ importers:
version: 4.0.7
axios:
specifier: 'catalog:'
- version: 1.7.4
+ version: 1.7.4(debug@4.3.7)
dotenv:
specifier: 8.6.0
version: 8.6.0
@@ -354,7 +354,7 @@ importers:
dependencies:
axios:
specifier: 'catalog:'
- version: 1.7.4
+ version: 1.7.4(debug@4.3.7)
packages/@n8n/codemirror-lang:
dependencies:
@@ -428,7 +428,7 @@ importers:
version: 3.666.0(@aws-sdk/client-sts@3.666.0)
'@getzep/zep-cloud':
specifier: 1.0.12
- version: 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu))
+ version: 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i))
'@getzep/zep-js':
specifier: 0.9.0
version: 0.9.0
@@ -455,7 +455,7 @@ importers:
version: 0.3.1(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
'@langchain/community':
specifier: 0.3.15
- version: 0.3.15(vc5hvyy27o4cmm4jplsptc2fqm)
+ version: 0.3.15(v4qhcw25bevfr6xzz4fnsvjiqe)
'@langchain/core':
specifier: 'catalog:'
version: 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
@@ -542,7 +542,7 @@ importers:
version: 23.0.1
langchain:
specifier: 0.3.6
- version: 0.3.6(e4rnrwhosnp2xiru36mqgdy2bu)
+ version: 0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i)
lodash:
specifier: 'catalog:'
version: 4.17.21
@@ -801,7 +801,7 @@ importers:
version: 1.11.0
axios:
specifier: 'catalog:'
- version: 1.7.4
+ version: 1.7.4(debug@4.3.7)
bcryptjs:
specifier: 2.4.3
version: 2.4.3
@@ -1135,7 +1135,7 @@ importers:
version: 1.11.0
axios:
specifier: 'catalog:'
- version: 1.7.4
+ version: 1.7.4(debug@4.3.7)
chardet:
specifier: 2.0.0
version: 2.0.0
@@ -1431,7 +1431,7 @@ importers:
version: 10.11.0(vue@3.5.13(typescript@5.7.2))
axios:
specifier: 'catalog:'
- version: 1.7.4
+ version: 1.7.4(debug@4.3.7)
bowser:
specifier: 2.11.0
version: 2.11.0
@@ -1534,6 +1534,9 @@ importers:
vue3-touch-events:
specifier: ^4.1.3
version: 4.1.3
+ vuedraggable:
+ specifier: 4.1.0
+ version: 4.1.0(vue@3.5.13(typescript@5.7.2))
xss:
specifier: 'catalog:'
version: 1.0.15
@@ -1926,7 +1929,7 @@ importers:
version: 0.15.2
axios:
specifier: 'catalog:'
- version: 1.7.4
+ version: 1.7.4(debug@4.3.7)
callsites:
specifier: 3.1.0
version: 3.1.0
@@ -11834,6 +11837,9 @@ packages:
resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+ sortablejs@1.14.0:
+ resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==}
+
source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
@@ -13059,6 +13065,11 @@ packages:
typescript:
optional: true
+ vuedraggable@4.1.0:
+ resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==}
+ peerDependencies:
+ vue: ^3.0.1
+
w3c-keyname@2.2.6:
resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==}
@@ -15652,7 +15663,7 @@ snapshots:
'@gar/promisify@1.1.3':
optional: true
- '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu))':
+ '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i))':
dependencies:
form-data: 4.0.0
node-fetch: 2.7.0(encoding@0.1.13)
@@ -15661,7 +15672,7 @@ snapshots:
zod: 3.23.8
optionalDependencies:
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
- langchain: 0.3.6(e4rnrwhosnp2xiru36mqgdy2bu)
+ langchain: 0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i)
transitivePeerDependencies:
- encoding
@@ -16125,7 +16136,7 @@ snapshots:
- aws-crt
- encoding
- '@langchain/community@0.3.15(vc5hvyy27o4cmm4jplsptc2fqm)':
+ '@langchain/community@0.3.15(v4qhcw25bevfr6xzz4fnsvjiqe)':
dependencies:
'@ibm-cloud/watsonx-ai': 1.1.2
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
@@ -16135,7 +16146,7 @@ snapshots:
flat: 5.0.2
ibm-cloud-sdk-core: 5.1.0
js-yaml: 4.1.0
- langchain: 0.3.6(e4rnrwhosnp2xiru36mqgdy2bu)
+ langchain: 0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i)
langsmith: 0.2.3(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
uuid: 10.0.0
zod: 3.23.8
@@ -16148,7 +16159,7 @@ snapshots:
'@aws-sdk/client-s3': 3.666.0
'@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)
'@azure/storage-blob': 12.18.0(encoding@0.1.13)
- '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu))
+ '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i))
'@getzep/zep-js': 0.9.0
'@google-ai/generativelanguage': 2.6.0(encoding@0.1.13)
'@google-cloud/storage': 7.12.1(encoding@0.1.13)
@@ -17159,7 +17170,7 @@ snapshots:
'@rudderstack/rudder-sdk-node@2.0.9(tslib@2.6.2)':
dependencies:
- axios: 1.7.4
+ axios: 1.7.4(debug@4.3.7)
axios-retry: 3.7.0
component-type: 1.2.1
join-component: 1.1.0
@@ -19456,7 +19467,7 @@ snapshots:
'@babel/runtime': 7.24.7
is-retry-allowed: 2.2.0
- axios@1.7.4:
+ axios@1.7.4(debug@4.3.7):
dependencies:
follow-redirects: 1.15.6(debug@4.3.6)
form-data: 4.0.0
@@ -19464,9 +19475,9 @@ snapshots:
transitivePeerDependencies:
- debug
- axios@1.7.4(debug@4.3.7):
+ axios@1.7.7:
dependencies:
- follow-redirects: 1.15.6(debug@4.3.7)
+ follow-redirects: 1.15.6(debug@4.3.6)
form-data: 4.0.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
@@ -23332,7 +23343,7 @@ snapshots:
kuler@2.0.0: {}
- langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu):
+ langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i):
dependencies:
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
'@langchain/openai': 0.3.14(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
@@ -23356,7 +23367,7 @@ snapshots:
'@langchain/groq': 0.1.2(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
'@langchain/mistralai': 0.2.0(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))
'@langchain/ollama': 0.1.2(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))
- axios: 1.7.4
+ axios: 1.7.4(debug@4.3.7)
cheerio: 1.0.0
handlebars: 4.7.8
transitivePeerDependencies:
@@ -26189,6 +26200,8 @@ snapshots:
smart-buffer: 4.2.0
optional: true
+ sortablejs@1.14.0: {}
+
source-map-js@1.2.0: {}
source-map-js@1.2.1: {}
@@ -27476,6 +27489,11 @@ snapshots:
optionalDependencies:
typescript: 5.7.2
+ vuedraggable@4.1.0(vue@3.5.13(typescript@5.7.2)):
+ dependencies:
+ sortablejs: 1.14.0
+ vue: 3.5.13(typescript@5.7.2)
+
w3c-keyname@2.2.6: {}
w3c-xmlserializer@3.0.0: