@namzu/cli 29.0.0 → 29.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +146 -0
- package/README.md +20 -0
- package/dist/browser/commands.d.ts +29 -0
- package/dist/browser/commands.d.ts.map +1 -0
- package/dist/browser/commands.js +361 -0
- package/dist/browser/commands.js.map +1 -0
- package/dist/browser/control.d.ts +79 -0
- package/dist/browser/control.d.ts.map +1 -0
- package/dist/browser/control.js +140 -0
- package/dist/browser/control.js.map +1 -0
- package/dist/browser/describe.d.ts +12 -0
- package/dist/browser/describe.d.ts.map +1 -0
- package/dist/browser/describe.js +27 -0
- package/dist/browser/describe.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +29 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +1 -0
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/browser.d.ts +7 -0
- package/dist/commands/browser.d.ts.map +1 -0
- package/dist/commands/browser.js +16 -0
- package/dist/commands/browser.js.map +1 -0
- package/dist/commands/drain.d.ts +2 -1
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +6 -3
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/exec-flags.d.ts +2 -1
- package/dist/commands/exec-flags.d.ts.map +1 -1
- package/dist/commands/exec-flags.js +6 -3
- package/dist/commands/exec-flags.js.map +1 -1
- package/dist/commands/exec-json.d.ts.map +1 -1
- package/dist/commands/exec-json.js +2 -1
- package/dist/commands/exec-json.js.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +2 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/host-queries.d.ts.map +1 -1
- package/dist/commands/host-queries.js +10 -3
- package/dist/commands/host-queries.js.map +1 -1
- package/dist/commands/schedule.d.ts +9 -0
- package/dist/commands/schedule.d.ts.map +1 -0
- package/dist/commands/schedule.js +126 -0
- package/dist/commands/schedule.js.map +1 -0
- package/dist/commands/serve.d.ts +3 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +5 -3
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/skills.d.ts +10 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +23 -7
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/upgrade.d.ts +5 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +11 -0
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/config/load.d.ts +39 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +232 -1
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +78 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/user-config.d.ts +23 -0
- package/dist/config/user-config.d.ts.map +1 -0
- package/dist/config/user-config.js +48 -0
- package/dist/config/user-config.js.map +1 -0
- package/dist/context/capabilities.d.ts +1 -1
- package/dist/context/capabilities.d.ts.map +1 -1
- package/dist/context/capabilities.js +1 -0
- package/dist/context/capabilities.js.map +1 -1
- package/dist/doctor/checks/browser.d.ts +15 -0
- package/dist/doctor/checks/browser.d.ts.map +1 -0
- package/dist/doctor/checks/browser.js +63 -0
- package/dist/doctor/checks/browser.js.map +1 -0
- package/dist/doctor/checks/index.d.ts +4 -1
- package/dist/doctor/checks/index.d.ts.map +1 -1
- package/dist/doctor/checks/index.js +8 -1
- package/dist/doctor/checks/index.js.map +1 -1
- package/dist/doctor/checks/scheduler.d.ts +10 -0
- package/dist/doctor/checks/scheduler.d.ts.map +1 -0
- package/dist/doctor/checks/scheduler.js +74 -0
- package/dist/doctor/checks/scheduler.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/notifications/desktop/freedesktop.d.ts +10 -0
- package/dist/integrations/notifications/desktop/freedesktop.d.ts.map +1 -0
- package/dist/integrations/notifications/desktop/freedesktop.js +33 -0
- package/dist/integrations/notifications/desktop/freedesktop.js.map +1 -0
- package/dist/integrations/notifications/desktop/macos.d.ts +6 -0
- package/dist/integrations/notifications/desktop/macos.d.ts.map +1 -0
- package/dist/integrations/notifications/desktop/macos.js +17 -0
- package/dist/integrations/notifications/desktop/macos.js.map +1 -0
- package/dist/integrations/notifications/desktop/sanitize.d.ts +16 -0
- package/dist/integrations/notifications/desktop/sanitize.d.ts.map +1 -0
- package/dist/integrations/notifications/desktop/sanitize.js +49 -0
- package/dist/integrations/notifications/desktop/sanitize.js.map +1 -0
- package/dist/integrations/notifications/desktop/throttle.d.ts +10 -0
- package/dist/integrations/notifications/desktop/throttle.d.ts.map +1 -0
- package/dist/integrations/notifications/desktop/throttle.js +39 -0
- package/dist/integrations/notifications/desktop/throttle.js.map +1 -0
- package/dist/integrations/notifications/desktop/windows-toast.d.ts +23 -0
- package/dist/integrations/notifications/desktop/windows-toast.d.ts.map +1 -0
- package/dist/integrations/notifications/desktop/windows-toast.js +56 -0
- package/dist/integrations/notifications/desktop/windows-toast.js.map +1 -0
- package/dist/integrations/notifications/desktop.d.ts +82 -0
- package/dist/integrations/notifications/desktop.d.ts.map +1 -0
- package/dist/integrations/notifications/desktop.js +198 -0
- package/dist/integrations/notifications/desktop.js.map +1 -0
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +1 -0
- package/dist/integrations/resident/session-step.js.map +1 -1
- package/dist/integrations/subagents/runtime.d.ts +6 -0
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +14 -5
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/permissions/browser-sites.d.ts +95 -0
- package/dist/permissions/browser-sites.d.ts.map +1 -0
- package/dist/permissions/browser-sites.js +270 -0
- package/dist/permissions/browser-sites.js.map +1 -0
- package/dist/permissions/checks.d.ts.map +1 -1
- package/dist/permissions/checks.js +7 -1
- package/dist/permissions/checks.js.map +1 -1
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/rules.js +4 -8
- package/dist/permissions/rules.js.map +1 -1
- package/dist/schedule/build.d.ts +79 -0
- package/dist/schedule/build.d.ts.map +1 -0
- package/dist/schedule/build.js +246 -0
- package/dist/schedule/build.js.map +1 -0
- package/dist/schedule/changes.d.ts +22 -0
- package/dist/schedule/changes.d.ts.map +1 -0
- package/dist/schedule/changes.js +55 -0
- package/dist/schedule/changes.js.map +1 -0
- package/dist/schedule/commands/add.d.ts +24 -0
- package/dist/schedule/commands/add.d.ts.map +1 -0
- package/dist/schedule/commands/add.js +459 -0
- package/dist/schedule/commands/add.js.map +1 -0
- package/dist/schedule/commands/args.d.ts +22 -0
- package/dist/schedule/commands/args.d.ts.map +1 -0
- package/dist/schedule/commands/args.js +80 -0
- package/dist/schedule/commands/args.js.map +1 -0
- package/dist/schedule/commands/confirm-prompt.d.ts +6 -0
- package/dist/schedule/commands/confirm-prompt.d.ts.map +1 -0
- package/dist/schedule/commands/confirm-prompt.js +21 -0
- package/dist/schedule/commands/confirm-prompt.js.map +1 -0
- package/dist/schedule/commands/lifecycle.d.ts +39 -0
- package/dist/schedule/commands/lifecycle.d.ts.map +1 -0
- package/dist/schedule/commands/lifecycle.js +585 -0
- package/dist/schedule/commands/lifecycle.js.map +1 -0
- package/dist/schedule/commands/list.d.ts +33 -0
- package/dist/schedule/commands/list.d.ts.map +1 -0
- package/dist/schedule/commands/list.js +202 -0
- package/dist/schedule/commands/list.js.map +1 -0
- package/dist/schedule/commands/logs.d.ts +7 -0
- package/dist/schedule/commands/logs.d.ts.map +1 -0
- package/dist/schedule/commands/logs.js +106 -0
- package/dist/schedule/commands/logs.js.map +1 -0
- package/dist/schedule/commands/service.d.ts +16 -0
- package/dist/schedule/commands/service.d.ts.map +1 -0
- package/dist/schedule/commands/service.js +458 -0
- package/dist/schedule/commands/service.js.map +1 -0
- package/dist/schedule/daemon/daemon.d.ts +156 -0
- package/dist/schedule/daemon/daemon.d.ts.map +1 -0
- package/dist/schedule/daemon/daemon.js +1248 -0
- package/dist/schedule/daemon/daemon.js.map +1 -0
- package/dist/schedule/daemon/endpoint.d.ts +38 -0
- package/dist/schedule/daemon/endpoint.d.ts.map +1 -0
- package/dist/schedule/daemon/endpoint.js +158 -0
- package/dist/schedule/daemon/endpoint.js.map +1 -0
- package/dist/schedule/daemon/exit.d.ts +8 -0
- package/dist/schedule/daemon/exit.d.ts.map +1 -0
- package/dist/schedule/daemon/exit.js +8 -0
- package/dist/schedule/daemon/exit.js.map +1 -0
- package/dist/schedule/daemon/log.d.ts +12 -0
- package/dist/schedule/daemon/log.d.ts.map +1 -0
- package/dist/schedule/daemon/log.js +53 -0
- package/dist/schedule/daemon/log.js.map +1 -0
- package/dist/schedule/daemon/notify.d.ts +31 -0
- package/dist/schedule/daemon/notify.d.ts.map +1 -0
- package/dist/schedule/daemon/notify.js +89 -0
- package/dist/schedule/daemon/notify.js.map +1 -0
- package/dist/schedule/daemon/retention.d.ts +16 -0
- package/dist/schedule/daemon/retention.d.ts.map +1 -0
- package/dist/schedule/daemon/retention.js +46 -0
- package/dist/schedule/daemon/retention.js.map +1 -0
- package/dist/schedule/daemon/sessions.d.ts +23 -0
- package/dist/schedule/daemon/sessions.d.ts.map +1 -0
- package/dist/schedule/daemon/sessions.js +52 -0
- package/dist/schedule/daemon/sessions.js.map +1 -0
- package/dist/schedule/env.d.ts +28 -0
- package/dist/schedule/env.d.ts.map +1 -0
- package/dist/schedule/env.js +99 -0
- package/dist/schedule/env.js.map +1 -0
- package/dist/schedule/fire/browser-preflight.d.ts +41 -0
- package/dist/schedule/fire/browser-preflight.d.ts.map +1 -0
- package/dist/schedule/fire/browser-preflight.js +73 -0
- package/dist/schedule/fire/browser-preflight.js.map +1 -0
- package/dist/schedule/fire/fire.d.ts +78 -0
- package/dist/schedule/fire/fire.d.ts.map +1 -0
- package/dist/schedule/fire/fire.js +482 -0
- package/dist/schedule/fire/fire.js.map +1 -0
- package/dist/schedule/fire/result.d.ts +13 -0
- package/dist/schedule/fire/result.d.ts.map +1 -0
- package/dist/schedule/fire/result.js +18 -0
- package/dist/schedule/fire/result.js.map +1 -0
- package/dist/schedule/fire/unattended-note.d.ts +22 -0
- package/dist/schedule/fire/unattended-note.d.ts.map +1 -0
- package/dist/schedule/fire/unattended-note.js +46 -0
- package/dist/schedule/fire/unattended-note.js.map +1 -0
- package/dist/schedule/floor.d.ts +116 -0
- package/dist/schedule/floor.d.ts.map +1 -0
- package/dist/schedule/floor.js +1051 -0
- package/dist/schedule/floor.js.map +1 -0
- package/dist/schedule/folder.d.ts +34 -0
- package/dist/schedule/folder.d.ts.map +1 -0
- package/dist/schedule/folder.js +84 -0
- package/dist/schedule/folder.js.map +1 -0
- package/dist/schedule/paths.d.ts +49 -0
- package/dist/schedule/paths.d.ts.map +1 -0
- package/dist/schedule/paths.js +53 -0
- package/dist/schedule/paths.js.map +1 -0
- package/dist/schedule/policy.d.ts +141 -0
- package/dist/schedule/policy.d.ts.map +1 -0
- package/dist/schedule/policy.js +378 -0
- package/dist/schedule/policy.js.map +1 -0
- package/dist/schedule/resume-command.d.ts +36 -0
- package/dist/schedule/resume-command.d.ts.map +1 -0
- package/dist/schedule/resume-command.js +72 -0
- package/dist/schedule/resume-command.js.map +1 -0
- package/dist/schedule/service/detect.d.ts +22 -0
- package/dist/schedule/service/detect.d.ts.map +1 -0
- package/dist/schedule/service/detect.js +29 -0
- package/dist/schedule/service/detect.js.map +1 -0
- package/dist/schedule/service/index.d.ts +48 -0
- package/dist/schedule/service/index.d.ts.map +1 -0
- package/dist/schedule/service/index.js +352 -0
- package/dist/schedule/service/index.js.map +1 -0
- package/dist/schedule/service/launchd.d.ts +24 -0
- package/dist/schedule/service/launchd.d.ts.map +1 -0
- package/dist/schedule/service/launchd.js +84 -0
- package/dist/schedule/service/launchd.js.map +1 -0
- package/dist/schedule/service/manifest.d.ts +44 -0
- package/dist/schedule/service/manifest.d.ts.map +1 -0
- package/dist/schedule/service/manifest.js +16 -0
- package/dist/schedule/service/manifest.js.map +1 -0
- package/dist/schedule/service/names.d.ts +9 -0
- package/dist/schedule/service/names.d.ts.map +1 -0
- package/dist/schedule/service/names.js +22 -0
- package/dist/schedule/service/names.js.map +1 -0
- package/dist/schedule/service/quote.d.ts +24 -0
- package/dist/schedule/service/quote.d.ts.map +1 -0
- package/dist/schedule/service/quote.js +64 -0
- package/dist/schedule/service/quote.js.map +1 -0
- package/dist/schedule/service/runner.d.ts +17 -0
- package/dist/schedule/service/runner.d.ts.map +1 -0
- package/dist/schedule/service/runner.js +31 -0
- package/dist/schedule/service/runner.js.map +1 -0
- package/dist/schedule/service/systemd.d.ts +37 -0
- package/dist/schedule/service/systemd.d.ts.map +1 -0
- package/dist/schedule/service/systemd.js +96 -0
- package/dist/schedule/service/systemd.js.map +1 -0
- package/dist/schedule/service/windows-task.d.ts +51 -0
- package/dist/schedule/service/windows-task.d.ts.map +1 -0
- package/dist/schedule/service/windows-task.js +134 -0
- package/dist/schedule/service/windows-task.js.map +1 -0
- package/dist/schedule/service/wsl.d.ts +57 -0
- package/dist/schedule/service/wsl.d.ts.map +1 -0
- package/dist/schedule/service/wsl.js +111 -0
- package/dist/schedule/service/wsl.js.map +1 -0
- package/dist/schedule/store/atomic.d.ts +43 -0
- package/dist/schedule/store/atomic.d.ts.map +1 -0
- package/dist/schedule/store/atomic.js +135 -0
- package/dist/schedule/store/atomic.js.map +1 -0
- package/dist/schedule/store/claims.d.ts +26 -0
- package/dist/schedule/store/claims.d.ts.map +1 -0
- package/dist/schedule/store/claims.js +57 -0
- package/dist/schedule/store/claims.js.map +1 -0
- package/dist/schedule/store/digest.d.ts +18 -0
- package/dist/schedule/store/digest.d.ts.map +1 -0
- package/dist/schedule/store/digest.js +139 -0
- package/dist/schedule/store/digest.js.map +1 -0
- package/dist/schedule/store/history.d.ts +21 -0
- package/dist/schedule/store/history.d.ts.map +1 -0
- package/dist/schedule/store/history.js +114 -0
- package/dist/schedule/store/history.js.map +1 -0
- package/dist/schedule/store/jobs.d.ts +61 -0
- package/dist/schedule/store/jobs.d.ts.map +1 -0
- package/dist/schedule/store/jobs.js +210 -0
- package/dist/schedule/store/jobs.js.map +1 -0
- package/dist/schedule/store/state.d.ts +19 -0
- package/dist/schedule/store/state.d.ts.map +1 -0
- package/dist/schedule/store/state.js +38 -0
- package/dist/schedule/store/state.js.map +1 -0
- package/dist/schedule/types.d.ts +256 -0
- package/dist/schedule/types.d.ts.map +1 -0
- package/dist/schedule/types.js +9 -0
- package/dist/schedule/types.js.map +1 -0
- package/dist/skills/catalog.d.ts +96 -0
- package/dist/skills/catalog.d.ts.map +1 -0
- package/dist/skills/catalog.js +226 -0
- package/dist/skills/catalog.js.map +1 -0
- package/dist/skills/save.d.ts +148 -0
- package/dist/skills/save.d.ts.map +1 -0
- package/dist/skills/save.js +344 -0
- package/dist/skills/save.js.map +1 -0
- package/dist/skills/store.d.ts +103 -16
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +230 -29
- package/dist/skills/store.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +591 -72
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +8 -1
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/LiveActivity.js +20 -4
- package/dist/tui/LiveActivity.js.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +24 -4
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +113 -15
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/SaveSkillOverlay.d.ts +33 -0
- package/dist/tui/SaveSkillOverlay.d.ts.map +1 -0
- package/dist/tui/SaveSkillOverlay.js +118 -0
- package/dist/tui/SaveSkillOverlay.js.map +1 -0
- package/dist/tui/agent.d.ts +185 -5
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +325 -54
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/browser-notices.d.ts +33 -0
- package/dist/tui/browser-notices.d.ts.map +1 -0
- package/dist/tui/browser-notices.js +102 -0
- package/dist/tui/browser-notices.js.map +1 -0
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +53 -4
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/schedule/host-commands.d.ts +34 -0
- package/dist/tui/schedule/host-commands.d.ts.map +1 -0
- package/dist/tui/schedule/host-commands.js +309 -0
- package/dist/tui/schedule/host-commands.js.map +1 -0
- package/dist/tui/schedule/integration.d.ts +62 -0
- package/dist/tui/schedule/integration.d.ts.map +1 -0
- package/dist/tui/schedule/integration.js +145 -0
- package/dist/tui/schedule/integration.js.map +1 -0
- package/dist/tui/schedule/loop-host.d.ts +42 -0
- package/dist/tui/schedule/loop-host.d.ts.map +1 -0
- package/dist/tui/schedule/loop-host.js +153 -0
- package/dist/tui/schedule/loop-host.js.map +1 -0
- package/dist/tui/schedule/resume.d.ts +122 -0
- package/dist/tui/schedule/resume.d.ts.map +1 -0
- package/dist/tui/schedule/resume.js +324 -0
- package/dist/tui/schedule/resume.js.map +1 -0
- package/dist/tui/schedule/startup.d.ts +11 -0
- package/dist/tui/schedule/startup.d.ts.map +1 -0
- package/dist/tui/schedule/startup.js +121 -0
- package/dist/tui/schedule/startup.js.map +1 -0
- package/dist/tui/schedule/tool-host.d.ts +44 -0
- package/dist/tui/schedule/tool-host.d.ts.map +1 -0
- package/dist/tui/schedule/tool-host.js +294 -0
- package/dist/tui/schedule/tool-host.js.map +1 -0
- package/dist/tui/skills/learning.d.ts +74 -0
- package/dist/tui/skills/learning.d.ts.map +1 -0
- package/dist/tui/skills/learning.js +131 -0
- package/dist/tui/skills/learning.js.map +1 -0
- package/dist/tui/skills/suggest-setting.d.ts +22 -0
- package/dist/tui/skills/suggest-setting.d.ts.map +1 -0
- package/dist/tui/skills/suggest-setting.js +55 -0
- package/dist/tui/skills/suggest-setting.js.map +1 -0
- package/dist/tui/skills/suggestion-ledger.d.ts +35 -0
- package/dist/tui/skills/suggestion-ledger.d.ts.map +1 -0
- package/dist/tui/skills/suggestion-ledger.js +52 -0
- package/dist/tui/skills/suggestion-ledger.js.map +1 -0
- package/dist/tui/slashCommands.d.ts +20 -0
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +76 -2
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/turn-interruption.d.ts +20 -1
- package/dist/tui/turn-interruption.d.ts.map +1 -1
- package/dist/tui/turn-interruption.js +43 -0
- package/dist/tui/turn-interruption.js.map +1 -1
- package/dist/tui/types.d.ts +9 -1
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/skills/README.md +15 -0
- package/skills/browser-automation/SKILL.md +84 -0
- package/skills/schedule-task/SKILL.md +140 -0
- package/skills/skill-creator/SKILL.md +101 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write one key of the user config (`$NAMZU_HOME/config.yaml`), keeping the
|
|
3
|
+
* rest of the file — comments, order, other keys — as the operator wrote it.
|
|
4
|
+
*
|
|
5
|
+
* For switches the operator flips from the terminal (`/skills save off`).
|
|
6
|
+
* The file is parsed as a YAML document, the one path is set, and the result
|
|
7
|
+
* is written through a temporary file and a rename. A file that does not
|
|
8
|
+
* parse is refused rather than rewritten: rewriting it would drop whatever
|
|
9
|
+
* the operator was in the middle of writing.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { dirname, join } from 'node:path';
|
|
13
|
+
import { Document, isMap, parseDocument } from 'yaml';
|
|
14
|
+
import { resolveNamzuHome } from '../integrations/state/home.js';
|
|
15
|
+
export function userConfigPath(opts = {}) {
|
|
16
|
+
return join(resolveNamzuHome({ ...(opts.home ? { home: opts.home } : {}), env: opts.env ?? process.env }), 'config.yaml');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Set `path` (for example `['skills', 'suggest']`) to `value` in the user
|
|
20
|
+
* config and return the file written. Throws with a sentence naming the file
|
|
21
|
+
* when it cannot be read as YAML or written.
|
|
22
|
+
*/
|
|
23
|
+
export function setUserConfigValue(path, value, opts = {}) {
|
|
24
|
+
const file = userConfigPath(opts);
|
|
25
|
+
const exists = existsSync(file);
|
|
26
|
+
const text = exists ? readFileSync(file, 'utf8') : '';
|
|
27
|
+
const doc = text.trim().length > 0 ? parseDocument(text) : new Document({});
|
|
28
|
+
if (doc.errors.length > 0) {
|
|
29
|
+
throw new Error(`${file} is not valid YAML (${doc.errors[0]?.message ?? 'parse error'}); fix it first`);
|
|
30
|
+
}
|
|
31
|
+
if (doc.contents !== null && !isMap(doc.contents)) {
|
|
32
|
+
throw new Error(`${file} is not a mapping of settings; fix it first`);
|
|
33
|
+
}
|
|
34
|
+
for (let depth = 1; depth < path.length; depth += 1) {
|
|
35
|
+
const parent = doc.getIn(path.slice(0, depth), true);
|
|
36
|
+
if (parent !== undefined && parent !== null && !isMap(parent)) {
|
|
37
|
+
throw new Error(`${file}: ${path.slice(0, depth).join('.')} is not a mapping; fix it first`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
doc.setIn(path, value);
|
|
41
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
42
|
+
const temp = `${file}.${process.pid}.tmp`;
|
|
43
|
+
// The file keeps its own permissions; a new one is the owner's alone.
|
|
44
|
+
writeFileSync(temp, doc.toString(), { mode: exists ? statSync(file).mode & 0o777 : 0o600 });
|
|
45
|
+
renameSync(temp, file);
|
|
46
|
+
return file;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=user-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ export type CapabilityProbe = {
|
|
|
60
60
|
* CLI-consumed capability added here with no check wired to it is exactly the gap
|
|
61
61
|
* `doctor/checks/__tests__/index.test.ts` fails the build on.
|
|
62
62
|
*/
|
|
63
|
-
export declare const NAMZU_OPTIONAL_CAPABILITIES: readonly ["@namzu/sandbox", "@namzu/files", "@namzu/computer-use", "@namzu/telemetry"];
|
|
63
|
+
export declare const NAMZU_OPTIONAL_CAPABILITIES: readonly ["@namzu/sandbox", "@namzu/files", "@namzu/computer-use", "@namzu/browser", "@namzu/telemetry"];
|
|
64
64
|
/**
|
|
65
65
|
* The `DoctorCheck.id` a capability's probe is registered under —
|
|
66
66
|
* `@namzu/computer-use` → `computer-use.installed`, matching the id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/context/capabilities.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,MAAM,eAAe,GACxB;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/context/capabilities.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,MAAM,eAAe,GACxB;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,0GAM9B,CAAA;AAEV;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG3D;AA6ED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA+BtF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAI7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/context/capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/context/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DoctorCheck, DoctorCheckResult } from '@namzu/sdk';
|
|
2
|
+
type BrowserModule = typeof import('@namzu/browser');
|
|
3
|
+
/**
|
|
4
|
+
* Where the browser tools would run on this machine: the engine plan
|
|
5
|
+
* `@namzu/browser` detects, without launching anything.
|
|
6
|
+
*
|
|
7
|
+
* `browser.installed` answers whether the package loads; this answers the
|
|
8
|
+
* next question an operator has, which is whether it can drive a browser
|
|
9
|
+
* here and which one. An engine that cannot run is `warn`, not `fail`: the
|
|
10
|
+
* browser is optional and namzu runs without it.
|
|
11
|
+
*/
|
|
12
|
+
export declare function describeBrowserEngine(env: NodeJS.ProcessEnv, platform?: NodeJS.Platform, load?: () => Promise<BrowserModule>): Promise<DoctorCheckResult>;
|
|
13
|
+
export declare const browserEngineCheck: DoctorCheck;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAKhE,KAAK,aAAa,GAAG,cAAc,gBAAgB,CAAC,CAAA;AAEpD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAC1C,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAM,OAAO,CAAC,aAAa,CAAkC,GACjE,OAAO,CAAC,iBAAiB,CAAC,CA8C5B;AAED,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describeBrowserPlan } from '../../browser/describe.js';
|
|
2
|
+
import { probeOptionalPackage } from '../../context/capabilities.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where the browser tools would run on this machine: the engine plan
|
|
5
|
+
* `@namzu/browser` detects, without launching anything.
|
|
6
|
+
*
|
|
7
|
+
* `browser.installed` answers whether the package loads; this answers the
|
|
8
|
+
* next question an operator has, which is whether it can drive a browser
|
|
9
|
+
* here and which one. An engine that cannot run is `warn`, not `fail`: the
|
|
10
|
+
* browser is optional and namzu runs without it.
|
|
11
|
+
*/
|
|
12
|
+
export async function describeBrowserEngine(env, platform = process.platform, load = () => import('@namzu/browser')) {
|
|
13
|
+
const probe = await probeOptionalPackage('@namzu/browser');
|
|
14
|
+
if (probe.state !== 'present') {
|
|
15
|
+
return {
|
|
16
|
+
status: 'skipped',
|
|
17
|
+
message: probe.state === 'absent'
|
|
18
|
+
? '@namzu/browser not installed; no browser tools'
|
|
19
|
+
: '@namzu/browser failed to load; see browser.installed',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
let mod;
|
|
23
|
+
try {
|
|
24
|
+
mod = await load();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return {
|
|
28
|
+
status: 'skipped',
|
|
29
|
+
message: `@namzu/browser failed to load: ${error instanceof Error ? error.message : String(error)}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const detected = mod.detectBrowserEnvironment(env, platform);
|
|
33
|
+
const plan = mod.runnableBrowserPlan(detected);
|
|
34
|
+
const notes = plan.warnings.length > 0 ? ` (${plan.warnings.join(' ')})` : '';
|
|
35
|
+
if (plan.unavailableReason !== undefined) {
|
|
36
|
+
return {
|
|
37
|
+
status: 'warn',
|
|
38
|
+
message: `no browser can run here: ${plan.unavailableReason}`,
|
|
39
|
+
remediation: plan.engine === 'local' && plan.browser === 'chromium'
|
|
40
|
+
? 'namzu browser install'
|
|
41
|
+
: 'Install Google Chrome, or set browser.engine in your config.',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (plan.engine === 'local' && plan.browser === 'chromium') {
|
|
45
|
+
// Playwright's own build: present only after `namzu browser install`
|
|
46
|
+
// (or an earlier Playwright install) put it in the browser cache.
|
|
47
|
+
return {
|
|
48
|
+
status: 'pass',
|
|
49
|
+
message: `${describeBrowserPlan(plan)}${notes}`,
|
|
50
|
+
remediation: 'If the first browser call says Chromium is missing: namzu browser install',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
status: plan.warnings.length > 0 ? 'warn' : 'pass',
|
|
55
|
+
message: `${describeBrowserPlan(plan)}${notes}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export const browserEngineCheck = {
|
|
59
|
+
id: 'browser.engine',
|
|
60
|
+
category: 'custom',
|
|
61
|
+
run: (ctx) => describeBrowserEngine(ctx.env),
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/doctor/checks/browser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAIpE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,GAAsB,EACtB,WAA4B,OAAO,CAAC,QAAQ,EAC5C,OAAqC,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAEnE,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACN,MAAM,EAAE,SAAS;YACjB,OAAO,EACN,KAAK,CAAC,KAAK,KAAK,QAAQ;gBACvB,CAAC,CAAC,gDAAgD;gBAClD,CAAC,CAAC,sDAAsD;SAC1D,CAAA;IACF,CAAC;IACD,IAAI,GAAkB,CAAA;IACtB,IAAI,CAAC;QACJ,GAAG,GAAG,MAAM,IAAI,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACnG,CAAA;IACF,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;YACN,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,4BAA4B,IAAI,CAAC,iBAAiB,EAAE;YAC7D,WAAW,EACV,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU;gBACrD,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,8DAA8D;SAClE,CAAA;IACF,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC5D,qEAAqE;QACrE,kEAAkE;QAClE,OAAO;YACN,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC/C,WAAW,EAAE,2EAA2E;SACxF,CAAA;IACF,CAAC;IACD,OAAO;QACN,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAClD,OAAO,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;KAC/C,CAAA;AACF,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC9C,EAAE,EAAE,gBAAgB;IACpB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC,GAAG,EAA8B,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAwB,CAAC;CAC7F,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DoctorCheck } from '@namzu/sdk';
|
|
2
|
+
import { browserEngineCheck } from './browser.js';
|
|
2
3
|
import { providerChainCheck } from './chain.js';
|
|
3
4
|
import { credentialSourcesCheck } from './credentials.js';
|
|
4
5
|
import { invariantsCheck } from './invariants.js';
|
|
@@ -6,11 +7,13 @@ import { loggingPipelineCheck } from './logging.js';
|
|
|
6
7
|
import { providersRegisteredCheck } from './providers.js';
|
|
7
8
|
import { cwdWritableCheck, tmpdirWritableCheck } from './runtime.js';
|
|
8
9
|
import { sandboxPlatformCheck } from './sandbox.js';
|
|
10
|
+
import { schedulerCheck } from './scheduler.js';
|
|
9
11
|
import { telemetryInstalledCheck } from './telemetry.js';
|
|
10
12
|
import { vaultRegisteredCheck } from './vault.js';
|
|
11
13
|
export declare const sandboxInstalledCheck: DoctorCheck;
|
|
12
14
|
export declare const filesInstalledCheck: DoctorCheck;
|
|
13
15
|
export declare const computerUseInstalledCheck: DoctorCheck;
|
|
14
|
-
export
|
|
16
|
+
export declare const browserInstalledCheck: DoctorCheck;
|
|
17
|
+
export { browserEngineCheck, credentialSourcesCheck, providerChainCheck, providersRegisteredCheck, cwdWritableCheck, tmpdirWritableCheck, invariantsCheck, loggingPipelineCheck, sandboxPlatformCheck, schedulerCheck, telemetryInstalledCheck, vaultRegisteredCheck, };
|
|
15
18
|
export declare const builtInDoctorChecks: readonly DoctorCheck[];
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAA;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAA4B,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AA2BjD,eAAO,MAAM,qBAAqB,EAAE,WAAyD,CAAA;AAC7F,eAAO,MAAM,mBAAmB,EAAE,WAAsD,CAAA;AACxF,eAAO,MAAM,yBAAyB,EAAE,WAGvC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAA;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAA4B,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AA2BjD,eAAO,MAAM,qBAAqB,EAAE,WAAyD,CAAA;AAC7F,eAAO,MAAM,mBAAmB,EAAE,WAAsD,CAAA;AACxF,eAAO,MAAM,yBAAyB,EAAE,WAGvC,CAAA;AACD,eAAO,MAAM,qBAAqB,EAAE,WAAwD,CAAA;AAO5F,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,GACpB,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAwBrD,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { capabilityCheckId } from '../../context/capabilities.js';
|
|
2
|
+
import { browserEngineCheck } from './browser.js';
|
|
2
3
|
import { providerChainCheck } from './chain.js';
|
|
3
4
|
import { credentialSourcesCheck } from './credentials.js';
|
|
4
5
|
import { invariantsCheck } from './invariants.js';
|
|
@@ -6,6 +7,7 @@ import { loggingPipelineCheck } from './logging.js';
|
|
|
6
7
|
import { providersRegisteredCheck } from './providers.js';
|
|
7
8
|
import { cwdWritableCheck, tmpdirWritableCheck } from './runtime.js';
|
|
8
9
|
import { sandboxPlatformCheck } from './sandbox.js';
|
|
10
|
+
import { schedulerCheck } from './scheduler.js';
|
|
9
11
|
import { describeInstalledPackage, telemetryInstalledCheck } from './telemetry.js';
|
|
10
12
|
import { vaultRegisteredCheck } from './vault.js';
|
|
11
13
|
/**
|
|
@@ -35,12 +37,13 @@ function installedCheck(specifier, category) {
|
|
|
35
37
|
export const sandboxInstalledCheck = installedCheck('@namzu/sandbox', 'sandbox');
|
|
36
38
|
export const filesInstalledCheck = installedCheck('@namzu/files', 'custom');
|
|
37
39
|
export const computerUseInstalledCheck = installedCheck('@namzu/computer-use', 'custom');
|
|
40
|
+
export const browserInstalledCheck = installedCheck('@namzu/browser', 'custom');
|
|
38
41
|
// NOTE the fix versus the original submission: sandboxInstalledCheck /
|
|
39
42
|
// filesInstalledCheck / computerUseInstalledCheck are NOT repeated here.
|
|
40
43
|
// They already carry their own `export` keyword above; naming them again in
|
|
41
44
|
// this aggregation block is a duplicate-export declaration and fails
|
|
42
45
|
// `tsc --build` with TS2323/TS2484 (confirmed by building this exact file).
|
|
43
|
-
export { credentialSourcesCheck, providerChainCheck, providersRegisteredCheck, cwdWritableCheck, tmpdirWritableCheck, invariantsCheck, loggingPipelineCheck, sandboxPlatformCheck, telemetryInstalledCheck, vaultRegisteredCheck, };
|
|
46
|
+
export { browserEngineCheck, credentialSourcesCheck, providerChainCheck, providersRegisteredCheck, cwdWritableCheck, tmpdirWritableCheck, invariantsCheck, loggingPipelineCheck, sandboxPlatformCheck, schedulerCheck, telemetryInstalledCheck, vaultRegisteredCheck, };
|
|
44
47
|
export const builtInDoctorChecks = [
|
|
45
48
|
sandboxPlatformCheck,
|
|
46
49
|
cwdWritableCheck,
|
|
@@ -55,7 +58,11 @@ export const builtInDoctorChecks = [
|
|
|
55
58
|
sandboxInstalledCheck,
|
|
56
59
|
filesInstalledCheck,
|
|
57
60
|
computerUseInstalledCheck,
|
|
61
|
+
browserInstalledCheck,
|
|
62
|
+
// After the package check: which browser it would drive here, and how.
|
|
63
|
+
browserEngineCheck,
|
|
58
64
|
telemetryInstalledCheck,
|
|
65
|
+
schedulerCheck,
|
|
59
66
|
// Last, deliberately: it reports what the pipeline did to the records
|
|
60
67
|
// every check above it just produced, so running it first would report a
|
|
61
68
|
// process that had barely logged anything yet.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/checks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,SAAiB,EAAE,QAAiC;IAC3E,OAAO;QACN,EAAE,EAAE,iBAAiB,CAAC,SAAS,CAAC;QAChC,QAAQ;QACR,GAAG,EAAE,GAA+B,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC;KAC1E,CAAA;AACF,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,mEAAmE;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAgB,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAgB,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAgB,cAAc,CACnE,qBAAqB,EACrB,QAAQ,CACR,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/checks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,SAAiB,EAAE,QAAiC;IAC3E,OAAO;QACN,EAAE,EAAE,iBAAiB,CAAC,SAAS,CAAC;QAChC,QAAQ;QACR,GAAG,EAAE,GAA+B,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC;KAC1E,CAAA;AACF,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,mEAAmE;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAgB,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAgB,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAgB,cAAc,CACnE,qBAAqB,EACrB,QAAQ,CACR,CAAA;AACD,MAAM,CAAC,MAAM,qBAAqB,GAAgB,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;AAE5F,uEAAuE;AACvE,yEAAyE;AACzE,4EAA4E;AAC5E,qEAAqE;AACrE,4EAA4E;AAC5E,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,GACpB,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IAC1D,oBAAoB;IACpB,gBAAgB;IAChB,mBAAmB;IACnB,wBAAwB;IACxB,sBAAsB;IACtB,4EAA4E;IAC5E,0EAA0E;IAC1E,wCAAwC;IACxC,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,yBAAyB;IACzB,qBAAqB;IACrB,uEAAuE;IACvE,kBAAkB;IAClB,uBAAuB;IACvB,cAAc;IACd,sEAAsE;IACtE,yEAAyE;IACzE,+CAA+C;IAC/C,oBAAoB;IACpB,eAAe;CACf,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DoctorCheck } from '@namzu/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* The scheduler, as far as files can tell without asking a service manager:
|
|
4
|
+
* whether jobs exist without a scheduler to run them, whether the installed
|
|
5
|
+
* service points at a node and a CLI that still exist, and how long ago the
|
|
6
|
+
* daemon last wrote its heartbeat. `namzu schedule status` asks the service
|
|
7
|
+
* manager too.
|
|
8
|
+
*/
|
|
9
|
+
export declare const schedulerCheck: DoctorCheck;
|
|
10
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAA;AAMhE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,WAwD5B,CAAA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { readFileSync, realpathSync } from 'node:fs';
|
|
2
|
+
import { resolveNamzuHome } from '../../integrations/state/home.js';
|
|
3
|
+
import { schedulePaths } from '../../schedule/paths.js';
|
|
4
|
+
import { readManifest } from '../../schedule/service/manifest.js';
|
|
5
|
+
import { listJobs } from '../../schedule/store/jobs.js';
|
|
6
|
+
/**
|
|
7
|
+
* The scheduler, as far as files can tell without asking a service manager:
|
|
8
|
+
* whether jobs exist without a scheduler to run them, whether the installed
|
|
9
|
+
* service points at a node and a CLI that still exist, and how long ago the
|
|
10
|
+
* daemon last wrote its heartbeat. `namzu schedule status` asks the service
|
|
11
|
+
* manager too.
|
|
12
|
+
*/
|
|
13
|
+
export const schedulerCheck = {
|
|
14
|
+
id: 'scheduler.service',
|
|
15
|
+
category: 'runtime',
|
|
16
|
+
async run(ctx) {
|
|
17
|
+
const paths = schedulePaths(resolveNamzuHome({ env: ctx.env }));
|
|
18
|
+
let jobs = 0;
|
|
19
|
+
try {
|
|
20
|
+
jobs = listJobs(paths).jobs.filter((j) => j.state === 'active').length;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
jobs = 0;
|
|
24
|
+
}
|
|
25
|
+
let manifest;
|
|
26
|
+
try {
|
|
27
|
+
manifest = readManifest(paths);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return { status: 'fail', message: error instanceof Error ? error.message : String(error) };
|
|
31
|
+
}
|
|
32
|
+
if (!manifest) {
|
|
33
|
+
return jobs > 0
|
|
34
|
+
? {
|
|
35
|
+
status: 'warn',
|
|
36
|
+
message: `${jobs} active scheduled job(s) and no scheduler installed; they will not run`,
|
|
37
|
+
remediation: 'namzu schedule install',
|
|
38
|
+
}
|
|
39
|
+
: { status: 'skipped', message: 'no scheduled jobs and no scheduler installed' };
|
|
40
|
+
}
|
|
41
|
+
for (const path of [manifest.nodePath, manifest.binPath]) {
|
|
42
|
+
try {
|
|
43
|
+
realpathSync(path);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return {
|
|
47
|
+
status: 'fail',
|
|
48
|
+
message: `the scheduler service starts ${path}, which no longer exists`,
|
|
49
|
+
remediation: 'namzu schedule install',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
let age;
|
|
54
|
+
try {
|
|
55
|
+
const beat = JSON.parse(readFileSync(paths.heartbeat, 'utf8'));
|
|
56
|
+
age = beat.at ? Date.now() - Date.parse(beat.at) : undefined;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
age = undefined;
|
|
60
|
+
}
|
|
61
|
+
if (age === undefined || age > 90_000) {
|
|
62
|
+
return {
|
|
63
|
+
status: 'warn',
|
|
64
|
+
message: `${manifest.name} (${manifest.platform}) is installed but the daemon has not been seen ${age === undefined ? 'yet' : `for ${Math.round(age / 1000)} s`}`,
|
|
65
|
+
remediation: 'namzu schedule status',
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
status: 'pass',
|
|
70
|
+
message: `${manifest.name} (${manifest.platform}) running; ${jobs} active job(s)`,
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/doctor/checks/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IAC1C,EAAE,EAAE,mBAAmB;IACvB,QAAQ,EAAE,SAAS;IACnB,KAAK,CAAC,GAAG,CAAC,GAAG;QACZ,MAAM,KAAK,GAAG,aAAa,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAwB,EAAE,CAAC,CAAC,CAAA;QACpF,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC;YACJ,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAA;QACvE,CAAC;QAAC,MAAM,CAAC;YACR,IAAI,GAAG,CAAC,CAAA;QACT,CAAC;QACD,IAAI,QAAyC,CAAA;QAC7C,IAAI,CAAC;YACJ,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;QAC3F,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,IAAI,GAAG,CAAC;gBACd,CAAC,CAAC;oBACA,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,GAAG,IAAI,wEAAwE;oBACxF,WAAW,EAAE,wBAAwB;iBACrC;gBACF,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAA;QAClF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACJ,YAAY,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO;oBACN,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,gCAAgC,IAAI,0BAA0B;oBACvE,WAAW,EAAE,wBAAwB;iBACrC,CAAA;YACF,CAAC;QACF,CAAC;QACD,IAAI,GAAuB,CAAA;QAC3B,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAoB,CAAA;YACjF,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7D,CAAC;QAAC,MAAM,CAAC;YACR,GAAG,GAAG,SAAS,CAAA;QAChB,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;YACvC,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,mDAAmD,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;gBACjK,WAAW,EAAE,uBAAuB;aACpC,CAAA;QACF,CAAC;QACD,OAAO;YACN,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,cAAc,IAAI,gBAAgB;SACjF,CAAA;IACF,CAAC;CACD,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { createDoctorRegistry, doctor, DoctorRegistry, registerDoctorCheck, runDoctor, } from './doctor/registry.js';
|
|
7
7
|
export type { RunDoctorOptions } from './doctor/registry.js';
|
|
8
|
-
export { builtInDoctorChecks, computerUseInstalledCheck, credentialSourcesCheck, cwdWritableCheck, filesInstalledCheck, providerChainCheck, providersRegisteredCheck, sandboxInstalledCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
|
|
8
|
+
export { browserEngineCheck, browserInstalledCheck, builtInDoctorChecks, computerUseInstalledCheck, credentialSourcesCheck, cwdWritableCheck, filesInstalledCheck, providerChainCheck, providersRegisteredCheck, sandboxInstalledCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
|
|
9
9
|
export { type CapabilityProbe, NAMZU_OPTIONAL_CAPABILITIES, probeCapabilities, probeOptionalPackage, } from './context/capabilities.js';
|
|
10
10
|
export { runDoctorCommand } from './commands/doctor.js';
|
|
11
11
|
export { runCli, type RunCliOptions } from './cli.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACN,KAAK,eAAe,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACN,WAAW,EACX,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,SAAS,GACd,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EACN,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACN,KAAK,eAAe,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACN,WAAW,EACX,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,SAAS,GACd,MAAM,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// Doctor library API (pre-M0; preserved for embedded consumers).
|
|
7
7
|
export { createDoctorRegistry, doctor, DoctorRegistry, registerDoctorCheck, runDoctor, } from './doctor/registry.js';
|
|
8
|
-
export { builtInDoctorChecks, computerUseInstalledCheck, credentialSourcesCheck, cwdWritableCheck, filesInstalledCheck, providerChainCheck, providersRegisteredCheck, sandboxInstalledCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
|
|
8
|
+
export { browserEngineCheck, browserInstalledCheck, builtInDoctorChecks, computerUseInstalledCheck, credentialSourcesCheck, cwdWritableCheck, filesInstalledCheck, providerChainCheck, providersRegisteredCheck, sandboxInstalledCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
|
|
9
9
|
export { NAMZU_OPTIONAL_CAPABILITIES, probeCapabilities, probeOptionalPackage, } from './context/capabilities.js';
|
|
10
10
|
export { runDoctorCommand } from './commands/doctor.js';
|
|
11
11
|
// Shell + extension surface for the CLI.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iEAAiE;AACjE,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAEN,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,yCAAyC;AACzC,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAA;AAOrD,OAAO,EACN,WAAW,EACX,eAAe,GAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EAIf,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,wBAAwB,GAKxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,GAQd,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iEAAiE;AACjE,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACN,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAEN,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,yCAAyC;AACzC,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAA;AAOrD,OAAO,EACN,WAAW,EACX,eAAe,GAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EAIf,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,wBAAwB,GAKxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,GAQd,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Linux desktop notification over the session bus: `notify-send` when it
|
|
3
|
+
* is installed (arguments are argv, never a shell), else `gdbus`, whose
|
|
4
|
+
* arguments are GVariant text and so are quoted as GVariant strings here.
|
|
5
|
+
*/
|
|
6
|
+
/** A GVariant string literal: single-quoted, backslash and quote escaped. */
|
|
7
|
+
export declare function gvariantString(text: string): string;
|
|
8
|
+
export declare function notifySendArguments(title: string, body: string): string[];
|
|
9
|
+
export declare function gdbusArguments(title: string, body: string): string[];
|
|
10
|
+
//# sourceMappingURL=freedesktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freedesktop.d.ts","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/freedesktop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBpE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Linux desktop notification over the session bus: `notify-send` when it
|
|
3
|
+
* is installed (arguments are argv, never a shell), else `gdbus`, whose
|
|
4
|
+
* arguments are GVariant text and so are quoted as GVariant strings here.
|
|
5
|
+
*/
|
|
6
|
+
/** A GVariant string literal: single-quoted, backslash and quote escaped. */
|
|
7
|
+
export function gvariantString(text) {
|
|
8
|
+
return `'${text.replaceAll('\\', '\\\\').replaceAll("'", "\\'")}'`;
|
|
9
|
+
}
|
|
10
|
+
export function notifySendArguments(title, body) {
|
|
11
|
+
return ['--app-name=namzu', '--', title, body];
|
|
12
|
+
}
|
|
13
|
+
export function gdbusArguments(title, body) {
|
|
14
|
+
return [
|
|
15
|
+
'call',
|
|
16
|
+
'--session',
|
|
17
|
+
'--dest',
|
|
18
|
+
'org.freedesktop.Notifications',
|
|
19
|
+
'--object-path',
|
|
20
|
+
'/org/freedesktop/Notifications',
|
|
21
|
+
'--method',
|
|
22
|
+
'org.freedesktop.Notifications.Notify',
|
|
23
|
+
gvariantString('namzu'),
|
|
24
|
+
'0',
|
|
25
|
+
gvariantString(''),
|
|
26
|
+
gvariantString(title),
|
|
27
|
+
gvariantString(body),
|
|
28
|
+
'[]',
|
|
29
|
+
'{}',
|
|
30
|
+
'10000',
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=freedesktop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freedesktop.js","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/freedesktop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,IAAY;IAC9D,OAAO,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,IAAY;IACzD,OAAO;QACN,MAAM;QACN,WAAW;QACX,QAAQ;QACR,+BAA+B;QAC/B,eAAe;QACf,gCAAgC;QAChC,UAAU;QACV,sCAAsC;QACtC,cAAc,CAAC,OAAO,CAAC;QACvB,GAAG;QACH,cAAc,CAAC,EAAE,CAAC;QAClB,cAAc,CAAC,KAAK,CAAC;QACrB,cAAc,CAAC,IAAI,CAAC;QACpB,IAAI;QACJ,IAAI;QACJ,OAAO;KACP,CAAA;AACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A macOS notification through `osascript`. The title and body are argv
|
|
3
|
+
* items the script reads (`item 1 of argv`), never text spliced into it.
|
|
4
|
+
*/
|
|
5
|
+
export declare function osascriptArguments(title: string, body: string): string[];
|
|
6
|
+
//# sourceMappingURL=macos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macos.d.ts","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/macos.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A macOS notification through `osascript`. The title and body are argv
|
|
3
|
+
* items the script reads (`item 1 of argv`), never text spliced into it.
|
|
4
|
+
*/
|
|
5
|
+
export function osascriptArguments(title, body) {
|
|
6
|
+
return [
|
|
7
|
+
'-e',
|
|
8
|
+
'on run argv',
|
|
9
|
+
'-e',
|
|
10
|
+
'display notification (item 2 of argv) with title (item 1 of argv)',
|
|
11
|
+
'-e',
|
|
12
|
+
'end run',
|
|
13
|
+
title,
|
|
14
|
+
body,
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=macos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macos.js","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/macos.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,IAAY;IAC7D,OAAO;QACN,IAAI;QACJ,aAAa;QACb,IAAI;QACJ,mEAAmE;QACnE,IAAI;QACJ,SAAS;QACT,KAAK;QACL,IAAI;KACJ,CAAA;AACF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text that crosses into another program — a desktop notification, a history
|
|
3
|
+
* summary — is data, and is made safe to show as data.
|
|
4
|
+
*
|
|
5
|
+
* Control characters (C0, DEL, C1), format characters that render as nothing
|
|
6
|
+
* (zero-width space and joiners, soft hyphen, the byte-order mark) and the
|
|
7
|
+
* bidirectional controls (embeddings, overrides, isolates, marks) are removed;
|
|
8
|
+
* whitespace runs become one space; the result is capped with an ellipsis.
|
|
9
|
+
* Written over code points rather than a regular expression so the ranges are
|
|
10
|
+
* plain numbers a reader can check.
|
|
11
|
+
*/
|
|
12
|
+
/** One safe line of at most `max` characters. */
|
|
13
|
+
export declare function sanitizeLine(text: string, max: number): string;
|
|
14
|
+
/** The first non-empty line of `text`, made safe and capped: a run's summary. */
|
|
15
|
+
export declare function summaryOf(text: string, max?: number): string;
|
|
16
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAMzD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text that crosses into another program — a desktop notification, a history
|
|
3
|
+
* summary — is data, and is made safe to show as data.
|
|
4
|
+
*
|
|
5
|
+
* Control characters (C0, DEL, C1), format characters that render as nothing
|
|
6
|
+
* (zero-width space and joiners, soft hyphen, the byte-order mark) and the
|
|
7
|
+
* bidirectional controls (embeddings, overrides, isolates, marks) are removed;
|
|
8
|
+
* whitespace runs become one space; the result is capped with an ellipsis.
|
|
9
|
+
* Written over code points rather than a regular expression so the ranges are
|
|
10
|
+
* plain numbers a reader can check.
|
|
11
|
+
*/
|
|
12
|
+
const STRIPPED = [
|
|
13
|
+
[0x0000, 0x001f], // C0 controls (newline and tab too: a notification is one line)
|
|
14
|
+
[0x007f, 0x009f], // DEL and C1 controls
|
|
15
|
+
[0x00ad, 0x00ad], // soft hyphen
|
|
16
|
+
[0x061c, 0x061c], // Arabic letter mark
|
|
17
|
+
[0x180e, 0x180e], // Mongolian vowel separator
|
|
18
|
+
[0x200b, 0x200f], // zero-width space, joiners, LRM, RLM
|
|
19
|
+
[0x2028, 0x202e], // line and paragraph separators, embeddings and overrides
|
|
20
|
+
[0x2060, 0x206f], // word joiner, invisible operators, isolates, deprecated formats
|
|
21
|
+
[0xfeff, 0xfeff], // byte-order mark
|
|
22
|
+
[0xfff9, 0xfffb], // interlinear annotations
|
|
23
|
+
];
|
|
24
|
+
function stripped(code) {
|
|
25
|
+
return STRIPPED.some(([lo, hi]) => code >= lo && code <= hi);
|
|
26
|
+
}
|
|
27
|
+
/** One safe line of at most `max` characters. */
|
|
28
|
+
export function sanitizeLine(text, max) {
|
|
29
|
+
let out = '';
|
|
30
|
+
for (const ch of text) {
|
|
31
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
32
|
+
if (code === 0x09 || code === 0x0a || code === 0x0d)
|
|
33
|
+
out += ' ';
|
|
34
|
+
else if (!stripped(code))
|
|
35
|
+
out += ch;
|
|
36
|
+
}
|
|
37
|
+
out = out.replace(/\s+/g, ' ').trim();
|
|
38
|
+
const chars = [...out];
|
|
39
|
+
return chars.length > max ? `${chars.slice(0, max - 1).join('')}…` : out;
|
|
40
|
+
}
|
|
41
|
+
/** The first non-empty line of `text`, made safe and capped: a run's summary. */
|
|
42
|
+
export function summaryOf(text, max = 200) {
|
|
43
|
+
const first = text
|
|
44
|
+
.split(/\r?\n/)
|
|
45
|
+
.map((line) => line.replace(/^[#>*\-\s`]+/, '').trim())
|
|
46
|
+
.find((line) => line.length > 0);
|
|
47
|
+
return first ? sanitizeLine(first, max) : '';
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,QAAQ,GAA2C;IACxD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,gEAAgE;IAClF,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,sBAAsB;IACxC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,qBAAqB;IACvC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,4BAA4B;IAC9C,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,sCAAsC;IACxD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,0DAA0D;IAC5E,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,iEAAiE;IACnF,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB;IACpC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,0BAA0B;CAC5C,CAAA;AAED,SAAS,QAAQ,CAAC,IAAY;IAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAW;IACrD,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,GAAG,IAAI,GAAG,CAAA;aAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,GAAG,IAAI,EAAE,CAAA;IACpC,CAAC;IACD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACrC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IACtB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AACzE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IAChD,MAAM,KAAK,GAAG,IAAI;SAChB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACtD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* At most one notification per job every ten minutes and twenty a day in
|
|
3
|
+
* all; what is held back is counted, for the TUI's next startup line.
|
|
4
|
+
* Kept in `schedule/daemon/notify.json`, written only by the daemon.
|
|
5
|
+
*/
|
|
6
|
+
/** Whether a notification for `jobId` may go out now; records it when it may. */
|
|
7
|
+
export declare function admitNotification(path: string, jobId: string, now?: number): boolean;
|
|
8
|
+
/** How many notifications were held back since the count was last taken; resets it. */
|
|
9
|
+
export declare function takeSuppressedCount(path: string): number;
|
|
10
|
+
//# sourceMappingURL=throttle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../../src/integrations/notifications/desktop/throttle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO,CAUxF;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD"}
|