@phnx-labs/agents-cli 1.12.0 → 1.14.2
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 +7 -1
- package/README.md +308 -297
- package/dist/commands/alias.d.ts +11 -0
- package/dist/commands/alias.js +117 -0
- package/dist/commands/beta.d.ts +2 -0
- package/dist/commands/beta.js +53 -0
- package/dist/commands/cloud.d.ts +10 -0
- package/dist/commands/cloud.js +408 -0
- package/dist/commands/commands.d.ts +9 -1
- package/dist/commands/commands.js +24 -172
- package/dist/commands/daemon.d.ts +8 -1
- package/dist/commands/daemon.js +13 -5
- package/dist/commands/doctor.d.ts +15 -0
- package/dist/commands/doctor.js +132 -0
- package/dist/commands/drive.d.ts +8 -1
- package/dist/commands/drive.js +20 -3
- package/dist/commands/exec.d.ts +8 -1
- package/dist/commands/exec.js +207 -20
- package/dist/commands/factory.d.ts +19 -0
- package/dist/commands/factory.js +71 -0
- package/dist/commands/fork.d.ts +8 -1
- package/dist/commands/fork.js +11 -4
- package/dist/commands/hooks.d.ts +9 -1
- package/dist/commands/hooks.js +30 -182
- package/dist/commands/init.d.ts +15 -1
- package/dist/commands/init.js +168 -74
- package/dist/commands/mcp.d.ts +9 -1
- package/dist/commands/mcp.js +11 -7
- package/dist/commands/models.d.ts +8 -1
- package/dist/commands/models.js +45 -6
- package/dist/commands/packages.d.ts +8 -1
- package/dist/commands/packages.js +13 -7
- package/dist/commands/permissions.d.ts +9 -1
- package/dist/commands/permissions.js +3 -3
- package/dist/commands/plugins.d.ts +8 -1
- package/dist/commands/plugins.js +13 -2
- package/dist/commands/profiles.d.ts +11 -0
- package/dist/commands/profiles.js +291 -0
- package/dist/commands/prune.d.ts +22 -0
- package/dist/commands/prune.js +191 -0
- package/dist/commands/pty.d.ts +1 -1
- package/dist/commands/pty.js +2 -1
- package/dist/commands/pull.d.ts +8 -1
- package/dist/commands/pull.js +93 -129
- package/dist/commands/refresh-memory.d.ts +7 -1
- package/dist/commands/refresh-memory.js +7 -1
- package/dist/commands/repo.d.ts +15 -0
- package/dist/commands/repo.js +570 -0
- package/dist/commands/resource-view.d.ts +10 -3
- package/dist/commands/resource-view.js +18 -5
- package/dist/commands/routines.d.ts +8 -1
- package/dist/commands/routines.js +17 -4
- package/dist/commands/rules.d.ts +9 -1
- package/dist/commands/rules.js +16 -11
- package/dist/commands/secrets.d.ts +10 -0
- package/dist/commands/secrets.js +518 -0
- package/dist/commands/sessions-picker.d.ts +2 -1
- package/dist/commands/sessions-picker.js +88 -11
- package/dist/commands/sessions-tail.d.ts +19 -0
- package/dist/commands/sessions-tail.js +235 -0
- package/dist/commands/sessions.d.ts +2 -1
- package/dist/commands/sessions.js +288 -7
- package/dist/commands/skills.d.ts +9 -1
- package/dist/commands/skills.js +28 -178
- package/dist/commands/status.d.ts +7 -1
- package/dist/commands/status.js +7 -1
- package/dist/commands/subagents.d.ts +8 -1
- package/dist/commands/subagents.js +11 -1
- package/dist/commands/sync.d.ts +8 -1
- package/dist/commands/sync.js +8 -1
- package/dist/commands/teams-picker.d.ts +4 -1
- package/dist/commands/teams-picker.js +55 -3
- package/dist/commands/teams.d.ts +15 -1
- package/dist/commands/teams.js +323 -69
- package/dist/commands/usage.d.ts +11 -0
- package/dist/commands/usage.js +60 -0
- package/dist/commands/utils.d.ts +6 -1
- package/dist/commands/utils.js +6 -1
- package/dist/commands/versions.d.ts +8 -1
- package/dist/commands/versions.js +4 -3
- package/dist/commands/view.d.ts +47 -2
- package/dist/commands/view.js +353 -20
- package/dist/index.d.ts +7 -2
- package/dist/index.js +205 -38
- package/dist/lib/acp/client.d.ts +31 -0
- package/dist/lib/acp/client.js +117 -0
- package/dist/lib/acp/harnesses.d.ts +26 -0
- package/dist/lib/acp/harnesses.js +65 -0
- package/dist/lib/acp/run.d.ts +18 -0
- package/dist/lib/acp/run.js +39 -0
- package/dist/lib/agents.d.ts +74 -2
- package/dist/lib/agents.js +207 -23
- package/dist/lib/artifact-actions.d.ts +8 -4
- package/dist/lib/artifact-actions.js +8 -6
- package/dist/lib/auto-pull-worker.d.ts +11 -0
- package/dist/lib/auto-pull-worker.js +121 -0
- package/dist/lib/auto-pull.d.ts +31 -0
- package/dist/lib/auto-pull.js +97 -0
- package/dist/lib/beta.d.ts +23 -0
- package/dist/lib/beta.js +90 -0
- package/dist/lib/capabilities.d.ts +29 -0
- package/dist/lib/capabilities.js +74 -0
- package/dist/lib/cloud/codex.d.ts +25 -0
- package/dist/lib/cloud/codex.js +250 -0
- package/dist/lib/cloud/factory.d.ts +31 -0
- package/dist/lib/cloud/factory.js +53 -0
- package/dist/lib/cloud/registry.d.ts +15 -0
- package/dist/lib/cloud/registry.js +67 -0
- package/dist/lib/cloud/rush.d.ts +75 -0
- package/dist/lib/cloud/rush.js +438 -0
- package/dist/lib/cloud/store.d.ts +22 -0
- package/dist/lib/cloud/store.js +115 -0
- package/dist/lib/cloud/stream.d.ts +23 -0
- package/dist/lib/cloud/stream.js +194 -0
- package/dist/lib/cloud/types.d.ts +205 -0
- package/dist/lib/cloud/types.js +34 -0
- package/dist/lib/command-skills.d.ts +20 -0
- package/dist/lib/command-skills.js +142 -0
- package/dist/lib/commands.d.ts +22 -2
- package/dist/lib/commands.js +51 -11
- package/dist/lib/convert.d.ts +10 -1
- package/dist/lib/convert.js +9 -1
- package/dist/lib/daemon.d.ts +21 -1
- package/dist/lib/daemon.js +97 -4
- package/dist/lib/drive-sync.d.ts +18 -1
- package/dist/lib/drive-sync.js +57 -15
- package/dist/lib/exec.d.ts +25 -5
- package/dist/lib/exec.js +72 -27
- package/dist/lib/fs-walk.d.ts +2 -0
- package/dist/lib/fs-walk.js +40 -0
- package/dist/lib/fuzzy.d.ts +53 -0
- package/dist/lib/fuzzy.js +72 -0
- package/dist/lib/gemini-settings.d.ts +4 -0
- package/dist/lib/gemini-settings.js +33 -0
- package/dist/lib/git.d.ts +12 -2
- package/dist/lib/git.js +17 -6
- package/dist/lib/help.d.ts +20 -1
- package/dist/lib/help.js +45 -6
- package/dist/lib/hooks/match.d.ts +32 -0
- package/dist/lib/hooks/match.js +120 -0
- package/dist/lib/hooks.d.ts +17 -4
- package/dist/lib/hooks.js +191 -21
- package/dist/lib/manifest.d.ts +6 -1
- package/dist/lib/manifest.js +15 -4
- package/dist/lib/markdown.d.ts +0 -1
- package/dist/lib/markdown.js +6 -1
- package/dist/lib/mcp.d.ts +0 -1
- package/dist/lib/mcp.js +29 -33
- package/dist/lib/memory-compile.d.ts +13 -3
- package/dist/lib/memory-compile.js +31 -9
- package/dist/lib/memory.d.ts +14 -7
- package/dist/lib/memory.js +67 -38
- package/dist/lib/migrate.d.ts +8 -0
- package/dist/lib/migrate.js +85 -0
- package/dist/lib/models.d.ts +25 -11
- package/dist/lib/models.js +405 -16
- package/dist/lib/onepassword.d.ts +63 -0
- package/dist/lib/onepassword.js +186 -0
- package/dist/lib/paths.d.ts +8 -0
- package/dist/lib/paths.js +20 -0
- package/dist/lib/permissions.d.ts +24 -2
- package/dist/lib/permissions.js +117 -48
- package/dist/lib/picker.d.ts +10 -1
- package/dist/lib/picker.js +15 -1
- package/dist/lib/plugins.d.ts +7 -1
- package/dist/lib/plugins.js +10 -1
- package/dist/lib/profiles-presets.d.ts +24 -0
- package/dist/lib/profiles-presets.js +103 -0
- package/dist/lib/profiles.d.ts +69 -0
- package/dist/lib/profiles.js +144 -0
- package/dist/lib/pty-client.d.ts +1 -1
- package/dist/lib/pty-client.js +0 -1
- package/dist/lib/pty-server.d.ts +16 -2
- package/dist/lib/pty-server.js +92 -3
- package/dist/lib/registry.d.ts +23 -3
- package/dist/lib/registry.js +153 -8
- package/dist/lib/resources.d.ts +28 -1
- package/dist/lib/resources.js +79 -1
- package/dist/lib/rotate.d.ts +89 -0
- package/dist/lib/rotate.js +327 -0
- package/dist/lib/routines.d.ts +29 -1
- package/dist/lib/routines.js +32 -5
- package/dist/lib/runner.d.ts +14 -1
- package/dist/lib/runner.js +22 -3
- package/dist/lib/sandbox.d.ts +16 -1
- package/dist/lib/sandbox.js +39 -16
- package/dist/lib/scheduler.d.ts +8 -1
- package/dist/lib/scheduler.js +8 -1
- package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
- package/dist/lib/secrets/bundles.d.ts +39 -0
- package/dist/lib/secrets/bundles.js +189 -0
- package/dist/lib/secrets/index.d.ts +55 -0
- package/dist/lib/secrets/index.js +211 -0
- package/dist/lib/secrets/profiles.d.ts +10 -0
- package/dist/lib/secrets/profiles.js +13 -0
- package/dist/lib/session/active.d.ts +43 -0
- package/dist/lib/session/active.js +392 -0
- package/dist/lib/session/artifacts.d.ts +16 -0
- package/dist/lib/session/artifacts.js +95 -0
- package/dist/lib/session/cloud.d.ts +30 -0
- package/dist/lib/session/cloud.js +121 -0
- package/dist/lib/session/db.d.ts +23 -2
- package/dist/lib/session/db.js +76 -12
- package/dist/lib/session/discover.d.ts +19 -4
- package/dist/lib/session/discover.js +344 -48
- package/dist/lib/session/parse.d.ts +28 -1
- package/dist/lib/session/parse.js +267 -9
- package/dist/lib/session/prompt.d.ts +9 -1
- package/dist/lib/session/prompt.js +17 -3
- package/dist/lib/session/render.d.ts +13 -1
- package/dist/lib/session/render.js +20 -1
- package/dist/lib/session/team-filter.d.ts +9 -1
- package/dist/lib/session/team-filter.js +11 -2
- package/dist/lib/session/types.d.ts +24 -2
- package/dist/lib/session/types.js +10 -2
- package/dist/lib/shims.d.ts +93 -5
- package/dist/lib/shims.js +380 -67
- package/dist/lib/skills.d.ts +27 -2
- package/dist/lib/skills.js +127 -65
- package/dist/lib/sqlite.d.ts +43 -0
- package/dist/lib/sqlite.js +94 -0
- package/dist/lib/state.d.ts +114 -22
- package/dist/lib/state.js +323 -138
- package/dist/lib/subagents.d.ts +9 -1
- package/dist/lib/subagents.js +70 -63
- package/dist/lib/sync-manifest.d.ts +81 -0
- package/dist/lib/sync-manifest.js +450 -0
- package/dist/lib/teams/agents.d.ts +103 -5
- package/dist/lib/teams/agents.js +414 -91
- package/dist/lib/teams/api.d.ts +26 -3
- package/dist/lib/teams/api.js +63 -3
- package/dist/lib/teams/debug.d.ts +6 -1
- package/dist/lib/teams/debug.js +6 -1
- package/dist/lib/teams/file_ops.d.ts +7 -1
- package/dist/lib/teams/file_ops.js +7 -1
- package/dist/lib/teams/index.d.ts +15 -0
- package/dist/lib/teams/index.js +14 -0
- package/dist/lib/teams/parsers.d.ts +4 -1
- package/dist/lib/teams/parsers.js +11 -1
- package/dist/lib/teams/persistence.d.ts +15 -1
- package/dist/lib/teams/persistence.js +102 -20
- package/dist/lib/teams/registry.d.ts +12 -1
- package/dist/lib/teams/registry.js +116 -33
- package/dist/lib/teams/summarizer.d.ts +15 -1
- package/dist/lib/teams/summarizer.js +14 -1
- package/dist/lib/teams/supervisor.d.ts +48 -0
- package/dist/lib/teams/supervisor.js +73 -0
- package/dist/lib/template.d.ts +8 -6
- package/dist/lib/template.js +8 -6
- package/dist/lib/types.d.ts +147 -8
- package/dist/lib/types.js +26 -3
- package/dist/lib/usage.d.ts +48 -1
- package/dist/lib/usage.js +97 -16
- package/dist/lib/version-duplicates.d.ts +21 -0
- package/dist/lib/version-duplicates.js +90 -0
- package/dist/lib/versions.d.ts +39 -4
- package/dist/lib/versions.js +401 -111
- package/package.json +33 -18
- package/scripts/postinstall.js +126 -30
- package/dist/commands/__tests__/sessions.test.d.ts +0 -2
- package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
- package/dist/commands/__tests__/sessions.test.js +0 -636
- package/dist/commands/__tests__/sessions.test.js.map +0 -1
- package/dist/commands/commands.d.ts.map +0 -1
- package/dist/commands/commands.js.map +0 -1
- package/dist/commands/daemon.d.ts.map +0 -1
- package/dist/commands/daemon.js.map +0 -1
- package/dist/commands/drive.d.ts.map +0 -1
- package/dist/commands/drive.js.map +0 -1
- package/dist/commands/exec.d.ts.map +0 -1
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/fork.d.ts.map +0 -1
- package/dist/commands/fork.js.map +0 -1
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/models.d.ts.map +0 -1
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/packages.js.map +0 -1
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js.map +0 -1
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/pty.d.ts.map +0 -1
- package/dist/commands/pty.js.map +0 -1
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -3
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -180
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/refresh-memory.d.ts.map +0 -1
- package/dist/commands/refresh-memory.js.map +0 -1
- package/dist/commands/resource-view.d.ts.map +0 -1
- package/dist/commands/resource-view.js.map +0 -1
- package/dist/commands/routines.d.ts.map +0 -1
- package/dist/commands/routines.js.map +0 -1
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/sessions-picker.d.ts.map +0 -1
- package/dist/commands/sessions-picker.js.map +0 -1
- package/dist/commands/sessions.d.ts.map +0 -1
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/subagents.d.ts.map +0 -1
- package/dist/commands/subagents.js.map +0 -1
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/teams-picker.d.ts.map +0 -1
- package/dist/commands/teams-picker.js.map +0 -1
- package/dist/commands/teams.d.ts.map +0 -1
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/commands/versions.d.ts.map +0 -1
- package/dist/commands/versions.js.map +0 -1
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
- package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.js +0 -192
- package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
- package/dist/lib/__tests__/exec.test.d.ts +0 -2
- package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
- package/dist/lib/__tests__/exec.test.js +0 -446
- package/dist/lib/__tests__/exec.test.js.map +0 -1
- package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
- package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
- package/dist/lib/__tests__/git-sync.test.js +0 -138
- package/dist/lib/__tests__/git-sync.test.js.map +0 -1
- package/dist/lib/__tests__/hooks.test.d.ts +0 -2
- package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
- package/dist/lib/__tests__/hooks.test.js +0 -203
- package/dist/lib/__tests__/hooks.test.js.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
- package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.js +0 -95
- package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
- package/dist/lib/__tests__/models.test.d.ts +0 -2
- package/dist/lib/__tests__/models.test.d.ts.map +0 -1
- package/dist/lib/__tests__/models.test.js +0 -184
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/usage.test.d.ts +0 -2
- package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
- package/dist/lib/__tests__/usage.test.js +0 -218
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/agents.d.ts.map +0 -1
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/artifact-actions.d.ts.map +0 -1
- package/dist/lib/artifact-actions.js.map +0 -1
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/convert.d.ts.map +0 -1
- package/dist/lib/convert.js.map +0 -1
- package/dist/lib/daemon.d.ts.map +0 -1
- package/dist/lib/daemon.js.map +0 -1
- package/dist/lib/drive-sync.d.ts.map +0 -1
- package/dist/lib/drive-sync.js.map +0 -1
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/factory.d.ts +0 -57
- package/dist/lib/factory.d.ts.map +0 -1
- package/dist/lib/factory.js +0 -110
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/help.d.ts.map +0 -1
- package/dist/lib/help.js.map +0 -1
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/manifest.d.ts.map +0 -1
- package/dist/lib/manifest.js.map +0 -1
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/memory-compile.d.ts.map +0 -1
- package/dist/lib/memory-compile.js.map +0 -1
- package/dist/lib/memory.d.ts.map +0 -1
- package/dist/lib/memory.js.map +0 -1
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/permissions.d.ts.map +0 -1
- package/dist/lib/permissions.js.map +0 -1
- package/dist/lib/picker.d.ts.map +0 -1
- package/dist/lib/picker.js.map +0 -1
- package/dist/lib/plugins.d.ts.map +0 -1
- package/dist/lib/plugins.js.map +0 -1
- package/dist/lib/pty-client.d.ts.map +0 -1
- package/dist/lib/pty-client.js.map +0 -1
- package/dist/lib/pty-server.d.ts.map +0 -1
- package/dist/lib/pty-server.js.map +0 -1
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.js.map +0 -1
- package/dist/lib/routines.d.ts.map +0 -1
- package/dist/lib/routines.js.map +0 -1
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.js.map +0 -1
- package/dist/lib/sandbox.d.ts.map +0 -1
- package/dist/lib/sandbox.js.map +0 -1
- package/dist/lib/scheduler.d.ts.map +0 -1
- package/dist/lib/scheduler.js.map +0 -1
- package/dist/lib/session/__tests__/db.test.d.ts +0 -2
- package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/db.test.js +0 -54
- package/dist/lib/session/__tests__/db.test.js.map +0 -1
- package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
- package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/discover.test.js +0 -63
- package/dist/lib/session/__tests__/discover.test.js.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
- package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.js +0 -44
- package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
- package/dist/lib/session/__tests__/render.test.d.ts +0 -2
- package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/render.test.js +0 -602
- package/dist/lib/session/__tests__/render.test.js.map +0 -1
- package/dist/lib/session/db.d.ts.map +0 -1
- package/dist/lib/session/db.js.map +0 -1
- package/dist/lib/session/discover.d.ts.map +0 -1
- package/dist/lib/session/discover.js.map +0 -1
- package/dist/lib/session/parse.d.ts.map +0 -1
- package/dist/lib/session/parse.js.map +0 -1
- package/dist/lib/session/prompt.d.ts.map +0 -1
- package/dist/lib/session/prompt.js.map +0 -1
- package/dist/lib/session/prompt.test.d.ts +0 -2
- package/dist/lib/session/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/prompt.test.js +0 -57
- package/dist/lib/session/prompt.test.js.map +0 -1
- package/dist/lib/session/render.d.ts.map +0 -1
- package/dist/lib/session/render.js.map +0 -1
- package/dist/lib/session/team-filter.d.ts.map +0 -1
- package/dist/lib/session/team-filter.js.map +0 -1
- package/dist/lib/session/team-filter.test.d.ts +0 -2
- package/dist/lib/session/team-filter.test.d.ts.map +0 -1
- package/dist/lib/session/team-filter.test.js +0 -157
- package/dist/lib/session/team-filter.test.js.map +0 -1
- package/dist/lib/session/types.d.ts.map +0 -1
- package/dist/lib/session/types.js.map +0 -1
- package/dist/lib/shims.d.ts.map +0 -1
- package/dist/lib/shims.js.map +0 -1
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/subagents.d.ts.map +0 -1
- package/dist/lib/subagents.js.map +0 -1
- package/dist/lib/teams/agents.d.ts.map +0 -1
- package/dist/lib/teams/agents.js.map +0 -1
- package/dist/lib/teams/api.d.ts.map +0 -1
- package/dist/lib/teams/api.js.map +0 -1
- package/dist/lib/teams/cloud.d.ts +0 -11
- package/dist/lib/teams/cloud.d.ts.map +0 -1
- package/dist/lib/teams/cloud.js +0 -169
- package/dist/lib/teams/cloud.js.map +0 -1
- package/dist/lib/teams/debug.d.ts.map +0 -1
- package/dist/lib/teams/debug.js.map +0 -1
- package/dist/lib/teams/file_ops.d.ts.map +0 -1
- package/dist/lib/teams/file_ops.js.map +0 -1
- package/dist/lib/teams/parsers.d.ts.map +0 -1
- package/dist/lib/teams/parsers.js.map +0 -1
- package/dist/lib/teams/persistence.d.ts.map +0 -1
- package/dist/lib/teams/persistence.js.map +0 -1
- package/dist/lib/teams/ralph.d.ts +0 -8
- package/dist/lib/teams/ralph.d.ts.map +0 -1
- package/dist/lib/teams/ralph.js +0 -59
- package/dist/lib/teams/ralph.js.map +0 -1
- package/dist/lib/teams/registry.d.ts.map +0 -1
- package/dist/lib/teams/registry.js.map +0 -1
- package/dist/lib/teams/summarizer.d.ts.map +0 -1
- package/dist/lib/teams/summarizer.js.map +0 -1
- package/dist/lib/template.d.ts.map +0 -1
- package/dist/lib/template.js.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/usage.d.ts.map +0 -1
- package/dist/lib/usage.js.map +0 -1
- package/dist/lib/versions.d.ts.map +0 -1
- package/dist/lib/versions.js.map +0 -1
- package/scripts/rebuild-sqlite.sh +0 -46
package/dist/lib/session/db.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed session index and full-text search.
|
|
3
|
+
*
|
|
4
|
+
* Stores session metadata and user-prompt text in a WAL-mode SQLite database
|
|
5
|
+
* at ~/.agents/sessions/sessions.db. Provides incremental upsert, scan-stamp
|
|
6
|
+
* ledger (mtime/size tracking to skip unchanged files), FTS5 search with
|
|
7
|
+
* BM25 ranking, and label-first search for /rename'd sessions.
|
|
8
|
+
*/
|
|
9
|
+
import Database from '../sqlite.js';
|
|
2
10
|
import type { SessionAgentId, SessionMeta } from './types.js';
|
|
11
|
+
/** Raw row shape returned from the sessions table. */
|
|
3
12
|
export interface SessionRow {
|
|
4
13
|
id: string;
|
|
5
14
|
short_id: string;
|
|
@@ -20,10 +29,12 @@ export interface SessionRow {
|
|
|
20
29
|
scanned_at: number | null;
|
|
21
30
|
is_team_origin: number;
|
|
22
31
|
}
|
|
32
|
+
/** File stat snapshot used to detect changes between scan runs. */
|
|
23
33
|
export interface ScanStamp {
|
|
24
34
|
fileMtimeMs: number;
|
|
25
35
|
fileSize: number;
|
|
26
36
|
}
|
|
37
|
+
/** Filter and pagination options for querying the sessions table. */
|
|
27
38
|
export interface QueryOptions {
|
|
28
39
|
agent?: SessionAgentId;
|
|
29
40
|
agents?: SessionAgentId[];
|
|
@@ -40,8 +51,11 @@ export interface QueryOptions {
|
|
|
40
51
|
/** Keep only team-origin rows (for hidden-count queries). */
|
|
41
52
|
onlyTeamOrigin?: boolean;
|
|
42
53
|
}
|
|
54
|
+
/** Open (or return the cached) sessions database, applying migrations as needed. */
|
|
43
55
|
export declare function getDB(): Database.Database;
|
|
56
|
+
/** Close the cached database connection. */
|
|
44
57
|
export declare function closeDB(): void;
|
|
58
|
+
/** Return the absolute path to the sessions database file. */
|
|
45
59
|
export declare function getDBPath(): string;
|
|
46
60
|
/**
|
|
47
61
|
* Look up the file stat stamp we stored the last time we scanned a given file path.
|
|
@@ -66,6 +80,7 @@ export declare function recordScans(entries: Array<{
|
|
|
66
80
|
* `content` is the tokenizable user-prompt text; pass '' to leave the row unsearchable.
|
|
67
81
|
*/
|
|
68
82
|
export declare function upsertSession(meta: SessionMeta, content: string, scan?: ScanStamp): void;
|
|
83
|
+
/** Batch-upsert sessions with their FTS5 content and scan stamps in a single transaction. */
|
|
69
84
|
export declare function upsertSessionsBatch(entries: Array<{
|
|
70
85
|
meta: SessionMeta;
|
|
71
86
|
content: string;
|
|
@@ -77,11 +92,17 @@ export declare function upsertSessionsBatch(entries: Array<{
|
|
|
77
92
|
* Leaves FTS5 content/topic/project untouched — cheap to call every run.
|
|
78
93
|
*/
|
|
79
94
|
export declare function syncLabels(labelMap: Map<string, string | null>): number;
|
|
95
|
+
/** Query sessions from the database, applying filters and ordering by timestamp descending. */
|
|
80
96
|
export declare function querySessions(options?: QueryOptions): SessionMeta[];
|
|
97
|
+
/** Count sessions matching the given filter options. */
|
|
81
98
|
export declare function countSessions(options?: QueryOptions): number;
|
|
99
|
+
/** Return the set of all file paths currently tracked in the sessions table. */
|
|
82
100
|
export declare function getAllFilePaths(): Set<string>;
|
|
101
|
+
/** Look up sessions by their source file paths. */
|
|
83
102
|
export declare function getSessionsByFilePaths(paths: string[]): Map<string, SessionMeta>;
|
|
103
|
+
/** Look up a single session by its unique ID. */
|
|
84
104
|
export declare function getSessionById(id: string): SessionMeta | null;
|
|
105
|
+
/** A single full-text search result with ranking score. */
|
|
85
106
|
export interface FtsHit {
|
|
86
107
|
sessionId: string;
|
|
87
108
|
score: number;
|
|
@@ -111,8 +132,8 @@ export declare function buildFtsQuery(input: string): {
|
|
|
111
132
|
* so "higher = better" is consistent across all tiers.
|
|
112
133
|
*/
|
|
113
134
|
export declare function ftsSearch(input: string, limit?: number): FtsHit[];
|
|
135
|
+
/** Return the total row counts for the sessions and FTS5 tables (diagnostic). */
|
|
114
136
|
export declare function getRowCount(): {
|
|
115
137
|
sessions: number;
|
|
116
138
|
textRows: number;
|
|
117
139
|
};
|
|
118
|
-
//# sourceMappingURL=db.d.ts.map
|
package/dist/lib/session/db.js
CHANGED
|
@@ -1,14 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed session index and full-text search.
|
|
3
|
+
*
|
|
4
|
+
* Stores session metadata and user-prompt text in a WAL-mode SQLite database
|
|
5
|
+
* at ~/.agents/sessions/sessions.db. Provides incremental upsert, scan-stamp
|
|
6
|
+
* ledger (mtime/size tracking to skip unchanged files), FTS5 search with
|
|
7
|
+
* BM25 ranking, and label-first search for /rename'd sessions.
|
|
8
|
+
*/
|
|
1
9
|
import * as fs from 'fs';
|
|
2
|
-
import * as os from 'os';
|
|
3
10
|
import * as path from 'path';
|
|
4
|
-
import Database from '
|
|
5
|
-
|
|
6
|
-
const SESSIONS_DIR = path.join(
|
|
11
|
+
import Database from '../sqlite.js';
|
|
12
|
+
import { getAgentsDir } from '../state.js';
|
|
13
|
+
const SESSIONS_DIR = path.join(getAgentsDir(), 'sessions');
|
|
7
14
|
const DB_PATH = path.join(SESSIONS_DIR, 'sessions.db');
|
|
8
|
-
|
|
15
|
+
/** Current schema version; bumped when migrations are added. */
|
|
16
|
+
const SCHEMA_VERSION = 5;
|
|
17
|
+
/**
|
|
18
|
+
* Canonicalize a file path for use as a scan_ledger key. The same physical
|
|
19
|
+
* session file is reachable via multiple aliases — `~/.claude/projects/x.jsonl`
|
|
20
|
+
* (when `~/.claude` is a symlink to a versioned home) and
|
|
21
|
+
* `~/.agents-system/versions/claude/<v>/home/.claude/projects/x.jsonl`. Keying the
|
|
22
|
+
* ledger by the raw path means switching between these aliases (e.g. via
|
|
23
|
+
* `agents use`) misses the cache and forces a full re-parse. Realpath collapses
|
|
24
|
+
* all aliases to one stable key.
|
|
25
|
+
*/
|
|
26
|
+
function canonicalLedgerKey(filePath) {
|
|
27
|
+
if (!filePath)
|
|
28
|
+
return filePath;
|
|
29
|
+
try {
|
|
30
|
+
return fs.realpathSync(filePath);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return filePath;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
9
36
|
// BM25 column weights for session_text: label > topic > project > content.
|
|
10
37
|
// Higher weights make matches in that column rank higher.
|
|
38
|
+
/** BM25 column weights for FTS5: label > topic > project > content. */
|
|
11
39
|
const BM25_WEIGHTS = [5.0, 2.0, 1.5, 1.0];
|
|
40
|
+
/** DDL for the sessions database (tables, indexes, FTS5 virtual table). */
|
|
12
41
|
const SCHEMA = `
|
|
13
42
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
14
43
|
id TEXT PRIMARY KEY,
|
|
@@ -105,7 +134,15 @@ function migrateSchema(db, fromVersion) {
|
|
|
105
134
|
}
|
|
106
135
|
db.exec(`DELETE FROM scan_ledger;`);
|
|
107
136
|
}
|
|
137
|
+
if (fromVersion < 5) {
|
|
138
|
+
// v4 → v5: ledger is now keyed by realpath instead of the as-discovered
|
|
139
|
+
// path, so symlink/version-relative aliases for the same physical file
|
|
140
|
+
// collapse to one row. Old aliased rows are dropped — next scan will
|
|
141
|
+
// repopulate under canonical keys.
|
|
142
|
+
db.exec(`DELETE FROM scan_ledger;`);
|
|
143
|
+
}
|
|
108
144
|
}
|
|
145
|
+
/** Open (or return the cached) sessions database, applying migrations as needed. */
|
|
109
146
|
export function getDB() {
|
|
110
147
|
if (dbInstance)
|
|
111
148
|
return dbInstance;
|
|
@@ -144,12 +181,14 @@ export function getDB() {
|
|
|
144
181
|
dbInstance = db;
|
|
145
182
|
return db;
|
|
146
183
|
}
|
|
184
|
+
/** Close the cached database connection. */
|
|
147
185
|
export function closeDB() {
|
|
148
186
|
if (dbInstance) {
|
|
149
187
|
dbInstance.close();
|
|
150
188
|
dbInstance = null;
|
|
151
189
|
}
|
|
152
190
|
}
|
|
191
|
+
/** Return the absolute path to the sessions database file. */
|
|
153
192
|
export function getDBPath() {
|
|
154
193
|
return DB_PATH;
|
|
155
194
|
}
|
|
@@ -161,7 +200,7 @@ export function getScanStampByPath(filePath) {
|
|
|
161
200
|
const db = getDB();
|
|
162
201
|
const row = db
|
|
163
202
|
.prepare(`SELECT file_mtime_ms, file_size FROM scan_ledger WHERE file_path = ? LIMIT 1`)
|
|
164
|
-
.get(filePath);
|
|
203
|
+
.get(canonicalLedgerKey(filePath));
|
|
165
204
|
return row ? { fileMtimeMs: row.file_mtime_ms, fileSize: row.file_size } : null;
|
|
166
205
|
}
|
|
167
206
|
/**
|
|
@@ -173,10 +212,24 @@ export function getScanStampsForPaths(filePaths) {
|
|
|
173
212
|
if (filePaths.length === 0)
|
|
174
213
|
return result;
|
|
175
214
|
const db = getDB();
|
|
215
|
+
// Multiple input paths can resolve to the same canonical key (e.g. the same
|
|
216
|
+
// session JSONL reachable via `~/.claude/...` and `~/.agents-system/versions/...`).
|
|
217
|
+
// We query DB by canonical key, then fan results back out to every original
|
|
218
|
+
// alias so callers can `.get(filePath)` with the path they passed in.
|
|
219
|
+
const canonicalToOriginals = new Map();
|
|
220
|
+
for (const fp of filePaths) {
|
|
221
|
+
const canonical = canonicalLedgerKey(fp);
|
|
222
|
+
const aliases = canonicalToOriginals.get(canonical);
|
|
223
|
+
if (aliases)
|
|
224
|
+
aliases.push(fp);
|
|
225
|
+
else
|
|
226
|
+
canonicalToOriginals.set(canonical, [fp]);
|
|
227
|
+
}
|
|
228
|
+
const canonicalKeys = [...canonicalToOriginals.keys()];
|
|
176
229
|
// SQLite parameter limit is typically 999 / 32766 — chunk defensively.
|
|
177
230
|
const CHUNK = 500;
|
|
178
|
-
for (let i = 0; i <
|
|
179
|
-
const chunk =
|
|
231
|
+
for (let i = 0; i < canonicalKeys.length; i += CHUNK) {
|
|
232
|
+
const chunk = canonicalKeys.slice(i, i + CHUNK);
|
|
180
233
|
const placeholders = chunk.map(() => '?').join(',');
|
|
181
234
|
const rows = db
|
|
182
235
|
.prepare(`
|
|
@@ -186,7 +239,10 @@ export function getScanStampsForPaths(filePaths) {
|
|
|
186
239
|
`)
|
|
187
240
|
.all(...chunk);
|
|
188
241
|
for (const row of rows) {
|
|
189
|
-
|
|
242
|
+
const stamp = { fileMtimeMs: row.file_mtime_ms, fileSize: row.file_size };
|
|
243
|
+
for (const original of canonicalToOriginals.get(row.file_path) || []) {
|
|
244
|
+
result.set(original, stamp);
|
|
245
|
+
}
|
|
190
246
|
}
|
|
191
247
|
}
|
|
192
248
|
return result;
|
|
@@ -210,7 +266,7 @@ export function recordScans(entries) {
|
|
|
210
266
|
const now = Date.now();
|
|
211
267
|
const txn = db.transaction((items) => {
|
|
212
268
|
for (const { filePath, scan } of items) {
|
|
213
|
-
stmt.run(filePath, scan.fileMtimeMs, scan.fileSize, now);
|
|
269
|
+
stmt.run(canonicalLedgerKey(filePath), scan.fileMtimeMs, scan.fileSize, now);
|
|
214
270
|
}
|
|
215
271
|
});
|
|
216
272
|
txn(entries);
|
|
@@ -291,6 +347,7 @@ export function upsertSession(meta, content, scan) {
|
|
|
291
347
|
});
|
|
292
348
|
txn();
|
|
293
349
|
}
|
|
350
|
+
/** Batch-upsert sessions with their FTS5 content and scan stamps in a single transaction. */
|
|
294
351
|
export function upsertSessionsBatch(entries) {
|
|
295
352
|
if (entries.length === 0)
|
|
296
353
|
return;
|
|
@@ -330,7 +387,7 @@ export function upsertSessionsBatch(entries) {
|
|
|
330
387
|
delText.run(meta.id);
|
|
331
388
|
insText.run(meta.id, meta.label ?? '', meta.topic ?? '', meta.project ?? '', content ?? '');
|
|
332
389
|
if (scan && meta.filePath) {
|
|
333
|
-
ledger.run(meta.filePath, scan.fileMtimeMs, scan.fileSize, now);
|
|
390
|
+
ledger.run(canonicalLedgerKey(meta.filePath), scan.fileMtimeMs, scan.fileSize, now);
|
|
334
391
|
}
|
|
335
392
|
}
|
|
336
393
|
});
|
|
@@ -374,6 +431,7 @@ export function syncLabels(labelMap) {
|
|
|
374
431
|
txn(updates);
|
|
375
432
|
return updates.length;
|
|
376
433
|
}
|
|
434
|
+
/** Convert a raw database row into a SessionMeta object. */
|
|
377
435
|
function rowToMeta(row) {
|
|
378
436
|
return {
|
|
379
437
|
id: row.id,
|
|
@@ -393,6 +451,7 @@ function rowToMeta(row) {
|
|
|
393
451
|
isTeamOrigin: row.is_team_origin === 1,
|
|
394
452
|
};
|
|
395
453
|
}
|
|
454
|
+
/** Build a parameterized WHERE clause from query options. */
|
|
396
455
|
function buildSessionWhere(options) {
|
|
397
456
|
const where = [];
|
|
398
457
|
const params = [];
|
|
@@ -438,6 +497,7 @@ function buildSessionWhere(options) {
|
|
|
438
497
|
const clause = where.length > 0 ? `WHERE ${where.join(' AND ')}` : '';
|
|
439
498
|
return { clause, params };
|
|
440
499
|
}
|
|
500
|
+
/** Query sessions from the database, applying filters and ordering by timestamp descending. */
|
|
441
501
|
export function querySessions(options = {}) {
|
|
442
502
|
const db = getDB();
|
|
443
503
|
const { clause, params } = buildSessionWhere(options);
|
|
@@ -446,6 +506,7 @@ export function querySessions(options = {}) {
|
|
|
446
506
|
const rows = db.prepare(sql).all(...params);
|
|
447
507
|
return rows.map(rowToMeta);
|
|
448
508
|
}
|
|
509
|
+
/** Count sessions matching the given filter options. */
|
|
449
510
|
export function countSessions(options = {}) {
|
|
450
511
|
const db = getDB();
|
|
451
512
|
const { clause, params } = buildSessionWhere(options);
|
|
@@ -453,11 +514,13 @@ export function countSessions(options = {}) {
|
|
|
453
514
|
const row = db.prepare(sql).get(...params);
|
|
454
515
|
return row ? row.n : 0;
|
|
455
516
|
}
|
|
517
|
+
/** Return the set of all file paths currently tracked in the sessions table. */
|
|
456
518
|
export function getAllFilePaths() {
|
|
457
519
|
const db = getDB();
|
|
458
520
|
const rows = db.prepare(`SELECT file_path FROM sessions`).all();
|
|
459
521
|
return new Set(rows.map(r => r.file_path));
|
|
460
522
|
}
|
|
523
|
+
/** Look up sessions by their source file paths. */
|
|
461
524
|
export function getSessionsByFilePaths(paths) {
|
|
462
525
|
if (paths.length === 0)
|
|
463
526
|
return new Map();
|
|
@@ -471,6 +534,7 @@ export function getSessionsByFilePaths(paths) {
|
|
|
471
534
|
result.set(row.file_path, rowToMeta(row));
|
|
472
535
|
return result;
|
|
473
536
|
}
|
|
537
|
+
/** Look up a single session by its unique ID. */
|
|
474
538
|
export function getSessionById(id) {
|
|
475
539
|
const db = getDB();
|
|
476
540
|
const row = db.prepare(`SELECT * FROM sessions WHERE id = ?`).get(id);
|
|
@@ -567,10 +631,10 @@ export function ftsSearch(input, limit = 200) {
|
|
|
567
631
|
hits.sort((a, b) => b.score - a.score);
|
|
568
632
|
return hits.slice(0, limit);
|
|
569
633
|
}
|
|
634
|
+
/** Return the total row counts for the sessions and FTS5 tables (diagnostic). */
|
|
570
635
|
export function getRowCount() {
|
|
571
636
|
const db = getDB();
|
|
572
637
|
const sessions = db.prepare(`SELECT COUNT(*) AS c FROM sessions`).get().c;
|
|
573
638
|
const textRows = db.prepare(`SELECT COUNT(*) AS c FROM session_text`).get().c;
|
|
574
639
|
return { sessions, textRows };
|
|
575
640
|
}
|
|
576
|
-
//# sourceMappingURL=db.js.map
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session discovery across Claude, Codex, Gemini, OpenCode, and OpenClaw.
|
|
3
|
+
*
|
|
4
|
+
* Performs incremental scans: each agent's session files are stat'd and compared
|
|
5
|
+
* to a scan-stamp ledger in SQLite. Only files whose mtime or size changed since
|
|
6
|
+
* the last run are re-parsed. All metadata is upserted into the sessions DB so
|
|
7
|
+
* subsequent queries are served entirely from the cache.
|
|
8
|
+
*/
|
|
1
9
|
import type { SessionAgentId, SessionMeta } from './types.js';
|
|
10
|
+
/** Options controlling which sessions to discover and how to report progress. */
|
|
2
11
|
export interface DiscoverOptions {
|
|
3
12
|
agent?: SessionAgentId;
|
|
4
13
|
version?: string;
|
|
@@ -19,6 +28,7 @@ export interface DiscoverOptions {
|
|
|
19
28
|
/** Called as each agent makes parsing progress. Totals count only files that need re-parsing (cache misses). */
|
|
20
29
|
onProgress?: (progress: ScanProgress) => void;
|
|
21
30
|
}
|
|
31
|
+
/** Progress report emitted during incremental scanning. */
|
|
22
32
|
export interface ScanProgress {
|
|
23
33
|
agent: SessionAgentId;
|
|
24
34
|
parsed: number;
|
|
@@ -51,10 +61,15 @@ export declare function searchContentIndex(sessions: SessionMeta[], query: strin
|
|
|
51
61
|
* realpath to avoid double-counting symlinked version homes.
|
|
52
62
|
*/
|
|
53
63
|
export declare function getAgentSessionDirs(agent: string, subdir: string): string[];
|
|
54
|
-
export declare function readFirstLines(filePath: string, maxLines: number): Promise<string[]>;
|
|
55
64
|
/**
|
|
56
|
-
*
|
|
65
|
+
* Build a map of Claude sessionId -> user-given label from ~/.claude/sessions/*.json.
|
|
66
|
+
* Each JSON has shape { pid, sessionId, cwd, startedAt, name?, ... }. The
|
|
67
|
+
* `name` field only exists if the user ran /rename in that session.
|
|
68
|
+
* For sessionId collisions (re-resume of the same session), prefer the most
|
|
69
|
+
* recent startedAt.
|
|
57
70
|
*/
|
|
58
|
-
export declare function
|
|
71
|
+
export declare function buildClaudeLabelMap(): Map<string, string | null>;
|
|
72
|
+
/** Read up to maxLines non-empty lines from the beginning of a file. */
|
|
73
|
+
export declare function readFirstLines(filePath: string, maxLines: number): Promise<string[]>;
|
|
74
|
+
/** Parse a time filter string (relative like '7d' or ISO timestamp) into epoch milliseconds. */
|
|
59
75
|
export declare function parseTimeFilter(input: string): number;
|
|
60
|
-
//# sourceMappingURL=discover.d.ts.map
|