@songsid/agend 2.3.5-alpha.3 → 2.3.5-alpha.5
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/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/accounts-view.d.ts +97 -0
- package/dist/accounts-view.js +116 -0
- package/dist/accounts-view.js.map +1 -0
- package/dist/agent-cli-instructions.md +1 -1
- package/dist/agent-credentials.d.ts +24 -0
- package/dist/agent-credentials.js +66 -0
- package/dist/agent-credentials.js.map +1 -0
- package/dist/agent-endpoint.d.ts +3 -1
- package/dist/agent-endpoint.js +13 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.js +1 -1
- package/dist/agent-file-read.js.map +1 -1
- package/dist/agent-runtime-api.d.ts +4 -0
- package/dist/agent-runtime-api.js +59 -0
- package/dist/agent-runtime-api.js.map +1 -0
- package/dist/agent-runtime-change.d.ts +76 -0
- package/dist/agent-runtime-change.js +114 -0
- package/dist/agent-runtime-change.js.map +1 -0
- package/dist/agent-workspace.d.ts +93 -0
- package/dist/agent-workspace.js +353 -0
- package/dist/agent-workspace.js.map +1 -0
- package/dist/auth-api.d.ts +27 -0
- package/dist/auth-api.js +168 -3
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/session-authorizations.d.ts +28 -4
- package/dist/authority/session-authorizations.js +63 -17
- package/dist/authority/session-authorizations.js.map +1 -1
- package/dist/backend/antigravity.js +3 -1
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/codex-footer-hints.d.ts +7 -0
- package/dist/backend/codex-footer-hints.js +41 -0
- package/dist/backend/codex-footer-hints.js.map +1 -0
- package/dist/backend/codex-metadata.d.ts +14 -0
- package/dist/backend/codex-metadata.js +45 -0
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex-quota-history.d.ts +7 -0
- package/dist/backend/codex-quota-history.js +57 -0
- package/dist/backend/codex-quota-history.js.map +1 -0
- package/dist/backend/codex-session-lookup.d.ts +6 -0
- package/dist/backend/codex-session-lookup.js +1 -1
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex-speed.d.ts +14 -0
- package/dist/backend/codex-speed.js +35 -0
- package/dist/backend/codex-speed.js.map +1 -0
- package/dist/backend/codex.d.ts +7 -0
- package/dist/backend/codex.js +85 -24
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/grok-weekly-reset.d.ts +24 -0
- package/dist/backend/grok-weekly-reset.js +95 -0
- package/dist/backend/grok-weekly-reset.js.map +1 -0
- package/dist/backend/grok.d.ts +30 -1
- package/dist/backend/grok.js +301 -54
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +3 -0
- package/dist/backend/kiro.js +50 -2
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +5 -3
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/native-pane.d.ts +3 -1
- package/dist/backend/native-pane.js +2 -2
- package/dist/backend/native-pane.js.map +1 -1
- package/dist/backend/types.d.ts +13 -1
- package/dist/backend/types.js +3 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/build-provenance-cli.d.ts +3 -0
- package/dist/build-provenance-cli.js +11 -0
- package/dist/build-provenance-cli.js.map +1 -0
- package/dist/build-provenance.d.ts +20 -0
- package/dist/build-provenance.js +67 -0
- package/dist/build-provenance.js.map +1 -0
- package/dist/build-provenance.json +1 -0
- package/dist/cache-ledger.d.ts +95 -0
- package/dist/cache-ledger.js +276 -4
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-service.d.ts +5 -0
- package/dist/cache-service.js +16 -4
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.js +11 -3
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +51 -0
- package/dist/channel/adapters/telegram.js +235 -17
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +3 -3
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/types.d.ts +2 -0
- package/dist/claude-auth-status.d.ts +48 -0
- package/dist/claude-auth-status.js +149 -0
- package/dist/claude-auth-status.js.map +1 -0
- package/dist/cli.js +138 -37
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +21 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/cross-instance-notice.d.ts +10 -0
- package/dist/cross-instance-notice.js +67 -5
- package/dist/cross-instance-notice.js.map +1 -1
- package/dist/daemon.d.ts +70 -1
- package/dist/daemon.js +547 -25
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +8 -0
- package/dist/dashboard-permissions.js +16 -0
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +23 -1
- package/dist/delivery-consumed-watch.js +30 -3
- package/dist/delivery-consumed-watch.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +1 -1
- package/dist/delivery-reconciliation.js +1 -1
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/doctor.js +20 -9
- package/dist/doctor.js.map +1 -1
- package/dist/export-import.d.ts +7 -0
- package/dist/export-import.js +44 -10
- package/dist/export-import.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -0
- package/dist/fleet-manager.d.ts +362 -7
- package/dist/fleet-manager.js +1522 -91
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-windows-runtime.d.ts +8 -2
- package/dist/fleet-windows-runtime.js +93 -6
- package/dist/fleet-windows-runtime.js.map +1 -1
- package/dist/general-knowledge/skills/concepts/SKILL.md +425 -0
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +5 -2
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
- package/dist/general-knowledge/skills/fleet-health/SKILL.md +2 -2
- package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +3 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +41 -4
- package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +10 -10
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +31 -15
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
- package/dist/general-role.d.ts +1 -1
- package/dist/general-role.js +1 -0
- package/dist/general-role.js.map +1 -1
- package/dist/hub/admission.d.ts +28 -0
- package/dist/hub/admission.js +62 -0
- package/dist/hub/admission.js.map +1 -0
- package/dist/hub/attachments/limits.d.ts +20 -0
- package/dist/hub/attachments/limits.js +48 -0
- package/dist/hub/attachments/limits.js.map +1 -0
- package/dist/hub/attachments/store.d.ts +116 -0
- package/dist/hub/attachments/store.js +246 -0
- package/dist/hub/attachments/store.js.map +1 -0
- package/dist/hub/audit/index.d.ts +62 -0
- package/dist/hub/audit/index.js +344 -0
- package/dist/hub/audit/index.js.map +1 -0
- package/dist/hub/browser-certificate.d.ts +38 -0
- package/dist/hub/browser-certificate.js +247 -0
- package/dist/hub/browser-certificate.js.map +1 -0
- package/dist/hub/buttons-model.d.ts +9 -0
- package/dist/hub/buttons-model.js +42 -0
- package/dist/hub/buttons-model.js.map +1 -0
- package/dist/hub/buttons.d.ts +54 -0
- package/dist/hub/buttons.js +346 -0
- package/dist/hub/buttons.js.map +1 -0
- package/dist/hub/catalog.d.ts +74 -0
- package/dist/hub/catalog.js +195 -0
- package/dist/hub/catalog.js.map +1 -0
- package/dist/hub/client.d.ts +69 -0
- package/dist/hub/client.js +300 -0
- package/dist/hub/client.js.map +1 -0
- package/dist/hub/compose/member.d.ts +139 -0
- package/dist/hub/compose/member.js +450 -0
- package/dist/hub/compose/member.js.map +1 -0
- package/dist/hub/compose/server.d.ts +77 -0
- package/dist/hub/compose/server.js +349 -0
- package/dist/hub/compose/server.js.map +1 -0
- package/dist/hub/compose/views.d.ts +12 -0
- package/dist/hub/compose/views.js +4 -0
- package/dist/hub/compose/views.js.map +1 -0
- package/dist/hub/db.d.ts +56 -0
- package/dist/hub/db.js +188 -0
- package/dist/hub/db.js.map +1 -0
- package/dist/hub/directory/config.d.ts +39 -0
- package/dist/hub/directory/config.js +108 -0
- package/dist/hub/directory/config.js.map +1 -0
- package/dist/hub/directory/directory.d.ts +18 -0
- package/dist/hub/directory/directory.js +320 -0
- package/dist/hub/directory/directory.js.map +1 -0
- package/dist/hub/directory/index.d.ts +7 -0
- package/dist/hub/directory/index.js +4 -0
- package/dist/hub/directory/index.js.map +1 -0
- package/dist/hub/directory/profiles.d.ts +41 -0
- package/dist/hub/directory/profiles.js +90 -0
- package/dist/hub/directory/profiles.js.map +1 -0
- package/dist/hub/directory/types.d.ts +71 -0
- package/dist/hub/directory/types.js +14 -0
- package/dist/hub/directory/types.js.map +1 -0
- package/dist/hub/execution/cli-provider.d.ts +23 -0
- package/dist/hub/execution/cli-provider.js +341 -0
- package/dist/hub/execution/cli-provider.js.map +1 -0
- package/dist/hub/execution/index.d.ts +13 -0
- package/dist/hub/execution/index.js +8 -0
- package/dist/hub/execution/index.js.map +1 -0
- package/dist/hub/execution/model-broker.d.ts +24 -0
- package/dist/hub/execution/model-broker.js +208 -0
- package/dist/hub/execution/model-broker.js.map +1 -0
- package/dist/hub/execution/provider-setup.d.ts +11 -0
- package/dist/hub/execution/provider-setup.js +21 -0
- package/dist/hub/execution/provider-setup.js.map +1 -0
- package/dist/hub/execution/sandbox-runner.d.ts +1 -0
- package/dist/hub/execution/sandbox-runner.js +221 -0
- package/dist/hub/execution/sandbox-runner.js.map +1 -0
- package/dist/hub/execution/service.d.ts +136 -0
- package/dist/hub/execution/service.js +459 -0
- package/dist/hub/execution/service.js.map +1 -0
- package/dist/hub/execution/store.d.ts +61 -0
- package/dist/hub/execution/store.js +182 -0
- package/dist/hub/execution/store.js.map +1 -0
- package/dist/hub/execution/views.d.ts +20 -0
- package/dist/hub/execution/views.js +48 -0
- package/dist/hub/execution/views.js.map +1 -0
- package/dist/hub/http/compose.d.ts +20 -0
- package/dist/hub/http/compose.js +518 -0
- package/dist/hub/http/compose.js.map +1 -0
- package/dist/hub/http/core.d.ts +49 -0
- package/dist/hub/http/core.js +124 -0
- package/dist/hub/http/core.js.map +1 -0
- package/dist/hub/http/deps.d.ts +61 -0
- package/dist/hub/http/deps.js +2 -0
- package/dist/hub/http/deps.js.map +1 -0
- package/dist/hub/http/schema.d.ts +14 -0
- package/dist/hub/http/schema.js +80 -0
- package/dist/hub/http/schema.js.map +1 -0
- package/dist/hub/identity.d.ts +32 -0
- package/dist/hub/identity.js +80 -0
- package/dist/hub/identity.js.map +1 -0
- package/dist/hub/init/browser-certificate.d.ts +9 -0
- package/dist/hub/init/browser-certificate.js +78 -0
- package/dist/hub/init/browser-certificate.js.map +1 -0
- package/dist/hub/init/browser-tls.d.ts +18 -0
- package/dist/hub/init/browser-tls.js +62 -0
- package/dist/hub/init/browser-tls.js.map +1 -0
- package/dist/hub/init/cli.d.ts +3 -0
- package/dist/hub/init/cli.js +83 -0
- package/dist/hub/init/cli.js.map +1 -0
- package/dist/hub/init/directory-certificate.d.ts +24 -0
- package/dist/hub/init/directory-certificate.js +222 -0
- package/dist/hub/init/directory-certificate.js.map +1 -0
- package/dist/hub/init/existing-fleet.d.ts +6 -0
- package/dist/hub/init/existing-fleet.js +58 -0
- package/dist/hub/init/existing-fleet.js.map +1 -0
- package/dist/hub/init/handoff.d.ts +8 -0
- package/dist/hub/init/handoff.js +36 -0
- package/dist/hub/init/handoff.js.map +1 -0
- package/dist/hub/init/identity.d.ts +5 -0
- package/dist/hub/init/identity.js +24 -0
- package/dist/hub/init/identity.js.map +1 -0
- package/dist/hub/init/initializer.d.ts +24 -0
- package/dist/hub/init/initializer.js +385 -0
- package/dist/hub/init/initializer.js.map +1 -0
- package/dist/hub/init/inventory.d.ts +17 -0
- package/dist/hub/init/inventory.js +33 -0
- package/dist/hub/init/inventory.js.map +1 -0
- package/dist/hub/init/layout.d.ts +32 -0
- package/dist/hub/init/layout.js +53 -0
- package/dist/hub/init/layout.js.map +1 -0
- package/dist/hub/init/network.d.ts +18 -0
- package/dist/hub/init/network.js +104 -0
- package/dist/hub/init/network.js.map +1 -0
- package/dist/hub/init/plan-digest.d.ts +5 -0
- package/dist/hub/init/plan-digest.js +47 -0
- package/dist/hub/init/plan-digest.js.map +1 -0
- package/dist/hub/init/prompt.d.ts +26 -0
- package/dist/hub/init/prompt.js +110 -0
- package/dist/hub/init/prompt.js.map +1 -0
- package/dist/hub/init/secret-file.d.ts +1 -0
- package/dist/hub/init/secret-file.js +59 -0
- package/dist/hub/init/secret-file.js.map +1 -0
- package/dist/hub/init/text.d.ts +127 -0
- package/dist/hub/init/text.js +247 -0
- package/dist/hub/init/text.js.map +1 -0
- package/dist/hub/init/types.d.ts +114 -0
- package/dist/hub/init/types.js +9 -0
- package/dist/hub/init/types.js.map +1 -0
- package/dist/hub/init/wizard.d.ts +34 -0
- package/dist/hub/init/wizard.js +554 -0
- package/dist/hub/init/wizard.js.map +1 -0
- package/dist/hub/initialization.d.ts +23 -0
- package/dist/hub/initialization.js +28 -0
- package/dist/hub/initialization.js.map +1 -0
- package/dist/hub/member/agent-mode.d.ts +6 -0
- package/dist/hub/member/agent-mode.js +23 -0
- package/dist/hub/member/agent-mode.js.map +1 -0
- package/dist/hub/member/attachments.d.ts +29 -0
- package/dist/hub/member/attachments.js +107 -0
- package/dist/hub/member/attachments.js.map +1 -0
- package/dist/hub/member/exposure-api.d.ts +87 -0
- package/dist/hub/member/exposure-api.js +64 -0
- package/dist/hub/member/exposure-api.js.map +1 -0
- package/dist/hub/member/exposures.d.ts +123 -0
- package/dist/hub/member/exposures.js +282 -0
- package/dist/hub/member/exposures.js.map +1 -0
- package/dist/hub/member/pairing-api.d.ts +85 -0
- package/dist/hub/member/pairing-api.js +385 -0
- package/dist/hub/member/pairing-api.js.map +1 -0
- package/dist/hub/member/quota.d.ts +20 -0
- package/dist/hub/member/quota.js +98 -0
- package/dist/hub/member/quota.js.map +1 -0
- package/dist/hub/member-journal.d.ts +104 -0
- package/dist/hub/member-journal.js +336 -0
- package/dist/hub/member-journal.js.map +1 -0
- package/dist/hub/member-reconciliation.d.ts +14 -0
- package/dist/hub/member-reconciliation.js +97 -0
- package/dist/hub/member-reconciliation.js.map +1 -0
- package/dist/hub/mount.d.ts +39 -0
- package/dist/hub/mount.js +123 -0
- package/dist/hub/mount.js.map +1 -0
- package/dist/hub/pairing-client.d.ts +17 -0
- package/dist/hub/pairing-client.js +108 -0
- package/dist/hub/pairing-client.js.map +1 -0
- package/dist/hub/pairing.d.ts +65 -0
- package/dist/hub/pairing.js +211 -0
- package/dist/hub/pairing.js.map +1 -0
- package/dist/hub/policy.d.ts +63 -0
- package/dist/hub/policy.js +147 -0
- package/dist/hub/policy.js.map +1 -0
- package/dist/hub/preview.d.ts +32 -0
- package/dist/hub/preview.js +64 -0
- package/dist/hub/preview.js.map +1 -0
- package/dist/hub/private-files.d.ts +5 -0
- package/dist/hub/private-files.js +44 -0
- package/dist/hub/private-files.js.map +1 -0
- package/dist/hub/profile.d.ts +59 -0
- package/dist/hub/profile.js +73 -0
- package/dist/hub/profile.js.map +1 -0
- package/dist/hub/protocol.d.ts +779 -0
- package/dist/hub/protocol.js +93 -0
- package/dist/hub/protocol.js.map +1 -0
- package/dist/hub/quota.d.ts +24 -0
- package/dist/hub/quota.js +112 -0
- package/dist/hub/quota.js.map +1 -0
- package/dist/hub/representative.d.ts +141 -0
- package/dist/hub/representative.js +528 -0
- package/dist/hub/representative.js.map +1 -0
- package/dist/hub/retention.d.ts +17 -0
- package/dist/hub/retention.js +45 -0
- package/dist/hub/retention.js.map +1 -0
- package/dist/hub/rooms.d.ts +120 -0
- package/dist/hub/rooms.js +535 -0
- package/dist/hub/rooms.js.map +1 -0
- package/dist/hub/runtime.d.ts +106 -0
- package/dist/hub/runtime.js +298 -0
- package/dist/hub/runtime.js.map +1 -0
- package/dist/hub/server.d.ts +56 -0
- package/dist/hub/server.js +202 -0
- package/dist/hub/server.js.map +1 -0
- package/dist/hub/service-start.d.ts +17 -0
- package/dist/hub/service-start.js +109 -0
- package/dist/hub/service-start.js.map +1 -0
- package/dist/hub/sessions.d.ts +53 -0
- package/dist/hub/sessions.js +196 -0
- package/dist/hub/sessions.js.map +1 -0
- package/dist/hub/socket.d.ts +24 -0
- package/dist/hub/socket.js +79 -0
- package/dist/hub/socket.js.map +1 -0
- package/dist/hub/store.d.ts +77 -0
- package/dist/hub/store.js +88 -0
- package/dist/hub/store.js.map +1 -0
- package/dist/hub/tls.d.ts +31 -0
- package/dist/hub/tls.js +135 -0
- package/dist/hub/tls.js.map +1 -0
- package/dist/hub/types.d.ts +401 -0
- package/dist/hub/types.js +2 -0
- package/dist/hub/types.js.map +1 -0
- package/dist/hub/validation.d.ts +33 -0
- package/dist/hub/validation.js +136 -0
- package/dist/hub/validation.js.map +1 -0
- package/dist/hub/version-floor.d.ts +10 -0
- package/dist/hub/version-floor.js +45 -0
- package/dist/hub/version-floor.js.map +1 -0
- package/dist/hub-browser-certificate-policy.d.ts +31 -0
- package/dist/hub-browser-certificate-policy.js +25 -0
- package/dist/hub-browser-certificate-policy.js.map +1 -0
- package/dist/hub-membership-settings.d.ts +6 -0
- package/dist/hub-membership-settings.js +21 -0
- package/dist/hub-membership-settings.js.map +1 -0
- package/dist/hub-mode.d.ts +15 -0
- package/dist/hub-mode.js +17 -0
- package/dist/hub-mode.js.map +1 -0
- package/dist/hub-pairing-summary.d.ts +48 -0
- package/dist/hub-pairing-summary.js +36 -0
- package/dist/hub-pairing-summary.js.map +1 -0
- package/dist/hub-report-target.d.ts +32 -0
- package/dist/hub-report-target.js +33 -0
- package/dist/hub-report-target.js.map +1 -0
- package/dist/hub-retention-policy.d.ts +14 -0
- package/dist/hub-retention-policy.js +15 -0
- package/dist/hub-retention-policy.js.map +1 -0
- package/dist/instance-config-impact.js +3 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +17 -2
- package/dist/instance-lifecycle.js +58 -8
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instance-topic-delete.d.ts +77 -0
- package/dist/instance-topic-delete.js +123 -0
- package/dist/instance-topic-delete.js.map +1 -0
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +1 -1
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-engine-status.d.ts +11 -0
- package/dist/kiro-engine-status.js +6 -0
- package/dist/kiro-engine-status.js.map +1 -1
- package/dist/launchd-service-domain.d.ts +5 -0
- package/dist/launchd-service-domain.js +21 -0
- package/dist/launchd-service-domain.js.map +1 -0
- package/dist/locale.js +125 -3
- package/dist/locale.js.map +1 -1
- package/dist/log-service.d.ts +28 -0
- package/dist/log-service.js +29 -0
- package/dist/log-service.js.map +1 -1
- package/dist/log-steps.d.ts +4 -3
- package/dist/log-steps.js +32 -7
- package/dist/log-steps.js.map +1 -1
- package/dist/logger.d.ts +16 -2
- package/dist/logger.js +346 -66
- package/dist/logger.js.map +1 -1
- package/dist/login-flows.d.ts +15 -7
- package/dist/login-flows.js +29 -3
- package/dist/login-flows.js.map +1 -1
- package/dist/login-manager.js +25 -4
- package/dist/login-manager.js.map +1 -1
- package/dist/ls-rows.js +3 -4
- package/dist/ls-rows.js.map +1 -1
- package/dist/missed-offline.d.ts +25 -0
- package/dist/missed-offline.js +79 -0
- package/dist/missed-offline.js.map +1 -0
- package/dist/native-instance-api.d.ts +0 -1
- package/dist/native-instance-api.js +15 -3
- package/dist/native-instance-api.js.map +1 -1
- package/dist/native-instance-input.d.ts +3 -0
- package/dist/native-instance-input.js +6 -1
- package/dist/native-instance-input.js.map +1 -1
- package/dist/native-instance-registry.d.ts +6 -0
- package/dist/native-instance-registry.js +24 -0
- package/dist/native-instance-registry.js.map +1 -1
- package/dist/native-mcp.d.ts +3 -0
- package/dist/native-mcp.js +15 -2
- package/dist/native-mcp.js.map +1 -1
- package/dist/native-pane-lifecycle.d.ts +8 -0
- package/dist/native-pane-lifecycle.js +13 -4
- package/dist/native-pane-lifecycle.js.map +1 -1
- package/dist/native-pane-manager.js +17 -9
- package/dist/native-pane-manager.js.map +1 -1
- package/dist/needs-you-hub.d.ts +9 -1
- package/dist/needs-you-hub.js +46 -8
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +47 -2
- package/dist/needs-you.js +31 -3
- package/dist/needs-you.js.map +1 -1
- package/dist/office-share-page.js +3 -3
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share.d.ts +11 -0
- package/dist/office-share.js +14 -0
- package/dist/office-share.js.map +1 -1
- package/dist/office-talk.d.ts +26 -0
- package/dist/office-talk.js +50 -0
- package/dist/office-talk.js.map +1 -0
- package/dist/outbound-handlers.d.ts +14 -0
- package/dist/outbound-handlers.js +49 -6
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +33 -1
- package/dist/outbound-schemas.js +29 -16
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pane-quota-history.d.ts +9 -0
- package/dist/pane-quota-history.js +67 -0
- package/dist/pane-quota-history.js.map +1 -0
- package/dist/pause-marker.d.ts +1 -1
- package/dist/pause-marker.js +1 -1
- package/dist/pause-marker.js.map +1 -1
- package/dist/platform-general.d.ts +46 -0
- package/dist/platform-general.js +91 -0
- package/dist/platform-general.js.map +1 -0
- package/dist/public-web-gateway.js +7 -0
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +6 -0
- package/dist/public-web-link.js +9 -0
- package/dist/public-web-link.js.map +1 -1
- package/dist/queued-handoffs.d.ts +33 -0
- package/dist/queued-handoffs.js +75 -0
- package/dist/queued-handoffs.js.map +1 -0
- package/dist/quickstart.d.ts +13 -0
- package/dist/quickstart.js +81 -5
- package/dist/quickstart.js.map +1 -1
- package/dist/quota-notice.d.ts +7 -0
- package/dist/quota-notice.js +40 -0
- package/dist/quota-notice.js.map +1 -1
- package/dist/reply-buttons-controller.js +10 -6
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/reply-polls.d.ts +2 -2
- package/dist/reply-polls.js +3 -3
- package/dist/reply-polls.js.map +1 -1
- package/dist/runtime-api.d.ts +2 -0
- package/dist/runtime-api.js +106 -13
- package/dist/runtime-api.js.map +1 -1
- package/dist/runtime-build-info.d.ts +9 -0
- package/dist/runtime-build-info.js +59 -0
- package/dist/runtime-build-info.js.map +1 -0
- package/dist/runtime-bundle.d.ts +6 -1
- package/dist/runtime-bundle.js +17 -9
- package/dist/runtime-bundle.js.map +1 -1
- package/dist/runtime-cli.d.ts +13 -1
- package/dist/runtime-cli.js +173 -19
- package/dist/runtime-cli.js.map +1 -1
- package/dist/runtime-client-store.d.ts +27 -1
- package/dist/runtime-client-store.js +86 -6
- package/dist/runtime-client-store.js.map +1 -1
- package/dist/runtime-client.d.ts +74 -0
- package/dist/runtime-client.js +336 -26
- package/dist/runtime-client.js.map +1 -1
- package/dist/runtime-connection.d.ts +22 -0
- package/dist/runtime-connection.js +93 -0
- package/dist/runtime-connection.js.map +1 -0
- package/dist/runtime-coordinator.d.ts +16 -0
- package/dist/runtime-coordinator.js +287 -62
- package/dist/runtime-coordinator.js.map +1 -1
- package/dist/runtime-credential-profiles.d.ts +78 -0
- package/dist/runtime-credential-profiles.js +280 -0
- package/dist/runtime-credential-profiles.js.map +1 -0
- package/dist/runtime-install.d.ts +50 -0
- package/dist/runtime-install.js +186 -0
- package/dist/runtime-install.js.map +1 -0
- package/dist/runtime-pane-assets.d.ts +1 -1
- package/dist/runtime-pane-assets.js +1 -1
- package/dist/runtime-pane-assets.js.map +1 -1
- package/dist/runtime-pane-boot.d.ts +7 -0
- package/dist/runtime-pane-boot.js +23 -0
- package/dist/runtime-pane-boot.js.map +1 -1
- package/dist/runtime-pane-codex-index.d.ts +10 -1
- package/dist/runtime-pane-codex-index.js +131 -27
- package/dist/runtime-pane-codex-index.js.map +1 -1
- package/dist/runtime-pane-host.d.ts +19 -0
- package/dist/runtime-pane-host.js +50 -7
- package/dist/runtime-pane-host.js.map +1 -1
- package/dist/runtime-pane-link.d.ts +7 -0
- package/dist/runtime-pane-link.js +93 -2
- package/dist/runtime-pane-link.js.map +1 -1
- package/dist/runtime-pane-mcp-relay.d.ts +1 -0
- package/dist/runtime-pane-mcp-relay.js +10 -0
- package/dist/runtime-pane-mcp-relay.js.map +1 -1
- package/dist/runtime-pane-mcp.d.ts +4 -0
- package/dist/runtime-pane-mcp.js +6 -3
- package/dist/runtime-pane-mcp.js.map +1 -1
- package/dist/runtime-pane-native.d.ts +32 -2
- package/dist/runtime-pane-native.js +55 -6
- package/dist/runtime-pane-native.js.map +1 -1
- package/dist/runtime-pane-port.d.ts +5 -0
- package/dist/runtime-pane-port.js +17 -1
- package/dist/runtime-pane-port.js.map +1 -1
- package/dist/runtime-pane-process.d.ts +1 -1
- package/dist/runtime-pane-process.js +11 -2
- package/dist/runtime-pane-process.js.map +1 -1
- package/dist/runtime-pane-protocol.d.ts +11 -1
- package/dist/runtime-pane-protocol.js +27 -5
- package/dist/runtime-pane-protocol.js.map +1 -1
- package/dist/runtime-pane-quota-history.d.ts +6 -0
- package/dist/runtime-pane-quota-history.js +44 -0
- package/dist/runtime-pane-quota-history.js.map +1 -0
- package/dist/runtime-pane-service.d.ts +5 -0
- package/dist/runtime-pane-service.js +47 -12
- package/dist/runtime-pane-service.js.map +1 -1
- package/dist/runtime-pane-transcript.d.ts +5 -0
- package/dist/runtime-pane-transcript.js +66 -5
- package/dist/runtime-pane-transcript.js.map +1 -1
- package/dist/runtime-pane-worker.js +19 -6
- package/dist/runtime-pane-worker.js.map +1 -1
- package/dist/runtime-protocol.d.ts +30 -2
- package/dist/runtime-protocol.js +30 -0
- package/dist/runtime-protocol.js.map +1 -1
- package/dist/runtime-update-activity.d.ts +21 -0
- package/dist/runtime-update-activity.js +51 -0
- package/dist/runtime-update-activity.js.map +1 -0
- package/dist/runtime-update-artifact.d.ts +31 -0
- package/dist/runtime-update-artifact.js +252 -0
- package/dist/runtime-update-artifact.js.map +1 -0
- package/dist/runtime-update-install.d.ts +31 -0
- package/dist/runtime-update-install.js +205 -0
- package/dist/runtime-update-install.js.map +1 -0
- package/dist/runtime-update-journal.d.ts +44 -0
- package/dist/runtime-update-journal.js +121 -0
- package/dist/runtime-update-journal.js.map +1 -0
- package/dist/runtime-update-lock.d.ts +48 -0
- package/dist/runtime-update-lock.js +217 -0
- package/dist/runtime-update-lock.js.map +1 -0
- package/dist/runtime-update-owners.d.ts +29 -0
- package/dist/runtime-update-owners.js +240 -0
- package/dist/runtime-update-owners.js.map +1 -0
- package/dist/runtime-update-protocol.d.ts +15 -0
- package/dist/runtime-update-protocol.js +13 -0
- package/dist/runtime-update-protocol.js.map +1 -0
- package/dist/runtime-windows-bridge.d.ts +2 -1
- package/dist/runtime-windows-bridge.js +11 -1
- package/dist/runtime-windows-bridge.js.map +1 -1
- package/dist/scheduler/db.d.ts +2 -1
- package/dist/scheduler/db.js +23 -9
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/task-board-text.js +1 -1
- package/dist/scheduler/task-board-text.js.map +1 -1
- package/dist/scheduler/task-board.d.ts +13 -0
- package/dist/scheduler/task-board.js +28 -3
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/service-drain.d.ts +19 -0
- package/dist/service-drain.js +64 -0
- package/dist/service-drain.js.map +1 -0
- package/dist/service-installer.d.ts +7 -2
- package/dist/service-installer.js +13 -10
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-api.d.ts +20 -0
- package/dist/settings-api.js +414 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-baseline.d.ts +6 -0
- package/dist/settings-baseline.js +3 -1
- package/dist/settings-baseline.js.map +1 -1
- package/dist/settings-change.js +29 -6
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.d.ts +13 -0
- package/dist/settings-effect.js +98 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.d.ts +3 -0
- package/dist/settings-http-confirmation.js +28 -1
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/settings-instance-patch.js +27 -0
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-wizard.js +6 -2
- package/dist/setup-wizard.js.map +1 -1
- package/dist/task-board-tool.d.ts +13 -1
- package/dist/task-board-tool.js +104 -4
- package/dist/task-board-tool.js.map +1 -1
- package/dist/task-board-waker.d.ts +6 -0
- package/dist/task-board-waker.js +4 -0
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tmux-binary.d.ts +59 -0
- package/dist/tmux-binary.js +200 -0
- package/dist/tmux-binary.js.map +1 -0
- package/dist/tmux-control.js +4 -4
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-exec-helper.js +32 -1
- package/dist/tmux-exec-helper.js.map +1 -1
- package/dist/tmux-manager.d.ts +1 -1
- package/dist/tmux-manager.js +45 -36
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.js +4 -3
- package/dist/tmux-read.js.map +1 -1
- package/dist/tool-permissions.d.ts +5 -2
- package/dist/tool-permissions.js +6 -5
- package/dist/tool-permissions.js.map +1 -1
- package/dist/tool-progress.d.ts +2 -0
- package/dist/tool-progress.js +19 -3
- package/dist/tool-progress.js.map +1 -1
- package/dist/topic-commands.js +10 -5
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-monitor.d.ts +20 -0
- package/dist/transcript-monitor.js +47 -3
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/transcript-needles.d.ts +7 -0
- package/dist/transcript-needles.js +9 -1
- package/dist/transcript-needles.js.map +1 -1
- package/dist/transcript-records.d.ts +1 -1
- package/dist/transcript-records.js +2 -1
- package/dist/transcript-records.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/ui/account-identity.js +27 -0
- package/dist/ui/accounts-view.js +214 -0
- package/dist/ui/agent-runtime-settings.js +68 -0
- package/dist/ui/agent-runtime.js +20 -2
- package/dist/ui/backend-signin.js +39 -21
- package/dist/ui/chat-ambient.js +1 -1
- package/dist/ui/chat-md-strings.js +3 -0
- package/dist/ui/chat-render.js +3 -670
- package/dist/ui/chat-store.js +1 -1
- package/dist/ui/chat-strings.js +3 -333
- package/dist/ui/chat-thread.js +3 -919
- package/dist/ui/chat-time.js +3 -80
- package/dist/ui/chat-tour.js +1 -1
- package/dist/ui/credential-profile-select.js +54 -0
- package/dist/ui/fleet-office-dialogue.d.ts +30 -0
- package/dist/ui/fleet-office-dialogue.js +382 -0
- package/dist/ui/fleet-office-pack.d.ts +9 -0
- package/dist/ui/fleet-office-pack.js +76 -4
- package/dist/ui/fleet-office-skin.js +23 -5
- package/dist/ui/fleet-office-store.js +5 -0
- package/dist/ui/fleet-office.js +173 -6
- package/dist/ui/fleet-task-card.js +10 -6
- package/dist/ui/fleet-task-common.js +12 -2
- package/dist/ui/fleet-task-menu.js +188 -0
- package/dist/ui/fleet-task-stats.js +124 -0
- package/dist/ui/fleet-task-view.js +340 -0
- package/dist/ui/fleet-tasks.js +131 -43
- package/dist/ui/fleet-usage.js +90 -27
- package/dist/ui/html-attachment.js +3 -40
- package/dist/ui/hub-agent-copy.js +23 -0
- package/dist/ui/hub-button-actions.js +65 -0
- package/dist/ui/hub-chat-store.js +158 -0
- package/dist/ui/hub-chat-strings.js +77 -0
- package/dist/ui/hub-client.js +329 -0
- package/dist/ui/hub-owner-strings.js +51 -0
- package/dist/ui/hub-provider-guidance.js +31 -0
- package/dist/ui/hub-quota.js +85 -0
- package/dist/ui/hub-strings.js +162 -0
- package/dist/ui/hub-switcher.js +27 -0
- package/dist/ui/native-instance-settings.js +5 -8
- package/dist/ui/native-pane-recovery.js +1 -1
- package/dist/ui/office-share-page.js +4 -2
- package/dist/ui/panel-chat.js +36 -49
- package/dist/ui/panel-details.js +1 -1
- package/dist/ui/panel-fleet.js +82 -12
- package/dist/ui/panel-hub.js +619 -0
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +24 -8
- package/dist/ui/panel-runtimes.js +239 -45
- package/dist/ui/panel-settings.js +266 -192
- package/dist/ui/panel-windows-cli.js +88 -42
- package/dist/ui/preview-pages.js +1 -1
- package/dist/ui/preview-panel.js +92 -6
- package/dist/ui/preview-versions.js +1 -1
- package/dist/ui/preview.js +3 -476
- package/dist/ui/runtime-commands.d.ts +4 -0
- package/dist/ui/runtime-commands.js +59 -0
- package/dist/ui/search-dialog.js +2 -0
- package/dist/ui/settings-access-strings.js +42 -0
- package/dist/ui/settings-agent-filters.js +94 -0
- package/dist/ui/settings-appearance.js +122 -23
- package/dist/ui/settings-build-version.js +35 -0
- package/dist/ui/settings-codex-copy.js +19 -0
- package/dist/ui/settings-devices.js +253 -0
- package/dist/ui/settings-dialogs.js +33 -12
- package/dist/ui/settings-guests.js +25 -11
- package/dist/ui/settings-hub-browser-certificate.js +74 -0
- package/dist/ui/settings-hub-membership.js +72 -0
- package/dist/ui/settings-hub-retention.js +52 -0
- package/dist/ui/settings-hub.js +196 -0
- package/dist/ui/settings-layout.js +242 -0
- package/dist/ui/settings-model.js +24 -2
- package/dist/ui/settings-outside.js +104 -38
- package/dist/ui/settings-registry.js +9 -4
- package/dist/ui/settings-shared-strings.js +143 -0
- package/dist/ui/settings-shared.js +345 -0
- package/dist/ui/settings-shortcuts.js +65 -0
- package/dist/ui/settings-strings.js +89 -32
- package/dist/ui/settings-web-authority.js +17 -11
- package/dist/ui/shared/accounts.css +15 -0
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-needs.js +1 -1
- package/dist/ui/shared/app-route.js +6 -1
- package/dist/ui/shared/app-session.js +6 -2
- package/dist/ui/shared/app-shell.js +81 -15
- package/dist/ui/shared/app.css +1114 -13
- package/dist/ui/shared/app.js +12 -3
- package/dist/ui/shared/chat-composer.js +68 -0
- package/dist/ui/shared/chat-md-strings.js +9 -0
- package/dist/ui/shared/chat-render.js +682 -0
- package/dist/ui/shared/chat-strings.js +333 -0
- package/dist/ui/shared/chat-thread.js +969 -0
- package/dist/ui/shared/chat-time.js +80 -0
- package/dist/ui/shared/header-tools.js +3 -5
- package/dist/ui/shared/html-attachment.js +42 -0
- package/dist/ui/shared/hub-chat.css +85 -0
- package/dist/ui/shared/hub-owner.css +33 -0
- package/dist/ui/shared/hub-quota.css +8 -0
- package/dist/ui/shared/hub.css +71 -0
- package/dist/ui/shared/instance-nav.js +3 -2
- package/dist/ui/shared/machine-name.js +13 -0
- package/dist/ui/shared/page-head.js +8 -0
- package/dist/ui/shared/panel-view.js +77 -4
- package/dist/ui/shared/preview.js +476 -0
- package/dist/ui/shared/runtime-install.css +26 -0
- package/dist/ui/shared/settings-width.js +31 -0
- package/dist/ui/shared/side-rail.js +15 -0
- package/dist/ui/shared/signin.js +172 -0
- package/dist/ui/shared/task-board.css +95 -0
- package/dist/ui/shared/tokens.css +1 -0
- package/dist/ui/shared/ui-dialog.js +2 -2
- package/dist/ui/shared/ui-menu.js +3 -3
- package/dist/ui/shared/usage-dialog.js +18 -1
- package/dist/ui/shared/view-history.css +17 -0
- package/dist/ui/shared/view-history.js +438 -0
- package/dist/ui/shared/view-strings.js +16 -0
- package/dist/ui/shared/workspace.css +20 -0
- package/dist/ui/signin.html +21 -0
- package/dist/ui/windows-cli-catalog.js +41 -12
- package/dist/ui/workspace-panel.js +189 -0
- package/dist/ui/workspace-strings.js +35 -0
- package/dist/unattended-install.d.ts +11 -2
- package/dist/unattended-install.js +41 -6
- package/dist/unattended-install.js.map +1 -1
- package/dist/usage/capacity.d.ts +69 -0
- package/dist/usage/capacity.js +119 -0
- package/dist/usage/capacity.js.map +1 -0
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +3 -0
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/profile-timeline.d.ts +16 -0
- package/dist/usage/profile-timeline.js +58 -0
- package/dist/usage/profile-timeline.js.map +1 -0
- package/dist/usage/providers.js +2 -1
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/quota-history.d.ts +43 -0
- package/dist/usage/quota-history.js +168 -0
- package/dist/usage/quota-history.js.map +1 -0
- package/dist/usage/usage-api.d.ts +31 -0
- package/dist/usage/usage-api.js +80 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/usage-report.d.ts +25 -1
- package/dist/usage-report.js +55 -4
- package/dist/usage-report.js.map +1 -1
- package/dist/usage-rollup.d.ts +6 -1
- package/dist/usage-rollup.js +16 -4
- package/dist/usage-rollup.js.map +1 -1
- package/dist/view-api.d.ts +16 -0
- package/dist/view-api.js +105 -23
- package/dist/view-api.js.map +1 -1
- package/dist/view-history.d.ts +84 -0
- package/dist/view-history.js +116 -0
- package/dist/view-history.js.map +1 -0
- package/dist/web-api.d.ts +49 -2
- package/dist/web-api.js +279 -8
- package/dist/web-api.js.map +1 -1
- package/dist/web-backend-login.d.ts +23 -1
- package/dist/web-backend-login.js +11 -17
- package/dist/web-backend-login.js.map +1 -1
- package/dist/web-device-login.d.ts +153 -0
- package/dist/web-device-login.js +278 -0
- package/dist/web-device-login.js.map +1 -0
- package/dist/web-office-skins.d.ts +9 -0
- package/dist/web-office-skins.js +16 -1
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-session-authorization.d.ts +13 -2
- package/dist/web-session-authorization.js +10 -3
- package/dist/web-session-authorization.js.map +1 -1
- package/dist/web-session.d.ts +35 -0
- package/dist/web-session.js +7 -0
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-shell-routes.d.ts +6 -0
- package/dist/web-shell-routes.js +7 -0
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-terminal.d.ts +4 -30
- package/dist/web-terminal.js +9 -6
- package/dist/web-terminal.js.map +1 -1
- package/dist/windows-agents.d.ts +4 -1
- package/dist/windows-agents.js +14 -10
- package/dist/windows-agents.js.map +1 -1
- package/dist/windows-cli-api.d.ts +12 -1
- package/dist/windows-cli-api.js +29 -2
- package/dist/windows-cli-api.js.map +1 -1
- package/dist/windows-cli-providers.d.ts +0 -9
- package/dist/windows-cli-providers.js +4 -9
- package/dist/windows-cli-providers.js.map +1 -1
- package/dist/windows-cli-worker.d.ts +25 -0
- package/dist/windows-cli-worker.js +98 -7
- package/dist/windows-cli-worker.js.map +1 -1
- package/dist/windows-cli.d.ts +11 -0
- package/dist/windows-cli.js +17 -3
- package/dist/windows-cli.js.map +1 -1
- package/dist/yaml-shared-nodes.js +8 -3
- package/dist/yaml-shared-nodes.js.map +1 -1
- package/launcher/agend-install.cjs +8 -1
- package/launcher/launchd-session-type.cjs +14 -0
- package/launcher/postinstall.cjs +27 -2
- package/launcher/private-home.cjs +1 -1
- package/launcher/tmux-bundle.cjs +247 -0
- package/package.json +3 -2
- package/templates/launchd.plist.ejs +3 -1
- package/templates/runtime-install/install.ps1 +270 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// AgEnD Hub P1, slice 3 (docs/design/hub-ui-client.md): the Hub pages' own words, en and zh-TW, and their stylesheet.
|
|
2
|
+
// A lazy module of its own: loaded only with a Hub page or card, never while the Hub is off. It imports only names every
|
|
3
|
+
// shell has had since #1408 (register / t), so a tab opened before an upgrade loads it as fresh as the rest.
|
|
4
|
+
import { register, t } from "/assets/app-i18n.js";
|
|
5
|
+
|
|
6
|
+
register("hub", {
|
|
7
|
+
en: {
|
|
8
|
+
preview: "Preview: the Hub connection isn't available in this build yet, so nothing here leaves this page.",
|
|
9
|
+
// The member's switcher
|
|
10
|
+
myFleet: "My fleet", hub: "Hub", openHubTab: "Open {0} in a new tab", switcher: "Workspace",
|
|
11
|
+
// The Hub's own pages
|
|
12
|
+
askTitle: "Ask", askEmpty: "No agents you can ask yet", askHint: "When an owner shares an agent with you, it appears here with who allowed it.",
|
|
13
|
+
exposuresTitle: "My exposures", exposuresEmpty: "You don't share any agents yet",
|
|
14
|
+
exposuresHint: "Share an agent from your own fleet: Settings → Access & security → Connect to a Hub.",
|
|
15
|
+
adminTitle: "Administration",
|
|
16
|
+
// The Hub workspace (S3b): sign-in, Ask, My exposures, Administration
|
|
17
|
+
signedOutHub: "Not signed in", signOut: "Sign out", signInTitle: "Sign in to the Hub",
|
|
18
|
+
signInLead: "Use your organisation account. Your password goes to the directory only and is never kept.",
|
|
19
|
+
login: "Account", password: "Password", signIn: "Sign in",
|
|
20
|
+
errSignIn: "That account and password didn't work.", errDirectory: "The directory can't be reached right now. Try again later.",
|
|
21
|
+
errBusyHub: "Too many requests just now. Wait a moment and try again.", errConflictHub: "This changed meanwhile. It has been reloaded; check it and try again.",
|
|
22
|
+
errNotFound: "Not found, or not available to you.", errDenied: "You're not allowed to do that (or no longer).", errUnreachableHub: "The Hub can't be reached.",
|
|
23
|
+
askableTitle: "Agents you can ask", allowedBy: "Shared by {0} · until {1}", ask: "Ask", roomsTitle: "Your conversations", openRoom: "Open", back: "Back",
|
|
24
|
+
roomNote: "You're asking as yourself. The agent sees your Hub identity, not any authority over its owner's fleet.",
|
|
25
|
+
roomShared: "Everyone who asks this agent shares its one conversation, so it may remember what others asked. Don't send anything other askers shouldn't see.",
|
|
26
|
+
agentPolicy: "Shared as a representative agent: questions go into its ordinary conversation, with the tools its fleet's Settings allow.",
|
|
27
|
+
expiredText: "This text was removed under the Hub's retention policy.", roomClosed: "This conversation is closed: the access it used was withdrawn.",
|
|
28
|
+
question: "Question", questionPh: "Ask a question…", send: "Send",
|
|
29
|
+
stageQueued: "Waiting for the owner's fleet", stageDelivered: "Delivered", stageWorking: "Working on it", stageAnswered: "Answered",
|
|
30
|
+
stageNotAnswered: "Not answered", stageUncertain: "Outcome unknown; the owner has been told",
|
|
31
|
+
pairingsTitle: "Pairing requests for you", pairingsLead: "Confirm only if this fingerprint matches the one your fleet's Settings shows.",
|
|
32
|
+
confirmPairing: "Confirm", confirmPairingAsk: "Does your fleet show this fingerprint?\n{0}", confirmed: "Confirmed",
|
|
33
|
+
state_published: "Shared", state_withdrawn: "Withdrawn", state_frozen: "Frozen", revision: "revision {0}", until: "until {0}",
|
|
34
|
+
noGrants: "Nobody can ask it yet.", grantLogin: "Allow this account to ask", grantDays: "For", days: "{0} days", allow: "Allow",
|
|
35
|
+
freeze: "Stop all asking", freezeAsk: "Stop all asking {0}? Sharing it again needs a new approval from your fleet.",
|
|
36
|
+
revoke: "Revoke", revokeAsk: "Revoke {0}'s access? Their conversation closes.",
|
|
37
|
+
adminOnly: "Only the Hub administrator can see this", adminOnlyHint: "Paired fleets and pairing codes are managed here.",
|
|
38
|
+
pairTitle: "Pair a fleet", pairLead: "Create a one-time code for a person who has signed in to this Hub. It works once, for ten minutes.",
|
|
39
|
+
pairOwner: "Owner's account", pairCreate: "Create code", pairCode: "Give this code to {0}, for their fleet's Settings:",
|
|
40
|
+
pendingPairings: "Pairing requests", codeUnused: "Code not used yet", ownerConfirmed: "Owner confirmed", ownerWaiting: "Waiting for the owner's confirmation",
|
|
41
|
+
approved: "Approved", approve: "Approve", approveAsk: "Approve the fleet with this fingerprint?\n{0}",
|
|
42
|
+
fleetsTitle: "Paired fleets", fleetActive: "Active", fleetRevoked: "Revoked", revokeFleetAsk: "Revoke {0}'s fleet? It disconnects and everything it shares is withdrawn.",
|
|
43
|
+
noFleets: "No fleets are paired yet.",
|
|
44
|
+
// Settings → Connect to a Hub
|
|
45
|
+
title: "Connect to a Hub",
|
|
46
|
+
lead: "A Hub lets people in your organisation ask agents you choose to share. Your fleet stays yours: you decide which agents are shared and who may ask them.",
|
|
47
|
+
address: "Hub address", addressPh: "https://", addressHint: "The https:// address your Hub administrator gave you.", code: "One-time pairing code", connect: "Connect",
|
|
48
|
+
errAddress: "Enter the Hub's https:// address.", errCode: "Enter the pairing code exactly as it was given.",
|
|
49
|
+
errBusy: "This fleet is already connected or waiting for approval.", errUnreachable: "Could not reach the Hub at that address.",
|
|
50
|
+
errRefused: "The Hub refused this code.", errFailed: "That didn't work. Try again.",
|
|
51
|
+
pendingTitle: "Waiting for approval", pairingFp: "Pairing fingerprint",
|
|
52
|
+
pendingCompare: "Compare it with the fingerprint on the Hub's screen. Both must match before you confirm there.",
|
|
53
|
+
pendingSteps: "Still needed:", ownerStep: "your confirmation, from your own Hub sign-in", adminStep: "the Hub administrator's approval",
|
|
54
|
+
done: "done", waiting: "waiting", expires: "Expires {0}", cancel: "Cancel request", showFull: "Show the full fingerprint", hideFull: "Hide",
|
|
55
|
+
pairedTitle: "Connected to {0}", online: "Online", offline: "Offline: reconnecting", hubKeyFp: "Hub key fingerprint",
|
|
56
|
+
openHub: "Open the Hub", disconnect: "Disconnect",
|
|
57
|
+
disconnectAsk: "Disconnect from {0}? Every agent you share there is withdrawn.",
|
|
58
|
+
disconnectPending: "Disconnected here. The Hub hasn't confirmed it yet; it will be told when it can be reached.",
|
|
59
|
+
keyTitle: "The Hub's key changed",
|
|
60
|
+
keyLead: "Nothing connects until you pair again. If you didn't expect this, ask your Hub administrator before pairing again.",
|
|
61
|
+
keyApproved: "Approved key", keyOffered: "Key the Hub presents now", repair: "Pair again",
|
|
62
|
+
heldTitle: "On hold", holdClear: "Start over",
|
|
63
|
+
hold_unknown_outcome: "The last pairing step's result is unknown. Nothing runs until it is checked.",
|
|
64
|
+
hold_expired: "The pairing request expired.", hold_unsaved: "This fleet couldn't save its Hub settings. Nothing connects until they can be saved.",
|
|
65
|
+
hold_refused: "The Hub refused the pairing.", hold_revoked: "The Hub revoked this fleet's pairing.", hold_other: "Pairing is on hold.",
|
|
66
|
+
sharedTitle: "Shared agents",
|
|
67
|
+
sharedLead: "Every agent is private unless you share it. Only an agent that can run in a restricted, read-only mode can be shared.",
|
|
68
|
+
share: "Share {0}", notEnforceable: "Can't be shared yet: restricted mode isn't available for it.", frozen: "Frozen by the Hub",
|
|
69
|
+
policy: "Shares {0} · tools: {1}", noAgents: "This fleet has no agents yet.",
|
|
70
|
+
// S3c (S-55): the owner's picker and the confirmation it waits for.
|
|
71
|
+
pickView: "Data view", pickTools: "Tools", shareNow: "Share", pickCancel: "Cancel", pickNone: "Choose a data view and at least one tool.",
|
|
72
|
+
waitingConfirm: "Waiting for your confirmation", pendingSent: "Sent for confirmation: confirm it in General's chat or Settings to share it.",
|
|
73
|
+
errLimit: "At most 64 agents can be shared.", notAvailable: "Not available on this AgEnD version.",
|
|
74
|
+
hubStillNeeded: "Still needed on the Hub:", ownerStepHub: "Your confirmation: sign in to the Hub, open My exposures and confirm this fingerprint.",
|
|
75
|
+
adminStepHub: "The Hub administrator's approval of this fingerprint.", hubProgressHidden: "This page can't see their progress; it connects once both are done.",
|
|
76
|
+
localMatch: "It matches the Hub's screen", localConfirmed: "You confirmed this fingerprint here.",
|
|
77
|
+
hold_disconnected: "Disconnected here. The Hub still lists this fleet until its administrator revokes it.", startOver: "Start over",
|
|
78
|
+
errConflict: "This list changed in another tab. It has been reloaded; try again.", errUnsaved: "Couldn't save this change.",
|
|
79
|
+
errNotPaired: "Connect to a Hub first.", withdrawPending: "Withdrawn here. The Hub will be told when it can be reached.",
|
|
80
|
+
},
|
|
81
|
+
"zh-TW": {
|
|
82
|
+
preview: "預覽:這個版本還不能真正連線到 Hub,這裡的操作不會離開這個頁面。",
|
|
83
|
+
myFleet: "我的 Fleet", hub: "Hub", openHubTab: "在新分頁開啟 {0}", switcher: "工作區",
|
|
84
|
+
askTitle: "提問", askEmpty: "目前還沒有你可以提問的 Agent", askHint: "有人把 Agent 開放給你之後,它會出現在這裡,並註明是誰授權的。",
|
|
85
|
+
exposuresTitle: "我的公開 Agent", exposuresEmpty: "你還沒有公開任何 Agent",
|
|
86
|
+
exposuresHint: "請在自己的 Fleet 公開 Agent:設定 → 存取與安全 → 連線到 Hub。",
|
|
87
|
+
adminTitle: "管理",
|
|
88
|
+
signedOutHub: "尚未登入", signOut: "登出", signInTitle: "登入 Hub",
|
|
89
|
+
signInLead: "請使用組織帳號登入。密碼只送給目錄服務驗證,不會被保存。",
|
|
90
|
+
login: "帳號", password: "密碼", signIn: "登入",
|
|
91
|
+
errSignIn: "帳號或密碼不正確。", errDirectory: "目前無法連到目錄服務,請稍後再試。",
|
|
92
|
+
errBusyHub: "請求太頻繁,請稍候再試。", errConflictHub: "這個項目剛剛有變更,已重新載入,請確認後再試一次。",
|
|
93
|
+
errNotFound: "找不到,或你無法使用。", errDenied: "你沒有權限(或權限已被撤回)。", errUnreachableHub: "無法連到 Hub。",
|
|
94
|
+
askableTitle: "你可以提問的 Agent", allowedBy: "由 {0} 開放 · 到 {1}", ask: "提問", roomsTitle: "你的對話", openRoom: "開啟", back: "返回",
|
|
95
|
+
roomNote: "你是以自己的身分提問。Agent 只看到你的 Hub 身分,不代表擁有者 Fleet 的任何授權。",
|
|
96
|
+
roomShared: "所有向這個 Agent 提問的人共用它的同一段對話,它可能記得其他人問過的內容。請勿傳送不該讓其他提問者看到的內容。",
|
|
97
|
+
agentPolicy: "以代表 Agent 公開:提問會送到它平常的對話,使用它所在 Fleet 設定允許的工具。",
|
|
98
|
+
expiredText: "這段文字已依 Hub 的保存期限刪除。", roomClosed: "這段對話已關閉:它使用的權限已被撤回。",
|
|
99
|
+
question: "問題", questionPh: "輸入問題…", send: "送出",
|
|
100
|
+
stageQueued: "等待擁有者的 Fleet", stageDelivered: "已送達", stageWorking: "處理中", stageAnswered: "已回答",
|
|
101
|
+
stageNotAnswered: "未回答", stageUncertain: "結果不明,已通知擁有者",
|
|
102
|
+
pairingsTitle: "給你的配對請求", pairingsLead: "請確認這個指紋和你 Fleet 設定頁顯示的相同,再按確認。",
|
|
103
|
+
confirmPairing: "確認", confirmPairingAsk: "你的 Fleet 顯示的是這個指紋嗎?\n{0}", confirmed: "已確認",
|
|
104
|
+
state_published: "公開中", state_withdrawn: "已撤回", state_frozen: "已凍結", revision: "第 {0} 版", until: "到 {0}",
|
|
105
|
+
noGrants: "目前沒有人可以提問。", grantLogin: "允許這個帳號提問", grantDays: "期間", days: "{0} 天", allow: "允許",
|
|
106
|
+
freeze: "停止所有提問", freezeAsk: "要停止所有人向 {0} 提問嗎?之後要再公開,需要你的 Fleet 重新核准。",
|
|
107
|
+
revoke: "撤銷", revokeAsk: "要撤銷 {0} 的權限嗎?對方的對話會關閉。",
|
|
108
|
+
adminOnly: "只有 Hub 管理者可以查看", adminOnlyHint: "已配對的 Fleet 與配對碼在這裡管理。",
|
|
109
|
+
pairTitle: "配對 Fleet", pairLead: "為已登入過這個 Hub 的人建立一次性配對碼,只能使用一次,十分鐘內有效。",
|
|
110
|
+
pairOwner: "擁有者帳號", pairCreate: "建立配對碼", pairCode: "請把這組配對碼交給 {0},在對方 Fleet 的設定頁輸入:",
|
|
111
|
+
pendingPairings: "配對請求", codeUnused: "配對碼尚未使用", ownerConfirmed: "擁有者已確認", ownerWaiting: "等待擁有者確認",
|
|
112
|
+
approved: "已核准", approve: "核准", approveAsk: "要核准這個指紋的 Fleet 嗎?\n{0}",
|
|
113
|
+
fleetsTitle: "已配對的 Fleet", fleetActive: "使用中", fleetRevoked: "已撤銷", revokeFleetAsk: "要撤銷 {0} 的 Fleet 嗎?它會中斷連線,公開的內容都會撤回。",
|
|
114
|
+
noFleets: "還沒有配對的 Fleet。",
|
|
115
|
+
title: "連線到 Hub",
|
|
116
|
+
lead: "Hub 讓組織裡的人可以向你選擇公開的 Agent 提問。你的 Fleet 仍然屬於你:要公開哪些 Agent、誰可以提問,都由你決定。",
|
|
117
|
+
address: "Hub 位址", addressPh: "https://", addressHint: "Hub 管理者給你的 https:// 位址。", code: "一次性配對碼", connect: "連線",
|
|
118
|
+
errAddress: "請輸入 Hub 的 https:// 位址。", errCode: "請完整輸入配對碼。",
|
|
119
|
+
errBusy: "這個 Fleet 已經連線,或正在等待核准。", errUnreachable: "無法連到這個位址的 Hub。",
|
|
120
|
+
errRefused: "Hub 拒絕了這個配對碼。", errFailed: "沒有成功,請再試一次。",
|
|
121
|
+
pendingTitle: "等待核准", pairingFp: "配對指紋",
|
|
122
|
+
pendingCompare: "請和 Hub 畫面上的指紋比對,兩者相同後再到 Hub 確認。",
|
|
123
|
+
pendingSteps: "還需要:", ownerStep: "你用自己的 Hub 帳號確認", adminStep: "Hub 管理者核准",
|
|
124
|
+
done: "已完成", waiting: "等待中", expires: "{0} 到期", cancel: "取消請求", showFull: "顯示完整指紋", hideFull: "收合",
|
|
125
|
+
pairedTitle: "已連線到 {0}", online: "在線", offline: "離線,正在重新連線", hubKeyFp: "Hub 金鑰指紋",
|
|
126
|
+
openHub: "開啟 Hub", disconnect: "中斷連線",
|
|
127
|
+
disconnectAsk: "要中斷與 {0} 的連線嗎?你在那裡公開的 Agent 都會撤回。",
|
|
128
|
+
disconnectPending: "已在這裡中斷。Hub 尚未確認,連得上時會再通知它。",
|
|
129
|
+
keyTitle: "Hub 的金鑰已變更",
|
|
130
|
+
keyLead: "重新配對前不會連線。若你沒有預期這個變更,請先詢問 Hub 管理者,再重新配對。",
|
|
131
|
+
keyApproved: "已核准的金鑰", keyOffered: "Hub 目前提供的金鑰", repair: "重新配對",
|
|
132
|
+
heldTitle: "暫停中", holdClear: "重新開始",
|
|
133
|
+
hold_unknown_outcome: "最後一個配對步驟的結果不明,確認之前不會執行任何工作。",
|
|
134
|
+
hold_expired: "配對請求已過期。", hold_unsaved: "這個 Fleet 無法儲存 Hub 設定,可以儲存之前不會連線。",
|
|
135
|
+
hold_refused: "Hub 拒絕了這次配對。", hold_revoked: "Hub 已撤銷這個 Fleet 的配對。", hold_other: "配對已暫停。",
|
|
136
|
+
sharedTitle: "公開的 Agent",
|
|
137
|
+
sharedLead: "每個 Agent 預設都不公開。只有能在受限、唯讀模式下執行的 Agent 才能公開。",
|
|
138
|
+
share: "公開 {0}", notEnforceable: "暫時無法公開:這個 Agent 還不能使用受限模式。", frozen: "已被 Hub 凍結",
|
|
139
|
+
policy: "公開 {0} · 工具:{1}", noAgents: "這個 Fleet 還沒有 Agent。",
|
|
140
|
+
pickView: "資料檢視", pickTools: "工具", shareNow: "公開", pickCancel: "取消", pickNone: "請選擇一個資料檢視和至少一個工具。",
|
|
141
|
+
waitingConfirm: "等待你的確認", pendingSent: "已送出確認:請在 General 的聊天或設定中確認,才會公開。",
|
|
142
|
+
errLimit: "最多只能公開 64 個 Agent。", notAvailable: "這個 AgEnD 版本無法使用此功能。",
|
|
143
|
+
hubStillNeeded: "還需要在 Hub 完成:", ownerStepHub: "你的確認:登入 Hub,在「我的公開 Agent」確認這個指紋。",
|
|
144
|
+
adminStepHub: "Hub 管理者核准這個指紋。", hubProgressHidden: "這個頁面看不到 Hub 那邊的進度,兩項都完成後就會連線。",
|
|
145
|
+
localMatch: "和 Hub 畫面上的一致", localConfirmed: "你已在這裡確認這個指紋。",
|
|
146
|
+
hold_disconnected: "已在這裡中斷連線。Hub 管理者撤銷之前,Hub 上仍會列出這個 Fleet。", startOver: "重新開始",
|
|
147
|
+
errConflict: "這份清單在其他分頁有變更,已重新載入,請再試一次。", errUnsaved: "無法儲存這個變更。",
|
|
148
|
+
errNotPaired: "請先連線到 Hub。", withdrawPending: "已在這裡撤回,連得上 Hub 時會再通知它。",
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
/** hub.* words: hw("pairedTitle", name). */
|
|
152
|
+
export const hw = (key, ...values) => t(`hub.${key}`, ...values);
|
|
153
|
+
|
|
154
|
+
/** The Hub pages' own stylesheet, linked once (a tab opened before an upgrade has an app.css without these rules). */
|
|
155
|
+
export function linkHubCss(doc = typeof document !== "undefined" ? document : null) {
|
|
156
|
+
try {
|
|
157
|
+
if (!doc || !doc.head || doc.querySelector('link[data-hub-css="1"]')) return;
|
|
158
|
+
const link = doc.createElement("link");
|
|
159
|
+
link.setAttribute("rel", "stylesheet"); link.setAttribute("href", "/assets/hub.css"); link.setAttribute("data-hub-css", "1");
|
|
160
|
+
doc.head.appendChild(link);
|
|
161
|
+
} catch { /* the pages still work without it */ }
|
|
162
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// AgEnD Hub P1, slice 3 (docs/design/hub.md §1 "Web entry"): a member fleet's "My fleet ↔ Hub" switcher, under the
|
|
2
|
+
// brand. Loaded only on a member page (the page's mark); shown only once this fleet is paired, and then it opens the
|
|
3
|
+
// Hub's own approved web origin in a new tab — never a token or identity in the URL, never a sign-in proxied here, never
|
|
4
|
+
// an origin offered after a key change.
|
|
5
|
+
import { html, useEffect, useState } from "/assets/app-html.js";
|
|
6
|
+
import { Icon } from "/assets/ui-icons.js";
|
|
7
|
+
import { hubClient, safeWebOrigin } from "./hub-client.js";
|
|
8
|
+
import { hw, linkHubCss } from "./hub-strings.js";
|
|
9
|
+
|
|
10
|
+
export function HubSwitcher() {
|
|
11
|
+
const [pairing, setPairing] = useState(null);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
linkHubCss();
|
|
14
|
+
const client = hubClient();
|
|
15
|
+
let live = true;
|
|
16
|
+
client.pairing().then((p) => { if (live) setPairing(p); }, () => {});
|
|
17
|
+
const off = client.subscribe((p) => { if (live) setPairing(p); });
|
|
18
|
+
return () => { live = false; off(); };
|
|
19
|
+
}, []);
|
|
20
|
+
const origin = safeWebOrigin(pairing);
|
|
21
|
+
if (!origin) return null;
|
|
22
|
+
const name = pairing.hub.name || hw("hub");
|
|
23
|
+
return html`<div class="hub-switch" role="group" aria-label=${hw("switcher")} data-trust="navigation">
|
|
24
|
+
<span class="hub-switch-item is-current" aria-current="true">${hw("myFleet")}</span>
|
|
25
|
+
<a class="hub-switch-item" href=${origin} target="_blank" rel="noopener noreferrer" title=${hw("openHubTab", name)}>${name}<${Icon} name="external" size=${13} /></a>
|
|
26
|
+
</div>`;
|
|
27
|
+
}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
// Windows uses the same staged instance settings flow, with its runtime's supported fields.
|
|
2
2
|
import { html, useState } from "/assets/app-html.js";
|
|
3
|
-
import { t
|
|
3
|
+
import { t } from "/assets/app-i18n.js";
|
|
4
4
|
import { Dialog } from "/assets/ui-dialog.js";
|
|
5
5
|
import { ChipList, ModelSelect } from "./settings-dialogs.js";
|
|
6
|
-
import { CliProductMark, cliLabel } from "./cli-picker.js";
|
|
7
6
|
import { useWindowsCliCatalog } from "./windows-cli-catalog.js";
|
|
8
7
|
import { useRuntimeCatalog, instanceMachineId } from "./runtime-catalog.js";
|
|
9
8
|
import { NativeAgendToolsHint, tr } from "./agent-runtime.js";
|
|
10
|
-
|
|
11
|
-
"zh-TW": { fixed:"Runtime 與 CLI 隨此對話保留。", workspace:"此 Agent 的對話會沿用這個工作區。" },
|
|
12
|
-
en: { fixed:"This conversation keeps its runtime and CLI.", workspace:"This agent's conversation keeps this workspace." },
|
|
13
|
-
});
|
|
9
|
+
import {AgentRuntimeSettings} from "./agent-runtime-settings.js";
|
|
14
10
|
const tn = key => t(`settings.${key}`);
|
|
15
11
|
export function NativeInstanceSettings({ name, inst, ctx, onClose }) {
|
|
16
12
|
const machineId = instanceMachineId(inst);
|
|
@@ -19,6 +15,7 @@ export function NativeInstanceSettings({ name, inst, ctx, onClose }) {
|
|
|
19
15
|
const native = (machineId ? machine?.inventory : catalog.data)?.clis?.find(cli => cli.id === inst.backend);
|
|
20
16
|
const [form,setForm] = useState(() => ({display_name:inst.display_name || name,description:inst.description || "",model:inst.model || "",systemPrompt:inst.systemPrompt || "",native_sandbox:inst.native_sandbox || "read-only",tags:Array.isArray(inst.tags) ? [...inst.tags] : []}));
|
|
21
17
|
const set = key => value => setForm(current => ({...current,[key]:value}));
|
|
18
|
+
const dirty=Object.entries(form).some(([key,value])=>JSON.stringify(typeof value==="string"?value.trim():value)!==JSON.stringify(key==="display_name"?inst.display_name||name:key==="native_sandbox"?inst.native_sandbox||"read-only":key==="tags"?inst.tags||[]:inst[key]||""));
|
|
22
19
|
const ready = !!form.display_name.trim() && !(form.native_sandbox === "read-only" && native?.readOnlySupport === false);
|
|
23
20
|
const stage = () => {
|
|
24
21
|
if (!ready) return;
|
|
@@ -31,8 +28,8 @@ export function NativeInstanceSettings({ name, inst, ctx, onClose }) {
|
|
|
31
28
|
if (Object.keys(patch).length) ctx.stageAgent(name,inst,patch);
|
|
32
29
|
onClose();
|
|
33
30
|
};
|
|
34
|
-
return html`<${Dialog} title=${ctx.shortName(name,inst)} onClose=${onClose} wide=${true} actions=${html`<button type="button" class="btn" onClick=${onClose}>${tn("cancel")}</button><button type="button" class="btn btn-primary" disabled=${!ready} onClick=${stage}>${tn("modalDone")}</button>`}>
|
|
35
|
-
<div class="form native-instance-settings"
|
|
31
|
+
return html`<${Dialog} title=${ctx.shortName(name,inst)} onClose=${onClose} wide=${true} drawer=${true} actions=${html`<button type="button" class="btn" onClick=${onClose}>${tn("cancel")}</button><button type="button" class="btn btn-primary" disabled=${!ready} onClick=${stage}>${tn("modalDone")}</button>`}>
|
|
32
|
+
<div class="form native-instance-settings"><${AgentRuntimeSettings} name=${name} inst=${{...inst,machine_name:machine?.name||inst.machine_name,machine_status:machine?.status||inst.machine_status,machine_missing:!!machineId&&!!machines.data&&machines.data.enabled!==false&&!machine}} disabled=${dirty||ctx.staged?.size>0} onChanged=${()=>{ctx.reload();onClose();}}/>
|
|
36
33
|
<label class="field"><span>${tn("displayName")}</span><input value=${form.display_name} maxLength=${64} onInput=${event => set("display_name")(event.target.value)} /></label>
|
|
37
34
|
<label class="field"><span>${tn("description")}</span><input value=${form.description} maxLength=${512} onInput=${event => set("description")(event.target.value)} /></label>
|
|
38
35
|
<div class="field"><label for="native-instance-model">${tn("model")}</label><${ModelSelect} id="native-instance-model" value=${form.model} onChange=${set("model")} backend=${inst.backend} instance=${name} runtime="windows" machineId=${machineId} inherit=${tr("model")} /></div>
|
|
@@ -4,7 +4,7 @@ import { t } from "/assets/app-i18n.js";
|
|
|
4
4
|
import { guestPage } from "/assets/app-store.js";
|
|
5
5
|
import { Dialog } from "/assets/ui-dialog.js";
|
|
6
6
|
import { toast } from "/assets/ui-toast.js";
|
|
7
|
-
import "
|
|
7
|
+
import "/assets/chat-strings.js";
|
|
8
8
|
export function NativePaneRecovery({ name, inst, lease }) {
|
|
9
9
|
const [dialog, setDialog] = useState(false), [checked, setChecked] = useState(false), [busy, setBusy] = useState(false);
|
|
10
10
|
const confirmation = useRef(null), inFlight = useRef(false), recovery = inst.native_recovery;
|
|
@@ -127,7 +127,9 @@ export function SharePage({ base, timers = globalThis, pollMs = POLL_MS }) {
|
|
|
127
127
|
if (stopped || !lease.current()) return;
|
|
128
128
|
appStore.set((s) => ({ ...s, ...appFromState(d) }));
|
|
129
129
|
if (d.traffic && traffic.load(d.traffic)) setItems(traffic.items());
|
|
130
|
-
|
|
130
|
+
// #2861: the dialogue box's news (when someone talked to a person here — never what was said), as read.
|
|
131
|
+
setState({ phase: "live", org: d.org, office: typeof d.office === "string" ? d.office : null, ends: typeof d.ends === "number" ? d.ends : null,
|
|
132
|
+
talk: d.talk && typeof d.talk === "object" ? d.talk : null });
|
|
131
133
|
} catch { if (!stopped) setState((s) => (s.phase === "live" ? s : { phase: "offline" })); }
|
|
132
134
|
};
|
|
133
135
|
void read();
|
|
@@ -149,7 +151,7 @@ export function SharePage({ base, timers = globalThis, pollMs = POLL_MS }) {
|
|
|
149
151
|
</header>
|
|
150
152
|
${state.phase === "offline" ? html`<p class="note share-note" role="status">${to("offline")}</p>` : null}
|
|
151
153
|
${view ? html`<div class="share-stage"><${Office} view=${view} traffic=${items} lease=${lease} assetUrl=${(p) => shareUrl(base, p) || p}
|
|
152
|
-
assetImage=${(url) => shareImage(url, { fetch: (...a) => timers.fetch(...a), timers })} opening=${state.office === "all" ? ALL_ID : state.office || undefined} /></div>`
|
|
154
|
+
assetImage=${(url) => shareImage(url, { fetch: (...a) => timers.fetch(...a), timers })} opening=${state.office === "all" ? ALL_ID : state.office || undefined} talk=${state.talk || null} /></div>`
|
|
153
155
|
: html`<p class="muted share-loading" role="status">${to("loading")}</p>`}
|
|
154
156
|
</main>`;
|
|
155
157
|
}
|
package/dist/ui/panel-chat.js
CHANGED
|
@@ -9,11 +9,12 @@ import { GeneralLocation } from "./general-location.js";
|
|
|
9
9
|
// The instance's own actions (details, start, stop, restart, delete) are in the header's ⋯ menu, and only the ones
|
|
10
10
|
// that apply to its state are offered (#1408 rough edges 4 and 7).
|
|
11
11
|
import { html, useEffect, useLayoutEffect, useRef, useState } from "/assets/app-html.js";
|
|
12
|
-
import { lang, t } from "/assets/app-i18n.js";
|
|
12
|
+
import { lang, register, t } from "/assets/app-i18n.js";
|
|
13
13
|
import { appStore, createStore, guestPage, guestTrusted, useStore } from "/assets/app-store.js";
|
|
14
14
|
import { ComposerAuth } from "/assets/web-authorize.js";
|
|
15
15
|
import { useLease } from "/assets/app-ctx.js";
|
|
16
16
|
import { modelText, namesOf, namesStore, navStore as instanceNavStore, supportsInstanceFeature } from "/assets/instance-nav.js";
|
|
17
|
+
import { machineName } from "/assets/machine-name.js";
|
|
17
18
|
import { PanelHeader, onPanelKey, setTitle, statusClass, statusLabel, openDrawer, requestNewInstance } from "/assets/app-shell.js";
|
|
18
19
|
import { detailsPath, textLinkSegments, sectionPath } from "/assets/app-route.js";
|
|
19
20
|
import { InstanceSwitch } from "/assets/instance-switch.js";
|
|
@@ -25,6 +26,16 @@ import { Empty, Skeleton } from "/assets/ui-states.js";
|
|
|
25
26
|
import { Icon } from "/assets/ui-icons.js";
|
|
26
27
|
import { recordEdit } from "/assets/text-undo.js";
|
|
27
28
|
import { toast } from "/assets/ui-toast.js";
|
|
29
|
+
// cc3ce4fe: registered here, not in the shared chat strings, so a newer panel never shows a bare key on an older page.
|
|
30
|
+
register("nativecli", {
|
|
31
|
+
en: { unverified:"Not yet verified", unverifiedHint:"{0} {1}: AgEnD has not tested this version in Windows panes yet. It still runs; any screen AgEnD does not recognise stops and waits for you in Needs you." },
|
|
32
|
+
"zh-TW": { unverified:"尚未驗證", unverifiedHint:"{0} {1}:AgEnD 還沒在 Windows 面板中測試過這個版本。它仍然可以執行;遇到 AgEnD 認不得的畫面時,會停下來在「需要你」等你處理。" },
|
|
33
|
+
});
|
|
34
|
+
function nativeCliTag(inst) {
|
|
35
|
+
if (inst.native_cli_verification !== "unverified") return null;
|
|
36
|
+
const cli = inst.backend === "codex" ? "Codex" : inst.backend === "claude-code" ? "Claude Code" : inst.backend;
|
|
37
|
+
return html`<span class="tag native-cli-unverified" title=${t("nativecli.unverifiedHint", cli, inst.native_cli_version || "")}>${t("nativecli.unverified")}</span>`;
|
|
38
|
+
}
|
|
28
39
|
import { confirmDialog } from "/assets/ui-confirm.js";
|
|
29
40
|
import { savePref } from "/assets/app-prefs.js";
|
|
30
41
|
import { applyTheme, clearAmbient, resolvedMode, themeFor, themeImageUrl, themeMenuItems, themesStore } from "/assets/app-themes.js";
|
|
@@ -69,16 +80,17 @@ function CardMenu({ card }) {
|
|
|
69
80
|
];
|
|
70
81
|
return html`<${Menu} items=${items} label=${t("card.menu")} icon="idcard" cls="chat-card-menu" active=${prefs.open} />`;
|
|
71
82
|
}
|
|
72
|
-
import "
|
|
83
|
+
import "/assets/chat-strings.js";
|
|
73
84
|
import { confirmedWrite, selfConfirmed } from "./settings-confirm.js";
|
|
74
85
|
import { createChatStore } from "./chat-store.js";
|
|
75
|
-
import { createThread, msgKey } from "
|
|
86
|
+
import { createThread, msgKey } from "/assets/chat-thread.js";
|
|
87
|
+
import { ComposerInput, WorkBarView, touchScreen } from "/assets/chat-composer.js";
|
|
76
88
|
import { installMessageActions } from "./chat-msg-actions.js";
|
|
77
89
|
import { createEmojiIndex } from "./chat-emojis.js";
|
|
78
90
|
import { pollPublicPreview } from "./preview-status.js";
|
|
79
91
|
import { createMentionIndex } from "./chat-mentions.js";
|
|
80
92
|
import { setPanelFeedback } from "./preview-panel-actions.js";
|
|
81
|
-
import { PreviewPanel, claimPanel, openPanel, panelClaims, panelStore, panelVersion, shownKey } from "./preview-panel.js";
|
|
93
|
+
import { PreviewPanel, claimPanel, openMarkdown, openPanel, openWorkspace, panelClaims, panelStore, panelVersion, shownKey } from "./preview-panel.js";
|
|
82
94
|
import { needsArgument, paletteFor, parseCommandLine } from "./chat-commands.js";
|
|
83
95
|
import { installTour, refreshTourSpot } from "./chat-tour.js";
|
|
84
96
|
import { LightboxHost, openLightbox } from "./image-lightbox.js";
|
|
@@ -204,7 +216,6 @@ const headerName = ({ primary, secondary }) => (secondary ? html`<span title=${s
|
|
|
204
216
|
/** #2478: who the composer writes to — the display name, else the instance's name (a long id made the box two lines). */
|
|
205
217
|
const composerLabel = (inst, name) => (inst && typeof inst.display_name === "string" && inst.display_name.trim()) || name;
|
|
206
218
|
/** #2478: a touch screen (a coarse pointer) — Return is a new line there and only the Send button sends. Asked each time. */
|
|
207
|
-
const touchScreen = () => typeof matchMedia === "function" && matchMedia("(pointer: coarse)").matches;
|
|
208
219
|
|
|
209
220
|
export function ChatPanel({ route, navKey }) {
|
|
210
221
|
const lease = useLease(navKey);
|
|
@@ -338,6 +349,10 @@ function ChatView({ name, inst, lease, navKey, exec, awaiting }) {
|
|
|
338
349
|
running && supportsInstanceFeature(inst,"lifecycle") ? { key: "restart", label: t("chat.restart"), icon: "restart", onSelect: () => action("restart") } : null,
|
|
339
350
|
running && supportsInstanceFeature(inst,"lifecycle") ? { key: "stop", label: t("chat.stopInstance"), icon: "stop", onSelect: () => action("stop") } : null,
|
|
340
351
|
// #1958: its identity colour and where it shows (the public link too, as profile edits).
|
|
352
|
+
// #3153 P1: the folder it works in, read-only — this computer's admin only (never over the public link), and not an
|
|
353
|
+
// agent on another machine (the server also refuses General and coordinators: their folder is the fleet's own).
|
|
354
|
+
document.body.dataset.publicLink === "1" || inst.runtime === "windows" || inst.machine_id || inst.general_topic === true ? null
|
|
355
|
+
: { key: "workspace", label: t("chat.wsOpen"), icon: "file", onSelect: () => openWorkspace({ key: `ws:${name}`, instance: name }) },
|
|
341
356
|
colorMenuItem(name, inst),
|
|
342
357
|
// #1629: a person's control over this agent's theme — not over the public link (it only views themes).
|
|
343
358
|
...themeMenuItems(name),
|
|
@@ -354,7 +369,7 @@ function ChatView({ name, inst, lease, navKey, exec, awaiting }) {
|
|
|
354
369
|
const pick = (command) => store.runCommand(name, command, "", { alive: () => lease.current() });
|
|
355
370
|
const sub = html`<span class="status"><span class=${`dot ${cls}`} aria-hidden="true"></span>${statusLabel(inst, exec, awaiting)}</span>
|
|
356
371
|
${inst.runtime === "windows" ? html`<span class="tag">Windows</span>` : null}
|
|
357
|
-
${inst.machine_id ? html`<span class="tag runtime-machine-tag" title=${t("chat.machineName",inst.
|
|
372
|
+
${nativeCliTag(inst)}${inst.machine_id ? html`<span class="tag runtime-machine-tag" title=${t("chat.machineName",machineName(inst.machine_id,inst.machine_name))}>${machineName(inst.machine_id,inst.machine_name)}</span>${inst.machine_status !== "online" ? html`<span class="tag runtime-machine-offline">${t(inst.machine_status === "revoked" ? "chat.machineRevoked" : "chat.machineOffline")}</span>` : null}` : null}
|
|
358
373
|
${inst.model ? html`<button type="button" class="hd-chip" title=${t("chat.chipModel", modelText(inst))} aria-label=${t("chat.chipModel", modelText(inst))} onClick=${() => supportsInstanceFeature(inst,"commands") ? pick("model") : navigate(sectionPath("agents"))}>${modelText(inst)}</button>` : null}
|
|
359
374
|
${inst.effort && supportsInstanceFeature(inst,"effort") ? html`<button type="button" class="hd-chip" title=${t("chat.chipEffort", inst.effort)} aria-label=${t("chat.chipEffort", inst.effort)} onClick=${() => pick("effort")}>${inst.effort}</button>` : null}`;
|
|
360
375
|
return html`<div class=${`panel p-chat${wrap ? " wrap-code" : ""}`} data-width=${wide ? "full" : undefined} ref=${view}>
|
|
@@ -459,7 +474,8 @@ function threadEntry(name, doc) {
|
|
|
459
474
|
replyButtonBusy: (id) => store.state.rbBusy.has(id),
|
|
460
475
|
pollMine: (id) => store.state.pollMine[id], // #1823: this device's own vote
|
|
461
476
|
serverNow: () => Date.now() + store.state.clockSkew, // #1823: the deadline is the server's
|
|
462
|
-
panel: { shown: shownKey, open: (spec, o) => openPanel(spec, o), version: panelVersion, claim: claimPanel, claims: panelClaims
|
|
477
|
+
panel: { shown: shownKey, open: (spec, o) => openPanel(spec, o), version: panelVersion, claim: claimPanel, claims: panelClaims, // #1481, #1704
|
|
478
|
+
openMarkdown: (spec) => openMarkdown(spec) }, // M-2448: a Markdown file in the side panel
|
|
463
479
|
openImage: openLightbox, // an image, full size, in the page
|
|
464
480
|
emojis: (id) => !!emojiIndex && emojiIndex.known(id), // #1630: the fleet's server emoji
|
|
465
481
|
mentions: (kind, id) => (mentionIndex ? mentionIndex.name(kind, id) : null), // #1682: mention names
|
|
@@ -653,9 +669,8 @@ function WorkBar({ name, lease, exec, awaiting, workingLabel }) {
|
|
|
653
669
|
const label = kind === "working" && workingLabel ? workingLabel
|
|
654
670
|
: t(kind === "stuck" ? "chat.stuck" : kind === "stopping" ? "chat.stopping" : kind === "awaiting" ? "chat.awaiting" : "chat.working", name);
|
|
655
671
|
const since = s.workingSince[name];
|
|
656
|
-
return html
|
|
657
|
-
|
|
658
|
-
: html`<span class="elapsed" title=${t("chat.elapsedTitle")} aria-hidden="true">${since == null ? "" : R().formatElapsed(performance.now() - since)}</span>`}</div>`;
|
|
672
|
+
return html`<${WorkBarView} kind=${kind} label=${label} note=${awaiting || t("chat.approxNote")} noteTitle=${t("chat.approxNote")}
|
|
673
|
+
elapsed=${kind === "awaiting" || since == null ? "" : R().formatElapsed(performance.now() - since)} elapsedTitle=${t("chat.elapsedTitle")} />`;
|
|
659
674
|
}
|
|
660
675
|
|
|
661
676
|
/** #2272: the reply bar's quote — the first ~80 characters, or what it had instead of text. */
|
|
@@ -666,17 +681,12 @@ function replySnippet(r) {
|
|
|
666
681
|
|
|
667
682
|
function Composer({ name, inst, label = name, lease, busy }) {
|
|
668
683
|
const s = store.state;
|
|
669
|
-
const input = useRef(null)
|
|
684
|
+
const input = useRef(null);
|
|
670
685
|
const [, tick] = useState(0);
|
|
671
686
|
const [sel, setSel] = useState(0);
|
|
672
687
|
const [closedFor, setClosedFor] = useState(null); // the draft the palette was closed on (Esc); it opens again on change
|
|
673
|
-
// An IME composing
|
|
674
|
-
// here touches it — no draft update, no re-render, no auto-grow (each one moved the box, and iOS redrew the candidate
|
|
675
|
-
// bar on every keystroke: the user's flicker). What it holds is taken once, at compositionend.
|
|
676
|
-
const composing = useRef(false);
|
|
688
|
+
// An IME composing: the box is the IME's until compositionend (ComposerInput, /assets/chat-composer.js).
|
|
677
689
|
const value = s.drafts[name] || "";
|
|
678
|
-
// A render while composing (another part of the chat changed) gives the box what it holds, so it never writes it.
|
|
679
|
-
const boxValue = composing.current && input.current ? input.current.value : value;
|
|
680
690
|
const files = s.pendingFiles[name] || [];
|
|
681
691
|
const reply = s.replies[name]; // #2272: the message this one will reply to
|
|
682
692
|
const content = !!value.trim() || files.length > 0;
|
|
@@ -690,13 +700,6 @@ function Composer({ name, inst, label = name, lease, busy }) {
|
|
|
690
700
|
const sendingBlocked = machineUnavailable || inst?.native_blocked || inst?.native_busy || (busy && !supportsInstanceFeature(inst,"send_while_busy"));
|
|
691
701
|
const palette = !commandsSupported || files.length || closedFor === value || (guest && !guestAllowed.length) ? null : paletteFor(value, guestAllowed || undefined);
|
|
692
702
|
const pick = palette && palette.length ? palette[Math.min(sel, palette.length - 1)] : null;
|
|
693
|
-
// Grow with the text, up to a limit: set through the CSSOM, never a style attribute (#1300). Empty, it is one line
|
|
694
|
-
// (#2478 — a long name's placeholder made the box two lines tall).
|
|
695
|
-
useLayoutEffect(() => {
|
|
696
|
-
const el = input.current; if (!el || composing.current) return;
|
|
697
|
-
el.style.height = "auto";
|
|
698
|
-
if (value) el.style.height = `${Math.min(el.scrollHeight, 240)}px`;
|
|
699
|
-
}, [value]);
|
|
700
703
|
useEffect(() => { if (input.current) input.current.focus(); }, [name]);
|
|
701
704
|
useEffect(() => { refreshTourSpot(); });
|
|
702
705
|
const setValue = (v) => { store.setDraft(name, v); setSel(0); tick(n => n + 1); };
|
|
@@ -739,11 +742,6 @@ function Composer({ name, inst, label = name, lease, busy }) {
|
|
|
739
742
|
if (reply && e.key === "Escape" && !e.isComposing) { e.preventDefault(); store.clearReply(name); return; } // #2272
|
|
740
743
|
if (R().composerKey(e, { touch: touchScreen() }) === "send") { e.preventDefault(); submit(); }
|
|
741
744
|
};
|
|
742
|
-
const onInput = (e) => { if (composing.current || e.isComposing) return; setValue(e.target.value); };
|
|
743
|
-
const onCompositionStart = () => { composing.current = true; };
|
|
744
|
-
// The composed text is the draft now (some engines send no input after it); a blur ends one that never ended.
|
|
745
|
-
// Lower-case props below: an element has no oncomposition… property, so Preact would listen for "CompositionStart".
|
|
746
|
-
const onCompositionEnd = (e) => { if (!composing.current) return; composing.current = false; setValue(e.target.value); };
|
|
747
745
|
// Files in a paste are attached; a very long text paste goes as a text file — only once it is really attached.
|
|
748
746
|
const onPaste = (e) => {
|
|
749
747
|
const list = e.clipboardData && e.clipboardData.files;
|
|
@@ -753,7 +751,7 @@ function Composer({ name, inst, label = name, lease, busy }) {
|
|
|
753
751
|
};
|
|
754
752
|
const optId = (c) => `cmd-${c.name}`;
|
|
755
753
|
return html`<div class="composer-box">
|
|
756
|
-
${machineUnavailable ? html`<p class="note runtime-machine-unavailable" role="status">${t(inst.machine_status === "revoked" ? "chat.machineRevokedHint" : "chat.machineUnavailable",inst.
|
|
754
|
+
${machineUnavailable ? html`<p class="note runtime-machine-unavailable" role="status">${t(inst.machine_status === "revoked" ? "chat.machineRevokedHint" : "chat.machineUnavailable",machineName(inst.machine_id,inst.machine_name))}</p>` : null}
|
|
757
755
|
${inst?.native_busy && !busy && !inst?.native_blocked ? html`<p class="note" role="status">${t("chat.nativeBusy")}</p>` : null}
|
|
758
756
|
${palette ? html`<ul data-trust="palette" class="cmd-palette" id="cmdPalette" role="listbox" aria-label=${t("chat.cmdCommands")}>
|
|
759
757
|
${palette.length ? palette.map((c) => html`<li key=${c.name} id=${optId(c)} role="option" aria-selected=${c === pick ? "true" : "false"}
|
|
@@ -767,25 +765,12 @@ function Composer({ name, inst, label = name, lease, busy }) {
|
|
|
767
765
|
<button type="button" class="icon-btn reply-cancel" title=${t("chat.replyCancel")} aria-label=${t("chat.replyCancel")} onClick=${() => { store.clearReply(name); input.current?.focus(); }}><${Icon} name="close" size=${14} /></button>
|
|
768
766
|
</div>` : null}
|
|
769
767
|
${files.length ? html`<div class="pending-files">${files.map((f, i) => html`<${FileChip} key=${`${f.name}-${i}`} f=${f} i=${i} name=${name} />`)}</div>` : null}
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
placeholder is one space: :placeholder-shown hides the drawn one (app.css) the moment the box holds text, an
|
|
777
|
-
IME's composing text included, with no change to the page. */ ""}
|
|
778
|
-
<span class="composer-field"><textarea id="msgIn" ref=${input} rows="1" value=${boxValue} aria-label=${t("chat.composerPlaceholder", label)}
|
|
779
|
-
enterkeyhint=${touchScreen() ? "enter" : undefined} autocomplete="off" aria-controls=${palette ? "cmdPalette" : undefined} aria-expanded=${palette ? "true" : "false"}
|
|
780
|
-
aria-activedescendant=${pick ? optId(pick) : undefined} onInput=${onInput} onKeyDown=${onKeyDown} onPaste=${onPaste}
|
|
781
|
-
oncompositionstart=${onCompositionStart} oncompositionend=${onCompositionEnd} onBlur=${onCompositionEnd}
|
|
782
|
-
placeholder=" "></textarea><span class="composer-ph" aria-hidden="true">${t("chat.composerPlaceholder", label)}</span></span>
|
|
783
|
-
<button id="stopBtn" type="button" class="btn btn-stop" hidden=${!busy} title=${t("chat.stopReplyTitle")}
|
|
784
|
-
disabled=${!!s.cancelling[name]} onClick=${() => store.cancelReply(name)}><${Icon} name="stop" size=${14} /><span class="stop-label">${t("chat.stopReply")}</span></button>
|
|
785
|
-
<button id="sendBtn" type="button" class="btn btn-primary btn-send" hidden=${busy && !content} disabled=${!content || sendingBlocked}
|
|
786
|
-
onMouseDown=${(e) => e.preventDefault()}
|
|
787
|
-
aria-label=${t("chat.send")} title=${t("chat.send")} onClick=${submit}><${Icon} name="send" size=${16} /><span class="send-label">${t("chat.send")}</span></button>
|
|
788
|
-
</div></div>`;
|
|
768
|
+
<${ComposerInput} inputRef=${input} value=${value} placeholder=${t("chat.composerPlaceholder", label)} onValue=${setValue}
|
|
769
|
+
onKeyDown=${onKeyDown} onPaste=${onPaste} controls=${palette ? "cmdPalette" : undefined} expanded=${!!palette} activeDescendant=${pick ? optId(pick) : undefined}
|
|
770
|
+
attach=${attachmentsSupported ? { title: t("chat.attachTitle"), onFiles: (list) => store.addFiles(name, list) } : null}
|
|
771
|
+
stop=${{ hidden: !busy, disabled: !!s.cancelling[name], title: t("chat.stopReplyTitle"), label: t("chat.stopReply"), onClick: () => store.cancelReply(name) }}
|
|
772
|
+
send=${{ hidden: busy && !content, disabled: !content || sendingBlocked, label: t("chat.send"), onClick: submit }} />
|
|
773
|
+
</div>`;
|
|
789
774
|
}
|
|
790
775
|
|
|
791
776
|
function FileChip({ f, i, name }) {
|
|
@@ -828,6 +813,8 @@ function DeleteDialog({ name, inst, onClose }) {
|
|
|
828
813
|
} catch (err) { r = { error: err && err.message ? err.message : t("chat.disconnected") }; }
|
|
829
814
|
if (r && r.error) { toast(r.error, false); if (!handedOver && lease.current()) setBusy(false); return; }
|
|
830
815
|
toast(t("chat.instanceDeleted", name));
|
|
816
|
+
// The agent's own topic went too, or stayed with the reason (the server's own words: no new string here).
|
|
817
|
+
if (r.topic_note) toast(r.topic_note, r.topic_deleted !== false);
|
|
831
818
|
if (handedOver || !lease.current()) return;
|
|
832
819
|
setBusy(false);
|
|
833
820
|
onClose();
|
package/dist/ui/panel-details.js
CHANGED
|
@@ -24,7 +24,7 @@ import { IdentityCard, useCard } from "/assets/identity-card.js";
|
|
|
24
24
|
import { AgentWidget, instanceBinds, widgetFor } from "/assets/agent-widget.js";
|
|
25
25
|
import { Empty, ErrorState, Skeleton } from "/assets/ui-states.js";
|
|
26
26
|
import { toast } from "/assets/ui-toast.js";
|
|
27
|
-
import "
|
|
27
|
+
import "/assets/chat-strings.js";
|
|
28
28
|
import { api } from "./settings-confirm.js";
|
|
29
29
|
import { InstanceBoardWork } from "./fleet-task-work.js";
|
|
30
30
|
import { requestAgentSettings } from "./settings-request.js";
|