@swarmify/agents-cli 1.13.4 → 1.14.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/README.md +2 -319
- package/bin/agents.js +2 -0
- package/package.json +13 -79
- package/scripts/postinstall.js +4 -71
- package/CHANGELOG.md +0 -316
- package/LICENSE +0 -21
- package/dist/commands/__tests__/sessions-tail.test.d.ts +0 -2
- package/dist/commands/__tests__/sessions-tail.test.d.ts.map +0 -1
- package/dist/commands/__tests__/sessions-tail.test.js +0 -108
- package/dist/commands/__tests__/sessions-tail.test.js.map +0 -1
- 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/cloud.d.ts +0 -11
- package/dist/commands/cloud.d.ts.map +0 -1
- package/dist/commands/cloud.js +0 -363
- package/dist/commands/cloud.js.map +0 -1
- package/dist/commands/commands.d.ts +0 -12
- package/dist/commands/commands.d.ts.map +0 -1
- package/dist/commands/commands.js +0 -629
- package/dist/commands/commands.js.map +0 -1
- package/dist/commands/daemon.d.ts +0 -11
- package/dist/commands/daemon.d.ts.map +0 -1
- package/dist/commands/daemon.js +0 -119
- package/dist/commands/daemon.js.map +0 -1
- package/dist/commands/drive.d.ts +0 -11
- package/dist/commands/drive.d.ts.map +0 -1
- package/dist/commands/drive.js +0 -175
- package/dist/commands/drive.js.map +0 -1
- package/dist/commands/exec.d.ts +0 -11
- package/dist/commands/exec.d.ts.map +0 -1
- package/dist/commands/exec.js +0 -251
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/factory.d.ts +0 -11
- package/dist/commands/factory.d.ts.map +0 -1
- package/dist/commands/factory.js +0 -445
- package/dist/commands/factory.js.map +0 -1
- package/dist/commands/fork.d.ts +0 -11
- package/dist/commands/fork.d.ts.map +0 -1
- package/dist/commands/fork.js +0 -147
- package/dist/commands/fork.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -12
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -690
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/init.d.ts +0 -15
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -137
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -12
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -583
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/models.d.ts +0 -11
- package/dist/commands/models.d.ts.map +0 -1
- package/dist/commands/models.js +0 -170
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/packages.d.ts +0 -11
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/packages.js +0 -551
- package/dist/commands/packages.js.map +0 -1
- package/dist/commands/permissions.d.ts +0 -12
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js +0 -724
- package/dist/commands/permissions.js.map +0 -1
- package/dist/commands/plugins.d.ts +0 -11
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js +0 -393
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/profiles.d.ts +0 -12
- package/dist/commands/profiles.d.ts.map +0 -1
- package/dist/commands/profiles.js +0 -255
- package/dist/commands/profiles.js.map +0 -1
- package/dist/commands/pty.d.ts +0 -21
- package/dist/commands/pty.d.ts.map +0 -1
- package/dist/commands/pty.js +0 -391
- package/dist/commands/pty.js.map +0 -1
- package/dist/commands/pull.d.ts +0 -11
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js +0 -456
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -11
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -188
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/refresh-memory.d.ts +0 -16
- package/dist/commands/refresh-memory.d.ts.map +0 -1
- package/dist/commands/refresh-memory.js +0 -52
- package/dist/commands/refresh-memory.js.map +0 -1
- package/dist/commands/resource-view.d.ts +0 -39
- package/dist/commands/resource-view.d.ts.map +0 -1
- package/dist/commands/resource-view.js +0 -197
- package/dist/commands/resource-view.js.map +0 -1
- package/dist/commands/routines.d.ts +0 -11
- package/dist/commands/routines.d.ts.map +0 -1
- package/dist/commands/routines.js +0 -590
- package/dist/commands/routines.js.map +0 -1
- package/dist/commands/rules.d.ts +0 -12
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js +0 -489
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/secrets.d.ts +0 -11
- package/dist/commands/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.js +0 -352
- package/dist/commands/secrets.js.map +0 -1
- package/dist/commands/sessions-picker.d.ts +0 -18
- package/dist/commands/sessions-picker.d.ts.map +0 -1
- package/dist/commands/sessions-picker.js +0 -265
- package/dist/commands/sessions-picker.js.map +0 -1
- package/dist/commands/sessions-tail.d.ts +0 -20
- package/dist/commands/sessions-tail.d.ts.map +0 -1
- package/dist/commands/sessions-tail.js +0 -236
- package/dist/commands/sessions-tail.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -18
- package/dist/commands/sessions.d.ts.map +0 -1
- package/dist/commands/sessions.js +0 -1173
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -12
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js +0 -717
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts +0 -10
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -26
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/subagents.d.ts +0 -11
- package/dist/commands/subagents.d.ts.map +0 -1
- package/dist/commands/subagents.js +0 -361
- package/dist/commands/subagents.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -11
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -70
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/teams-picker.d.ts +0 -18
- package/dist/commands/teams-picker.d.ts.map +0 -1
- package/dist/commands/teams-picker.js +0 -290
- package/dist/commands/teams-picker.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -18
- package/dist/commands/teams.d.ts.map +0 -1
- package/dist/commands/teams.js +0 -1144
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/utils.d.ts +0 -45
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js +0 -106
- package/dist/commands/utils.js.map +0 -1
- package/dist/commands/versions.d.ts +0 -11
- package/dist/commands/versions.d.ts.map +0 -1
- package/dist/commands/versions.js +0 -701
- package/dist/commands/versions.js.map +0 -1
- package/dist/commands/view.d.ts +0 -43
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js +0 -894
- package/dist/commands/view.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -496
- 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 -239
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/rotate.test.d.ts +0 -2
- package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
- package/dist/lib/__tests__/rotate.test.js +0 -80
- package/dist/lib/__tests__/rotate.test.js.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
- package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
- package/dist/lib/__tests__/secrets.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets.test.js +0 -90
- package/dist/lib/__tests__/secrets.test.js.map +0 -1
- package/dist/lib/__tests__/shims.test.d.ts +0 -2
- package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
- package/dist/lib/__tests__/shims.test.js +0 -57
- package/dist/lib/__tests__/shims.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 -220
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/__tests__/versions.test.d.ts +0 -2
- package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
- package/dist/lib/__tests__/versions.test.js +0 -63
- package/dist/lib/__tests__/versions.test.js.map +0 -1
- package/dist/lib/agents.d.ts +0 -158
- package/dist/lib/agents.d.ts.map +0 -1
- package/dist/lib/agents.js +0 -1159
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/artifact-actions.d.ts +0 -27
- package/dist/lib/artifact-actions.d.ts.map +0 -1
- package/dist/lib/artifact-actions.js +0 -58
- package/dist/lib/artifact-actions.js.map +0 -1
- package/dist/lib/cloud/codex.d.ts +0 -26
- package/dist/lib/cloud/codex.d.ts.map +0 -1
- package/dist/lib/cloud/codex.js +0 -237
- package/dist/lib/cloud/codex.js.map +0 -1
- package/dist/lib/cloud/factory.d.ts +0 -32
- package/dist/lib/cloud/factory.d.ts.map +0 -1
- package/dist/lib/cloud/factory.js +0 -43
- package/dist/lib/cloud/factory.js.map +0 -1
- package/dist/lib/cloud/registry.d.ts +0 -16
- package/dist/lib/cloud/registry.d.ts.map +0 -1
- package/dist/lib/cloud/registry.js +0 -68
- package/dist/lib/cloud/registry.js.map +0 -1
- package/dist/lib/cloud/rush.d.ts +0 -37
- package/dist/lib/cloud/rush.d.ts.map +0 -1
- package/dist/lib/cloud/rush.js +0 -230
- package/dist/lib/cloud/rush.js.map +0 -1
- package/dist/lib/cloud/rush.test.d.ts +0 -2
- package/dist/lib/cloud/rush.test.d.ts.map +0 -1
- package/dist/lib/cloud/rush.test.js +0 -63
- package/dist/lib/cloud/rush.test.js.map +0 -1
- package/dist/lib/cloud/store.d.ts +0 -23
- package/dist/lib/cloud/store.d.ts.map +0 -1
- package/dist/lib/cloud/store.js +0 -116
- package/dist/lib/cloud/store.js.map +0 -1
- package/dist/lib/cloud/stream.d.ts +0 -24
- package/dist/lib/cloud/stream.d.ts.map +0 -1
- package/dist/lib/cloud/stream.js +0 -145
- package/dist/lib/cloud/stream.js.map +0 -1
- package/dist/lib/cloud/types.d.ts +0 -109
- package/dist/lib/cloud/types.d.ts.map +0 -1
- package/dist/lib/cloud/types.js +0 -33
- package/dist/lib/cloud/types.js.map +0 -1
- package/dist/lib/cloud/types.test.d.ts +0 -2
- package/dist/lib/cloud/types.test.d.ts.map +0 -1
- package/dist/lib/cloud/types.test.js +0 -41
- package/dist/lib/cloud/types.test.js.map +0 -1
- package/dist/lib/commands.d.ts +0 -141
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js +0 -514
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/convert.d.ts +0 -21
- package/dist/lib/convert.d.ts.map +0 -1
- package/dist/lib/convert.js +0 -54
- package/dist/lib/convert.js.map +0 -1
- package/dist/lib/daemon.d.ts +0 -43
- package/dist/lib/daemon.d.ts.map +0 -1
- package/dist/lib/daemon.js +0 -332
- package/dist/lib/daemon.js.map +0 -1
- package/dist/lib/drive-sync.d.ts +0 -46
- package/dist/lib/drive-sync.d.ts.map +0 -1
- package/dist/lib/drive-sync.js +0 -209
- package/dist/lib/drive-sync.js.map +0 -1
- package/dist/lib/exec.d.ts +0 -101
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.js +0 -450
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/factory/__tests__/config.test.d.ts +0 -2
- package/dist/lib/factory/__tests__/config.test.d.ts.map +0 -1
- package/dist/lib/factory/__tests__/config.test.js +0 -128
- package/dist/lib/factory/__tests__/config.test.js.map +0 -1
- package/dist/lib/factory/config.d.ts +0 -49
- package/dist/lib/factory/config.d.ts.map +0 -1
- package/dist/lib/factory/config.js +0 -127
- package/dist/lib/factory/config.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 -107
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/git.d.ts +0 -157
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js +0 -647
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/help.d.ts +0 -10
- package/dist/lib/help.d.ts.map +0 -1
- package/dist/lib/help.js +0 -66
- package/dist/lib/help.js.map +0 -1
- package/dist/lib/hooks.d.ts +0 -125
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/hooks.js +0 -846
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/ledger/__tests__/local.test.d.ts +0 -2
- package/dist/lib/ledger/__tests__/local.test.d.ts.map +0 -1
- package/dist/lib/ledger/__tests__/local.test.js +0 -177
- package/dist/lib/ledger/__tests__/local.test.js.map +0 -1
- package/dist/lib/ledger/__tests__/sync.test.d.ts +0 -2
- package/dist/lib/ledger/__tests__/sync.test.d.ts.map +0 -1
- package/dist/lib/ledger/__tests__/sync.test.js +0 -117
- package/dist/lib/ledger/__tests__/sync.test.js.map +0 -1
- package/dist/lib/ledger/index.d.ts +0 -18
- package/dist/lib/ledger/index.d.ts.map +0 -1
- package/dist/lib/ledger/index.js +0 -32
- package/dist/lib/ledger/index.js.map +0 -1
- package/dist/lib/ledger/local.d.ts +0 -22
- package/dist/lib/ledger/local.d.ts.map +0 -1
- package/dist/lib/ledger/local.js +0 -333
- package/dist/lib/ledger/local.js.map +0 -1
- package/dist/lib/ledger/r2.d.ts +0 -41
- package/dist/lib/ledger/r2.d.ts.map +0 -1
- package/dist/lib/ledger/r2.js +0 -335
- package/dist/lib/ledger/r2.js.map +0 -1
- package/dist/lib/ledger/sync.d.ts +0 -33
- package/dist/lib/ledger/sync.d.ts.map +0 -1
- package/dist/lib/ledger/sync.js +0 -106
- package/dist/lib/ledger/sync.js.map +0 -1
- package/dist/lib/ledger/types.d.ts +0 -100
- package/dist/lib/ledger/types.d.ts.map +0 -1
- package/dist/lib/ledger/types.js +0 -21
- package/dist/lib/ledger/types.js.map +0 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.d.ts.map +0 -1
- package/dist/lib/manifest.js +0 -48
- package/dist/lib/manifest.js.map +0 -1
- package/dist/lib/markdown.d.ts +0 -5
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js +0 -17
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/mcp.d.ts +0 -64
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js +0 -327
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/memory-compile.d.ts +0 -65
- package/dist/lib/memory-compile.d.ts.map +0 -1
- package/dist/lib/memory-compile.js +0 -174
- package/dist/lib/memory-compile.js.map +0 -1
- package/dist/lib/memory.d.ts +0 -64
- package/dist/lib/memory.d.ts.map +0 -1
- package/dist/lib/memory.js +0 -275
- package/dist/lib/memory.js.map +0 -1
- package/dist/lib/models.d.ts +0 -98
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js +0 -728
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/permissions.d.ts +0 -227
- package/dist/lib/permissions.d.ts.map +0 -1
- package/dist/lib/permissions.js +0 -1085
- package/dist/lib/permissions.js.map +0 -1
- package/dist/lib/picker.d.ts +0 -27
- package/dist/lib/picker.d.ts.map +0 -1
- package/dist/lib/picker.js +0 -110
- package/dist/lib/picker.js.map +0 -1
- package/dist/lib/plugins.d.ts +0 -80
- package/dist/lib/plugins.d.ts.map +0 -1
- package/dist/lib/plugins.js +0 -556
- package/dist/lib/plugins.js.map +0 -1
- package/dist/lib/profiles-keychain.d.ts +0 -11
- package/dist/lib/profiles-keychain.d.ts.map +0 -1
- package/dist/lib/profiles-keychain.js +0 -14
- package/dist/lib/profiles-keychain.js.map +0 -1
- package/dist/lib/profiles-presets.d.ts +0 -25
- package/dist/lib/profiles-presets.d.ts.map +0 -1
- package/dist/lib/profiles-presets.js +0 -104
- package/dist/lib/profiles-presets.js.map +0 -1
- package/dist/lib/profiles.d.ts +0 -70
- package/dist/lib/profiles.d.ts.map +0 -1
- package/dist/lib/profiles.js +0 -145
- package/dist/lib/profiles.js.map +0 -1
- package/dist/lib/pty-client.d.ts +0 -23
- package/dist/lib/pty-client.d.ts.map +0 -1
- package/dist/lib/pty-client.js +0 -181
- package/dist/lib/pty-client.js.map +0 -1
- package/dist/lib/pty-server.d.ts +0 -21
- package/dist/lib/pty-server.d.ts.map +0 -1
- package/dist/lib/pty-server.js +0 -427
- package/dist/lib/pty-server.js.map +0 -1
- package/dist/lib/registry.d.ts +0 -45
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js +0 -220
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resources.d.ts +0 -55
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.js +0 -103
- package/dist/lib/resources.js.map +0 -1
- package/dist/lib/rotate.d.ts +0 -58
- package/dist/lib/rotate.d.ts.map +0 -1
- package/dist/lib/rotate.js +0 -93
- package/dist/lib/rotate.js.map +0 -1
- package/dist/lib/routines.d.ts +0 -99
- package/dist/lib/routines.d.ts.map +0 -1
- package/dist/lib/routines.js +0 -352
- package/dist/lib/routines.js.map +0 -1
- package/dist/lib/runner.d.ts +0 -26
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.js +0 -325
- package/dist/lib/runner.js.map +0 -1
- package/dist/lib/sandbox.d.ts +0 -26
- package/dist/lib/sandbox.d.ts.map +0 -1
- package/dist/lib/sandbox.js +0 -218
- package/dist/lib/sandbox.js.map +0 -1
- package/dist/lib/scheduler.d.ts +0 -26
- package/dist/lib/scheduler.d.ts.map +0 -1
- package/dist/lib/scheduler.js +0 -77
- package/dist/lib/scheduler.js.map +0 -1
- package/dist/lib/secrets-bundles.d.ts +0 -38
- package/dist/lib/secrets-bundles.d.ts.map +0 -1
- package/dist/lib/secrets-bundles.js +0 -176
- package/dist/lib/secrets-bundles.js.map +0 -1
- package/dist/lib/secrets.d.ts +0 -53
- package/dist/lib/secrets.d.ts.map +0 -1
- package/dist/lib/secrets.js +0 -140
- package/dist/lib/secrets.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/active.d.ts +0 -44
- package/dist/lib/session/active.d.ts.map +0 -1
- package/dist/lib/session/active.js +0 -379
- package/dist/lib/session/active.js.map +0 -1
- package/dist/lib/session/artifacts.d.ts +0 -15
- package/dist/lib/session/artifacts.d.ts.map +0 -1
- package/dist/lib/session/artifacts.js +0 -86
- package/dist/lib/session/artifacts.js.map +0 -1
- package/dist/lib/session/db.d.ts +0 -140
- package/dist/lib/session/db.d.ts.map +0 -1
- package/dist/lib/session/db.js +0 -599
- package/dist/lib/session/db.js.map +0 -1
- package/dist/lib/session/discover.d.ts +0 -72
- package/dist/lib/session/discover.d.ts.map +0 -1
- package/dist/lib/session/discover.js +0 -1315
- package/dist/lib/session/discover.js.map +0 -1
- package/dist/lib/session/parse.d.ts +0 -34
- package/dist/lib/session/parse.d.ts.map +0 -1
- package/dist/lib/session/parse.js +0 -663
- package/dist/lib/session/parse.js.map +0 -1
- package/dist/lib/session/prompt.d.ts +0 -13
- package/dist/lib/session/prompt.d.ts.map +0 -1
- package/dist/lib/session/prompt.js +0 -79
- 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 +0 -103
- package/dist/lib/session/render.d.ts.map +0 -1
- package/dist/lib/session/render.js +0 -798
- package/dist/lib/session/render.js.map +0 -1
- package/dist/lib/session/team-filter.d.ts +0 -35
- package/dist/lib/session/team-filter.d.ts.map +0 -1
- package/dist/lib/session/team-filter.js +0 -75
- 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 +0 -84
- package/dist/lib/session/types.d.ts.map +0 -1
- package/dist/lib/session/types.js +0 -11
- package/dist/lib/session/types.js.map +0 -1
- package/dist/lib/shims.d.ts +0 -272
- package/dist/lib/shims.d.ts.map +0 -1
- package/dist/lib/shims.js +0 -1322
- package/dist/lib/shims.js.map +0 -1
- package/dist/lib/skills.d.ts +0 -142
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js +0 -791
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/state.d.ts +0 -87
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js +0 -333
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/subagents.d.ts +0 -84
- package/dist/lib/subagents.d.ts.map +0 -1
- package/dist/lib/subagents.js +0 -410
- package/dist/lib/subagents.js.map +0 -1
- package/dist/lib/teams/__tests__/oracle.test.d.ts +0 -2
- package/dist/lib/teams/__tests__/oracle.test.d.ts.map +0 -1
- package/dist/lib/teams/__tests__/oracle.test.js +0 -89
- package/dist/lib/teams/__tests__/oracle.test.js.map +0 -1
- package/dist/lib/teams/__tests__/supervisor.test.d.ts +0 -2
- package/dist/lib/teams/__tests__/supervisor.test.d.ts.map +0 -1
- package/dist/lib/teams/__tests__/supervisor.test.js +0 -179
- package/dist/lib/teams/__tests__/supervisor.test.js.map +0 -1
- package/dist/lib/teams/agents.d.ts +0 -247
- package/dist/lib/teams/agents.d.ts.map +0 -1
- package/dist/lib/teams/agents.js +0 -1244
- package/dist/lib/teams/agents.js.map +0 -1
- package/dist/lib/teams/api.d.ts +0 -91
- package/dist/lib/teams/api.d.ts.map +0 -1
- package/dist/lib/teams/api.js +0 -239
- 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 +0 -8
- package/dist/lib/teams/debug.d.ts.map +0 -1
- package/dist/lib/teams/debug.js +0 -12
- package/dist/lib/teams/debug.js.map +0 -1
- package/dist/lib/teams/file_ops.d.ts +0 -13
- package/dist/lib/teams/file_ops.d.ts.map +0 -1
- package/dist/lib/teams/file_ops.js +0 -66
- package/dist/lib/teams/file_ops.js.map +0 -1
- package/dist/lib/teams/index.d.ts +0 -16
- package/dist/lib/teams/index.d.ts.map +0 -1
- package/dist/lib/teams/index.js +0 -15
- package/dist/lib/teams/index.js.map +0 -1
- package/dist/lib/teams/oracle.d.ts +0 -20
- package/dist/lib/teams/oracle.d.ts.map +0 -1
- package/dist/lib/teams/oracle.js +0 -59
- package/dist/lib/teams/oracle.js.map +0 -1
- package/dist/lib/teams/parsers.d.ts +0 -9
- package/dist/lib/teams/parsers.d.ts.map +0 -1
- package/dist/lib/teams/parsers.js +0 -837
- package/dist/lib/teams/parsers.js.map +0 -1
- package/dist/lib/teams/persistence.d.ts +0 -43
- package/dist/lib/teams/persistence.d.ts.map +0 -1
- package/dist/lib/teams/persistence.js +0 -299
- 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 +0 -18
- package/dist/lib/teams/registry.d.ts.map +0 -1
- package/dist/lib/teams/registry.js +0 -68
- package/dist/lib/teams/registry.js.map +0 -1
- package/dist/lib/teams/summarizer.d.ts +0 -73
- package/dist/lib/teams/summarizer.d.ts.map +0 -1
- package/dist/lib/teams/summarizer.js +0 -780
- package/dist/lib/teams/summarizer.js.map +0 -1
- package/dist/lib/teams/supervisor.d.ts +0 -49
- package/dist/lib/teams/supervisor.d.ts.map +0 -1
- package/dist/lib/teams/supervisor.js +0 -74
- package/dist/lib/teams/supervisor.js.map +0 -1
- package/dist/lib/template.d.ts +0 -27
- package/dist/lib/template.d.ts.map +0 -1
- package/dist/lib/template.js +0 -60
- package/dist/lib/template.js.map +0 -1
- package/dist/lib/types.d.ts +0 -331
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -29
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/usage.d.ts +0 -105
- package/dist/lib/usage.d.ts.map +0 -1
- package/dist/lib/usage.js +0 -686
- package/dist/lib/usage.js.map +0 -1
- package/dist/lib/versions.d.ts +0 -253
- package/dist/lib/versions.d.ts.map +0 -1
- package/dist/lib/versions.js +0 -1796
- package/dist/lib/versions.js.map +0 -1
- package/scripts/rebuild-sqlite.sh +0 -46
package/dist/lib/daemon.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daemon lifecycle management for the routines scheduler.
|
|
3
|
-
*
|
|
4
|
-
* The daemon is a long-running process that holds a JobScheduler and
|
|
5
|
-
* triggers jobs on their cron schedules. It can be managed via launchd
|
|
6
|
-
* (macOS), systemd (Linux), or as a plain detached process. PID tracking,
|
|
7
|
-
* log output, reload (SIGHUP), and graceful shutdown are handled here.
|
|
8
|
-
*/
|
|
9
|
-
/** Read the stored daemon PID from disk. Returns null if not present or invalid. */
|
|
10
|
-
export declare function readDaemonPid(): number | null;
|
|
11
|
-
/** Write the daemon PID to the pid file. */
|
|
12
|
-
export declare function writeDaemonPid(pid: number): void;
|
|
13
|
-
/** Remove the daemon PID file. */
|
|
14
|
-
export declare function removeDaemonPid(): void;
|
|
15
|
-
/** Check if the daemon process is alive by sending signal 0 to the stored PID. */
|
|
16
|
-
export declare function isDaemonRunning(): boolean;
|
|
17
|
-
/** Append a timestamped log line to the daemon log file. */
|
|
18
|
-
export declare function log(level: string, message: string): void;
|
|
19
|
-
/** Main daemon loop: load jobs, schedule crons, monitor runs, and handle signals. */
|
|
20
|
-
export declare function runDaemon(): Promise<void>;
|
|
21
|
-
/** Generate a macOS launchd plist for auto-starting the daemon. */
|
|
22
|
-
export declare function generateLaunchdPlist(): string;
|
|
23
|
-
/** Generate a Linux systemd user unit for auto-starting the daemon. */
|
|
24
|
-
export declare function generateSystemdUnit(): string;
|
|
25
|
-
/** Start the daemon via launchd, systemd, or as a detached process. */
|
|
26
|
-
export declare function startDaemon(): {
|
|
27
|
-
pid: number | null;
|
|
28
|
-
method: string;
|
|
29
|
-
};
|
|
30
|
-
/** Stop the daemon, unloading it from launchd/systemd if applicable. */
|
|
31
|
-
export declare function stopDaemon(): boolean;
|
|
32
|
-
/** Get current daemon status including running state, PID, and enabled job count. */
|
|
33
|
-
export declare function getDaemonStatus(): {
|
|
34
|
-
running: boolean;
|
|
35
|
-
pid: number | null;
|
|
36
|
-
jobCount: number;
|
|
37
|
-
logPath: string;
|
|
38
|
-
};
|
|
39
|
-
/** Read the daemon log, optionally limited to the last N lines. */
|
|
40
|
-
export declare function readDaemonLog(lines?: number): string;
|
|
41
|
-
/** Send SIGHUP to the daemon to trigger a job reload. */
|
|
42
|
-
export declare function signalDaemonReload(): boolean;
|
|
43
|
-
//# sourceMappingURL=daemon.d.ts.map
|
package/dist/lib/daemon.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgCH,oFAAoF;AACpF,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAS7C;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,kCAAkC;AAClC,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,IAAI,OAAO,CAUzC;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED,qFAAqF;AACrF,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C/C;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,IAAI,MAAM,CA+B7C;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,IAAI,MAAM,CAgB5C;AAUD,uEAAuE;AACvE,wBAAgB,WAAW,IAAI;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkDpE;AA6BD,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,OAAO,CAgDpC;AAED,qFAAqF;AACrF,wBAAgB,eAAe,IAAI;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAUA;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CASpD;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,IAAI,OAAO,CAS5C"}
|
package/dist/lib/daemon.js
DELETED
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daemon lifecycle management for the routines scheduler.
|
|
3
|
-
*
|
|
4
|
-
* The daemon is a long-running process that holds a JobScheduler and
|
|
5
|
-
* triggers jobs on their cron schedules. It can be managed via launchd
|
|
6
|
-
* (macOS), systemd (Linux), or as a plain detached process. PID tracking,
|
|
7
|
-
* log output, reload (SIGHUP), and graceful shutdown are handled here.
|
|
8
|
-
*/
|
|
9
|
-
import { spawn, execSync } from 'child_process';
|
|
10
|
-
import * as fs from 'fs';
|
|
11
|
-
import * as path from 'path';
|
|
12
|
-
import * as os from 'os';
|
|
13
|
-
import { getAgentsDir } from './state.js';
|
|
14
|
-
import { listJobs as listAllJobs } from './routines.js';
|
|
15
|
-
import { JobScheduler } from './scheduler.js';
|
|
16
|
-
import { executeJobDetached, monitorRunningJobs } from './runner.js';
|
|
17
|
-
const PID_FILE = 'daemon.pid';
|
|
18
|
-
const LOG_FILE = 'daemon.log';
|
|
19
|
-
const PLIST_NAME = 'co.swarmify.agents-daemon';
|
|
20
|
-
const SYSTEMD_UNIT = 'agents-daemon.service';
|
|
21
|
-
function getPidPath() {
|
|
22
|
-
return path.join(getAgentsDir(), PID_FILE);
|
|
23
|
-
}
|
|
24
|
-
function getLogPath() {
|
|
25
|
-
return path.join(getAgentsDir(), LOG_FILE);
|
|
26
|
-
}
|
|
27
|
-
function getLaunchdPlistPath() {
|
|
28
|
-
return path.join(os.homedir(), 'Library', 'LaunchAgents', `${PLIST_NAME}.plist`);
|
|
29
|
-
}
|
|
30
|
-
function getSystemdUnitPath() {
|
|
31
|
-
return path.join(os.homedir(), '.config', 'systemd', 'user', `${SYSTEMD_UNIT}`);
|
|
32
|
-
}
|
|
33
|
-
/** Read the stored daemon PID from disk. Returns null if not present or invalid. */
|
|
34
|
-
export function readDaemonPid() {
|
|
35
|
-
const pidPath = getPidPath();
|
|
36
|
-
if (!fs.existsSync(pidPath))
|
|
37
|
-
return null;
|
|
38
|
-
try {
|
|
39
|
-
const pid = parseInt(fs.readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
40
|
-
return isNaN(pid) ? null : pid;
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/** Write the daemon PID to the pid file. */
|
|
47
|
-
export function writeDaemonPid(pid) {
|
|
48
|
-
fs.writeFileSync(getPidPath(), String(pid), 'utf-8');
|
|
49
|
-
}
|
|
50
|
-
/** Remove the daemon PID file. */
|
|
51
|
-
export function removeDaemonPid() {
|
|
52
|
-
const pidPath = getPidPath();
|
|
53
|
-
if (fs.existsSync(pidPath)) {
|
|
54
|
-
fs.unlinkSync(pidPath);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/** Check if the daemon process is alive by sending signal 0 to the stored PID. */
|
|
58
|
-
export function isDaemonRunning() {
|
|
59
|
-
const pid = readDaemonPid();
|
|
60
|
-
if (!pid)
|
|
61
|
-
return false;
|
|
62
|
-
try {
|
|
63
|
-
process.kill(pid, 0);
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
removeDaemonPid();
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/** Append a timestamped log line to the daemon log file. */
|
|
72
|
-
export function log(level, message) {
|
|
73
|
-
const timestamp = new Date().toISOString();
|
|
74
|
-
const line = `[${timestamp}] [${level.toUpperCase()}] ${message}\n`;
|
|
75
|
-
fs.appendFileSync(getLogPath(), line, 'utf-8');
|
|
76
|
-
}
|
|
77
|
-
/** Main daemon loop: load jobs, schedule crons, monitor runs, and handle signals. */
|
|
78
|
-
export async function runDaemon() {
|
|
79
|
-
writeDaemonPid(process.pid);
|
|
80
|
-
log('INFO', `Daemon started (PID: ${process.pid})`);
|
|
81
|
-
const scheduler = new JobScheduler(async (config) => {
|
|
82
|
-
log('INFO', `Triggering job '${config.name}' (agent: ${config.agent})`);
|
|
83
|
-
try {
|
|
84
|
-
const meta = await executeJobDetached(config);
|
|
85
|
-
log('INFO', `Job '${config.name}' spawned (run: ${meta.runId}, PID: ${meta.pid})`);
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
log('ERROR', `Job '${config.name}' failed to spawn: ${err.message}`);
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
scheduler.loadAll();
|
|
92
|
-
const scheduled = scheduler.listScheduled();
|
|
93
|
-
log('INFO', `Loaded ${scheduled.length} jobs`);
|
|
94
|
-
for (const job of scheduled) {
|
|
95
|
-
log('INFO', ` ${job.name} -> next: ${job.nextRun?.toISOString() || 'unknown'}`);
|
|
96
|
-
}
|
|
97
|
-
const monitorInterval = setInterval(() => {
|
|
98
|
-
monitorRunningJobs();
|
|
99
|
-
}, 60_000);
|
|
100
|
-
const handleReload = () => {
|
|
101
|
-
log('INFO', 'Reloading jobs (SIGHUP)');
|
|
102
|
-
scheduler.reloadAll();
|
|
103
|
-
const reloaded = scheduler.listScheduled();
|
|
104
|
-
log('INFO', `Reloaded ${reloaded.length} jobs`);
|
|
105
|
-
};
|
|
106
|
-
const handleShutdown = () => {
|
|
107
|
-
log('INFO', 'Daemon shutting down');
|
|
108
|
-
scheduler.stopAll();
|
|
109
|
-
clearInterval(monitorInterval);
|
|
110
|
-
removeDaemonPid();
|
|
111
|
-
process.exit(0);
|
|
112
|
-
};
|
|
113
|
-
process.on('SIGHUP', handleReload);
|
|
114
|
-
process.on('SIGTERM', handleShutdown);
|
|
115
|
-
process.on('SIGINT', handleShutdown);
|
|
116
|
-
await new Promise(() => { });
|
|
117
|
-
}
|
|
118
|
-
/** Generate a macOS launchd plist for auto-starting the daemon. */
|
|
119
|
-
export function generateLaunchdPlist() {
|
|
120
|
-
const agentsBin = getAgentsBinPath();
|
|
121
|
-
const logPath = getLogPath();
|
|
122
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
123
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
124
|
-
<plist version="1.0">
|
|
125
|
-
<dict>
|
|
126
|
-
<key>Label</key>
|
|
127
|
-
<string>${PLIST_NAME}</string>
|
|
128
|
-
<key>ProgramArguments</key>
|
|
129
|
-
<array>
|
|
130
|
-
<string>${agentsBin}</string>
|
|
131
|
-
<string>daemon</string>
|
|
132
|
-
<string>_run</string>
|
|
133
|
-
</array>
|
|
134
|
-
<key>RunAtLoad</key>
|
|
135
|
-
<true/>
|
|
136
|
-
<key>KeepAlive</key>
|
|
137
|
-
<true/>
|
|
138
|
-
<key>StandardOutPath</key>
|
|
139
|
-
<string>${logPath}</string>
|
|
140
|
-
<key>StandardErrorPath</key>
|
|
141
|
-
<string>${logPath}</string>
|
|
142
|
-
<key>EnvironmentVariables</key>
|
|
143
|
-
<dict>
|
|
144
|
-
<key>PATH</key>
|
|
145
|
-
<string>/usr/local/bin:/usr/bin:/bin:/opt/homebrew/bin:${os.homedir()}/.bun/bin:${os.homedir()}/.nvm/versions/node/v24.0.0/bin</string>
|
|
146
|
-
</dict>
|
|
147
|
-
</dict>
|
|
148
|
-
</plist>`;
|
|
149
|
-
}
|
|
150
|
-
/** Generate a Linux systemd user unit for auto-starting the daemon. */
|
|
151
|
-
export function generateSystemdUnit() {
|
|
152
|
-
const agentsBin = getAgentsBinPath();
|
|
153
|
-
return `[Unit]
|
|
154
|
-
Description=Agents Daemon - Scheduled Job Runner
|
|
155
|
-
After=network.target
|
|
156
|
-
|
|
157
|
-
[Service]
|
|
158
|
-
Type=simple
|
|
159
|
-
ExecStart=${agentsBin} daemon _run
|
|
160
|
-
Restart=always
|
|
161
|
-
RestartSec=10
|
|
162
|
-
Environment=PATH=/usr/local/bin:/usr/bin:/bin:${os.homedir()}/.nvm/versions/node/v24.0.0/bin
|
|
163
|
-
|
|
164
|
-
[Install]
|
|
165
|
-
WantedBy=default.target`;
|
|
166
|
-
}
|
|
167
|
-
function getAgentsBinPath() {
|
|
168
|
-
try {
|
|
169
|
-
return execSync('which agents', { encoding: 'utf-8' }).trim();
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
return 'agents';
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/** Start the daemon via launchd, systemd, or as a detached process. */
|
|
176
|
-
export function startDaemon() {
|
|
177
|
-
if (isDaemonRunning()) {
|
|
178
|
-
const pid = readDaemonPid();
|
|
179
|
-
return { pid, method: 'already-running' };
|
|
180
|
-
}
|
|
181
|
-
const platform = os.platform();
|
|
182
|
-
if (platform === 'darwin') {
|
|
183
|
-
try {
|
|
184
|
-
const plistPath = getLaunchdPlistPath();
|
|
185
|
-
const plistDir = path.dirname(plistPath);
|
|
186
|
-
if (!fs.existsSync(plistDir)) {
|
|
187
|
-
fs.mkdirSync(plistDir, { recursive: true });
|
|
188
|
-
}
|
|
189
|
-
fs.writeFileSync(plistPath, generateLaunchdPlist(), 'utf-8');
|
|
190
|
-
try {
|
|
191
|
-
execSync(`launchctl unload "${plistPath}" 2>/dev/null`, { encoding: 'utf-8' });
|
|
192
|
-
}
|
|
193
|
-
catch { /* not loaded, expected */ }
|
|
194
|
-
execSync(`launchctl load "${plistPath}"`, { encoding: 'utf-8' });
|
|
195
|
-
const pid = waitForPid(3000);
|
|
196
|
-
return { pid, method: 'launchd' };
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
return startDetached();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
if (platform === 'linux') {
|
|
203
|
-
try {
|
|
204
|
-
const unitPath = getSystemdUnitPath();
|
|
205
|
-
const unitDir = path.dirname(unitPath);
|
|
206
|
-
if (!fs.existsSync(unitDir)) {
|
|
207
|
-
fs.mkdirSync(unitDir, { recursive: true });
|
|
208
|
-
}
|
|
209
|
-
fs.writeFileSync(unitPath, generateSystemdUnit(), 'utf-8');
|
|
210
|
-
execSync('systemctl --user daemon-reload', { encoding: 'utf-8' });
|
|
211
|
-
execSync(`systemctl --user enable ${SYSTEMD_UNIT}`, { encoding: 'utf-8' });
|
|
212
|
-
execSync(`systemctl --user start ${SYSTEMD_UNIT}`, { encoding: 'utf-8' });
|
|
213
|
-
const pid = waitForPid(3000);
|
|
214
|
-
return { pid, method: 'systemd' };
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
return startDetached();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return startDetached();
|
|
221
|
-
}
|
|
222
|
-
function startDetached() {
|
|
223
|
-
const agentsBin = getAgentsBinPath();
|
|
224
|
-
const logPath = getLogPath();
|
|
225
|
-
const logFd = fs.openSync(logPath, 'a');
|
|
226
|
-
const child = spawn(agentsBin, ['daemon', '_run'], {
|
|
227
|
-
stdio: ['ignore', logFd, logFd],
|
|
228
|
-
detached: true,
|
|
229
|
-
});
|
|
230
|
-
child.unref();
|
|
231
|
-
fs.closeSync(logFd);
|
|
232
|
-
return { pid: child.pid || null, method: 'detached' };
|
|
233
|
-
}
|
|
234
|
-
function waitForPid(timeoutMs) {
|
|
235
|
-
const start = Date.now();
|
|
236
|
-
while (Date.now() - start < timeoutMs) {
|
|
237
|
-
const pid = readDaemonPid();
|
|
238
|
-
if (pid)
|
|
239
|
-
return pid;
|
|
240
|
-
const waitUntil = Date.now() + 200;
|
|
241
|
-
while (Date.now() < waitUntil) { }
|
|
242
|
-
}
|
|
243
|
-
return readDaemonPid();
|
|
244
|
-
}
|
|
245
|
-
/** Stop the daemon, unloading it from launchd/systemd if applicable. */
|
|
246
|
-
export function stopDaemon() {
|
|
247
|
-
const platform = os.platform();
|
|
248
|
-
if (platform === 'darwin') {
|
|
249
|
-
const plistPath = getLaunchdPlistPath();
|
|
250
|
-
if (fs.existsSync(plistPath)) {
|
|
251
|
-
try {
|
|
252
|
-
execSync(`launchctl unload "${plistPath}"`, { encoding: 'utf-8' });
|
|
253
|
-
fs.unlinkSync(plistPath);
|
|
254
|
-
}
|
|
255
|
-
catch (err) {
|
|
256
|
-
if (process.env.AGENTS_DEBUG) {
|
|
257
|
-
console.error(`[debug] launchctl unload failed: ${err.message}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
if (platform === 'linux') {
|
|
263
|
-
try {
|
|
264
|
-
execSync(`systemctl --user stop ${SYSTEMD_UNIT}`, { encoding: 'utf-8' });
|
|
265
|
-
execSync(`systemctl --user disable ${SYSTEMD_UNIT}`, { encoding: 'utf-8' });
|
|
266
|
-
}
|
|
267
|
-
catch (err) {
|
|
268
|
-
if (process.env.AGENTS_DEBUG) {
|
|
269
|
-
console.error(`[debug] systemctl stop failed: ${err.message}`);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
const unitPath = getSystemdUnitPath();
|
|
273
|
-
if (fs.existsSync(unitPath)) {
|
|
274
|
-
try {
|
|
275
|
-
fs.unlinkSync(unitPath);
|
|
276
|
-
}
|
|
277
|
-
catch { /* unit file already removed */ }
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
const pid = readDaemonPid();
|
|
281
|
-
if (pid) {
|
|
282
|
-
try {
|
|
283
|
-
process.kill(pid, 'SIGTERM');
|
|
284
|
-
}
|
|
285
|
-
catch { /* process already exited */ }
|
|
286
|
-
setTimeout(() => {
|
|
287
|
-
try {
|
|
288
|
-
process.kill(pid, 0);
|
|
289
|
-
process.kill(pid, 'SIGKILL');
|
|
290
|
-
}
|
|
291
|
-
catch { /* process already exited */ }
|
|
292
|
-
}, 5000);
|
|
293
|
-
}
|
|
294
|
-
removeDaemonPid();
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
/** Get current daemon status including running state, PID, and enabled job count. */
|
|
298
|
-
export function getDaemonStatus() {
|
|
299
|
-
const running = isDaemonRunning();
|
|
300
|
-
const pid = readDaemonPid();
|
|
301
|
-
let jobCount = 0;
|
|
302
|
-
try {
|
|
303
|
-
jobCount = listAllJobs().filter((j) => j.enabled).length;
|
|
304
|
-
}
|
|
305
|
-
catch { /* job listing failed */ }
|
|
306
|
-
return { running, pid, jobCount, logPath: getLogPath() };
|
|
307
|
-
}
|
|
308
|
-
/** Read the daemon log, optionally limited to the last N lines. */
|
|
309
|
-
export function readDaemonLog(lines) {
|
|
310
|
-
const logPath = getLogPath();
|
|
311
|
-
if (!fs.existsSync(logPath))
|
|
312
|
-
return '(no log file)';
|
|
313
|
-
const content = fs.readFileSync(logPath, 'utf-8');
|
|
314
|
-
if (!lines)
|
|
315
|
-
return content;
|
|
316
|
-
const allLines = content.split('\n');
|
|
317
|
-
return allLines.slice(-lines).join('\n');
|
|
318
|
-
}
|
|
319
|
-
/** Send SIGHUP to the daemon to trigger a job reload. */
|
|
320
|
-
export function signalDaemonReload() {
|
|
321
|
-
const pid = readDaemonPid();
|
|
322
|
-
if (!pid)
|
|
323
|
-
return false;
|
|
324
|
-
try {
|
|
325
|
-
process.kill(pid, 'SIGHUP');
|
|
326
|
-
return true;
|
|
327
|
-
}
|
|
328
|
-
catch {
|
|
329
|
-
return false;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
//# sourceMappingURL=daemon.js.map
|
package/dist/lib/daemon.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/drive-sync.d.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remote drive sync for agent sessions and config.
|
|
3
|
-
*
|
|
4
|
-
* Provides rsync-based push/pull between the local ~/.agents/drive/
|
|
5
|
-
* directory and a remote host, plus attach/detach to swap the active
|
|
6
|
-
* agent's config directory symlink to the drive directory (for working
|
|
7
|
-
* with a remote machine's session data locally).
|
|
8
|
-
*/
|
|
9
|
-
/** Persisted drive configuration stored at ~/.agents/drive/config.json. */
|
|
10
|
-
export interface DriveConfig {
|
|
11
|
-
remote: string | null;
|
|
12
|
-
attached: boolean;
|
|
13
|
-
previousTargets: {
|
|
14
|
-
configDir: string;
|
|
15
|
-
homeFiles: Record<string, string>;
|
|
16
|
-
} | null;
|
|
17
|
-
lastPull: string | null;
|
|
18
|
-
lastPush: string | null;
|
|
19
|
-
}
|
|
20
|
-
/** Read drive config from disk, returning defaults if missing. */
|
|
21
|
-
export declare function readDriveConfig(): DriveConfig;
|
|
22
|
-
/** Write drive config to disk. */
|
|
23
|
-
export declare function writeDriveConfig(config: DriveConfig): void;
|
|
24
|
-
/** Set the remote target (user@host) for rsync operations. */
|
|
25
|
-
export declare function setRemote(target: string): void;
|
|
26
|
-
/** Pull drive data from the remote host via rsync. */
|
|
27
|
-
export declare function pull(): Promise<void>;
|
|
28
|
-
/** Push local drive data to the remote host via rsync. */
|
|
29
|
-
export declare function push(): Promise<void>;
|
|
30
|
-
/** Attach drive by swapping the agent's config directory symlink to the drive directory. */
|
|
31
|
-
export declare function attach(): void;
|
|
32
|
-
/** Detach drive by restoring the agent's config directory to its previous symlink target. */
|
|
33
|
-
export declare function detach(): void;
|
|
34
|
-
/** Current drive state for display purposes. */
|
|
35
|
-
export interface DriveStatus {
|
|
36
|
-
remote: string | null;
|
|
37
|
-
attached: boolean;
|
|
38
|
-
lastPull: string | null;
|
|
39
|
-
lastPush: string | null;
|
|
40
|
-
driveDir: string;
|
|
41
|
-
configDirTarget: string | null;
|
|
42
|
-
homeFileTargets: Record<string, string | null>;
|
|
43
|
-
}
|
|
44
|
-
/** Gather current drive status by inspecting config, symlinks, and timestamps. */
|
|
45
|
-
export declare function getDriveStatus(): DriveStatus;
|
|
46
|
-
//# sourceMappingURL=drive-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drive-sync.d.ts","sourceRoot":"","sources":["../../src/lib/drive-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,GAAG,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAMD,kEAAkE;AAClE,wBAAgB,eAAe,IAAI,WAAW,CAU7C;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAM1D;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAO9C;AAED,sDAAsD;AACtD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAW1C;AAED,0DAA0D;AAC1D,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1C;AAED,4FAA4F;AAC5F,wBAAgB,MAAM,IAAI,IAAI,CAmE7B;AAED,6FAA6F;AAC7F,wBAAgB,MAAM,IAAI,IAAI,CA0B7B;AAED,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAChD;AAED,kFAAkF;AAClF,wBAAgB,cAAc,IAAI,WAAW,CAsC5C"}
|
package/dist/lib/drive-sync.js
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remote drive sync for agent sessions and config.
|
|
3
|
-
*
|
|
4
|
-
* Provides rsync-based push/pull between the local ~/.agents/drive/
|
|
5
|
-
* directory and a remote host, plus attach/detach to swap the active
|
|
6
|
-
* agent's config directory symlink to the drive directory (for working
|
|
7
|
-
* with a remote machine's session data locally).
|
|
8
|
-
*/
|
|
9
|
-
import * as fs from 'fs';
|
|
10
|
-
import * as path from 'path';
|
|
11
|
-
import * as os from 'os';
|
|
12
|
-
import { exec } from 'child_process';
|
|
13
|
-
import { promisify } from 'util';
|
|
14
|
-
import { getDriveDir } from './state.js';
|
|
15
|
-
import { AGENTS } from './agents.js';
|
|
16
|
-
const execAsync = promisify(exec);
|
|
17
|
-
const AGENT = 'claude';
|
|
18
|
-
function configPath() {
|
|
19
|
-
return path.join(getDriveDir(), 'config.json');
|
|
20
|
-
}
|
|
21
|
-
/** Read drive config from disk, returning defaults if missing. */
|
|
22
|
-
export function readDriveConfig() {
|
|
23
|
-
const p = configPath();
|
|
24
|
-
if (fs.existsSync(p)) {
|
|
25
|
-
try {
|
|
26
|
-
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
// Fall through to default
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return { remote: null, attached: false, previousTargets: null, lastPull: null, lastPush: null };
|
|
33
|
-
}
|
|
34
|
-
/** Write drive config to disk. */
|
|
35
|
-
export function writeDriveConfig(config) {
|
|
36
|
-
const dir = getDriveDir();
|
|
37
|
-
if (!fs.existsSync(dir)) {
|
|
38
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
39
|
-
}
|
|
40
|
-
fs.writeFileSync(configPath(), JSON.stringify(config, null, 2));
|
|
41
|
-
}
|
|
42
|
-
/** Set the remote target (user@host) for rsync operations. */
|
|
43
|
-
export function setRemote(target) {
|
|
44
|
-
if (!target.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+$/)) {
|
|
45
|
-
throw new Error(`Invalid remote: ${target}. Expected: user@host`);
|
|
46
|
-
}
|
|
47
|
-
const config = readDriveConfig();
|
|
48
|
-
config.remote = target;
|
|
49
|
-
writeDriveConfig(config);
|
|
50
|
-
}
|
|
51
|
-
/** Pull drive data from the remote host via rsync. */
|
|
52
|
-
export async function pull() {
|
|
53
|
-
const config = readDriveConfig();
|
|
54
|
-
if (!config.remote)
|
|
55
|
-
throw new Error('No remote configured. Run: agents drive remote <user@host>');
|
|
56
|
-
const localDir = getDriveDir() + '/';
|
|
57
|
-
const remote = `${config.remote}:~/.agents/drive/`;
|
|
58
|
-
await execAsync(`rsync -az --exclude='config.json' ${remote} ${localDir}`);
|
|
59
|
-
config.lastPull = new Date().toISOString();
|
|
60
|
-
writeDriveConfig(config);
|
|
61
|
-
}
|
|
62
|
-
/** Push local drive data to the remote host via rsync. */
|
|
63
|
-
export async function push() {
|
|
64
|
-
const config = readDriveConfig();
|
|
65
|
-
if (!config.remote)
|
|
66
|
-
throw new Error('No remote configured. Run: agents drive remote <user@host>');
|
|
67
|
-
const localDir = getDriveDir() + '/';
|
|
68
|
-
const remote = `${config.remote}:~/.agents/drive/`;
|
|
69
|
-
// Ensure remote directory exists
|
|
70
|
-
await execAsync(`ssh ${config.remote} 'mkdir -p ~/.agents/drive'`);
|
|
71
|
-
await execAsync(`rsync -az --exclude='config.json' ${localDir} ${remote}`);
|
|
72
|
-
config.lastPush = new Date().toISOString();
|
|
73
|
-
writeDriveConfig(config);
|
|
74
|
-
}
|
|
75
|
-
/** Attach drive by swapping the agent's config directory symlink to the drive directory. */
|
|
76
|
-
export function attach() {
|
|
77
|
-
const config = readDriveConfig();
|
|
78
|
-
if (config.attached)
|
|
79
|
-
throw new Error('Drive is already attached');
|
|
80
|
-
const home = os.homedir();
|
|
81
|
-
const agentConfig = AGENTS[AGENT];
|
|
82
|
-
const driveDir = getDriveDir();
|
|
83
|
-
const configDirPath = agentConfig.configDir; // ~/.claude
|
|
84
|
-
const driveConfigDir = path.join(driveDir, `.${AGENT}`); // ~/.agents/drive/.claude
|
|
85
|
-
// Read current symlink target
|
|
86
|
-
let prevConfigDir = null;
|
|
87
|
-
try {
|
|
88
|
-
const stat = fs.lstatSync(configDirPath);
|
|
89
|
-
if (stat.isSymbolicLink()) {
|
|
90
|
-
prevConfigDir = fs.readlinkSync(configDirPath);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
// Path doesn't exist
|
|
95
|
-
}
|
|
96
|
-
if (!prevConfigDir) {
|
|
97
|
-
throw new Error(`${configDirPath} is not a symlink. Run 'agents use claude' first.`);
|
|
98
|
-
}
|
|
99
|
-
// Save previous targets for home files
|
|
100
|
-
const prevHomeFiles = {};
|
|
101
|
-
for (const hf of agentConfig.homeFiles || []) {
|
|
102
|
-
const hfPath = path.join(home, hf);
|
|
103
|
-
try {
|
|
104
|
-
const stat = fs.lstatSync(hfPath);
|
|
105
|
-
if (stat.isSymbolicLink()) {
|
|
106
|
-
prevHomeFiles[hf] = fs.readlinkSync(hfPath);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
// File doesn't exist
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
config.previousTargets = {
|
|
114
|
-
configDir: prevConfigDir,
|
|
115
|
-
homeFiles: prevHomeFiles,
|
|
116
|
-
};
|
|
117
|
-
// Ensure drive config dir exists
|
|
118
|
-
if (!fs.existsSync(driveConfigDir)) {
|
|
119
|
-
fs.mkdirSync(driveConfigDir, { recursive: true });
|
|
120
|
-
}
|
|
121
|
-
// Swap config dir symlink
|
|
122
|
-
fs.unlinkSync(configDirPath);
|
|
123
|
-
fs.symlinkSync(driveConfigDir, configDirPath);
|
|
124
|
-
// Swap home files
|
|
125
|
-
for (const hf of agentConfig.homeFiles || []) {
|
|
126
|
-
const hfPath = path.join(home, hf);
|
|
127
|
-
const driveHfPath = path.join(driveDir, hf);
|
|
128
|
-
if (!fs.existsSync(driveHfPath)) {
|
|
129
|
-
fs.writeFileSync(driveHfPath, '{}');
|
|
130
|
-
}
|
|
131
|
-
try {
|
|
132
|
-
fs.unlinkSync(hfPath);
|
|
133
|
-
}
|
|
134
|
-
catch { /* doesn't exist */ }
|
|
135
|
-
fs.symlinkSync(driveHfPath, hfPath);
|
|
136
|
-
}
|
|
137
|
-
config.attached = true;
|
|
138
|
-
writeDriveConfig(config);
|
|
139
|
-
}
|
|
140
|
-
/** Detach drive by restoring the agent's config directory to its previous symlink target. */
|
|
141
|
-
export function detach() {
|
|
142
|
-
const config = readDriveConfig();
|
|
143
|
-
if (!config.attached)
|
|
144
|
-
throw new Error('Drive is not attached');
|
|
145
|
-
if (!config.previousTargets)
|
|
146
|
-
throw new Error('No previous targets saved');
|
|
147
|
-
const home = os.homedir();
|
|
148
|
-
const agentConfig = AGENTS[AGENT];
|
|
149
|
-
// Restore config dir symlink
|
|
150
|
-
const configDirPath = agentConfig.configDir;
|
|
151
|
-
fs.unlinkSync(configDirPath);
|
|
152
|
-
fs.symlinkSync(config.previousTargets.configDir, configDirPath);
|
|
153
|
-
// Restore home files
|
|
154
|
-
for (const hf of agentConfig.homeFiles || []) {
|
|
155
|
-
const hfPath = path.join(home, hf);
|
|
156
|
-
const prevTarget = config.previousTargets.homeFiles[hf];
|
|
157
|
-
if (prevTarget) {
|
|
158
|
-
try {
|
|
159
|
-
fs.unlinkSync(hfPath);
|
|
160
|
-
}
|
|
161
|
-
catch { /* doesn't exist */ }
|
|
162
|
-
fs.symlinkSync(prevTarget, hfPath);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
config.attached = false;
|
|
166
|
-
config.previousTargets = null;
|
|
167
|
-
writeDriveConfig(config);
|
|
168
|
-
}
|
|
169
|
-
/** Gather current drive status by inspecting config, symlinks, and timestamps. */
|
|
170
|
-
export function getDriveStatus() {
|
|
171
|
-
const config = readDriveConfig();
|
|
172
|
-
const home = os.homedir();
|
|
173
|
-
const agentConfig = AGENTS[AGENT];
|
|
174
|
-
let configDirTarget = null;
|
|
175
|
-
try {
|
|
176
|
-
const stat = fs.lstatSync(agentConfig.configDir);
|
|
177
|
-
if (stat.isSymbolicLink()) {
|
|
178
|
-
configDirTarget = fs.readlinkSync(agentConfig.configDir);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
// Not a symlink or doesn't exist
|
|
183
|
-
}
|
|
184
|
-
const homeFileTargets = {};
|
|
185
|
-
for (const hf of agentConfig.homeFiles || []) {
|
|
186
|
-
try {
|
|
187
|
-
const stat = fs.lstatSync(path.join(home, hf));
|
|
188
|
-
if (stat.isSymbolicLink()) {
|
|
189
|
-
homeFileTargets[hf] = fs.readlinkSync(path.join(home, hf));
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
homeFileTargets[hf] = null;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
homeFileTargets[hf] = null;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return {
|
|
200
|
-
remote: config.remote,
|
|
201
|
-
attached: config.attached,
|
|
202
|
-
lastPull: config.lastPull,
|
|
203
|
-
lastPush: config.lastPush,
|
|
204
|
-
driveDir: getDriveDir(),
|
|
205
|
-
configDirTarget,
|
|
206
|
-
homeFileTargets,
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
//# sourceMappingURL=drive-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drive-sync.js","sourceRoot":"","sources":["../../src/lib/drive-sync.ts"],"names":[],"mappings":"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"}
|