@songsid/agend 2.3.0-beta.2 → 2.3.0-beta.21
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/README.md +7 -1
- package/README.zh-TW.md +7 -1
- package/dist/agent-cli-instructions.md +9 -2
- package/dist/agent-cli.js +63 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +4 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.d.ts +4 -1
- package/dist/agent-file-read.js +189 -16
- package/dist/agent-file-read.js.map +1 -1
- package/dist/agent-whats-new.d.ts +11 -0
- package/dist/agent-whats-new.js +29 -5
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.d.ts +30 -1
- package/dist/auth-api.js +45 -13
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/authority-state.d.ts +38 -0
- package/dist/authority/authority-state.js +114 -0
- package/dist/authority/authority-state.js.map +1 -0
- package/dist/authority/session-authorizations.d.ts +43 -0
- package/dist/authority/session-authorizations.js +102 -0
- package/dist/authority/session-authorizations.js.map +1 -0
- package/dist/authority/web-authority.d.ts +120 -0
- package/dist/authority/web-authority.js +157 -0
- package/dist/authority/web-authority.js.map +1 -0
- package/dist/backend/claude-code.d.ts +2 -2
- package/dist/backend/claude-code.js +18 -8
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-metadata.d.ts +8 -0
- package/dist/backend/codex-metadata.js +74 -17
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex.js +15 -2
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +2 -0
- package/dist/backend/credential-profile.js +2 -0
- package/dist/backend/credential-profile.js.map +1 -1
- package/dist/backend/types.d.ts +6 -0
- package/dist/backend/types.js +15 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-availability.d.ts +120 -0
- package/dist/backend-availability.js +396 -0
- package/dist/backend-availability.js.map +1 -0
- package/dist/backend-command.d.ts +23 -3
- package/dist/backend-command.js +25 -4
- package/dist/backend-command.js.map +1 -1
- package/dist/bug-report-cli.d.ts +30 -0
- package/dist/bug-report-cli.js +138 -0
- package/dist/bug-report-cli.js.map +1 -0
- package/dist/bug-report.d.ts +47 -0
- package/dist/bug-report.js +136 -0
- package/dist/bug-report.js.map +1 -0
- package/dist/bundled-skills.d.ts +14 -0
- package/dist/bundled-skills.js +29 -0
- package/dist/bundled-skills.js.map +1 -0
- package/dist/cache-ledger.d.ts +16 -3
- package/dist/cache-ledger.js +33 -13
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-service.d.ts +55 -3
- package/dist/cache-service.js +152 -16
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord-client-retirement.d.ts +5 -0
- package/dist/channel/adapters/discord-client-retirement.js +57 -0
- package/dist/channel/adapters/discord-client-retirement.js.map +1 -0
- package/dist/channel/adapters/discord.d.ts +9 -0
- package/dist/channel/adapters/discord.js +49 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/mcp-tools.js +22 -11
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/types.d.ts +6 -0
- package/dist/classic-channel-manager.d.ts +10 -5
- package/dist/classic-channel-manager.js +12 -9
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +224 -111
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +6 -0
- package/dist/config-validator.js +129 -3
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +13 -1
- package/dist/config.js +14 -5
- package/dist/config.js.map +1 -1
- package/dist/cross-instance-notice.d.ts +7 -0
- package/dist/cross-instance-notice.js +10 -0
- package/dist/cross-instance-notice.js.map +1 -1
- package/dist/daemon.d.ts +24 -1
- package/dist/daemon.js +151 -19
- package/dist/daemon.js.map +1 -1
- package/dist/decision-list.d.ts +25 -0
- package/dist/decision-list.js +30 -0
- package/dist/decision-list.js.map +1 -0
- package/dist/delivery-outbox.d.ts +10 -0
- package/dist/delivery-outbox.js +17 -1
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/diagnostic-redaction.d.ts +10 -0
- package/dist/diagnostic-redaction.js +167 -0
- package/dist/diagnostic-redaction.js.map +1 -0
- package/dist/fleet-context.d.ts +10 -0
- package/dist/fleet-manager.d.ts +505 -15
- package/dist/fleet-manager.js +1870 -204
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-process-handlers.d.ts +18 -0
- package/dist/fleet-process-handlers.js +69 -0
- package/dist/fleet-process-handlers.js.map +1 -0
- package/dist/fleet-traffic.d.ts +74 -0
- package/dist/fleet-traffic.js +196 -0
- package/dist/fleet-traffic.js.map +1 -0
- package/dist/general-knowledge/skills/bug-report/SKILL.md +31 -0
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +17 -6
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +6 -1
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +2 -0
- package/dist/general-knowledge/skills/multi-channel/SKILL.md +3 -2
- package/dist/general-knowledge/skills/persona-emoji/SKILL.md +1 -1
- package/dist/general-knowledge/skills/scheduling/SKILL.md +4 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +190 -47
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +545 -0
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
- package/dist/human-delivery-receipts.d.ts +24 -1
- package/dist/human-delivery-receipts.js +64 -11
- package/dist/human-delivery-receipts.js.map +1 -1
- package/dist/instance-config-impact.js +7 -1
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +10 -1
- package/dist/instance-lifecycle.js +79 -18
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instance-names.d.ts +4 -0
- package/dist/instance-names.js +12 -0
- package/dist/instance-names.js.map +1 -0
- package/dist/instructions.d.ts +12 -1
- package/dist/instructions.js +13 -2
- package/dist/instructions.js.map +1 -1
- package/dist/locale.js +173 -12
- package/dist/locale.js.map +1 -1
- package/dist/log-steps.d.ts +1 -0
- package/dist/log-steps.js +15 -0
- package/dist/log-steps.js.map +1 -1
- package/dist/login-controller.d.ts +45 -0
- package/dist/login-controller.js +101 -5
- package/dist/login-controller.js.map +1 -1
- package/dist/ls-attach-resolve.d.ts +96 -0
- package/dist/ls-attach-resolve.js +180 -0
- package/dist/ls-attach-resolve.js.map +1 -0
- package/dist/ls-rows.d.ts +12 -0
- package/dist/ls-rows.js +82 -3
- package/dist/ls-rows.js.map +1 -1
- package/dist/memory-hogs.d.ts +27 -0
- package/dist/memory-hogs.js +124 -0
- package/dist/memory-hogs.js.map +1 -0
- package/dist/needs-you.d.ts +10 -0
- package/dist/needs-you.js +2 -1
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +11 -0
- package/dist/outbound-handlers.js +139 -11
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +200 -4
- package/dist/outbound-schemas.js +124 -11
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +17 -4
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +9 -0
- package/dist/public-web-link.js +8 -0
- package/dist/public-web-link.js.map +1 -1
- package/dist/quickstart-api.d.ts +19 -1
- package/dist/quickstart-api.js +94 -4
- package/dist/quickstart-api.js.map +1 -1
- package/dist/reply-buttons-controller.d.ts +4 -0
- package/dist/reply-buttons-controller.js +2 -2
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/restart-progress.d.ts +80 -1
- package/dist/restart-progress.js +306 -21
- package/dist/restart-progress.js.map +1 -1
- package/dist/rollout-index.d.ts +5 -0
- package/dist/rollout-index.js +26 -5
- package/dist/rollout-index.js.map +1 -1
- package/dist/scheduler/db.d.ts +40 -13
- package/dist/scheduler/db.js +123 -89
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/task-board-text.d.ts +26 -0
- package/dist/scheduler/task-board-text.js +135 -0
- package/dist/scheduler/task-board-text.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +650 -0
- package/dist/scheduler/task-board.js +1938 -0
- package/dist/scheduler/task-board.js.map +1 -0
- package/dist/scheduler/types.d.ts +6 -1
- package/dist/search/search-docs.d.ts +58 -0
- package/dist/search/search-docs.js +63 -0
- package/dist/search/search-docs.js.map +1 -0
- package/dist/search/search-index.d.ts +141 -0
- package/dist/search/search-index.js +440 -0
- package/dist/search/search-index.js.map +1 -0
- package/dist/search/search-store.d.ts +122 -0
- package/dist/search/search-store.js +236 -0
- package/dist/search/search-store.js.map +1 -0
- package/dist/search/search-worker.d.ts +1 -0
- package/dist/search/search-worker.js +163 -0
- package/dist/search/search-worker.js.map +1 -0
- package/dist/service-installer.js +12 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-api.d.ts +23 -0
- package/dist/settings-api.js +164 -3
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +104 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-confirmation.d.ts +3 -1
- package/dist/settings-confirmation.js +2 -0
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.js +34 -3
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.d.ts +11 -0
- package/dist/settings-http-confirmation.js +10 -0
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +23 -7
- package/dist/setup-form.js.map +1 -1
- package/dist/spawn-gate.d.ts +1 -0
- package/dist/spawn-gate.js +13 -3
- package/dist/spawn-gate.js.map +1 -1
- package/dist/task-board-tool.d.ts +25 -0
- package/dist/task-board-tool.js +154 -0
- package/dist/task-board-tool.js.map +1 -0
- package/dist/task-board-waker.d.ts +44 -0
- package/dist/task-board-waker.js +128 -0
- package/dist/task-board-waker.js.map +1 -0
- package/dist/tmux-exec-helper.d.ts +94 -0
- package/dist/tmux-exec-helper.js +407 -0
- package/dist/tmux-exec-helper.js.map +1 -0
- package/dist/tmux-manager.d.ts +5 -0
- package/dist/tmux-manager.js +42 -11
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-permissions.d.ts +0 -7
- package/dist/tool-permissions.js +44 -5
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +17 -1
- package/dist/topic-commands.js +45 -19
- package/dist/topic-commands.js.map +1 -1
- package/dist/tunnel/cloudflared.js +37 -2
- package/dist/tunnel/cloudflared.js.map +1 -1
- package/dist/tunnel/types.d.ts +3 -1
- package/dist/tunnel/types.js.map +1 -1
- package/dist/types.d.ts +63 -1
- package/dist/ui/app-effects.js +90 -32
- package/dist/ui/backend-signin.js +297 -0
- package/dist/ui/chat-ambient.js +307 -0
- package/dist/ui/chat-effect-posters.js +8 -8
- package/dist/ui/chat-effects.js +110 -15
- package/dist/ui/chat-msg-actions.js +176 -0
- package/dist/ui/chat-render.js +21 -3
- package/dist/ui/chat-store.js +64 -12
- package/dist/ui/chat-strings.js +85 -8
- package/dist/ui/chat-thread.js +204 -21
- package/dist/ui/effect-trial-controller.js +13 -8
- package/dist/ui/effect-trial-panel.js +19 -16
- package/dist/ui/effects-waker.js +70 -0
- package/dist/ui/fleet-canvas-layout.js +117 -0
- package/dist/ui/fleet-canvas.js +555 -0
- package/dist/ui/fleet-org.js +27 -12
- package/dist/ui/fleet-route-scene.js +207 -0
- package/dist/ui/fleet-route-worker.js +21 -0
- package/dist/ui/fleet-route.js +88 -0
- package/dist/ui/fleet-task-card.js +436 -0
- package/dist/ui/fleet-task-common.js +448 -0
- package/dist/ui/fleet-tasks.js +535 -0
- package/dist/ui/fleet-traffic.js +359 -0
- package/dist/ui/fleet-usage.js +435 -0
- package/dist/ui/panel-chat.js +264 -66
- package/dist/ui/panel-details.js +2 -1
- package/dist/ui/panel-fleet.js +65 -83
- package/dist/ui/panel-needs.js +4 -2
- package/dist/ui/panel-settings.js +56 -11
- package/dist/ui/preview.js +3 -2
- package/dist/ui/search-dialog.js +349 -0
- package/dist/ui/settings-appearance.js +44 -19
- package/dist/ui/settings-apply.js +3 -3
- package/dist/ui/settings-catalog.js +92 -0
- package/dist/ui/settings-confirm.js +7 -2
- package/dist/ui/settings-dialogs.js +40 -12
- package/dist/ui/settings-effects.js +4 -3
- package/dist/ui/settings-guests.js +117 -0
- package/dist/ui/settings-learn.js +25 -0
- package/dist/ui/settings-model.js +15 -6
- package/dist/ui/settings-mods.js +23 -9
- package/dist/ui/settings-owner-effects.js +15 -13
- package/dist/ui/settings-strings.js +122 -42
- package/dist/ui/settings-web-authority.js +91 -0
- package/dist/ui/shared/agend-auth.js +1 -1
- package/dist/ui/shared/app-i18n.js +11 -2
- package/dist/ui/shared/app-prefs.js +17 -4
- package/dist/ui/shared/app-route.js +19 -1
- package/dist/ui/shared/app-session.js +2 -0
- package/dist/ui/shared/app-shell.js +174 -30
- package/dist/ui/shared/app-store.js +26 -1
- package/dist/ui/shared/app-stream.js +5 -1
- package/dist/ui/shared/app-themes.js +140 -7
- package/dist/ui/shared/app.css +705 -20
- package/dist/ui/shared/app.js +26 -15
- package/dist/ui/shared/card-strings.js +8 -0
- package/dist/ui/shared/effect-app-runtime.js +68 -19
- package/dist/ui/shared/effect-chat-runtime.js +16 -3
- package/dist/ui/shared/effect-frame.js +26 -7
- package/dist/ui/shared/effect-geometry.js +24 -9
- package/dist/ui/shared/effect-owner-source.js +8 -1
- package/dist/ui/shared/effect-policy.js +21 -7
- package/dist/ui/shared/effect-profiler.js +31 -9
- package/dist/ui/shared/effect-registry.js +97 -50
- package/dist/ui/shared/effect-stock-snapshot.js +9 -0
- package/dist/ui/shared/effect-stock-trust.js +62 -10
- package/dist/ui/shared/effect-trial-shadow.js +62 -0
- package/dist/ui/shared/effect-trial-source.js +1 -1
- package/dist/ui/shared/effect-trial-stage.js +54 -31
- package/dist/ui/shared/effect-trial.css +40 -0
- package/dist/ui/shared/fx-motion.js +67 -0
- package/dist/ui/shared/identity-card.js +100 -11
- package/dist/ui/shared/identity-color.js +14 -10
- package/dist/ui/shared/instance-nav.js +179 -23
- package/dist/ui/shared/owner-css.js +30 -1
- package/dist/ui/shared/panel-view.js +24 -4
- package/dist/ui/shared/tokens.css +9 -3
- package/dist/ui/shared/ui-icons.js +2 -0
- package/dist/ui/shared/ui-menu.js +20 -7
- package/dist/ui/shared/ui-toast.js +16 -3
- package/dist/ui/shared/usage-dialog.js +34 -3
- package/dist/ui/shared/view-strings.js +72 -0
- package/dist/ui/shared/web-authorize.js +198 -0
- package/dist/ui/web-terminal/terminal.css +4 -4
- package/dist/ui/web-terminal/terminal.html +1 -1
- package/dist/update-launch.d.ts +9 -0
- package/dist/update-launch.js +38 -12
- package/dist/update-launch.js.map +1 -1
- package/dist/usage/format-rich.js +6 -3
- package/dist/usage/format-rich.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +2 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/i18n.d.ts +13 -1
- package/dist/usage/i18n.js +29 -0
- package/dist/usage/i18n.js.map +1 -1
- package/dist/usage/providers.d.ts +81 -2
- package/dist/usage/providers.js +240 -38
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/usage-api.d.ts +5 -1
- package/dist/usage/usage-api.js +184 -58
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/usage-report.d.ts +158 -0
- package/dist/usage-report.js +226 -0
- package/dist/usage-report.js.map +1 -0
- package/dist/usage-rollup.d.ts +51 -0
- package/dist/usage-rollup.js +168 -0
- package/dist/usage-rollup.js.map +1 -0
- package/dist/user-systemd.d.ts +24 -0
- package/dist/user-systemd.js +75 -0
- package/dist/user-systemd.js.map +1 -0
- package/dist/view-api.d.ts +39 -0
- package/dist/view-api.js +69 -6
- package/dist/view-api.js.map +1 -1
- package/dist/web-ambient.d.ts +72 -0
- package/dist/web-ambient.js +161 -0
- package/dist/web-ambient.js.map +1 -0
- package/dist/web-api.d.ts +98 -14
- package/dist/web-api.js +1027 -83
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-policy.d.ts +4 -6
- package/dist/web-appearance-policy.js +5 -12
- package/dist/web-appearance-policy.js.map +1 -1
- package/dist/web-appearance-tools.d.ts +3 -0
- package/dist/web-appearance-tools.js +22 -3
- package/dist/web-appearance-tools.js.map +1 -1
- package/dist/web-appearance-view.d.ts +27 -2
- package/dist/web-appearance-view.js +129 -14
- package/dist/web-appearance-view.js.map +1 -1
- package/dist/web-appearance.d.ts +17 -3
- package/dist/web-appearance.js +85 -8
- package/dist/web-appearance.js.map +1 -1
- package/dist/web-asset-parts.d.ts +2 -2
- package/dist/web-asset-parts.js +3 -3
- package/dist/web-asset-parts.js.map +1 -1
- package/dist/web-auth.js +3 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-backend-login.d.ts +130 -0
- package/dist/web-backend-login.js +225 -0
- package/dist/web-backend-login.js.map +1 -0
- package/dist/web-card.d.ts +14 -0
- package/dist/web-card.js +40 -6
- package/dist/web-card.js.map +1 -1
- package/dist/web-channel-echo.d.ts +7 -1
- package/dist/web-channel-echo.js +6 -2
- package/dist/web-channel-echo.js.map +1 -1
- package/dist/web-chat-history.d.ts +83 -0
- package/dist/web-chat-history.js +137 -5
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +6 -1
- package/dist/web-commands.js +1 -1
- package/dist/web-commands.js.map +1 -1
- package/dist/web-effect-bootstrap.d.ts +12 -0
- package/dist/web-effect-bootstrap.js +49 -0
- package/dist/web-effect-bootstrap.js.map +1 -0
- package/dist/web-effect-bundle.js +46 -1
- package/dist/web-effect-bundle.js.map +1 -1
- package/dist/web-effect-playback.d.ts +30 -0
- package/dist/web-effect-playback.js +71 -0
- package/dist/web-effect-playback.js.map +1 -0
- package/dist/web-effect-profiles.d.ts +4 -4
- package/dist/web-effect-service.d.ts +11 -4
- package/dist/web-effect-service.js +25 -4
- package/dist/web-effect-service.js.map +1 -1
- package/dist/web-effect-tools.d.ts +1 -0
- package/dist/web-effect-tools.js +4 -4
- package/dist/web-effect-tools.js.map +1 -1
- package/dist/web-effect-trials.d.ts +2 -2
- package/dist/web-effect-trials.js +3 -3
- package/dist/web-effect-trials.js.map +1 -1
- package/dist/web-effect-upload.js +1 -1
- package/dist/web-effect-upload.js.map +1 -1
- package/dist/web-effect-worker.d.ts +1 -1
- package/dist/web-effect-worker.js +2 -2
- package/dist/web-effect-worker.js.map +1 -1
- package/dist/web-effect.d.ts +1 -1
- package/dist/web-guest-access.d.ts +126 -0
- package/dist/web-guest-access.js +238 -0
- package/dist/web-guest-access.js.map +1 -0
- package/dist/web-guest-rooms.d.ts +82 -0
- package/dist/web-guest-rooms.js +135 -0
- package/dist/web-guest-rooms.js.map +1 -0
- package/dist/web-host-guard.d.ts +11 -0
- package/dist/web-host-guard.js +11 -0
- package/dist/web-host-guard.js.map +1 -1
- package/dist/web-identity-color.d.ts +1 -1
- package/dist/web-identity-color.js +2 -2
- package/dist/web-identity-color.js.map +1 -1
- package/dist/web-identity-palette.d.ts +1 -1
- package/dist/web-identity-palette.js +2 -2
- package/dist/web-identity-palette.js.map +1 -1
- package/dist/web-image-meta.d.ts +13 -0
- package/dist/web-image-meta.js +62 -0
- package/dist/web-image-meta.js.map +1 -1
- package/dist/web-libavoid.d.ts +14 -0
- package/dist/web-libavoid.js +46 -0
- package/dist/web-libavoid.js.map +1 -0
- package/dist/web-login.d.ts +47 -0
- package/dist/web-login.js +115 -0
- package/dist/web-login.js.map +1 -1
- package/dist/web-mod-agent.d.ts +1 -1
- package/dist/web-mod-agent.js +7 -5
- package/dist/web-mod-agent.js.map +1 -1
- package/dist/web-mod-bundle.d.ts +9 -1
- package/dist/web-mod-bundle.js +62 -3
- package/dist/web-mod-bundle.js.map +1 -1
- package/dist/web-mod-export.d.ts +9 -0
- package/dist/web-mod-export.js +21 -0
- package/dist/web-mod-export.js.map +1 -1
- package/dist/web-mod-store.d.ts +7 -1
- package/dist/web-mod-store.js +19 -6
- package/dist/web-mod-store.js.map +1 -1
- package/dist/web-owner-css-store.d.ts +44 -1
- package/dist/web-owner-css-store.js +70 -9
- package/dist/web-owner-css-store.js.map +1 -1
- package/dist/web-prefs.d.ts +14 -0
- package/dist/web-prefs.js +37 -4
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +6 -2
- package/dist/web-preview.js +4 -2
- package/dist/web-preview.js.map +1 -1
- package/dist/web-returning-device.d.ts +41 -0
- package/dist/web-returning-device.js +57 -5
- package/dist/web-returning-device.js.map +1 -1
- package/dist/web-session-authorization.d.ts +132 -0
- package/dist/web-session-authorization.js +193 -0
- package/dist/web-session-authorization.js.map +1 -0
- package/dist/web-session.d.ts +70 -10
- package/dist/web-session.js +137 -22
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +49 -2
- package/dist/web-settings-patch.js +145 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-settings-tools.d.ts +94 -0
- package/dist/web-settings-tools.js +301 -0
- package/dist/web-settings-tools.js.map +1 -0
- package/dist/web-shell-routes.d.ts +1 -1
- package/dist/web-shell-routes.js +1 -1
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-terminal-http.js +15 -2
- package/dist/web-terminal-http.js.map +1 -1
- package/dist/web-theme-store.d.ts +39 -0
- package/dist/web-theme-store.js +122 -11
- package/dist/web-theme-store.js.map +1 -1
- package/dist/web-theme.d.ts +31 -0
- package/dist/web-theme.js +99 -2
- package/dist/web-theme.js.map +1 -1
- package/dist/web-upload.d.ts +13 -0
- package/dist/web-upload.js +39 -3
- package/dist/web-upload.js.map +1 -1
- package/dist/windows-shortcuts.d.ts +78 -0
- package/dist/windows-shortcuts.js +203 -0
- package/dist/windows-shortcuts.js.map +1 -0
- package/dist/workflow-templates/default.md +4 -1
- package/dist/yaml-shared-nodes.d.ts +25 -0
- package/dist/yaml-shared-nodes.js +185 -0
- package/dist/yaml-shared-nodes.js.map +1 -0
- package/launcher/agend-install.cjs +553 -0
- package/launcher/install-admission.cjs +4 -39
- package/launcher/postinstall.cjs +14 -12
- package/package.json +4 -2
- package/scripts/preinstall-guard.cjs +2 -5
- package/templates/windows-shortcuts.ps1 +181 -0
- package/launcher/old-updater-note.cjs +0 -48
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-availability.js","sourceRoot":"","sources":["../src/backend-availability.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* the web chat only present it (fleet-manager.ts, web-commands.ts).
|
|
13
13
|
*/
|
|
14
14
|
import type { ModelOption } from "./backend/types.js";
|
|
15
|
+
import type { AvailabilityState } from "./backend-availability.js";
|
|
15
16
|
/** The word that picks the inherited value of a model or an effort, in the typed form and in the menus. */
|
|
16
17
|
export declare const BACKEND_DEFAULT = "default";
|
|
17
18
|
export interface BackendCommandDeps {
|
|
@@ -19,8 +20,15 @@ export interface BackendCommandDeps {
|
|
|
19
20
|
currentBackend(instance: string): string;
|
|
20
21
|
/** What the instance runs on now, as a reply shows it: "claude-code · opus". */
|
|
21
22
|
currentDisplay(instance: string): string;
|
|
22
|
-
/**
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* #2072: every backend of the catalog (never removed or test-only ones) with what this host's published snapshot says
|
|
25
|
+
* about it — installed, signed in, new enough. Read only; never probes.
|
|
26
|
+
*/
|
|
27
|
+
availability(): Array<{
|
|
28
|
+
backend: string;
|
|
29
|
+
state: AvailabilityState;
|
|
30
|
+
minVersion?: string | null;
|
|
31
|
+
}>;
|
|
24
32
|
/** The models `/model` would offer on that backend; empty when none are known. */
|
|
25
33
|
models(backend: string): Promise<ModelOption[]>;
|
|
26
34
|
/** A name the backend accepts beyond its list (claude-code's aliases and account catalog). */
|
|
@@ -45,11 +53,23 @@ export interface BackendPlan {
|
|
|
45
53
|
model: string | null;
|
|
46
54
|
effort: string | null;
|
|
47
55
|
}
|
|
48
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* One choice of a step. `token` is the argument it adds; `label` what the button says. `disabled`: why it cannot be
|
|
58
|
+
* chosen here (shown, not hidden — a surface that cannot disable an option shows the reason and the step refuses it).
|
|
59
|
+
*/
|
|
49
60
|
export interface BackendChoice {
|
|
50
61
|
token: string;
|
|
51
62
|
label: string;
|
|
63
|
+
disabled?: string;
|
|
64
|
+
/** Disabled because its CLI is not signed in (#2233): the backend a surface may offer to sign in. */
|
|
65
|
+
signIn?: string;
|
|
52
66
|
}
|
|
67
|
+
/** Why a backend cannot be chosen, or null when it can (usable, or unknown: checked again when applied). */
|
|
68
|
+
export declare function backendUnusable(t: BackendCommandDeps["t"], row: {
|
|
69
|
+
backend: string;
|
|
70
|
+
state: AvailabilityState;
|
|
71
|
+
minVersion?: string | null;
|
|
72
|
+
}): string | null;
|
|
53
73
|
export type BackendStep = {
|
|
54
74
|
kind: "choose";
|
|
55
75
|
step: "backend" | "model" | "effort";
|
package/dist/backend-command.js
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
export const BACKEND_DEFAULT = "default";
|
|
3
3
|
/** The most choices one step offers: a Discord select menu's 25, less "default". */
|
|
4
4
|
const MAX_MODEL_CHOICES = 24;
|
|
5
|
+
/** Why a backend cannot be chosen, or null when it can (usable, or unknown: checked again when applied). */
|
|
6
|
+
export function backendUnusable(t, row) {
|
|
7
|
+
switch (row.state) {
|
|
8
|
+
case "not_installed": return t("backend.reason_not_installed");
|
|
9
|
+
case "not_signed_in": return t("backend.reason_not_signed_in");
|
|
10
|
+
case "too_old": return t("backend.reason_too_old", row.minVersion ?? "?");
|
|
11
|
+
default: return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
5
14
|
/** A chosen model or effort as a reply says it; `null` is the inherited one, named. */
|
|
6
15
|
function shown(deps, key, value) {
|
|
7
16
|
if (value !== null)
|
|
@@ -40,18 +49,30 @@ export async function backendStep(deps, instance, args) {
|
|
|
40
49
|
if (args.length > 3)
|
|
41
50
|
return { kind: "refuse", text: t("backend.usage") };
|
|
42
51
|
const from = deps.currentBackend(instance);
|
|
43
|
-
const
|
|
52
|
+
const rows = deps.availability();
|
|
53
|
+
// The instance's own backend is never shown as unusable: a failed or stale probe must not disable it (fail open).
|
|
54
|
+
const why = (row) => (row.backend === from ? null : backendUnusable(t, row));
|
|
44
55
|
if (args.length === 0) {
|
|
45
56
|
return {
|
|
46
57
|
kind: "choose", step: "backend", args: [], current: from,
|
|
47
58
|
text: t("backend.menu", deps.currentDisplay(instance)),
|
|
48
|
-
choices:
|
|
59
|
+
choices: rows.map(row => {
|
|
60
|
+
const reason = why(row);
|
|
61
|
+
const label = row.backend === from ? `✓ ${row.backend}` : row.state === "unknown" ? `${row.backend} — ${t("backend.reason_unchecked")}` : row.backend;
|
|
62
|
+
return reason
|
|
63
|
+
? { token: row.backend, label: `${row.backend} — ${reason}`, disabled: reason, ...(row.state === "not_signed_in" ? { signIn: row.backend } : {}) }
|
|
64
|
+
: { token: row.backend, label };
|
|
65
|
+
}),
|
|
49
66
|
};
|
|
50
67
|
}
|
|
51
68
|
const backend = args[0].toLowerCase();
|
|
52
|
-
|
|
53
|
-
|
|
69
|
+
const row = rows.find(r => r.backend === backend);
|
|
70
|
+
if (!row) {
|
|
71
|
+
return { kind: "refuse", text: t("backend.unknown_backend", args[0], rows.map(r => r.backend).join(", ") || "—") };
|
|
54
72
|
}
|
|
73
|
+
const reason = why(row);
|
|
74
|
+
if (reason)
|
|
75
|
+
return { kind: "refuse", text: t("backend.unusable", backend, reason) };
|
|
55
76
|
// The same backend is not a switch: nothing to restart for. A model or effort on it is /model's and /effort's job.
|
|
56
77
|
if (backend === from)
|
|
57
78
|
return { kind: "refuse", text: t("backend.same", instance, backend), noop: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-command.js","sourceRoot":"","sources":["../src/backend-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend-command.js","sourceRoot":"","sources":["../src/backend-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { readLogTail, writePrivate } from './bug-report.js';
|
|
3
|
+
export interface BugReportOptions {
|
|
4
|
+
since?: string;
|
|
5
|
+
out?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
steps?: string;
|
|
9
|
+
descriptionFile?: string;
|
|
10
|
+
stepsFile?: string;
|
|
11
|
+
keepIdentifiers?: boolean;
|
|
12
|
+
draft?: string;
|
|
13
|
+
approve?: string;
|
|
14
|
+
submit?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface BugReportDeps {
|
|
17
|
+
home: string;
|
|
18
|
+
now: () => number;
|
|
19
|
+
version: string;
|
|
20
|
+
environment: () => string;
|
|
21
|
+
readTail: typeof readLogTail;
|
|
22
|
+
readText: (path: string) => Promise<string>;
|
|
23
|
+
write: typeof writePrivate;
|
|
24
|
+
print: (text: string) => void;
|
|
25
|
+
journal: (since: number, until: number) => Promise<string>;
|
|
26
|
+
submit: (title: string, body: string) => Promise<string>;
|
|
27
|
+
}
|
|
28
|
+
export declare function defaultBugReportDeps(version: string): BugReportDeps;
|
|
29
|
+
export declare function runBugReport(options: BugReportOptions, deps: BugReportDeps): Promise<void>;
|
|
30
|
+
export declare function registerBugReportCommand(program: Command, version: string, dependencies?: BugReportDeps): void;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { tmpdir, platform, release, arch } from 'node:os';
|
|
6
|
+
import { getAgendHome } from './paths.js';
|
|
7
|
+
import { redactDiagnostics } from './diagnostic-redaction.js';
|
|
8
|
+
import { approveDraft, approvedIssueLink, createReportDraft, DEFAULT_SINCE, draftDigest, MAX_LOG_BYTES, readLogTail, readReportInput, reviewText, serializeDraft, sinceMs, writePrivate } from './bug-report.js';
|
|
9
|
+
const run = promisify(execFile);
|
|
10
|
+
export function defaultBugReportDeps(version) {
|
|
11
|
+
return {
|
|
12
|
+
home: getAgendHome(), now: Date.now, version,
|
|
13
|
+
environment: () => `AgEnD: ${version}\nNode: ${process.version}\nRuntime: Node (${arch()})\nOS: ${platform()} ${release()}\nWSL: ${/microsoft|wsl/i.test(release()) || !!process.env.WSL_DISTRO_NAME ? 'yes' : 'no'}\nWSL distro: ${process.env.WSL_DISTRO_NAME ?? 'unknown / not applicable'}`,
|
|
14
|
+
readTail: readLogTail, readText: readReportInput, write: writePrivate, print: text => console.log(text),
|
|
15
|
+
journal: async (since, until) => {
|
|
16
|
+
const { stdout } = await run('journalctl', ['--user', '-u', 'com.agend.fleet', '--since', new Date(since).toISOString(), '--until', new Date(until).toISOString(), '--no-pager', '-o', 'short-iso', '-n', '1500'], { timeout: 5000, maxBuffer: MAX_LOG_BYTES });
|
|
17
|
+
return stdout;
|
|
18
|
+
},
|
|
19
|
+
submit: async (title, body) => {
|
|
20
|
+
// Existing host login only. Never prompt for, read or persist a GitHub credential.
|
|
21
|
+
await run('gh', ['auth', 'status', '--hostname', 'github.com'], { timeout: 10_000, maxBuffer: 16_384 });
|
|
22
|
+
const temporary = await mkdtemp(join(tmpdir(), 'agend-bug-report-'));
|
|
23
|
+
try {
|
|
24
|
+
const bodyPath = join(temporary, 'body.md');
|
|
25
|
+
await writePrivate(bodyPath, body);
|
|
26
|
+
const { stdout } = await run('gh', ['issue', 'create', '-R', 'github.com/songsid/AgEnD', '--title', title, '--body-file', bodyPath], { timeout: 30_000, maxBuffer: 16_384 });
|
|
27
|
+
const url = stdout.trim();
|
|
28
|
+
if (!/^https:\/\/github\.com\/songsid\/AgEnD\/issues\/\d+$/.test(url))
|
|
29
|
+
throw new Error('Issue submission result was unclear; check GitHub before trying again.');
|
|
30
|
+
return url;
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
await rm(temporary, { recursive: true, force: true });
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async function cachedBackendVersions(deps) {
|
|
39
|
+
const lines = [];
|
|
40
|
+
for (const backend of ['claude-code', 'codex', 'kiro-cli', 'grok', 'antigravity', 'muse', 'opencode']) {
|
|
41
|
+
let version = 'unknown (no usable cached evidence)';
|
|
42
|
+
try {
|
|
43
|
+
const raw = await deps.readTail(join(deps.home, 'cli-env', backend + '.json'));
|
|
44
|
+
if (!raw.truncated) {
|
|
45
|
+
const cache = JSON.parse(raw.text);
|
|
46
|
+
const match = typeof cache.version === 'string' ? cache.version.match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}(?:-[a-z]+\.\d{1,3})?\b/) : null;
|
|
47
|
+
if (match) {
|
|
48
|
+
const date = typeof cache.probedAt === 'number' && Number.isFinite(cache.probedAt) && cache.probedAt >= 0 && cache.probedAt <= deps.now() ? new Date(cache.probedAt).toISOString() : 'unknown';
|
|
49
|
+
version = match[0] + ' (cached at ' + date + '; may be stale)';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch { /* No probe or refresh: reading cached evidence is deliberately passive. */ }
|
|
54
|
+
lines.push(backend + ' cache: ' + version);
|
|
55
|
+
}
|
|
56
|
+
return 'Cached backend CLI versions (may differ from incident log evidence):\n' + lines.join('\n');
|
|
57
|
+
}
|
|
58
|
+
export async function runBugReport(options, deps) {
|
|
59
|
+
if (options.approve || options.draft) {
|
|
60
|
+
if (!options.approve || !options.draft)
|
|
61
|
+
throw new Error('Approval requires both --draft and --approve SHA256.');
|
|
62
|
+
if (options.out || options.since || options.title || options.description || options.steps || options.descriptionFile || options.stepsFile || options.keepIdentifiers)
|
|
63
|
+
throw new Error('Approval cannot change collection options; collect and review a new draft.');
|
|
64
|
+
const serialized = await deps.readText(options.draft);
|
|
65
|
+
const draft = approveDraft(serialized, options.approve, options.submit ? 'gh' : 'link');
|
|
66
|
+
if (options.submit) {
|
|
67
|
+
// Overflow report stays local: gh has no implicit attachment upload.
|
|
68
|
+
if (draft.overflow)
|
|
69
|
+
throw new Error('This report needs a manual attachment. Collect a link-mode draft and approve it instead.');
|
|
70
|
+
deps.print(await deps.submit(draft.title, draft.body));
|
|
71
|
+
}
|
|
72
|
+
else
|
|
73
|
+
deps.print(approvedIssueLink(serialized, options.approve));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const until = deps.now(), since = sinceMs(options.since ?? DEFAULT_SINCE, until);
|
|
77
|
+
const narrative = async (inline, file) => {
|
|
78
|
+
if (inline && file)
|
|
79
|
+
throw new Error('Choose inline text or a text file, not both.');
|
|
80
|
+
const text = file ? await deps.readText(file) : inline ?? '';
|
|
81
|
+
if (text.length > 64 * 1024)
|
|
82
|
+
throw new Error('Description/steps exceed 64 KiB; shorten them before collection.');
|
|
83
|
+
return text;
|
|
84
|
+
};
|
|
85
|
+
const description = await narrative(options.description, options.descriptionFile);
|
|
86
|
+
const steps = await narrative(options.steps, options.stepsFile);
|
|
87
|
+
const logs = [];
|
|
88
|
+
for (const source of ['daemon.log', 'fleet.log']) {
|
|
89
|
+
try {
|
|
90
|
+
logs.push({ source: source === 'daemon.log' ? 'daemon log' : 'fleet stderr log', ...await deps.readTail(join(deps.home, source)) });
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
logs.push({ source: (source === 'daemon.log' ? 'daemon log' : 'fleet stderr log') + ' (unavailable: missing, unreadable, symlink or not a regular file)', text: '' });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
logs.push({ source: 'journalctl user unit com.agend.fleet', text: await deps.journal(since, until) });
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
logs.push({ source: 'journalctl user unit com.agend.fleet (unavailable or exceeded bounded read)', text: '' });
|
|
101
|
+
}
|
|
102
|
+
const draft = createReportDraft({ title: options.title ?? 'AgEnD bug report', description, steps, environment: deps.environment() + '\n' + await cachedBackendVersions(deps), since, until, logs, keepIdentifiers: options.keepIdentifiers, delivery: options.submit ? 'gh' : 'link' });
|
|
103
|
+
if (options.submit && draft.overflow)
|
|
104
|
+
throw new Error('Report requires a manual attachment. Collect without --submit.');
|
|
105
|
+
const serialized = serializeDraft(draft), digest = draftDigest(serialized);
|
|
106
|
+
const out = options.out ?? `agend-bug-report-${until}.json`;
|
|
107
|
+
await deps.write(out, serialized);
|
|
108
|
+
await deps.write(out + '.md', draft.report);
|
|
109
|
+
deps.print(reviewText(draft));
|
|
110
|
+
deps.print(`Local review snapshot: ${redactDiagnostics(out)}\nShareable redacted report file: ${redactDiagnostics(out + ".md")}\nNo report sent. Review the exact text above, then approve SHA256 ${digest}.\nTo ${options.submit ? 'submit with existing host gh login' : 'generate the prefilled link'}: agend bug-report --draft <draft-file> --approve ${digest}${options.submit ? ' --submit' : ''}\nIf you do not use GitHub, share the report Markdown file yourself. No upload is performed.`);
|
|
111
|
+
}
|
|
112
|
+
export function registerBugReportCommand(program, version, dependencies) {
|
|
113
|
+
program.command('bug-report')
|
|
114
|
+
.description('Collect a private redacted report; approve its exact draft before generating a GitHub link')
|
|
115
|
+
.option('--since <duration>', 'Log window (default 30m, maximum 7d)')
|
|
116
|
+
.option('--out <file>', 'New private draft snapshot; also writes <file>.md')
|
|
117
|
+
.option('--title <text>', 'Issue title')
|
|
118
|
+
.option('--description <text>', 'Problem description')
|
|
119
|
+
.option('--steps <text>', 'Steps to reproduce')
|
|
120
|
+
.option('--description-file <file>', 'Read problem description from a local text file')
|
|
121
|
+
.option('--steps-file <file>', 'Read reproduction steps from a local text file')
|
|
122
|
+
.option('--keep-identifiers', 'Opt in to retaining emails, hosts, IPs and path usernames; secrets remain redacted')
|
|
123
|
+
.option('--draft <file>', 'Previously reviewed draft snapshot')
|
|
124
|
+
.option('--approve <sha256>', 'Explicit approval of the exact draft snapshot')
|
|
125
|
+
.option('--submit', 'Choose optional gh submission (must be chosen during collection and approval)')
|
|
126
|
+
.action(async (options) => {
|
|
127
|
+
try {
|
|
128
|
+
await runBugReport(options, dependencies ?? defaultBugReportDeps(version));
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
// child-process errors may embed args/stderr. Never echo them into chat/console.
|
|
132
|
+
const reason = error instanceof Error && !('cmd' in error) ? redactDiagnostics(error.message) : 'Diagnostic collection/submission failed; no automatic retry. Check GitHub before retrying an uncertain submission.';
|
|
133
|
+
console.error(reason);
|
|
134
|
+
process.exitCode = 1;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=bug-report-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-report-cli.js","sourceRoot":"","sources":["../src/bug-report-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type RedactionOptions } from './diagnostic-redaction.js';
|
|
2
|
+
export declare const ISSUE_URL = "https://github.com/songsid/AgEnD/issues/new";
|
|
3
|
+
export declare const MAX_ISSUE_URL = 7500;
|
|
4
|
+
export declare const MAX_LOG_BYTES: number;
|
|
5
|
+
export declare const MAX_LOG_LINES = 1500;
|
|
6
|
+
export declare const DEFAULT_SINCE = "30m";
|
|
7
|
+
export declare function sinceMs(value: string, now?: number): number;
|
|
8
|
+
/** No FIFO/device reads, symlink following, whole-file allocations, or modifications of live logs. */
|
|
9
|
+
export declare function readLogTail(path: string): Promise<{
|
|
10
|
+
text: string;
|
|
11
|
+
truncated: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
/** Bounded local narrative/review read, with the same FIFO/symlink restrictions as logs. */
|
|
14
|
+
export declare function readReportInput(path: string): Promise<string>;
|
|
15
|
+
export declare function logExcerpt(text: string, since: number, until: number, options?: RedactionOptions): string;
|
|
16
|
+
export interface ReportInput {
|
|
17
|
+
title: string;
|
|
18
|
+
description: string;
|
|
19
|
+
steps: string;
|
|
20
|
+
environment: string;
|
|
21
|
+
since: number;
|
|
22
|
+
until: number;
|
|
23
|
+
logs: {
|
|
24
|
+
source: string;
|
|
25
|
+
text: string;
|
|
26
|
+
truncated?: boolean;
|
|
27
|
+
}[];
|
|
28
|
+
keepIdentifiers?: boolean;
|
|
29
|
+
delivery?: 'link' | 'gh';
|
|
30
|
+
}
|
|
31
|
+
export interface ReportDraft {
|
|
32
|
+
format: 'agend-bug-report-v1';
|
|
33
|
+
delivery: 'link' | 'gh';
|
|
34
|
+
keepIdentifiers: boolean;
|
|
35
|
+
title: string;
|
|
36
|
+
body: string;
|
|
37
|
+
report: string;
|
|
38
|
+
overflow: boolean;
|
|
39
|
+
}
|
|
40
|
+
export declare function createReportDraft(input: ReportInput): ReportDraft;
|
|
41
|
+
export declare function serializeDraft(draft: ReportDraft): string;
|
|
42
|
+
export declare function draftDigest(serialized: string): string;
|
|
43
|
+
export declare function reviewText(draft: ReportDraft): string;
|
|
44
|
+
export declare function approveDraft(serialized: string, digest: string, delivery: 'link' | 'gh'): ReportDraft;
|
|
45
|
+
/** Only accepts the validated snapshot from the approval boundary. Does not open a browser. */
|
|
46
|
+
export declare function approvedIssueLink(serialized: string, digest: string): string;
|
|
47
|
+
export declare function writePrivate(path: string, text: string): Promise<void>;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { constants } from 'node:fs';
|
|
2
|
+
import { open, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { diagnosticLine, diagnosticRecord, redactDiagnostics } from './diagnostic-redaction.js';
|
|
5
|
+
export const ISSUE_URL = 'https://github.com/songsid/AgEnD/issues/new';
|
|
6
|
+
export const MAX_ISSUE_URL = 7500;
|
|
7
|
+
export const MAX_LOG_BYTES = 256 * 1024;
|
|
8
|
+
export const MAX_LOG_LINES = 1500;
|
|
9
|
+
export const DEFAULT_SINCE = '30m';
|
|
10
|
+
export function sinceMs(value, now = Date.now()) {
|
|
11
|
+
const match = /^(\d+)(m|h|d)$/.exec(value);
|
|
12
|
+
if (!match)
|
|
13
|
+
throw new Error('--since must be a duration such as 30m, 2h or 1d (maximum 7d)');
|
|
14
|
+
const duration = Number(match[1]) * ({ m: 60_000, h: 3_600_000, d: 86_400_000 }[match[2]]);
|
|
15
|
+
if (!Number.isSafeInteger(duration) || duration <= 0 || duration > 7 * 86_400_000)
|
|
16
|
+
throw new Error('--since must be between 1m and 7d');
|
|
17
|
+
return now - duration;
|
|
18
|
+
}
|
|
19
|
+
/** No FIFO/device reads, symlink following, whole-file allocations, or modifications of live logs. */
|
|
20
|
+
export async function readLogTail(path) {
|
|
21
|
+
const handle = await open(path, constants.O_RDONLY | constants.O_NONBLOCK | (constants.O_NOFOLLOW ?? 0));
|
|
22
|
+
try {
|
|
23
|
+
const stat = await handle.stat();
|
|
24
|
+
if (!stat.isFile())
|
|
25
|
+
throw new Error('Not a regular log file');
|
|
26
|
+
const start = Math.max(0, stat.size - MAX_LOG_BYTES);
|
|
27
|
+
const buffer = Buffer.alloc(Math.min(stat.size, MAX_LOG_BYTES));
|
|
28
|
+
const { bytesRead } = await handle.read(buffer, 0, buffer.length, start);
|
|
29
|
+
let text = buffer.subarray(0, bytesRead).toString('utf8');
|
|
30
|
+
// A partial first line could hide its timestamp or a credential prefix.
|
|
31
|
+
if (start)
|
|
32
|
+
text = text.includes('\n') ? text.slice(text.indexOf('\n') + 1) : '';
|
|
33
|
+
return { text, truncated: start > 0 };
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
await handle.close();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Bounded local narrative/review read, with the same FIFO/symlink restrictions as logs. */
|
|
40
|
+
export async function readReportInput(path) {
|
|
41
|
+
const handle = await open(path, constants.O_RDONLY | constants.O_NONBLOCK | (constants.O_NOFOLLOW ?? 0));
|
|
42
|
+
try {
|
|
43
|
+
const stat = await handle.stat();
|
|
44
|
+
if (!stat.isFile() || stat.size > 4 * 1024 * 1024)
|
|
45
|
+
throw new Error('Report input must be a regular file of at most 4 MiB.');
|
|
46
|
+
const buffer = Buffer.alloc(stat.size);
|
|
47
|
+
const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
|
|
48
|
+
return buffer.subarray(0, bytesRead).toString('utf8');
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
await handle.close();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function logExcerpt(text, since, until, options = {}) {
|
|
55
|
+
const lines = text.split(/\r?\n/);
|
|
56
|
+
const output = [];
|
|
57
|
+
let active = null, unknown = 0, withheld = 0;
|
|
58
|
+
for (const line of lines.slice(-MAX_LOG_LINES)) {
|
|
59
|
+
if (!line)
|
|
60
|
+
continue;
|
|
61
|
+
let record;
|
|
62
|
+
try {
|
|
63
|
+
const parsed = JSON.parse(line);
|
|
64
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
|
|
65
|
+
record = parsed;
|
|
66
|
+
}
|
|
67
|
+
catch { /* pretty/plain log */ }
|
|
68
|
+
const timestamp = record?.time ?? record?.timestamp;
|
|
69
|
+
const match = line.match(/\b\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?/);
|
|
70
|
+
const current = typeof timestamp === 'number' ? timestamp : typeof timestamp === 'string' ? Date.parse(timestamp) : match ? Date.parse(match[0]) : null;
|
|
71
|
+
if (current !== null)
|
|
72
|
+
active = Number.isFinite(current) ? current : -1;
|
|
73
|
+
if (active !== null && (active < since || active > until))
|
|
74
|
+
continue;
|
|
75
|
+
// Inspect one bounded prefix once. Repeated INFO tokens without a colon must
|
|
76
|
+
// not trigger a fresh scan of the remaining line for every token.
|
|
77
|
+
const level = /\b(?:INFO|WARN|ERROR|DEBUG|FATAL)\b/.exec(line.slice(0, 256));
|
|
78
|
+
const colon = level ? line.indexOf(':', level.index + level[0].length) : -1;
|
|
79
|
+
const plain = colon >= 0 && colon <= 256 ? line.slice(colon + 1).trimStart() : line;
|
|
80
|
+
const safe = record ? diagnosticRecord(record, options) : diagnosticLine(plain, options);
|
|
81
|
+
if (!safe || safe === '{}') {
|
|
82
|
+
withheld++;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
// fleet stderr often lacks timestamps; explicitly separate unverified-time evidence.
|
|
86
|
+
if (active === null)
|
|
87
|
+
unknown++;
|
|
88
|
+
output.push(`${active === null ? '[time unknown]' : new Date(active).toISOString()} ${safe}`);
|
|
89
|
+
}
|
|
90
|
+
return [`Log prose/identifiers omitted; last ${MAX_LOG_LINES} lines maximum.`,
|
|
91
|
+
`Untimestamped diagnostic lines: ${unknown} (cannot verify requested window); withheld lines: ${withheld}.`,
|
|
92
|
+
...output].join('\n');
|
|
93
|
+
}
|
|
94
|
+
function encodedLength(title, body) {
|
|
95
|
+
return ISSUE_URL.length + '?title='.length + encodeURIComponent(title).length + '&body='.length + encodeURIComponent(body).length;
|
|
96
|
+
}
|
|
97
|
+
export function createReportDraft(input) {
|
|
98
|
+
const options = { keepIdentifiers: input.keepIdentifiers };
|
|
99
|
+
const clean = (s) => redactDiagnostics(s, options).replace(/\r/g, '');
|
|
100
|
+
const title = Array.from(clean(input.title).replace(/[\n\t]/g, ' ')).slice(0, 140).join('') || 'AgEnD bug report';
|
|
101
|
+
const report = clean(`# ${title}\n\n## Description\n${clean(input.description) || 'Please describe the problem.'}\n\n## Steps to reproduce\n${clean(input.steps) || 'Please add reproduction steps.'}\n\n## Environment\n${clean(input.environment)}\n\n## Requested window (UTC)\n${new Date(input.since).toISOString()} to ${new Date(input.until).toISOString()}\n\n## Redacted diagnostics\n${input.logs.map(l => `### ${clean(l.source)}${l.truncated ? ' (bounded tail; earlier bytes omitted)' : ''}\n\n${logExcerpt(l.text, input.since, input.until, options)}`).join('\n\n')}\n\nReview this public report before sharing. Free-form log prose, IDs and unknown fields were withheld; arbitrary secrets in the description still need your review. No transcripts, credential config or environment dump collected. Backend CLI versions come from existing unprofiled version caches and structured log fields; missing evidence is unknown, cache age is stated, and no coding CLI was executed.\n`);
|
|
102
|
+
const overflow = encodedLength(title, report) > MAX_ISSUE_URL;
|
|
103
|
+
const body = overflow ? `# ${title}\n\nThe full approved redacted report exceeds the prefilled-link size limit. Please attach the approved report Markdown file manually before submitting. No attachment has been uploaded.\n` : report;
|
|
104
|
+
return { format: 'agend-bug-report-v1', delivery: input.delivery ?? 'link', keepIdentifiers: !!input.keepIdentifiers, title, body, report, overflow };
|
|
105
|
+
}
|
|
106
|
+
export function serializeDraft(draft) { return JSON.stringify(draft, null, 2) + '\n'; }
|
|
107
|
+
export function draftDigest(serialized) { return createHash('sha256').update(serialized).digest('hex'); }
|
|
108
|
+
export function reviewText(draft) {
|
|
109
|
+
return `Delivery: ${draft.delivery}\nIssue title:\n${draft.title}\n\nExact issue body:\n${draft.body}\n\nExact report file (attach manually${draft.overflow ? '; required for overflow' : ''}):\n${draft.report}\n`;
|
|
110
|
+
}
|
|
111
|
+
export function approveDraft(serialized, digest, delivery) {
|
|
112
|
+
if (!/^[a-f\d]{64}$/.test(digest) || draftDigest(serialized) !== digest)
|
|
113
|
+
throw new Error('Draft changed or approval digest does not match; review and approve the exact draft again.');
|
|
114
|
+
const draft = JSON.parse(serialized);
|
|
115
|
+
if (!draft || draft.format !== 'agend-bug-report-v1' || draft.delivery !== delivery || typeof draft.keepIdentifiers !== 'boolean'
|
|
116
|
+
|| typeof draft.title !== 'string' || typeof draft.body !== 'string' || typeof draft.report !== 'string' || typeof draft.overflow !== 'boolean')
|
|
117
|
+
throw new Error('Invalid draft; collect a new report.');
|
|
118
|
+
// Reject injected extra fields, unredacted edits and ambiguous representations.
|
|
119
|
+
if (serializeDraft(draft) !== serialized || Object.keys(draft).sort().join(',') !== 'body,delivery,format,keepIdentifiers,overflow,report,title')
|
|
120
|
+
throw new Error('Invalid draft format.');
|
|
121
|
+
for (const value of [draft.title, draft.body, draft.report])
|
|
122
|
+
if (redactDiagnostics(value, { keepIdentifiers: draft.keepIdentifiers }) !== value)
|
|
123
|
+
throw new Error('Draft contains unredacted data; collect and review again.');
|
|
124
|
+
if (encodedLength(draft.title, draft.body) > MAX_ISSUE_URL)
|
|
125
|
+
throw new Error('Issue text exceeds the safe link limit; collect a new report.');
|
|
126
|
+
return draft;
|
|
127
|
+
}
|
|
128
|
+
/** Only accepts the validated snapshot from the approval boundary. Does not open a browser. */
|
|
129
|
+
export function approvedIssueLink(serialized, digest) {
|
|
130
|
+
const draft = approveDraft(serialized, digest, 'link');
|
|
131
|
+
return ISSUE_URL + '?title=' + encodeURIComponent(draft.title) + '&body=' + encodeURIComponent(draft.body);
|
|
132
|
+
}
|
|
133
|
+
export async function writePrivate(path, text) {
|
|
134
|
+
await writeFile(path, text, { flag: 'wx', mode: 0o600 });
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=bug-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-report.js","sourceRoot":"","sources":["../src/bug-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAyB,MAAM,2BAA2B,CAAC;AAEvH,MAAM,CAAC,MAAM,SAAS,GAAG,6CAA6C,CAAC;AACvE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACxI,OAAO,GAAG,GAAG,QAAQ,CAAC;AACxB,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IACzG,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;QAChE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,wEAAwE;QACxE,IAAI,KAAK;YAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;IACxC,CAAC;YAAS,CAAC;QAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;AACrC,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IACzG,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC5H,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;YAAS,CAAC;QAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa,EAAE,UAA4B,EAAE;IACnG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAkB,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,MAA2C,CAAC;QAChD,IAAI,CAAC;YAAC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,GAAG,MAAiC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAClM,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,SAAS,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxJ,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,CAAC;YAAE,SAAS;QACpE,6EAA6E;QAC7E,kEAAkE;QAClE,MAAM,KAAK,GAAG,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAAC,QAAQ,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACrD,qFAAqF;QACrF,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,CAAC,uCAAuC,aAAa,iBAAiB;QAC3E,mCAAmC,OAAO,sDAAsD,QAAQ,GAAG;QAC3G,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAWD,SAAS,aAAa,CAAC,KAAa,EAAE,IAAY;IAChD,OAAO,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACpI,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,MAAM,OAAO,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC;IAClH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,uBAAuB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,8BAA8B,8BAA8B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,gCAAgC,uBAAuB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,kCAAkC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,gCAAgC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,yZAAyZ,CAAC,CAAC;IACj9B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC;IAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,6LAA6L,CAAC,CAAC,CAAC,MAAM,CAAC;IACzO,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACxJ,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,KAAkB,IAAY,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5G,MAAM,UAAU,WAAW,CAAC,UAAkB,IAAY,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzH,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,OAAO,aAAa,KAAK,CAAC,QAAQ,mBAAmB,KAAK,CAAC,KAAK,0BAA0B,KAAK,CAAC,IAAI,yCAAyC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC;AACtN,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,MAAc,EAAE,QAAuB;IACtF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IACvL,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAgB,CAAC;IACpD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAqB,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,SAAS;WAC5H,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC3M,gFAAgF;IAChF,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,4DAA4D;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3L,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QAAE,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC9N,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAC7I,OAAO,KAAK,CAAC;AACf,CAAC;AACD,+FAA+F;AAC/F,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAc;IAClE,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,SAAS,GAAG,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7G,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IAC3D,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const BUNDLED_SKILLS_DIR: string;
|
|
2
|
+
/** The bundled skills: name and the description from its frontmatter. */
|
|
3
|
+
export declare function listBundledSkills(dir?: string): Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
}>;
|
|
7
|
+
/** One bundled skill's SKILL.md, whole; or why not (a name that is not one of them). */
|
|
8
|
+
export declare function readBundledSkill(name: string, dir?: string): {
|
|
9
|
+
ok: true;
|
|
10
|
+
text: string;
|
|
11
|
+
} | {
|
|
12
|
+
ok: false;
|
|
13
|
+
error: string;
|
|
14
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #2163: the skills AgEnD ships (general-knowledge/skills/<name>/SKILL.md, next to this file in src/ and dist/), read
|
|
3
|
+
* on demand. Where a CLI has no skill folder, or a workspace AgEnD does not manage gets none published, an agent still
|
|
4
|
+
* reads one with `agend-agent skill <name>`. Read-only and local: no fleet call, nothing written. A skill is
|
|
5
|
+
* documentation shipped in the package, so any instance may read any of them (no role gate: nothing to protect).
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
export const BUNDLED_SKILLS_DIR = join(dirname(fileURLToPath(import.meta.url)), "general-knowledge", "skills");
|
|
11
|
+
const NAME = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
12
|
+
/** The bundled skills: name and the description from its frontmatter. */
|
|
13
|
+
export function listBundledSkills(dir = BUNDLED_SKILLS_DIR) {
|
|
14
|
+
if (!existsSync(dir))
|
|
15
|
+
return [];
|
|
16
|
+
return readdirSync(dir).filter(n => NAME.test(n) && existsSync(join(dir, n, "SKILL.md"))).sort().map(name => {
|
|
17
|
+
const head = readFileSync(join(dir, name, "SKILL.md"), "utf-8").match(/^---[ \t]*\r?\n([\s\S]*?)\r?\n---/)?.[1] ?? "";
|
|
18
|
+
const description = head.match(/^description:[ \t]*(.*)$/m)?.[1]?.trim().replace(/^["']|["']$/g, "") ?? "";
|
|
19
|
+
return { name, description };
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** One bundled skill's SKILL.md, whole; or why not (a name that is not one of them). */
|
|
23
|
+
export function readBundledSkill(name, dir = BUNDLED_SKILLS_DIR) {
|
|
24
|
+
const known = listBundledSkills(dir).map(s => s.name);
|
|
25
|
+
if (!NAME.test(name) || !known.includes(name))
|
|
26
|
+
return { ok: false, error: `no bundled skill "${name.slice(0, 64)}" — one of: ${known.join(", ")}` };
|
|
27
|
+
return { ok: true, text: readFileSync(join(dir, name, "SKILL.md"), "utf-8") };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=bundled-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundled-skills.js","sourceRoot":"","sources":["../src/bundled-skills.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AAC/G,MAAM,IAAI,GAAG,2BAA2B,CAAC;AAEzC,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,MAAc,kBAAkB;IAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC1G,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3G,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAc,kBAAkB;IAC7E,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACpJ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;AAChF,CAAC"}
|