{"_id":"@abstractframework/observer","_rev":"8-fc8e460facba1d2997ed007cdb9f4e68","name":"@abstractframework/observer","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.3":{"name":"@abstractframework/observer","version":"0.1.3","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.3","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/abstractobserver#readme","bugs":{"url":"https://github.com/lpalbou/abstractobserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"95f63a1ce845d5677ea46450469a431e8d299c5b","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.3.tgz","fileCount":11,"integrity":"sha512-g0yz8ufNmjzY65Cg9sy0FgIW7Pq07KAuW8vpQK6Md8GMcPoBL22jKEFPomcqa+oKz0vRQFGZrATcKvbil1Oelg==","signatures":[{"sig":"MEQCIDZFBlGZDzq3kpUW6z5H+8KiwQdWJgvsN3uaBdS8C+jkAiA8Ccn61X52i16wjHAJfJoelhS3B5OS0gmb10GaXh6WUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3329912},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"96562d56c0cceadcf87902252e7f9646d480071f","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"lpalbou","email":"lpalbou@gmail.com"},"repository":{"url":"git+https://github.com/lpalbou/abstractobserver.git","type":"git"},"_npmVersion":"10.9.2","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"23.11.0","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.3_1770194412445_0.06061586482567338","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@abstractframework/observer","version":"0.1.4","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.4","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/abstractobserver#readme","bugs":{"url":"https://github.com/lpalbou/abstractobserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"045741e3fd70883f3b2cc4af765129ea94959d43","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.4.tgz","fileCount":11,"integrity":"sha512-J9vTchlzacbCq/FlSRKgK3/Fce/W1/jW7DtAlwBMxCfJlLAY3WQY6sOhPK4/y9SlvdGahhrCUIi6yOc/FuKdnQ==","signatures":[{"sig":"MEUCIF4nnU5MMbrndqisK5ICOqUhz/mSQXFrB2FxU2+uQNBKAiEAkbO7QyMb7R3Y8IkpiPGDOHPIaziY0/sbWzMLd5JqoD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3475107},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b8622e52add5413257e41e3661d5f90c2383390f","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"lpalbou","email":"lpalbou@gmail.com"},"repository":{"url":"git+https://github.com/lpalbou/abstractobserver.git","type":"git"},"_npmVersion":"10.9.2","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"23.11.0","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.4_1770278738556_0.5492576394127124","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@abstractframework/observer","version":"0.1.5","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.5","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/abstractobserver#readme","bugs":{"url":"https://github.com/lpalbou/abstractobserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"664c8a8c66aff1721261b3f1eb940740d667deeb","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.5.tgz","fileCount":11,"integrity":"sha512-OrWTcbBb9aCIN4e80U9IsM1JZtBLvT0dOPS3bX/l9rBL7LnaHL0aBMZikDcF/+fQPxSKH/NjDHTzXEAHhY1FjA==","signatures":[{"sig":"MEYCIQDBEo2F+fP+lbFjLUmeJSpSJYq0i6VJru5XWqPUZUCJTAIhAP2B02e3Yh8vAhqFQntqacuVWL2QZGsFaxwwboD8y+3F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3475551},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b8622e52add5413257e41e3661d5f90c2383390f","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"lpalbou","email":"lpalbou@gmail.com"},"repository":{"url":"git+https://github.com/lpalbou/abstractobserver.git","type":"git"},"_npmVersion":"10.9.2","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"23.11.0","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.5_1770287367759_0.38999448219639254","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@abstractframework/observer","version":"0.1.6","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.6","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/abstractobserver#readme","bugs":{"url":"https://github.com/lpalbou/abstractobserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"8ab6fb3d09f58bd27429cc063649c255094ec2f5","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.6.tgz","fileCount":11,"integrity":"sha512-zYXJ5ARDAaItMScBzpnph/Cy+KhXURcCOPL3lMl6x6k9ILXphKxl2v2oa7+Id12u6gwWhQdYMabOoYrXft1SMg==","signatures":[{"sig":"MEUCIAURlhglQ72lsysA5Hr7hBrEOP5VQfWqVQ8/r7VNB8R+AiEAy57W1NgHAmBvppPHU75Hwc4jOj00/G6dlcMBdWR9EVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3475551},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b8622e52add5413257e41e3661d5f90c2383390f","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"lpalbou","email":"lpalbou@gmail.com"},"repository":{"url":"git+https://github.com/lpalbou/abstractobserver.git","type":"git"},"_npmVersion":"10.9.2","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"23.11.0","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.6_1770315885236_0.205813368765847","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@abstractframework/observer","version":"0.1.8","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.8","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/AbstractObserver#readme","bugs":{"url":"https://github.com/lpalbou/AbstractObserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"46dfc8991f84849f56dc0a02cc388747e3a5a046","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.8.tgz","fileCount":11,"integrity":"sha512-4w18dca6hfYJ0ey8G/sMn9s18baWApzwCKB7dDRVVCaw0hRSw2nnNSqM1iLHiSLU9U3lxDLEpxWamKdKrj7PfQ==","signatures":[{"sig":"MEUCIHicha9PWuDfJF9ER2Qbo8sxwkMWankuKnzaErosjVspAiEA2sUb6v8i341p1ugxPq/Qmq9mG1iqavZzmT1RokH71Lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abstractframework%2fobserver@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3477381},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"213e5be8958c1ad0fe5bce4d8be1e38cafc75efc","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec0d483f-91c5-49ff-9e1b-c2a5c3d2c834"}},"repository":{"url":"git+https://github.com/lpalbou/AbstractObserver.git","type":"git"},"_npmVersion":"11.11.0","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"24.14.1","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.8_1778619909957_0.424964059142416","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@abstractframework/observer","version":"0.1.9","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.9","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/AbstractObserver#readme","bugs":{"url":"https://github.com/lpalbou/AbstractObserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"16a3279822d4946bf0ddd6ec7fbf3760cd6d07bc","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.9.tgz","fileCount":11,"integrity":"sha512-fRm28fK4cUqGDz+HJx0Di/4nTPmKkBxz3TQaogPleB8a8YNPQwKbh4u+lf1v6zAXRlnS0sIjiHmF7sCVMcqDsg==","signatures":[{"sig":"MEUCIA3JkjPYBo+5z0ThoOM6005zQWCk540zjrlbo4+E/cQaAiEAgWC6qz4WBzqLEwOzdjXEjLyVmDWinLlZOs7JDZTgDG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abstractframework%2fobserver@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3482708},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8c17e9aa1f89afe259c3a620a328e2d4d4b871b2","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec0d483f-91c5-49ff-9e1b-c2a5c3d2c834"}},"repository":{"url":"git+https://github.com/lpalbou/AbstractObserver.git","type":"git"},"_npmVersion":"11.12.1","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"24.15.0","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.9_1779766461902_0.7747790762988485","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@abstractframework/observer","version":"0.1.10","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","_id":"@abstractframework/observer@0.1.10","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"homepage":"https://github.com/lpalbou/AbstractObserver#readme","bugs":{"url":"https://github.com/lpalbou/AbstractObserver/issues"},"bin":{"abstractobserver":"bin/cli.js"},"dist":{"shasum":"d77270db1c13d80eea69e725b163d1bb050732b7","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.10.tgz","fileCount":11,"integrity":"sha512-3JdohVId4zOqP+e+cJYcMWZmXumlXkvrfCN+1TNiSvyx4G/KoHDvb2ZSZnTzV/yxP6XIH3qs9+/9NcRkeyHhoA==","signatures":[{"sig":"MEUCIQCIxHYs7pSBzo+lJqFpUNFpIacjDvy2r3F7KK4qPVUEHgIgGqTgxkLnzDcIk/kSvzDTKU8wkF3LOS4mG4JOKknPtF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abstractframework%2fobserver@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3510346},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"5ac8ce7051c0f6b47370cfdaad40d14c62aec562","scripts":{"dev":"vite --host --port 3001","test":"vitest run","build":"tsc && vite build","start":"node ./bin/cli.js","preview":"vite preview","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec0d483f-91c5-49ff-9e1b-c2a5c3d2c834"}},"repository":{"url":"git+https://github.com/lpalbou/AbstractObserver.git","type":"git"},"_npmVersion":"11.13.0","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","directories":{},"_nodeVersion":"24.16.0","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","vitest":"^3.2.4","typescript":"^5.3.3","@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/observer_0.1.10_1780220286567_0.12377396312713196","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@abstractframework/observer","version":"0.1.11","description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","type":"module","author":{"name":"Laurent-Philippe Albou"},"license":"MIT","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"repository":{"type":"git","url":"git+https://github.com/lpalbou/AbstractObserver.git"},"homepage":"https://github.com/lpalbou/AbstractObserver#readme","publishConfig":{"access":"public"},"bin":{"abstractobserver":"bin/cli.js"},"scripts":{"dev":"vite --host --port 3001","build":"tsc && vite build","preview":"vite preview","start":"node ./bin/cli.js","test":"vitest run","llms:full":"node ./scripts/generate-llms-full.mjs","prepublishOnly":"npm run build"},"dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","reactflow":"^11.10.4"},"devDependencies":{"@types/react":"^18.2.48","@types/react-dom":"^18.2.18","@vitejs/plugin-react":"^4.7.0","typescript":"^5.3.3","vite":"^6.4.1","vitest":"^3.2.4"},"engines":{"node":">=18.0.0"},"gitHead":"b82f77069157620abc3a824fcb623178aa94339f","_id":"@abstractframework/observer@0.1.11","bugs":{"url":"https://github.com/lpalbou/AbstractObserver/issues"},"_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-GlzMtyFwgTT0VDb6rdRgqoKlGLqs6K1d8NfY4nITv4ffP2fGgknu4lqZHP7sc0CfBqxVXS7TgJoAe+ar+Vq/0Q==","shasum":"90b6c98cb4f3c6b5936ff109aeb5c61886a1a605","tarball":"https://registry.npmjs.org/@abstractframework/observer/-/observer-0.1.11.tgz","fileCount":11,"unpackedSize":4107033,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abstractframework%2fobserver@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDLh709Zdv+p/mwMZ6CD6AoIt3ghqWyZggYTRWJVbgAGwIhAJCXeESMrC4Ww7BMf+xk6mFrL9VZvEqoJigW2HCAvetQ"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec0d483f-91c5-49ff-9e1b-c2a5c3d2c834"}},"directories":{},"maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/observer_0.1.11_1781463231491_0.4202628366113643"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-04T08:40:12.382Z","modified":"2026-06-14T18:53:51.945Z","0.1.3":"2026-02-04T08:40:12.611Z","0.1.4":"2026-02-05T08:05:38.786Z","0.1.5":"2026-02-05T10:29:27.959Z","0.1.6":"2026-02-05T18:24:45.471Z","0.1.8":"2026-05-12T21:05:10.251Z","0.1.9":"2026-05-26T03:34:22.066Z","0.1.10":"2026-05-31T09:38:06.754Z","0.1.11":"2026-06-14T18:53:51.659Z"},"bugs":{"url":"https://github.com/lpalbou/AbstractObserver/issues"},"author":{"name":"Laurent-Philippe Albou"},"license":"MIT","homepage":"https://github.com/lpalbou/AbstractObserver#readme","keywords":["abstractframework","observability","workflow","gateway","ui","pwa","monitoring"],"repository":{"type":"git","url":"git+https://github.com/lpalbou/AbstractObserver.git"},"description":"Gateway-only observability UI for AbstractFramework - connect to a Run Gateway, replay/stream the ledger, and submit durable commands","maintainers":[{"name":"lpalbou","email":"lpalbou@gmail.com"}],"readme":"# AbstractObserver\n\nGateway-only observability UI (Web/PWA) for AbstractFramework runs.\n\nWhat it does (implemented in `src/ui/app.tsx` + `src/lib/gateway_client.ts`):\n- **Discover** workflows/bundles exposed by an AbstractGateway\n- **Launch** or **schedule** runs (durable)\n- **Observe** runs and subruns by replaying + streaming the durable **ledger** (replay-first + SSE)\n- **Inspect runtime state** across active runs, generated artifacts, provider calls, and gateway audit logs\n- **Control** runs via durable commands (`pause`, `resume`, `cancel`)\n- (Optional) **Voice** in run chat: gateway-based TTS + push-to-talk transcription (`src/ui/use_gateway_voice.ts`)\n\n## Where it fits (AbstractFramework ecosystem)\nAbstractObserver is one of the browser UIs in the **AbstractFramework** ecosystem:\n- AbstractFramework (ecosystem entrypoint): https://github.com/lpalbou/AbstractFramework\n- AbstractRuntime (durable runtime + ledger behind the gateway): https://github.com/lpalbou/abstractruntime\n- AbstractCore (LLM + tools integration used by runtime/workflows): https://github.com/lpalbou/abstractcore\n\n```mermaid\nflowchart LR\n  U[User] --> O[AbstractObserver<br/>browser UI]\n  O -->|HTTP fetch + SSE| G[AbstractGateway<br/>/api/gateway/*]\n  G --> R[AbstractRuntime<br/>durable runs + append-only ledger]\n  R --> C[AbstractCore<br/>LLM + tools (optional)]\n```\n\n## Quickstart (npm)\nPrereqs:\n- Node.js `>=18`\n- An AbstractGateway that exposes the endpoints listed in `docs/api.md`\n\nRun the UI server:\n```bash\nnpx --yes --package @abstractframework/observer -- abstractobserver\n```\n\nNote: the npm package is `@abstractframework/observer`, and the CLI binary is `abstractobserver`.\n\nOpen `http://localhost:3001`, then go to **Settings** and configure:\n- **Gateway URL** (usually your gateway base URL, e.g. `http://localhost:8081`)\n  - Leave it blank only for same-origin deployments (reverse proxy routes `/api`) or when using `npm run dev` (Vite `/api` proxy).\n- **Gateway user** and that user's **Gateway token** in hosted user-auth mode,\n  then click **Connect**\n\nIn hosted mode, Observer exchanges the user token for an app-scoped Gateway\nbrowser session and does not persist the token in browser settings. Direct\nbearer-token mode remains available for local development. When Observer is\nserved from a non-local hostname, the server-configured Gateway URL is\nauthoritative; browser-supplied Gateway URL changes are rejected unless\n`ABSTRACTOBSERVER_ALLOW_REMOTE_BROWSER_GATEWAY_CONFIG=1` is set behind your own\naccess control. If a reverse proxy rewrites `Host`, set\n`ABSTRACTOBSERVER_TRUST_PROXY_HEADERS=1` only when the proxy strips\nclient-supplied forwarded headers.\n\n## Install options\n### Global install\n```bash\nnpm install -g @abstractframework/observer\nabstractobserver\n```\n\n### Pin a version (recommended for deployments)\n```bash\nnpx --yes --package @abstractframework/observer@0.1.6 -- abstractobserver\n```\n\n### CLI configuration\nThe CLI is a static file server implemented in `bin/cli.js`.\n- `PORT` (default `3001`)\n- `HOST` (default `0.0.0.0`)\n- `--monitor-gpu` or `ABSTRACTOBSERVER_MONITOR_GPU=on` (enables the optional GPU widget)\n\n## Features (UI pages)\nAll pages share the same gateway connection settings.\n\n- **Observe**: workflow/subworkflow navigator, overview, human timeline, raw ledger, provider calls, graph, digest, attachments, chat (optional voice: PTT + TTS)\n- **Runtime**: Activity, Artifacts, and Logs modes for platform-level monitoring. The Artifact Explorer uses Gateway artifact envelopes and exact stats, separates Voice/Music/Sound/unclassified audio from render kinds such as Markdown/HTML/JSON, previews media inline, and links artifacts back to producing runs, ledgers, and trace/audit actions when metadata is available\n- **Launch**: start runs, schedule runs, bundle upload/reload\n- **Mindmap**: knowledge-graph query UI (requires `POST /api/gateway/kg/query`)\n- **Backlog / Inbox (reports + email) / Processes**: maintainer tooling (high trust; requires additional gateway endpoints)\n\n## Documentation\n- Start here: `docs/getting-started.md`\n- Docs index: `docs/README.md`\n- FAQ: `docs/faq.md`\n- Architecture (with diagrams): `docs/architecture.md`\n- Configuration & deployment: `docs/configuration.md`\n- API (gateway endpoints used): `docs/api.md`\n- Development: `docs/development.md`\n- Security & trust boundaries: `docs/security.md`\n\n## Project\n- Changelog: `CHANGELOG.md`\n- Contributing: `CONTRIBUTING.md`\n- Security policy (vulnerability reporting): `SECURITY.md`\n- Acknowledgments: `ACKNOWLEDGMENTS.md`\n\n## Development (from source)\n```bash\nnpm install\nnpm run dev\n```\n\nImportant: dev/build expects sibling “AbstractUIC” source packages because `vite.config.ts` aliases imports to `../abstractuic/*/src`.\nSee `docs/development.md` for details.\n","readmeFilename":"README.md"}