{"_id":"@aegiskit/observability","name":"@aegiskit/observability","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aegiskit/observability","version":"0.1.0","description":"Aegis observability: a pluggable EventStore, deterministic posture scoring, and ingestion signature verification for the security dashboard.","license":"MIT","type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@aegiskit/core":"0.1.0"},"devDependencies":{"@types/node":"^24.0.0","fast-check":"^4.8.0","tsup":"^8.5.1","typescript":"^6.0.3","vitest":"^4.1.9"},"engines":{"node":">=24.0.0"},"keywords":["security","observability","security-posture","audit-events","appsec"],"author":{"name":"tomodahinata"},"homepage":"https://github.com/tomodahinata/aegis/tree/main/packages/observability#readme","repository":{"type":"git","url":"git+https://github.com/tomodahinata/aegis.git","directory":"packages/observability"},"bugs":{"url":"https://github.com/tomodahinata/aegis/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_id":"@aegiskit/observability@0.1.0","_integrity":"sha512-fAzvWB8YIQ29d5IWlkedVRnGU/YqUsWEIfZgYZhziwYsBKxP10K30YDRQP2Jy7LmhuyE8fwu3ebI2r5jYdbUIw==","_resolved":"/tmp/1e77bd9a441ab7f915923d86b142a061/aegiskit-observability-0.1.0.tgz","_from":"file:aegiskit-observability-0.1.0.tgz","_nodeVersion":"24.17.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-fAzvWB8YIQ29d5IWlkedVRnGU/YqUsWEIfZgYZhziwYsBKxP10K30YDRQP2Jy7LmhuyE8fwu3ebI2r5jYdbUIw==","shasum":"87e0d312bc2bc71afd40b87d51a5ea5a5d3a261f","tarball":"https://registry.npmjs.org/@aegiskit/observability/-/observability-0.1.0.tgz","fileCount":5,"unpackedSize":14661,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC5h2JcNhpYyqtNGtugfXJ01aaKz9BpQ6ofI7mFtrf2owIgJhNrcQy0J9VrucNx3E0qGiEnUWP/CmhWXN4ZwxBB9+s="}]},"_npmUser":{"name":"tomodahinata","email":"hikaru.hinata.hikari@icloud.com"},"directories":{},"maintainers":[{"name":"tomodahinata","email":"hikaru.hinata.hikari@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/observability_0.1.0_1782540504383_0.12581872227724733"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-27T06:08:24.239Z","0.1.0":"2026-06-27T06:08:24.512Z","modified":"2026-06-27T06:08:24.724Z"},"maintainers":[{"name":"tomodahinata","email":"hikaru.hinata.hikari@icloud.com"}],"description":"Aegis observability: a pluggable EventStore, deterministic posture scoring, and ingestion signature verification for the security dashboard.","homepage":"https://github.com/tomodahinata/aegis/tree/main/packages/observability#readme","keywords":["security","observability","security-posture","audit-events","appsec"],"repository":{"type":"git","url":"git+https://github.com/tomodahinata/aegis.git","directory":"packages/observability"},"author":{"name":"tomodahinata"},"bugs":{"url":"https://github.com/tomodahinata/aegis/issues"},"license":"MIT","readme":"# @aegiskit/observability\n\nThe read/consumer side of Aegis: a pluggable `EventStore`, a deterministic posture score, the canonical severity table, and the ingestion signature verifier. Runs in your dashboard / ingestion service — never on the request hot path.\n\n```ts\nimport {\n  createMemoryEventStore,\n  computePostureScore,\n  verifyBatchSignature,\n} from '@aegiskit/observability';\n\nconst store = createMemoryEventStore();            // dev/self-host default; Upstash/Supabase adapters for prod\nawait store.append(events);                        // idempotent on event id\nconst summary = await store.summary({ since, until });\nconst { score, grade } = computePostureScore(summary); // 0–100, A–F — monotonic & deterministic\n\n// On the ingestion endpoint (verify the RAW body, not a re-serialized object):\nconst ok = await verifyBatchSignature(secret, rawBody, timestamp, signatureHeader);\n```\n\n- **`EventStore`** — `append` / `query` (newest-first, filtered) / `summary` (counts, block-rate, time buckets). `createMemoryEventStore` is a single-instance ring buffer; production adapters live in `@aegiskit/store-supabase` (and the Upstash store).\n- **`computePostureScore`** — pure, deterministic, **monotonic** (adding any event never raises the score), recency-decayed. `csp_violation` is weighted *low* on purpose (attacker-controllable → can't be used to tank a victim's score).\n- **`verifyBatchSignature`** — HMAC-SHA-256 over `timestamp + \".\" + rawBody`, constant-time (`subtle.verify`), with a replay window. The counterpart to `@aegiskit/core`'s `createHttpSink`.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-d5c60a270df470f5d3f14e7e7579c226"}