@putervision/agent-reasoning-mcp 0.1.1
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/CONTRIBUTING.md +7 -0
- package/LICENSE +21 -0
- package/PROJECT_INSTRUCTIONS_TEMPLATE.md +9 -0
- package/README.md +95 -0
- package/SECURITY.md +11 -0
- package/dist/chunk-2UKYRERH.js +403 -0
- package/dist/chunk-2UKYRERH.js.map +1 -0
- package/dist/chunk-6CYLIFQX.js +442 -0
- package/dist/chunk-6CYLIFQX.js.map +1 -0
- package/dist/chunk-6EWSPFTX.js +1541 -0
- package/dist/chunk-6EWSPFTX.js.map +1 -0
- package/dist/chunk-F4TEZ2TS.js +615 -0
- package/dist/chunk-F4TEZ2TS.js.map +1 -0
- package/dist/chunk-SOCPGFU4.js +538 -0
- package/dist/chunk-SOCPGFU4.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +169 -0
- package/dist/cli.js.map +1 -0
- package/dist/db-EL7JURVI.js +35 -0
- package/dist/db-EL7JURVI.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/init-JCBP646U.js +15 -0
- package/dist/init-JCBP646U.js.map +1 -0
- package/dist/lib.d.ts +1003 -0
- package/dist/lib.js +237 -0
- package/dist/lib.js.map +1 -0
- package/glama.json +42 -0
- package/manifest.json +26 -0
- package/package.json +119 -0
- package/server.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/traces.ts","../src/engine/utility.ts","../src/engine/risk.ts","../src/engine/bridge/state-bridge.ts","../src/engine/bridge/vision-bridge.ts","../src/engine/bridge/world-bridge.ts","../src/engine/evaluator.ts","../src/engine/replanner.ts","../src/engine/snapshots.ts","../src/server.ts","../src/tools/handlers.ts","../src/tools/definitions.ts","../src/engine/advisor.ts","../src/tools/prompts.ts"],"sourcesContent":["import Database from 'better-sqlite3';\nimport {\n DecisionTrace,\n TraceId,\n CandidateAction,\n RiskAssessmentResult,\n GoalId,\n} from '../schema/types.js';\nimport { generateId } from '../utils/id.js';\nimport { getCurrentIsoString } from '../utils/time.js';\nimport { safeJsonParse, safeJsonStringify } from '../utils/json-validator.js';\nimport { ValidationError, NotFoundError } from '../utils/errors.js';\nimport { logReasoningEvent } from './events.js';\n\nexport class DecisionTraceEngine {\n static recordTrace(\n db: Database.Database,\n params: {\n project: string;\n session_id?: string;\n goal_id?: string;\n situation_summary: string;\n candidate_actions: CandidateAction[];\n utility_profile: string;\n chosen_action: string;\n reasoning_chain: string[];\n risk_assessment?: RiskAssessmentResult;\n outcome?: string;\n latency_ms?: number;\n metadata?: Record<string, unknown>;\n }\n ): DecisionTrace {\n if (!params.situation_summary || !params.chosen_action) {\n throw new ValidationError('situation_summary and chosen_action are required.');\n }\n\n const id = generateId() as TraceId;\n const now = getCurrentIsoString();\n\n db.prepare(\n `\n INSERT INTO decision_traces (\n id, project, session_id, goal_id, situation_summary, candidate_actions_json,\n utility_profile, chosen_action, reasoning_chain_json, risk_assessment_json,\n outcome, latency_ms, metadata_json, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `\n ).run(\n id,\n params.project,\n params.session_id ?? null,\n params.goal_id ?? null,\n params.situation_summary,\n safeJsonStringify(params.candidate_actions || []),\n params.utility_profile,\n params.chosen_action,\n safeJsonStringify(params.reasoning_chain || []),\n params.risk_assessment ? safeJsonStringify(params.risk_assessment) : null,\n params.outcome ?? null,\n params.latency_ms ?? 0,\n params.metadata ? safeJsonStringify(params.metadata) : null,\n now\n );\n\n logReasoningEvent(db, {\n project: params.project,\n entity_id: id,\n entity_type: 'trace',\n action: 'record',\n details: { chosen_action: params.chosen_action, utility_profile: params.utility_profile },\n });\n\n return {\n id,\n project: params.project,\n session_id: params.session_id,\n goal_id: (params.goal_id as GoalId) || undefined,\n situation_summary: params.situation_summary,\n candidate_actions: params.candidate_actions,\n utility_profile: params.utility_profile,\n chosen_action: params.chosen_action,\n reasoning_chain: params.reasoning_chain,\n risk_assessment: params.risk_assessment,\n outcome: params.outcome,\n latency_ms: params.latency_ms || 0,\n metadata: params.metadata,\n created_at: now,\n };\n }\n\n static getTrace(db: Database.Database, params: { project: string; id: string }): DecisionTrace {\n const row = db\n .prepare('SELECT * FROM decision_traces WHERE project = ? AND id = ?')\n .get(params.project, params.id) as any;\n if (!row) throw new NotFoundError(`Decision trace ${params.id} not found.`);\n return this.mapRowToTrace(row);\n }\n\n static listTraces(\n db: Database.Database,\n params: { project: string; goal_id?: string; limit?: number }\n ): DecisionTrace[] {\n let sql = 'SELECT * FROM decision_traces WHERE project = ?';\n const sqlParams: any[] = [params.project];\n\n if (params.goal_id) {\n sql += ' AND goal_id = ?';\n sqlParams.push(params.goal_id);\n }\n\n sql += ' ORDER BY created_at DESC LIMIT ?';\n sqlParams.push(params.limit || 50);\n\n const rows = db.prepare(sql).all(...sqlParams) as any[];\n return rows.map((r) => this.mapRowToTrace(r));\n }\n\n static getLatestTrace(db: Database.Database, project: string): DecisionTrace | null {\n const row = db\n .prepare('SELECT * FROM decision_traces WHERE project = ? ORDER BY created_at DESC LIMIT 1')\n .get(project) as any;\n if (!row) return null;\n return this.mapRowToTrace(row);\n }\n\n static explainTrace(db: Database.Database, params: { project: string; id: string }): string {\n const trace = this.getTrace(db, params);\n let out = `# Decision Trace: ${trace.id}\\n\\n`;\n out += `**Situation**: ${trace.situation_summary}\\n`;\n out += `**Profile**: ${trace.utility_profile}\\n`;\n out += `**Chosen Action**: \\`${trace.chosen_action}\\` (Latency: ${trace.latency_ms}ms)\\n\\n`;\n out += `## Chain of Thought:\\n`;\n for (let i = 0; i < trace.reasoning_chain.length; i++) {\n out += `${i + 1}. ${trace.reasoning_chain[i]}\\n`;\n }\n out += `\\n## Candidate Utilities:\\n`;\n for (const c of trace.candidate_actions) {\n out += `- \\`${c.action}\\`: Score = ${c.estimated_utility.toFixed(3)}\\n`;\n }\n return out;\n }\n\n private static mapRowToTrace(row: any): DecisionTrace {\n return {\n id: row.id as TraceId,\n project: row.project,\n session_id: row.session_id,\n goal_id: row.goal_id as GoalId | undefined,\n situation_summary: row.situation_summary,\n candidate_actions: safeJsonParse(row.candidate_actions_json, []),\n utility_profile: row.utility_profile,\n chosen_action: row.chosen_action,\n reasoning_chain: safeJsonParse(row.reasoning_chain_json, []),\n risk_assessment: safeJsonParse(row.risk_assessment_json, undefined),\n outcome: row.outcome,\n latency_ms: row.latency_ms,\n metadata: safeJsonParse(row.metadata_json, undefined),\n created_at: row.created_at,\n };\n }\n}\n","import { UtilityProfile, CandidateAction } from '../schema/types.js';\n\nexport class UtilityEngine {\n static scoreCandidate(\n candidate: {\n action: string;\n parameters?: Record<string, unknown>;\n attributes?: Record<string, number>;\n },\n profile: UtilityProfile\n ): CandidateAction {\n const attrs = candidate.attributes || {\n aggression: 0.5,\n caution: 0.5,\n greed: 0.5,\n efficiency: 0.5,\n exploration: 0.5,\n cooperation: 0.5,\n };\n\n let totalScore = 0;\n let weightSum = 0;\n const breakdown: Record<string, number> = {};\n\n for (const [k, w] of Object.entries(profile.weights)) {\n const u = attrs[k] !== undefined ? attrs[k] : 0.5;\n const weightedScore = w * u;\n breakdown[k] = weightedScore;\n totalScore += weightedScore;\n weightSum += w;\n }\n\n const estimated_utility = weightSum > 0 ? totalScore / weightSum : totalScore;\n\n return {\n action: candidate.action,\n parameters: candidate.parameters,\n estimated_utility,\n utility_breakdown: breakdown,\n feasibility: 1.0,\n };\n }\n\n static rankCandidates(\n candidates: Array<{\n action: string;\n parameters?: Record<string, unknown>;\n attributes?: Record<string, number>;\n }>,\n profile: UtilityProfile\n ): CandidateAction[] {\n const scored = candidates.map((c) => this.scoreCandidate(c, profile));\n return scored.sort((a, b) => b.estimated_utility - a.estimated_utility);\n }\n}\n","import { RiskAssessmentResult, UtilityProfile } from '../schema/types.js';\n\nexport class RiskEngine {\n static assessAction(\n actionName: string,\n params?: Record<string, unknown>,\n context?: Record<string, unknown>,\n profile?: UtilityProfile\n ): RiskAssessmentResult {\n const threats: string[] = [];\n const opportunities: string[] = [];\n const mitigations: string[] = [];\n let riskScore = 0.2;\n\n const hp = (context?.vitals as any)?.hp ?? 100;\n const threatLevel = (context?.vitals as any)?.threat_level ?? 0;\n\n if (/attack|combat|engage|kite/i.test(actionName)) {\n if (hp < 30) {\n threats.push('Critical health: engagement risks fatality');\n mitigations.push('Flee or heal before attacking');\n riskScore += 0.5;\n } else {\n opportunities.push('Eliminating target yields rewards and security');\n riskScore += 0.2;\n }\n } else if (/flee|retreat|heal/i.test(actionName)) {\n opportunities.push('Preserves agent survival');\n mitigations.push('Navigate away from enemy clusters');\n riskScore = 0.1;\n } else if (/gather|farm|loot/i.test(actionName)) {\n opportunities.push('Resource accumulation');\n if (threatLevel > 0.5) {\n threats.push('Enemies nearby while vulnerable in gathering animation');\n mitigations.push('Maintain line-of-sight check');\n riskScore += 0.3;\n }\n }\n\n if (profile) {\n // Adjust risk perception by caution vs aggression weights\n riskScore =\n (riskScore * (profile.weights.caution || 0.5)) / (profile.weights.aggression || 0.5);\n }\n\n riskScore = Math.max(0, Math.min(1, riskScore));\n\n let threat_level: 'none' | 'low' | 'medium' | 'high' | 'critical' = 'low';\n if (riskScore > 0.8) threat_level = 'critical';\n else if (riskScore > 0.6) threat_level = 'high';\n else if (riskScore > 0.4) threat_level = 'medium';\n else if (riskScore < 0.1) threat_level = 'none';\n\n return {\n threat_level,\n risk_score: riskScore,\n threats,\n opportunities,\n mitigations,\n };\n }\n}\n","export interface StateBridgeData {\n tasks: Array<{ id: string; title: string; status: string; priority: number }>;\n blockers: Array<{ id: string; description: string }>;\n decisions: Array<{ id: string; recommendation: string }>;\n}\n\nexport class StateBridge {\n static normalizeStateData(rawStateData: any): StateBridgeData {\n if (!rawStateData || typeof rawStateData !== 'object') {\n return { tasks: [], blockers: [], decisions: [] };\n }\n return {\n tasks: Array.isArray(rawStateData.tasks) ? rawStateData.tasks : [],\n blockers: Array.isArray(rawStateData.blockers) ? rawStateData.blockers : [],\n decisions: Array.isArray(rawStateData.decisions) ? rawStateData.decisions : [],\n };\n }\n}\n","export interface VisionBridgeData {\n current_state_id?: string;\n description?: string;\n grounded_elements: Array<{ selector: string; label: string }>;\n}\n\nexport class VisionBridge {\n static normalizeVisionData(rawVisionData: any): VisionBridgeData {\n if (!rawVisionData || typeof rawVisionData !== 'object') {\n return { grounded_elements: [] };\n }\n return {\n current_state_id: rawVisionData.current_state_id,\n description: rawVisionData.description,\n grounded_elements: Array.isArray(rawVisionData.grounded_elements) ? rawVisionData.grounded_elements : [],\n };\n }\n}\n","export interface WorldBridgeData {\n entities: Array<{ id: string; type: string; position: [number, number, number]; status: string }>;\n relations: Array<{ source: string; relation: string; target: string }>;\n observer_position?: [number, number, number];\n}\n\nexport class WorldBridge {\n static normalizeWorldData(rawWorldData: any): WorldBridgeData {\n if (!rawWorldData || typeof rawWorldData !== 'object') {\n return { entities: [], relations: [] };\n }\n return {\n entities: Array.isArray(rawWorldData.entities) ? rawWorldData.entities : [],\n relations: Array.isArray(rawWorldData.relations) ? rawWorldData.relations : [],\n observer_position: rawWorldData.observer_position,\n };\n }\n}\n","import Database from 'better-sqlite3';\nimport { SituationSnapshot, CandidateAction } from '../schema/types.js';\nimport { UtilityProfileEngine } from './personality.js';\nimport { UtilityEngine } from './utility.js';\nimport { RiskEngine } from './risk.js';\nimport { DecisionTraceEngine } from './traces.js';\nimport { StateBridge } from './bridge/state-bridge.js';\nimport { VisionBridge } from './bridge/vision-bridge.js';\nimport { WorldBridge } from './bridge/world-bridge.js';\n\nexport class EvaluatorEngine {\n static evaluateSituation(\n db: Database.Database,\n params: {\n project: string;\n snapshot?: SituationSnapshot;\n quick_context?: string;\n candidate_actions?: Array<{\n action: string;\n parameters?: Record<string, unknown>;\n description?: string;\n }>;\n utility_profile?: string;\n }\n ): {\n chosen_action: CandidateAction;\n ranked_candidates: CandidateAction[];\n reasoning_chain: string[];\n risk_assessment: any;\n trace_id: string;\n } {\n const startTime = Date.now();\n const profile = params.utility_profile\n ? UtilityProfileEngine.getProfile(db, {\n project: params.project,\n name: params.utility_profile,\n })\n : UtilityProfileEngine.getActiveProfile(db, params.project);\n\n const candidates =\n params.candidate_actions && params.candidate_actions.length > 0\n ? params.candidate_actions\n : [\n { action: 'idle_patrol', parameters: { radius: 15 } },\n { action: 'gather_resources', parameters: { target_type: 'ore' } },\n { action: 'engage_threat', parameters: { aggressive: true } },\n { action: 'flee_to_safety', parameters: { threshold_hp: 30 } },\n ];\n\n const reasoning_chain: string[] = [];\n reasoning_chain.push(\n `Loaded active utility profile: \"${profile.name}\" (Aggression: ${profile.weights.aggression}, Caution: ${profile.weights.caution}).`\n );\n\n let threatLevel = 0.0;\n let currentHp = 100;\n\n if (params.snapshot) {\n reasoning_chain.push(\n `Analyzed situation snapshot from session \"${params.snapshot.session_id}\".`\n );\n if (params.snapshot.vitals) {\n threatLevel = params.snapshot.vitals.threat_level ?? 0.0;\n currentHp = params.snapshot.vitals.hp ?? 100;\n reasoning_chain.push(`Vitals: HP=${currentHp}, Threat=${threatLevel}.`);\n }\n\n // 1. State Memory Bridge hydration\n if (params.snapshot.state) {\n const stateData = StateBridge.normalizeStateData(params.snapshot.state);\n if (stateData.blockers.length > 0) {\n reasoning_chain.push(\n `StateBridge: Detected ${stateData.blockers.length} active blocker(s). Elevating caution.`\n );\n threatLevel = Math.max(threatLevel, 0.4);\n }\n if (stateData.tasks.length > 0) {\n reasoning_chain.push(\n `StateBridge: Found ${stateData.tasks.length} active workflow task(s).`\n );\n }\n }\n\n // 2. Vision Memory Bridge hydration\n if (params.snapshot.vision) {\n const visionData = VisionBridge.normalizeVisionData(params.snapshot.vision);\n if (visionData.description) {\n reasoning_chain.push(\n `VisionBridge: Visual layout: \"${visionData.description.substring(0, 100)}...\".`\n );\n }\n if (visionData.grounded_elements.length > 0) {\n reasoning_chain.push(\n `VisionBridge: ${visionData.grounded_elements.length} grounded interactive UI element(s) identified.`\n );\n }\n }\n\n // 3. World Model Bridge hydration\n if (params.snapshot.world) {\n const worldData = WorldBridge.normalizeWorldData(params.snapshot.world);\n if (worldData.entities.length > 0) {\n const hostileCount = worldData.entities.filter(\n (e) => /hostile|enemy|threat/i.test(e.type) || /hostile/i.test(e.status)\n ).length;\n if (hostileCount > 0) {\n threatLevel = Math.max(threatLevel, 0.7);\n reasoning_chain.push(\n `WorldBridge: Detected ${hostileCount} hostile spatial entity/entities in proximity.`\n );\n } else {\n reasoning_chain.push(\n `WorldBridge: Tracking ${worldData.entities.length} spatial entities in environment.`\n );\n }\n }\n }\n } else if (params.quick_context) {\n reasoning_chain.push(`Quick context: ${params.quick_context}`);\n }\n\n // Score candidates with situational modulation\n const scoredCandidates: CandidateAction[] = candidates.map((c) => {\n const isCombat = /engage|attack|combat/i.test(c.action);\n const isEscape = /flee|heal/i.test(c.action);\n const isGather = /gather|loot|farm/i.test(c.action);\n const isPatrol = /patrol|explore|navigate/i.test(c.action);\n\n let eff = 0.7;\n if (threatLevel > 0.6 && isCombat) eff += 0.25;\n if (threatLevel > 0.6 && isPatrol) eff -= 0.3;\n if (currentHp < 30 && isEscape) eff += 0.35;\n\n const attributes: Record<string, number> = {\n aggression: isCombat ? 0.9 : 0.2,\n caution: isEscape || isPatrol ? 0.8 : 0.3,\n greed: isGather ? 0.9 : 0.2,\n efficiency: Math.min(1.0, Math.max(0.1, eff)),\n exploration: isPatrol ? (threatLevel > 0.5 ? 0.3 : 0.8) : 0.3,\n cooperation: 0.5,\n };\n\n const candidateScored = UtilityEngine.scoreCandidate({ ...c, attributes }, profile);\n const risk = RiskEngine.assessAction(\n c.action,\n c.parameters,\n params.snapshot ? { vitals: params.snapshot.vitals } : undefined,\n profile\n );\n candidateScored.risk_score = risk.risk_score;\n return candidateScored;\n });\n\n const ranked = scoredCandidates.sort((a, b) => b.estimated_utility - a.estimated_utility);\n const chosen = ranked[0];\n\n reasoning_chain.push(`Scored ${ranked.length} candidate actions against utility weights.`);\n reasoning_chain.push(\n `Selected highest utility action: \"${chosen.action}\" with estimated utility ${chosen.estimated_utility.toFixed(3)}.`\n );\n\n const risk_assessment = RiskEngine.assessAction(\n chosen.action,\n chosen.parameters,\n params.snapshot ? { vitals: params.snapshot.vitals } : undefined,\n profile\n );\n const latency_ms = Date.now() - startTime;\n\n const summary = params.snapshot?.session_id\n ? `Evaluation for session ${params.snapshot.session_id}`\n : params.quick_context || 'General situation evaluation';\n\n const trace = DecisionTraceEngine.recordTrace(db, {\n project: params.project,\n session_id: params.snapshot?.session_id,\n situation_summary: summary,\n candidate_actions: ranked,\n utility_profile: profile.name,\n chosen_action: chosen.action,\n reasoning_chain,\n risk_assessment,\n latency_ms,\n });\n\n return {\n chosen_action: chosen,\n ranked_candidates: ranked,\n reasoning_chain,\n risk_assessment,\n trace_id: trace.id,\n };\n }\n}\n","import Database from 'better-sqlite3';\nimport { GoalEngine } from './goals.js';\nimport { IntentionEngine } from './intentions.js';\nimport { Goal } from '../schema/types.js';\nimport { NotFoundError } from '../utils/errors.js';\n\nexport class ReplannerEngine {\n static replanGoal(\n db: Database.Database,\n params: {\n project: string;\n goal_id: string;\n blocker_description?: string;\n trigger_event?: string;\n preserve_completed?: boolean;\n }\n ): {\n original_goal: Goal;\n new_subgoals: Goal[];\n cancelled_intentions: number;\n recommended_action: string;\n } {\n const goal = GoalEngine.getGoal(db, { project: params.project, id: params.goal_id });\n\n // Cancel pending/dispatched intentions linked to this goal\n const intentions = IntentionEngine.listIntentions(db, {\n project: params.project,\n goal_id: goal.id,\n });\n let cancelledCount = 0;\n for (const item of intentions) {\n if (item.status === 'pending' || item.status === 'dispatched') {\n IntentionEngine.resolveIntention(db, {\n project: params.project,\n id: item.id,\n status: 'aborted',\n result: {\n reason: `Replanning triggered: ${params.blocker_description || 'Reactive event'}`,\n },\n });\n cancelledCount++;\n }\n }\n\n // Generate fallback sub-goals\n const fallbackSubgoals = [\n {\n title: `Resolve blocker: ${params.blocker_description || 'Investigate obstacle'}`,\n priority: goal.priority + 0.1,\n },\n { title: `Resume main objective: ${goal.title}`, priority: goal.priority },\n ];\n\n const decomposed = GoalEngine.decomposeGoal(db, {\n project: params.project,\n parent_id: goal.id,\n subgoals: fallbackSubgoals,\n });\n\n return {\n original_goal: goal,\n new_subgoals: decomposed.subgoals,\n cancelled_intentions: cancelledCount,\n recommended_action: fallbackSubgoals[0].title,\n };\n }\n}\n","import Database from 'better-sqlite3';\nimport { generateId } from '../utils/id.js';\nimport { getCurrentIsoString } from '../utils/time.js';\nimport { ValidationError } from '../utils/errors.js';\nimport { safeJsonParse } from '../utils/json-validator.js';\n\nexport class SnapshotEngine {\n static saveSnapshot(\n db: Database.Database,\n params: { project: string; name: string; description?: string }\n ): { snapshot_id: string; name: string; timestamp: string } {\n if (!params.name || typeof params.name !== 'string') {\n throw new ValidationError('Snapshot name is required.');\n }\n\n const goals = db.prepare('SELECT * FROM goals WHERE project = ?').all(params.project);\n const beliefs = db.prepare('SELECT * FROM beliefs WHERE project = ?').all(params.project);\n const profiles = db\n .prepare('SELECT * FROM utility_profiles WHERE project = ?')\n .all(params.project);\n const intentions = db.prepare('SELECT * FROM intentions WHERE project = ?').all(params.project);\n const knowledge = db\n .prepare('SELECT * FROM knowledge_patterns WHERE project = ?')\n .all(params.project);\n\n const data = { goals, beliefs, profiles, intentions, knowledge };\n const id = generateId();\n const now = getCurrentIsoString();\n\n db.prepare(\n `\n INSERT INTO snapshots (id, project, name, description, data_json, created_at)\n VALUES (?, ?, ?, ?, ?, ?)\n ON CONFLICT(project, name) DO UPDATE SET\n description = excluded.description,\n data_json = excluded.data_json,\n created_at = excluded.created_at\n `\n ).run(id, params.project, params.name, params.description ?? null, JSON.stringify(data), now);\n\n return { snapshot_id: id, name: params.name, timestamp: now };\n }\n\n static restoreSnapshot(\n db: Database.Database,\n params: { project: string; name: string }\n ): { restored_goals: number; restored_beliefs: number } {\n const row = db\n .prepare('SELECT * FROM snapshots WHERE project = ? AND name = ?')\n .get(params.project, params.name) as any;\n\n if (!row) {\n throw new ValidationError(\n `Snapshot \"${params.name}\" not found for project \"${params.project}\".`\n );\n }\n\n const data = safeJsonParse(row.data_json, { goals: [], beliefs: [] });\n\n db.transaction(() => {\n db.prepare('DELETE FROM intentions WHERE project = ?').run(params.project);\n db.prepare('DELETE FROM beliefs WHERE project = ?').run(params.project);\n db.prepare('DELETE FROM goals WHERE project = ?').run(params.project);\n\n if (Array.isArray(data.goals)) {\n const stmt = db.prepare(`\n INSERT INTO goals (id, project, session_id, parent_id, title, description, status, priority, utility_weights_json, deadline_at, progress, success_criteria_json, failure_reason, metadata_json, client_request_id, created_at, updated_at, version)\n VALUES (@id, @project, @session_id, @parent_id, @title, @description, @status, @priority, @utility_weights_json, @deadline_at, @progress, @success_criteria_json, @failure_reason, @metadata_json, @client_request_id, @created_at, @updated_at, @version)\n `);\n for (const g of data.goals) stmt.run(g);\n }\n\n if (Array.isArray(data.beliefs)) {\n const stmt = db.prepare(`\n INSERT INTO beliefs (id, project, session_id, category, subject, predicate, object_json, confidence, source, source_id, expires_at, decay_rate, last_decayed_at, client_request_id, metadata_json, created_at, updated_at)\n VALUES (@id, @project, @session_id, @category, @subject, @predicate, @object_json, @confidence, @source, @source_id, @expires_at, @decay_rate, @last_decayed_at, @client_request_id, @metadata_json, @created_at, @updated_at)\n `);\n for (const b of data.beliefs) stmt.run(b);\n }\n })();\n\n return {\n restored_goals: data.goals?.length || 0,\n restored_beliefs: data.beliefs?.length || 0,\n };\n }\n\n static listSnapshots(\n db: Database.Database,\n params: { project: string; limit?: number }\n ): Array<{ id: string; name: string; description?: string; created_at: string }> {\n return db\n .prepare(\n 'SELECT id, name, description, created_at FROM snapshots WHERE project = ? ORDER BY created_at DESC LIMIT ?'\n )\n .all(params.project, params.limit || 50) as any[];\n }\n}\n","import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { getVersion } from './utils/version.js';\nimport { registerAllTools } from './tools/handlers.js';\nimport { registerAllPrompts } from './tools/prompts.js';\nimport { getReadOnlyDb, getProjectSlug } from './engine/db.js';\nimport { GoalEngine } from './engine/goals.js';\nimport { BeliefEngine } from './engine/beliefs.js';\nimport { IntentionEngine } from './engine/intentions.js';\nimport { DecisionTraceEngine } from './engine/traces.js';\nimport { UtilityProfileEngine } from './engine/personality.js';\nimport { KnowledgeEngine } from './engine/knowledge.js';\n\nexport const server = new McpServer({\n name: 'io.github.putervision/agent-reasoning-mcp',\n version: getVersion(),\n});\n\nfunction getVarString(val: string | string[] | undefined): string | undefined {\n if (Array.isArray(val)) return val[0];\n return val;\n}\n\n// 1. reasoning-summary\nserver.registerResource(\n 'reasoning-summary',\n new ResourceTemplate('reasoning:///{project}/summary', { list: undefined }),\n {\n title: 'Reasoning Engine Summary Template',\n description: 'High-level BDI cognitive state: active goals, top beliefs, and intention queue health',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const goals = GoalEngine.listGoals(db, { project, status: 'active', limit: 10 });\n const beliefs = BeliefEngine.queryBeliefs(db, { project, limit: 10 });\n const intentions = IntentionEngine.listIntentions(db, { project, status: 'pending', limit: 10 });\n const activeProfile = UtilityProfileEngine.getActiveProfile(db, project);\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ project, activeProfile, active_goals: goals.length, beliefs_count: beliefs.length, pending_intentions: intentions.length }, null, 2),\n },\n ],\n };\n }\n);\n\n// 2. reasoning-goals\nserver.registerResource(\n 'reasoning-goals',\n new ResourceTemplate('reasoning:///{project}/goals', { list: undefined }),\n {\n title: 'Reasoning Active Goals Template',\n description: 'Active goal hierarchy and task DAGs',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const data = GoalEngine.listGoals(db, { project, status: 'active', limit: 100 });\n return {\n contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(data, null, 2) }],\n };\n }\n);\n\n// 3. reasoning-beliefs\nserver.registerResource(\n 'reasoning-beliefs',\n new ResourceTemplate('reasoning:///{project}/beliefs', { list: undefined }),\n {\n title: 'Reasoning Active Beliefs Template',\n description: 'Beliefs with confidence decay ratings',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const data = BeliefEngine.queryBeliefs(db, { project, limit: 100 });\n return {\n contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(data, null, 2) }],\n };\n }\n);\n\n// 4. reasoning-intentions\nserver.registerResource(\n 'reasoning-intentions',\n new ResourceTemplate('reasoning:///{project}/intentions', { list: undefined }),\n {\n title: 'Reasoning Intentions Queue Template',\n description: 'Queued and running intentions dispatched to runtime',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const data = IntentionEngine.listIntentions(db, { project, limit: 100 });\n return {\n contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(data, null, 2) }],\n };\n }\n);\n\n// 5. reasoning-traces\nserver.registerResource(\n 'reasoning-traces',\n new ResourceTemplate('reasoning:///{project}/traces', { list: undefined }),\n {\n title: 'Reasoning Decision Traces Template',\n description: 'Historical chain-of-thought decision logs',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const data = DecisionTraceEngine.listTraces(db, { project, limit: 50 });\n return {\n contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(data, null, 2) }],\n };\n }\n);\n\n// 6. reasoning-profiles\nserver.registerResource(\n 'reasoning-profiles',\n new ResourceTemplate('reasoning:///{project}/profiles', { list: undefined }),\n {\n title: 'Reasoning Utility Profiles Template',\n description: 'Configured utility scoring profiles and weights',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const data = UtilityProfileEngine.listProfiles(db, project);\n return {\n contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(data, null, 2) }],\n };\n }\n);\n\n// 7. reasoning-knowledge\nserver.registerResource(\n 'reasoning-knowledge',\n new ResourceTemplate('reasoning:///{project}/knowledge', { list: undefined }),\n {\n title: 'Reasoning Knowledge Patterns Template',\n description: 'Learned tactics, heuristics, and anti-patterns',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const data = KnowledgeEngine.queryKnowledge(db, { project, limit: 100 });\n return {\n contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(data, null, 2) }],\n };\n }\n);\n\n// 8. reasoning-active-loop\nserver.registerResource(\n 'reasoning-active-loop',\n new ResourceTemplate('reasoning:///{project}/active_loop', { list: undefined }),\n {\n title: 'Reasoning Active Pentad Loop Telemetry',\n description: 'Current loop state linking goal, intention, and latest outcome',\n mimeType: 'application/json',\n },\n async (uri: URL, variables) => {\n const project = getProjectSlug(getVarString(variables.project));\n const db = getReadOnlyDb(project);\n const topGoal = GoalEngine.listGoals(db, { project, status: 'active', limit: 1 })[0] || null;\n const topIntention = IntentionEngine.listIntentions(db, { project, status: 'dispatched', limit: 1 })[0] || null;\n const latestTrace = DecisionTraceEngine.getLatestTrace(db, project);\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ project, active_goal: topGoal, active_intention: topIntention, latest_trace: latestTrace }, null, 2),\n },\n ],\n };\n }\n);\n\nserver.registerResource(\n 'reasoning-health',\n 'reasoning:///health',\n {\n title: 'Agent Reasoning Server Health',\n description: 'Server health status, version, and timestamp',\n mimeType: 'application/json',\n },\n async (uri: URL) => {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({\n status: 'healthy',\n version: getVersion(),\n timestamp: new Date().toISOString(),\n }, null, 2),\n },\n ],\n };\n }\n);\n\n// Register Tools & Prompts\nregisterAllTools(server);\nregisterAllPrompts(server);\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport { toolDefinitions, READ_ONLY_TOOLS } from './definitions.js';\nimport { getDb, getReadOnlyDb, getProjectSlug } from '../engine/db.js';\nimport { GoalEngine } from '../engine/goals.js';\nimport { BeliefEngine } from '../engine/beliefs.js';\nimport { UtilityProfileEngine } from '../engine/personality.js';\nimport { IntentionEngine } from '../engine/intentions.js';\nimport { DecisionTraceEngine } from '../engine/traces.js';\nimport { EvaluatorEngine } from '../engine/evaluator.js';\nimport { RiskEngine } from '../engine/risk.js';\nimport { ReplannerEngine } from '../engine/replanner.js';\nimport { KnowledgeEngine } from '../engine/knowledge.js';\nimport { SnapshotEngine } from '../engine/snapshots.js';\nimport { verifyEventChain } from '../engine/events.js';\nimport { SchemaAdvisor } from '../engine/advisor.js';\nimport { ValidationError } from '../utils/errors.js';\n\ninterface JsonSchemaProperty {\n type?: string;\n enum?: string[];\n items?: JsonSchemaProperty;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n description?: string;\n [key: string]: unknown;\n}\n\nexport function jsonSchemaToZod(schema: JsonSchemaProperty | unknown): z.ZodTypeAny {\n if (!schema || typeof schema !== 'object') return z.unknown();\n const s = schema as JsonSchemaProperty;\n\n if (s.type === 'string') {\n if (s.enum && Array.isArray(s.enum) && s.enum.length > 0) {\n return z.enum(s.enum as [string, ...string[]]);\n }\n return z.string();\n }\n if (s.type === 'number') return z.number();\n if (s.type === 'boolean') return z.boolean();\n if (s.type === 'array') {\n const itemSchema = s.items ? jsonSchemaToZod(s.items) : z.unknown();\n return z.array(itemSchema);\n }\n if (s.type === 'object' || s.properties) {\n const shape: Record<string, z.ZodTypeAny> = {};\n const requiredKeys = new Set(s.required || []);\n if (s.properties) {\n for (const [key, prop] of Object.entries(s.properties)) {\n let fieldSchema = jsonSchemaToZod(prop);\n if (!requiredKeys.has(key)) {\n fieldSchema = fieldSchema.optional();\n }\n shape[key] = fieldSchema;\n }\n }\n return z.object(shape).passthrough();\n }\n return z.unknown();\n}\n\nexport function registerAllTools(server: McpServer): void {\n const toolNames = toolDefinitions.map((t) => t.name);\n\n for (const def of toolDefinitions) {\n const zodShape: Record<string, z.ZodTypeAny> = {};\n const schemaProps = (def.inputSchema.properties || {}) as Record<string, JsonSchemaProperty>;\n const requiredList = new Set((def.inputSchema.required as string[]) || []);\n\n for (const [key, prop] of Object.entries(schemaProps)) {\n let fieldSchema = jsonSchemaToZod(prop);\n if (!requiredList.has(key)) {\n fieldSchema = fieldSchema.optional();\n }\n zodShape[key] = fieldSchema;\n }\n\n server.tool(def.name, def.description, zodShape, async (args: any) => {\n try {\n const project = getProjectSlug(args.project);\n const isReadOnly = READ_ONLY_TOOLS.has(def.name);\n const db = isReadOnly ? getReadOnlyDb(project) : getDb(project);\n\n let result: any;\n\n switch (def.name) {\n case 'set_goal': {\n const action = args.action;\n if (action === 'create') {\n result = GoalEngine.createGoal(db, { project, ...args });\n result._suggestions = [\n {\n tool: 'evaluate_situation',\n args: {\n action: 'quick',\n quick_context: `Evaluating situation for goal ${result.title}`,\n },\n reason: 'Evaluate situation and candidate actions for new goal',\n },\n ];\n } else if (action === 'update') {\n result = GoalEngine.updateGoal(db, { project, ...args });\n } else if (action === 'decompose') {\n result = GoalEngine.decomposeGoal(db, {\n project,\n parent_id: args.id || args.parent_id,\n subgoals: args.subgoals || [],\n });\n } else if (action === 'get') {\n result = GoalEngine.getGoal(db, { project, id: args.id });\n } else if (action === 'list') {\n result = GoalEngine.listGoals(db, {\n project,\n status: args.status,\n parent_id: args.parent_id,\n limit: args.limit,\n });\n } else if (action === 'abandon') {\n result = GoalEngine.abandonGoal(db, {\n project,\n id: args.id,\n reason: args.description,\n });\n } else {\n throw new ValidationError(`Unknown action \"${action}\" for set_goal.`);\n }\n break;\n }\n\n case 'evaluate_situation': {\n result = EvaluatorEngine.evaluateSituation(db, { project, ...args });\n result._suggestions = [\n {\n tool: 'manage_intentions',\n args: {\n action: 'create',\n goal_id: result.chosen_action?.action,\n trace_id: result.trace_id,\n behavior_name: result.chosen_action?.action,\n },\n reason: 'Create intention for behavior runtime execution',\n },\n {\n tool: 'get_decision_trace',\n args: { action: 'get', trace_id: result.trace_id },\n reason: 'Inspect explainable chain-of-thought rationale',\n },\n ];\n break;\n }\n\n case 'replan': {\n result = ReplannerEngine.replanGoal(db, { project, ...args });\n result._suggestions = [\n {\n tool: 'evaluate_situation',\n args: {\n action: 'quick',\n quick_context: `Post-replan situation check for goal ${args.goal_id}`,\n },\n reason: 'Re-evaluate situation following replan',\n },\n ];\n break;\n }\n\n case 'assess_risk': {\n if (args.action === 'compare' && args.candidate_actions) {\n result = args.candidate_actions.map((c: any) => ({\n action: c.action,\n risk: RiskEngine.assessAction(c.action, c.parameters, args.situation_context),\n }));\n } else {\n result = RiskEngine.assessAction(\n args.candidate_action || 'default_action',\n args.parameters,\n args.situation_context\n );\n }\n break;\n }\n\n case 'query_knowledge': {\n result = KnowledgeEngine.queryKnowledge(db, { project, ...args });\n break;\n }\n\n case 'set_utility_weights': {\n const action = args.action;\n if (action === 'configure') {\n result = UtilityProfileEngine.configureProfile(db, { project, ...args });\n } else if (action === 'get') {\n result = args.name\n ? UtilityProfileEngine.getProfile(db, { project, name: args.name })\n : UtilityProfileEngine.getActiveProfile(db, project);\n } else if (action === 'list') {\n result = UtilityProfileEngine.listProfiles(db, project);\n } else if (action === 'activate') {\n result = UtilityProfileEngine.activateProfile(db, { project, name: args.name });\n } else {\n throw new ValidationError(`Unknown action \"${action}\" for set_utility_weights.`);\n }\n break;\n }\n\n case 'get_decision_trace': {\n const action = args.action;\n if (action === 'latest') {\n result = DecisionTraceEngine.getLatestTrace(db, project) || {\n message: 'No decision traces found.',\n };\n } else if (action === 'get') {\n result = DecisionTraceEngine.getTrace(db, { project, id: args.trace_id });\n } else if (action === 'list') {\n result = DecisionTraceEngine.listTraces(db, {\n project,\n goal_id: args.goal_id,\n limit: args.limit,\n });\n } else if (action === 'explain') {\n const explanation = DecisionTraceEngine.explainTrace(db, {\n project,\n id: args.trace_id,\n });\n result = { explanation };\n } else {\n throw new ValidationError(`Unknown action \"${action}\" for get_decision_trace.`);\n }\n break;\n }\n\n case 'manage_beliefs': {\n const action = args.action;\n if (action === 'update') {\n result = BeliefEngine.updateBelief(db, { project, ...args });\n } else if (action === 'query') {\n result = BeliefEngine.queryBeliefs(db, { project, ...args });\n } else if (action === 'expire') {\n const expiredCount = BeliefEngine.expireBeliefs(db, project);\n result = { expired_beliefs: expiredCount };\n } else if (action === 'reconcile') {\n BeliefEngine.decayBeliefs(db, project);\n result = { message: 'Beliefs successfully reconciled and decayed.' };\n } else {\n throw new ValidationError(`Unknown action \"${action}\" for manage_beliefs.`);\n }\n break;\n }\n\n case 'manage_intentions': {\n const action = args.action;\n if (action === 'create') {\n result = IntentionEngine.createIntention(db, { project, ...args });\n result._suggestions = [\n {\n tool: 'behavior-mcp:load_behavior',\n args: {\n action: 'load',\n behavior_name: result.behavior_name,\n intention_id: result.id,\n },\n reason: 'Execute loaded intention in behavior runtime',\n },\n ];\n } else if (action === 'dispatch') {\n result = IntentionEngine.dispatchIntention(db, { project, id: args.intention_id });\n } else if (action === 'get') {\n result = IntentionEngine.getIntention(db, { project, id: args.intention_id });\n } else if (action === 'list') {\n result = IntentionEngine.listIntentions(db, {\n project,\n status: args.status,\n goal_id: args.goal_id,\n });\n } else if (action === 'cancel') {\n result = IntentionEngine.resolveIntention(db, {\n project,\n id: args.intention_id,\n status: 'aborted',\n result: args.result,\n });\n } else if (action === 'resolve') {\n result = IntentionEngine.resolveIntention(db, {\n project,\n id: args.intention_id,\n status: args.status || 'completed',\n result: args.result,\n });\n } else {\n throw new ValidationError(`Unknown action \"${action}\" for manage_intentions.`);\n }\n break;\n }\n\n case 'manage_reasoning_db': {\n const action = args.action;\n if (action === 'stats') {\n const goalsCount = (\n db.prepare('SELECT COUNT(*) as c FROM goals WHERE project = ?').get(project) as any\n ).c;\n const beliefsCount = (\n db\n .prepare('SELECT COUNT(*) as c FROM beliefs WHERE project = ?')\n .get(project) as any\n ).c;\n const tracesCount = (\n db\n .prepare('SELECT COUNT(*) as c FROM decision_traces WHERE project = ?')\n .get(project) as any\n ).c;\n const intentionsCount = (\n db\n .prepare('SELECT COUNT(*) as c FROM intentions WHERE project = ?')\n .get(project) as any\n ).c;\n result = { goalsCount, beliefsCount, tracesCount, intentionsCount, project };\n } else if (action === 'audit') {\n result = verifyEventChain(db, project);\n } else if (action === 'snapshot') {\n result = SnapshotEngine.saveSnapshot(db, {\n project,\n name: args.name || `snap_${Date.now()}`,\n description: args.description,\n });\n } else if (action === 'restore') {\n result = SnapshotEngine.restoreSnapshot(db, { project, name: args.name });\n } else if (action === 'diff') {\n result = SnapshotEngine.listSnapshots(db, { project });\n } else {\n throw new ValidationError(\n `Unsupported manage_reasoning_db action: \"${action}\". Supported actions: stats, audit, snapshot, restore, diff.`\n );\n }\n break;\n }\n\n default:\n throw new ValidationError(`Unrecognized tool \"${def.name}\".`);\n }\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n } catch (error: any) {\n const advice = SchemaAdvisor.getAdvice(def.name, error.message, toolNames);\n return {\n isError: true,\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n error: error.message,\n code: error.code || 'EXECUTION_ERROR',\n advice,\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n });\n }\n}\n","export interface ToolDefinition {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n}\n\nexport const READ_ONLY_TOOLS = new Set(['query_beliefs', 'get_decision_trace', 'query_knowledge']);\n\nexport const toolDefinitions: ToolDefinition[] = [\n {\n name: 'set_goal',\n description:\n 'Register, update, decompose, or manage hierarchical goals and task DAGs in the reasoning engine.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['create', 'update', 'decompose', 'get', 'list', 'abandon'],\n description: 'The goal management operation to perform',\n },\n id: { type: 'string', description: 'Goal ID (required for update, get, abandon)' },\n parent_id: { type: 'string', description: 'Parent goal ID for hierarchical sub-goals' },\n title: { type: 'string', description: 'Goal title or objective summary' },\n description: { type: 'string', description: 'Detailed goal description' },\n status: {\n type: 'string',\n enum: ['active', 'completed', 'failed', 'abandoned', 'suspended'],\n description: 'Goal status',\n },\n priority: { type: 'number', description: 'Goal priority (0.0 to 1.0)' },\n utility_weights: { type: 'object', description: 'Goal-specific utility weight overrides' },\n deadline_at: { type: 'string', description: 'ISO-8601 deadline timestamp' },\n progress: { type: 'number', description: 'Completion progress (0.0 to 1.0)' },\n success_criteria: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of verifiable conditions',\n },\n subgoals: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n description: { type: 'string' },\n priority: { type: 'number' },\n },\n required: ['title'],\n },\n description: 'Array of sub-goals for decompose action',\n },\n client_request_id: {\n type: 'string',\n description: 'Idempotency key to prevent duplicate creation',\n },\n project: { type: 'string', description: 'Target project slug' },\n limit: { type: 'number', description: 'Max items to return for list action' },\n },\n required: ['action'],\n },\n },\n {\n name: 'evaluate_situation',\n description:\n 'Ingest multi-modal situation snapshot, compute expected utilities against active weights, and output prioritized action recommendations.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['snapshot', 'quick'],\n description: 'Snapshot evaluation mode or quick text context',\n },\n snapshot: {\n type: 'object',\n description: 'Normalized SituationSnapshot with world, vision, state, and vitals',\n },\n quick_context: {\n type: 'string',\n description: 'Text summary of current situation for quick evaluation',\n },\n candidate_actions: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n action: { type: 'string' },\n parameters: { type: 'object' },\n description: { type: 'string' },\n },\n required: ['action'],\n },\n description: 'Candidate actions to score and rank',\n },\n utility_profile: {\n type: 'string',\n description: 'Named utility profile to score against (defaults to active)',\n },\n session_id: { type: 'string', description: 'Linked state-memory session ID' },\n trace_id: { type: 'string', description: 'Distributed trace ID' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'replan',\n description:\n 'Regenerate sub-task DAG and abort/recreate intentions upon unexpected blockers or environmental state changes.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['blocker', 'event', 'full'],\n description: 'Replanning trigger type',\n },\n goal_id: { type: 'string', description: 'ID of goal to replan' },\n blocker_description: {\n type: 'string',\n description: 'Description of the obstacle or blocker encountered',\n },\n trigger_event: { type: 'string', description: 'Event description triggering replanning' },\n preserve_completed: {\n type: 'boolean',\n description: 'Whether to preserve already completed subgoals',\n },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action', 'goal_id'],\n },\n },\n {\n name: 'assess_risk',\n description:\n 'Compute quantitative risk and threat assessment for candidate actions or plans against active utility weights.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['action', 'plan', 'compare'],\n description: 'Risk assessment mode',\n },\n candidate_action: { type: 'string', description: 'Action name to evaluate' },\n parameters: { type: 'object', description: 'Action parameters' },\n candidate_actions: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n action: { type: 'string' },\n parameters: { type: 'object' },\n },\n required: ['action'],\n },\n description: 'Multiple actions to compare risk scores',\n },\n situation_context: {\n type: 'object',\n description: 'Current environment telemetry & vitals',\n },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'query_knowledge',\n description:\n 'Search learned heuristic patterns, tactics, and past decision traces by context similarity.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['search', 'patterns', 'similar_situations'],\n description: 'Knowledge query mode',\n },\n query: { type: 'string', description: 'Semantic search query string' },\n pattern_type: {\n type: 'string',\n enum: ['heuristic', 'anti_pattern', 'optimization', 'contingency'],\n description: 'Filter by pattern category',\n },\n context_tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Filter by context tags',\n },\n limit: { type: 'number', description: 'Max patterns to return' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'set_utility_weights',\n description:\n 'Configure and activate multi-attribute utility weights (aggression, caution, greed, exploration, cooperation).',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['configure', 'get', 'list', 'activate'],\n description: 'Profile operation',\n },\n name: {\n type: 'string',\n description: 'Profile name (e.g. \"aggressive\", \"cautious\", \"explorer\")',\n },\n description: { type: 'string', description: 'Profile description' },\n weights: {\n type: 'object',\n description: 'Key-value map of weight values (0.0 to 1.0)',\n },\n is_active: { type: 'boolean', description: 'Whether to set as currently active profile' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'get_decision_trace',\n description:\n 'Retrieve explainable step-by-step chain-of-thought rationale, candidate utilities, and risk assessment for past decisions.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['latest', 'get', 'list', 'explain'],\n description: 'Trace retrieval operation',\n },\n trace_id: { type: 'string', description: 'Trace ID for get/explain action' },\n goal_id: { type: 'string', description: 'Filter traces by linked goal ID' },\n limit: { type: 'number', description: 'Max traces to list' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'manage_beliefs',\n description:\n 'Maintain structured belief state with TTL expiration sweeps, exponential confidence decay, and category filtering.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['update', 'query', 'expire', 'reconcile'],\n description: 'Belief operation',\n },\n category: {\n type: 'string',\n enum: ['spatial', 'entity', 'state', 'rule', 'social'],\n description: 'Belief category',\n },\n subject: {\n type: 'string',\n description: 'Belief subject (e.g. \"north_gate\", \"enemy_patrol\")',\n },\n predicate: {\n type: 'string',\n description: 'Predicate relationship (e.g. \"is_locked\", \"status\")',\n },\n object: { description: 'Belief value / state payload' },\n confidence: { type: 'number', description: 'Confidence score (0.0 to 1.0)' },\n source: {\n type: 'string',\n enum: ['observation', 'deduction', 'agent_communication', 'a_priori'],\n description: 'Belief provenance source',\n },\n expires_at: { type: 'string', description: 'ISO-8601 expiration timestamp' },\n decay_rate: { type: 'number', description: 'Exponential decay rate lambda per hour' },\n belief_id: { type: 'string', description: 'Belief ID for specific lookup' },\n client_request_id: { type: 'string', description: 'Idempotency key' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'manage_intentions',\n description:\n 'Queue, dispatch, track, and resolve behavior directives (wire contract) for behavior-mcp.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['create', 'dispatch', 'get', 'list', 'cancel', 'resolve'],\n description: 'Intention operation',\n },\n intention_id: {\n type: 'string',\n description: 'Intention ID for dispatch/get/cancel/resolve',\n },\n goal_id: { type: 'string', description: 'Linked goal ID' },\n trace_id: { type: 'string', description: 'Linked decision trace ID' },\n behavior_name: {\n type: 'string',\n description: 'Target behavior tree name (e.g. \"combat_kite\", \"gather_loop\")',\n },\n parameters: { type: 'object', description: 'Runtime behavior parameters' },\n priority: { type: 'number', description: 'Execution priority (0.0 to 1.0)' },\n deadline_at: { type: 'string', description: 'ISO-8601 completion deadline' },\n abort_conditions: {\n type: 'array',\n items: { type: 'object' },\n description: 'Auto-abort trigger conditions',\n },\n result: { type: 'object', description: 'Outcome payload for resolve action' },\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'dispatched',\n 'running',\n 'completed',\n 'failed',\n 'aborted',\n 'interrupted',\n ],\n description: 'Status filter or update',\n },\n client_request_id: { type: 'string', description: 'Idempotency key' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n {\n name: 'manage_reasoning_db',\n description:\n 'Database maintenance, stats, SHA-256 Merkle audit verification, checkpoints save/restore, and diffs.',\n inputSchema: {\n type: 'object',\n properties: {\n action: {\n type: 'string',\n enum: ['stats', 'audit', 'snapshot', 'diff', 'restore'],\n description: 'Database maintenance operation',\n },\n name: { type: 'string', description: 'Snapshot name' },\n description: { type: 'string', description: 'Description for snapshot' },\n project: { type: 'string', description: 'Target project slug' },\n },\n required: ['action'],\n },\n },\n];\n","export const TOOL_ALIASES: Record<string, string> = {\n add_goal: 'set_goal',\n create_goal: 'set_goal',\n update_goal: 'set_goal',\n decompose: 'decompose_goal',\n subgoals: 'decompose_goal',\n add_belief: 'update_belief',\n set_belief: 'update_belief',\n beliefs: 'query_beliefs',\n search_beliefs: 'query_beliefs',\n evaluate: 'evaluate_situation',\n situation: 'evaluate_situation',\n utility: 'calculate_utility',\n score: 'calculate_utility',\n risk: 'assess_risk',\n threat: 'assess_risk',\n replan: 'replan_goal',\n adapt: 'replan_goal',\n dispatch: 'manage_intentions',\n intentions: 'manage_intentions',\n weights: 'set_utility_weights',\n personality: 'set_utility_weights',\n trace: 'record_decision_trace',\n history: 'record_decision_trace',\n};\n\nfunction levenshtein(a: string, b: string): number {\n const matrix: number[][] = [];\n for (let i = 0; i <= b.length; i++) matrix[i] = [i];\n for (let j = 0; j <= a.length; j++) matrix[0][j] = j;\n\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1\n );\n }\n }\n }\n return matrix[b.length][a.length];\n}\n\nexport class SchemaAdvisor {\n static resolveAlias(toolName: string): string | undefined {\n return TOOL_ALIASES[toolName.toLowerCase()];\n }\n\n static getAdvice(toolName: string, error: string, availableTools: string[]): string {\n const alias = this.resolveAlias(toolName);\n if (alias) {\n return `Tool \"${toolName}\" is an alias. Did you mean to call \"${alias}\"?`;\n }\n\n let closest = '';\n let minDistance = Infinity;\n for (const tool of availableTools) {\n const dist = levenshtein(toolName.toLowerCase(), tool.toLowerCase());\n if (dist < minDistance && dist <= 3) {\n minDistance = dist;\n closest = tool;\n }\n }\n\n if (closest) {\n return `Tool \"${toolName}\" not found. Did you mean \"${closest}\"? (${error})`;\n }\n\n return `Invalid tool call \"${toolName}\": ${error}`;\n }\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nexport function registerAllPrompts(server: McpServer): void {\n server.prompt(\n 'strategic-assessment',\n 'Generate comprehensive strategic assessment from active goals, beliefs, and situation snapshot',\n {\n project: z.string().optional().describe('Target project slug'),\n focus_area: z\n .string()\n .optional()\n .describe('Specific focus area (e.g. \"combat\", \"economy\", \"exploration\")'),\n },\n async (args) => {\n const focus = args.focus_area || 'general autonomous operation';\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Perform a strategic assessment for project \"${args.project || 'default'}\" focusing on ${focus}. Review active goals via \\`set_goal(list)\\`, query current beliefs with \\`manage_beliefs(query)\\`, and evaluate situation with \\`evaluate_situation(snapshot)\\`. Output prioritized intentions and recommendations.`,\n },\n },\n ],\n };\n }\n );\n\n server.prompt(\n 'goal-planning',\n 'Decompose high-level strategic objectives into structured sub-goal DAGs with verifiable success criteria',\n {\n objective: z.string().describe('High-level mission objective to plan'),\n priority: z.string().optional().describe('Priority level (0.0 to 1.0)'),\n },\n async (args) => {\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Plan and decompose the following objective into a structured DAG of actionable subgoals: \"${args.objective}\". Use \\`set_goal(create)\\` and \\`set_goal(decompose)\\` with clear success criteria and priority ${args.priority || '0.8'}.`,\n },\n },\n ],\n };\n }\n );\n\n server.prompt(\n 'risk-evaluation',\n 'Perform quantitative threat and opportunity analysis for proposed action plans',\n {\n proposed_action: z.string().describe('Proposed behavior or action plan'),\n threat_context: z.string().optional().describe('Known environmental threats or constraints'),\n },\n async (args) => {\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Evaluate risk for proposed action \"${args.proposed_action}\". Context: \"${args.threat_context || 'Standard operations'}\". Call \\`assess_risk(action)\\` and compute threat/opportunity trade-offs against active utility weights.`,\n },\n },\n ],\n };\n }\n );\n\n server.prompt(\n 'post-mortem',\n 'Analyze decision trace and outcome results to extract heuristic knowledge patterns and lessons learned',\n {\n trace_id: z.string().describe('Decision trace ID to analyze'),\n },\n async (args) => {\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Conduct a post-mortem review on decision trace \"${args.trace_id}\". Retrieve the step-by-step reasoning chain with \\`get_decision_trace(explain)\\` and extract reusable tactics or anti-patterns into \\`query_knowledge\\`.`,\n },\n },\n ],\n };\n }\n );\n}\n"],"mappings":"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","names":["server","z","server"]}
|