@beingmartinbmc/ojas 0.2.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 (174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +308 -0
  3. package/dist/aahar/index.d.ts +179 -0
  4. package/dist/aahar/index.d.ts.map +1 -0
  5. package/dist/aahar/index.js +657 -0
  6. package/dist/aahar/index.js.map +1 -0
  7. package/dist/aahar/scoring.d.ts +85 -0
  8. package/dist/aahar/scoring.d.ts.map +1 -0
  9. package/dist/aahar/scoring.js +268 -0
  10. package/dist/aahar/scoring.js.map +1 -0
  11. package/dist/agni/index.d.ts +113 -0
  12. package/dist/agni/index.d.ts.map +1 -0
  13. package/dist/agni/index.js +328 -0
  14. package/dist/agni/index.js.map +1 -0
  15. package/dist/agni/model-router.d.ts +77 -0
  16. package/dist/agni/model-router.d.ts.map +1 -0
  17. package/dist/agni/model-router.js +163 -0
  18. package/dist/agni/model-router.js.map +1 -0
  19. package/dist/agni/response-distiller.d.ts +37 -0
  20. package/dist/agni/response-distiller.d.ts.map +1 -0
  21. package/dist/agni/response-distiller.js +193 -0
  22. package/dist/agni/response-distiller.js.map +1 -0
  23. package/dist/agni/tiktoken-adapter.d.ts +55 -0
  24. package/dist/agni/tiktoken-adapter.d.ts.map +1 -0
  25. package/dist/agni/tiktoken-adapter.js +113 -0
  26. package/dist/agni/tiktoken-adapter.js.map +1 -0
  27. package/dist/chikitsa/index.d.ts +130 -0
  28. package/dist/chikitsa/index.d.ts.map +1 -0
  29. package/dist/chikitsa/index.js +565 -0
  30. package/dist/chikitsa/index.js.map +1 -0
  31. package/dist/demo.d.ts +15 -0
  32. package/dist/demo.d.ts.map +1 -0
  33. package/dist/demo.js +278 -0
  34. package/dist/demo.js.map +1 -0
  35. package/dist/index.d.ts +201 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +588 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mcp/audit.d.ts +39 -0
  40. package/dist/mcp/audit.d.ts.map +1 -0
  41. package/dist/mcp/audit.js +73 -0
  42. package/dist/mcp/audit.js.map +1 -0
  43. package/dist/mcp/contracts.d.ts +76 -0
  44. package/dist/mcp/contracts.d.ts.map +1 -0
  45. package/dist/mcp/contracts.js +44 -0
  46. package/dist/mcp/contracts.js.map +1 -0
  47. package/dist/mcp/envelope.d.ts +107 -0
  48. package/dist/mcp/envelope.d.ts.map +1 -0
  49. package/dist/mcp/envelope.js +162 -0
  50. package/dist/mcp/envelope.js.map +1 -0
  51. package/dist/mcp/registry.d.ts +110 -0
  52. package/dist/mcp/registry.d.ts.map +1 -0
  53. package/dist/mcp/registry.js +258 -0
  54. package/dist/mcp/registry.js.map +1 -0
  55. package/dist/mcp/server.d.ts +26 -0
  56. package/dist/mcp/server.d.ts.map +1 -0
  57. package/dist/mcp/server.js +107 -0
  58. package/dist/mcp/server.js.map +1 -0
  59. package/dist/mcp/tools/agent.d.ts +4 -0
  60. package/dist/mcp/tools/agent.d.ts.map +1 -0
  61. package/dist/mcp/tools/agent.js +300 -0
  62. package/dist/mcp/tools/agent.js.map +1 -0
  63. package/dist/mcp/tools/context.d.ts +4 -0
  64. package/dist/mcp/tools/context.d.ts.map +1 -0
  65. package/dist/mcp/tools/context.js +261 -0
  66. package/dist/mcp/tools/context.js.map +1 -0
  67. package/dist/mcp/tools/index.d.ts +5 -0
  68. package/dist/mcp/tools/index.d.ts.map +1 -0
  69. package/dist/mcp/tools/index.js +20 -0
  70. package/dist/mcp/tools/index.js.map +1 -0
  71. package/dist/mcp/tools/memory.d.ts +4 -0
  72. package/dist/mcp/tools/memory.d.ts.map +1 -0
  73. package/dist/mcp/tools/memory.js +220 -0
  74. package/dist/mcp/tools/memory.js.map +1 -0
  75. package/dist/mcp/tools/output.d.ts +4 -0
  76. package/dist/mcp/tools/output.d.ts.map +1 -0
  77. package/dist/mcp/tools/output.js +206 -0
  78. package/dist/mcp/tools/output.js.map +1 -0
  79. package/dist/mcp/tools/recovery.d.ts +4 -0
  80. package/dist/mcp/tools/recovery.d.ts.map +1 -0
  81. package/dist/mcp/tools/recovery.js +165 -0
  82. package/dist/mcp/tools/recovery.js.map +1 -0
  83. package/dist/mcp/tools/registrar.d.ts +4 -0
  84. package/dist/mcp/tools/registrar.d.ts.map +1 -0
  85. package/dist/mcp/tools/registrar.js +17 -0
  86. package/dist/mcp/tools/registrar.js.map +1 -0
  87. package/dist/mcp/tools/report.d.ts +4 -0
  88. package/dist/mcp/tools/report.d.ts.map +1 -0
  89. package/dist/mcp/tools/report.js +68 -0
  90. package/dist/mcp/tools/report.js.map +1 -0
  91. package/dist/mcp/tools/shared.d.ts +37 -0
  92. package/dist/mcp/tools/shared.d.ts.map +1 -0
  93. package/dist/mcp/tools/shared.js +214 -0
  94. package/dist/mcp/tools/shared.js.map +1 -0
  95. package/dist/mcp/trace.d.ts +47 -0
  96. package/dist/mcp/trace.d.ts.map +1 -0
  97. package/dist/mcp/trace.js +216 -0
  98. package/dist/mcp/trace.js.map +1 -0
  99. package/dist/nidra/index.d.ts +275 -0
  100. package/dist/nidra/index.d.ts.map +1 -0
  101. package/dist/nidra/index.js +889 -0
  102. package/dist/nidra/index.js.map +1 -0
  103. package/dist/persistence/migrations.d.ts +10 -0
  104. package/dist/persistence/migrations.d.ts.map +1 -0
  105. package/dist/persistence/migrations.js +77 -0
  106. package/dist/persistence/migrations.js.map +1 -0
  107. package/dist/persistence/sqlite.d.ts +30 -0
  108. package/dist/persistence/sqlite.d.ts.map +1 -0
  109. package/dist/persistence/sqlite.js +209 -0
  110. package/dist/persistence/sqlite.js.map +1 -0
  111. package/dist/persistence/types.d.ts +104 -0
  112. package/dist/persistence/types.d.ts.map +1 -0
  113. package/dist/persistence/types.js +5 -0
  114. package/dist/persistence/types.js.map +1 -0
  115. package/dist/pulse/index.d.ts +144 -0
  116. package/dist/pulse/index.d.ts.map +1 -0
  117. package/dist/pulse/index.js +453 -0
  118. package/dist/pulse/index.js.map +1 -0
  119. package/dist/raksha/classifiers/http-classifier.d.ts +26 -0
  120. package/dist/raksha/classifiers/http-classifier.d.ts.map +1 -0
  121. package/dist/raksha/classifiers/http-classifier.js +62 -0
  122. package/dist/raksha/classifiers/http-classifier.js.map +1 -0
  123. package/dist/raksha/classifiers/index.d.ts +5 -0
  124. package/dist/raksha/classifiers/index.d.ts.map +1 -0
  125. package/dist/raksha/classifiers/index.js +8 -0
  126. package/dist/raksha/classifiers/index.js.map +1 -0
  127. package/dist/raksha/classifiers/onnx-classifier.d.ts +41 -0
  128. package/dist/raksha/classifiers/onnx-classifier.d.ts.map +1 -0
  129. package/dist/raksha/classifiers/onnx-classifier.js +99 -0
  130. package/dist/raksha/classifiers/onnx-classifier.js.map +1 -0
  131. package/dist/raksha/hallucination-detectors.d.ts +106 -0
  132. package/dist/raksha/hallucination-detectors.d.ts.map +1 -0
  133. package/dist/raksha/hallucination-detectors.js +327 -0
  134. package/dist/raksha/hallucination-detectors.js.map +1 -0
  135. package/dist/raksha/index.d.ts +168 -0
  136. package/dist/raksha/index.d.ts.map +1 -0
  137. package/dist/raksha/index.js +597 -0
  138. package/dist/raksha/index.js.map +1 -0
  139. package/dist/raksha/prompt-injection-detectors.d.ts +30 -0
  140. package/dist/raksha/prompt-injection-detectors.d.ts.map +1 -0
  141. package/dist/raksha/prompt-injection-detectors.js +153 -0
  142. package/dist/raksha/prompt-injection-detectors.js.map +1 -0
  143. package/dist/types.d.ts +1115 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +71 -0
  146. package/dist/types.js.map +1 -0
  147. package/dist/util/calibration.d.ts +32 -0
  148. package/dist/util/calibration.d.ts.map +1 -0
  149. package/dist/util/calibration.js +108 -0
  150. package/dist/util/calibration.js.map +1 -0
  151. package/dist/util/id.d.ts +2 -0
  152. package/dist/util/id.d.ts.map +1 -0
  153. package/dist/util/id.js +9 -0
  154. package/dist/util/id.js.map +1 -0
  155. package/dist/vyayam/index.d.ts +76 -0
  156. package/dist/vyayam/index.d.ts.map +1 -0
  157. package/dist/vyayam/index.js +528 -0
  158. package/dist/vyayam/index.js.map +1 -0
  159. package/dist/vyayam/tool-fault-proxy.d.ts +95 -0
  160. package/dist/vyayam/tool-fault-proxy.d.ts.map +1 -0
  161. package/dist/vyayam/tool-fault-proxy.js +170 -0
  162. package/dist/vyayam/tool-fault-proxy.js.map +1 -0
  163. package/docs/ARCHITECTURE.md +162 -0
  164. package/docs/BACKLOG.md +342 -0
  165. package/docs/CONFIGURATION.md +305 -0
  166. package/docs/EVIDENCE.md +232 -0
  167. package/docs/EVIDENCE_MATRIX.md +293 -0
  168. package/docs/KNOWN_FAILURES.md +367 -0
  169. package/docs/MCP.md +614 -0
  170. package/docs/MODULES.md +368 -0
  171. package/docs/SECURITY.md +251 -0
  172. package/docs/TRUST.md +88 -0
  173. package/docs/assets/ojas-hero.png +0 -0
  174. package/package.json +101 -0
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAgentTools = registerAgentTools;
4
+ const v3_1 = require("zod/v3");
5
+ const contracts_1 = require("../contracts");
6
+ const envelope_1 = require("../envelope");
7
+ const trace_1 = require("../trace");
8
+ const id_1 = require("../../util/id");
9
+ const shared_1 = require("./shared");
10
+ function registerAgentTools(registerOjasTool, registry, _audit) {
11
+ // ── 1. ojas_register_agent ────────────────────────────────────────────────
12
+ registerOjasTool('ojas_register_agent', {
13
+ title: 'Register an agent and create its health contract',
14
+ description: 'Register an autonomous agent with Ojas and create its health contract. ' +
15
+ 'Defines risk level, allowed tools, score thresholds, and recovery policies. ' +
16
+ 'Returns the contract id and the initial Ojas score.',
17
+ inputSchema: {
18
+ agent_id: v3_1.z.string().min(1),
19
+ agent_name: v3_1.z.string().optional(),
20
+ agent_type: v3_1.z.string().optional(),
21
+ risk_level: v3_1.z.enum(shared_1.RISK_LEVELS).default('medium'),
22
+ description: v3_1.z.string().optional(),
23
+ allowed_tools: v3_1.z.array(v3_1.z.string()).optional(),
24
+ replace_existing: v3_1.z.boolean().default(false),
25
+ health_thresholds: v3_1.z
26
+ .object({
27
+ minimum_ojas_score: v3_1.z.number().min(0).max(100).optional(),
28
+ minimum_context_quality: v3_1.z.number().min(0).max(100).optional(),
29
+ maximum_hallucination_risk: v3_1.z.number().min(0).max(100).optional(),
30
+ })
31
+ .optional(),
32
+ recovery_policy: v3_1.z
33
+ .object({
34
+ on_context_overload: v3_1.z.enum(shared_1.RECOVERY_ACTIONS).optional(),
35
+ on_prompt_injection: v3_1.z.enum(shared_1.RECOVERY_ACTIONS).optional(),
36
+ on_repeated_failure: v3_1.z.enum(shared_1.RECOVERY_ACTIONS).optional(),
37
+ on_memory_conflict: v3_1.z.enum(shared_1.RECOVERY_ACTIONS).optional(),
38
+ on_tool_failure_loop: v3_1.z.enum(shared_1.RECOVERY_ACTIONS).optional(),
39
+ })
40
+ .optional(),
41
+ },
42
+ }, async (args) => {
43
+ const entry = registry.register({
44
+ agent_id: args.agent_id,
45
+ agent_name: args.agent_name,
46
+ agent_type: args.agent_type,
47
+ risk_level: args.risk_level,
48
+ description: args.description,
49
+ allowed_tools: args.allowed_tools,
50
+ replace_existing: args.replace_existing,
51
+ health_thresholds: args.health_thresholds,
52
+ recovery_policy: args.recovery_policy,
53
+ });
54
+ const report = entry.ojas.healthCheck();
55
+ const initialScore = Math.round(report.overall.value * 100);
56
+ entry.last_health_score = initialScore;
57
+ entry.last_health_report = report;
58
+ const event = registry.recordEvent(entry, 'agent_registered', `Agent ${args.agent_id} registered.`);
59
+ return (0, envelope_1.mcpReply)({
60
+ registered: true,
61
+ health_contract: entry.contract,
62
+ initial_ojas_score: initialScore,
63
+ health_state: (0, contracts_1.classifyHealthState)(initialScore, entry.contract),
64
+ }, {
65
+ agent_id: entry.agent_id,
66
+ affected_modules: ['pulse'],
67
+ events_created: [event.id],
68
+ });
69
+ });
70
+ // ── 2. ojas_ingest_trace ─────────────────────────────────────────────────
71
+ registerOjasTool('ojas_ingest_trace', {
72
+ title: 'Ingest a runtime trace event',
73
+ description: 'Stream a runtime event from the calling agent into Ojas (tool calls, retrievals, memory ops, failures, ' +
74
+ 'latency, planning loops, fallbacks, policy violations). Routes the event to the appropriate health modules ' +
75
+ 'and returns a recommended follow-up action if the event signals degradation.',
76
+ inputSchema: {
77
+ agent_id: v3_1.z.string().min(1),
78
+ session_id: v3_1.z.string().optional(),
79
+ event_type: v3_1.z.enum(shared_1.TRACE_EVENT_TYPES),
80
+ timestamp: v3_1.z.string().datetime().optional(),
81
+ data: v3_1.z.record(v3_1.z.string(), v3_1.z.unknown()).default({}),
82
+ },
83
+ }, async ({ agent_id, session_id, event_type, timestamp, data }) => {
84
+ const entry = registry.getOrAutoRegisterSession(agent_id, session_id);
85
+ const { meta, affected_modules, health_impact } = (0, trace_1.classifyEvent)(event_type, data);
86
+ // ── Policy decisions BEFORE the trace is constructed ───────────────
87
+ // The previous version recorded the trace, then mutated it in place
88
+ // for `allowed_tools` violations. That worked only by object
89
+ // aliasing — a future defensive clone in `recordTrace()` would
90
+ // silently break enforcement. Decide everything up front.
91
+ const toolName = typeof data.tool_name === 'string' ? data.tool_name : undefined;
92
+ const policyViolation = Boolean(toolName &&
93
+ entry.contract.allowed_tools?.length &&
94
+ !entry.contract.allowed_tools.includes(toolName));
95
+ // Validate top-level token-telemetry fields and surface rejections
96
+ // rather than silently falling back to payload-size estimates.
97
+ const invalidTelemetryFields = [];
98
+ const TOKEN_FIELDS = ['input_tokens', 'output_tokens', 'total_tokens', 'tokens_used', 'tool_calls'];
99
+ for (const f of TOKEN_FIELDS) {
100
+ const v = data[f];
101
+ if (v === undefined)
102
+ continue;
103
+ if (typeof v !== 'number' || !Number.isFinite(v) || v < 0 || !Number.isInteger(v)) {
104
+ invalidTelemetryFields.push(f);
105
+ }
106
+ }
107
+ const costUsdRaw = data.cost_usd;
108
+ if (costUsdRaw !== undefined && (typeof costUsdRaw !== 'number' || !Number.isFinite(costUsdRaw) || costUsdRaw < 0)) {
109
+ invalidTelemetryFields.push('cost_usd');
110
+ }
111
+ // Sanitize invalid telemetry out of the recorded trace payload so
112
+ // downstream consumers reading `trace.input.total_tokens` etc. can
113
+ // never accidentally trust values we already rejected. The dropped
114
+ // values land in `meta.invalid_telemetry_fields` instead.
115
+ const sanitizedData = invalidTelemetryFields.length === 0
116
+ ? data
117
+ : Object.fromEntries(Object.entries(data).filter(([k]) => !invalidTelemetryFields.includes(k)));
118
+ const trace = {
119
+ id: (0, id_1.newId)('trace'),
120
+ agentId: agent_id,
121
+ timestamp: timestamp ?? new Date().toISOString(),
122
+ action: meta.action,
123
+ input: sanitizedData,
124
+ output: sanitizedData,
125
+ // Reflect policy decision in the recorded trace itself, not after.
126
+ success: meta.success && !policyViolation,
127
+ durationMs: meta.duration_ms,
128
+ reasoning: meta.reasoning,
129
+ error: policyViolation ? `tool_not_allowed:${toolName}` : meta.error,
130
+ failures: policyViolation
131
+ ? [{ type: 'policy_violation', message: `Tool '${toolName}' is not allowed by health contract.`, severity: 'high' }]
132
+ : undefined,
133
+ // Forward token / cost telemetry parsed from `data` so Agni reflects
134
+ // real reported numbers rather than payload-size estimates.
135
+ tokensUsed: meta.tokens_used,
136
+ inputTokens: meta.input_tokens,
137
+ outputTokens: meta.output_tokens,
138
+ toolCalls: meta.tool_calls,
139
+ costUsd: meta.cost_usd,
140
+ };
141
+ entry.ojas.recordTrace(trace);
142
+ if (toolName) {
143
+ registry.recordToolOutcome(entry, toolName, {
144
+ success: meta.success && !policyViolation,
145
+ latencyMs: meta.duration_ms,
146
+ timeout: event_type === 'tool_call_failed' && data.error_type === 'timeout',
147
+ });
148
+ }
149
+ const recordedEvent = registry.recordEvent(entry, policyViolation ? 'tool_policy_violation' : event_type, meta.action);
150
+ const recommended = policyViolation ? 'review_tool_policy_violation' : (0, trace_1.recommendActionFor)(event_type);
151
+ // Telemetry validity is a separate axis from policy violation. The
152
+ // trace is still recorded (we don't want to lose the event), but a
153
+ // `warning` status + `telemetry_accepted=false` tells the client
154
+ // their instrumentation is producing values Ojas had to discard,
155
+ // so downstream Agni numbers will fall back to payload-size
156
+ // estimates rather than reflect the reported tokens.
157
+ const telemetryInvalid = invalidTelemetryFields.length > 0;
158
+ const envelopeStatus = policyViolation || telemetryInvalid ? 'warning' : 'success';
159
+ return (0, envelope_1.mcpReply)({
160
+ // `accepted` is preserved for backward compatibility — it
161
+ // remains the same boolean (= !policyViolation) that v0.1
162
+ // clients have always read. New code should branch on the
163
+ // three explicit flags below to avoid the historical ambiguity
164
+ // between "event recorded" and "all checks passed".
165
+ accepted: !policyViolation,
166
+ // True whenever the trace landed in the store, regardless of
167
+ // policy or telemetry verdict.
168
+ event_recorded: true,
169
+ // True when the health-contract / allowed_tools policy gates passed.
170
+ policy_accepted: !policyViolation,
171
+ // True when every reported token / cost field parsed cleanly.
172
+ telemetry_accepted: !telemetryInvalid,
173
+ event_id: recordedEvent.id,
174
+ trace_id: trace.id,
175
+ health_impact_detected: health_impact || policyViolation,
176
+ recommended_action: recommended,
177
+ policy_violation: policyViolation,
178
+ ...(0, envelope_1.sessionScopeFields)(session_id),
179
+ // Empty array unless we rejected reported telemetry; tells the
180
+ // client their instrumentation needs fixing.
181
+ invalid_telemetry_fields: invalidTelemetryFields,
182
+ }, {
183
+ agent_id,
184
+ status: envelopeStatus,
185
+ affected_modules: policyViolation
186
+ ? [...new Set([...affected_modules, 'raksha', 'chikitsa'])]
187
+ : affected_modules,
188
+ events_created: [recordedEvent.id],
189
+ requires_human_review: event_type === 'policy_violation' || policyViolation,
190
+ });
191
+ });
192
+ // ── 3. ojas_get_health ────────────────────────────────────────────────────
193
+ registerOjasTool('ojas_get_health', {
194
+ title: 'Get the current Ojas health snapshot for an agent',
195
+ description: 'Return the agent\'s current Ojas health: overall score, per-module breakdown, health state, ' +
196
+ 'active risks, and prioritized recommendations.',
197
+ inputSchema: {
198
+ agent_id: v3_1.z.string().min(1),
199
+ session_id: v3_1.z.string().optional(),
200
+ include_modules: v3_1.z.boolean().default(true),
201
+ include_recent_events: v3_1.z.boolean().default(true),
202
+ },
203
+ }, async ({ agent_id, session_id, include_modules, include_recent_events }) => {
204
+ const entry = registry.getOrAutoRegisterSession(agent_id, session_id);
205
+ // Read-only tool: no snapshot mutation, no score-delta attribution.
206
+ const report = entry.ojas.healthCheck();
207
+ const delta = 0;
208
+ const ojasScore = Math.round(report.overall.value * 100);
209
+ const healthState = (0, contracts_1.classifyHealthState)(ojasScore, entry.contract);
210
+ const activeRisks = report.recommendations
211
+ .filter((r) => r.severity !== 'info')
212
+ .map((r) => r.message);
213
+ const recommendedActions = report.recommendations
214
+ .filter((r) => r.severity !== 'info' && r.action)
215
+ .map((r) => r.action);
216
+ return (0, envelope_1.mcpReply)({
217
+ ojas_score: ojasScore,
218
+ health_state: healthState,
219
+ safe_mode: entry.safe_mode,
220
+ module_scores: include_modules ? report.moduleScores : undefined,
221
+ active_risks: activeRisks,
222
+ recommended_actions: recommendedActions,
223
+ recent_events: include_recent_events ? entry.recent_events.slice(-10) : undefined,
224
+ ...(0, envelope_1.sessionScopeFields)(session_id),
225
+ }, {
226
+ agent_id,
227
+ ojas_score_delta: delta,
228
+ affected_modules: ['pulse'],
229
+ recommended_next_actions: recommendedActions,
230
+ });
231
+ });
232
+ // ── 4. ojas_is_agent_fit_to_continue ─────────────────────────────────────
233
+ registerOjasTool('ojas_is_agent_fit_to_continue', {
234
+ title: 'Decide whether an agent is fit to continue operating',
235
+ description: 'Ojas\'s signature decision tool. Combines the agent\'s current Ojas score, its health contract, the ' +
236
+ 'declared task risk level, and the planned next action to decide whether the agent should proceed, ' +
237
+ 'pause, run a repair first, or fall back to safe mode.',
238
+ inputSchema: {
239
+ agent_id: v3_1.z.string().min(1),
240
+ session_id: v3_1.z.string().optional(),
241
+ task_risk_level: v3_1.z.enum(shared_1.RISK_LEVELS).default('medium'),
242
+ planned_next_action: v3_1.z.string().optional(),
243
+ },
244
+ }, async ({ agent_id, session_id, task_risk_level, planned_next_action }) => {
245
+ const entry = registry.getOrAutoRegisterSession(agent_id, session_id);
246
+ // Read-only decision tool: no snapshot mutation.
247
+ const report = entry.ojas.healthCheck();
248
+ const delta = 0;
249
+ const ojasScore = Math.round(report.overall.value * 100);
250
+ const healthState = (0, contracts_1.classifyHealthState)(ojasScore, entry.contract);
251
+ // Raise the bar for riskier tasks. medium → minimum; high → +10; critical → +20.
252
+ const baseThreshold = entry.contract.health_thresholds.minimum_ojas_score;
253
+ const riskBoost = task_risk_level === 'critical' ? 20 : task_risk_level === 'high' ? 10 : 0;
254
+ const requiredScore = Math.min(100, baseThreshold + riskBoost);
255
+ const risks = report.recommendations.filter((r) => r.severity !== 'info').map((r) => r.message);
256
+ const required = [];
257
+ let fit = ojasScore >= requiredScore;
258
+ let safeModeRequired = entry.safe_mode;
259
+ if (!fit) {
260
+ required.push('run ojas_run_recovery to lift score above threshold');
261
+ }
262
+ if (report.defense.quarantinedItems > 0) {
263
+ required.push('verify quarantined inputs and consider freeze_memory_writes');
264
+ }
265
+ if (report.metabolism.costPressure > 0.85) {
266
+ required.push('compress_context before next costly action');
267
+ }
268
+ if (report.recovery.driftScore > 0.6) {
269
+ required.push('consolidate_memory to reduce cognitive drift');
270
+ if (task_risk_level === 'high' || task_risk_level === 'critical') {
271
+ fit = false;
272
+ }
273
+ }
274
+ if (task_risk_level === 'critical' && healthState !== 'healthy') {
275
+ safeModeRequired = true;
276
+ required.push('enter_safe_mode before any critical-risk action');
277
+ }
278
+ void planned_next_action; // accepted; could be used to score the *type* of action later.
279
+ const confidence = Math.max(0, Math.min(1, ojasScore / 100));
280
+ return (0, envelope_1.mcpReply)({
281
+ fit_to_continue: fit,
282
+ confidence: Number(confidence.toFixed(2)),
283
+ health_state: healthState,
284
+ ojas_score: ojasScore,
285
+ required_score: requiredScore,
286
+ risks,
287
+ required_actions_before_continue: required,
288
+ safe_mode_required: safeModeRequired,
289
+ ...(0, envelope_1.sessionScopeFields)(session_id),
290
+ }, {
291
+ agent_id,
292
+ status: fit ? 'success' : 'warning',
293
+ ojas_score_delta: delta,
294
+ affected_modules: ['pulse'],
295
+ recommended_next_actions: required,
296
+ requires_human_review: !fit && task_risk_level === 'critical',
297
+ });
298
+ });
299
+ }
300
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/mcp/tools/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AgentRegistry } from '../registry';
2
+ import type { OjasToolRegistrar } from './registrar';
3
+ export declare function registerContextTools(registerOjasTool: OjasToolRegistrar, registry: AgentRegistry, _audit?: import('../audit').AuditLogger): void;
4
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAarD,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,UAAU,EAAE,WAAW,GAAG,IAAI,CAmShJ"}
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerContextTools = registerContextTools;
4
+ const v3_1 = require("zod/v3");
5
+ const envelope_1 = require("../envelope");
6
+ const id_1 = require("../../util/id");
7
+ const shared_1 = require("./shared");
8
+ function registerContextTools(registerOjasTool, registry, _audit) {
9
+ // ── 5. ojas_score_context ─────────────────────────────────────────────────
10
+ registerOjasTool('ojas_score_context', {
11
+ title: 'Score a context bundle for cognitive nutrition',
12
+ description: 'Score a candidate set of context items per Aahar + Raksha before the agent consumes them. ' +
13
+ 'Returns an overall health score plus per-item relevance / freshness / trust / risk scores.',
14
+ inputSchema: {
15
+ agent_id: v3_1.z.string().min(1),
16
+ session_id: v3_1.z.string().optional(),
17
+ task: v3_1.z.string(),
18
+ context_items: v3_1.z
19
+ .array(v3_1.z.object({
20
+ id: v3_1.z.string(),
21
+ content: v3_1.z.string(),
22
+ source: v3_1.z.string().default('user'),
23
+ relevance_score: v3_1.z.number().min(0).max(1).optional(),
24
+ created_at: v3_1.z.string().datetime().optional(),
25
+ trust_level: v3_1.z.enum(['low', 'medium', 'high']).optional(),
26
+ }))
27
+ .min(1),
28
+ },
29
+ }, async ({ agent_id, session_id, task, context_items }) => {
30
+ const entry = registry.getOrAutoRegisterSession(agent_id, session_id);
31
+ const t = (0, shared_1.nowSec)();
32
+ // Compute lexical relevance and track its provenance per-item.
33
+ const normalized = context_items.map((i) => {
34
+ const rel = (0, shared_1.resolveRelevance)(i.relevance_score, task, i.content);
35
+ const parsed = (0, shared_1.parseCreatedAt)(i.created_at);
36
+ if (parsed.ok === false) {
37
+ throw new envelope_1.OjasError('invalid_input', `ojas_score_context: ${parsed.reason} (item ${i.id})`);
38
+ }
39
+ const freshness = parsed.ok === 'absent' ? t : parsed.epochSec;
40
+ const item = {
41
+ id: i.id,
42
+ content: i.content,
43
+ source: i.source,
44
+ relevanceScore: rel.score,
45
+ freshness,
46
+ tokenCount: (0, shared_1.estimateTokens)(i.content),
47
+ trustScore: i.trust_level === 'high' ? 0.9 : i.trust_level === 'low' ? 0.2 : 0.6,
48
+ };
49
+ return { item, relevanceSource: rel.source };
50
+ });
51
+ const items = normalized.map((n) => n.item);
52
+ const relevanceSources = new Map(normalized.map((n) => [n.item.id, n.relevanceSource]));
53
+ const nutrition = entry.ojas.aahar.assess(items);
54
+ const itemScores = items.map((item) => {
55
+ // Pure scan: scoring candidate context must not mutate defense history.
56
+ const { assessment: threat } = entry.ojas.raksha.scanItem(item, { agentId: agent_id });
57
+ const ageSec = Math.max(0, t - item.freshness);
58
+ const freshness = Math.exp(-ageSec / entry.ojas.aahar.getPolicy().freshnessWindowSec);
59
+ return {
60
+ id: item.id,
61
+ relevance_score: Number(item.relevanceScore.toFixed(2)),
62
+ relevance_source: relevanceSources.get(item.id),
63
+ freshness_score: Number(freshness.toFixed(2)),
64
+ trust_score: Number((item.trustScore ?? 0.6).toFixed(2)),
65
+ risk_score: Number(threat.riskScore.toFixed(2)),
66
+ recommendation: threat.quarantined
67
+ ? 'quarantine'
68
+ : item.relevanceScore < entry.ojas.aahar.getPolicy().relevanceThreshold
69
+ ? 'exclude'
70
+ : 'include',
71
+ };
72
+ });
73
+ const duplicateContent = new Set();
74
+ const warnings = [];
75
+ for (const it of items) {
76
+ const sig = it.content.slice(0, 80);
77
+ if (duplicateContent.has(sig))
78
+ warnings.push('duplicate_context_detected');
79
+ duplicateContent.add(sig);
80
+ }
81
+ if (itemScores.some((s) => s.trust_score < 0.4))
82
+ warnings.push('one_or_more_sources_need_verification');
83
+ if (itemScores.some((s) => s.risk_score > 0.5))
84
+ warnings.push('potentially_unsafe_content_present');
85
+ const score100 = Math.round(nutrition.contextQuality.value * 100);
86
+ void task;
87
+ return (0, envelope_1.mcpReply)({
88
+ context_health_score: score100,
89
+ summary: `Evaluated ${items.length} items for "${task.slice(0, 60)}".`,
90
+ item_scores: itemScores,
91
+ warnings: [...new Set(warnings)],
92
+ ...(0, envelope_1.sessionScopeFields)(session_id),
93
+ }, {
94
+ agent_id,
95
+ affected_modules: ['aahar', 'raksha'],
96
+ });
97
+ });
98
+ // ── 6. ojas_build_context ─────────────────────────────────────────────────
99
+ registerOjasTool('ojas_build_context', {
100
+ title: 'Build the healthiest context bundle for a task',
101
+ description: 'Given candidate context items and a token budget, run Raksha (defense) + Aahar (nutrition) ' +
102
+ 'and assemble the highest-signal bundle that fits the budget. Returns the included items, what ' +
103
+ 'was excluded, and a compression ratio.',
104
+ inputSchema: {
105
+ agent_id: v3_1.z.string().min(1),
106
+ session_id: v3_1.z.string().optional(),
107
+ task: v3_1.z.string(),
108
+ max_tokens: v3_1.z.number().int().positive().default(4096),
109
+ risk_level: v3_1.z.enum(shared_1.RISK_LEVELS).default('medium'),
110
+ freshness_required: v3_1.z.boolean().default(false),
111
+ candidate_items: v3_1.z
112
+ .array(v3_1.z.object({
113
+ id: v3_1.z.string(),
114
+ content: v3_1.z.string(),
115
+ source: v3_1.z.string().default('user'),
116
+ relevance_score: v3_1.z.number().min(0).max(1).optional(),
117
+ created_at: v3_1.z.string().datetime().optional(),
118
+ trust_level: v3_1.z.enum(['low', 'medium', 'high']).optional(),
119
+ }))
120
+ .min(1),
121
+ },
122
+ }, async ({ agent_id, session_id, task, max_tokens, risk_level, freshness_required, candidate_items }) => {
123
+ const entry = registry.getOrAutoRegisterSession(agent_id, session_id);
124
+ const t = (0, shared_1.nowSec)();
125
+ // Compute lexical relevance and reject invalid created_at timestamps
126
+ // up-front so we never silently produce NaN-tainted freshness scoring.
127
+ const items = candidate_items.map((i) => {
128
+ const rel = (0, shared_1.resolveRelevance)(i.relevance_score, task, i.content);
129
+ const parsed = (0, shared_1.parseCreatedAt)(i.created_at);
130
+ if (parsed.ok === false) {
131
+ throw new envelope_1.OjasError('invalid_input', `ojas_build_context: ${parsed.reason} (item ${i.id})`);
132
+ }
133
+ return {
134
+ id: i.id,
135
+ content: i.content,
136
+ source: i.source,
137
+ relevanceScore: rel.score,
138
+ freshness: parsed.ok === 'absent' ? t : parsed.epochSec,
139
+ tokenCount: (0, shared_1.estimateTokens)(i.content),
140
+ trustScore: i.trust_level === 'high' ? 0.9 : i.trust_level === 'low' ? 0.2 : 0.6,
141
+ };
142
+ });
143
+ // try/finally guarantees the shared Aahar policy is restored even if
144
+ // feed() throws. Long-lived agents would otherwise be left with the
145
+ // temporary token budget for all subsequent calls.
146
+ const previousMaxTokens = entry.ojas.aahar.getPolicy().maxContextTokens;
147
+ let accepted;
148
+ try {
149
+ entry.ojas.aahar.updatePolicy({ maxContextTokens: max_tokens });
150
+ accepted = entry.ojas.feed(items, { query: task });
151
+ }
152
+ finally {
153
+ entry.ojas.aahar.updatePolicy({ maxContextTokens: previousMaxTokens });
154
+ }
155
+ const acceptedIds = new Set(accepted.map((i) => i.id));
156
+ const excluded = items.filter((i) => !acceptedIds.has(i.id));
157
+ const acceptedTokens = accepted.reduce((s, i) => s + i.tokenCount, 0);
158
+ const totalTokens = items.reduce((s, i) => s + i.tokenCount, 0);
159
+ const retainedTokenRatio = totalTokens === 0 ? 0 : Number((acceptedTokens / totalTokens).toFixed(2));
160
+ const nutrition = entry.ojas.aahar.assess(accepted);
161
+ const warnings = [];
162
+ const staleCount = excluded.filter((i) => t - i.freshness > entry.ojas.aahar.getPolicy().freshnessWindowSec).length;
163
+ if (staleCount > 0)
164
+ warnings.push(`excluded ${staleCount} stale items`);
165
+ const lowTrustCount = excluded.filter((i) => (i.trustScore ?? 1) < 0.4).length;
166
+ if (lowTrustCount > 0)
167
+ warnings.push(`excluded ${lowTrustCount} low-trust items`);
168
+ if (risk_level === 'critical' && entry.ojas.raksha.getEvents().length > 0) {
169
+ warnings.push('quarantined inputs detected on a critical-risk task');
170
+ }
171
+ if (freshness_required && staleCount > 0) {
172
+ warnings.push('freshness_required=true: stale items were dropped from the bundle');
173
+ }
174
+ const bundle = accepted.map((i) => `[#${i.id} | ${i.source}] ${i.content}`).join('\n\n');
175
+ void task;
176
+ return (0, envelope_1.mcpReply)({
177
+ context_bundle_id: (0, id_1.newId)('bundle'),
178
+ context_health_score: Math.round(nutrition.contextQuality.value * 100),
179
+ included_items: accepted.length,
180
+ excluded_items: excluded.length,
181
+ included_ids: accepted.map((i) => i.id),
182
+ // Three fields to thread a backwards-compatible rename without
183
+ // a silent meaning flip:
184
+ // retained_token_ratio = accepted_tokens / total_tokens (new, explicit)
185
+ // compression_ratio = retained_token_ratio (legacy alias,
186
+ // matches the
187
+ // original v0.1
188
+ // semantics)
189
+ // actual_compression_ratio = 1 - retained_token_ratio (new, the real
190
+ // definition of
191
+ // "compression")
192
+ // Old clients reading `compression_ratio` keep getting the same
193
+ // number they always got. New clients should switch to either
194
+ // `retained_token_ratio` or `actual_compression_ratio` and the
195
+ // legacy field will be removed in a future major version.
196
+ retained_token_ratio: retainedTokenRatio,
197
+ compression_ratio: retainedTokenRatio,
198
+ actual_compression_ratio: Number((1 - retainedTokenRatio).toFixed(2)),
199
+ warnings,
200
+ context: bundle,
201
+ ...(0, envelope_1.sessionScopeFields)(session_id),
202
+ }, {
203
+ agent_id,
204
+ affected_modules: ['aahar', 'raksha'],
205
+ });
206
+ });
207
+ // ── 7. ojas_scan_for_injection ───────────────────────────────────────────
208
+ registerOjasTool('ojas_scan_for_injection', {
209
+ title: 'Scan content for prompt injection and unsafe instructions',
210
+ description: 'Run Raksha threat assessment on a single piece of content (user input, retrieved webpage, ' +
211
+ 'tool output, candidate memory) and return whether it is safe to feed into the agent context or memory.',
212
+ inputSchema: {
213
+ agent_id: v3_1.z.string().min(1),
214
+ session_id: v3_1.z.string().optional(),
215
+ source_type: v3_1.z
216
+ .enum(['user_input', 'retrieved_webpage', 'tool_output', 'memory_candidate', 'other'])
217
+ .default('user_input'),
218
+ content: v3_1.z.string().min(1),
219
+ intended_use: v3_1.z
220
+ .enum(['agent_context', 'memory_write', 'tool_argument', 'display_only'])
221
+ .default('agent_context'),
222
+ },
223
+ }, async ({ agent_id, session_id, source_type, content, intended_use }) => {
224
+ const entry = registry.getOrAutoRegisterSession(agent_id, session_id);
225
+ // Pure scan: this is a one-shot verdict; do not record into defense state.
226
+ const { assessment } = entry.ojas.raksha.scanItem({
227
+ id: (0, id_1.newId)('scan'),
228
+ content,
229
+ source: source_type,
230
+ relevanceScore: 0.5,
231
+ freshness: (0, shared_1.nowSec)(),
232
+ tokenCount: (0, shared_1.estimateTokens)(content),
233
+ });
234
+ const allowedForContext = !assessment.quarantined && assessment.riskScore < 0.5;
235
+ const allowedForMemory = intended_use === 'memory_write' ? assessment.riskScore < 0.3 : allowedForContext;
236
+ const recommendedAction = assessment.quarantined
237
+ ? 'quarantine'
238
+ : assessment.riskScore > 0.4
239
+ ? 'verify_before_use'
240
+ : 'allow';
241
+ const safeExcerpt = assessment.threatType !== 'unknown'
242
+ ? `Content contains "${assessment.threatType}" patterns: ${assessment.reasons.slice(0, 2).join('; ')}`
243
+ : content.slice(0, 200);
244
+ return (0, envelope_1.mcpReply)({
245
+ injection_detected: assessment.quarantined || assessment.riskScore > 0.4,
246
+ risk_score: Number(assessment.riskScore.toFixed(2)),
247
+ attack_type: assessment.threatType,
248
+ recommended_action: recommendedAction,
249
+ safe_excerpt: safeExcerpt,
250
+ reasons: assessment.reasons,
251
+ allowed_for_context: allowedForContext,
252
+ allowed_for_memory: allowedForMemory,
253
+ ...(0, envelope_1.sessionScopeFields)(session_id),
254
+ }, {
255
+ agent_id,
256
+ affected_modules: ['raksha'],
257
+ requires_human_review: assessment.quarantined,
258
+ });
259
+ });
260
+ }
261
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/tools/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { AgentRegistry } from '../registry';
3
+ import type { AuditLogger } from '../audit';
4
+ export declare function registerAllOjasTools(server: McpServer, registry: AgentRegistry, audit?: AuditLogger): void;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAS1G"}