@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,565 @@
1
+ "use strict";
2
+ /**
3
+ * Ojas Chikitsa (ओजस चिकित्सा) — AI Repair & Rehabilitation System
4
+ *
5
+ * Diagnoses failures and creates structured repair protocols.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Chikitsa = void 0;
9
+ const types_1 = require("../types");
10
+ const id_1 = require("../util/id");
11
+ function now() {
12
+ return new Date().toISOString();
13
+ }
14
+ function clamp(v, min = 0, max = 1) {
15
+ return Math.max(min, Math.min(max, v));
16
+ }
17
+ function healthScore(value, source) {
18
+ return { value: clamp(value), timestamp: now(), source };
19
+ }
20
+ function protocolId() {
21
+ return (0, id_1.newId)('chikitsa');
22
+ }
23
+ /**
24
+ * Deterministic protocol ID for previews: a stable hash of the inputs
25
+ * `buildProtocol` would consume. Two `previewDiagnose([f])` calls with
26
+ * structurally-identical failures yield identical IDs, so callers can
27
+ * diff/dedupe preview output without surprises.
28
+ *
29
+ * 32-bit FNV-1a is plenty for this — the IDs are advisory, not
30
+ * cryptographic. Format mirrors `protocolId()` for grep symmetry.
31
+ */
32
+ function previewProtocolId(failure) {
33
+ const key = `${failure.type}|${failure.severity}|${failure.message ?? ''}`;
34
+ let h = 0x811c9dc5;
35
+ for (let i = 0; i < key.length; i++) {
36
+ h ^= key.charCodeAt(i);
37
+ h = Math.imul(h, 0x01000193) >>> 0;
38
+ }
39
+ return `chikitsa-preview-${h.toString(36)}`;
40
+ }
41
+ function recommendationSeverity(severity) {
42
+ if (severity === 'critical' || severity === 'high')
43
+ return 'critical';
44
+ if (severity === 'medium')
45
+ return 'warning';
46
+ return 'info';
47
+ }
48
+ /**
49
+ * Linear-interpolated percentile over a sorted-ascending sample.
50
+ * Returns 0 for an empty array; clamps `p` to `[0, 1]`. Used by
51
+ * `getVelocityStats()` for duration percentiles. Kept module-private
52
+ * so we don't pull in a stats library for one call site.
53
+ */
54
+ function percentile(sortedAsc, p) {
55
+ if (sortedAsc.length === 0)
56
+ return 0;
57
+ const q = Math.max(0, Math.min(1, p));
58
+ const idx = q * (sortedAsc.length - 1);
59
+ const lo = Math.floor(idx);
60
+ const hi = Math.ceil(idx);
61
+ if (lo === hi)
62
+ return sortedAsc[lo];
63
+ const w = idx - lo;
64
+ return sortedAsc[lo] * (1 - w) + sortedAsc[hi] * w;
65
+ }
66
+ class Chikitsa {
67
+ policy;
68
+ protocols = [];
69
+ /**
70
+ * Rolling window of trailing task outcomes. Used by
71
+ * `getVelocityStats()` to compute success rate + duration percentiles
72
+ * + tasks/hour. Bounded by `policy.velocityWindowSize` so memory
73
+ * usage is stable across long-running agents.
74
+ */
75
+ taskOutcomes = [];
76
+ /**
77
+ * Set of protocol ids that `executeProtocol()` has already applied
78
+ * via a `RepairExecutor`. A second call with the same protocol id
79
+ * short-circuits to `status: 'already-applied'` regardless of the
80
+ * executor's idempotency — Chikitsa is the source of truth for
81
+ * "this protocol has been run".
82
+ */
83
+ appliedProtocolIds = new Set();
84
+ /** Audit log of every executeProtocol() invocation. Capped by `maxProtocols`. */
85
+ executions = [];
86
+ constructor(policy = {}) {
87
+ this.policy = this.validatePolicy({ ...types_1.DEFAULT_REHABILITATION_POLICY, ...policy });
88
+ }
89
+ validatePolicy(policy) {
90
+ if (!Number.isInteger(policy.maxProtocolsPerCycle) || policy.maxProtocolsPerCycle <= 0) {
91
+ throw new Error('Chikitsa: maxProtocolsPerCycle must be a positive integer');
92
+ }
93
+ if (policy.maxProtocols !== undefined &&
94
+ (!Number.isInteger(policy.maxProtocols) || policy.maxProtocols < 0)) {
95
+ throw new Error('Chikitsa: maxProtocols must be a non-negative integer if set');
96
+ }
97
+ if (policy.velocityWindowSize !== undefined &&
98
+ (!Number.isInteger(policy.velocityWindowSize) || policy.velocityWindowSize <= 0)) {
99
+ throw new Error('Chikitsa: velocityWindowSize must be a positive integer if set');
100
+ }
101
+ return policy;
102
+ }
103
+ /** Drop the oldest protocols when retention cap is exceeded. */
104
+ enforceProtocolLimit() {
105
+ const cap = this.policy.maxProtocols ?? 0;
106
+ if (cap > 0 && this.protocols.length > cap) {
107
+ this.protocols.splice(0, this.protocols.length - cap);
108
+ }
109
+ }
110
+ // ── Velocity tracking (Block 6 — Chikitsa upgrades) ──────────────────────
111
+ /**
112
+ * Append a task outcome to the rolling velocity window. Rejects
113
+ * malformed entries (non-finite `durationMs`, unparseable
114
+ * `completedAt`) at the boundary so a buggy caller can't poison
115
+ * percentile math. Older entries past `velocityWindowSize` are
116
+ * evicted from the front.
117
+ */
118
+ recordTaskOutcome(record) {
119
+ if (typeof record.taskId !== 'string' || record.taskId.length === 0) {
120
+ throw new Error('Chikitsa: TaskOutcomeRecord.taskId must be a non-empty string');
121
+ }
122
+ if (typeof record.durationMs !== 'number' || !Number.isFinite(record.durationMs) || record.durationMs < 0) {
123
+ throw new Error('Chikitsa: TaskOutcomeRecord.durationMs must be a non-negative finite number');
124
+ }
125
+ if (typeof record.completedAt !== 'string' || Number.isNaN(Date.parse(record.completedAt))) {
126
+ throw new Error('Chikitsa: TaskOutcomeRecord.completedAt must be a parseable ISO timestamp');
127
+ }
128
+ if (typeof record.succeeded !== 'boolean') {
129
+ throw new Error('Chikitsa: TaskOutcomeRecord.succeeded must be a boolean');
130
+ }
131
+ this.taskOutcomes.push(record);
132
+ const cap = this.policy.velocityWindowSize ?? 50;
133
+ if (this.taskOutcomes.length > cap) {
134
+ this.taskOutcomes.splice(0, this.taskOutcomes.length - cap);
135
+ }
136
+ }
137
+ /**
138
+ * Windowed velocity summary over the trailing `velocityWindowSize`
139
+ * outcomes (default 50). Returns a zero-valued struct for an empty
140
+ * window so callers don't need to null-check before rendering.
141
+ */
142
+ getVelocityStats() {
143
+ const window = this.taskOutcomes;
144
+ if (window.length === 0) {
145
+ return {
146
+ windowSize: 0,
147
+ successRate: 0,
148
+ medianDurationMs: 0,
149
+ p90DurationMs: 0,
150
+ tasksPerHour: 0,
151
+ };
152
+ }
153
+ const successes = window.filter((r) => r.succeeded).length;
154
+ const durations = window.map((r) => r.durationMs).sort((a, b) => a - b);
155
+ const median = percentile(durations, 0.5);
156
+ const p90 = percentile(durations, 0.9);
157
+ // Tasks/hour: total successes / (newest - oldest) in hours. Needs at
158
+ // least two points with distinct timestamps.
159
+ let tasksPerHour = 0;
160
+ if (window.length >= 2) {
161
+ const times = window.map((r) => Date.parse(r.completedAt)).sort((a, b) => a - b);
162
+ const spanMs = times[times.length - 1] - times[0];
163
+ if (spanMs > 0) {
164
+ tasksPerHour = (successes * 3_600_000) / spanMs;
165
+ }
166
+ }
167
+ return {
168
+ windowSize: window.length,
169
+ successRate: successes / window.length,
170
+ medianDurationMs: median,
171
+ p90DurationMs: p90,
172
+ tasksPerHour,
173
+ };
174
+ }
175
+ /** Read-only view of the current outcome window. Useful for tests + dashboards. */
176
+ getRecentOutcomes() {
177
+ return this.taskOutcomes.map((o) => ({ ...o }));
178
+ }
179
+ /** Clear the velocity window. Useful for tests + cross-session boundaries. */
180
+ resetVelocityWindow() {
181
+ this.taskOutcomes = [];
182
+ }
183
+ // ── Handoff generation (Block 6 — Chikitsa upgrades) ─────────────────────
184
+ /**
185
+ * Serialise a structured `HandoffSnapshot` into a Markdown document
186
+ * the next agent (or the same agent in a fresh session) can read at
187
+ * boot. The file becomes the single source of truth for "what was
188
+ * I doing and where am I in it" across sessions.
189
+ *
190
+ * Markdown is intentionally human-first; structured callers should
191
+ * pass the snapshot object around directly and only call this when
192
+ * they want a persistable artefact.
193
+ */
194
+ generateHandoff(snapshot) {
195
+ if (!snapshot || typeof snapshot.agentId !== 'string' || snapshot.agentId.length === 0) {
196
+ throw new Error('Chikitsa: HandoffSnapshot.agentId is required');
197
+ }
198
+ const lines = [];
199
+ lines.push(`# Handoff — ${snapshot.agentId}`);
200
+ lines.push('');
201
+ lines.push(`_Generated: ${snapshot.generatedAt}_`);
202
+ lines.push('');
203
+ if (snapshot.focus) {
204
+ lines.push(`## Current focus`);
205
+ lines.push('');
206
+ lines.push(snapshot.focus);
207
+ lines.push('');
208
+ }
209
+ if (snapshot.velocity) {
210
+ const v = snapshot.velocity;
211
+ lines.push(`## Velocity (last ${v.windowSize} task${v.windowSize === 1 ? '' : 's'})`);
212
+ lines.push('');
213
+ lines.push(`- **Success rate**: ${(v.successRate * 100).toFixed(1)}%`);
214
+ lines.push(`- **Median duration**: ${Math.round(v.medianDurationMs)}ms`);
215
+ lines.push(`- **P90 duration**: ${Math.round(v.p90DurationMs)}ms`);
216
+ lines.push(`- **Tasks/hour**: ${v.tasksPerHour.toFixed(2)}`);
217
+ lines.push('');
218
+ }
219
+ lines.push(`## Pending (${snapshot.pendingTasks.length})`);
220
+ lines.push('');
221
+ if (snapshot.pendingTasks.length === 0) {
222
+ lines.push('_None_');
223
+ }
224
+ else {
225
+ for (const t of snapshot.pendingTasks)
226
+ lines.push(`- [ ] ${t}`);
227
+ }
228
+ lines.push('');
229
+ lines.push(`## Completed (${snapshot.completedTasks.length})`);
230
+ lines.push('');
231
+ if (snapshot.completedTasks.length === 0) {
232
+ lines.push('_None_');
233
+ }
234
+ else {
235
+ for (const t of snapshot.completedTasks)
236
+ lines.push(`- [x] ${t}`);
237
+ }
238
+ lines.push('');
239
+ if (snapshot.notes && snapshot.notes.length > 0) {
240
+ lines.push(`## Notes`);
241
+ lines.push('');
242
+ for (const n of snapshot.notes)
243
+ lines.push(`- ${n}`);
244
+ lines.push('');
245
+ }
246
+ return lines.join('\n');
247
+ }
248
+ // ── Closed-loop repair: execute + verify ─────────────────────────────────
249
+ /**
250
+ * Run a `RepairProtocol` through a pluggable `RepairExecutor` and,
251
+ * optionally, a `RepairVerifier`. Closes the
252
+ * detect → diagnose → repair → **verify** loop so the agent has
253
+ * evidence the repair actually fixed the failure.
254
+ *
255
+ * Idempotency: Chikitsa is the source of truth for "has this
256
+ * protocol already run". A second call with the same `protocol.id`
257
+ * short-circuits to `status: 'already-applied'` without invoking
258
+ * the executor.
259
+ *
260
+ * Failure handling:
261
+ * - Executor throws → `status: 'failed'`, `error` set
262
+ * - Executor returns `failed` → `status: 'failed'`
263
+ * - No verifier configured → `status: 'applied'`
264
+ * - Verifier returns `false` → `status: 'unverified'`, then
265
+ * if `executor.rollback` is defined the rollback runs and
266
+ * status promotes to `'rolled-back'` (rollback errors are
267
+ * swallowed; the status is still `'rolled-back'` so the
268
+ * audit log captures the attempt).
269
+ * - Verifier returns `true` → `status: 'verified'`
270
+ *
271
+ * Pulse events emitted via the passed-in pulse, when provided, are
272
+ * the caller's job to wire — Chikitsa returns the record and lets
273
+ * Ojas's outer loop translate that to events.
274
+ */
275
+ async executeProtocol(protocol, executor, verifier) {
276
+ if (!protocol || typeof protocol.id !== 'string' || protocol.id.length === 0) {
277
+ throw new Error('Chikitsa: executeProtocol requires a protocol with a non-empty id');
278
+ }
279
+ if (!executor || typeof executor.execute !== 'function') {
280
+ throw new Error('Chikitsa: executeProtocol requires a RepairExecutor');
281
+ }
282
+ const startedAt = now();
283
+ if (this.appliedProtocolIds.has(protocol.id)) {
284
+ const record = {
285
+ protocolId: protocol.id,
286
+ startedAt,
287
+ finishedAt: now(),
288
+ status: 'already-applied',
289
+ executor: executor.name,
290
+ verifier: verifier?.name,
291
+ };
292
+ this.recordExecution(record);
293
+ return record;
294
+ }
295
+ let execResult;
296
+ try {
297
+ execResult = await executor.execute(protocol);
298
+ }
299
+ catch (err) {
300
+ const record = {
301
+ protocolId: protocol.id,
302
+ startedAt,
303
+ finishedAt: now(),
304
+ status: 'failed',
305
+ executor: executor.name,
306
+ verifier: verifier?.name,
307
+ error: err instanceof Error ? err.message : String(err),
308
+ };
309
+ this.recordExecution(record);
310
+ return record;
311
+ }
312
+ if (!execResult || execResult.status === 'failed') {
313
+ const record = {
314
+ protocolId: protocol.id,
315
+ startedAt,
316
+ finishedAt: now(),
317
+ status: 'failed',
318
+ executor: executor.name,
319
+ verifier: verifier?.name,
320
+ executionResult: execResult,
321
+ };
322
+ this.recordExecution(record);
323
+ return record;
324
+ }
325
+ // Mark the protocol as applied BEFORE verification — even an
326
+ // unverified repair has run-side-effects we need to remember so
327
+ // a retry doesn't double-apply.
328
+ this.appliedProtocolIds.add(protocol.id);
329
+ if (!verifier) {
330
+ const record = {
331
+ protocolId: protocol.id,
332
+ startedAt,
333
+ finishedAt: now(),
334
+ status: 'applied',
335
+ executor: executor.name,
336
+ executionResult: execResult,
337
+ };
338
+ this.recordExecution(record);
339
+ return record;
340
+ }
341
+ let verifyResult;
342
+ try {
343
+ verifyResult = await verifier.verify(protocol, execResult);
344
+ }
345
+ catch (err) {
346
+ verifyResult = {
347
+ verified: false,
348
+ reason: `Verifier threw: ${err instanceof Error ? err.message : String(err)}`,
349
+ confidence: 0,
350
+ };
351
+ }
352
+ if (verifyResult.verified) {
353
+ const record = {
354
+ protocolId: protocol.id,
355
+ startedAt,
356
+ finishedAt: now(),
357
+ status: 'verified',
358
+ executor: executor.name,
359
+ verifier: verifier.name,
360
+ executionResult: execResult,
361
+ verificationResult: verifyResult,
362
+ };
363
+ this.recordExecution(record);
364
+ return record;
365
+ }
366
+ // Verification failed. Try to roll back when the executor offers it.
367
+ let rolledBack = false;
368
+ if (typeof executor.rollback === 'function') {
369
+ try {
370
+ await executor.rollback(protocol, execResult.details);
371
+ rolledBack = true;
372
+ // Once rolled back, the protocol is no longer "applied" and
373
+ // can legitimately be re-attempted in the future.
374
+ this.appliedProtocolIds.delete(protocol.id);
375
+ }
376
+ catch {
377
+ // Intentional: rollback errors are surfaced as an unverified
378
+ // record, not a thrown exception.
379
+ }
380
+ }
381
+ const record = {
382
+ protocolId: protocol.id,
383
+ startedAt,
384
+ finishedAt: now(),
385
+ status: rolledBack ? 'rolled-back' : 'unverified',
386
+ executor: executor.name,
387
+ verifier: verifier.name,
388
+ executionResult: execResult,
389
+ verificationResult: verifyResult,
390
+ };
391
+ this.recordExecution(record);
392
+ return record;
393
+ }
394
+ /** Read-only audit log of every `executeProtocol()` call. */
395
+ executionHistory() {
396
+ return structuredClone(this.executions);
397
+ }
398
+ /** Whether a protocol id has been successfully applied (and not rolled back). */
399
+ hasProtocolBeenApplied(protocolId) {
400
+ return this.appliedProtocolIds.has(protocolId);
401
+ }
402
+ /** Clear all execution / applied state. Useful for tests + cross-session boundaries. */
403
+ resetExecutionHistory() {
404
+ this.appliedProtocolIds.clear();
405
+ this.executions = [];
406
+ }
407
+ recordExecution(record) {
408
+ this.executions.push(record);
409
+ const cap = this.policy.maxProtocols ?? 0;
410
+ if (cap > 0 && this.executions.length > cap) {
411
+ this.executions.splice(0, this.executions.length - cap);
412
+ }
413
+ }
414
+ /**
415
+ * Build a repair protocol for a single failure. Encapsulates ALL the
416
+ * policy logic (severity mapping, criticalRequiresHuman) so preview and
417
+ * commit produce identical results for the same input.
418
+ *
419
+ * `idMode` controls the protocol id: `'random'` produces a unique id
420
+ * suitable for committed protocols (each diagnose() call mints a new
421
+ * one); `'deterministic'` produces a stable hash of the failure so
422
+ * preview output can be diffed and deduped across calls.
423
+ */
424
+ buildProtocol(failure, idMode = 'random') {
425
+ const severity = recommendationSeverity(failure.severity);
426
+ const actions = this.actionsFor(failure);
427
+ if (this.policy.criticalRequiresHuman &&
428
+ severity === 'critical' &&
429
+ !actions.includes('human_escalation')) {
430
+ actions.push('human_escalation');
431
+ }
432
+ return {
433
+ id: idMode === 'deterministic' ? previewProtocolId(failure) : protocolId(),
434
+ diagnosis: this.diagnosisFor(failure),
435
+ actions,
436
+ severity,
437
+ };
438
+ }
439
+ /**
440
+ * Pure: compute repair protocols for the given failures without appending
441
+ * them to internal state. Output is byte-identical to what `diagnose()`
442
+ * would produce *except* for the id, which is deterministic here so
443
+ * callers can diff or dedupe preview output across repeated calls.
444
+ */
445
+ previewDiagnose(failures) {
446
+ return failures
447
+ .slice(0, this.policy.maxProtocolsPerCycle)
448
+ .map((f) => this.buildProtocol(f, 'deterministic'));
449
+ }
450
+ /**
451
+ * Compute repair protocols and record them in internal state. Honors
452
+ * `policy.criticalRequiresHuman` via the same shared path as preview,
453
+ * but uses random ids so each diagnose() commit can be tracked
454
+ * independently in history.
455
+ */
456
+ diagnose(failures) {
457
+ const protocols = failures
458
+ .slice(0, this.policy.maxProtocolsPerCycle)
459
+ .map((f) => this.buildProtocol(f, 'random'));
460
+ this.protocols.push(...protocols);
461
+ this.enforceProtocolLimit();
462
+ return protocols;
463
+ }
464
+ diagnosisFor(failure) {
465
+ switch (failure.type) {
466
+ case 'tool_error':
467
+ return 'Tool execution failed or returned unreliable output.';
468
+ case 'timeout':
469
+ return 'Execution exceeded safe latency budget.';
470
+ case 'hallucination':
471
+ return 'Output was insufficiently grounded or overconfident.';
472
+ case 'policy_violation':
473
+ return 'Agent violated safety or instruction policy.';
474
+ case 'retrieval_noise':
475
+ return 'Retrieved context introduced excessive noise.';
476
+ case 'loop':
477
+ return 'Agent entered a repeated reasoning or tool-use loop.';
478
+ case 'prompt_injection':
479
+ return 'Agent was exposed to hostile instruction content.';
480
+ default:
481
+ return 'Unknown degradation mode detected.';
482
+ }
483
+ }
484
+ actionsFor(failure) {
485
+ switch (failure.type) {
486
+ case 'tool_error':
487
+ return ['tool_retry', 'safe_mode_activation'];
488
+ case 'timeout':
489
+ return ['plan_regeneration', 'safe_mode_activation'];
490
+ case 'hallucination':
491
+ return ['retrieval_refresh', 'instruction_regrounding'];
492
+ case 'policy_violation':
493
+ return ['instruction_regrounding', 'human_escalation'];
494
+ case 'retrieval_noise':
495
+ return ['context_reset', 'retrieval_refresh'];
496
+ case 'loop':
497
+ return ['context_reset', 'plan_regeneration'];
498
+ case 'prompt_injection':
499
+ return ['context_reset', 'memory_rollback', 'human_escalation'];
500
+ default:
501
+ return ['safe_mode_activation', 'human_escalation'];
502
+ }
503
+ }
504
+ assess() {
505
+ const hasRollback = this.protocols.some((protocol) => protocol.actions.includes('memory_rollback'));
506
+ const playbookCoverage = Math.min(1, this.protocols.length / Math.max(1, this.policy.maxProtocolsPerCycle));
507
+ return {
508
+ repairReadiness: healthScore(this.policy.autoRepairEnabled ? 0.8 : 0.6, 'chikitsa.repairReadiness'),
509
+ rollbackSafety: healthScore(hasRollback ? 0.8 : 0.5, 'chikitsa.rollbackSafety'),
510
+ recoveryPlaybooks: healthScore(playbookCoverage, 'chikitsa.playbooks'),
511
+ protocolsAvailable: this.protocols.length,
512
+ };
513
+ }
514
+ recommend() {
515
+ const health = this.assess();
516
+ const recs = [];
517
+ if (health.protocolsAvailable === 0) {
518
+ // Absence of protocols is a readiness note, not a degradation. An agent
519
+ // that hasn't needed repair yet should not look unhealthy.
520
+ recs.push({
521
+ module: 'chikitsa',
522
+ severity: 'info',
523
+ message: 'No repair protocols have been generated yet.',
524
+ action: 'Feed runtime failures into Chikitsa diagnosis when they occur.',
525
+ });
526
+ }
527
+ if (!this.policy.autoRepairEnabled) {
528
+ recs.push({
529
+ module: 'chikitsa',
530
+ severity: 'info',
531
+ message: 'Automatic repair is disabled; repairs require explicit operator action.',
532
+ });
533
+ }
534
+ if (recs.length === 0) {
535
+ recs.push({ module: 'chikitsa', severity: 'info', message: 'Repair and rehabilitation readiness is healthy.' });
536
+ }
537
+ return recs;
538
+ }
539
+ getProtocols() {
540
+ return structuredClone(this.protocols);
541
+ }
542
+ exportState() {
543
+ return {
544
+ taskOutcomes: this.getRecentOutcomes().map((o) => ({ ...o })),
545
+ protocols: [...this.getProtocols()],
546
+ executions: [...this.executionHistory()],
547
+ };
548
+ }
549
+ importState(snapshot) {
550
+ if (!snapshot)
551
+ return;
552
+ this.taskOutcomes = (snapshot.taskOutcomes ?? []).map((o) => ({ ...o }));
553
+ this.protocols = structuredClone(snapshot.protocols ?? []);
554
+ this.executions = structuredClone(snapshot.executions ?? []);
555
+ }
556
+ getPolicy() {
557
+ return { ...this.policy };
558
+ }
559
+ updatePolicy(updates) {
560
+ this.policy = this.validatePolicy({ ...this.policy, ...updates });
561
+ this.enforceProtocolLimit();
562
+ }
563
+ }
564
+ exports.Chikitsa = Chikitsa;
565
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chikitsa/index.ts"],"names":[],"mappings":"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"}
package/dist/demo.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Ojas Demo — AI Health System in Action
3
+ *
4
+ * Demonstrates all seven modules working together:
5
+ * 1. Aahar filters noisy context → clean cognitive input
6
+ * 2. Raksha quarantines hostile inputs → safe memory
7
+ * 3. Agni scores cognitive metabolism → token + latency efficiency
8
+ * 4. Nidra consolidates execution traces → reusable intelligence
9
+ * 5. Vyayam stress-tests the agent → resilience report
10
+ * 6. Chikitsa diagnoses failures → repair protocols
11
+ * 7. Pulse emits health events → continuous telemetry
12
+ * → Unified health check → comprehensive health report with per-module scores
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}