@axiom-lattice/core 2.1.96 → 2.1.98

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/dist/index.mjs CHANGED
@@ -7088,8 +7088,18 @@ var codeEvalPlugin = {
7088
7088
  description: "Enables safe code execution",
7089
7089
  configSchema: {
7090
7090
  type: "object",
7091
+ title: "Code Evaluation Configuration",
7092
+ description: "Configure code execution sandbox settings",
7093
+ required: ["vmIsolation"],
7091
7094
  properties: {
7092
- vmIsolation: { type: "string" }
7095
+ vmIsolation: {
7096
+ type: "string",
7097
+ title: "VM Isolation",
7098
+ description: "Controls how code execution is isolated between agents and projects",
7099
+ enum: ["global", "agent", "project"],
7100
+ default: "global",
7101
+ widget: "segmented"
7102
+ }
7093
7103
  }
7094
7104
  },
7095
7105
  defaultConfig: { vmIsolation: "global" }
@@ -7138,9 +7148,18 @@ var browserPlugin = {
7138
7148
  description: "Provides browser automation capabilities",
7139
7149
  configSchema: {
7140
7150
  type: "object",
7151
+ title: "Browser Configuration",
7152
+ description: "Configure browser automation settings",
7153
+ required: ["vmIsolation"],
7141
7154
  properties: {
7142
- vmIsolation: { type: "string" },
7143
- headless: { type: "boolean" }
7155
+ vmIsolation: {
7156
+ type: "string",
7157
+ title: "VM Isolation",
7158
+ description: "Controls how browser instances are isolated between agents and projects",
7159
+ enum: ["global", "agent", "project"],
7160
+ default: "agent",
7161
+ widget: "segmented"
7162
+ }
7144
7163
  }
7145
7164
  },
7146
7165
  defaultConfig: { headless: true, vmIsolation: "agent" }
@@ -7186,8 +7205,17 @@ var sqlPlugin = {
7186
7205
  ],
7187
7206
  configSchema: {
7188
7207
  type: "object",
7208
+ title: "SQL Configuration",
7209
+ description: "Configure database connection settings",
7210
+ required: ["databaseKeys"],
7189
7211
  properties: {
7190
- databaseKeys: { type: "array", items: { type: "string" }, widget: "databaseSelect" }
7212
+ databaseKeys: {
7213
+ type: "array",
7214
+ title: "Select Databases",
7215
+ description: "Select databases this agent can access (multi-select from registered databases)",
7216
+ items: { type: "string" },
7217
+ widget: "databaseSelect"
7218
+ }
7191
7219
  }
7192
7220
  },
7193
7221
  defaultConfig: { databaseKeys: [] }
@@ -8201,7 +8229,32 @@ var skillPlugin = {
8201
8229
  meta: {
8202
8230
  type: "skill",
8203
8231
  name: "Skills",
8204
- description: "Provides skill loading capabilities for the agent"
8232
+ description: "Provides skill loading capabilities for the agent",
8233
+ configSchema: {
8234
+ type: "object",
8235
+ title: "Skills Configuration",
8236
+ description: "Configure which skills this agent can use",
8237
+ properties: {
8238
+ readAll: {
8239
+ type: "boolean",
8240
+ title: "Read All Skills",
8241
+ description: "When enabled, the agent will have access to all available skills automatically",
8242
+ default: false,
8243
+ widget: "switch"
8244
+ },
8245
+ skills: {
8246
+ type: "array",
8247
+ title: "Select Skills",
8248
+ description: "Select which skills this agent can use (ignored if 'Read All Skills' is enabled)",
8249
+ items: { type: "string" },
8250
+ widget: "skillSelect"
8251
+ }
8252
+ }
8253
+ },
8254
+ defaultConfig: {
8255
+ readAll: false,
8256
+ skills: []
8257
+ }
8205
8258
  },
8206
8259
  middleware: (cfg) => createSkillMiddleware(cfg)
8207
8260
  };
@@ -9079,8 +9132,18 @@ var filesystemPlugin = {
9079
9132
  description: "Provides file system operations for reading, writing, and managing files",
9080
9133
  configSchema: {
9081
9134
  type: "object",
9135
+ title: "Filesystem Configuration",
9136
+ description: "Configure filesystem isolation and access settings",
9137
+ required: ["vmIsolation"],
9082
9138
  properties: {
9083
- vmIsolation: { type: "string" }
9139
+ vmIsolation: {
9140
+ type: "string",
9141
+ title: "VM Isolation",
9142
+ description: "Controls how filesystem access is isolated between agents and projects",
9143
+ enum: ["global", "agent", "project"],
9144
+ default: "global",
9145
+ widget: "segmented"
9146
+ }
9084
9147
  }
9085
9148
  },
9086
9149
  defaultConfig: { vmIsolation: "global" }
@@ -9137,9 +9200,23 @@ var metricsPlugin = {
9137
9200
  ],
9138
9201
  configSchema: {
9139
9202
  type: "object",
9203
+ title: "Metrics Configuration",
9204
+ description: "Configure metrics server access settings",
9140
9205
  properties: {
9141
- connectAll: { type: "boolean" },
9142
- serverKeys: { type: "array", items: { type: "string" } }
9206
+ connectAll: {
9207
+ type: "boolean",
9208
+ title: "Connect All Servers",
9209
+ description: "When enabled, the agent will connect to all available metrics servers automatically",
9210
+ default: false,
9211
+ widget: "switch"
9212
+ },
9213
+ serverKeys: {
9214
+ type: "array",
9215
+ title: "Select Metrics Servers",
9216
+ description: "Select metrics servers this agent can query (ignored if 'Connect All Servers' is enabled)",
9217
+ items: { type: "string" },
9218
+ widget: "metricsSelect"
9219
+ }
9143
9220
  }
9144
9221
  },
9145
9222
  defaultConfig: { connectAll: false, serverKeys: [] }
@@ -9748,9 +9825,23 @@ var collectionPlugin = {
9748
9825
  ],
9749
9826
  configSchema: {
9750
9827
  type: "object",
9828
+ title: "Collection Configuration",
9829
+ description: "Configure collection access for this agent",
9751
9830
  properties: {
9752
- connectAll: { type: "boolean" },
9753
- collectionKeys: { type: "array", items: { type: "string" } }
9831
+ connectAll: {
9832
+ type: "boolean",
9833
+ title: "Connect All Collections",
9834
+ description: "When enabled, the agent will have access to all collections automatically",
9835
+ default: false,
9836
+ widget: "switch"
9837
+ },
9838
+ collectionKeys: {
9839
+ type: "array",
9840
+ title: "Select Collections",
9841
+ description: "Select which collections this agent can access",
9842
+ items: { type: "string" },
9843
+ widget: "collectionSelect"
9844
+ }
9754
9845
  }
9755
9846
  },
9756
9847
  defaultConfig: { connectAll: false, collectionKeys: [] }
@@ -9767,10 +9858,10 @@ import { tool as tool51 } from "langchain";
9767
9858
  import z54 from "zod";
9768
9859
  var questionSchema = z54.object({
9769
9860
  question: z54.string().describe("The question text to ask the user"),
9770
- options: z54.array(z54.string()).optional().default([]).describe("List of EXACT, selectable values. Maximum 3 options allowed. DO NOT include any 'placeholder' options that require the user to type (e.g., do NOT add 'Enter manual value'). If manual input is needed, set allowOther to true instead. For file_upload questions, pass an empty array."),
9771
- type: z54.enum(["single", "multiple", "file_upload"]).describe("Whether the question allows single selection, multiple selections, or expects a file upload. file_upload questions render a file picker component and the uploaded file path is returned as the answer."),
9861
+ options: z54.array(z54.string()).optional().default([]).describe("List of EXACT, selectable values. Maximum 3 options allowed. DO NOT include placeholder values like 'Other' or 'Enter manually'. For free-text with predefined choices, use allowOther=true (works with 'single' and 'multiple'). For pure free-text without choices, use type='input' instead. For file_upload and input, pass an empty array."),
9862
+ type: z54.enum(["single", "multiple", "file_upload", "input"]).describe("The question format. 'single' = pick one from options (default, see tool description for guidance). 'multiple' = pick several from options. 'input' = free-text field (only when options cannot express the answer). 'file_upload' = file picker."),
9772
9863
  required: z54.boolean().optional().default(false).describe("Whether this question must be answered"),
9773
- allowOther: z54.boolean().optional().default(true).describe("Set to true to append an 'Other' option that opens a free-text input field. Use this for open-ended answers or when the 3 options cannot cover all possibilities.")
9864
+ allowOther: z54.boolean().optional().default(true).describe("Set to true to append an 'Other' checkbox with a free-text input field. Works with 'single' and 'multiple' types. Use for open-ended answers or when the options cannot cover all possibilities. Not applicable for 'input' or 'file_upload' types.")
9774
9865
  });
9775
9866
  var inputSchema = z54.object({
9776
9867
  questions: z54.array(questionSchema).min(1, "At least one question is required").describe("A structured sequence of clarification questions. Use these to gather missing parameters or disambiguate user intent before proceeding.")
@@ -9782,7 +9873,7 @@ function createAskUserToClarifyTool() {
9782
9873
  },
9783
9874
  {
9784
9875
  name: "ask_user_to_clarify",
9785
- description: "Prompts the user to choose from a list of predefined values, provide custom input, or upload a file. USE CASES: 1. Use 'options' ONLY for distinct, mutually exclusive choices (e.g., ['Standard', 'Express']). 2. Set 'allowOther: true' ONLY when you need to capture free-text information that doesn't fit into the predefined options. 3. Use type: 'file_upload' to ask the user to upload a file \u2014 options can be an empty array for this type. IMPORTANT: Never put placeholders like 'Please specify' or 'Other' inside the 'options' list. ",
9876
+ description: "Ask the user clarifying questions using the most appropriate question type. TYPE SELECTION GUIDE (in priority order \u2014 prefer earlier types when possible):\n1. type: 'single' \u2014 DEFAULT for most cases. Use when the user must pick ONE from a known set (e.g., ['Yes', 'No'], ['Standard', 'Express', 'Priority']). Max 3 options. Best UX: click, no typing.\n2. type: 'multiple' \u2014 Use when the user can select SEVERAL from a known set (e.g., ['Email', 'SMS', 'Push']).\n3. type: 'input' \u2014 Use when the answer is purely free-text and CANNOT be enumerated (e.g., name, email, arbitrary description). Only use this when 'single' + options is not feasible.\n4. type: 'file_upload' \u2014 Use ONLY when the user needs to upload a file. Do NOT use for text input.\n\nallowOther: true \u2014 Escape hatch for 'single' and 'multiple' types. Adds an 'Other' checkbox with a text field. Use when the options MIGHT not cover everything. Do NOT set allowOther on 'input' or 'file_upload' types.\n\nANTI-PATTERNS: Never put 'Other' or 'Enter manually' inside the options array. Never use 'input' when 'single' + options would work. Never use 'file_upload' for text input.",
9786
9877
  schema: inputSchema
9787
9878
  }
9788
9879
  );
@@ -9859,7 +9950,11 @@ function createAskUserClarifyMiddleware() {
9859
9950
  parts.push(...answer.selectedOptions ?? []);
9860
9951
  }
9861
9952
  if (answer.otherText && answer.otherText.trim() !== "") {
9862
- parts.push(`Other: ${answer.otherText.trim()}`);
9953
+ if (question.type === "input") {
9954
+ parts.push(answer.otherText.trim());
9955
+ } else {
9956
+ parts.push(`Other: ${answer.otherText.trim()}`);
9957
+ }
9863
9958
  }
9864
9959
  if (answer.filePath && answer.filePath.trim() !== "") {
9865
9960
  parts.push(`File: ${answer.filePath.trim()}`);
@@ -9881,7 +9976,14 @@ var askUserClarifyPlugin = {
9881
9976
  meta: {
9882
9977
  type: "ask_user_to_clarify",
9883
9978
  name: "Ask User To Clarify",
9884
- description: "Enables the agent to ask users clarifying questions"
9979
+ description: "Enables the agent to ask users clarifying questions",
9980
+ configSchema: {
9981
+ type: "object",
9982
+ title: "Ask User To Clarify Configuration",
9983
+ description: "Configure user clarification settings",
9984
+ properties: {}
9985
+ },
9986
+ defaultConfig: {}
9885
9987
  },
9886
9988
  middleware: () => createAskUserClarifyMiddleware()
9887
9989
  };
@@ -10779,7 +10881,14 @@ var widgetPlugin = {
10779
10881
  meta: {
10780
10882
  type: "widget",
10781
10883
  name: "Widget",
10782
- description: "Enables the agent to render interactive HTML widgets"
10884
+ description: "Enables the agent to render interactive HTML widgets",
10885
+ configSchema: {
10886
+ type: "object",
10887
+ title: "Widget Configuration",
10888
+ description: "Configure widget rendering capabilities (zero configuration required)",
10889
+ properties: {}
10890
+ },
10891
+ defaultConfig: {}
10783
10892
  },
10784
10893
  middleware: () => createWidgetMiddleware()
10785
10894
  };
@@ -11402,7 +11511,24 @@ var clawPlugin = {
11402
11511
  meta: {
11403
11512
  type: "claw",
11404
11513
  name: "Memory",
11405
- description: "Injects and manages memory/bootstrap files in the runtime workspace"
11514
+ description: "Injects and manages memory/bootstrap files in the runtime workspace",
11515
+ configSchema: {
11516
+ type: "object",
11517
+ title: "Memory Configuration",
11518
+ description: "Configure bootstrap file injection behavior",
11519
+ properties: {
11520
+ injectBootstrapFiles: {
11521
+ type: "boolean",
11522
+ title: "Inject Bootstrap Files",
11523
+ description: "Automatically inject default bootstrap files into the workspace context",
11524
+ default: true,
11525
+ widget: "switch"
11526
+ }
11527
+ }
11528
+ },
11529
+ defaultConfig: {
11530
+ injectBootstrapFiles: true
11531
+ }
11406
11532
  },
11407
11533
  middleware: (cfg) => createClawMiddleware(cfg)
11408
11534
  };
@@ -11598,7 +11724,46 @@ var datePlugin = {
11598
11724
  meta: {
11599
11725
  type: "date",
11600
11726
  name: "Current Date",
11601
- description: "Injects the current date into the agent system prompt"
11727
+ description: "Injects the current date into the agent system prompt",
11728
+ configSchema: {
11729
+ type: "object",
11730
+ title: "Date Configuration",
11731
+ description: "Configure timezone for the current date",
11732
+ properties: {
11733
+ timezone: {
11734
+ type: "string",
11735
+ title: "Timezone",
11736
+ description: "Select timezone for displaying the current date",
11737
+ default: "UTC",
11738
+ enumLabels: {
11739
+ "UTC": "UTC (Coordinated Universal Time)",
11740
+ "America/New_York": "New York (EST/EDT)",
11741
+ "America/Chicago": "Chicago (CST/CDT)",
11742
+ "America/Denver": "Denver (MST/MDT)",
11743
+ "America/Los_Angeles": "Los Angeles (PST/PDT)",
11744
+ "America/Toronto": "Toronto (EST/EDT)",
11745
+ "America/Sao_Paulo": "S\xE3o Paulo (BRT)",
11746
+ "Europe/London": "London (GMT/BST)",
11747
+ "Europe/Paris": "Paris (CET/CEST)",
11748
+ "Europe/Berlin": "Berlin (CET/CEST)",
11749
+ "Europe/Moscow": "Moscow (MSK)",
11750
+ "Asia/Dubai": "Dubai (GST)",
11751
+ "Asia/Kolkata": "Kolkata (IST)",
11752
+ "Asia/Shanghai": "Shanghai (CST)",
11753
+ "Asia/Hong_Kong": "Hong Kong (HKT)",
11754
+ "Asia/Singapore": "Singapore (SGT)",
11755
+ "Asia/Tokyo": "Tokyo (JST)",
11756
+ "Asia/Seoul": "Seoul (KST)",
11757
+ "Australia/Sydney": "Sydney (AEDT/AEST)",
11758
+ "Pacific/Auckland": "Auckland (NZDT/NZST)"
11759
+ },
11760
+ widget: "select"
11761
+ }
11762
+ }
11763
+ },
11764
+ defaultConfig: {
11765
+ timezone: "UTC"
11766
+ }
11602
11767
  },
11603
11768
  middleware: (cfg) => createDateMiddleware(cfg)
11604
11769
  };
@@ -14622,7 +14787,25 @@ var schedulerPlugin = {
14622
14787
  meta: {
14623
14788
  type: "scheduler",
14624
14789
  name: "Scheduler",
14625
- description: "Enables the agent to schedule future work"
14790
+ description: "Enables the agent to schedule future work",
14791
+ configSchema: {
14792
+ type: "object",
14793
+ title: "Scheduler Configuration",
14794
+ description: "Configure retry behavior for scheduled tasks",
14795
+ properties: {
14796
+ defaultMaxRetries: {
14797
+ type: "integer",
14798
+ title: "Default Max Retries",
14799
+ description: "Default retry count for scheduled tasks created through the middleware",
14800
+ default: 0,
14801
+ minimum: 0,
14802
+ widget: "numberInput"
14803
+ }
14804
+ }
14805
+ },
14806
+ defaultConfig: {
14807
+ defaultMaxRetries: 0
14808
+ }
14626
14809
  },
14627
14810
  middleware: (cfg) => createSchedulerMiddleware(cfg)
14628
14811
  };
@@ -14762,7 +14945,14 @@ var taskPlugin = {
14762
14945
  meta: {
14763
14946
  type: "task",
14764
14947
  name: "Task Management",
14765
- description: "Enables persistent task management with delegation and tracking"
14948
+ description: "Enables persistent task management with delegation and tracking",
14949
+ configSchema: {
14950
+ type: "object",
14951
+ title: "Task Management Configuration",
14952
+ description: "Zero-configuration task management",
14953
+ properties: {}
14954
+ },
14955
+ defaultConfig: {}
14766
14956
  },
14767
14957
  middleware: () => createTaskMiddleware()
14768
14958
  };
@@ -15760,17 +15950,17 @@ function getAsyncPromptText() {
15760
15950
 
15761
15951
  ## Async Task Usage
15762
15952
 
15763
- When tasks are independent and can run in parallel, use \`async: true\` to launch
15764
- background tasks. The task returns immediately with a task ID.
15953
+ **IMPORTANT: Only use \`async: true\` when the USER explicitly requests it.** Do NOT set \`async: true\` on your own initiative, even if tasks appear independent or parallelizable. The user must explicitly ask for background/async execution, for example: "run this in the background", "do this asynchronously", "fire and forget", or "let me know when it's done".
15954
+
15955
+ If the user does NOT explicitly request async execution, always use \`async: false\` (the default) so the task runs synchronously and the result is available immediately.
15765
15956
 
15766
- CRITICAL: After launching with \`async: true\`, move on immediately.
15767
- - NEVER call check_async_task or list_async_tasks right after starting a task.
15957
+ When \`async: true\` IS explicitly requested by the user:
15958
+ - The task returns immediately with a task ID.
15959
+ - Move on immediately after launching. NEVER call check_async_task or list_async_tasks right after starting a task.
15768
15960
  - NEVER poll for task completion. The result will arrive as a notification.
15769
15961
  - Only check task status when the USER explicitly asks for an update.
15770
- - If you receive an [Async task completed] notification, read it and incorporate
15771
- the result into your next response. Do not then call check_async_task repeatedly.
15772
- - Task statuses in conversation history are stale \u2014 always use fresh tool calls
15773
- when the user asks.
15962
+ - If you receive an [Async task completed] notification, read it and incorporate the result into your next response. Do not then call check_async_task repeatedly.
15963
+ - Task statuses in conversation history are stale \u2014 always use fresh tool calls when the user asks.
15774
15964
  - Use cancel_async_task if the user wants to stop a running task.
15775
15965
  - Keep the full task_id: never truncate or abbreviate it.`;
15776
15966
  }
@@ -21662,7 +21852,10 @@ registerToolLattice(
21662
21852
  },
21663
21853
  async (input, exeConfig) => {
21664
21854
  try {
21665
- const tenantId = getTenantId(exeConfig);
21855
+ const parentRunConfig = exeConfig?.configurable?.runConfig || {};
21856
+ const tenantId = parentRunConfig.tenantId || "default";
21857
+ const workspaceId = parentRunConfig.workspaceId;
21858
+ const projectId = parentRunConfig.projectId;
21666
21859
  const { id, message } = input;
21667
21860
  const store = getAssistStore();
21668
21861
  const existing = await store.getAssistantById(tenantId, id);
@@ -21673,7 +21866,9 @@ registerToolLattice(
21673
21866
  const agent = new Agent({
21674
21867
  tenant_id: tenantId,
21675
21868
  assistant_id: id,
21676
- thread_id: threadId
21869
+ thread_id: threadId,
21870
+ workspace_id: workspaceId,
21871
+ project_id: projectId
21677
21872
  });
21678
21873
  const result = await agent.invokeWithState({ input: { message } });
21679
21874
  return JSON.stringify({ agentId: id, threadId, result });