@cogitator-ai/neuro-symbolic 0.1.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 (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +494 -0
  3. package/dist/constraints/dsl.d.ts +68 -0
  4. package/dist/constraints/dsl.d.ts.map +1 -0
  5. package/dist/constraints/dsl.js +419 -0
  6. package/dist/constraints/dsl.js.map +1 -0
  7. package/dist/constraints/index.d.ts +7 -0
  8. package/dist/constraints/index.d.ts.map +1 -0
  9. package/dist/constraints/index.js +18 -0
  10. package/dist/constraints/index.js.map +1 -0
  11. package/dist/constraints/prompts.d.ts +44 -0
  12. package/dist/constraints/prompts.d.ts.map +1 -0
  13. package/dist/constraints/prompts.js +175 -0
  14. package/dist/constraints/prompts.js.map +1 -0
  15. package/dist/constraints/simple-sat-solver.d.ts +21 -0
  16. package/dist/constraints/simple-sat-solver.d.ts.map +1 -0
  17. package/dist/constraints/simple-sat-solver.js +378 -0
  18. package/dist/constraints/simple-sat-solver.js.map +1 -0
  19. package/dist/constraints/z3-wasm-solver.d.ts +20 -0
  20. package/dist/constraints/z3-wasm-solver.d.ts.map +1 -0
  21. package/dist/constraints/z3-wasm-solver.js +286 -0
  22. package/dist/constraints/z3-wasm-solver.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +6 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/knowledge-graph/index.d.ts +5 -0
  28. package/dist/knowledge-graph/index.d.ts.map +1 -0
  29. package/dist/knowledge-graph/index.js +5 -0
  30. package/dist/knowledge-graph/index.js.map +1 -0
  31. package/dist/knowledge-graph/natural-language-query.d.ts +42 -0
  32. package/dist/knowledge-graph/natural-language-query.d.ts.map +1 -0
  33. package/dist/knowledge-graph/natural-language-query.js +271 -0
  34. package/dist/knowledge-graph/natural-language-query.js.map +1 -0
  35. package/dist/knowledge-graph/prompts.d.ts +56 -0
  36. package/dist/knowledge-graph/prompts.d.ts.map +1 -0
  37. package/dist/knowledge-graph/prompts.js +198 -0
  38. package/dist/knowledge-graph/prompts.js.map +1 -0
  39. package/dist/knowledge-graph/query-language.d.ts +43 -0
  40. package/dist/knowledge-graph/query-language.d.ts.map +1 -0
  41. package/dist/knowledge-graph/query-language.js +569 -0
  42. package/dist/knowledge-graph/query-language.js.map +1 -0
  43. package/dist/knowledge-graph/reasoning-engine.d.ts +53 -0
  44. package/dist/knowledge-graph/reasoning-engine.d.ts.map +1 -0
  45. package/dist/knowledge-graph/reasoning-engine.js +337 -0
  46. package/dist/knowledge-graph/reasoning-engine.js.map +1 -0
  47. package/dist/logic/builtins.d.ts +10 -0
  48. package/dist/logic/builtins.d.ts.map +1 -0
  49. package/dist/logic/builtins.js +527 -0
  50. package/dist/logic/builtins.js.map +1 -0
  51. package/dist/logic/index.d.ts +8 -0
  52. package/dist/logic/index.d.ts.map +1 -0
  53. package/dist/logic/index.js +8 -0
  54. package/dist/logic/index.js.map +1 -0
  55. package/dist/logic/knowledge-base.d.ts +38 -0
  56. package/dist/logic/knowledge-base.d.ts.map +1 -0
  57. package/dist/logic/knowledge-base.js +205 -0
  58. package/dist/logic/knowledge-base.js.map +1 -0
  59. package/dist/logic/parser.d.ts +19 -0
  60. package/dist/logic/parser.d.ts.map +1 -0
  61. package/dist/logic/parser.js +466 -0
  62. package/dist/logic/parser.js.map +1 -0
  63. package/dist/logic/prompts.d.ts +55 -0
  64. package/dist/logic/prompts.d.ts.map +1 -0
  65. package/dist/logic/prompts.js +230 -0
  66. package/dist/logic/prompts.js.map +1 -0
  67. package/dist/logic/proof-tree.d.ts +30 -0
  68. package/dist/logic/proof-tree.d.ts.map +1 -0
  69. package/dist/logic/proof-tree.js +281 -0
  70. package/dist/logic/proof-tree.js.map +1 -0
  71. package/dist/logic/resolver.d.ts +16 -0
  72. package/dist/logic/resolver.d.ts.map +1 -0
  73. package/dist/logic/resolver.js +382 -0
  74. package/dist/logic/resolver.js.map +1 -0
  75. package/dist/logic/unification.d.ts +17 -0
  76. package/dist/logic/unification.d.ts.map +1 -0
  77. package/dist/logic/unification.js +257 -0
  78. package/dist/logic/unification.js.map +1 -0
  79. package/dist/orchestrator.d.ts +57 -0
  80. package/dist/orchestrator.d.ts.map +1 -0
  81. package/dist/orchestrator.js +293 -0
  82. package/dist/orchestrator.js.map +1 -0
  83. package/dist/planning/action-schema.d.ts +48 -0
  84. package/dist/planning/action-schema.d.ts.map +1 -0
  85. package/dist/planning/action-schema.js +358 -0
  86. package/dist/planning/action-schema.js.map +1 -0
  87. package/dist/planning/index.d.ts +6 -0
  88. package/dist/planning/index.d.ts.map +1 -0
  89. package/dist/planning/index.js +6 -0
  90. package/dist/planning/index.js.map +1 -0
  91. package/dist/planning/invariant-checker.d.ts +39 -0
  92. package/dist/planning/invariant-checker.d.ts.map +1 -0
  93. package/dist/planning/invariant-checker.js +293 -0
  94. package/dist/planning/invariant-checker.js.map +1 -0
  95. package/dist/planning/plan-repair.d.ts +38 -0
  96. package/dist/planning/plan-repair.d.ts.map +1 -0
  97. package/dist/planning/plan-repair.js +366 -0
  98. package/dist/planning/plan-repair.js.map +1 -0
  99. package/dist/planning/plan-validator.d.ts +31 -0
  100. package/dist/planning/plan-validator.d.ts.map +1 -0
  101. package/dist/planning/plan-validator.js +379 -0
  102. package/dist/planning/plan-validator.js.map +1 -0
  103. package/dist/planning/prompts.d.ts +50 -0
  104. package/dist/planning/prompts.d.ts.map +1 -0
  105. package/dist/planning/prompts.js +186 -0
  106. package/dist/planning/prompts.js.map +1 -0
  107. package/package.json +96 -0
@@ -0,0 +1,379 @@
1
+ import { evaluatePrecondition, applyAction, preconditionToString, } from './action-schema';
2
+ const DEFAULT_VALIDATION_CONFIG = {
3
+ checkPreconditions: true,
4
+ checkGoals: true,
5
+ detectRedundancy: true,
6
+ detectOrdering: true,
7
+ maxSteps: 1000,
8
+ };
9
+ export class PlanValidator {
10
+ registry;
11
+ config;
12
+ constructor(registry, config = {}) {
13
+ this.registry = registry;
14
+ this.config = { ...DEFAULT_VALIDATION_CONFIG, ...config };
15
+ }
16
+ validate(plan) {
17
+ const errors = [];
18
+ const warnings = [];
19
+ const stateTrace = [plan.initialState];
20
+ let currentState = plan.initialState;
21
+ for (let i = 0; i < plan.actions.length; i++) {
22
+ if (i >= this.config.maxSteps) {
23
+ errors.push({
24
+ type: 'goal_unreachable',
25
+ message: `Plan exceeds maximum steps (${this.config.maxSteps})`,
26
+ });
27
+ break;
28
+ }
29
+ const action = plan.actions[i];
30
+ const schema = this.registry.get(action.schemaName);
31
+ if (!schema) {
32
+ errors.push({
33
+ type: 'undefined_action',
34
+ actionIndex: i,
35
+ actionName: action.schemaName,
36
+ message: `Unknown action schema: ${action.schemaName}`,
37
+ });
38
+ continue;
39
+ }
40
+ const paramErrors = this.validateParameters(action, schema, i);
41
+ errors.push(...paramErrors);
42
+ if (paramErrors.length > 0) {
43
+ continue;
44
+ }
45
+ if (this.config.checkPreconditions) {
46
+ const preErrors = this.validatePreconditions(action, schema, currentState, i);
47
+ errors.push(...preErrors);
48
+ if (preErrors.length > 0) {
49
+ continue;
50
+ }
51
+ }
52
+ currentState = applyAction(action, currentState, schema);
53
+ stateTrace.push(currentState);
54
+ }
55
+ const satisfiedGoals = [];
56
+ const unsatisfiedGoals = [];
57
+ if (this.config.checkGoals) {
58
+ for (const goal of plan.goalConditions) {
59
+ const goalStr = preconditionToString(goal);
60
+ if (evaluatePrecondition(goal, currentState)) {
61
+ satisfiedGoals.push(goalStr);
62
+ }
63
+ else {
64
+ unsatisfiedGoals.push(goalStr);
65
+ errors.push({
66
+ type: 'goal_unreachable',
67
+ message: `Goal not satisfied: ${goalStr}`,
68
+ details: { goal },
69
+ });
70
+ }
71
+ }
72
+ }
73
+ if (this.config.detectRedundancy) {
74
+ const redundancyWarnings = this.detectRedundantActions(plan, stateTrace);
75
+ warnings.push(...redundancyWarnings);
76
+ }
77
+ if (this.config.detectOrdering) {
78
+ const orderingWarnings = this.detectOrderingIssues(plan);
79
+ warnings.push(...orderingWarnings);
80
+ }
81
+ return {
82
+ valid: errors.length === 0,
83
+ errors,
84
+ warnings,
85
+ stateTrace,
86
+ satisfiedGoals,
87
+ unsatisfiedGoals,
88
+ };
89
+ }
90
+ validateParameters(action, schema, actionIndex) {
91
+ const errors = [];
92
+ for (const param of schema.parameters) {
93
+ if (param.required && !(param.name in action.parameters)) {
94
+ errors.push({
95
+ type: 'missing_parameter',
96
+ actionIndex,
97
+ actionName: action.schemaName,
98
+ message: `Missing required parameter: ${param.name}`,
99
+ details: { parameter: param.name },
100
+ });
101
+ }
102
+ }
103
+ for (const paramName of Object.keys(action.parameters)) {
104
+ const param = schema.parameters.find((p) => p.name === paramName);
105
+ if (!param) {
106
+ errors.push({
107
+ type: 'invalid_parameter',
108
+ actionIndex,
109
+ actionName: action.schemaName,
110
+ message: `Unknown parameter: ${paramName}`,
111
+ details: { parameter: paramName },
112
+ });
113
+ }
114
+ }
115
+ return errors;
116
+ }
117
+ validatePreconditions(action, schema, state, actionIndex) {
118
+ const errors = [];
119
+ for (const precondition of schema.preconditions) {
120
+ if (!evaluatePrecondition(precondition, state, action.parameters)) {
121
+ errors.push({
122
+ type: 'precondition_violated',
123
+ actionIndex,
124
+ actionName: action.schemaName,
125
+ message: `Precondition not satisfied: ${preconditionToString(precondition)}`,
126
+ details: {
127
+ precondition,
128
+ state: state.variables,
129
+ },
130
+ });
131
+ }
132
+ }
133
+ return errors;
134
+ }
135
+ detectRedundantActions(plan, stateTrace) {
136
+ const warnings = [];
137
+ for (let i = 1; i < stateTrace.length; i++) {
138
+ const before = stateTrace[i - 1];
139
+ const after = stateTrace[i];
140
+ const beforeStr = JSON.stringify(before.variables);
141
+ const afterStr = JSON.stringify(after.variables);
142
+ if (beforeStr === afterStr) {
143
+ warnings.push({
144
+ type: 'redundant_action',
145
+ actionIndex: i - 1,
146
+ message: `Action ${plan.actions[i - 1].schemaName} has no effect`,
147
+ });
148
+ }
149
+ }
150
+ return warnings;
151
+ }
152
+ detectOrderingIssues(plan) {
153
+ const warnings = [];
154
+ const dependencies = this.analyzeDependencies(plan);
155
+ for (const edge of dependencies.edges) {
156
+ if (edge.type === 'threat') {
157
+ const fromIdx = dependencies.actions.indexOf(edge.fromAction);
158
+ const toIdx = dependencies.actions.indexOf(edge.toAction);
159
+ if (fromIdx > toIdx) {
160
+ warnings.push({
161
+ type: 'suboptimal_ordering',
162
+ actionIndex: fromIdx,
163
+ message: `Action ordering may cause issues: ${edge.description}`,
164
+ });
165
+ }
166
+ }
167
+ }
168
+ return warnings;
169
+ }
170
+ analyzeDependencies(plan) {
171
+ const actions = plan.actions.map((a) => a.id);
172
+ const edges = [];
173
+ const producedBy = new Map();
174
+ const consumedBy = new Map();
175
+ for (const action of plan.actions) {
176
+ const schema = this.registry.get(action.schemaName);
177
+ if (!schema)
178
+ continue;
179
+ for (const effect of schema.effects) {
180
+ if (effect.type === 'assign' ||
181
+ effect.type === 'increment' ||
182
+ effect.type === 'decrement') {
183
+ producedBy.set(effect.variable, action.id);
184
+ }
185
+ }
186
+ }
187
+ for (const action of plan.actions) {
188
+ const schema = this.registry.get(action.schemaName);
189
+ if (!schema)
190
+ continue;
191
+ for (const pre of schema.preconditions) {
192
+ const variables = this.extractVariables(pre);
193
+ for (const variable of variables) {
194
+ if (!consumedBy.has(variable)) {
195
+ consumedBy.set(variable, []);
196
+ }
197
+ consumedBy.get(variable).push(action.id);
198
+ const producer = producedBy.get(variable);
199
+ if (producer && producer !== action.id) {
200
+ edges.push({
201
+ fromAction: producer,
202
+ toAction: action.id,
203
+ type: 'causal',
204
+ variable,
205
+ description: `${producer} produces ${variable} for ${action.id}`,
206
+ });
207
+ }
208
+ }
209
+ }
210
+ }
211
+ const criticalPath = this.findCriticalPath(actions, edges);
212
+ const parallelizable = this.findParallelizable(actions, edges);
213
+ return {
214
+ actions,
215
+ edges,
216
+ criticalPath,
217
+ parallelizable,
218
+ };
219
+ }
220
+ extractVariables(precondition) {
221
+ switch (precondition.type) {
222
+ case 'simple':
223
+ case 'comparison':
224
+ return [precondition.variable];
225
+ case 'and':
226
+ case 'or':
227
+ return precondition.conditions.flatMap((c) => this.extractVariables(c));
228
+ case 'not':
229
+ return this.extractVariables(precondition.condition);
230
+ case 'exists':
231
+ case 'forall':
232
+ return this.extractVariables(precondition.condition);
233
+ default:
234
+ return [];
235
+ }
236
+ }
237
+ findCriticalPath(actions, edges) {
238
+ const inDegree = new Map();
239
+ const outEdges = new Map();
240
+ for (const action of actions) {
241
+ inDegree.set(action, 0);
242
+ outEdges.set(action, []);
243
+ }
244
+ for (const edge of edges) {
245
+ if (edge.type === 'causal' || edge.type === 'ordering') {
246
+ inDegree.set(edge.toAction, (inDegree.get(edge.toAction) || 0) + 1);
247
+ outEdges.get(edge.fromAction)?.push(edge.toAction);
248
+ }
249
+ }
250
+ const distance = new Map();
251
+ const predecessor = new Map();
252
+ for (const action of actions) {
253
+ distance.set(action, 0);
254
+ }
255
+ const queue = actions.filter((a) => inDegree.get(a) === 0);
256
+ while (queue.length > 0) {
257
+ const current = queue.shift();
258
+ const currentDist = distance.get(current) || 0;
259
+ for (const next of outEdges.get(current) || []) {
260
+ const newDist = currentDist + 1;
261
+ if (newDist > (distance.get(next) || 0)) {
262
+ distance.set(next, newDist);
263
+ predecessor.set(next, current);
264
+ }
265
+ const newInDegree = (inDegree.get(next) || 0) - 1;
266
+ inDegree.set(next, newInDegree);
267
+ if (newInDegree === 0) {
268
+ queue.push(next);
269
+ }
270
+ }
271
+ }
272
+ let maxDist = 0;
273
+ let endAction = actions[0];
274
+ for (const [action, dist] of distance) {
275
+ if (dist > maxDist) {
276
+ maxDist = dist;
277
+ endAction = action;
278
+ }
279
+ }
280
+ const path = [];
281
+ let current = endAction;
282
+ while (current) {
283
+ path.unshift(current);
284
+ current = predecessor.get(current);
285
+ }
286
+ return path;
287
+ }
288
+ findParallelizable(actions, edges) {
289
+ const dependencies = new Set();
290
+ for (const edge of edges) {
291
+ if (edge.type === 'causal' || edge.type === 'ordering') {
292
+ dependencies.add(`${edge.fromAction}->${edge.toAction}`);
293
+ }
294
+ }
295
+ const groups = [];
296
+ const assigned = new Set();
297
+ for (const action of actions) {
298
+ if (assigned.has(action))
299
+ continue;
300
+ const group = [action];
301
+ assigned.add(action);
302
+ for (const other of actions) {
303
+ if (assigned.has(other))
304
+ continue;
305
+ const hasForward = dependencies.has(`${action}->${other}`);
306
+ const hasBackward = dependencies.has(`${other}->${action}`);
307
+ if (!hasForward && !hasBackward) {
308
+ group.push(other);
309
+ assigned.add(other);
310
+ }
311
+ }
312
+ if (group.length > 1) {
313
+ groups.push(group);
314
+ }
315
+ }
316
+ return groups;
317
+ }
318
+ }
319
+ export function validatePlan(plan, registry, config) {
320
+ const validator = new PlanValidator(registry, config);
321
+ return validator.validate(plan);
322
+ }
323
+ export function simulatePlan(plan, registry) {
324
+ const stateTrace = [plan.initialState];
325
+ let currentState = plan.initialState;
326
+ for (const action of plan.actions) {
327
+ const schema = registry.get(action.schemaName);
328
+ if (!schema) {
329
+ return { success: false, finalState: currentState, stateTrace };
330
+ }
331
+ const preOk = schema.preconditions.every((pre) => evaluatePrecondition(pre, currentState, action.parameters));
332
+ if (!preOk) {
333
+ return { success: false, finalState: currentState, stateTrace };
334
+ }
335
+ currentState = applyAction(action, currentState, schema);
336
+ stateTrace.push(currentState);
337
+ }
338
+ const goalsOk = plan.goalConditions.every((goal) => evaluatePrecondition(goal, currentState));
339
+ return {
340
+ success: goalsOk,
341
+ finalState: currentState,
342
+ stateTrace,
343
+ };
344
+ }
345
+ export function formatValidationResult(result) {
346
+ const lines = [];
347
+ lines.push(`Validation ${result.valid ? 'PASSED' : 'FAILED'}`);
348
+ lines.push('');
349
+ if (result.errors.length > 0) {
350
+ lines.push(`Errors (${result.errors.length}):`);
351
+ for (const error of result.errors) {
352
+ const location = error.actionIndex !== undefined ? ` [action ${error.actionIndex}]` : '';
353
+ lines.push(` ✗ ${error.type}${location}: ${error.message}`);
354
+ }
355
+ lines.push('');
356
+ }
357
+ if (result.warnings.length > 0) {
358
+ lines.push(`Warnings (${result.warnings.length}):`);
359
+ for (const warning of result.warnings) {
360
+ const location = warning.actionIndex !== undefined ? ` [action ${warning.actionIndex}]` : '';
361
+ lines.push(` ⚠ ${warning.type}${location}: ${warning.message}`);
362
+ }
363
+ lines.push('');
364
+ }
365
+ if (result.satisfiedGoals.length > 0) {
366
+ lines.push('Satisfied goals:');
367
+ for (const goal of result.satisfiedGoals) {
368
+ lines.push(` ✓ ${goal}`);
369
+ }
370
+ }
371
+ if (result.unsatisfiedGoals.length > 0) {
372
+ lines.push('Unsatisfied goals:');
373
+ for (const goal of result.unsatisfiedGoals) {
374
+ lines.push(` ✗ ${goal}`);
375
+ }
376
+ }
377
+ return lines.join('\n');
378
+ }
379
+ //# sourceMappingURL=plan-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-validator.js","sourceRoot":"","sources":["../../src/planning/plan-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { Plan, PlanAction, PlanState, ActionSchema, PlanValidationResult, PlanRepairResult, InvariantCheckResult } from '@cogitator-ai/types';
2
+ export interface PlanGenerationContext {
3
+ goal: string;
4
+ initialState: Record<string, unknown>;
5
+ availableActions: ActionSchema[];
6
+ constraints?: string[];
7
+ }
8
+ export declare function createPlanGenerationPrompt(ctx: PlanGenerationContext): string;
9
+ export interface PlanValidationPromptContext {
10
+ plan: Plan;
11
+ validationResult: PlanValidationResult;
12
+ availableActions: ActionSchema[];
13
+ }
14
+ export declare function createValidationExplanationPrompt(ctx: PlanValidationPromptContext): string;
15
+ export interface PlanRepairPromptContext {
16
+ plan: Plan;
17
+ repairResult: PlanRepairResult;
18
+ availableActions: ActionSchema[];
19
+ }
20
+ export declare function createRepairExplanationPrompt(ctx: PlanRepairPromptContext): string;
21
+ export interface InvariantViolationContext {
22
+ plan: Plan;
23
+ invariantResults: InvariantCheckResult[];
24
+ }
25
+ export declare function createInvariantViolationPrompt(ctx: InvariantViolationContext): string;
26
+ export interface ActionSuggestionContext {
27
+ currentState: PlanState;
28
+ goalDescription: string;
29
+ availableActions: ActionSchema[];
30
+ actionsAlreadyTaken?: PlanAction[];
31
+ }
32
+ export declare function createActionSuggestionPrompt(ctx: ActionSuggestionContext): string;
33
+ export interface ParsePlanResult {
34
+ plan: Array<{
35
+ action: string;
36
+ parameters: Record<string, unknown>;
37
+ }>;
38
+ explanation?: string;
39
+ }
40
+ export declare function parsePlanResponse(response: string): ParsePlanResult | null;
41
+ export interface ParseActionSuggestionResult {
42
+ action: string;
43
+ parameters: Record<string, unknown>;
44
+ reasoning: string;
45
+ }
46
+ export declare function parseActionSuggestionResponse(response: string): ParseActionSuggestionResult | null;
47
+ export declare function formatPlanForPrompt(plan: Plan): string;
48
+ export declare function formatStateForPrompt(state: PlanState): string;
49
+ export declare function formatActionsForPrompt(actions: ActionSchema[]): string;
50
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/planning/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAK7B,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAgC7E;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CAgB1F;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,gBAAgB,CAAC;IAC/B,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAgClF;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;CAC1C;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,yBAAyB,GAAG,MAAM,CAgBrF;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC;CACpC;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CA6BjF;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAiB1E;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,GACf,2BAA2B,GAAG,IAAI,CAepC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAwBtD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAI7D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAEtE"}
@@ -0,0 +1,186 @@
1
+ import { schemaToString, actionToString, preconditionToString } from './action-schema';
2
+ import { formatValidationResult } from './plan-validator';
3
+ import { formatInvariantResults } from './invariant-checker';
4
+ export function createPlanGenerationPrompt(ctx) {
5
+ const actionsStr = ctx.availableActions.map(schemaToString).join('\n\n');
6
+ const stateStr = Object.entries(ctx.initialState)
7
+ .map(([k, v]) => ` ${k} = ${JSON.stringify(v)}`)
8
+ .join('\n');
9
+ const constraintsStr = ctx.constraints?.length
10
+ ? `\n\nConstraints:\n${ctx.constraints.map((c) => ` - ${c}`).join('\n')}`
11
+ : '';
12
+ return `You are a planning expert. Generate a plan to achieve the given goal.
13
+
14
+ Goal: ${ctx.goal}
15
+
16
+ Initial State:
17
+ ${stateStr}
18
+
19
+ Available Actions:
20
+ ${actionsStr}${constraintsStr}
21
+
22
+ Generate a sequence of actions to achieve the goal. Respond with JSON:
23
+ {
24
+ "plan": [
25
+ {
26
+ "action": "action_name",
27
+ "parameters": { "param1": "value1", ... }
28
+ }
29
+ ],
30
+ "explanation": "Brief explanation of the plan"
31
+ }
32
+
33
+ JSON:`;
34
+ }
35
+ export function createValidationExplanationPrompt(ctx) {
36
+ const planStr = ctx.plan.actions.map((a, i) => `${i + 1}. ${actionToString(a)}`).join('\n');
37
+ const validationStr = formatValidationResult(ctx.validationResult);
38
+ return `Explain the validation results for the following plan:
39
+
40
+ Plan:
41
+ ${planStr}
42
+
43
+ Validation Results:
44
+ ${validationStr}
45
+
46
+ Provide a clear explanation of:
47
+ 1. What the plan is trying to achieve
48
+ 2. Why it passed or failed validation
49
+ 3. If it failed, what went wrong and how to fix it`;
50
+ }
51
+ export function createRepairExplanationPrompt(ctx) {
52
+ const originalPlanStr = ctx.plan.actions
53
+ .map((a, i) => `${i + 1}. ${actionToString(a)}`)
54
+ .join('\n');
55
+ const repairedPlanStr = ctx.repairResult.repairedPlan
56
+ ? ctx.repairResult.repairedPlan.actions
57
+ .map((a, i) => `${i + 1}. ${actionToString(a)}`)
58
+ .join('\n')
59
+ : 'No repaired plan generated';
60
+ const suggestionsStr = ctx.repairResult.suggestions
61
+ .map((s) => `- ${s.type}: ${s.reason} (${(s.confidence * 100).toFixed(0)}% confidence)`)
62
+ .join('\n');
63
+ return `Explain the plan repair process:
64
+
65
+ Original Plan:
66
+ ${originalPlanStr}
67
+
68
+ Repaired Plan:
69
+ ${repairedPlanStr}
70
+
71
+ Repair Suggestions:
72
+ ${suggestionsStr}
73
+
74
+ Repair ${ctx.repairResult.success ? 'succeeded' : 'failed'}.
75
+
76
+ Explain:
77
+ 1. What was wrong with the original plan
78
+ 2. How it was fixed (or why it couldn't be fixed)
79
+ 3. Why the suggested repairs make sense`;
80
+ }
81
+ export function createInvariantViolationPrompt(ctx) {
82
+ const planStr = ctx.plan.actions.map((a, i) => `${i + 1}. ${actionToString(a)}`).join('\n');
83
+ const resultsStr = formatInvariantResults(ctx.invariantResults);
84
+ return `Explain the safety property violations in the following plan:
85
+
86
+ Plan:
87
+ ${planStr}
88
+
89
+ Safety Check Results:
90
+ ${resultsStr}
91
+
92
+ Explain:
93
+ 1. Which safety properties were violated
94
+ 2. Why they were violated
95
+ 3. What changes would prevent the violations`;
96
+ }
97
+ export function createActionSuggestionPrompt(ctx) {
98
+ const stateStr = Object.entries(ctx.currentState.variables)
99
+ .map(([k, v]) => ` ${k} = ${JSON.stringify(v)}`)
100
+ .join('\n');
101
+ const actionsStr = ctx.availableActions.map(schemaToString).join('\n\n');
102
+ const historyStr = ctx.actionsAlreadyTaken?.length
103
+ ? `\nActions already taken:\n${ctx.actionsAlreadyTaken.map((a, i) => `${i + 1}. ${actionToString(a)}`).join('\n')}`
104
+ : '';
105
+ return `Given the current state and goal, suggest the next best action.
106
+
107
+ Current State:
108
+ ${stateStr}
109
+
110
+ Goal: ${ctx.goalDescription}${historyStr}
111
+
112
+ Available Actions:
113
+ ${actionsStr}
114
+
115
+ Suggest the next action and explain why. Respond with JSON:
116
+ {
117
+ "action": "action_name",
118
+ "parameters": { "param1": "value1", ... },
119
+ "reasoning": "Why this action is the best choice"
120
+ }
121
+
122
+ JSON:`;
123
+ }
124
+ export function parsePlanResponse(response) {
125
+ try {
126
+ const jsonMatch = /\{[\s\S]*\}/.exec(response);
127
+ if (!jsonMatch)
128
+ return null;
129
+ const parsed = JSON.parse(jsonMatch[0]);
130
+ return {
131
+ plan: (parsed.plan || []).map((item) => ({
132
+ action: String(item.action || ''),
133
+ parameters: item.parameters || {},
134
+ })),
135
+ explanation: parsed.explanation,
136
+ };
137
+ }
138
+ catch {
139
+ return null;
140
+ }
141
+ }
142
+ export function parseActionSuggestionResponse(response) {
143
+ try {
144
+ const jsonMatch = /\{[\s\S]*\}/.exec(response);
145
+ if (!jsonMatch)
146
+ return null;
147
+ const parsed = JSON.parse(jsonMatch[0]);
148
+ return {
149
+ action: String(parsed.action || ''),
150
+ parameters: parsed.parameters || {},
151
+ reasoning: String(parsed.reasoning || ''),
152
+ };
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ }
158
+ export function formatPlanForPrompt(plan) {
159
+ const lines = [];
160
+ lines.push(`Plan: ${plan.name || plan.id}`);
161
+ lines.push('');
162
+ lines.push('Initial State:');
163
+ for (const [k, v] of Object.entries(plan.initialState.variables)) {
164
+ lines.push(` ${k} = ${JSON.stringify(v)}`);
165
+ }
166
+ lines.push('');
167
+ lines.push('Actions:');
168
+ for (let i = 0; i < plan.actions.length; i++) {
169
+ lines.push(` ${i + 1}. ${actionToString(plan.actions[i])}`);
170
+ }
171
+ lines.push('');
172
+ lines.push('Goals:');
173
+ for (const goal of plan.goalConditions) {
174
+ lines.push(` - ${preconditionToString(goal)}`);
175
+ }
176
+ return lines.join('\n');
177
+ }
178
+ export function formatStateForPrompt(state) {
179
+ return Object.entries(state.variables)
180
+ .map(([k, v]) => `${k} = ${JSON.stringify(v)}`)
181
+ .join('\n');
182
+ }
183
+ export function formatActionsForPrompt(actions) {
184
+ return actions.map(schemaToString).join('\n\n');
185
+ }
186
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/planning/prompts.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAS7D,MAAM,UAAU,0BAA0B,CAAC,GAA0B;IACnE,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM;QAC5C,CAAC,CAAC,qBAAqB,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;QAED,GAAG,CAAC,IAAI;;;EAGd,QAAQ;;;EAGR,UAAU,GAAG,cAAc;;;;;;;;;;;;;MAavB,CAAC;AACP,CAAC;AAQD,MAAM,UAAU,iCAAiC,CAAC,GAAgC;IAChF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEnE,OAAO;;;EAGP,OAAO;;;EAGP,aAAa;;;;;mDAKoC,CAAC;AACpD,CAAC;AAQD,MAAM,UAAU,6BAA6B,CAAC,GAA4B;IACxE,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO;SACrC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,YAAY;QACnD,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,4BAA4B,CAAC;IAEjC,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW;SAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;SACvF,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;EAGP,eAAe;;;EAGf,eAAe;;;EAGf,cAAc;;SAEP,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;;;;;wCAKlB,CAAC;AACzC,CAAC;AAOD,MAAM,UAAU,8BAA8B,CAAC,GAA8B;IAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEhE,OAAO;;;EAGP,OAAO;;;EAGP,UAAU;;;;;6CAKiC,CAAC;AAC9C,CAAC;AASD,MAAM,UAAU,4BAA4B,CAAC,GAA4B;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEzE,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,EAAE,MAAM;QAChD,CAAC,CAAC,6BAA6B,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnH,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;EAGP,QAAQ;;QAEF,GAAG,CAAC,eAAe,GAAG,UAAU;;;EAGtC,UAAU;;;;;;;;;MASN,CAAC;AACP,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAExC,OAAO;YACL,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAA6B,EAAE,EAAE,CAAC,CAAC;gBAChE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBACjC,UAAU,EAAG,IAAI,CAAC,UAAsC,IAAI,EAAE;aAC/D,CAAC,CAAC;YACH,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,6BAA6B,CAC3C,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAExC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACnC,UAAU,EAAG,MAAM,CAAC,UAAsC,IAAI,EAAE;YAChE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAU;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAgB;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC5D,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC"}