@tienne/gestalt 0.25.1 → 0.26.0

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.
Files changed (106) hide show
  1. package/dist/package.json +7 -2
  2. package/dist/src/cli/commands/init.d.ts.map +1 -1
  3. package/dist/src/cli/commands/init.js.map +1 -1
  4. package/dist/src/cli/commands/update.d.ts.map +1 -1
  5. package/dist/src/cli/commands/update.js.map +1 -1
  6. package/dist/src/code-graph/engine.d.ts +5 -0
  7. package/dist/src/code-graph/engine.d.ts.map +1 -1
  8. package/dist/src/code-graph/engine.js +15 -2
  9. package/dist/src/code-graph/engine.js.map +1 -1
  10. package/dist/src/code-graph/plugins/java.js +1 -1
  11. package/dist/src/code-graph/plugins/java.js.map +1 -1
  12. package/dist/src/code-graph/storage.d.ts.map +1 -1
  13. package/dist/src/code-graph/storage.js +12 -2
  14. package/dist/src/code-graph/storage.js.map +1 -1
  15. package/dist/src/core/config.js +1 -1
  16. package/dist/src/core/config.js.map +1 -1
  17. package/dist/src/core/errors.d.ts.map +1 -1
  18. package/dist/src/core/errors.js.map +1 -1
  19. package/dist/src/events/store.d.ts +21 -2
  20. package/dist/src/events/store.d.ts.map +1 -1
  21. package/dist/src/events/store.js +141 -20
  22. package/dist/src/events/store.js.map +1 -1
  23. package/dist/src/execute/orchestrators/evaluation.d.ts.map +1 -1
  24. package/dist/src/execute/orchestrators/evaluation.js +1 -1
  25. package/dist/src/execute/orchestrators/evaluation.js.map +1 -1
  26. package/dist/src/execute/repository.d.ts +2 -2
  27. package/dist/src/execute/repository.d.ts.map +1 -1
  28. package/dist/src/execute/repository.js.map +1 -1
  29. package/dist/src/execute/session.d.ts +2 -2
  30. package/dist/src/execute/session.d.ts.map +1 -1
  31. package/dist/src/execute/session.js.map +1 -1
  32. package/dist/src/gestalt/analyzer.d.ts.map +1 -1
  33. package/dist/src/gestalt/analyzer.js.map +1 -1
  34. package/dist/src/interview/passthrough-engine.d.ts +1 -1
  35. package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
  36. package/dist/src/interview/passthrough-engine.js +4 -1
  37. package/dist/src/interview/passthrough-engine.js.map +1 -1
  38. package/dist/src/interview/repository.d.ts +2 -2
  39. package/dist/src/interview/repository.d.ts.map +1 -1
  40. package/dist/src/interview/repository.js.map +1 -1
  41. package/dist/src/interview/session.d.ts +2 -2
  42. package/dist/src/interview/session.d.ts.map +1 -1
  43. package/dist/src/interview/session.js.map +1 -1
  44. package/dist/src/knowledge-base/embedding-index.d.ts.map +1 -1
  45. package/dist/src/knowledge-base/embedding-index.js.map +1 -1
  46. package/dist/src/knowledge-base/generator.d.ts.map +1 -1
  47. package/dist/src/knowledge-base/generator.js +1 -11
  48. package/dist/src/knowledge-base/generator.js.map +1 -1
  49. package/dist/src/mcp/schemas.d.ts +10 -10
  50. package/dist/src/mcp/tools/execute/evaluate.d.ts +5 -0
  51. package/dist/src/mcp/tools/execute/evaluate.d.ts.map +1 -0
  52. package/dist/src/mcp/tools/execute/evaluate.js +133 -0
  53. package/dist/src/mcp/tools/execute/evaluate.js.map +1 -0
  54. package/dist/src/mcp/tools/execute/evolve.d.ts +10 -0
  55. package/dist/src/mcp/tools/execute/evolve.d.ts.map +1 -0
  56. package/dist/src/mcp/tools/execute/evolve.js +273 -0
  57. package/dist/src/mcp/tools/execute/evolve.js.map +1 -0
  58. package/dist/src/mcp/tools/execute/execution.d.ts +6 -0
  59. package/dist/src/mcp/tools/execute/execution.d.ts.map +1 -0
  60. package/dist/src/mcp/tools/execute/execution.js +145 -0
  61. package/dist/src/mcp/tools/execute/execution.js.map +1 -0
  62. package/dist/src/mcp/tools/execute/planning.d.ts +7 -0
  63. package/dist/src/mcp/tools/execute/planning.d.ts.map +1 -0
  64. package/dist/src/mcp/tools/execute/planning.js +138 -0
  65. package/dist/src/mcp/tools/execute/planning.js.map +1 -0
  66. package/dist/src/mcp/tools/execute/roles.d.ts +6 -0
  67. package/dist/src/mcp/tools/execute/roles.d.ts.map +1 -0
  68. package/dist/src/mcp/tools/execute/roles.js +73 -0
  69. package/dist/src/mcp/tools/execute/roles.js.map +1 -0
  70. package/dist/src/mcp/tools/execute/types.d.ts +5 -0
  71. package/dist/src/mcp/tools/execute/types.d.ts.map +1 -0
  72. package/dist/src/mcp/tools/execute/types.js +2 -0
  73. package/dist/src/mcp/tools/execute/types.js.map +1 -0
  74. package/dist/src/mcp/tools/execute/utility.d.ts +8 -0
  75. package/dist/src/mcp/tools/execute/utility.d.ts.map +1 -0
  76. package/dist/src/mcp/tools/execute/utility.js +206 -0
  77. package/dist/src/mcp/tools/execute/utility.js.map +1 -0
  78. package/dist/src/mcp/tools/execute/utils.d.ts +5 -0
  79. package/dist/src/mcp/tools/execute/utils.d.ts.map +1 -0
  80. package/dist/src/mcp/tools/execute/utils.js +44 -0
  81. package/dist/src/mcp/tools/execute/utils.js.map +1 -0
  82. package/dist/src/mcp/tools/execute-passthrough.d.ts +1 -1
  83. package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
  84. package/dist/src/mcp/tools/execute-passthrough.js +31 -997
  85. package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
  86. package/dist/src/mcp/tools/generate-kb.d.ts.map +1 -1
  87. package/dist/src/mcp/tools/generate-kb.js +1 -1
  88. package/dist/src/mcp/tools/generate-kb.js.map +1 -1
  89. package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
  90. package/dist/src/mcp/tools/interview-passthrough.js +7 -1
  91. package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
  92. package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
  93. package/dist/src/mcp/tools/spec-passthrough.js +6 -2
  94. package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
  95. package/dist/src/mcp/tools/status.js.map +1 -1
  96. package/dist/src/registry/base-registry.d.ts.map +1 -1
  97. package/dist/src/registry/base-registry.js +16 -3
  98. package/dist/src/registry/base-registry.js.map +1 -1
  99. package/dist/src/review/context-collector.d.ts +4 -3
  100. package/dist/src/review/context-collector.d.ts.map +1 -1
  101. package/dist/src/review/context-collector.js +22 -5
  102. package/dist/src/review/context-collector.js.map +1 -1
  103. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  104. package/dist/src/review/passthrough-engine.js +1 -1
  105. package/dist/src/review/passthrough-engine.js.map +1 -1
  106. package/package.json +7 -2
@@ -0,0 +1,206 @@
1
+ import { AuditEngine } from '../../../execute/audit-engine.js';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { formatError } from './utils.js';
6
+ export function handleStatusAction(engine, input, _client) {
7
+ return handleStatus(engine, input.sessionId, input.cwd);
8
+ }
9
+ export function handleResume(engine, input, _client) {
10
+ if (!input.sessionId)
11
+ return formatError('sessionId is required for resume action');
12
+ try {
13
+ const session = engine.getSession(input.sessionId);
14
+ if (session.status !== 'executing' && session.status !== 'planning') {
15
+ return formatError(`Session status is "${session.status}". Resume is only available for in-progress sessions.`);
16
+ }
17
+ if (!session.executionPlan) {
18
+ return formatError('No execution plan found. Complete planning first.');
19
+ }
20
+ const completedSet = new Set(session.completedTaskIds);
21
+ const remaining = session.executionPlan.dagValidation.topologicalOrder.filter((id) => !completedSet.has(id));
22
+ const nextTaskId = remaining[0] ?? null;
23
+ const totalTasks = session.executionPlan.atomicTasks.length;
24
+ const progressPercent = totalTasks > 0 ? Math.round((session.completedTaskIds.length / totalTasks) * 100) : 0;
25
+ const resumeContext = {
26
+ completedTaskIds: session.completedTaskIds,
27
+ nextTaskId,
28
+ totalTasks,
29
+ progressPercent,
30
+ };
31
+ return JSON.stringify({
32
+ status: 'resume_context',
33
+ sessionId: session.sessionId,
34
+ resumeContext,
35
+ message: nextTaskId
36
+ ? `Resuming from task "${nextTaskId}". ${session.completedTaskIds.length}/${totalTasks} tasks completed (${progressPercent}%). Use execute_task to continue.`
37
+ : 'All tasks completed. Call evaluate to verify acceptance criteria.',
38
+ }, null, 2);
39
+ }
40
+ catch (e) {
41
+ return formatError(e instanceof Error ? e.message : String(e));
42
+ }
43
+ }
44
+ export function handleAudit(engine, input, _client) {
45
+ if (!input.sessionId)
46
+ return formatError('sessionId is required for audit action');
47
+ try {
48
+ const session = engine.getSession(input.sessionId);
49
+ const auditEngine = new AuditEngine();
50
+ // Call 2: Submit audit result
51
+ if (input.auditResult) {
52
+ const auditResult = auditEngine.buildAuditResult(input.auditResult);
53
+ engine.getSessionManager().setAuditResult(session.sessionId, auditResult);
54
+ return JSON.stringify({
55
+ status: 'audit_complete',
56
+ sessionId: session.sessionId,
57
+ auditResult,
58
+ summary: {
59
+ total: session.spec.acceptanceCriteria.length,
60
+ implemented: auditResult.implementedACs.length,
61
+ partial: auditResult.partialACs.length,
62
+ missing: auditResult.missingACs.length,
63
+ },
64
+ message: `Audit complete. ${auditResult.missingACs.length} ACs missing, ${auditResult.partialACs.length} partial. Review gapAnalysis for next steps.`,
65
+ }, null, 2);
66
+ }
67
+ // Call 1: Return audit context
68
+ const codebaseSnapshot = input.codebaseSnapshot ?? '(no snapshot provided — analyze based on spec ACs only)';
69
+ const auditContext = auditEngine.buildAuditContext(session.spec, codebaseSnapshot);
70
+ return JSON.stringify({
71
+ status: 'auditing',
72
+ sessionId: session.sessionId,
73
+ auditContext,
74
+ message: 'Use auditContext.systemPrompt + auditContext.auditPrompt to analyze the codebase, then submit auditResult.',
75
+ }, null, 2);
76
+ }
77
+ catch (e) {
78
+ return formatError(e instanceof Error ? e.message : String(e));
79
+ }
80
+ }
81
+ export function handleSpawn(engine, input, _client) {
82
+ if (!input.sessionId)
83
+ return formatError('sessionId is required for spawn action');
84
+ if (!input.parentTaskId)
85
+ return formatError('parentTaskId is required for spawn action');
86
+ if (!input.subTasks || input.subTasks.length === 0)
87
+ return formatError('subTasks is required for spawn action');
88
+ try {
89
+ const session = engine.getSession(input.sessionId);
90
+ const parentTask = session.executionPlan?.atomicTasks.find((t) => t.taskId === input.parentTaskId);
91
+ const inheritedContext = parentTask
92
+ ? `Parent task: "${parentTask.title}"\n${parentTask.description}`
93
+ : `Parent task ID: ${input.parentTaskId}`;
94
+ const spawnedTasks = input.subTasks.map((st) => ({
95
+ taskId: `spawned-${randomUUID().slice(0, 8)}`,
96
+ parentTaskId: input.parentTaskId,
97
+ title: st.title,
98
+ description: st.description,
99
+ inheritedContext,
100
+ dependsOn: st.dependsOn ?? [],
101
+ status: 'pending',
102
+ createdAt: new Date().toISOString(),
103
+ }));
104
+ engine.getSessionManager().addSubTasks(session.sessionId, spawnedTasks);
105
+ return JSON.stringify({
106
+ status: 'spawned',
107
+ sessionId: session.sessionId,
108
+ parentTaskId: input.parentTaskId,
109
+ spawnedTasks: spawnedTasks.map((t) => ({
110
+ taskId: t.taskId,
111
+ title: t.title,
112
+ dependsOn: t.dependsOn,
113
+ })),
114
+ message: `${spawnedTasks.length} sub-tasks spawned from "${input.parentTaskId}". Submit results with execute_task using each sub-task's taskId.`,
115
+ }, null, 2);
116
+ }
117
+ catch (e) {
118
+ return formatError(e instanceof Error ? e.message : String(e));
119
+ }
120
+ }
121
+ function handleStatus(engine, sessionId, cwd) {
122
+ try {
123
+ if (sessionId) {
124
+ const session = engine.getSession(sessionId);
125
+ // Build resumeContext for in-progress sessions
126
+ let resumeContext;
127
+ if (session.status === 'executing' && session.executionPlan) {
128
+ const completedSet = new Set(session.completedTaskIds);
129
+ const totalTasks = session.executionPlan.atomicTasks.length;
130
+ const nextTaskId = session.executionPlan.dagValidation.topologicalOrder.find((id) => !completedSet.has(id)) ?? null;
131
+ resumeContext = {
132
+ completedTaskIds: session.completedTaskIds,
133
+ nextTaskId,
134
+ totalTasks,
135
+ progressPercent: totalTasks > 0 ? Math.round((session.completedTaskIds.length / totalTasks) * 100) : 0,
136
+ };
137
+ }
138
+ return JSON.stringify({
139
+ session: {
140
+ sessionId: session.sessionId,
141
+ specId: session.specId,
142
+ status: session.status,
143
+ currentStep: session.currentStep,
144
+ stepsCompleted: session.planningSteps.length,
145
+ hasPlan: !!session.executionPlan,
146
+ taskResults: session.taskResults.length,
147
+ evaluateStage: session.evaluateStage ?? null,
148
+ hasEvaluation: !!session.evaluationResult,
149
+ driftAlerts: session.driftHistory.filter((d) => d.thresholdExceeded).length,
150
+ evolveStage: session.evolveStage ?? null,
151
+ currentGeneration: session.currentGeneration,
152
+ evolutionCount: session.evolutionHistory.length,
153
+ terminationReason: session.terminationReason ?? null,
154
+ ...(resumeContext ? { resumeContext } : {}),
155
+ ...(session.auditResult ? { hasAuditResult: true } : {}),
156
+ subTaskCount: session.subTasks.length,
157
+ createdAt: session.createdAt,
158
+ updatedAt: session.updatedAt,
159
+ },
160
+ }, null, 2);
161
+ }
162
+ const sessions = engine.listSessions();
163
+ let resumeHint;
164
+ if (cwd) {
165
+ try {
166
+ const activeSessionPath = join(cwd, '.gestalt', 'active-session.json');
167
+ if (existsSync(activeSessionPath)) {
168
+ resumeHint = JSON.parse(readFileSync(activeSessionPath, 'utf-8'));
169
+ }
170
+ }
171
+ catch {
172
+ // ignore
173
+ }
174
+ }
175
+ return JSON.stringify({
176
+ sessions: sessions.map((s) => ({
177
+ sessionId: s.sessionId,
178
+ specId: s.specId,
179
+ status: s.status,
180
+ stepsCompleted: s.planningSteps.length,
181
+ hasPlan: !!s.executionPlan,
182
+ taskResults: s.taskResults.length,
183
+ hasEvaluation: !!s.evaluationResult,
184
+ ...(s.status === 'executing'
185
+ ? {
186
+ resumeContext: {
187
+ completedTaskIds: s.completedTaskIds,
188
+ nextTaskId: s.nextTaskId,
189
+ totalTasks: s.executionPlan?.atomicTasks.length ?? 0,
190
+ progressPercent: s.executionPlan
191
+ ? Math.round((s.completedTaskIds.length / s.executionPlan.atomicTasks.length) * 100)
192
+ : 0,
193
+ },
194
+ }
195
+ : {}),
196
+ createdAt: s.createdAt,
197
+ })),
198
+ total: sessions.length,
199
+ ...(resumeHint ? { resumeHint } : {}),
200
+ }, null, 2);
201
+ }
202
+ catch (e) {
203
+ return formatError(e instanceof Error ? e.message : String(e));
204
+ }
205
+ }
206
+ //# sourceMappingURL=utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/utility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function slimRetrospectiveContext(ctx: Record<string, unknown>): Record<string, unknown>;
2
+ export declare function stripContextPrompts(ctx: Record<string, unknown> | null | undefined): Record<string, unknown> | null | undefined;
3
+ export declare function applyTaskContextFilters(ctx: Record<string, unknown>, verbose: boolean): Record<string, unknown>;
4
+ export declare function formatError(message: string): string;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/utils.ts"],"names":[],"mappings":"AAwBA,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9F;AAQD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAO5C;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,44 @@
1
+ // ─── Response Slim Helpers ─────────────────────────────────────────────────
2
+ // systemPrompt is static per session (same agent persona every call).
3
+ // Stripping it from responses saves ~500 tokens × N calls in context history.
4
+ // pendingTasks description/sourceAC are not needed at execution time.
5
+ function slimTaskContext(ctx) {
6
+ const { pendingTasks, ...rest } = ctx;
7
+ return {
8
+ ...rest,
9
+ ...(Array.isArray(pendingTasks)
10
+ ? {
11
+ pendingTasks: pendingTasks.map(({ taskId, title, dependsOn }) => ({
12
+ taskId,
13
+ title,
14
+ dependsOn,
15
+ })),
16
+ }
17
+ : {}),
18
+ };
19
+ }
20
+ export function slimRetrospectiveContext(ctx) {
21
+ const { systemPrompt: _sp, ...rest } = ctx;
22
+ return rest;
23
+ }
24
+ // ─── Verbose=false Helpers ──────────────────────────────────────────────────
25
+ // When verbose=false, strip large prompt fields to reduce response token usage.
26
+ // Callers that omit verbose (default=true) receive identical responses as before.
27
+ const PROMPT_KEYS = ['systemPrompt', 'planningPrompt', 'taskPrompt'];
28
+ export function stripContextPrompts(ctx) {
29
+ if (!ctx || typeof ctx !== 'object')
30
+ return ctx;
31
+ const result = { ...ctx };
32
+ for (const key of PROMPT_KEYS) {
33
+ delete result[key];
34
+ }
35
+ return result;
36
+ }
37
+ export function applyTaskContextFilters(ctx, verbose) {
38
+ const slimmed = slimTaskContext(ctx);
39
+ return verbose ? slimmed : stripContextPrompts(slimmed);
40
+ }
41
+ export function formatError(message) {
42
+ return JSON.stringify({ error: message }, null, 2);
43
+ }
44
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/utils.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAC9E,sEAAsE;AAEtE,SAAS,eAAe,CAAC,GAA4B;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,GAGjC,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;YAC7B,CAAC,CAAC;gBACE,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;oBAChE,MAAM;oBACN,KAAK;oBACL,SAAS;iBACV,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAA4B;IACnE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAGtC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,kFAAkF;AAElF,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,gBAAgB,EAAE,YAAY,CAAU,CAAC;AAE9E,MAAM,UAAU,mBAAmB,CACjC,GAA+C;IAE/C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAChD,MAAM,MAAM,GAA4B,EAAE,GAAG,GAAG,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAA4B,EAC5B,OAAgB;IAEhB,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,mBAAmB,CAAC,OAAO,CAA6B,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { PassthroughExecuteEngine } from '../../execute/passthrough-engine.js';
2
2
  import type { ExecuteInput } from '../schemas.js';
3
- import { type ClientType } from '../../execute/rule-writer.js';
3
+ import type { ClientType } from '../../execute/rule-writer.js';
4
4
  export declare function handleExecutePassthrough(engine: PassthroughExecuteEngine, input: ExecuteInput, client?: ClientType): Promise<string>;
5
5
  //# sourceMappingURL=execute-passthrough.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute-passthrough.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/execute-passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,8BAA8B,CAAC;AAItC,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,GAAE,UAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CA0jCjB"}
1
+ {"version":3,"file":"execute-passthrough.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/execute-passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAsC/D,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,GAAE,UAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAIjB"}