@maudecode/talaria-web 1.18.0 → 1.20.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/_release.json +8 -8
- package/dist/api/auth-raw.js +16 -16
- package/dist/api/auth-raw.js.map +1 -1
- package/dist/api/automation-raw.d.ts +2 -2
- package/dist/api/automation-raw.js +93 -38
- package/dist/api/automation-raw.js.map +1 -1
- package/dist/api/automation-router.d.ts +99 -17
- package/dist/api/automation-router.js +22 -14
- package/dist/api/automation-router.js.map +1 -1
- package/dist/api/chat-router.d.ts +1433 -37
- package/dist/api/chat-router.js +205 -90
- package/dist/api/chat-router.js.map +1 -1
- package/dist/api/git-router.d.ts +6 -2
- package/dist/api/git-router.js +30 -30
- package/dist/api/git-router.js.map +1 -1
- package/dist/api/raw-routes.d.ts +3 -3
- package/dist/api/raw-routes.js +76 -62
- package/dist/api/raw-routes.js.map +1 -1
- package/dist/api/router.d.ts +5 -5
- package/dist/api/router.js +22 -22
- package/dist/api/router.js.map +1 -1
- package/dist/api/session-visibility.d.ts +4 -4
- package/dist/api/session-visibility.js +26 -16
- package/dist/api/session-visibility.js.map +1 -1
- package/dist/api/sessions-router.d.ts +2635 -151
- package/dist/api/sessions-router.js +193 -177
- package/dist/api/sessions-router.js.map +1 -1
- package/dist/api/settings-router.d.ts +450 -11
- package/dist/api/settings-router.js +102 -49
- package/dist/api/settings-router.js.map +1 -1
- package/dist/api/sse-routes.d.ts +2 -2
- package/dist/api/sse-routes.js +102 -80
- package/dist/api/sse-routes.js.map +1 -1
- package/dist/api/tools-raw.d.ts +5 -0
- package/dist/api/tools-raw.js +58 -33
- package/dist/api/tools-raw.js.map +1 -1
- package/dist/api/tools-router.d.ts +963 -109
- package/dist/api/tools-router.js +426 -72
- package/dist/api/tools-router.js.map +1 -1
- package/dist/api/transcribe-stream.d.ts +16 -0
- package/dist/api/transcribe-stream.js +172 -0
- package/dist/api/transcribe-stream.js.map +1 -0
- package/dist/app.d.ts +4 -1
- package/dist/app.js +80 -57
- package/dist/app.js.map +1 -1
- package/dist/auth/crypto.d.ts +3 -0
- package/dist/auth/crypto.js +18 -0
- package/dist/auth/crypto.js.map +1 -1
- package/dist/auth/gate.js +14 -9
- package/dist/auth/gate.js.map +1 -1
- package/dist/auth/passkeys.d.ts +15 -14
- package/dist/auth/passkeys.js +89 -91
- package/dist/auth/passkeys.js.map +1 -1
- package/dist/auth/store.d.ts +17 -7
- package/dist/auth/store.js +93 -52
- package/dist/auth/store.js.map +1 -1
- package/dist/bin/talaria-web.js +12 -81
- package/dist/bin/talaria-web.js.map +1 -1
- package/dist/cli/ctl.js +8 -2
- package/dist/cli/ctl.js.map +1 -1
- package/dist/cli/dotenv.d.ts +5 -0
- package/dist/cli/dotenv.js +14 -2
- package/dist/cli/dotenv.js.map +1 -1
- package/dist/cli/launcher.js +5 -5
- package/dist/cli/launcher.js.map +1 -1
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.js +90 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/supervise.d.ts +24 -0
- package/dist/cli/supervise.js +147 -6
- package/dist/cli/supervise.js.map +1 -1
- package/dist/config/agent-config.d.ts +37 -11
- package/dist/config/agent-config.js +146 -64
- package/dist/config/agent-config.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.js +14 -5
- package/dist/config.js.map +1 -1
- package/dist/fs/atomic.d.ts +4 -0
- package/dist/fs/atomic.js +19 -2
- package/dist/fs/atomic.js.map +1 -1
- package/dist/fs/stat.d.ts +7 -0
- package/dist/fs/stat.js +27 -0
- package/dist/fs/stat.js.map +1 -0
- package/dist/http/context.d.ts +28 -9
- package/dist/http/context.js +77 -25
- package/dist/http/context.js.map +1 -1
- package/dist/onboarding.d.ts +2 -2
- package/dist/onboarding.js +10 -8
- package/dist/onboarding.js.map +1 -1
- package/dist/profiles/profiles.d.ts +12 -4
- package/dist/profiles/profiles.js +78 -30
- package/dist/profiles/profiles.js.map +1 -1
- package/dist/projects.d.ts +15 -6
- package/dist/projects.js +55 -47
- package/dist/projects.js.map +1 -1
- package/dist/providers/catalog.d.ts +85 -14
- package/dist/providers/catalog.js +502 -146
- package/dist/providers/catalog.js.map +1 -1
- package/dist/providers/env-file.d.ts +10 -3
- package/dist/providers/env-file.js +24 -75
- package/dist/providers/env-file.js.map +1 -1
- package/dist/providers/runtime-env.d.ts +4 -2
- package/dist/providers/runtime-env.js +9 -6
- package/dist/providers/runtime-env.js.map +1 -1
- package/dist/providers/tables.d.ts +3 -1
- package/dist/providers/tables.js +4 -2
- package/dist/providers/tables.js.map +1 -1
- package/dist/redact.js +56 -23
- package/dist/redact.js.map +1 -1
- package/dist/release.d.ts +7 -0
- package/dist/release.js +19 -3
- package/dist/release.js.map +1 -1
- package/dist/runtime.d.ts +5 -1
- package/dist/runtime.js +303 -96
- package/dist/runtime.js.map +1 -1
- package/dist/server.js +31 -18
- package/dist/server.js.map +1 -1
- package/dist/sessions/anchor.d.ts +11 -4
- package/dist/sessions/anchor.js +33 -37
- package/dist/sessions/anchor.js.map +1 -1
- package/dist/sessions/background-events.d.ts +2 -0
- package/dist/sessions/background-events.js +10 -0
- package/dist/sessions/background-events.js.map +1 -0
- package/dist/sessions/background-tasks.d.ts +49 -23
- package/dist/sessions/background-tasks.js +161 -89
- package/dist/sessions/background-tasks.js.map +1 -1
- package/dist/sessions/background-updates.d.ts +15 -8
- package/dist/sessions/background-updates.js +101 -25
- package/dist/sessions/background-updates.js.map +1 -1
- package/dist/sessions/cli-sessions.d.ts +23 -6
- package/dist/sessions/cli-sessions.js +84 -84
- package/dist/sessions/cli-sessions.js.map +1 -1
- package/dist/sessions/completions.d.ts +38 -2
- package/dist/sessions/completions.js +348 -77
- package/dist/sessions/completions.js.map +1 -1
- package/dist/sessions/compress.d.ts +8 -0
- package/dist/sessions/compress.js +2 -2
- package/dist/sessions/compress.js.map +1 -1
- package/dist/sessions/drafts.d.ts +14 -10
- package/dist/sessions/drafts.js +38 -43
- package/dist/sessions/drafts.js.map +1 -1
- package/dist/sessions/export.d.ts +2 -0
- package/dist/sessions/export.js +6 -2
- package/dist/sessions/export.js.map +1 -1
- package/dist/sessions/gateway-sessions.d.ts +86 -0
- package/dist/sessions/gateway-sessions.js +914 -0
- package/dist/sessions/gateway-sessions.js.map +1 -0
- package/dist/sessions/gateway-watcher.d.ts +10 -11
- package/dist/sessions/gateway-watcher.js +25 -21
- package/dist/sessions/gateway-watcher.js.map +1 -1
- package/dist/sessions/goals.d.ts +31 -0
- package/dist/sessions/goals.js +75 -0
- package/dist/sessions/goals.js.map +1 -0
- package/dist/sessions/journal.d.ts +5 -79
- package/dist/sessions/journal.js +15 -606
- package/dist/sessions/journal.js.map +1 -1
- package/dist/sessions/list.d.ts +34 -18
- package/dist/sessions/list.js +161 -147
- package/dist/sessions/list.js.map +1 -1
- package/dist/sessions/merge.d.ts +77 -13
- package/dist/sessions/merge.js +315 -65
- package/dist/sessions/merge.js.map +1 -1
- package/dist/sessions/notices.d.ts +22 -0
- package/dist/sessions/notices.js +72 -0
- package/dist/sessions/notices.js.map +1 -0
- package/dist/sessions/pending.d.ts +10 -4
- package/dist/sessions/pending.js +83 -7
- package/dist/sessions/pending.js.map +1 -1
- package/dist/sessions/prefix-index.d.ts +85 -0
- package/dist/sessions/prefix-index.js +243 -0
- package/dist/sessions/prefix-index.js.map +1 -0
- package/dist/sessions/recovery.d.ts +4 -7
- package/dist/sessions/recovery.js +100 -283
- package/dist/sessions/recovery.js.map +1 -1
- package/dist/sessions/relay.d.ts +20 -20
- package/dist/sessions/relay.js +205 -127
- package/dist/sessions/relay.js.map +1 -1
- package/dist/sessions/service.d.ts +251 -78
- package/dist/sessions/service.js +1510 -564
- package/dist/sessions/service.js.map +1 -1
- package/dist/sessions/session.d.ts +20 -2
- package/dist/sessions/session.js +33 -5
- package/dist/sessions/session.js.map +1 -1
- package/dist/sessions/shares.d.ts +7 -6
- package/dist/sessions/shares.js +22 -45
- package/dist/sessions/shares.js.map +1 -1
- package/dist/sessions/source-kind.js +1 -0
- package/dist/sessions/source-kind.js.map +1 -1
- package/dist/sessions/state-db-identity.d.ts +18 -0
- package/dist/sessions/state-db-identity.js +67 -0
- package/dist/sessions/state-db-identity.js.map +1 -0
- package/dist/sessions/state-db-worker.js +24 -5
- package/dist/sessions/state-db-worker.js.map +1 -1
- package/dist/sessions/state-db.d.ts +157 -21
- package/dist/sessions/state-db.js +1145 -204
- package/dist/sessions/state-db.js.map +1 -1
- package/dist/sessions/state-saved.d.ts +1 -1
- package/dist/sessions/state-saved.js +35 -11
- package/dist/sessions/state-saved.js.map +1 -1
- package/dist/sessions/storage/backend.d.ts +171 -0
- package/dist/sessions/storage/backend.js +19 -0
- package/dist/sessions/storage/backend.js.map +1 -0
- package/dist/sessions/storage/conformance.d.ts +20 -0
- package/dist/sessions/storage/conformance.js +237 -0
- package/dist/sessions/storage/conformance.js.map +1 -0
- package/dist/sessions/storage/document.d.ts +16 -0
- package/dist/sessions/storage/document.js +44 -0
- package/dist/sessions/storage/document.js.map +1 -0
- package/dist/sessions/storage/json-documents.d.ts +25 -0
- package/dist/sessions/storage/json-documents.js +277 -0
- package/dist/sessions/storage/json-documents.js.map +1 -0
- package/dist/sessions/storage/json-files.d.ts +23 -0
- package/dist/sessions/storage/json-files.js +244 -0
- package/dist/sessions/storage/json-files.js.map +1 -0
- package/dist/sessions/storage/json-installation.d.ts +3 -0
- package/dist/sessions/storage/json-installation.js +31 -0
- package/dist/sessions/storage/json-installation.js.map +1 -0
- package/dist/sessions/storage/json-journal.d.ts +113 -0
- package/dist/sessions/storage/json-journal.js +756 -0
- package/dist/sessions/storage/json-journal.js.map +1 -0
- package/dist/sessions/storage/json-recovery.d.ts +4 -0
- package/dist/sessions/storage/json-recovery.js +195 -0
- package/dist/sessions/storage/json-recovery.js.map +1 -0
- package/dist/sessions/storage/json.d.ts +82 -0
- package/dist/sessions/storage/json.js +350 -0
- package/dist/sessions/storage/json.js.map +1 -0
- package/dist/sessions/storage/row.d.ts +6 -0
- package/dist/sessions/storage/row.js +49 -0
- package/dist/sessions/storage/row.js.map +1 -0
- package/dist/sessions/storage/search-text.d.ts +4 -0
- package/dist/sessions/storage/search-text.js +16 -0
- package/dist/sessions/storage/search-text.js.map +1 -0
- package/dist/sessions/store.d.ts +67 -73
- package/dist/sessions/store.js +341 -607
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/streams.d.ts +12 -7
- package/dist/sessions/streams.js +58 -15
- package/dist/sessions/streams.js.map +1 -1
- package/dist/sessions/titles.js +1 -1
- package/dist/sessions/titles.js.map +1 -1
- package/dist/sessions/todo.d.ts +5 -0
- package/dist/sessions/todo.js +28 -21
- package/dist/sessions/todo.js.map +1 -1
- package/dist/sessions/tool-display.d.ts +8 -5
- package/dist/sessions/tool-display.js +28 -16
- package/dist/sessions/tool-display.js.map +1 -1
- package/dist/sessions/turn-context.d.ts +10 -1
- package/dist/sessions/turn-context.js +13 -6
- package/dist/sessions/turn-context.js.map +1 -1
- package/dist/sessions/turn.d.ts +110 -22
- package/dist/sessions/turn.js +918 -380
- package/dist/sessions/turn.js.map +1 -1
- package/dist/sessions/wakeup-pause.d.ts +8 -13
- package/dist/sessions/wakeup-pause.js +31 -49
- package/dist/sessions/wakeup-pause.js.map +1 -1
- package/dist/sessions/window.js +13 -12
- package/dist/sessions/window.js.map +1 -1
- package/dist/settings.d.ts +19 -7
- package/dist/settings.js +179 -183
- package/dist/settings.js.map +1 -1
- package/dist/sidecar/client.d.ts +41 -4
- package/dist/sidecar/client.js +192 -42
- package/dist/sidecar/client.js.map +1 -1
- package/dist/sidecar/discover.d.ts +2 -1
- package/dist/sidecar/discover.js +93 -10
- package/dist/sidecar/discover.js.map +1 -1
- package/dist/sidecar/env.d.ts +4 -0
- package/dist/sidecar/env.js +3 -0
- package/dist/sidecar/env.js.map +1 -0
- package/dist/sidecar/fake.d.ts +6 -2
- package/dist/sidecar/fake.js +34 -4
- package/dist/sidecar/fake.js.map +1 -1
- package/dist/spa.d.ts +9 -4
- package/dist/spa.js +36 -12
- package/dist/spa.js.map +1 -1
- package/dist/startup-timing.d.ts +66 -0
- package/dist/startup-timing.js +129 -0
- package/dist/startup-timing.js.map +1 -0
- package/dist/test/env-file.d.ts +5 -0
- package/dist/test/env-file.js +88 -0
- package/dist/test/env-file.js.map +1 -0
- package/dist/test/fs-handles.d.ts +11 -0
- package/dist/test/fs-handles.js +31 -0
- package/dist/test/fs-handles.js.map +1 -0
- package/dist/test/harness.d.ts +1 -0
- package/dist/test/harness.js +1 -1
- package/dist/test/harness.js.map +1 -1
- package/dist/test/passkeys.d.ts +22 -0
- package/dist/test/passkeys.js +62 -0
- package/dist/test/passkeys.js.map +1 -0
- package/dist/test/storage.d.ts +15 -0
- package/dist/test/storage.js +26 -0
- package/dist/test/storage.js.map +1 -0
- package/dist/tools/commands.d.ts +6 -1
- package/dist/tools/commands.js +8 -2
- package/dist/tools/commands.js.map +1 -1
- package/dist/tools/connectors.d.ts +33 -0
- package/dist/tools/connectors.js +121 -0
- package/dist/tools/connectors.js.map +1 -0
- package/dist/tools/crons.d.ts +46 -5
- package/dist/tools/crons.js +100 -26
- package/dist/tools/crons.js.map +1 -1
- package/dist/tools/dashboard-plugins.d.ts +34 -5
- package/dist/tools/dashboard-plugins.js +146 -14
- package/dist/tools/dashboard-plugins.js.map +1 -1
- package/dist/tools/extensions.d.ts +5 -4
- package/dist/tools/extensions.js +213 -207
- package/dist/tools/extensions.js.map +1 -1
- package/dist/tools/gateway-restart.d.ts +82 -0
- package/dist/tools/gateway-restart.js +222 -0
- package/dist/tools/gateway-restart.js.map +1 -0
- package/dist/tools/health.d.ts +28 -4
- package/dist/tools/health.js +171 -50
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/hygiene.d.ts +4 -3
- package/dist/tools/hygiene.js +23 -9
- package/dist/tools/hygiene.js.map +1 -1
- package/dist/tools/insights.d.ts +1 -1
- package/dist/tools/insights.js +2 -2
- package/dist/tools/insights.js.map +1 -1
- package/dist/tools/kanban.d.ts +4 -2
- package/dist/tools/kanban.js +28 -19
- package/dist/tools/kanban.js.map +1 -1
- package/dist/tools/mcp-health.js +74 -24
- package/dist/tools/mcp-health.js.map +1 -1
- package/dist/tools/mcp.js +19 -1
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/memory-masks.d.ts +5 -0
- package/dist/tools/memory-masks.js +256 -0
- package/dist/tools/memory-masks.js.map +1 -0
- package/dist/tools/memory.d.ts +29 -3
- package/dist/tools/memory.js +69 -27
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/plugin-oauth.d.ts +14 -0
- package/dist/tools/plugin-oauth.js +53 -0
- package/dist/tools/plugin-oauth.js.map +1 -0
- package/dist/tools/plugin-settings.d.ts +15 -0
- package/dist/tools/plugin-settings.js +90 -0
- package/dist/tools/plugin-settings.js.map +1 -0
- package/dist/tools/prune-advice.d.ts +50 -0
- package/dist/tools/prune-advice.js +114 -0
- package/dist/tools/prune-advice.js.map +1 -0
- package/dist/tools/skills.d.ts +13 -5
- package/dist/tools/skills.js +53 -19
- package/dist/tools/skills.js.map +1 -1
- package/dist/tools/update-notifications.d.ts +102 -17
- package/dist/tools/update-notifications.js +400 -82
- package/dist/tools/update-notifications.js.map +1 -1
- package/dist/tools/update-rollback.d.ts +11 -0
- package/dist/tools/update-rollback.js +28 -0
- package/dist/tools/update-rollback.js.map +1 -0
- package/dist/tools/updates.d.ts +100 -33
- package/dist/tools/updates.js +1085 -345
- package/dist/tools/updates.js.map +1 -1
- package/dist/util.d.ts +2 -0
- package/dist/util.js +5 -0
- package/dist/util.js.map +1 -1
- package/dist/workspace/git.d.ts +16 -1
- package/dist/workspace/git.js +291 -11
- package/dist/workspace/git.js.map +1 -1
- package/dist/workspace/media.d.ts +12 -9
- package/dist/workspace/media.js +98 -38
- package/dist/workspace/media.js.map +1 -1
- package/dist/workspace/preview.js +4 -14
- package/dist/workspace/preview.js.map +1 -1
- package/dist/workspace/rollback.d.ts +8 -4
- package/dist/workspace/rollback.js +22 -12
- package/dist/workspace/rollback.js.map +1 -1
- package/dist/workspace/workspaces.d.ts +15 -19
- package/dist/workspace/workspaces.js +55 -127
- package/dist/workspace/workspaces.js.map +1 -1
- package/dist/workspace/worktrees.js +170 -32
- package/dist/workspace/worktrees.js.map +1 -1
- package/package.json +6 -4
- package/sidecar/agent_dependency.json +4 -4
- package/sidecar/agent_support.json +29 -0
- package/sidecar/scripts/record-fixtures.py +12 -3
- package/sidecar/scripts/replay_sidecar.py +8 -0
- package/sidecar/scripts/suite_runner.py +458 -0
- package/sidecar/scripts/test.sh +11 -5
- package/sidecar/talaria_sidecar/__init__.py +6 -1
- package/sidecar/talaria_sidecar/__main__.py +13 -4
- package/sidecar/talaria_sidecar/agent_mutation.py +1111 -0
- package/sidecar/talaria_sidecar/agent_services.py +1116 -0
- package/sidecar/talaria_sidecar/context_detail.py +59 -0
- package/sidecar/talaria_sidecar/dependency_sync.py +85 -0
- package/sidecar/talaria_sidecar/home.py +133 -14
- package/sidecar/talaria_sidecar/methods/__init__.py +2 -2
- package/sidecar/talaria_sidecar/methods/aux.py +211 -41
- package/sidecar/talaria_sidecar/methods/chat.py +1378 -200
- package/sidecar/talaria_sidecar/methods/checkpoints.py +29 -4
- package/sidecar/talaria_sidecar/methods/commands.py +483 -13
- package/sidecar/talaria_sidecar/methods/config.py +195 -6
- package/sidecar/talaria_sidecar/methods/connectors.py +375 -0
- package/sidecar/talaria_sidecar/methods/cron.py +374 -36
- package/sidecar/talaria_sidecar/methods/cron_execution.py +284 -0
- package/sidecar/talaria_sidecar/methods/dashboard_plugins.py +301 -0
- package/sidecar/talaria_sidecar/methods/gateway.py +215 -55
- package/sidecar/talaria_sidecar/methods/gateway_sessions.py +418 -0
- package/sidecar/talaria_sidecar/methods/goals.py +81 -41
- package/sidecar/talaria_sidecar/methods/kanban.py +82 -30
- package/sidecar/talaria_sidecar/methods/memory.py +84 -0
- package/sidecar/talaria_sidecar/methods/oauth.py +144 -13
- package/sidecar/talaria_sidecar/methods/plugin_catalog.py +198 -0
- package/sidecar/talaria_sidecar/methods/plugin_oauth.py +234 -0
- package/sidecar/talaria_sidecar/methods/process.py +229 -16
- package/sidecar/talaria_sidecar/methods/profiles.py +48 -9
- package/sidecar/talaria_sidecar/methods/providers.py +196 -26
- package/sidecar/talaria_sidecar/methods/runtime.py +71 -1
- package/sidecar/talaria_sidecar/methods/skills.py +83 -5
- package/sidecar/talaria_sidecar/methods/state_db.py +405 -112
- package/sidecar/talaria_sidecar/methods/stt.py +159 -78
- package/sidecar/talaria_sidecar/methods/text.py +14 -1
- package/sidecar/talaria_sidecar/methods/toolsets.py +51 -0
- package/sidecar/talaria_sidecar/methods/usage.py +113 -14
- package/sidecar/talaria_sidecar/methods/worktree.py +145 -19
- package/sidecar/talaria_sidecar/methods/write_approval.py +181 -0
- package/sidecar/talaria_sidecar/rpc.py +70 -7
- package/sidecar/talaria_sidecar/runtime.py +122 -14
- package/sidecar/talaria_sidecar/speed.py +47 -0
- package/sidecar/talaria_sidecar/startup_timing.py +119 -0
- package/static/dist/FILES.txt +242 -215
- package/static/dist/THIRD_PARTY_LICENSES.md +6 -22
- package/static/dist/assets/AppShell-3isgvoro.js +8 -0
- package/static/dist/assets/Button-f4n6dapf.js +1 -0
- package/static/dist/assets/ChatPage-k7b6xfax.js +4 -0
- package/static/dist/assets/ConnectTargets-juqvt5lm.js +1 -0
- package/static/dist/assets/Dialog-hta5utr3.js +1 -0
- package/static/dist/assets/ExtensionRoute-zrhjn0wm.js +1 -0
- package/static/dist/assets/Field-b6ez48oz.js +1 -0
- package/static/dist/assets/HubRoute-iwvso2tz.js +2 -0
- package/static/dist/assets/LinkCheckContext-ix6zqqkk.js +1 -0
- package/static/dist/assets/Markdown-jdeth7zq.js +2 -0
- package/static/dist/assets/MarkdownRenderer-fbswsgld.js +302 -0
- package/static/dist/assets/MarkdownRenderer-i9o6nr38.css +1 -0
- package/static/dist/assets/OAuthSignIn-bpd8hom3.js +1 -0
- package/static/dist/assets/ResourceSwitch-odi6dy2o.js +1 -0
- package/static/dist/assets/RightPanel-eu6enlo6.js +1 -0
- package/static/dist/assets/Select-kr07928w.js +1 -0
- package/static/dist/assets/SessionListPanel-etb2i54l.js +1 -0
- package/static/dist/assets/SettingsLayout-eu3xxp23.js +1 -0
- package/static/dist/assets/States-icab19yg.js +1 -0
- package/static/dist/assets/TerminalPanel-hngmsr8b.js +16 -0
- package/static/dist/assets/Toaster-nb2uzjw1.js +1 -0
- package/static/dist/assets/_app-ga1moszl.js +1 -0
- package/static/dist/assets/_app.ext._extensionId-na62087t.js +1 -0
- package/static/dist/assets/_app.index-jypgdqoi.js +1 -0
- package/static/dist/assets/_app.insights-kabejdtm.js +1 -0
- package/static/dist/assets/_app.kanban-m19kfcmx.js +1 -0
- package/static/dist/assets/_app.logs-iw4m96sz.js +1 -0
- package/static/dist/assets/_app.memory-jq5frwcg.js +1 -0
- package/static/dist/assets/_app.profiles-kwa3m7rp.js +1 -0
- package/static/dist/assets/_app.session._sessionId-o5lyeipj.js +1 -0
- package/static/dist/assets/_app.settings-ckl8hdll.js +1 -0
- package/static/dist/assets/_app.settings._section-dtdjk98a.js +3 -0
- package/static/dist/assets/_app.skills-n016rihd.js +1 -0
- package/static/dist/assets/_app.tasks-n8zuqsqe.js +1 -0
- package/static/dist/assets/_app.todos-btew5v2s.js +1 -0
- package/static/dist/assets/_app.workspaces-lnfk95ch.js +1 -0
- package/static/dist/assets/abnfDiagram-VCTEODGH-dttheegb.js +1 -0
- package/static/dist/assets/{angular-html-nu6l31w3.js → angular-html-l28bd5fo.js} +1 -1
- package/static/dist/assets/{angular-ts-fbx4f8mm.js → angular-ts-ffzx1vj0.js} +1 -1
- package/static/dist/assets/{apl-bx2xr7dh.js → apl-b7h7mmy4.js} +1 -1
- package/static/dist/assets/{arc-7popfhbk.js → arc-fk1b21lm.js} +1 -1
- package/static/dist/assets/architecture-7GRP2DOG-ic435919.js +1 -0
- package/static/dist/assets/architectureDiagram-5GKGNRK7-8r3glgiq.js +36 -0
- package/static/dist/assets/archive-il7c6053.js +1 -0
- package/static/dist/assets/{astro-g77i97cb.js → astro-k117fy0t.js} +1 -1
- package/static/dist/assets/back-gu3nu279.js +1 -0
- package/static/dist/assets/{blade-boo0u92y.js → blade-npefsmn8.js} +1 -1
- package/static/dist/assets/{blockDiagram-I7D4REHJ-jzthp1wa.js → blockDiagram-I7D4REHJ-jenyos6c.js} +4 -4
- package/static/dist/assets/{c-cat0w3sc.js → c-2umg6kbn.js} +1 -1
- package/static/dist/assets/{c4Diagram-7LVT6UL2-mwr67mt8.js → c4Diagram-7LVT6UL2-nzlx7yc4.js} +1 -1
- package/static/dist/assets/cancel-bsnfo36u.js +1 -0
- package/static/dist/assets/channel-dsbtk01y.js +1 -0
- package/static/dist/assets/{chunk-4HAMMTFA-gpq1y228.js → chunk-4HAMMTFA-g0cru63b.js} +20 -20
- package/static/dist/assets/{chunk-75Z2AOVW-ktje58c4.js → chunk-75Z2AOVW-7rkswkjw.js} +1 -1
- package/static/dist/assets/chunk-DU6HZSFF-fn73jzdo.js +128 -0
- package/static/dist/assets/{chunk-F27PBJKO-cmev85ti.js → chunk-F27PBJKO-oey8e72m.js} +1 -1
- package/static/dist/assets/{chunk-FOHPRMQF-opuflp73.js → chunk-FOHPRMQF-ipewusgj.js} +8 -8
- package/static/dist/assets/{chunk-GMAD6QVW-htjgt22y.js → chunk-GMAD6QVW-l2a32wiy.js} +6 -6
- package/static/dist/assets/{chunk-GVQU2GXP-qndvoxl7.js → chunk-GVQU2GXP-o9dwzh8h.js} +1 -1
- package/static/dist/assets/{chunk-IMKFNOWR-e5bkd5q6.js → chunk-IMKFNOWR-eblwj20b.js} +5 -5
- package/static/dist/assets/{chunk-L3NEJ4N5-mj1155r6.js → chunk-L3NEJ4N5-o2mufspb.js} +1 -1
- package/static/dist/assets/chunk-OSK3NFVY-ijp9pw29.js +10 -0
- package/static/dist/assets/{chunk-P2QGCYS3-f7t54xfm.js → chunk-P2QGCYS3-hs9hqwl4.js} +1 -1
- package/static/dist/assets/{chunk-POPQ4Y6H-i927v9oa.js → chunk-POPQ4Y6H-bp9rsqez.js} +1 -1
- package/static/dist/assets/{chunk-PWAF6VOD-m84lmnyt.js → chunk-PWAF6VOD-brkprov6.js} +1 -1
- package/static/dist/assets/{chunk-SHT3W25Y-mi0tlcu9.js → chunk-SHT3W25Y-gmpv0pxz.js} +13 -13
- package/static/dist/assets/{chunk-SVP7TREG-dnau702j.js → chunk-SVP7TREG-oldm08fu.js} +4 -4
- package/static/dist/assets/{chunk-TICWLB2K-edem1gkg.js → chunk-TICWLB2K-ooqilfv7.js} +6 -6
- package/static/dist/assets/{chunk-XXDRQBXY-n40pf9vy.js → chunk-XXDRQBXY-jkmnqu65.js} +1 -1
- package/static/dist/assets/classDiagram-ZZMXUADV-fvgcv24g.js +1 -0
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-fvgcv24g.js +1 -0
- package/static/dist/assets/{cobol-go622aep.js → cobol-ssf9hkh7.js} +1 -1
- package/static/dist/assets/{coffee-jwo1xjhq.js → coffee-lsi9fwae.js} +1 -1
- package/static/dist/assets/copied-bz3gkazh.js +1 -0
- package/static/dist/assets/copy-jo006coq.js +1 -0
- package/static/dist/assets/cose-bilkent-JH36ORCC-layy2r27.js +1 -0
- package/static/dist/assets/{cpp-nre7j0kq.js → cpp-lfrh4y55.js} +1 -1
- package/static/dist/assets/{crystal-lviso2je.js → crystal-efh4pte7.js} +1 -1
- package/static/dist/assets/{css-ywz9j4hb.js → css-i82qdo89.js} +1 -1
- package/static/dist/assets/cynefin-OW5HDTMX-d47op7qs.js +1 -0
- package/static/dist/assets/cynefinDiagram-5FMLGOSQ-doa7594y.js +62 -0
- package/static/dist/assets/cytoscape.esm-fjn2algp.js +321 -0
- package/static/dist/assets/dagre-GXQ25YYZ-os768dp4.js +4 -0
- package/static/dist/assets/dagre-o5jmjz46.js +1 -0
- package/static/dist/assets/{diagram-S7CK7UJ4-l8abxaes.js → diagram-S7CK7UJ4-fyi81nxd.js} +4 -4
- package/static/dist/assets/diagram-UQ7AKVKN-j3exggaq.js +41 -0
- package/static/dist/assets/{diagram-VSXAHHWV-fnky6lvc.js → diagram-VSXAHHWV-omo1en2l.js} +1 -1
- package/static/dist/assets/diagram-VX7I27RA-oro2cyu0.js +24 -0
- package/static/dist/assets/diagram-Z3DM3KII-byt9vdb7.js +24 -0
- package/static/dist/assets/dist-crc46di9.js +7 -0
- package/static/dist/assets/dist-etpoyscq.js +44 -0
- package/static/dist/assets/{dist-c4c2m3kv.js → dist-nb670eu6.js} +1 -1
- package/static/dist/assets/ebnfDiagram-PWID7BFC-ee3haugh.js +1 -0
- package/static/dist/assets/{edge-dvv35byi.js → edge-lrob635n.js} +1 -1
- package/static/dist/assets/{elixir-i2f1ki1g.js → elixir-kdpxeq93.js} +1 -1
- package/static/dist/assets/{elm-cpepyjm4.js → elm-c8irj9uh.js} +1 -1
- package/static/dist/assets/erDiagram-RLTQ6QDP-d1e93yff.js +99 -0
- package/static/dist/assets/{erb-idlyfheg.js → erb-flwsv146.js} +1 -1
- package/static/dist/assets/eventmodeling-NTZA5JFV-i1ihb40c.js +1 -0
- package/static/dist/assets/flowDiagram-HODETNUW-jahfpiod.js +1 -0
- package/static/dist/assets/folder-plus-ivoglq98.js +1 -0
- package/static/dist/assets/{ganttDiagram-EL5Y4UJY-ngbsyp37.js → ganttDiagram-EL5Y4UJY-m7g0jud4.js} +1 -1
- package/static/dist/assets/{git-rebase-d9lpfpbn.js → git-rebase-bli19aoq.js} +1 -1
- package/static/dist/assets/gitGraph-4MIJSDKK-hzdj07yy.js +1 -0
- package/static/dist/assets/{gitGraphDiagram-WWUBYQGX-eravdti4.js → gitGraphDiagram-WWUBYQGX-dm9agbna.js} +1 -1
- package/static/dist/assets/{glimmer-js-39i0urfb.js → glimmer-js-d4icg38p.js} +1 -1
- package/static/dist/assets/{glimmer-ts-gdtd6n73.js → glimmer-ts-bk75772u.js} +1 -1
- package/static/dist/assets/{glsl-o1djm5pp.js → glsl-lqormp2b.js} +1 -1
- package/static/dist/assets/{graphql-kj6rz55t.js → graphql-hw6s5qzd.js} +1 -1
- package/static/dist/assets/{hack-pe1qqr2i.js → hack-ozrv6l4d.js} +1 -1
- package/static/dist/assets/{haml-cknnbcqs.js → haml-gytfosdt.js} +1 -1
- package/static/dist/assets/{handlebars-hwq64orh.js → handlebars-b6g7jffd.js} +1 -1
- package/static/dist/assets/highlighted-body-KPVGNVTW-mmgz2czu.js +1 -0
- package/static/dist/assets/host-fr6lni1p.js +1 -0
- package/static/dist/assets/{html-derivative-h2i2pyjc.js → html-derivative-f1tqcroo.js} +1 -1
- package/static/dist/assets/{html-ha05xtvt.js → html-on6oj6yj.js} +1 -1
- package/static/dist/assets/{http-cf94zu27.js → http-odhufsl7.js} +1 -1
- package/static/dist/assets/{hurl-lslax568.js → hurl-mu680336.js} +1 -1
- package/static/dist/assets/index-73649w7o.js +10 -0
- package/static/dist/assets/index-lhf1fsdf.css +2 -0
- package/static/dist/assets/info-A6RAGUB7-lll1dqmm.js +1 -0
- package/static/dist/assets/infoDiagram-27XIBGKW-k7esc639.js +2 -0
- package/static/dist/assets/{ishikawaDiagram-5VMMS53U-i6ypq351.js → ishikawaDiagram-5VMMS53U-lgr6k9wo.js} +6 -6
- package/static/dist/assets/{java-ndjf2o89.js → java-nxbe8uju.js} +1 -1
- package/static/dist/assets/{javascript-coftlwy3.js → javascript-lz3kxcyz.js} +1 -1
- package/static/dist/assets/{jinja-etei9wy7.js → jinja-l5pk84gt.js} +1 -1
- package/static/dist/assets/{jison-hyekgft1.js → jison-jdutdwyy.js} +1 -1
- package/static/dist/assets/{journeyDiagram-3NMN7TZE-lduf1z95.js → journeyDiagram-3NMN7TZE-ndmbxuqk.js} +1 -1
- package/static/dist/assets/{json-lok0yaho.js → json-dnge4ssf.js} +1 -1
- package/static/dist/assets/{jsx-b64w0nbx.js → jsx-c3lwhkep.js} +1 -1
- package/static/dist/assets/{jsx-runtime-eu92a5pu.js → jsx-runtime-o40ukmjl.js} +1 -1
- package/static/dist/assets/{julia-jxxzz2yn.js → julia-hwd4rrcb.js} +1 -1
- package/static/dist/assets/{just-mc29iw9t.js → just-nka3oxdx.js} +1 -1
- package/static/dist/assets/{kanban-definition-UXKFOSKX-e18bu4pg.js → kanban-definition-UXKFOSKX-mjxym0jp.js} +28 -28
- package/static/dist/assets/katex-cbdd1ohw.css +1 -0
- package/static/dist/assets/katex-pbij2oo6.js +257 -0
- package/static/dist/assets/{latex-pafa03ft.js → latex-iqmr7e40.js} +1 -1
- package/static/dist/assets/lazyRouteComponent-cwb6l7xh.js +1 -0
- package/static/dist/assets/{line-meizqsvn.js → line-mtr5k6il.js} +1 -1
- package/static/dist/assets/linear-jlwrvvy6.js +1 -0
- package/static/dist/assets/link-iadw4ghw.js +2 -0
- package/static/dist/assets/{liquid-hz5c2pov.js → liquid-okmk9tbp.js} +1 -1
- package/static/dist/assets/locale-cs-n41hptse.js +5 -0
- package/static/dist/assets/locale-de-k7ht47ew.js +5 -0
- package/static/dist/assets/locale-es-ih078lco.js +5 -0
- package/static/dist/assets/locale-fr-ojabnf41.js +5 -0
- package/static/dist/assets/locale-it-kb96jufy.js +5 -0
- package/static/dist/assets/locale-ja-jpsp3xs1.js +7 -0
- package/static/dist/assets/locale-ko-cpzuy0n7.js +5 -0
- package/static/dist/assets/locale-pl-dbap4leu.js +5 -0
- package/static/dist/assets/locale-pt-nci7w72x.js +5 -0
- package/static/dist/assets/locale-ru-soghe4cs.js +7 -0
- package/static/dist/assets/locale-tr-ks00mu68.js +5 -0
- package/static/dist/assets/locale-vi-ij7twfm6.js +5 -0
- package/static/dist/assets/locale-zh-Hant-feakwr7a.js +5 -0
- package/static/dist/assets/locale-zh-ren0vjyv.js +7 -0
- package/static/dist/assets/login-lkhtzfcl.js +1 -0
- package/static/dist/assets/{lua-leyf8mlb.js → lua-krx4xj5h.js} +1 -1
- package/static/dist/assets/{marko-cn1fzpdv.js → marko-gbvpfehz.js} +1 -1
- package/static/dist/assets/{mdc-huhy88df.js → mdc-c21zlyi5.js} +1 -1
- package/static/dist/assets/mermaid-HWGCJPDP-jx0q5dm2.js +1 -0
- package/static/dist/assets/mermaid-parser.core-k91vdnvi.js +7 -0
- package/static/dist/assets/micromark-factory-space-fnmnpi6s.js +1 -0
- package/static/dist/assets/{mindmap-definition-YA3MSWOX-27b26eok.js → mindmap-definition-YA3MSWOX-ehztfea4.js} +28 -28
- package/static/dist/assets/{nginx-e7lvhsmn.js → nginx-f3d68ed4.js} +1 -1
- package/static/dist/assets/{nim-dun5d8mk.js → nim-dw0jcy70.js} +1 -1
- package/static/dist/assets/onboarding-f67z0a2r.js +1 -0
- package/static/dist/assets/packet-AYTQ26CC-ok2xrblz.js +1 -0
- package/static/dist/assets/pcmTap.worklet-74EKjWAZ.js +1 -0
- package/static/dist/assets/pegDiagram-XKGWAZYB-ec3rpj0m.js +1 -0
- package/static/dist/assets/{perl-bj3oqtet.js → perl-3c0r45c8.js} +1 -1
- package/static/dist/assets/{php-buzp12r0.js → php-rznhidvp.js} +1 -1
- package/static/dist/assets/pie-WAS4IAKB-iwkir23u.js +1 -0
- package/static/dist/assets/pieDiagram-E7YTZNPT-fcpqpekh.js +39 -0
- package/static/dist/assets/{pug-mjad7he9.js → pug-f2le4f3y.js} +1 -1
- package/static/dist/assets/{qml-d1gdp10s.js → qml-e2wbq9cr.js} +1 -1
- package/static/dist/assets/{quadrantDiagram-AXDQQJYC-hhue7d8o.js → quadrantDiagram-AXDQQJYC-lqsync43.js} +1 -1
- package/static/dist/assets/queryKeys-ed4n2egc.js +9 -0
- package/static/dist/assets/{r-o3r9c7ao.js → r-epfzuw6q.js} +1 -1
- package/static/dist/assets/radar-RG4KPBEZ-hje4jbk6.js +1 -0
- package/static/dist/assets/railroad-74A4TZTK-gll9n6qi.js +1 -0
- package/static/dist/assets/railroad-abnf-HS5TGJTU-o6h6lpn4.js +1 -0
- package/static/dist/assets/railroad-ebnf-LZEXJU2U-juaefj6o.js +1 -0
- package/static/dist/assets/railroad-peg-WCYAUIDC-cgfhvpah.js +1 -0
- package/static/dist/assets/railroadDiagram-O6MQD6OU-lp3w7awf.js +1 -0
- package/static/dist/assets/{razor-ilc585yr.js → razor-pea1u1d0.js} +1 -1
- package/static/dist/assets/refresh-cw-iccm7a4e.js +1 -0
- package/static/dist/assets/refresh-i9ya9dvl.js +1 -0
- package/static/dist/assets/{regexp-mpjtcvwm.js → regexp-hzte0a5x.js} +1 -1
- package/static/dist/assets/registry-g7w3353u.js +1 -0
- package/static/dist/assets/requirementDiagram-BXWQKSXE-ha8eibcf.js +84 -0
- package/static/dist/assets/rolldown-runtime-bnnw9q4a.js +1 -0
- package/static/dist/assets/{rst-jrkwjdyi.js → rst-m6tugj5o.js} +1 -1
- package/static/dist/assets/{ruby-n4tjcbpz.js → ruby-l19vq3w1.js} +1 -1
- package/static/dist/assets/runtime-nlxpnegr.js +1 -0
- package/static/dist/assets/{sankeyDiagram-P5KCCOFB-fqb8xcjf.js → sankeyDiagram-P5KCCOFB-oxf31pr9.js} +1 -1
- package/static/dist/assets/{sas-hjo6y93k.js → sas-ktdxo397.js} +1 -1
- package/static/dist/assets/{scss-ncidjv48.js → scss-kn3oxfwf.js} +1 -1
- package/static/dist/assets/{sequenceDiagram-WJ2MYXX4-dlcz6qjz.js → sequenceDiagram-WJ2MYXX4-jiq8lhyo.js} +11 -11
- package/static/dist/assets/settings_section_extensions_title-fadc7o65.js +1 -0
- package/static/dist/assets/share._token-o76ki0ly.js +2 -0
- package/static/dist/assets/{shellscript-m8whjpqd.js → shellscript-l100jtrg.js} +1 -1
- package/static/dist/assets/{shellsession-i5bj6syz.js → shellsession-m5qukwow.js} +1 -1
- package/static/dist/assets/sizeCapture-INFHLROL-dk1io13w.js +1 -0
- package/static/dist/assets/sliders-horizontal-ddcs88av.js +1 -0
- package/static/dist/assets/{soy-hhh36ysq.js → soy-mexlscur.js} +1 -1
- package/static/dist/assets/{sql-j21bzcl6.js → sql-o0ho5suh.js} +1 -1
- package/static/dist/assets/src-h89s0hs4.js +1 -0
- package/static/dist/assets/{stata-bbu2onh1.js → stata-be9ck1q3.js} +1 -1
- package/static/dist/assets/stateDiagram-D77RDMKH-f3fslnon.js +1 -0
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-hlt6yphw.js +1 -0
- package/static/dist/assets/{surrealql-l5vczuco.js → surrealql-gk1xkkyy.js} +1 -1
- package/static/dist/assets/{svelte-idn422g6.js → svelte-k6ecjilf.js} +1 -1
- package/static/dist/assets/swimlanes-42K2YHIH-k1hmk7jf.js +1 -0
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-hd5t9tnt.js +8 -0
- package/static/dist/assets/{templ-e22qou3c.js → templ-gf3bftk6.js} +1 -1
- package/static/dist/assets/{tex-deqpc5ee.js → tex-d21fqv1z.js} +1 -1
- package/static/dist/assets/{timeline-definition-24CTP7MA-b1vl2zil.js → timeline-definition-24CTP7MA-n3ncfy9r.js} +8 -8
- package/static/dist/assets/toast-liparz2j.js +56 -0
- package/static/dist/assets/treeView-Q6P3EWNA-l3y2pejt.js +1 -0
- package/static/dist/assets/treemap-WGGIJYW6-jown9axh.js +1 -0
- package/static/dist/assets/{ts-tags-ctnibc27.js → ts-tags-n0g61gr6.js} +1 -1
- package/static/dist/assets/{tsx-i163n32g.js → tsx-cvv7wv6q.js} +1 -1
- package/static/dist/assets/{twig-x0fi7wm8.js → twig-n1f67204.js} +1 -1
- package/static/dist/assets/{typescript-g18c34xz.js → typescript-og7o55cx.js} +1 -1
- package/static/dist/assets/untitled-mj86r4gz.js +1 -0
- package/static/dist/assets/useDebounced-g8r0ggve.js +1 -0
- package/static/dist/assets/useForm-o4uu74mx.js +1 -0
- package/static/dist/assets/{useParams-b4dq6n4q.js → useParams-ftsveu84.js} +1 -1
- package/static/dist/assets/{useSearch-ipfmv3he.js → useSearch-crqueqga.js} +1 -1
- package/static/dist/assets/vennDiagram-4TSXK5OY-dh59uq1c.js +34 -0
- package/static/dist/assets/{vue-mwu5l1bb.js → vue-ej4xpwqw.js} +1 -1
- package/static/dist/assets/{vue-html-nskj3du0.js → vue-html-d48xsjuo.js} +1 -1
- package/static/dist/assets/{vue-vine-cqe77smq.js → vue-vine-pev88ip6.js} +1 -1
- package/static/dist/assets/wardley-WFR3VGLG-e6d74b0j.js +1 -0
- package/static/dist/assets/wardleyDiagram-VM6X3IG4-hnofh78f.js +78 -0
- package/static/dist/assets/with-selector-nu1b5z0v.js +1 -0
- package/static/dist/assets/{xml-gau7gvrv.js → xml-ifxp6gqb.js} +1 -1
- package/static/dist/assets/{xsl-ew09zq8b.js → xsl-fug2cckc.js} +1 -1
- package/static/dist/assets/{xychartDiagram-S5SC5T6Z-e49523ab.js → xychartDiagram-S5SC5T6Z-bpymjelb.js} +6 -6
- package/static/dist/assets/{yaml-ofnrxtvf.js → yaml-fjmafnlo.js} +1 -1
- package/static/dist/extension-sdk.js +1 -1
- package/static/dist/index.html +1 -1
- package/static/dist/sw.js +180 -136
- package/static/dist/assets/AppShell-g3bkgnvt.js +0 -1
- package/static/dist/assets/ChatPage-oo7bdan6.js +0 -25
- package/static/dist/assets/Dialog-g355qxhp.js +0 -1
- package/static/dist/assets/ExtensionRoute-i2y9fvjm.js +0 -1
- package/static/dist/assets/HubRoute-lmkrbw47.js +0 -2
- package/static/dist/assets/Markdown-j4kut4j2.js +0 -598
- package/static/dist/assets/Markdown-lwviulmg.css +0 -1
- package/static/dist/assets/RightPanel-ohlsdzfl.js +0 -1
- package/static/dist/assets/Select-kddq75qc.js +0 -1
- package/static/dist/assets/SessionListPanel-lu3oy0hw.js +0 -1
- package/static/dist/assets/SettingsLayout-o9bv4mgb.js +0 -1
- package/static/dist/assets/States-eq6fe29m.js +0 -1
- package/static/dist/assets/Toaster-pc247u9f.js +0 -1
- package/static/dist/assets/_app-f8n1i0m1.js +0 -1
- package/static/dist/assets/_app.ext._extensionId-gfbzpoou.js +0 -1
- package/static/dist/assets/_app.index-bzzv80hk.js +0 -1
- package/static/dist/assets/_app.insights-dzixbryi.js +0 -1
- package/static/dist/assets/_app.kanban-c6hep2us.js +0 -1
- package/static/dist/assets/_app.logs-i69qds98.js +0 -1
- package/static/dist/assets/_app.memory-kl4vf0gd.js +0 -1
- package/static/dist/assets/_app.profiles-b8zinmyp.js +0 -1
- package/static/dist/assets/_app.session._sessionId-fn1bhde6.js +0 -1
- package/static/dist/assets/_app.settings-cg8plwmf.js +0 -1
- package/static/dist/assets/_app.settings._section-bkwbi9zn.js +0 -3
- package/static/dist/assets/_app.skills-cs47sbvs.js +0 -1
- package/static/dist/assets/_app.tasks-dwvk64tc.js +0 -1
- package/static/dist/assets/_app.todos-c8xjm8p3.js +0 -1
- package/static/dist/assets/_app.workspaces-ehvd1gds.js +0 -1
- package/static/dist/assets/abnfDiagram-VCTEODGH-c8kdixke.js +0 -1
- package/static/dist/assets/architecture-7GRP2DOG-6crvnylg.js +0 -1
- package/static/dist/assets/architectureDiagram-5GKGNRK7-cku06x1p.js +0 -36
- package/static/dist/assets/back-h7aun7ew.js +0 -1
- package/static/dist/assets/cancel-fhi0vcnu.js +0 -1
- package/static/dist/assets/channel-b2zo73z1.js +0 -1
- package/static/dist/assets/chunk-DU6HZSFF-ofajdixh.js +0 -128
- package/static/dist/assets/chunk-OSK3NFVY-e7gkikcw.js +0 -10
- package/static/dist/assets/classDiagram-ZZMXUADV-oe99st8x.js +0 -1
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-oe99st8x.js +0 -1
- package/static/dist/assets/copied-hcplv46p.js +0 -1
- package/static/dist/assets/copy-magtofyp.js +0 -1
- package/static/dist/assets/cose-bilkent-JH36ORCC-eclcy6ja.js +0 -1
- package/static/dist/assets/cynefin-OW5HDTMX-siqlulkl.js +0 -1
- package/static/dist/assets/cynefinDiagram-5FMLGOSQ-i648tah9.js +0 -62
- package/static/dist/assets/cytoscape.esm-bqu53u12.js +0 -321
- package/static/dist/assets/dagre-GXQ25YYZ-mwn6uc17.js +0 -4
- package/static/dist/assets/dagre-lkoknbjn.js +0 -1
- package/static/dist/assets/diagram-UQ7AKVKN-mekq7zgq.js +0 -41
- package/static/dist/assets/diagram-VX7I27RA-xe6r5qfw.js +0 -24
- package/static/dist/assets/diagram-Z3DM3KII-nq07dg7k.js +0 -24
- package/static/dist/assets/ebnfDiagram-PWID7BFC-c62ipm3g.js +0 -1
- package/static/dist/assets/endpoints-klbxod4t.js +0 -64
- package/static/dist/assets/erDiagram-RLTQ6QDP-h39kmnzy.js +0 -99
- package/static/dist/assets/eventmodeling-NTZA5JFV-obfede4u.js +0 -1
- package/static/dist/assets/flowDiagram-HODETNUW-kdpsp1je.js +0 -1
- package/static/dist/assets/gitGraph-4MIJSDKK-fr2i7caa.js +0 -1
- package/static/dist/assets/highlighted-body-KPVGNVTW-jwpop9p8.js +0 -1
- package/static/dist/assets/host-i828xuo7.js +0 -1
- package/static/dist/assets/index-eh8zilnv.css +0 -2
- package/static/dist/assets/index-r648f4o1.js +0 -11
- package/static/dist/assets/info-A6RAGUB7-h11x0dxo.js +0 -1
- package/static/dist/assets/infoDiagram-27XIBGKW-dfh47dw9.js +0 -2
- package/static/dist/assets/lazyRouteComponent-e1y4t2i9.js +0 -1
- package/static/dist/assets/linear-becwlnhk.js +0 -1
- package/static/dist/assets/link-oot2yn73.js +0 -1
- package/static/dist/assets/login-gu28l9ou.js +0 -1
- package/static/dist/assets/mermaid-HWGCJPDP-mtwrj8fn.js +0 -1
- package/static/dist/assets/mermaid-parser.core-ntne45i9.js +0 -7
- package/static/dist/assets/not-found-ccnnac39.js +0 -1
- package/static/dist/assets/onboarding-lkphzu1s.js +0 -1
- package/static/dist/assets/onboarding_model_label-ftpjdwqk.js +0 -1
- package/static/dist/assets/packet-AYTQ26CC-l6jdka8p.js +0 -1
- package/static/dist/assets/pegDiagram-XKGWAZYB-g1er3bxj.js +0 -1
- package/static/dist/assets/pie-WAS4IAKB-i0ylcrt9.js +0 -1
- package/static/dist/assets/pieDiagram-E7YTZNPT-fbz1e55z.js +0 -39
- package/static/dist/assets/radar-RG4KPBEZ-f9b70aa4.js +0 -1
- package/static/dist/assets/railroad-74A4TZTK-lgsuoeda.js +0 -1
- package/static/dist/assets/railroad-abnf-HS5TGJTU-nf9d6pdx.js +0 -1
- package/static/dist/assets/railroad-ebnf-LZEXJU2U-f7ummkt5.js +0 -1
- package/static/dist/assets/railroad-peg-WCYAUIDC-oczq5tqs.js +0 -1
- package/static/dist/assets/railroadDiagram-O6MQD6OU-eqpy9fnz.js +0 -1
- package/static/dist/assets/refresh-abtu93ke.js +0 -1
- package/static/dist/assets/refresh-cw-hlwb02qv.js +0 -1
- package/static/dist/assets/requirementDiagram-BXWQKSXE-ogf6puhi.js +0 -84
- package/static/dist/assets/rolldown-runtime-b9miacsj.js +0 -1
- package/static/dist/assets/root-mbklpuv4.js +0 -1
- package/static/dist/assets/saved-girnabkf.js +0 -1
- package/static/dist/assets/settings_section_extensions_title-h14cwk6f.js +0 -1
- package/static/dist/assets/share._token-kl0r7ido.js +0 -2
- package/static/dist/assets/sizeCapture-INFHLROL-g612l48j.js +0 -1
- package/static/dist/assets/sliders-horizontal-n1zm34qq.js +0 -1
- package/static/dist/assets/src-hjyib4mu.js +0 -1
- package/static/dist/assets/sse-iwku0sjo.js +0 -1
- package/static/dist/assets/stateDiagram-D77RDMKH-fyoznpcs.js +0 -1
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-ixhx8r46.js +0 -1
- package/static/dist/assets/swimlanes-42K2YHIH-oefldhfy.js +0 -1
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-h9ersk2e.js +0 -8
- package/static/dist/assets/todoStore-jjr5yr78.js +0 -1
- package/static/dist/assets/treeView-Q6P3EWNA-f7hcci5o.js +0 -1
- package/static/dist/assets/treemap-WGGIJYW6-nl85071a.js +0 -1
- package/static/dist/assets/units-kgxzxfhi.js +0 -1
- package/static/dist/assets/untitled-cikfjntn.js +0 -1
- package/static/dist/assets/useForm-kqoqg0k9.js +0 -1
- package/static/dist/assets/useLocale-o59tbiea.js +0 -1
- package/static/dist/assets/vennDiagram-4TSXK5OY-h5hzbk0n.js +0 -34
- package/static/dist/assets/wardley-WFR3VGLG-jftvpm3e.js +0 -1
- package/static/dist/assets/wardleyDiagram-VM6X3IG4-hedh85ge.js +0 -78
- /package/static/dist/assets/{ChatPage-gmu5c7lf.css → TerminalPanel-gmu5c7lf.css} +0 -0
|
@@ -7,6 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import json
|
|
8
8
|
import logging
|
|
9
9
|
import queue
|
|
10
|
+
import re
|
|
10
11
|
import sqlite3
|
|
11
12
|
import threading
|
|
12
13
|
import time
|
|
@@ -14,7 +15,7 @@ from contextlib import closing
|
|
|
14
15
|
from pathlib import Path
|
|
15
16
|
|
|
16
17
|
from ..errors import InvalidParams, RpcError
|
|
17
|
-
from ..home import profile_home_param, scoped_home
|
|
18
|
+
from ..home import _PROCESS_HOME, _is_named_profile, profile_home_param, scoped_home
|
|
18
19
|
from ..rpc import CallContext
|
|
19
20
|
|
|
20
21
|
log = logging.getLogger("talaria_sidecar.process")
|
|
@@ -28,11 +29,23 @@ def _registry():
|
|
|
28
29
|
return process_registry
|
|
29
30
|
|
|
30
31
|
|
|
32
|
+
def _is_child_process(row: dict) -> bool:
|
|
33
|
+
"""TAL-933: a subagent's own process notice, which the server surfaces only when the owning profile opts in."""
|
|
34
|
+
try:
|
|
35
|
+
from tools.process_registry_notifications import is_child_process_notification
|
|
36
|
+
except Exception: # noqa: BLE001 - before Agent 0.21.7, the same rule inline
|
|
37
|
+
if row.get("type") in ("async_delegation", "async_delegation_work_closeout"):
|
|
38
|
+
return False
|
|
39
|
+
return str(row.get("owner_task_id") or row.get("task_id") or "").startswith("sa-")
|
|
40
|
+
return bool(is_child_process_notification(row))
|
|
41
|
+
|
|
42
|
+
|
|
31
43
|
def _event_row(evt: dict) -> dict:
|
|
32
44
|
registry = _registry()
|
|
33
45
|
row = {str(k): v for k, v in evt.items()} if isinstance(evt, dict) else {}
|
|
34
46
|
process_id = str(row.get("delegation_id") or row.get("session_id") or row.get("task_id") or "") if row.get("type") == "async_delegation" else str(row.get("session_id") or "")
|
|
35
47
|
row["process_id"] = process_id
|
|
48
|
+
row["child_process"] = _is_child_process(row)
|
|
36
49
|
if registry is not None and process_id and (not row.get("session_key") or not row.get("origin_ui_session_id")):
|
|
37
50
|
try:
|
|
38
51
|
proc = registry.get(process_id)
|
|
@@ -102,12 +115,112 @@ def _publish_recovered_exits(registry) -> None:
|
|
|
102
115
|
_RECOVERED.setdefault(session.id, session)
|
|
103
116
|
|
|
104
117
|
|
|
118
|
+
_COMPLETION_BASE_HOME: Path | None = None
|
|
119
|
+
_RESTORED_COMPLETION_HOMES: set[Path] = set()
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _completion_homes() -> list[Path]:
|
|
123
|
+
from hermes_constants import get_hermes_home
|
|
124
|
+
from .profiles import named_profile_homes
|
|
125
|
+
|
|
126
|
+
homes = [_PROCESS_HOME, Path(get_hermes_home())]
|
|
127
|
+
if _COMPLETION_BASE_HOME is not None:
|
|
128
|
+
# The server drains one global queue. Re-enumerate so new profiles join and removed/escaped ones leave.
|
|
129
|
+
homes += [_COMPLETION_BASE_HOME, *(home for _, home in named_profile_homes(_COMPLETION_BASE_HOME))]
|
|
130
|
+
return list(dict.fromkeys(home.resolve() for home in homes))
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def _restore_and_sweep_completions(registry) -> None:
|
|
134
|
+
from tools import async_delegation
|
|
135
|
+
|
|
136
|
+
restore = getattr(registry, "restore_completions", None)
|
|
137
|
+
if not callable(restore):
|
|
138
|
+
return # Older Agents already restore at registry import and have no orphan sweep.
|
|
139
|
+
# The Agent binds the launch home itself, even when the first drain is in a named profile.
|
|
140
|
+
restore()
|
|
141
|
+
for home in _completion_homes():
|
|
142
|
+
try:
|
|
143
|
+
with scoped_home(home):
|
|
144
|
+
if _is_named_profile(home) and home not in _RESTORED_COMPLETION_HOMES:
|
|
145
|
+
async_delegation.restore_undelivered_completions(registry.completion_queue)
|
|
146
|
+
_RESTORED_COMPLETION_HOMES.add(home)
|
|
147
|
+
sweep = getattr(async_delegation, "maybe_sweep_orphaned_completions", None)
|
|
148
|
+
if callable(sweep):
|
|
149
|
+
sweep(registry.completion_queue)
|
|
150
|
+
except Exception: # noqa: BLE001 - retry this home without blocking other profiles or queued events
|
|
151
|
+
log.debug("Failed to restore or sweep delegation completions for %s", home, exc_info=True)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
_DELIVERY_RECONCILE_INTERVAL_S = 30
|
|
155
|
+
_LAST_DELIVERY_RECONCILE: dict[Path, float] = {}
|
|
156
|
+
_DELIVERY_RECONCILE_CURSOR: dict[Path, str] = {}
|
|
157
|
+
_DELIVERY_RECONCILE_PAGE_SIZE = 200
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _delivered_notifications(home: Path, delegation_id: str | None = None, after: str = "") -> tuple[list[dict], str]:
|
|
161
|
+
"""Only typed transcript deliveries, never every delivered ledger row. No Agent state is changed."""
|
|
162
|
+
db_path = home / "state.db"
|
|
163
|
+
if not db_path.exists():
|
|
164
|
+
return [], ""
|
|
165
|
+
with closing(sqlite3.connect(f"{db_path.resolve().as_uri()}?mode=ro", uri=True, timeout=5)) as conn:
|
|
166
|
+
tables = {r[0] for r in conn.execute("SELECT name FROM sqlite_master WHERE type='table'")}
|
|
167
|
+
if not {"async_delegations", "messages", "sessions"} <= tables:
|
|
168
|
+
return [], ""
|
|
169
|
+
rows = conn.execute("""WITH RECURSIVE candidates AS (
|
|
170
|
+
SELECT delegation_id, origin_ui_session_id, parent_session_id, origin_session_id, event_json
|
|
171
|
+
FROM async_delegations WHERE delivery_state='delivered' AND state NOT IN ('running','finalizing')
|
|
172
|
+
AND event_json IS NOT NULL AND origin_ui_session_id != '' AND delivered_at >= ?
|
|
173
|
+
AND (? IS NULL OR delegation_id=?) AND delegation_id > ?
|
|
174
|
+
), lineage(delegation_id, id) AS (
|
|
175
|
+
SELECT delegation_id, parent_session_id FROM candidates WHERE parent_session_id != ''
|
|
176
|
+
UNION SELECT delegation_id, origin_session_id FROM candidates WHERE origin_session_id != ''
|
|
177
|
+
UNION SELECT l.delegation_id, s.id FROM lineage l
|
|
178
|
+
JOIN sessions parent ON parent.id=l.id AND parent.end_reason='compression'
|
|
179
|
+
JOIN sessions s ON s.parent_session_id=l.id
|
|
180
|
+
) SELECT DISTINCT c.delegation_id, c.origin_ui_session_id, c.event_json
|
|
181
|
+
FROM candidates c JOIN lineage l ON l.delegation_id=c.delegation_id
|
|
182
|
+
JOIN messages m ON m.session_id=l.id
|
|
183
|
+
WHERE m.role='user' AND m.display_kind='async_delegation_complete'
|
|
184
|
+
AND json_valid(m.display_metadata)
|
|
185
|
+
AND json_extract(m.display_metadata, '$.delegation_id')=c.delegation_id
|
|
186
|
+
AND coalesce(json_extract(m.display_metadata, '$.delivery_notice'), '')=''
|
|
187
|
+
AND coalesce(json_extract(m.display_metadata, '$.presentation_suppressed'), 0)=0
|
|
188
|
+
ORDER BY c.delegation_id LIMIT ?""", (time.time() - 48 * 3600, delegation_id, delegation_id, after, _DELIVERY_RECONCILE_PAGE_SIZE)).fetchall()
|
|
189
|
+
events = []
|
|
190
|
+
for did, owner, payload in rows:
|
|
191
|
+
event = _json(payload)
|
|
192
|
+
if event.get("type") != "async_delegation" or event.get("delegation_id") != did or event.get("origin_ui_session_id") != owner or event.get("task_failure_notice"):
|
|
193
|
+
continue
|
|
194
|
+
events.append({**event, "reconciliation_profile_home": str(home.resolve())})
|
|
195
|
+
return events, rows[-1][0] if len(rows) == _DELIVERY_RECONCILE_PAGE_SIZE else ""
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def _reconcile_delivered_notifications() -> list[dict]:
|
|
199
|
+
out = []
|
|
200
|
+
for home in _completion_homes():
|
|
201
|
+
now = time.monotonic()
|
|
202
|
+
if now - _LAST_DELIVERY_RECONCILE.get(home, -float("inf")) < _DELIVERY_RECONCILE_INTERVAL_S:
|
|
203
|
+
continue
|
|
204
|
+
try:
|
|
205
|
+
events, cursor = _delivered_notifications(home, after=_DELIVERY_RECONCILE_CURSOR.get(home, ""))
|
|
206
|
+
out.extend(events)
|
|
207
|
+
_DELIVERY_RECONCILE_CURSOR[home] = cursor
|
|
208
|
+
_LAST_DELIVERY_RECONCILE[home] = now
|
|
209
|
+
except Exception: # retry unreadable homes; never block live queue delivery
|
|
210
|
+
log.warning("Failed to reconcile typed delegation deliveries for %s", home, exc_info=True)
|
|
211
|
+
return out
|
|
212
|
+
|
|
213
|
+
|
|
105
214
|
def drain(max_events: int) -> list[dict]:
|
|
106
215
|
"""Pop every queued completion event; the server requeues what it does not own."""
|
|
107
216
|
registry = _registry()
|
|
108
217
|
completion_queue = getattr(registry, "completion_queue", None) if registry is not None else None
|
|
109
218
|
if completion_queue is None:
|
|
110
219
|
return []
|
|
220
|
+
try:
|
|
221
|
+
_restore_and_sweep_completions(registry)
|
|
222
|
+
except Exception: # noqa: BLE001 - maintenance must not prevent delivery of live queued events
|
|
223
|
+
log.debug("Failed to reconcile delegation completions", exc_info=True)
|
|
111
224
|
try:
|
|
112
225
|
# A recovered process has no reader thread; only this probe notices its exit and queues its completion (TAL-533).
|
|
113
226
|
with registry._lock:
|
|
@@ -117,6 +230,12 @@ def drain(max_events: int) -> list[dict]:
|
|
|
117
230
|
_publish_recovered_exits(registry)
|
|
118
231
|
except Exception: # noqa: BLE001
|
|
119
232
|
log.debug("Failed to reconcile recovered processes", exc_info=True)
|
|
233
|
+
# Use the existing queue and its bound, so reconciliation cannot starve live or foreign events.
|
|
234
|
+
try:
|
|
235
|
+
for event in _reconcile_delivered_notifications():
|
|
236
|
+
completion_queue.put_nowait(event)
|
|
237
|
+
except Exception:
|
|
238
|
+
log.warning("Failed to offer typed delegation deliveries", exc_info=True)
|
|
120
239
|
out = []
|
|
121
240
|
while len(out) < max_events:
|
|
122
241
|
try:
|
|
@@ -138,7 +257,7 @@ def requeue(events: list[dict]) -> int:
|
|
|
138
257
|
count = 0
|
|
139
258
|
for evt in events:
|
|
140
259
|
try:
|
|
141
|
-
completion_queue.put_nowait({k: v for k, v in evt.items() if k not in ("process_id", "consumed")})
|
|
260
|
+
completion_queue.put_nowait({k: v for k, v in evt.items() if k not in ("process_id", "consumed", "child_process")})
|
|
142
261
|
count += 1
|
|
143
262
|
except Exception: # noqa: BLE001
|
|
144
263
|
log.debug("Failed to requeue process completion", exc_info=True)
|
|
@@ -196,6 +315,15 @@ def claim_delivery(evt: dict, consumer: str) -> str | None:
|
|
|
196
315
|
if api is None:
|
|
197
316
|
return ""
|
|
198
317
|
claim_id = api.claim_event_delivery(_ledger_event(evt), consumer)
|
|
318
|
+
if claim_id is None and consumer == "webui" and evt.get("origin_ui_session_id"):
|
|
319
|
+
from hermes_constants import get_hermes_home
|
|
320
|
+
home = Path(get_hermes_home()).resolve()
|
|
321
|
+
if evt.get("reconciliation_profile_home", str(home)) == str(home):
|
|
322
|
+
# A live queue copy can race the transcript-only consumer too. Recheck the same proof here.
|
|
323
|
+
transport = {"process_id", "consumed", "child_process", "restored", "startup_replay", "reconciliation_profile_home"}
|
|
324
|
+
for candidate in _delivered_notifications(home, str(evt.get("delegation_id") or ""))[0]:
|
|
325
|
+
if {k: v for k, v in candidate.items() if k not in transport} == {k: v for k, v in evt.items() if k not in transport}:
|
|
326
|
+
return "" # Web's session receipt acknowledges this admission, not the Agent ledger.
|
|
199
327
|
return None if claim_id is None else str(claim_id)
|
|
200
328
|
|
|
201
329
|
|
|
@@ -230,11 +358,14 @@ def defer_delivery(evt: dict, claim_id: str) -> bool:
|
|
|
230
358
|
|
|
231
359
|
|
|
232
360
|
def format_notification(evt: dict) -> str:
|
|
233
|
-
if evt.get("type")
|
|
361
|
+
if evt.get("type") in ("async_delegation", "heartbeat", "watch_match", "watch_disabled", "watch_overflow_tripped", "watch_overflow_released"):
|
|
234
362
|
try:
|
|
235
|
-
from tools
|
|
363
|
+
from tools import process_registry
|
|
236
364
|
|
|
237
|
-
|
|
365
|
+
# Older formatters fall through unknown events to an exit notification.
|
|
366
|
+
if evt.get("type") == "heartbeat" and not callable(getattr(getattr(process_registry, "ProcessRegistry", None), "_emit_heartbeat", None)):
|
|
367
|
+
return ""
|
|
368
|
+
return process_registry.format_process_notification(evt) or ""
|
|
238
369
|
except Exception: # noqa: BLE001
|
|
239
370
|
return ""
|
|
240
371
|
if evt.get("type") != "completion":
|
|
@@ -319,7 +450,7 @@ def _live_delegations() -> dict[str, dict]:
|
|
|
319
450
|
items = list_async_delegations()
|
|
320
451
|
except Exception: # noqa: BLE001 - an Agent without the live registry reports from the ledger alone
|
|
321
452
|
return {}
|
|
322
|
-
return {str(i.get("delegation_id")):
|
|
453
|
+
return {str(i.get("delegation_id")): i for i in items if isinstance(i, dict) and i.get("delegation_id")}
|
|
323
454
|
|
|
324
455
|
|
|
325
456
|
def _owned_processes(session_ids: set[str]) -> list[dict]:
|
|
@@ -369,7 +500,7 @@ def _live_children() -> list[dict]:
|
|
|
369
500
|
return out
|
|
370
501
|
|
|
371
502
|
|
|
372
|
-
def _ledger_children(home: Path, owners: list[str]) -> list[dict]:
|
|
503
|
+
def _ledger_children(home: Path, owners: list[str], dispatched_at: float) -> list[dict]:
|
|
373
504
|
"""Finished subagents' own sessions in state.db: ``source = subagent`` rows tagged ``_delegate_from`` with their
|
|
374
505
|
parent's session, each with its start time and first user message (the child's goal, sent verbatim)."""
|
|
375
506
|
db_path = home / "state.db"
|
|
@@ -378,10 +509,11 @@ def _ledger_children(home: Path, owners: list[str]) -> list[dict]:
|
|
|
378
509
|
marks = ",".join("?" * len(owners))
|
|
379
510
|
with closing(sqlite3.connect(f"{db_path.resolve().as_uri()}?mode=ro", uri=True, timeout=5)) as conn:
|
|
380
511
|
try:
|
|
381
|
-
#
|
|
512
|
+
# Bound history before parsing owner JSON; allow 60 seconds of dispatch/start clock skew.
|
|
382
513
|
rows = conn.execute(
|
|
383
514
|
"SELECT s.id, s.model_config, s.started_at, (SELECT m.content FROM messages m WHERE m.session_id = s.id AND m.role = 'user' ORDER BY m.id LIMIT 1)"
|
|
384
|
-
f" FROM sessions s WHERE s.source = 'subagent' AND json_extract(s.model_config, '$._delegate_from') IN ({marks})",
|
|
515
|
+
f" FROM sessions s WHERE s.source = 'subagent' AND s.started_at >= ? AND json_extract(s.model_config, '$._delegate_from') IN ({marks})",
|
|
516
|
+
[dispatched_at - 60, *owners]).fetchall()
|
|
385
517
|
except sqlite3.OperationalError:
|
|
386
518
|
return []
|
|
387
519
|
out = []
|
|
@@ -404,12 +536,21 @@ def _goal_text(content) -> str:
|
|
|
404
536
|
return ""
|
|
405
537
|
if content.startswith(_CONTENT_JSON_PREFIX):
|
|
406
538
|
try:
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
539
|
+
from hermes_state import SessionDB
|
|
540
|
+
decode = getattr(SessionDB, "_decode_content", None)
|
|
541
|
+
except ImportError:
|
|
542
|
+
decode = None
|
|
543
|
+
if callable(decode):
|
|
544
|
+
content = decode(content)
|
|
545
|
+
else:
|
|
546
|
+
try:
|
|
547
|
+
content = json.loads(content[len(_CONTENT_JSON_PREFIX):])
|
|
548
|
+
except ValueError:
|
|
549
|
+
pass # Legacy malformed marker rows remain literal text, as in the Agent.
|
|
550
|
+
if isinstance(content, list):
|
|
551
|
+
texts = [p.get("text") for p in content if isinstance(p, dict) and p.get("type") == "text"]
|
|
411
552
|
return str(texts[0]) if texts and texts[0] else ""
|
|
412
|
-
return content.split(_IMAGE_HINTS, 1)[0]
|
|
553
|
+
return content.split(_IMAGE_HINTS, 1)[0] if isinstance(content, str) else ""
|
|
413
554
|
|
|
414
555
|
|
|
415
556
|
def unit_children(unit: dict, owner: str, live: list[dict], finished: list[dict], now: float) -> list[dict]:
|
|
@@ -444,7 +585,7 @@ def background_list(home: Path, session_ids: list[str]) -> dict:
|
|
|
444
585
|
live = _live_delegations()
|
|
445
586
|
delegations = _ledger_rows(home, session_ids)
|
|
446
587
|
live_children = _live_children()
|
|
447
|
-
finished = _ledger_children(home, session_ids) if delegations else []
|
|
588
|
+
finished = _ledger_children(home, session_ids, min(row["dispatched_at"] for row in delegations)) if delegations else []
|
|
448
589
|
now = time.time()
|
|
449
590
|
for row in delegations:
|
|
450
591
|
row["live_status"] = live.get(row["delegation_id"], {}).get("status")
|
|
@@ -472,6 +613,8 @@ def recover(base_home: Path) -> int:
|
|
|
472
613
|
recovery fails the call, so the server retries."""
|
|
473
614
|
from .profiles import named_profile_homes
|
|
474
615
|
|
|
616
|
+
global _COMPLETION_BASE_HOME
|
|
617
|
+
_COMPLETION_BASE_HOME = base_home
|
|
475
618
|
named = [home for _, home in named_profile_homes(base_home)]
|
|
476
619
|
failed = []
|
|
477
620
|
for home in [base_home, *named]:
|
|
@@ -489,6 +632,60 @@ def recover(base_home: Path) -> int:
|
|
|
489
632
|
return 1 + len(named)
|
|
490
633
|
|
|
491
634
|
|
|
635
|
+
def stop(home: Path, session_id: str, process_id: str) -> str:
|
|
636
|
+
"""Request cancellation only for work this profile/session owns; let Agent completions settle its row."""
|
|
637
|
+
registry = _registry()
|
|
638
|
+
proc = registry.get(process_id) if registry is not None else None
|
|
639
|
+
if proc is not None:
|
|
640
|
+
if str(getattr(proc, "session_key", "") or "") != session_id:
|
|
641
|
+
return "not_found"
|
|
642
|
+
if proc.exited:
|
|
643
|
+
return "not_running"
|
|
644
|
+
# Keep the completion visible to the parent, just like other autonomous exits.
|
|
645
|
+
result = registry.kill_process(process_id, consume_output=False)
|
|
646
|
+
if result.get("status") == "error" or result.get("error"):
|
|
647
|
+
raise RpcError(str(result.get("error") or "Process could not be stopped"))
|
|
648
|
+
if result.get("status") == "killed":
|
|
649
|
+
return "stopped"
|
|
650
|
+
if result.get("completion_reason") == "already_exited" or result.get("status") == "already_exited":
|
|
651
|
+
return "not_running"
|
|
652
|
+
raise RpcError("Process stop was not confirmed")
|
|
653
|
+
|
|
654
|
+
row = next((r for r in _ledger_rows(home, [session_id]) if r["delegation_id"] == process_id), None)
|
|
655
|
+
if row is None:
|
|
656
|
+
return "not_found"
|
|
657
|
+
if row["state"] not in {"running", "stalling", "finalizing"}:
|
|
658
|
+
return "not_running"
|
|
659
|
+
from tools.delegate_tool_registry import interrupt_subagent, list_active_subagents
|
|
660
|
+
|
|
661
|
+
live = _live_delegations().get(process_id)
|
|
662
|
+
if not live or live.get("origin_ui_session_id") != session_id:
|
|
663
|
+
return "not_running"
|
|
664
|
+
indexes = live.get("task_indexes")
|
|
665
|
+
# Independent-completion units are <call-id>-<unit-number>; slot_key is the first unit, not the call.
|
|
666
|
+
split = re.fullmatch(r"(.+)-[1-9][0-9]*", process_id) if indexes is not None else None
|
|
667
|
+
if indexes is not None and split is None:
|
|
668
|
+
raise RpcError("Delegation unit identity could not be confirmed")
|
|
669
|
+
call_id = split[1] if split else process_id
|
|
670
|
+
# The dispatch parent is the Agent execution id; compression can rotate it away from the stable Web id.
|
|
671
|
+
owner_id = live.get("parent_session_id") or session_id
|
|
672
|
+
|
|
673
|
+
def belongs(child: dict) -> bool:
|
|
674
|
+
if child.get("delegation_id") != call_id or child.get("owner_agent_session_id") != owner_id:
|
|
675
|
+
return False
|
|
676
|
+
# Split units share a call id; Agent subagent ids encode their original task index.
|
|
677
|
+
index = re.fullmatch(r"sa-(\d+)-[a-zA-Z0-9]+", str(child.get("subagent_id") or ""))
|
|
678
|
+
return indexes is None or (index is not None and int(index[1]) in indexes)
|
|
679
|
+
|
|
680
|
+
children = [r for r in list_active_subagents() if belongs(r)]
|
|
681
|
+
if not children:
|
|
682
|
+
return "not_running"
|
|
683
|
+
interrupted = [interrupt_subagent(r["subagent_id"]) for r in children]
|
|
684
|
+
if not all(interrupted):
|
|
685
|
+
raise RpcError("Some subagents could not be interrupted; refresh and retry")
|
|
686
|
+
return "stopped"
|
|
687
|
+
|
|
688
|
+
|
|
492
689
|
def register(registry_) -> None:
|
|
493
690
|
@registry_.method("process.drain")
|
|
494
691
|
def drain_(ctx: CallContext, params: dict) -> dict:
|
|
@@ -533,7 +730,15 @@ def register(registry_) -> None:
|
|
|
533
730
|
if not consumer:
|
|
534
731
|
raise InvalidParams("consumer is required")
|
|
535
732
|
with scoped_home(profile_home_param(params)):
|
|
536
|
-
|
|
733
|
+
claim = claim_delivery(evt, consumer)
|
|
734
|
+
result = {"claim_id": claim}
|
|
735
|
+
if claim is None:
|
|
736
|
+
api = _delivery_api()
|
|
737
|
+
lookup = getattr(api, "get_durable_delegation", None)
|
|
738
|
+
row = lookup(str(evt.get("delegation_id") or "")) if callable(lookup) else None
|
|
739
|
+
if row and row.get("delivery_state") == "pending":
|
|
740
|
+
result["retryable"] = True
|
|
741
|
+
return result
|
|
537
742
|
|
|
538
743
|
@registry_.method("process.complete_delivery")
|
|
539
744
|
def complete_(ctx: CallContext, params: dict) -> dict:
|
|
@@ -580,6 +785,14 @@ def register(registry_) -> None:
|
|
|
580
785
|
with scoped_home(profile_home_param(params)) as home:
|
|
581
786
|
return {"text": delegation_result(home, sid, did)}
|
|
582
787
|
|
|
788
|
+
@registry_.method("process.stop")
|
|
789
|
+
def stop_(ctx: CallContext, params: dict) -> dict:
|
|
790
|
+
sid, pid = params.get("session_id"), params.get("process_id")
|
|
791
|
+
if not isinstance(sid, str) or not sid.strip() or not isinstance(pid, str) or not pid.strip():
|
|
792
|
+
raise InvalidParams("session_id and process_id are required")
|
|
793
|
+
with scoped_home(profile_home_param(params)) as home:
|
|
794
|
+
return {"outcome": stop(home, sid, pid)}
|
|
795
|
+
|
|
583
796
|
@registry_.method("process.list")
|
|
584
797
|
def list_(ctx: CallContext, params: dict) -> dict:
|
|
585
798
|
with scoped_home(profile_home_param(params)):
|
|
@@ -151,20 +151,58 @@ def canonical_bot_chat(home: Path) -> dict | None:
|
|
|
151
151
|
pass
|
|
152
152
|
|
|
153
153
|
|
|
154
|
+
GATEWAY_RUNNING_MODES = ("own", "served")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def gateway_mode(home: Path, name: str, is_default: bool) -> str:
|
|
158
|
+
"""The profile's gateway under the host multiplexer (TAL-805): ``served`` by the live host gateway, ``own`` gateway
|
|
159
|
+
process, ``parked`` (``hermes -p X gateway stop`` left its marker and nothing runs; the marker records intent, so a
|
|
160
|
+
live ``--force`` gateway still counts, as in ``hermes -p X gateway status``), ``standalone`` (opted out of the host and
|
|
161
|
+
not running), else ``stopped``. The default profile is the host itself.
|
|
162
|
+
A helper the installed Agent lacks answers no, so an Agent without the multiplexer helpers reports ``own`` or
|
|
163
|
+
``stopped``; a helper that fails answers no too, except the parked check, which fails closed to ``stopped``."""
|
|
164
|
+
from hermes_cli import profiles as agent
|
|
165
|
+
|
|
166
|
+
def probe(helper: str, arg) -> bool | None:
|
|
167
|
+
check = getattr(agent, helper, None)
|
|
168
|
+
if check is None:
|
|
169
|
+
return False
|
|
170
|
+
try:
|
|
171
|
+
return bool(check(arg))
|
|
172
|
+
except Exception: # noqa: BLE001
|
|
173
|
+
log.debug("gateway mode probe %s failed for %s", helper, home, exc_info=True)
|
|
174
|
+
return None
|
|
175
|
+
|
|
176
|
+
def asks(helper: str, arg) -> bool:
|
|
177
|
+
return probe(helper, arg) is True
|
|
178
|
+
|
|
179
|
+
named = not is_default
|
|
180
|
+
parked = probe("profile_is_parked", home) if named else False
|
|
181
|
+
if parked is None:
|
|
182
|
+
return "stopped"
|
|
183
|
+
if named and asks("_served_by_running_multiplexer", name):
|
|
184
|
+
return "served"
|
|
185
|
+
if asks("_check_gateway_running", home):
|
|
186
|
+
return "own"
|
|
187
|
+
if parked:
|
|
188
|
+
return "parked"
|
|
189
|
+
if named and asks("profile_is_standalone", home):
|
|
190
|
+
return "standalone"
|
|
191
|
+
return "stopped"
|
|
192
|
+
|
|
193
|
+
|
|
154
194
|
def _row(home: Path, name: str, is_default: bool) -> dict:
|
|
155
|
-
from hermes_cli.profiles import
|
|
195
|
+
from hermes_cli.profiles import _read_config_model
|
|
156
196
|
|
|
157
197
|
try:
|
|
158
198
|
model, provider = _read_config_model(home)
|
|
159
199
|
except Exception: # noqa: BLE001
|
|
160
200
|
model, provider = None, None
|
|
161
|
-
|
|
162
|
-
gateway_running = bool(_check_gateway_running(home))
|
|
163
|
-
except Exception: # noqa: BLE001
|
|
164
|
-
gateway_running = False
|
|
201
|
+
mode = gateway_mode(home, name, is_default)
|
|
165
202
|
enabled, total = skills_stats(home)
|
|
166
203
|
return {
|
|
167
|
-
"name": name, "path": str(home), "is_default": is_default, "gateway_running":
|
|
204
|
+
"name": name, "path": str(home), "is_default": is_default, "gateway_running": mode in GATEWAY_RUNNING_MODES, "gateway_mode": mode,
|
|
205
|
+
"model": model, "provider": provider,
|
|
168
206
|
"has_env": (home / ".env").exists(), "visible": _visible(home), "skill_count": enabled, "enabled_skills": enabled, "total_skills": total,
|
|
169
207
|
**bot_identity(home), "canonical_session": canonical_bot_chat(home),
|
|
170
208
|
}
|
|
@@ -314,10 +352,11 @@ def register(registry) -> None:
|
|
|
314
352
|
base_home, name = profile_home_param(params, "base_home"), str(params.get("name") or "").strip()
|
|
315
353
|
validate_name(name)
|
|
316
354
|
# Idle cached agents end their memory sessions while the profile's home still exists.
|
|
317
|
-
from .chat import release_profile_agents
|
|
355
|
+
from .chat import forget_profile_hooks, release_profile_agents
|
|
318
356
|
|
|
319
|
-
release_profile_agents(base_home / "profiles" / name)
|
|
320
|
-
|
|
357
|
+
with release_profile_agents(base_home / "profiles" / name):
|
|
358
|
+
forget_profile_hooks(base_home / "profiles" / name)
|
|
359
|
+
delete_profile(base_home, name)
|
|
321
360
|
return {"ok": True}
|
|
322
361
|
|
|
323
362
|
@registry.method("profiles.runtime_env")
|