@theia/ai-core 1.72.0-next.45 → 1.72.0-next.46

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.
@@ -1,5 +1,5 @@
1
1
  import { MaybePromise } from '@theia/core';
2
- import { AIVariable, AIVariableArg, AIVariableContext, AIVariableContribution, AIVariableResolutionRequest, AIVariableResolverWithVariableDependencies, AIVariableService, ResolvedAIVariable, AgentService, AgentsVariableContribution } from '../common';
2
+ import { AIVariable, AIVariableArg, AIVariableContext, AIVariableContribution, AIVariableResolutionRequest, AIVariableResolverWithVariableDependencies, AIVariableService, ResolvedAIVariable, AgentService, AgentsVariableContribution, ToolInvocationRegistry } from '../common';
3
3
  import { PromptVariableContribution } from './prompt-variable-contribution';
4
4
  import { SkillService } from './skill-service';
5
5
  import { SkillsVariableContribution } from './skills-variable-contribution';
@@ -24,6 +24,7 @@ export declare class GenericCapabilitiesVariableContribution implements AIVariab
24
24
  protected readonly variableService: AIVariableService | undefined;
25
25
  protected readonly agentService: AgentService | undefined;
26
26
  protected readonly agentsContribution: AgentsVariableContribution | undefined;
27
+ protected readonly toolInvocationRegistry: ToolInvocationRegistry | undefined;
27
28
  protected readonly promptContribution: PromptVariableContribution | undefined;
28
29
  registerVariables(service: AIVariableService): void;
29
30
  canResolve(request: AIVariableResolutionRequest, _context: AIVariableContext): MaybePromise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"generic-capabilities-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/generic-capabilities-variable-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-capabilities-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/generic-capabilities-variable-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACH,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,0CAA0C,EAC1C,iBAAiB,EACjB,kBAAkB,EAElB,YAAY,EACZ,0BAA0B,EAC1B,sBAAsB,EACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,UAItC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,UAI7C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,UAIzC,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,UAIhD,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,UAIhD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,UAIzC,CAAC;AAWF;;;;GAIG;AACH,qBACa,uCAAwC,YAAW,sBAAsB,EAAE,0CAA0C;IAG9H,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAG9E,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAG9E,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAG9E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAE9E,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMnD,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IAO7F,OAAO,CACT,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,iBAAiB,EAC1B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,GACzF,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAyB1C;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,kBAAkB;IAYzG;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,kBAAkB;IAkB/G;;OAEG;cACa,8BAA8B,CAC1C,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,OAAO,EAAE,iBAAiB,EAC1B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,GACzF,OAAO,CAAC,kBAAkB,CAAC;IAQ9B;;OAEG;IACH,SAAS,CAAC,8BAA8B,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,kBAAkB;IAalH;;OAEG;cACa,wBAAwB,CACpC,QAAQ,EAAE,UAAU,EACpB,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,EACnC,OAAO,EAAE,iBAAiB,EAC1B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,GACzF,OAAO,CAAC,kBAAkB,CAAC;CAgCjC"}
@@ -120,11 +120,17 @@ let GenericCapabilitiesVariableContribution = class GenericCapabilitiesVariableC
120
120
  * The chat request parser will pick these up and add them to the toolRequests map.
121
121
  */
122
122
  resolveSelectedFunctions(variable, functionIds) {
123
- if (!functionIds || functionIds.length === 0) {
123
+ if (!functionIds || functionIds.length === 0 || !this.toolInvocationRegistry) {
124
+ return { variable, value: '' };
125
+ }
126
+ // Filter out stale/orphaned tool IDs that no longer exist in the registry
127
+ const validIds = functionIds
128
+ .filter(id => this.toolInvocationRegistry.getFunction(id) !== undefined);
129
+ if (validIds.length === 0) {
124
130
  return { variable, value: '' };
125
131
  }
126
132
  // Output function references in ~{id} format so the chat parser picks them up
127
- const functionRefs = functionIds.map(id => `~{${id}}`).join('\n');
133
+ const functionRefs = validIds.map(id => `~{${id}}`).join('\n');
128
134
  return { variable, value: functionRefs };
129
135
  }
130
136
  /**
@@ -207,6 +213,11 @@ tslib_1.__decorate([
207
213
  (0, inversify_1.optional)(),
208
214
  tslib_1.__metadata("design:type", Object)
209
215
  ], GenericCapabilitiesVariableContribution.prototype, "agentsContribution", void 0);
216
+ tslib_1.__decorate([
217
+ (0, inversify_1.inject)(common_1.ToolInvocationRegistry),
218
+ (0, inversify_1.optional)(),
219
+ tslib_1.__metadata("design:type", Object)
220
+ ], GenericCapabilitiesVariableContribution.prototype, "toolInvocationRegistry", void 0);
210
221
  tslib_1.__decorate([
211
222
  (0, inversify_1.inject)(prompt_variable_contribution_1.PromptVariableContribution),
212
223
  (0, inversify_1.optional)(),
@@ -1 +1 @@
1
- {"version":3,"file":"generic-capabilities-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/generic-capabilities-variable-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-capabilities-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/generic-capabilities-variable-contribution.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,21 @@ describe('GenericCapabilitiesVariableContribution', () => {
29
29
  after(() => disableJSDOM());
30
30
  let contribution;
31
31
  let container;
32
+ function createMockToolInvocationRegistry(registeredToolIds) {
33
+ const tools = new Map();
34
+ for (const id of registeredToolIds) {
35
+ tools.set(id, { id, providerName: 'test', parameters: {}, handler: async () => '' });
36
+ }
37
+ return {
38
+ getFunction: (toolId) => tools.get(toolId),
39
+ getFunctions: (...toolIds) => toolIds.map(id => tools.get(id)).filter((t) => t !== undefined),
40
+ registerTool: () => { },
41
+ unregisterTool: () => { },
42
+ unregisterAllTools: () => { },
43
+ getAllFunctions: () => Array.from(tools.values()),
44
+ onDidChange: () => ({ dispose: () => { } }),
45
+ };
46
+ }
32
47
  beforeEach(() => {
33
48
  container = new inversify_1.Container();
34
49
  container.bind(generic_capabilities_variable_contribution_1.GenericCapabilitiesVariableContribution).toSelf().inSingletonScope();
@@ -53,6 +68,61 @@ describe('GenericCapabilitiesVariableContribution', () => {
53
68
  });
54
69
  });
55
70
  describe('resolve', () => {
71
+ describe('resolveSelectedFunctions filtering', () => {
72
+ it('returns empty string when toolInvocationRegistry is not available', async () => {
73
+ const context = {
74
+ genericCapabilitySelections: {
75
+ functions: ['tool1', 'tool2']
76
+ }
77
+ };
78
+ const result = await contribution.resolve({ variable: generic_capabilities_variable_contribution_1.SELECTED_FUNCTIONS_VARIABLE }, context);
79
+ (0, chai_1.expect)(result?.value).to.equal('');
80
+ });
81
+ it('filters out stale tool IDs that are not in the registry', async () => {
82
+ const mockRegistry = createMockToolInvocationRegistry(['tool1', 'tool3']);
83
+ contribution.toolInvocationRegistry = mockRegistry;
84
+ const context = {
85
+ genericCapabilitySelections: {
86
+ functions: ['tool1', 'tool2_stale', 'tool3']
87
+ }
88
+ };
89
+ const result = await contribution.resolve({ variable: generic_capabilities_variable_contribution_1.SELECTED_FUNCTIONS_VARIABLE }, context);
90
+ (0, chai_1.expect)(result?.value).to.equal('~{tool1}\n~{tool3}');
91
+ });
92
+ it('returns empty string when all tool IDs are stale', async () => {
93
+ const mockRegistry = createMockToolInvocationRegistry([]);
94
+ contribution.toolInvocationRegistry = mockRegistry;
95
+ const context = {
96
+ genericCapabilitySelections: {
97
+ functions: ['stale1', 'stale2']
98
+ }
99
+ };
100
+ const result = await contribution.resolve({ variable: generic_capabilities_variable_contribution_1.SELECTED_FUNCTIONS_VARIABLE }, context);
101
+ (0, chai_1.expect)(result?.value).to.equal('');
102
+ });
103
+ it('returns all tool references when all IDs are valid', async () => {
104
+ const mockRegistry = createMockToolInvocationRegistry(['tool1', 'tool2']);
105
+ contribution.toolInvocationRegistry = mockRegistry;
106
+ const context = {
107
+ genericCapabilitySelections: {
108
+ functions: ['tool1', 'tool2']
109
+ }
110
+ };
111
+ const result = await contribution.resolve({ variable: generic_capabilities_variable_contribution_1.SELECTED_FUNCTIONS_VARIABLE }, context);
112
+ (0, chai_1.expect)(result?.value).to.equal('~{tool1}\n~{tool2}');
113
+ });
114
+ it('filters stale MCP function IDs the same way', async () => {
115
+ const mockRegistry = createMockToolInvocationRegistry(['mcp_fetch_fetch']);
116
+ contribution.toolInvocationRegistry = mockRegistry;
117
+ const context = {
118
+ genericCapabilitySelections: {
119
+ mcpFunctions: ['mcp_fetch_fetch', 'mcp_removed_server_tool']
120
+ }
121
+ };
122
+ const result = await contribution.resolve({ variable: generic_capabilities_variable_contribution_1.SELECTED_MCP_FUNCTIONS_VARIABLE }, context);
123
+ (0, chai_1.expect)(result?.value).to.equal('~{mcp_fetch_fetch}');
124
+ });
125
+ });
56
126
  it('returns empty string when no selections exist', async () => {
57
127
  const context = {};
58
128
  const result = await contribution.resolve({ variable: generic_capabilities_variable_contribution_1.SELECTED_SKILLS_VARIABLE }, context);
@@ -1 +1 @@
1
- {"version":3,"file":"generic-capabilities-variable-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/generic-capabilities-variable-contribution.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-capabilities-variable-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/generic-capabilities-variable-contribution.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@theia/ai-core",
3
- "version": "1.72.0-next.45+c56d9c4b3",
3
+ "version": "1.72.0-next.46+128342e9b",
4
4
  "description": "Theia - AI Core",
5
5
  "dependencies": {
6
- "@theia/core": "1.72.0-next.45+c56d9c4b3",
7
- "@theia/editor": "1.72.0-next.45+c56d9c4b3",
8
- "@theia/filesystem": "1.72.0-next.45+c56d9c4b3",
9
- "@theia/monaco": "1.72.0-next.45+c56d9c4b3",
6
+ "@theia/core": "1.72.0-next.46+128342e9b",
7
+ "@theia/editor": "1.72.0-next.46+128342e9b",
8
+ "@theia/filesystem": "1.72.0-next.46+128342e9b",
9
+ "@theia/monaco": "1.72.0-next.46+128342e9b",
10
10
  "@theia/monaco-editor-core": "1.108.201",
11
- "@theia/output": "1.72.0-next.45+c56d9c4b3",
12
- "@theia/variable-resolver": "1.72.0-next.45+c56d9c4b3",
13
- "@theia/workspace": "1.72.0-next.45+c56d9c4b3",
11
+ "@theia/output": "1.72.0-next.46+128342e9b",
12
+ "@theia/variable-resolver": "1.72.0-next.46+128342e9b",
13
+ "@theia/workspace": "1.72.0-next.46+128342e9b",
14
14
  "@types/js-yaml": "^4.0.9",
15
15
  "fast-deep-equal": "^3.1.3",
16
16
  "js-yaml": "^4.1.1",
@@ -58,5 +58,5 @@
58
58
  "nyc": {
59
59
  "extends": "../../configs/nyc.json"
60
60
  },
61
- "gitHead": "c56d9c4b3e0191e9d812884695ba500b22a75558"
61
+ "gitHead": "128342e9ba53c273de5ef8a5bc9b93dbc0b931d4"
62
62
  }
@@ -27,9 +27,12 @@ import {
27
27
  GenericCapabilitiesVariableContribution,
28
28
  SELECTED_SKILLS_VARIABLE,
29
29
  SELECTED_FUNCTIONS_VARIABLE,
30
+ SELECTED_MCP_FUNCTIONS_VARIABLE,
30
31
  SELECTED_VARIABLES_VARIABLE
31
32
  } from './generic-capabilities-variable-contribution';
32
33
  import { CapabilityAwareContext } from '../common/capability-utils';
34
+ import { ToolInvocationRegistry } from '../common/tool-invocation-registry';
35
+ import { ToolRequest } from '../common/language-model';
33
36
 
34
37
  disableJSDOM();
35
38
 
@@ -39,6 +42,22 @@ describe('GenericCapabilitiesVariableContribution', () => {
39
42
  let contribution: GenericCapabilitiesVariableContribution;
40
43
  let container: Container;
41
44
 
45
+ function createMockToolInvocationRegistry(registeredToolIds: string[]): ToolInvocationRegistry {
46
+ const tools = new Map<string, ToolRequest>();
47
+ for (const id of registeredToolIds) {
48
+ tools.set(id, { id, providerName: 'test', parameters: {}, handler: async () => '' } as unknown as ToolRequest);
49
+ }
50
+ return {
51
+ getFunction: (toolId: string) => tools.get(toolId),
52
+ getFunctions: (...toolIds: string[]) => toolIds.map(id => tools.get(id)).filter((t): t is ToolRequest => t !== undefined),
53
+ registerTool: () => { },
54
+ unregisterTool: () => { },
55
+ unregisterAllTools: () => { },
56
+ getAllFunctions: () => Array.from(tools.values()),
57
+ onDidChange: () => ({ dispose: () => { } }),
58
+ } as unknown as ToolInvocationRegistry;
59
+ }
60
+
42
61
  beforeEach(() => {
43
62
  container = new Container();
44
63
  container.bind<GenericCapabilitiesVariableContribution>(GenericCapabilitiesVariableContribution).toSelf().inSingletonScope();
@@ -80,6 +99,95 @@ describe('GenericCapabilitiesVariableContribution', () => {
80
99
  });
81
100
 
82
101
  describe('resolve', () => {
102
+ describe('resolveSelectedFunctions filtering', () => {
103
+ it('returns empty string when toolInvocationRegistry is not available', async () => {
104
+ const context: CapabilityAwareContext = {
105
+ genericCapabilitySelections: {
106
+ functions: ['tool1', 'tool2']
107
+ }
108
+ };
109
+
110
+ const result = await contribution.resolve(
111
+ { variable: SELECTED_FUNCTIONS_VARIABLE },
112
+ context
113
+ );
114
+
115
+ expect(result?.value).to.equal('');
116
+ });
117
+
118
+ it('filters out stale tool IDs that are not in the registry', async () => {
119
+ const mockRegistry = createMockToolInvocationRegistry(['tool1', 'tool3']);
120
+ (contribution as unknown as { toolInvocationRegistry: ToolInvocationRegistry }).toolInvocationRegistry = mockRegistry;
121
+
122
+ const context: CapabilityAwareContext = {
123
+ genericCapabilitySelections: {
124
+ functions: ['tool1', 'tool2_stale', 'tool3']
125
+ }
126
+ };
127
+
128
+ const result = await contribution.resolve(
129
+ { variable: SELECTED_FUNCTIONS_VARIABLE },
130
+ context
131
+ );
132
+
133
+ expect(result?.value).to.equal('~{tool1}\n~{tool3}');
134
+ });
135
+
136
+ it('returns empty string when all tool IDs are stale', async () => {
137
+ const mockRegistry = createMockToolInvocationRegistry([]);
138
+ (contribution as unknown as { toolInvocationRegistry: ToolInvocationRegistry }).toolInvocationRegistry = mockRegistry;
139
+
140
+ const context: CapabilityAwareContext = {
141
+ genericCapabilitySelections: {
142
+ functions: ['stale1', 'stale2']
143
+ }
144
+ };
145
+
146
+ const result = await contribution.resolve(
147
+ { variable: SELECTED_FUNCTIONS_VARIABLE },
148
+ context
149
+ );
150
+
151
+ expect(result?.value).to.equal('');
152
+ });
153
+
154
+ it('returns all tool references when all IDs are valid', async () => {
155
+ const mockRegistry = createMockToolInvocationRegistry(['tool1', 'tool2']);
156
+ (contribution as unknown as { toolInvocationRegistry: ToolInvocationRegistry }).toolInvocationRegistry = mockRegistry;
157
+
158
+ const context: CapabilityAwareContext = {
159
+ genericCapabilitySelections: {
160
+ functions: ['tool1', 'tool2']
161
+ }
162
+ };
163
+
164
+ const result = await contribution.resolve(
165
+ { variable: SELECTED_FUNCTIONS_VARIABLE },
166
+ context
167
+ );
168
+
169
+ expect(result?.value).to.equal('~{tool1}\n~{tool2}');
170
+ });
171
+
172
+ it('filters stale MCP function IDs the same way', async () => {
173
+ const mockRegistry = createMockToolInvocationRegistry(['mcp_fetch_fetch']);
174
+ (contribution as unknown as { toolInvocationRegistry: ToolInvocationRegistry }).toolInvocationRegistry = mockRegistry;
175
+
176
+ const context: CapabilityAwareContext = {
177
+ genericCapabilitySelections: {
178
+ mcpFunctions: ['mcp_fetch_fetch', 'mcp_removed_server_tool']
179
+ }
180
+ };
181
+
182
+ const result = await contribution.resolve(
183
+ { variable: SELECTED_MCP_FUNCTIONS_VARIABLE },
184
+ context
185
+ );
186
+
187
+ expect(result?.value).to.equal('~{mcp_fetch_fetch}');
188
+ });
189
+ });
190
+
83
191
  it('returns empty string when no selections exist', async () => {
84
192
  const context: CapabilityAwareContext = {};
85
193
 
@@ -27,7 +27,8 @@ import {
27
27
  ResolvedAIVariable,
28
28
  CapabilityAwareContext,
29
29
  AgentService,
30
- AgentsVariableContribution
30
+ AgentsVariableContribution,
31
+ ToolInvocationRegistry
31
32
  } from '../common';
32
33
  import { PromptVariableContribution } from './prompt-variable-contribution';
33
34
  import { SkillService } from './skill-service';
@@ -105,6 +106,9 @@ export class GenericCapabilitiesVariableContribution implements AIVariableContri
105
106
  @inject(AgentsVariableContribution) @optional()
106
107
  protected readonly agentsContribution: AgentsVariableContribution | undefined;
107
108
 
109
+ @inject(ToolInvocationRegistry) @optional()
110
+ protected readonly toolInvocationRegistry: ToolInvocationRegistry | undefined;
111
+
108
112
  @inject(PromptVariableContribution) @optional()
109
113
  protected readonly promptContribution: PromptVariableContribution | undefined;
110
114
 
@@ -170,12 +174,20 @@ export class GenericCapabilitiesVariableContribution implements AIVariableContri
170
174
  * The chat request parser will pick these up and add them to the toolRequests map.
171
175
  */
172
176
  protected resolveSelectedFunctions(variable: AIVariable, functionIds: string[] | undefined): ResolvedAIVariable {
173
- if (!functionIds || functionIds.length === 0) {
177
+ if (!functionIds || functionIds.length === 0 || !this.toolInvocationRegistry) {
178
+ return { variable, value: '' };
179
+ }
180
+
181
+ // Filter out stale/orphaned tool IDs that no longer exist in the registry
182
+ const validIds = functionIds
183
+ .filter(id => this.toolInvocationRegistry!.getFunction(id) !== undefined);
184
+
185
+ if (validIds.length === 0) {
174
186
  return { variable, value: '' };
175
187
  }
176
188
 
177
189
  // Output function references in ~{id} format so the chat parser picks them up
178
- const functionRefs = functionIds.map(id => `~{${id}}`).join('\n');
190
+ const functionRefs = validIds.map(id => `~{${id}}`).join('\n');
179
191
  return { variable, value: functionRefs };
180
192
  }
181
193