@maudecode/talaria-web 0.0.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.
- package/contract_versions.json +18 -0
- package/dist/api/auth-raw.d.ts +9 -0
- package/dist/api/auth-raw.js +134 -0
- package/dist/api/auth-raw.js.map +1 -0
- package/dist/api/automation-raw.d.ts +16 -0
- package/dist/api/automation-raw.js +340 -0
- package/dist/api/automation-raw.js.map +1 -0
- package/dist/api/automation-router.d.ts +788 -0
- package/dist/api/automation-router.js +248 -0
- package/dist/api/automation-router.js.map +1 -0
- package/dist/api/chat-router.d.ts +375 -0
- package/dist/api/chat-router.js +446 -0
- package/dist/api/chat-router.js.map +1 -0
- package/dist/api/git-router.d.ts +681 -0
- package/dist/api/git-router.js +275 -0
- package/dist/api/git-router.js.map +1 -0
- package/dist/api/raw-routes.d.ts +10 -0
- package/dist/api/raw-routes.js +466 -0
- package/dist/api/raw-routes.js.map +1 -0
- package/dist/api/router.d.ts +226 -0
- package/dist/api/router.js +331 -0
- package/dist/api/router.js.map +1 -0
- package/dist/api/session-visibility.d.ts +12 -0
- package/dist/api/session-visibility.js +51 -0
- package/dist/api/session-visibility.js.map +1 -0
- package/dist/api/sessions-router.d.ts +1728 -0
- package/dist/api/sessions-router.js +815 -0
- package/dist/api/sessions-router.js.map +1 -0
- package/dist/api/settings-router.d.ts +592 -0
- package/dist/api/settings-router.js +474 -0
- package/dist/api/settings-router.js.map +1 -0
- package/dist/api/sse-routes.d.ts +51 -0
- package/dist/api/sse-routes.js +602 -0
- package/dist/api/sse-routes.js.map +1 -0
- package/dist/api/tools-raw.d.ts +5 -0
- package/dist/api/tools-raw.js +291 -0
- package/dist/api/tools-raw.js.map +1 -0
- package/dist/api/tools-router.d.ts +494 -0
- package/dist/api/tools-router.js +349 -0
- package/dist/api/tools-router.js.map +1 -0
- package/dist/app.d.ts +4787 -0
- package/dist/app.js +453 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/cookies.d.ts +17 -0
- package/dist/auth/cookies.js +42 -0
- package/dist/auth/cookies.js.map +1 -0
- package/dist/auth/crypto.d.ts +9 -0
- package/dist/auth/crypto.js +38 -0
- package/dist/auth/crypto.js.map +1 -0
- package/dist/auth/gate.d.ts +39 -0
- package/dist/auth/gate.js +406 -0
- package/dist/auth/gate.js.map +1 -0
- package/dist/auth/oidc.d.ts +138 -0
- package/dist/auth/oidc.js +836 -0
- package/dist/auth/oidc.js.map +1 -0
- package/dist/auth/passkeys.d.ts +49 -0
- package/dist/auth/passkeys.js +310 -0
- package/dist/auth/passkeys.js.map +1 -0
- package/dist/auth/store.d.ts +116 -0
- package/dist/auth/store.js +485 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/bin/talaria-web-mcp.d.ts +2 -0
- package/dist/bin/talaria-web-mcp.js +12 -0
- package/dist/bin/talaria-web-mcp.js.map +1 -0
- package/dist/bin/talaria-web.d.ts +2 -0
- package/dist/bin/talaria-web.js +87 -0
- package/dist/bin/talaria-web.js.map +1 -0
- package/dist/cli/ctl.d.ts +58 -0
- package/dist/cli/ctl.js +643 -0
- package/dist/cli/ctl.js.map +1 -0
- package/dist/cli/dotenv.d.ts +30 -0
- package/dist/cli/dotenv.js +115 -0
- package/dist/cli/dotenv.js.map +1 -0
- package/dist/cli/launcher.d.ts +49 -0
- package/dist/cli/launcher.js +213 -0
- package/dist/cli/launcher.js.map +1 -0
- package/dist/cli/supervise.d.ts +10 -0
- package/dist/cli/supervise.js +33 -0
- package/dist/cli/supervise.js.map +1 -0
- package/dist/cli/web-root.d.ts +2 -0
- package/dist/cli/web-root.js +23 -0
- package/dist/cli/web-root.js.map +1 -0
- package/dist/config/agent-config.d.ts +109 -0
- package/dist/config/agent-config.js +632 -0
- package/dist/config/agent-config.js.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/fs/atomic.d.ts +7 -0
- package/dist/fs/atomic.js +68 -0
- package/dist/fs/atomic.js.map +1 -0
- package/dist/http/addresses.d.ts +5 -0
- package/dist/http/addresses.js +68 -0
- package/dist/http/addresses.js.map +1 -0
- package/dist/http/capped.d.ts +2 -0
- package/dist/http/capped.js +22 -0
- package/dist/http/capped.js.map +1 -0
- package/dist/http/context.d.ts +281 -0
- package/dist/http/context.js +327 -0
- package/dist/http/context.js.map +1 -0
- package/dist/http/csp.d.ts +11 -0
- package/dist/http/csp.js +51 -0
- package/dist/http/csp.js.map +1 -0
- package/dist/http/origin.d.ts +39 -0
- package/dist/http/origin.js +183 -0
- package/dist/http/origin.js.map +1 -0
- package/dist/http/pinned.d.ts +18 -0
- package/dist/http/pinned.js +62 -0
- package/dist/http/pinned.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +29 -0
- package/dist/mcp/server.js +221 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/onboarding.d.ts +57 -0
- package/dist/onboarding.js +381 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/profiles/profiles.d.ts +96 -0
- package/dist/profiles/profiles.js +476 -0
- package/dist/profiles/profiles.js.map +1 -0
- package/dist/projects.d.ts +36 -0
- package/dist/projects.js +102 -0
- package/dist/projects.js.map +1 -0
- package/dist/providers/catalog.d.ts +118 -0
- package/dist/providers/catalog.js +868 -0
- package/dist/providers/catalog.js.map +1 -0
- package/dist/providers/env-file.d.ts +6 -0
- package/dist/providers/env-file.js +106 -0
- package/dist/providers/env-file.js.map +1 -0
- package/dist/providers/runtime-env.d.ts +20 -0
- package/dist/providers/runtime-env.js +85 -0
- package/dist/providers/runtime-env.js.map +1 -0
- package/dist/providers/tables.d.ts +54 -0
- package/dist/providers/tables.js +54 -0
- package/dist/providers/tables.js.map +1 -0
- package/dist/redact.d.ts +23 -0
- package/dist/redact.js +337 -0
- package/dist/redact.js.map +1 -0
- package/dist/release.d.ts +16 -0
- package/dist/release.js +114 -0
- package/dist/release.js.map +1 -0
- package/dist/runtime.d.ts +21 -0
- package/dist/runtime.js +680 -0
- package/dist/runtime.js.map +1 -0
- package/dist/server.d.ts +20 -0
- package/dist/server.js +90 -0
- package/dist/server.js.map +1 -0
- package/dist/sessions/anchor.d.ts +43 -0
- package/dist/sessions/anchor.js +311 -0
- package/dist/sessions/anchor.js.map +1 -0
- package/dist/sessions/cli-sessions.d.ts +27 -0
- package/dist/sessions/cli-sessions.js +158 -0
- package/dist/sessions/cli-sessions.js.map +1 -0
- package/dist/sessions/completions.d.ts +62 -0
- package/dist/sessions/completions.js +332 -0
- package/dist/sessions/completions.js.map +1 -0
- package/dist/sessions/drafts.d.ts +26 -0
- package/dist/sessions/drafts.js +117 -0
- package/dist/sessions/drafts.js.map +1 -0
- package/dist/sessions/events.d.ts +32 -0
- package/dist/sessions/events.js +80 -0
- package/dist/sessions/events.js.map +1 -0
- package/dist/sessions/export.d.ts +4 -0
- package/dist/sessions/export.js +186 -0
- package/dist/sessions/export.js.map +1 -0
- package/dist/sessions/gateway-watcher.d.ts +58 -0
- package/dist/sessions/gateway-watcher.js +199 -0
- package/dist/sessions/gateway-watcher.js.map +1 -0
- package/dist/sessions/journal.d.ts +103 -0
- package/dist/sessions/journal.js +543 -0
- package/dist/sessions/journal.js.map +1 -0
- package/dist/sessions/list.d.ts +130 -0
- package/dist/sessions/list.js +846 -0
- package/dist/sessions/list.js.map +1 -0
- package/dist/sessions/merge.d.ts +57 -0
- package/dist/sessions/merge.js +517 -0
- package/dist/sessions/merge.js.map +1 -0
- package/dist/sessions/pending.d.ts +69 -0
- package/dist/sessions/pending.js +271 -0
- package/dist/sessions/pending.js.map +1 -0
- package/dist/sessions/reasoning-titles.d.ts +31 -0
- package/dist/sessions/reasoning-titles.js +143 -0
- package/dist/sessions/reasoning-titles.js.map +1 -0
- package/dist/sessions/relay.d.ts +131 -0
- package/dist/sessions/relay.js +577 -0
- package/dist/sessions/relay.js.map +1 -0
- package/dist/sessions/service.d.ts +189 -0
- package/dist/sessions/service.js +1344 -0
- package/dist/sessions/service.js.map +1 -0
- package/dist/sessions/session.d.ts +131 -0
- package/dist/sessions/session.js +505 -0
- package/dist/sessions/session.js.map +1 -0
- package/dist/sessions/shares.d.ts +31 -0
- package/dist/sessions/shares.js +267 -0
- package/dist/sessions/shares.js.map +1 -0
- package/dist/sessions/state-db.d.ts +52 -0
- package/dist/sessions/state-db.js +641 -0
- package/dist/sessions/state-db.js.map +1 -0
- package/dist/sessions/state-saved.d.ts +13 -0
- package/dist/sessions/state-saved.js +47 -0
- package/dist/sessions/state-saved.js.map +1 -0
- package/dist/sessions/store.d.ts +124 -0
- package/dist/sessions/store.js +790 -0
- package/dist/sessions/store.js.map +1 -0
- package/dist/sessions/streams.d.ts +90 -0
- package/dist/sessions/streams.js +200 -0
- package/dist/sessions/streams.js.map +1 -0
- package/dist/sessions/titles.d.ts +17 -0
- package/dist/sessions/titles.js +231 -0
- package/dist/sessions/titles.js.map +1 -0
- package/dist/sessions/todo.d.ts +8 -0
- package/dist/sessions/todo.js +72 -0
- package/dist/sessions/todo.js.map +1 -0
- package/dist/sessions/turn-context.d.ts +27 -0
- package/dist/sessions/turn-context.js +136 -0
- package/dist/sessions/turn-context.js.map +1 -0
- package/dist/sessions/turn.d.ts +178 -0
- package/dist/sessions/turn.js +1357 -0
- package/dist/sessions/turn.js.map +1 -0
- package/dist/sessions/window.d.ts +10 -0
- package/dist/sessions/window.js +151 -0
- package/dist/sessions/window.js.map +1 -0
- package/dist/settings.d.ts +57 -0
- package/dist/settings.js +481 -0
- package/dist/settings.js.map +1 -0
- package/dist/sidecar/client.d.ts +75 -0
- package/dist/sidecar/client.js +252 -0
- package/dist/sidecar/client.js.map +1 -0
- package/dist/sidecar/discover.d.ts +22 -0
- package/dist/sidecar/discover.js +146 -0
- package/dist/sidecar/discover.js.map +1 -0
- package/dist/sidecar/fake.d.ts +37 -0
- package/dist/sidecar/fake.js +79 -0
- package/dist/sidecar/fake.js.map +1 -0
- package/dist/spa.d.ts +42 -0
- package/dist/spa.js +145 -0
- package/dist/spa.js.map +1 -0
- package/dist/startup.d.ts +19 -0
- package/dist/startup.js +44 -0
- package/dist/startup.js.map +1 -0
- package/dist/test/harness.d.ts +41 -0
- package/dist/test/harness.js +123 -0
- package/dist/test/harness.js.map +1 -0
- package/dist/text/diff.d.ts +16 -0
- package/dist/text/diff.js +122 -0
- package/dist/text/diff.js.map +1 -0
- package/dist/text/markdown.d.ts +8 -0
- package/dist/text/markdown.js +185 -0
- package/dist/text/markdown.js.map +1 -0
- package/dist/tools/crons.d.ts +51 -0
- package/dist/tools/crons.js +317 -0
- package/dist/tools/crons.js.map +1 -0
- package/dist/tools/extensions.d.ts +92 -0
- package/dist/tools/extensions.js +1096 -0
- package/dist/tools/extensions.js.map +1 -0
- package/dist/tools/health.d.ts +21 -0
- package/dist/tools/health.js +334 -0
- package/dist/tools/health.js.map +1 -0
- package/dist/tools/hygiene.d.ts +29 -0
- package/dist/tools/hygiene.js +112 -0
- package/dist/tools/hygiene.js.map +1 -0
- package/dist/tools/insights.d.ts +3 -0
- package/dist/tools/insights.js +92 -0
- package/dist/tools/insights.js.map +1 -0
- package/dist/tools/kanban.d.ts +25 -0
- package/dist/tools/kanban.js +79 -0
- package/dist/tools/kanban.js.map +1 -0
- package/dist/tools/mcp-health.d.ts +28 -0
- package/dist/tools/mcp-health.js +207 -0
- package/dist/tools/mcp-health.js.map +1 -0
- package/dist/tools/mcp.d.ts +34 -0
- package/dist/tools/mcp.js +269 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/memory.d.ts +20 -0
- package/dist/tools/memory.js +216 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/skills.d.ts +43 -0
- package/dist/tools/skills.js +193 -0
- package/dist/tools/skills.js.map +1 -0
- package/dist/tools/terminal.d.ts +96 -0
- package/dist/tools/terminal.js +324 -0
- package/dist/tools/terminal.js.map +1 -0
- package/dist/tools/updates.d.ts +151 -0
- package/dist/tools/updates.js +1151 -0
- package/dist/tools/updates.js.map +1 -0
- package/dist/util.d.ts +6 -0
- package/dist/util.js +40 -0
- package/dist/util.js.map +1 -0
- package/dist/workspace/fs.d.ts +61 -0
- package/dist/workspace/fs.js +555 -0
- package/dist/workspace/fs.js.map +1 -0
- package/dist/workspace/git.d.ts +204 -0
- package/dist/workspace/git.js +1236 -0
- package/dist/workspace/git.js.map +1 -0
- package/dist/workspace/media.d.ts +47 -0
- package/dist/workspace/media.js +448 -0
- package/dist/workspace/media.js.map +1 -0
- package/dist/workspace/paths.d.ts +6 -0
- package/dist/workspace/paths.js +41 -0
- package/dist/workspace/paths.js.map +1 -0
- package/dist/workspace/rollback.d.ts +29 -0
- package/dist/workspace/rollback.js +337 -0
- package/dist/workspace/rollback.js.map +1 -0
- package/dist/workspace/unzip.d.ts +9 -0
- package/dist/workspace/unzip.js +61 -0
- package/dist/workspace/unzip.js.map +1 -0
- package/dist/workspace/upload.d.ts +40 -0
- package/dist/workspace/upload.js +215 -0
- package/dist/workspace/upload.js.map +1 -0
- package/dist/workspace/workspaces.d.ts +84 -0
- package/dist/workspace/workspaces.js +663 -0
- package/dist/workspace/workspaces.js.map +1 -0
- package/dist/workspace/worktrees.d.ts +14 -0
- package/dist/workspace/worktrees.js +171 -0
- package/dist/workspace/worktrees.js.map +1 -0
- package/dist/workspace/zip.d.ts +16 -0
- package/dist/workspace/zip.js +205 -0
- package/dist/workspace/zip.js.map +1 -0
- package/package.json +54 -0
- package/sidecar/agent_dependency.json +11 -0
- package/sidecar/scripts/record-fixtures.py +72 -0
- package/sidecar/scripts/replay_sidecar.py +113 -0
- package/sidecar/scripts/test.sh +22 -0
- package/sidecar/talaria_sidecar/__init__.py +10 -0
- package/sidecar/talaria_sidecar/__main__.py +46 -0
- package/sidecar/talaria_sidecar/errors.py +41 -0
- package/sidecar/talaria_sidecar/home.py +103 -0
- package/sidecar/talaria_sidecar/methods/__init__.py +37 -0
- package/sidecar/talaria_sidecar/methods/aux.py +160 -0
- package/sidecar/talaria_sidecar/methods/chat.py +791 -0
- package/sidecar/talaria_sidecar/methods/commands.py +340 -0
- package/sidecar/talaria_sidecar/methods/config.py +131 -0
- package/sidecar/talaria_sidecar/methods/cron.py +558 -0
- package/sidecar/talaria_sidecar/methods/gateway.py +106 -0
- package/sidecar/talaria_sidecar/methods/goals.py +225 -0
- package/sidecar/talaria_sidecar/methods/kanban.py +723 -0
- package/sidecar/talaria_sidecar/methods/mcp.py +65 -0
- package/sidecar/talaria_sidecar/methods/process.py +155 -0
- package/sidecar/talaria_sidecar/methods/profiles.py +254 -0
- package/sidecar/talaria_sidecar/methods/providers.py +241 -0
- package/sidecar/talaria_sidecar/methods/runtime.py +68 -0
- package/sidecar/talaria_sidecar/methods/skills.py +262 -0
- package/sidecar/talaria_sidecar/methods/state_db.py +418 -0
- package/sidecar/talaria_sidecar/methods/stt.py +131 -0
- package/sidecar/talaria_sidecar/methods/text.py +85 -0
- package/sidecar/talaria_sidecar/methods/usage.py +59 -0
- package/sidecar/talaria_sidecar/methods/worktree.py +71 -0
- package/sidecar/talaria_sidecar/rpc.py +218 -0
- package/sidecar/talaria_sidecar/runtime.py +330 -0
- package/static/brand/apple-touch-icon.png +0 -0
- package/static/brand/brandmark.svg +12 -0
- package/static/brand/favicon-192.png +0 -0
- package/static/brand/favicon-32.png +0 -0
- package/static/brand/favicon-512.png +0 -0
- package/static/brand/favicon-512.svg +14 -0
- package/static/brand/favicon-dark.svg +14 -0
- package/static/brand/favicon-light.svg +14 -0
- package/static/brand/favicon.ico +0 -0
- package/static/brand/favicon.svg +14 -0
- package/static/dist/FILES.txt +515 -0
- package/static/dist/assets/AppShell-gs0grlbs.js +1 -0
- package/static/dist/assets/ChatPage-gi1xlz52.js +18 -0
- package/static/dist/assets/ChatPage-gmu5c7lf.css +1 -0
- package/static/dist/assets/HubRoute-qs9vzuh0.js +2 -0
- package/static/dist/assets/InterVariable-nonokl6i.woff2 +0 -0
- package/static/dist/assets/KaTeX_AMS-Regular-e1why8ff.woff2 +0 -0
- package/static/dist/assets/KaTeX_AMS-Regular-mec5w1mt.woff +0 -0
- package/static/dist/assets/KaTeX_AMS-Regular-mos1wgtv.ttf +0 -0
- package/static/dist/assets/KaTeX_Caligraphic-Bold-axibvb5b.ttf +0 -0
- package/static/dist/assets/KaTeX_Caligraphic-Bold-eccvbn5c.woff +0 -0
- package/static/dist/assets/KaTeX_Caligraphic-Bold-n63xiolk.woff2 +0 -0
- package/static/dist/assets/KaTeX_Caligraphic-Regular-c5dvswgu.ttf +0 -0
- package/static/dist/assets/KaTeX_Caligraphic-Regular-iz5gexw5.woff +0 -0
- package/static/dist/assets/KaTeX_Caligraphic-Regular-npwmqylf.woff2 +0 -0
- package/static/dist/assets/KaTeX_Fraktur-Bold-ftsn4fxp.ttf +0 -0
- package/static/dist/assets/KaTeX_Fraktur-Bold-gokmhdpe.woff +0 -0
- package/static/dist/assets/KaTeX_Fraktur-Bold-ikhebgtj.woff2 +0 -0
- package/static/dist/assets/KaTeX_Fraktur-Regular-hzce8q9o.ttf +0 -0
- package/static/dist/assets/KaTeX_Fraktur-Regular-i0egury6.woff2 +0 -0
- package/static/dist/assets/KaTeX_Fraktur-Regular-okwm110b.woff +0 -0
- package/static/dist/assets/KaTeX_Main-Bold-c5g2m5kh.ttf +0 -0
- package/static/dist/assets/KaTeX_Main-Bold-ktk38ybk.woff2 +0 -0
- package/static/dist/assets/KaTeX_Main-Bold-ureqgmzo.woff +0 -0
- package/static/dist/assets/KaTeX_Main-BoldItalic-bd0upj71.woff +0 -0
- package/static/dist/assets/KaTeX_Main-BoldItalic-oj033t4i.woff2 +0 -0
- package/static/dist/assets/KaTeX_Main-BoldItalic-opttanob.ttf +0 -0
- package/static/dist/assets/KaTeX_Main-Italic-2p4bq1jf.woff2 +0 -0
- package/static/dist/assets/KaTeX_Main-Italic-dj86j9xo.ttf +0 -0
- package/static/dist/assets/KaTeX_Main-Italic-esmxqs8d.woff +0 -0
- package/static/dist/assets/KaTeX_Main-Regular-c978jrkj.ttf +0 -0
- package/static/dist/assets/KaTeX_Main-Regular-hbkzldb8.woff2 +0 -0
- package/static/dist/assets/KaTeX_Main-Regular-n865mmt0.woff +0 -0
- package/static/dist/assets/KaTeX_Math-BoldItalic-cbkxiib1.woff +0 -0
- package/static/dist/assets/KaTeX_Math-BoldItalic-hcom2j4y.ttf +0 -0
- package/static/dist/assets/KaTeX_Math-BoldItalic-jdo1yxu8.woff2 +0 -0
- package/static/dist/assets/KaTeX_Math-Italic-b5lfnctb.ttf +0 -0
- package/static/dist/assets/KaTeX_Math-Italic-cz4b2ure.woff2 +0 -0
- package/static/dist/assets/KaTeX_Math-Italic-lo894bvj.woff +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Bold-h55uj19s.ttf +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Bold-m9bkcp3c.woff +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Bold-otxc8itm.woff2 +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Italic-bp85cocg.ttf +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Italic-g42k16nn.woff +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Italic-k4kksncm.woff2 +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Regular-evq9548m.ttf +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Regular-izeggh93.woff +0 -0
- package/static/dist/assets/KaTeX_SansSerif-Regular-ltw53ck4.woff2 +0 -0
- package/static/dist/assets/KaTeX_Script-Regular-k8v4ghws.ttf +0 -0
- package/static/dist/assets/KaTeX_Script-Regular-o2nd302f.woff +0 -0
- package/static/dist/assets/KaTeX_Script-Regular-oybd33cp.woff2 +0 -0
- package/static/dist/assets/KaTeX_Size1-Regular-cjccv44r.woff2 +0 -0
- package/static/dist/assets/KaTeX_Size1-Regular-k13yopgz.woff +0 -0
- package/static/dist/assets/KaTeX_Size1-Regular-naiuhmx7.ttf +0 -0
- package/static/dist/assets/KaTeX_Size2-Regular-cnnxwlt7.woff +0 -0
- package/static/dist/assets/KaTeX_Size2-Regular-hlh6jazj.ttf +0 -0
- package/static/dist/assets/KaTeX_Size2-Regular-onxq3bzc.woff2 +0 -0
- package/static/dist/assets/KaTeX_Size3-Regular-i00haf83.woff +0 -0
- package/static/dist/assets/KaTeX_Size3-Regular-nk2kx36d.ttf +0 -0
- package/static/dist/assets/KaTeX_Size4-Regular-effsfy3y.woff +0 -0
- package/static/dist/assets/KaTeX_Size4-Regular-myjqyche.ttf +0 -0
- package/static/dist/assets/KaTeX_Size4-Regular-nv9nppzf.woff2 +0 -0
- package/static/dist/assets/KaTeX_Typewriter-Regular-iqvr3vwu.woff2 +0 -0
- package/static/dist/assets/KaTeX_Typewriter-Regular-kzj4h457.woff +0 -0
- package/static/dist/assets/KaTeX_Typewriter-Regular-owzsy8p5.ttf +0 -0
- package/static/dist/assets/Markdown-bt9bqd6a.js +598 -0
- package/static/dist/assets/Markdown-lwviulmg.css +1 -0
- package/static/dist/assets/RightPanel-dn19xu42.js +1 -0
- package/static/dist/assets/Select-y7wtf85g.js +1 -0
- package/static/dist/assets/SessionListPanel-igwdj9xr.js +1 -0
- package/static/dist/assets/SettingsLayout-n6mu0ghg.js +1 -0
- package/static/dist/assets/States-oil2issf.js +1 -0
- package/static/dist/assets/Toaster-jtn59pjm.js +1 -0
- package/static/dist/assets/_app-k4jrkgfa.js +1 -0
- package/static/dist/assets/_app.ext._extensionId-mmf1mepm.js +1 -0
- package/static/dist/assets/_app.index-mb41nf00.js +1 -0
- package/static/dist/assets/_app.insights-mz5cep8m.js +1 -0
- package/static/dist/assets/_app.kanban-ocgw506i.js +1 -0
- package/static/dist/assets/_app.logs-lstmoju6.js +1 -0
- package/static/dist/assets/_app.memory-dishj9ra.js +1 -0
- package/static/dist/assets/_app.profiles-dynpvsio.js +1 -0
- package/static/dist/assets/_app.session._sessionId-kevi4qd2.js +1 -0
- package/static/dist/assets/_app.settings-c2czm9v4.js +1 -0
- package/static/dist/assets/_app.settings._section-exwflld7.js +1 -0
- package/static/dist/assets/_app.skills-j5jh2nug.js +1 -0
- package/static/dist/assets/_app.tasks-b99d98fo.js +2 -0
- package/static/dist/assets/_app.todos-ma8urvn3.js +1 -0
- package/static/dist/assets/_app.workspaces-l86cxeod.js +1 -0
- package/static/dist/assets/abap-ij37pki6.js +1 -0
- package/static/dist/assets/abnfDiagram-VCTEODGH-hvrr25lb.js +1 -0
- package/static/dist/assets/actionscript-3-dz7y3j1x.js +1 -0
- package/static/dist/assets/ada-k9zgv987.js +1 -0
- package/static/dist/assets/andromeeda-c2n0n86o.js +1 -0
- package/static/dist/assets/angular-html-nu6l31w3.js +1 -0
- package/static/dist/assets/angular-ts-fbx4f8mm.js +1 -0
- package/static/dist/assets/apache-binppq6z.js +1 -0
- package/static/dist/assets/apex-h8illjly.js +1 -0
- package/static/dist/assets/apl-bx2xr7dh.js +1 -0
- package/static/dist/assets/applescript-h0ok5sww.js +1 -0
- package/static/dist/assets/ara-dlpjioua.js +1 -0
- package/static/dist/assets/arc-7popfhbk.js +1 -0
- package/static/dist/assets/architecture-7GRP2DOG-mqft9w2p.js +1 -0
- package/static/dist/assets/architectureDiagram-5GKGNRK7-b3r0z8sq.js +36 -0
- package/static/dist/assets/array-f36850hm.js +1 -0
- package/static/dist/assets/asciidoc-lx0cuujr.js +1 -0
- package/static/dist/assets/asm-j5diz3sz.js +1 -0
- package/static/dist/assets/astro-g77i97cb.js +1 -0
- package/static/dist/assets/aurora-x-h2hngdsl.js +1 -0
- package/static/dist/assets/awk-fecghegf.js +1 -0
- package/static/dist/assets/ayu-dark-nvvuggz9.js +1 -0
- package/static/dist/assets/ayu-light-k5fxgplt.js +1 -0
- package/static/dist/assets/ayu-mirage-gltrvhcx.js +1 -0
- package/static/dist/assets/ballerina-hk9oga18.js +1 -0
- package/static/dist/assets/bat-ghs7lag5.js +1 -0
- package/static/dist/assets/beancount-pc6q2dmq.js +1 -0
- package/static/dist/assets/berry-l96jp8n4.js +1 -0
- package/static/dist/assets/bibtex-jxn7maz2.js +1 -0
- package/static/dist/assets/bicep-i1yv3ngd.js +1 -0
- package/static/dist/assets/bird2-k3aagqn0.js +1 -0
- package/static/dist/assets/blade-boo0u92y.js +1 -0
- package/static/dist/assets/blockDiagram-I7D4REHJ-hd3gw0cj.js +129 -0
- package/static/dist/assets/bsl-f8m1ja7w.js +1 -0
- package/static/dist/assets/c-cat0w3sc.js +1 -0
- package/static/dist/assets/c3-j6ile59o.js +1 -0
- package/static/dist/assets/c4Diagram-7LVT6UL2-jlmbjiji.js +38 -0
- package/static/dist/assets/cadence-e3x2pgsu.js +1 -0
- package/static/dist/assets/cairo-mblac9dt.js +1 -0
- package/static/dist/assets/catppuccin-frappe-dj7qsd4s.js +1 -0
- package/static/dist/assets/catppuccin-latte-oh2bx7qn.js +1 -0
- package/static/dist/assets/catppuccin-macchiato-m3xyazph.js +1 -0
- package/static/dist/assets/catppuccin-mocha-m3rjj89j.js +1 -0
- package/static/dist/assets/channel-ix8cxdld.js +1 -0
- package/static/dist/assets/chunk-2Q5K7J3B-k08c29qw.js +1 -0
- package/static/dist/assets/chunk-4HAMMTFA-oydbpsin.js +62 -0
- package/static/dist/assets/chunk-5VM5RSS4-br0zxsux.js +15 -0
- package/static/dist/assets/chunk-75Z2AOVW-j633otj1.js +2 -0
- package/static/dist/assets/chunk-DU6HZSFF-ods2l027.js +128 -0
- package/static/dist/assets/chunk-F27PBJKO-ln4n2cwt.js +1 -0
- package/static/dist/assets/chunk-FOHPRMQF-opuflp73.js +161 -0
- package/static/dist/assets/chunk-GMAD6QVW-fpz133eh.js +72 -0
- package/static/dist/assets/chunk-GVQU2GXP-abs9ixiy.js +1 -0
- package/static/dist/assets/chunk-IMKFNOWR-j9vukdy1.js +231 -0
- package/static/dist/assets/chunk-JWPE2WC7-mw03m5s9.js +1 -0
- package/static/dist/assets/chunk-L3NEJ4N5-cfyw87r3.js +1 -0
- package/static/dist/assets/chunk-OSK3NFVY-baja78wr.js +10 -0
- package/static/dist/assets/chunk-P2QGCYS3-g66xby8h.js +1 -0
- package/static/dist/assets/chunk-POPQ4Y6H-osqu864t.js +1 -0
- package/static/dist/assets/chunk-PWAF6VOD-egejasv1.js +1 -0
- package/static/dist/assets/chunk-SHT3W25Y-l014h8zz.js +168 -0
- package/static/dist/assets/chunk-SVP7TREG-n3z10bp3.js +88 -0
- package/static/dist/assets/chunk-TICWLB2K-bzozkjc0.js +206 -0
- package/static/dist/assets/chunk-XXDRQBXY-n40pf9vy.js +1 -0
- package/static/dist/assets/chunk-Y2CYZVJY-n9gs7k4d.js +1 -0
- package/static/dist/assets/clarity-bdn1d8fx.js +1 -0
- package/static/dist/assets/classDiagram-ZZMXUADV-c210y3il.js +1 -0
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-c210y3il.js +1 -0
- package/static/dist/assets/clojure-n5b9o4lq.js +1 -0
- package/static/dist/assets/cmake-f68p68h5.js +1 -0
- package/static/dist/assets/cobol-go622aep.js +1 -0
- package/static/dist/assets/codeowners-lgfjmw2s.js +1 -0
- package/static/dist/assets/codeql-cojlysyb.js +1 -0
- package/static/dist/assets/coffee-jwo1xjhq.js +1 -0
- package/static/dist/assets/common-lisp-ko58h8pe.js +1 -0
- package/static/dist/assets/copied-cjsttec1.js +1 -0
- package/static/dist/assets/coq-gns70ukp.js +1 -0
- package/static/dist/assets/cose-bilkent-JH36ORCC-eclcy6ja.js +1 -0
- package/static/dist/assets/cpp-nre7j0kq.js +1 -0
- package/static/dist/assets/crystal-lviso2je.js +1 -0
- package/static/dist/assets/csharp-kkz9hcxp.js +1 -0
- package/static/dist/assets/css-ywz9j4hb.js +1 -0
- package/static/dist/assets/csv-ol0sxk26.js +1 -0
- package/static/dist/assets/cue-h5naoluy.js +1 -0
- package/static/dist/assets/cynefin-OW5HDTMX-elpt7h1j.js +1 -0
- package/static/dist/assets/cynefinDiagram-5FMLGOSQ-5mzl5pi2.js +62 -0
- package/static/dist/assets/cypher-j2an42no.js +1 -0
- package/static/dist/assets/cytoscape.esm-bqu53u12.js +321 -0
- package/static/dist/assets/d-crxkca3p.js +1 -0
- package/static/dist/assets/dagre-GXQ25YYZ-ihwlhmfl.js +4 -0
- package/static/dist/assets/dagre-lkoknbjn.js +1 -0
- package/static/dist/assets/dark-plus-kin19s9x.js +1 -0
- package/static/dist/assets/dart-nsg0xvqh.js +1 -0
- package/static/dist/assets/dax-f82777dv.js +1 -0
- package/static/dist/assets/defaultLocale-eeoev87l.js +1 -0
- package/static/dist/assets/desktop-nvg88bea.js +1 -0
- package/static/dist/assets/diagram-S7CK7UJ4-4z90agaz.js +30 -0
- package/static/dist/assets/diagram-UQ7AKVKN-eifw0lg7.js +41 -0
- package/static/dist/assets/diagram-VSXAHHWV-ksh3sjqv.js +3 -0
- package/static/dist/assets/diagram-VX7I27RA-ett72f71.js +24 -0
- package/static/dist/assets/diagram-Z3DM3KII-l8scp8nu.js +24 -0
- package/static/dist/assets/diff-c5xjoml2.js +1 -0
- package/static/dist/assets/dist-c4c2m3kv.js +1 -0
- package/static/dist/assets/docker-s0pf2u92.js +1 -0
- package/static/dist/assets/dotenv-d2gvqxc1.js +1 -0
- package/static/dist/assets/dracula-eicfho73.js +1 -0
- package/static/dist/assets/dracula-soft-doslejd2.js +1 -0
- package/static/dist/assets/dream-maker-mz8d3pqb.js +1 -0
- package/static/dist/assets/ebnfDiagram-PWID7BFC-f0pxcmit.js +1 -0
- package/static/dist/assets/edge-dvv35byi.js +1 -0
- package/static/dist/assets/elixir-i2f1ki1g.js +1 -0
- package/static/dist/assets/elm-cpepyjm4.js +1 -0
- package/static/dist/assets/emacs-lisp-lhl63kmy.js +1 -0
- package/static/dist/assets/endpoints-ipnv1hd4.js +64 -0
- package/static/dist/assets/erDiagram-RLTQ6QDP-f47m5xh0.js +99 -0
- package/static/dist/assets/erb-idlyfheg.js +1 -0
- package/static/dist/assets/erlang-kbk8e1kh.js +1 -0
- package/static/dist/assets/eventmodeling-NTZA5JFV-d9b5a0ia.js +1 -0
- package/static/dist/assets/everforest-dark-cv4maom7.js +1 -0
- package/static/dist/assets/everforest-light-njdw7fx6.js +1 -0
- package/static/dist/assets/fennel-mm8r79co.js +1 -0
- package/static/dist/assets/fish-em0xdaat.js +1 -0
- package/static/dist/assets/flowDiagram-HODETNUW-kfxxsyrk.js +1 -0
- package/static/dist/assets/fluent-kzq1mil2.js +1 -0
- package/static/dist/assets/fortran-fixed-form-lwddxd99.js +1 -0
- package/static/dist/assets/fortran-free-form-jao3bzvo.js +1 -0
- package/static/dist/assets/fsharp-ouam7w4k.js +1 -0
- package/static/dist/assets/ganttDiagram-EL5Y4UJY-bmktjdi0.js +292 -0
- package/static/dist/assets/gdresource-gawivel9.js +1 -0
- package/static/dist/assets/gdscript-kcamxf4c.js +1 -0
- package/static/dist/assets/gdshader-hx54new5.js +1 -0
- package/static/dist/assets/genie-i5n3m91v.js +1 -0
- package/static/dist/assets/gherkin-lxn181dy.js +1 -0
- package/static/dist/assets/git-commit-e6qgtuh5.js +1 -0
- package/static/dist/assets/git-rebase-d9lpfpbn.js +1 -0
- package/static/dist/assets/gitGraph-4MIJSDKK-j2ueg258.js +1 -0
- package/static/dist/assets/gitGraphDiagram-WWUBYQGX-ms6586v9.js +106 -0
- package/static/dist/assets/github-dark-default-m0qs6qki.js +1 -0
- package/static/dist/assets/github-dark-dimmed-g0vz4qee.js +1 -0
- package/static/dist/assets/github-dark-high-contrast-hugubo52.js +1 -0
- package/static/dist/assets/github-dark-ljlyim8s.js +1 -0
- package/static/dist/assets/github-light-default-fgfak5mv.js +1 -0
- package/static/dist/assets/github-light-high-contrast-hka6wb3r.js +1 -0
- package/static/dist/assets/github-light-jhyi45t4.js +1 -0
- package/static/dist/assets/gleam-ix1dym3g.js +1 -0
- package/static/dist/assets/glimmer-js-39i0urfb.js +1 -0
- package/static/dist/assets/glimmer-ts-gdtd6n73.js +1 -0
- package/static/dist/assets/glsl-o1djm5pp.js +1 -0
- package/static/dist/assets/gn-cbzhsgl9.js +1 -0
- package/static/dist/assets/gnuplot-dr8f9gvm.js +1 -0
- package/static/dist/assets/go-enhtrrw8.js +1 -0
- package/static/dist/assets/graphlib-mrng1xrk.js +1 -0
- package/static/dist/assets/graphql-kj6rz55t.js +1 -0
- package/static/dist/assets/groovy-jff59t9e.js +1 -0
- package/static/dist/assets/gruvbox-dark-hard-lgsj7y5r.js +1 -0
- package/static/dist/assets/gruvbox-dark-medium-ezt86wrc.js +1 -0
- package/static/dist/assets/gruvbox-dark-soft-1a3jfdlm.js +1 -0
- package/static/dist/assets/gruvbox-light-hard-d82lddjc.js +1 -0
- package/static/dist/assets/gruvbox-light-medium-d3ffitv3.js +1 -0
- package/static/dist/assets/gruvbox-light-soft-e5gf7i2q.js +1 -0
- package/static/dist/assets/hack-pe1qqr2i.js +1 -0
- package/static/dist/assets/haml-cknnbcqs.js +1 -0
- package/static/dist/assets/handlebars-hwq64orh.js +1 -0
- package/static/dist/assets/haskell-o7nor2z2.js +1 -0
- package/static/dist/assets/haxe-4rwdh42h.js +1 -0
- package/static/dist/assets/hcl-nnng763h.js +1 -0
- package/static/dist/assets/highlighted-body-KPVGNVTW-ev52d2si.js +1 -0
- package/static/dist/assets/hjson-kscwmuzk.js +1 -0
- package/static/dist/assets/hlsl-kopkvwox.js +1 -0
- package/static/dist/assets/horizon-bright-gn4aqinx.js +1 -0
- package/static/dist/assets/horizon-h5nzrwlb.js +1 -0
- package/static/dist/assets/houston-kifsbmbx.js +1 -0
- package/static/dist/assets/html-derivative-h2i2pyjc.js +1 -0
- package/static/dist/assets/html-ha05xtvt.js +1 -0
- package/static/dist/assets/http-cf94zu27.js +1 -0
- package/static/dist/assets/hurl-lslax568.js +1 -0
- package/static/dist/assets/hxml-g52gxet6.js +1 -0
- package/static/dist/assets/hy-jc9www1l.js +1 -0
- package/static/dist/assets/imba-n9x1ej2f.js +1 -0
- package/static/dist/assets/index-bz7g7rhx.css +2 -0
- package/static/dist/assets/index-hywfjw88.js +11 -0
- package/static/dist/assets/info-A6RAGUB7-j717vyt7.js +1 -0
- package/static/dist/assets/infoDiagram-27XIBGKW-dsbpib36.js +2 -0
- package/static/dist/assets/ini-hg6eosim.js +1 -0
- package/static/dist/assets/init-ljpdkjra.js +1 -0
- package/static/dist/assets/ishikawaDiagram-5VMMS53U-n0sz3i2d.js +70 -0
- package/static/dist/assets/java-ndjf2o89.js +1 -0
- package/static/dist/assets/javascript-coftlwy3.js +1 -0
- package/static/dist/assets/jinja-etei9wy7.js +1 -0
- package/static/dist/assets/jison-hyekgft1.js +1 -0
- package/static/dist/assets/journeyDiagram-3NMN7TZE-mcxz1mme.js +139 -0
- package/static/dist/assets/json-lok0yaho.js +1 -0
- package/static/dist/assets/json5-e4tr07tg.js +1 -0
- package/static/dist/assets/jsonc-jbmkhoep.js +1 -0
- package/static/dist/assets/jsonl-j35ke6at.js +1 -0
- package/static/dist/assets/jsonnet-iewuy86o.js +1 -0
- package/static/dist/assets/jssm-m1449zlc.js +1 -0
- package/static/dist/assets/jsx-b64w0nbx.js +1 -0
- package/static/dist/assets/jsx-runtime-eu92a5pu.js +1 -0
- package/static/dist/assets/julia-jxxzz2yn.js +1 -0
- package/static/dist/assets/just-mc29iw9t.js +1 -0
- package/static/dist/assets/kanagawa-dragon-i9mmmgud.js +1 -0
- package/static/dist/assets/kanagawa-lotus-ev5oro17.js +1 -0
- package/static/dist/assets/kanagawa-wave-i06560uw.js +1 -0
- package/static/dist/assets/kanban-definition-UXKFOSKX-n6hq2lyc.js +89 -0
- package/static/dist/assets/kdl-kgzv1x9e.js +1 -0
- package/static/dist/assets/kotlin-nmx05b3f.js +1 -0
- package/static/dist/assets/kusto-fawmdms4.js +1 -0
- package/static/dist/assets/laserwave-goebpayr.js +1 -0
- package/static/dist/assets/latex-pafa03ft.js +1 -0
- package/static/dist/assets/lazyRouteComponent-faquioun.js +1 -0
- package/static/dist/assets/lean-jom31nm3.js +1 -0
- package/static/dist/assets/less-mwvscr3d.js +1 -0
- package/static/dist/assets/light-plus-mws1g85f.js +1 -0
- package/static/dist/assets/line-h5xq20s4.js +1 -0
- package/static/dist/assets/linear-becwlnhk.js +1 -0
- package/static/dist/assets/link-ib4prsn5.js +1 -0
- package/static/dist/assets/liquid-hz5c2pov.js +1 -0
- package/static/dist/assets/llvm-j5wmr3g9.js +1 -0
- package/static/dist/assets/log-eur4gurm.js +1 -0
- package/static/dist/assets/login-mvjys1ol.js +1 -0
- package/static/dist/assets/logo-j3h8r0pu.js +1 -0
- package/static/dist/assets/lua-leyf8mlb.js +1 -0
- package/static/dist/assets/luau-im5d6q8k.js +1 -0
- package/static/dist/assets/make-npl27xqy.js +1 -0
- package/static/dist/assets/markdown-fibv6lrm.js +1 -0
- package/static/dist/assets/marko-cn1fzpdv.js +1 -0
- package/static/dist/assets/matchContext-f8oy3lo7.js +1 -0
- package/static/dist/assets/material-theme-darker-dhm8zmok.js +1 -0
- package/static/dist/assets/material-theme-gdimc61s.js +1 -0
- package/static/dist/assets/material-theme-lighter-c1fszbb2.js +1 -0
- package/static/dist/assets/material-theme-ocean-iakojpmy.js +1 -0
- package/static/dist/assets/material-theme-palenight-hgxmykmi.js +1 -0
- package/static/dist/assets/matlab-o6nvvbf2.js +1 -0
- package/static/dist/assets/mdc-huhy88df.js +1 -0
- package/static/dist/assets/mdx-mmgeh26h.js +1 -0
- package/static/dist/assets/mermaid-HWGCJPDP-gmnkgf1n.js +1 -0
- package/static/dist/assets/mermaid-f9ad87lb.js +1 -0
- package/static/dist/assets/mermaid-parser.core-n9cuu5ue.js +7 -0
- package/static/dist/assets/min-dark-e5sicuw2.js +1 -0
- package/static/dist/assets/min-light-gst87fvf.js +1 -0
- package/static/dist/assets/mindmap-definition-YA3MSWOX-gta3u7z4.js +96 -0
- package/static/dist/assets/mipsasm-etoqqos6.js +1 -0
- package/static/dist/assets/mojo-fyyk0b1z.js +1 -0
- package/static/dist/assets/monokai-jl389a9o.js +1 -0
- package/static/dist/assets/moonbit-je86hbgx.js +1 -0
- package/static/dist/assets/move-g7w7k042.js +1 -0
- package/static/dist/assets/narrat-d1cszt6i.js +1 -0
- package/static/dist/assets/nextflow-fpd3eqgm.js +1 -0
- package/static/dist/assets/nextflow-groovy-nc95p6pm.js +1 -0
- package/static/dist/assets/nginx-e7lvhsmn.js +1 -0
- package/static/dist/assets/night-owl-light-b2j1bc8t.js +1 -0
- package/static/dist/assets/night-owl-nm3cgqfv.js +1 -0
- package/static/dist/assets/nim-dun5d8mk.js +1 -0
- package/static/dist/assets/nix-sxazvl0w.js +1 -0
- package/static/dist/assets/nord-jiiendyo.js +1 -0
- package/static/dist/assets/not-found-ccnnac39.js +1 -0
- package/static/dist/assets/nushell-nbi9xmdg.js +1 -0
- package/static/dist/assets/objective-c-oshe4ycx.js +1 -0
- package/static/dist/assets/objective-cpp-go29ofq1.js +1 -0
- package/static/dist/assets/ocaml-56kivtnr.js +1 -0
- package/static/dist/assets/odin-g772bhi5.js +1 -0
- package/static/dist/assets/onboarding-l6quy6gz.js +1 -0
- package/static/dist/assets/one-dark-pro-ext74l87.js +1 -0
- package/static/dist/assets/one-light-o5mlsn8i.js +1 -0
- package/static/dist/assets/openscad-e9e9mfyg.js +1 -0
- package/static/dist/assets/ordinal-d88pfdla.js +1 -0
- package/static/dist/assets/packet-AYTQ26CC-bpzuq5n6.js +1 -0
- package/static/dist/assets/pascal-dmg2rs6d.js +1 -0
- package/static/dist/assets/passkeys-ktie3sr0.js +1 -0
- package/static/dist/assets/path-b509aej0.js +1 -0
- package/static/dist/assets/pegDiagram-XKGWAZYB-juye13e5.js +1 -0
- package/static/dist/assets/perl-bj3oqtet.js +1 -0
- package/static/dist/assets/php-buzp12r0.js +1 -0
- package/static/dist/assets/pie-WAS4IAKB-odhb8buq.js +1 -0
- package/static/dist/assets/pieDiagram-E7YTZNPT-mgb14ksh.js +39 -0
- package/static/dist/assets/pkl-co2grztk.js +1 -0
- package/static/dist/assets/plastic-mm7c7uq7.js +1 -0
- package/static/dist/assets/plsql-l0i9f33n.js +1 -0
- package/static/dist/assets/po-f3ga9osn.js +1 -0
- package/static/dist/assets/poimandres-mnwq5v4d.js +1 -0
- package/static/dist/assets/polar-ldicpe6g.js +1 -0
- package/static/dist/assets/postcss-fgpvnt75.js +1 -0
- package/static/dist/assets/powerquery-mflxo46x.js +1 -0
- package/static/dist/assets/powershell-oado4mxi.js +1 -0
- package/static/dist/assets/prepaint-f14kbd49.js +21 -0
- package/static/dist/assets/prisma-go1e7wq8.js +1 -0
- package/static/dist/assets/prolog-cbjal8aj.js +1 -0
- package/static/dist/assets/proto-lrhov7xc.js +1 -0
- package/static/dist/assets/pug-mjad7he9.js +1 -0
- package/static/dist/assets/puppet-h22szrmn.js +1 -0
- package/static/dist/assets/purescript-dwpj7hdb.js +1 -0
- package/static/dist/assets/python-b767fgue.js +1 -0
- package/static/dist/assets/qml-d1gdp10s.js +1 -0
- package/static/dist/assets/qmldir-lsawched.js +1 -0
- package/static/dist/assets/qss-lyvmg4f4.js +1 -0
- package/static/dist/assets/quadrantDiagram-AXDQQJYC-cg36naog.js +7 -0
- package/static/dist/assets/r-o3r9c7ao.js +1 -0
- package/static/dist/assets/racket-nbfqjw5h.js +1 -0
- package/static/dist/assets/radar-RG4KPBEZ-lgzfpnef.js +1 -0
- package/static/dist/assets/railroad-74A4TZTK-gmglc3ua.js +1 -0
- package/static/dist/assets/railroad-abnf-HS5TGJTU-5mjl5wpv.js +1 -0
- package/static/dist/assets/railroad-ebnf-LZEXJU2U-bfram8v8.js +1 -0
- package/static/dist/assets/railroad-peg-WCYAUIDC-nwfczn88.js +1 -0
- package/static/dist/assets/railroadDiagram-O6MQD6OU-cmxwjt73.js +1 -0
- package/static/dist/assets/raku-hcy6uwm6.js +1 -0
- package/static/dist/assets/razor-ilc585yr.js +1 -0
- package/static/dist/assets/red-if4jt303.js +1 -0
- package/static/dist/assets/refresh-cw-mf192q3f.js +1 -0
- package/static/dist/assets/reg-ivi9d1my.js +1 -0
- package/static/dist/assets/regexp-mpjtcvwm.js +1 -0
- package/static/dist/assets/rel-gqpkg3ta.js +1 -0
- package/static/dist/assets/requirementDiagram-BXWQKSXE-ir0s2mek.js +84 -0
- package/static/dist/assets/riscv-j1f2yjp2.js +1 -0
- package/static/dist/assets/rolldown-runtime-b9miacsj.js +1 -0
- package/static/dist/assets/ron-bjqasg78.js +1 -0
- package/static/dist/assets/root-mbklpuv4.js +1 -0
- package/static/dist/assets/rose-pine-dawn-nlpzqzob.js +1 -0
- package/static/dist/assets/rose-pine-grpwpg67.js +1 -0
- package/static/dist/assets/rose-pine-moon-b9yyevxr.js +1 -0
- package/static/dist/assets/rosmsg-hv3wcot6.js +1 -0
- package/static/dist/assets/rough.esm-on4k4je3.js +1 -0
- package/static/dist/assets/rst-jrkwjdyi.js +1 -0
- package/static/dist/assets/ruby-n4tjcbpz.js +1 -0
- package/static/dist/assets/rust-jqduclx1.js +1 -0
- package/static/dist/assets/sankeyDiagram-P5KCCOFB-jo7jcdq0.js +40 -0
- package/static/dist/assets/sas-hjo6y93k.js +1 -0
- package/static/dist/assets/sass-m1yncbwu.js +1 -0
- package/static/dist/assets/saved-g777hp1t.js +1 -0
- package/static/dist/assets/scala-l9ahg4e9.js +1 -0
- package/static/dist/assets/scheme-mlodf39l.js +1 -0
- package/static/dist/assets/scss-ncidjv48.js +1 -0
- package/static/dist/assets/sdbl-bwg2t5pt.js +1 -0
- package/static/dist/assets/search-i2kfogyx.js +1 -0
- package/static/dist/assets/sequenceDiagram-WJ2MYXX4-n0pf6xk5.js +162 -0
- package/static/dist/assets/settings_section_extensions_title-hgvh507l.js +1 -0
- package/static/dist/assets/shaderlab-be89ch6g.js +1 -0
- package/static/dist/assets/share._token-il3y6js2.js +2 -0
- package/static/dist/assets/shellscript-m8whjpqd.js +1 -0
- package/static/dist/assets/shellsession-i5bj6syz.js +1 -0
- package/static/dist/assets/sizeCapture-INFHLROL-g612l48j.js +1 -0
- package/static/dist/assets/slack-dark-ny9l0r7b.js +1 -0
- package/static/dist/assets/slack-ochin-g98102hs.js +1 -0
- package/static/dist/assets/sliders-horizontal-kd99ffvl.js +1 -0
- package/static/dist/assets/smalltalk-g9lpwisn.js +1 -0
- package/static/dist/assets/snazzy-light-dlu9q2m5.js +1 -0
- package/static/dist/assets/solarized-dark-mx1nd4sm.js +1 -0
- package/static/dist/assets/solarized-light-mqzd33fz.js +1 -0
- package/static/dist/assets/solidity-ih313ji4.js +1 -0
- package/static/dist/assets/soy-hhh36ysq.js +1 -0
- package/static/dist/assets/sparql-pewjbauq.js +1 -0
- package/static/dist/assets/splunk-d8q89juf.js +1 -0
- package/static/dist/assets/sql-j21bzcl6.js +1 -0
- package/static/dist/assets/src-hjyib4mu.js +1 -0
- package/static/dist/assets/ssh-config-fzxlymn8.js +1 -0
- package/static/dist/assets/stata-bbu2onh1.js +1 -0
- package/static/dist/assets/stateDiagram-D77RDMKH-olbrwyv9.js +1 -0
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-dnzlmdpu.js +1 -0
- package/static/dist/assets/stylus-hifjg0ye.js +1 -0
- package/static/dist/assets/surrealql-l5vczuco.js +1 -0
- package/static/dist/assets/svelte-idn422g6.js +1 -0
- package/static/dist/assets/swift-n11rc3v3.js +1 -0
- package/static/dist/assets/swimlanes-42K2YHIH-od14zrw6.js +1 -0
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-ck0eqqdp.js +8 -0
- package/static/dist/assets/synthwave-84-clkt7319.js +1 -0
- package/static/dist/assets/system-verilog-l8k1po2l.js +1 -0
- package/static/dist/assets/systemd-d1zoxedb.js +1 -0
- package/static/dist/assets/talonscript-j9gt5qb1.js +1 -0
- package/static/dist/assets/tasl-meer3lyk.js +1 -0
- package/static/dist/assets/tcl-jdc54rsg.js +1 -0
- package/static/dist/assets/templ-e22qou3c.js +1 -0
- package/static/dist/assets/terraform-oav3wzsy.js +1 -0
- package/static/dist/assets/tex-deqpc5ee.js +1 -0
- package/static/dist/assets/timeline-definition-24CTP7MA-l0qokmnb.js +120 -0
- package/static/dist/assets/todoStore-la6uyqzj.js +1 -0
- package/static/dist/assets/tokyo-night-cnyqlmc2.js +1 -0
- package/static/dist/assets/toml-jj1ee1k1.js +1 -0
- package/static/dist/assets/trash-bxz1k9cw.js +1 -0
- package/static/dist/assets/treeView-Q6P3EWNA-hma3ip8m.js +1 -0
- package/static/dist/assets/treemap-WGGIJYW6-bghjng5m.js +1 -0
- package/static/dist/assets/ts-tags-ctnibc27.js +1 -0
- package/static/dist/assets/tsv-cxbgj4wh.js +1 -0
- package/static/dist/assets/tsx-i163n32g.js +1 -0
- package/static/dist/assets/turtle-g1kfgpwv.js +1 -0
- package/static/dist/assets/twig-x0fi7wm8.js +1 -0
- package/static/dist/assets/typescript-g18c34xz.js +1 -0
- package/static/dist/assets/typespec-hokgy7ic.js +1 -0
- package/static/dist/assets/typst-l6lt2vta.js +1 -0
- package/static/dist/assets/untitled-nfaw0q7m.js +1 -0
- package/static/dist/assets/useForm-k7fj2zsr.js +1 -0
- package/static/dist/assets/useLocale-evhacmv2.js +1 -0
- package/static/dist/assets/useParams-gpbjxj8s.js +1 -0
- package/static/dist/assets/useSearch-bhdptos7.js +1 -0
- package/static/dist/assets/useSelector-f2aak1ol.js +1 -0
- package/static/dist/assets/v-lwnsi8rl.js +1 -0
- package/static/dist/assets/vala-db1h2kp7.js +1 -0
- package/static/dist/assets/vb-nrezymby.js +1 -0
- package/static/dist/assets/vennDiagram-4TSXK5OY-bo97zf3z.js +34 -0
- package/static/dist/assets/verilog-jworpiw4.js +1 -0
- package/static/dist/assets/vesper-o1vwtlg2.js +1 -0
- package/static/dist/assets/vhdl-gnn4vfnm.js +1 -0
- package/static/dist/assets/viml-ogfqutxv.js +1 -0
- package/static/dist/assets/vitesse-black-b5y62t71.js +1 -0
- package/static/dist/assets/vitesse-dark-fj1ju380.js +1 -0
- package/static/dist/assets/vitesse-light-bjycd3ha.js +1 -0
- package/static/dist/assets/vue-html-nskj3du0.js +1 -0
- package/static/dist/assets/vue-mwu5l1bb.js +1 -0
- package/static/dist/assets/vue-vine-cqe77smq.js +1 -0
- package/static/dist/assets/vyper-jsmo764l.js +1 -0
- package/static/dist/assets/wardley-WFR3VGLG-pbjl6jav.js +1 -0
- package/static/dist/assets/wardleyDiagram-VM6X3IG4-bmy9i09l.js +78 -0
- package/static/dist/assets/wasm-g1zrybde.js +1 -0
- package/static/dist/assets/wasm-gezzbmz0.js +1 -0
- package/static/dist/assets/wenyan-lgcd7t1n.js +1 -0
- package/static/dist/assets/wgsl-gotoh48n.js +1 -0
- package/static/dist/assets/wikitext-j1379ez7.js +1 -0
- package/static/dist/assets/wit-neu67rwu.js +1 -0
- package/static/dist/assets/wolfram-mbb1p6oi.js +1 -0
- package/static/dist/assets/xml-gau7gvrv.js +1 -0
- package/static/dist/assets/xsl-ew09zq8b.js +1 -0
- package/static/dist/assets/xychartDiagram-S5SC5T6Z-eercu0mc.js +7 -0
- package/static/dist/assets/yaml-ofnrxtvf.js +1 -0
- package/static/dist/assets/zenscript-ge1h0r83.js +1 -0
- package/static/dist/assets/zig-ik06evde.js +1 -0
- package/static/dist/extension-sdk.js +1 -0
- package/static/dist/index.html +1 -0
- package/static/dist/manifest.webmanifest +29 -0
- package/static/dist/sw.js +944 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""A scripted sidecar that replays the recorded fixtures and stages an approval.
|
|
3
|
+
|
|
4
|
+
The App contract runner and other consumers that need Web's HTTP surface but no
|
|
5
|
+
Hermes Agent point the server at this script with
|
|
6
|
+
``HERMES_WEBUI_SIDECAR_COMMAND='["python3", "<web>/sidecar/scripts/replay_sidecar.py"]'``.
|
|
7
|
+
Every recorded method answers with its first fixture (placeholders resolved to the
|
|
8
|
+
disposable home); ``chat.start`` emits one ``approval`` frame for
|
|
9
|
+
``pattern_key`` ``talaria_contract_fixture`` so the approval SSE stream can be
|
|
10
|
+
exercised end to end, then completes with a synthetic response. Nothing here
|
|
11
|
+
touches ``~/.hermes``, a model provider, or the network.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
import sys
|
|
19
|
+
import threading
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
SIDECAR_ROOT = Path(__file__).resolve().parents[1]
|
|
23
|
+
sys.path.insert(0, str(SIDECAR_ROOT))
|
|
24
|
+
|
|
25
|
+
from talaria_sidecar.rpc import RpcServer # noqa: E402
|
|
26
|
+
|
|
27
|
+
FIXTURES = SIDECAR_ROOT.parent / "packages" / "contracts" / "fixtures" / "sidecar"
|
|
28
|
+
APPROVAL_PATTERN_KEY = "talaria_contract_fixture"
|
|
29
|
+
APPROVAL_COMMAND = "printf talaria-contract"
|
|
30
|
+
_APPROVAL_ANSWERED = threading.Event()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _substitutions() -> list[tuple[str, str]]:
|
|
34
|
+
home = os.environ.get("HERMES_HOME") or str(Path.home() / ".hermes")
|
|
35
|
+
agent = os.environ.get("TALARIA_SIDECAR_AGENT_DIR") or os.environ.get("HERMES_WEBUI_AGENT_DIR") or str(SIDECAR_ROOT)
|
|
36
|
+
return [("<profile>", home), ("<home>", home), ("<user-home>", str(Path(home).parent)), ("<agent>", agent), ("<python>", sys.executable)]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _resolve(value, subs):
|
|
40
|
+
if isinstance(value, str):
|
|
41
|
+
for token, replacement in subs:
|
|
42
|
+
value = value.replace(token, replacement)
|
|
43
|
+
return value
|
|
44
|
+
if isinstance(value, list):
|
|
45
|
+
return [_resolve(item, subs) for item in value]
|
|
46
|
+
if isinstance(value, dict):
|
|
47
|
+
return {key: _resolve(item, subs) for key, item in value.items()}
|
|
48
|
+
return value
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def _replay(entry: dict):
|
|
52
|
+
def handler(ctx, params):
|
|
53
|
+
for frame in entry.get("stream") or []:
|
|
54
|
+
ctx.emit(frame["event"], frame.get("data") or {})
|
|
55
|
+
return entry["result"]
|
|
56
|
+
return handler
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _chat_start(ctx, params: dict) -> dict:
|
|
60
|
+
_APPROVAL_ANSWERED.clear()
|
|
61
|
+
ctx.emit("approval", {"request_id": "talaria-contract-approval", "pattern_key": APPROVAL_PATTERN_KEY, "command": APPROVAL_COMMAND, "tool_name": "terminal", "cwd": params.get("workspace") or ""})
|
|
62
|
+
# Like a real turn, stay pending until the approval is answered (or the request is cancelled / times out).
|
|
63
|
+
for _ in range(200):
|
|
64
|
+
if _APPROVAL_ANSWERED.wait(0.1) or ctx.cancelled:
|
|
65
|
+
break
|
|
66
|
+
ctx.emit("token", {"text": "talaria-contract"})
|
|
67
|
+
history = [*params.get("conversation_history", []), {"role": "user", "content": params.get("user_message", "")}, {"role": "assistant", "content": "talaria-contract"}]
|
|
68
|
+
return {
|
|
69
|
+
"status": "completed", "messages": history, "final_response": "talaria-contract", "error": None, "result_status": "completed",
|
|
70
|
+
"tool_limit_reached": False, "usage": {"prompt_tokens": 0, "completion_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0, "estimated_cost_usd": None},
|
|
71
|
+
"context": {}, "model": params.get("model") or "replay", "provider": params.get("model_provider") or "replay", "compressed": False,
|
|
72
|
+
"agent_session_id": params.get("session_id", ""), "token_sent": True, "pending_steer": "", "live_tool_calls": [],
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _approval_respond(ctx, params: dict) -> dict:
|
|
77
|
+
_APPROVAL_ANSWERED.set()
|
|
78
|
+
return {"ok": True, "resolved": 1, "choice": str(params.get("choice") or "once")}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _shutdown(ctx, params: dict) -> dict:
|
|
82
|
+
ctx.server.request_shutdown(int(params.get("exit_code") or 0))
|
|
83
|
+
return {"ok": True}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def build_methods() -> dict:
|
|
87
|
+
subs = _substitutions()
|
|
88
|
+
methods = {}
|
|
89
|
+
for path in sorted(FIXTURES.glob("*.json")):
|
|
90
|
+
for method, entries in json.loads(path.read_text()).items():
|
|
91
|
+
if entries:
|
|
92
|
+
methods[method] = _replay(_resolve(entries[0], subs))
|
|
93
|
+
handshake = methods["runtime.handshake"]
|
|
94
|
+
methods["runtime.handshake"] = lambda ctx, params: {**handshake(ctx, params), "rpc_version": params.get("rpc_version", 1)}
|
|
95
|
+
methods["chat.start"] = _chat_start
|
|
96
|
+
methods["chat.interrupt"] = lambda ctx, params: {"ok": True, "reason": "replay"}
|
|
97
|
+
methods["chat.steer"] = lambda ctx, params: {"accepted": True, "fallback": None}
|
|
98
|
+
methods["chat.evict_agent"] = lambda ctx, params: {"evicted": False}
|
|
99
|
+
methods["approval.respond"] = _approval_respond
|
|
100
|
+
methods["approval.pending"] = lambda ctx, params: {"pending": []}
|
|
101
|
+
methods["approval.set_yolo"] = lambda ctx, params: {"yolo_enabled": bool(params.get("enabled")), "released": 0}
|
|
102
|
+
methods["runtime.shutdown"] = _shutdown
|
|
103
|
+
return methods
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def main() -> int:
|
|
107
|
+
out = os.fdopen(os.dup(sys.stdout.fileno()), "wb", buffering=0)
|
|
108
|
+
sys.stdout = sys.stderr
|
|
109
|
+
return RpcServer(build_methods(), stdout=out).serve_forever()
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
if __name__ == "__main__":
|
|
113
|
+
sys.exit(main())
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Run the sidecar pytest suite. pytest runs on any Python >= 3.11 (a private
|
|
3
|
+
# venv under sidecar/.venv); the sidecar itself is spawned on the pinned
|
|
4
|
+
# Agent's venv interpreter discovered by tests/conftest.py.
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
here="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
7
|
+
runner="${HERMES_WEBUI_TEST_PYTHON:-python3}"
|
|
8
|
+
venv="$here/.venv"
|
|
9
|
+
if [[ ! -x "$venv/bin/python" ]]; then
|
|
10
|
+
"$runner" -m venv "$venv"
|
|
11
|
+
"$venv/bin/python" -m pip install --quiet --disable-pip-version-check "pytest>=8,<10"
|
|
12
|
+
fi
|
|
13
|
+
state="${TMPDIR:-/tmp}/talaria-sidecar-tests.$$"
|
|
14
|
+
mkdir -p "$state"
|
|
15
|
+
trap 'rm -rf -- "$state"' EXIT
|
|
16
|
+
cd "$here"
|
|
17
|
+
# GitHub's relocated Linux Python needs LD_LIBRARY_PATH; nothing else from the caller's environment leaks in.
|
|
18
|
+
env -i PATH="$PATH" HOME="$state" TMPDIR="$state" ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \
|
|
19
|
+
HERMES_WEBUI_AGENT_DIR="${HERMES_WEBUI_AGENT_DIR:-$HOME/.hermes/hermes-agent}" \
|
|
20
|
+
HERMES_WEBUI_PYTHON="${HERMES_WEBUI_PYTHON:-}" \
|
|
21
|
+
PYTHONPATH="$here" \
|
|
22
|
+
"$venv/bin/python" -m pytest -q "$@"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""Talaria Web sidecar: the only process that imports Hermes Agent code.
|
|
2
|
+
|
|
3
|
+
Spawned by the Talaria Web server on the Agent's own venv interpreter with the
|
|
4
|
+
Agent checkout on ``PYTHONPATH``. Speaks newline-delimited JSON-RPC 2.0 over
|
|
5
|
+
stdio (docs/architecture/sidecar-rpc.md). Standard library only.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
SIDECAR_RPC_VERSION = 1
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""``python -m talaria_sidecar``: serve JSON-RPC over stdio until stdin closes."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
from .methods import build_methods
|
|
11
|
+
from .rpc import DEFAULT_MAX_CALLS, RpcServer
|
|
12
|
+
from .runtime import AgentRuntime
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _claim_stdout():
|
|
16
|
+
"""Reserve the real stdout for RPC frames; everything else goes to stderr.
|
|
17
|
+
|
|
18
|
+
Agent code prints freely (profile deletion confirmations, pip output,
|
|
19
|
+
warnings). A single stray line on stdout would corrupt the JSON-RPC
|
|
20
|
+
channel, so the transport keeps a private duplicate of fd 1 and both
|
|
21
|
+
``sys.stdout`` and fd 1 itself are redirected to stderr.
|
|
22
|
+
"""
|
|
23
|
+
rpc_fd = os.dup(sys.stdout.fileno())
|
|
24
|
+
os.dup2(sys.stderr.fileno(), sys.stdout.fileno())
|
|
25
|
+
sys.stdout = sys.stderr
|
|
26
|
+
return os.fdopen(rpc_fd, "wb", buffering=0)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def main() -> int:
|
|
30
|
+
rpc_out = _claim_stdout()
|
|
31
|
+
logging.basicConfig(stream=sys.stderr, level=os.environ.get("TALARIA_SIDECAR_LOG_LEVEL", "INFO"), format="[sidecar] %(levelname)s %(name)s: %(message)s")
|
|
32
|
+
hermes_home = Path(os.environ.get("HERMES_HOME") or Path.home() / ".hermes").expanduser()
|
|
33
|
+
# Every turn here has a human behind the Web UI: flagged actions must ask (approval cards), never auto-approve.
|
|
34
|
+
os.environ.setdefault("HERMES_EXEC_ASK", "1")
|
|
35
|
+
agent_dir = os.environ.get("TALARIA_SIDECAR_AGENT_DIR") or os.environ.get("HERMES_WEBUI_AGENT_DIR")
|
|
36
|
+
runtime = AgentRuntime(hermes_home, Path(agent_dir) if agent_dir else None)
|
|
37
|
+
if runtime.agent_dir is not None and str(runtime.agent_dir) not in sys.path:
|
|
38
|
+
# Append, never prepend: the Agent venv's site-packages must win over
|
|
39
|
+
# any same-named module in the checkout (api/config.py has the history).
|
|
40
|
+
sys.path.append(str(runtime.agent_dir))
|
|
41
|
+
server = RpcServer(build_methods(runtime), stdout=rpc_out, max_calls=int(os.environ.get("TALARIA_SIDECAR_MAX_CALLS") or DEFAULT_MAX_CALLS))
|
|
42
|
+
return server.serve_forever()
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if __name__ == "__main__":
|
|
46
|
+
sys.exit(main())
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""JSON-RPC error codes shared by every sidecar method."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
PARSE_ERROR = -32700
|
|
6
|
+
INVALID_REQUEST = -32600
|
|
7
|
+
METHOD_NOT_FOUND = -32601
|
|
8
|
+
INVALID_PARAMS = -32602
|
|
9
|
+
INTERNAL_ERROR = -32603
|
|
10
|
+
|
|
11
|
+
# Application errors. ``data.condition`` is the string the server forwards to
|
|
12
|
+
# HTTP clients as the ``condition`` field of a 503/409 envelope.
|
|
13
|
+
APPLICATION_ERROR = -32000
|
|
14
|
+
CANCELLED = -32001
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RpcError(Exception):
|
|
18
|
+
"""Raise from a method to answer with a JSON-RPC error object."""
|
|
19
|
+
|
|
20
|
+
def __init__(self, message: str, *, code: int = APPLICATION_ERROR, condition: str | None = None, data: dict | None = None):
|
|
21
|
+
super().__init__(message)
|
|
22
|
+
self.code = code
|
|
23
|
+
self.data = dict(data or {})
|
|
24
|
+
if condition:
|
|
25
|
+
self.data["condition"] = condition
|
|
26
|
+
|
|
27
|
+
def to_json(self) -> dict:
|
|
28
|
+
error = {"code": self.code, "message": str(self)}
|
|
29
|
+
if self.data:
|
|
30
|
+
error["data"] = self.data
|
|
31
|
+
return error
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class InvalidParams(RpcError):
|
|
35
|
+
def __init__(self, message: str, **data):
|
|
36
|
+
super().__init__(message, code=INVALID_PARAMS, data=data or None)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class Cancelled(RpcError):
|
|
40
|
+
def __init__(self, message: str = "cancelled"):
|
|
41
|
+
super().__init__(message, code=CANCELLED, condition="cancelled")
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Profile-home and credential scoping for Agent calls.
|
|
2
|
+
|
|
3
|
+
The Python backend pinned Hermes Agent's process-global HERMES_HOME per request
|
|
4
|
+
with a shared lock. Inside the sidecar every method receives the explicit
|
|
5
|
+
``profile_home`` the server resolved, and runs under Hermes Agent's own
|
|
6
|
+
context-local override when the installed Agent exposes it
|
|
7
|
+
(``hermes_constants.set_hermes_home_override``), falling back to a locked
|
|
8
|
+
process-wide swap of ``HERMES_HOME`` for older Agents.
|
|
9
|
+
|
|
10
|
+
Credentials are scoped the same way the Agent's multiplexing gateway does it
|
|
11
|
+
(``agent.secret_scope``): the profile's own ``.env`` (plus its external secret
|
|
12
|
+
sources) is installed as the context-local secret scope for the call. For a
|
|
13
|
+
named profile the call also runs under multiplex semantics, so a miss never
|
|
14
|
+
falls through to ``os.environ`` — the default profile's keys, which the server
|
|
15
|
+
copied into the process environment at startup, cannot be resolved by another
|
|
16
|
+
profile. If the installed Agent has no secret scope, named-profile calls fail
|
|
17
|
+
closed instead of running with the inherited environment.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
import contextlib
|
|
23
|
+
import os
|
|
24
|
+
import threading
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
from .errors import InvalidParams, RpcError
|
|
28
|
+
|
|
29
|
+
_ENV_LOCK = threading.RLock()
|
|
30
|
+
_PROCESS_HOME = Path(os.environ.get("HERMES_HOME") or Path.home() / ".hermes").expanduser()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _is_named_profile(home: Path) -> bool:
|
|
34
|
+
try:
|
|
35
|
+
return home.resolve() != _PROCESS_HOME.resolve()
|
|
36
|
+
except OSError:
|
|
37
|
+
return True
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@contextlib.contextmanager
|
|
41
|
+
def _secret_scope(home: Path):
|
|
42
|
+
"""Install ``home``'s credential scope for the call; named profiles run under multiplex semantics."""
|
|
43
|
+
named = _is_named_profile(home)
|
|
44
|
+
try:
|
|
45
|
+
from agent.secret_scope import (
|
|
46
|
+
build_profile_secret_scope,
|
|
47
|
+
reset_multiplex_context,
|
|
48
|
+
reset_secret_scope,
|
|
49
|
+
set_multiplex_context,
|
|
50
|
+
set_secret_scope,
|
|
51
|
+
)
|
|
52
|
+
except Exception: # noqa: BLE001 - older Agent without a secret scope
|
|
53
|
+
if named:
|
|
54
|
+
raise RpcError(
|
|
55
|
+
"profile credential isolation is unavailable in this Hermes Agent; named-profile calls are refused",
|
|
56
|
+
condition="agent_incompatible",
|
|
57
|
+
)
|
|
58
|
+
yield
|
|
59
|
+
return
|
|
60
|
+
scope_token = set_secret_scope(build_profile_secret_scope(home))
|
|
61
|
+
mux_token = set_multiplex_context(True) if named else None
|
|
62
|
+
try:
|
|
63
|
+
yield
|
|
64
|
+
finally:
|
|
65
|
+
if mux_token is not None:
|
|
66
|
+
reset_multiplex_context(mux_token)
|
|
67
|
+
reset_secret_scope(scope_token)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def profile_home_param(params: dict, key: str = "profile_home") -> Path:
|
|
71
|
+
raw = params.get(key)
|
|
72
|
+
if not isinstance(raw, str) or not raw.strip():
|
|
73
|
+
raise InvalidParams(f"{key} is required")
|
|
74
|
+
return Path(raw).expanduser()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@contextlib.contextmanager
|
|
78
|
+
def scoped_home(home: Path):
|
|
79
|
+
"""Run the body with Hermes Agent resolving ``get_hermes_home()`` to ``home``."""
|
|
80
|
+
home = Path(home).expanduser()
|
|
81
|
+
try:
|
|
82
|
+
from hermes_constants import reset_hermes_home_override, set_hermes_home_override
|
|
83
|
+
except Exception: # noqa: BLE001 - older Agent without context-local homes
|
|
84
|
+
set_hermes_home_override = reset_hermes_home_override = None
|
|
85
|
+
if set_hermes_home_override is not None:
|
|
86
|
+
token = set_hermes_home_override(home)
|
|
87
|
+
try:
|
|
88
|
+
with _secret_scope(home):
|
|
89
|
+
yield home
|
|
90
|
+
finally:
|
|
91
|
+
reset_hermes_home_override(token)
|
|
92
|
+
return
|
|
93
|
+
with _ENV_LOCK:
|
|
94
|
+
previous = os.environ.get("HERMES_HOME")
|
|
95
|
+
os.environ["HERMES_HOME"] = str(home)
|
|
96
|
+
try:
|
|
97
|
+
with _secret_scope(home):
|
|
98
|
+
yield home
|
|
99
|
+
finally:
|
|
100
|
+
if previous is None:
|
|
101
|
+
os.environ.pop("HERMES_HOME", None)
|
|
102
|
+
else:
|
|
103
|
+
os.environ["HERMES_HOME"] = previous
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Method registry: one module per RPC namespace (docs/architecture/sidecar-rpc.md)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Callable
|
|
6
|
+
|
|
7
|
+
from ..rpc import CallContext, Handler
|
|
8
|
+
from ..runtime import AgentRuntime
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Registry:
|
|
12
|
+
def __init__(self, runtime: AgentRuntime):
|
|
13
|
+
self.runtime = runtime
|
|
14
|
+
self.methods: dict[str, Handler] = {}
|
|
15
|
+
|
|
16
|
+
def method(self, name: str, *, requires_agent: bool = True) -> Callable[[Callable], Callable]:
|
|
17
|
+
def register(func: Callable) -> Callable:
|
|
18
|
+
def handler(ctx: CallContext, params: dict):
|
|
19
|
+
if requires_agent:
|
|
20
|
+
self.runtime.load()
|
|
21
|
+
self.runtime.ensure_current()
|
|
22
|
+
return func(ctx, params)
|
|
23
|
+
|
|
24
|
+
self.methods[name] = handler
|
|
25
|
+
return func
|
|
26
|
+
|
|
27
|
+
return register
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def build_methods(runtime: AgentRuntime) -> dict[str, Handler]:
|
|
31
|
+
registry = Registry(runtime)
|
|
32
|
+
from . import aux, chat, commands, config, cron, gateway, goals, kanban, mcp, process, profiles, providers, skills, state_db, stt, text, usage, worktree # noqa: WPS433
|
|
33
|
+
from . import runtime as runtime_methods
|
|
34
|
+
|
|
35
|
+
for module in (runtime_methods, goals, commands, kanban, state_db, profiles, skills, mcp, stt, cron, providers, aux, text, process, usage, gateway, worktree, chat, config):
|
|
36
|
+
module.register(registry)
|
|
37
|
+
return registry.methods
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"""``aux.*``: auxiliary LLM calls through ``agent.auxiliary_client``."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import threading
|
|
7
|
+
import uuid
|
|
8
|
+
|
|
9
|
+
from ..errors import InvalidParams, RpcError
|
|
10
|
+
from ..home import profile_home_param, scoped_home
|
|
11
|
+
from ..rpc import CallContext
|
|
12
|
+
|
|
13
|
+
log = logging.getLogger("talaria_sidecar.aux")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
_RUNTIME_FIELDS = ("provider", "model", "base_url", "api_key", "api_mode", "acp_command", "acp_args", "credential_pool")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def resolve_main_runtime(hint: dict | None) -> dict | None:
|
|
20
|
+
"""Expand a ``{model, provider}`` hint into the resolved main-model runtime (predecessor ``_auxiliary_main_runtime``).
|
|
21
|
+
|
|
22
|
+
A hint that already carries a credential is passed through untouched."""
|
|
23
|
+
if not isinstance(hint, dict):
|
|
24
|
+
return None
|
|
25
|
+
if hint.get("api_key") or hint.get("base_url"):
|
|
26
|
+
return hint
|
|
27
|
+
from .chat import _resolve_runtime
|
|
28
|
+
|
|
29
|
+
model = str(hint.get("model") or "").strip()
|
|
30
|
+
provider = str(hint.get("provider") or "").strip() or None
|
|
31
|
+
try:
|
|
32
|
+
runtime = _resolve_runtime(provider, model)
|
|
33
|
+
except RpcError:
|
|
34
|
+
return hint
|
|
35
|
+
out = {field: runtime.get(field) for field in _RUNTIME_FIELDS if runtime.get(field) is not None}
|
|
36
|
+
out["model"] = model or str(runtime.get("model") or "")
|
|
37
|
+
out["provider"] = provider or runtime.get("provider")
|
|
38
|
+
return out
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _main_model_completion(messages: list, runtime: dict, *, task: str) -> dict:
|
|
42
|
+
"""Predecessor fallback: run the main model through ``AIAgent`` with no tools when no auxiliary client answers."""
|
|
43
|
+
from .chat import _agent_class
|
|
44
|
+
|
|
45
|
+
AIAgent = _agent_class()
|
|
46
|
+
|
|
47
|
+
system = "\n".join(str(m.get("content") or "") for m in messages if m.get("role") == "system") or None
|
|
48
|
+
user = "\n".join(str(m.get("content") or "") for m in messages if m.get("role") == "user")
|
|
49
|
+
kwargs = dict(model=runtime.get("model"), provider=runtime.get("provider"), base_url=runtime.get("base_url"), api_key=runtime.get("api_key"),
|
|
50
|
+
platform="webui", quiet_mode=True, enabled_toolsets=[], session_id=f"{task}-{uuid.uuid4().hex[:8]}")
|
|
51
|
+
for name in ("api_mode", "acp_command", "acp_args", "credential_pool"):
|
|
52
|
+
if runtime.get(name) is not None:
|
|
53
|
+
kwargs[name] = runtime[name]
|
|
54
|
+
agent = AIAgent(**kwargs)
|
|
55
|
+
result = agent.run_conversation(user_message=user, system_message=system, conversation_history=[], task_id=kwargs["session_id"])
|
|
56
|
+
return {"model": str(runtime.get("model") or ""), "text": str((result or {}).get("final_response") or "").strip(), "usage": None}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def complete(task: str, messages: list, *, main_runtime: dict | None, max_tokens: int | None, temperature: float | None, ctx: CallContext, main_fallback: bool = False) -> dict:
|
|
60
|
+
"""One auxiliary completion; streams ``token`` frames when the client supports it.
|
|
61
|
+
|
|
62
|
+
With ``main_fallback`` the main model answers (through ``AIAgent``) when no auxiliary client is configured or the
|
|
63
|
+
auxiliary call fails, as the predecessor's git commit-message route did."""
|
|
64
|
+
try:
|
|
65
|
+
from agent.auxiliary_client import get_text_auxiliary_client
|
|
66
|
+
except Exception as exc: # noqa: BLE001
|
|
67
|
+
raise RpcError(f"auxiliary client unavailable: {exc}", condition="aux_unavailable") from exc
|
|
68
|
+
main_runtime = resolve_main_runtime(main_runtime)
|
|
69
|
+
try:
|
|
70
|
+
client, model = get_text_auxiliary_client(task, main_runtime=main_runtime)
|
|
71
|
+
except TypeError:
|
|
72
|
+
client, model = get_text_auxiliary_client(task)
|
|
73
|
+
if client is None or not model:
|
|
74
|
+
if main_fallback and main_runtime and main_runtime.get("model"):
|
|
75
|
+
return _main_model_completion(messages, main_runtime, task=task)
|
|
76
|
+
raise RpcError(f"no auxiliary model configured for task {task!r}", condition="aux_unconfigured")
|
|
77
|
+
if main_fallback and main_runtime and main_runtime.get("model"):
|
|
78
|
+
try:
|
|
79
|
+
return _stream_completion(client, model, messages, max_tokens=max_tokens, temperature=temperature, ctx=ctx)
|
|
80
|
+
except RpcError:
|
|
81
|
+
raise
|
|
82
|
+
except Exception as exc: # noqa: BLE001 - predecessor fell back to the main model
|
|
83
|
+
log.debug("auxiliary %s call failed; falling back to the main model: %s", task, exc)
|
|
84
|
+
return _main_model_completion(messages, main_runtime, task=task)
|
|
85
|
+
return _stream_completion(client, model, messages, max_tokens=max_tokens, temperature=temperature, ctx=ctx)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _stream_completion(client, model: str, messages: list, *, max_tokens: int | None, temperature: float | None, ctx: CallContext) -> dict:
|
|
89
|
+
kwargs: dict = {"model": model, "messages": messages}
|
|
90
|
+
if max_tokens:
|
|
91
|
+
kwargs["max_tokens"] = int(max_tokens)
|
|
92
|
+
if temperature is not None:
|
|
93
|
+
kwargs["temperature"] = float(temperature)
|
|
94
|
+
text_parts: list[str] = []
|
|
95
|
+
usage = None
|
|
96
|
+
try:
|
|
97
|
+
stream = client.chat.completions.create(stream=True, **kwargs)
|
|
98
|
+
for chunk in stream:
|
|
99
|
+
ctx.check_cancelled()
|
|
100
|
+
choices = getattr(chunk, "choices", None) or []
|
|
101
|
+
delta = getattr(choices[0], "delta", None) if choices else None
|
|
102
|
+
piece = getattr(delta, "content", None) if delta is not None else None
|
|
103
|
+
if piece:
|
|
104
|
+
text_parts.append(piece)
|
|
105
|
+
ctx.emit("token", {"text": piece})
|
|
106
|
+
chunk_usage = getattr(chunk, "usage", None)
|
|
107
|
+
if chunk_usage is not None:
|
|
108
|
+
usage = _usage_dict(chunk_usage)
|
|
109
|
+
except RpcError:
|
|
110
|
+
raise
|
|
111
|
+
except Exception as exc: # noqa: BLE001 - fall back to a non-streaming call
|
|
112
|
+
log.debug("streaming auxiliary call failed (%s); retrying without stream", exc)
|
|
113
|
+
response = client.chat.completions.create(**kwargs)
|
|
114
|
+
text_parts = [str(response.choices[0].message.content or "")]
|
|
115
|
+
usage = _usage_dict(getattr(response, "usage", None))
|
|
116
|
+
return {"model": str(model), "text": "".join(text_parts).strip(), "usage": usage}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def _usage_dict(usage) -> dict | None:
|
|
120
|
+
if usage is None:
|
|
121
|
+
return None
|
|
122
|
+
out = {}
|
|
123
|
+
for key in ("prompt_tokens", "completion_tokens", "total_tokens"):
|
|
124
|
+
value = getattr(usage, key, None)
|
|
125
|
+
if isinstance(value, int):
|
|
126
|
+
out[key] = value
|
|
127
|
+
return out or None
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def register(registry) -> None:
|
|
131
|
+
@registry.method("aux.complete")
|
|
132
|
+
def complete_(ctx: CallContext, params: dict) -> dict:
|
|
133
|
+
task = str(params.get("task") or "").strip()
|
|
134
|
+
messages = params.get("messages")
|
|
135
|
+
if not task:
|
|
136
|
+
raise InvalidParams("task is required")
|
|
137
|
+
if not isinstance(messages, list) or not messages:
|
|
138
|
+
raise InvalidParams("messages must be a non-empty list")
|
|
139
|
+
main_runtime = params.get("main_runtime") if isinstance(params.get("main_runtime"), dict) else None
|
|
140
|
+
with scoped_home(profile_home_param(params)):
|
|
141
|
+
return complete(task, messages, main_runtime=main_runtime, max_tokens=params.get("max_tokens"), temperature=params.get("temperature"), ctx=ctx, main_fallback=bool(params.get("main_fallback")))
|
|
142
|
+
|
|
143
|
+
@registry.method("aux.resolve")
|
|
144
|
+
def resolve(ctx: CallContext, params: dict) -> dict:
|
|
145
|
+
"""Which model would serve ``task`` (no call made)."""
|
|
146
|
+
task = str(params.get("task") or "").strip()
|
|
147
|
+
if not task:
|
|
148
|
+
raise InvalidParams("task is required")
|
|
149
|
+
main_runtime = params.get("main_runtime") if isinstance(params.get("main_runtime"), dict) else None
|
|
150
|
+
with scoped_home(profile_home_param(params)):
|
|
151
|
+
try:
|
|
152
|
+
from agent.auxiliary_client import get_text_auxiliary_client
|
|
153
|
+
|
|
154
|
+
try:
|
|
155
|
+
client, model = get_text_auxiliary_client(task, main_runtime=resolve_main_runtime(main_runtime))
|
|
156
|
+
except TypeError:
|
|
157
|
+
client, model = get_text_auxiliary_client(task)
|
|
158
|
+
except Exception as exc: # noqa: BLE001
|
|
159
|
+
return {"configured": False, "model": None, "error": f"{type(exc).__name__}: {exc}"}
|
|
160
|
+
return {"configured": bool(client is not None and model), "model": str(model) if model else None}
|