@aligndottech/cli 0.49.0 → 0.51.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 +5 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +32 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +4 -1
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +18 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +33 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/connect-agents.d.ts.map +1 -1
- package/dist/commands/connect-agents.js +3 -1
- package/dist/commands/connect-agents.js.map +1 -1
- package/dist/commands/connect.d.ts +5 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +24 -0
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +11 -0
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/import/confluence.d.ts.map +1 -1
- package/dist/commands/import/confluence.js +24 -5
- package/dist/commands/import/confluence.js.map +1 -1
- package/dist/commands/import/docs.js +2 -2
- package/dist/commands/import/git.d.ts.map +1 -1
- package/dist/commands/import/git.js +15 -5
- package/dist/commands/import/git.js.map +1 -1
- package/dist/commands/import/github.d.ts.map +1 -1
- package/dist/commands/import/github.js +34 -7
- package/dist/commands/import/github.js.map +1 -1
- package/dist/commands/import/gitlab.d.ts.map +1 -1
- package/dist/commands/import/gitlab.js +10 -5
- package/dist/commands/import/gitlab.js.map +1 -1
- package/dist/commands/import/jira.d.ts.map +1 -1
- package/dist/commands/import/jira.js +10 -5
- package/dist/commands/import/jira.js.map +1 -1
- package/dist/commands/import/linear.d.ts.map +1 -1
- package/dist/commands/import/linear.js +10 -5
- package/dist/commands/import/linear.js.map +1 -1
- package/dist/commands/import/notion.d.ts.map +1 -1
- package/dist/commands/import/notion.js +10 -5
- package/dist/commands/import/notion.js.map +1 -1
- package/dist/commands/import/sessions.js +2 -2
- package/dist/commands/import/slack.d.ts.map +1 -1
- package/dist/commands/import/slack.js +12 -7
- package/dist/commands/import/slack.js.map +1 -1
- package/dist/commands/import/teams.d.ts.map +1 -1
- package/dist/commands/import/teams.js +10 -5
- package/dist/commands/import/teams.js.map +1 -1
- package/dist/commands/import/zoom.d.ts.map +1 -1
- package/dist/commands/import/zoom.js +10 -5
- package/dist/commands/import/zoom.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +43 -1
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/invite.d.ts +8 -18
- package/dist/commands/invite.d.ts.map +1 -1
- package/dist/commands/invite.js +23 -46
- package/dist/commands/invite.js.map +1 -1
- package/dist/commands/join.d.ts +5 -0
- package/dist/commands/join.d.ts.map +1 -0
- package/dist/commands/join.js +49 -0
- package/dist/commands/join.js.map +1 -0
- package/dist/commands/local-relink.d.ts +35 -0
- package/dist/commands/local-relink.d.ts.map +1 -0
- package/dist/commands/local-relink.js +72 -0
- package/dist/commands/local-relink.js.map +1 -0
- package/dist/commands/local.d.ts.map +1 -1
- package/dist/commands/local.js +113 -4
- package/dist/commands/local.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +21 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/mark.d.ts +37 -0
- package/dist/commands/mark.d.ts.map +1 -0
- package/dist/commands/mark.js +105 -0
- package/dist/commands/mark.js.map +1 -0
- package/dist/commands/mcp.d.ts +149 -2
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +80 -15
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +12 -2
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/setup.d.ts +39 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +65 -50
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/share.d.ts +7 -0
- package/dist/commands/share.d.ts.map +1 -0
- package/dist/commands/share.js +129 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +10 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +55 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +278 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/telemetry.d.ts +3 -3
- package/dist/commands/telemetry.js +6 -6
- package/dist/commands/telemetry.js.map +1 -1
- package/dist/commands/why.d.ts.map +1 -1
- package/dist/commands/why.js +6 -1
- package/dist/commands/why.js.map +1 -1
- package/dist/detector/detector-version.d.ts +16 -0
- package/dist/detector/detector-version.d.ts.map +1 -0
- package/dist/detector/detector-version.js +36 -0
- package/dist/detector/detector-version.js.map +1 -0
- package/dist/detector/relationship-contract.d.ts +30 -0
- package/dist/detector/relationship-contract.d.ts.map +1 -0
- package/dist/detector/relationship-contract.js +120 -0
- package/dist/detector/relationship-contract.js.map +1 -0
- package/dist/detector/relationship-contract.v1.json +53 -0
- package/dist/detector/relationship-prompt.d.ts +20 -0
- package/dist/detector/relationship-prompt.d.ts.map +1 -0
- package/dist/detector/relationship-prompt.js +55 -0
- package/dist/detector/relationship-prompt.js.map +1 -0
- package/dist/detector/relationship-prompt.v1.json +13 -0
- package/dist/detector/resolve-pair.d.ts +39 -0
- package/dist/detector/resolve-pair.d.ts.map +1 -0
- package/dist/detector/resolve-pair.js +345 -0
- package/dist/detector/resolve-pair.js.map +1 -0
- package/dist/detector/similar-item.d.ts +20 -0
- package/dist/detector/similar-item.d.ts.map +1 -0
- package/dist/detector/similar-item.js +16 -0
- package/dist/detector/similar-item.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -11
- package/dist/index.js.map +1 -1
- package/dist/lib/advisory-dedup.d.ts.map +1 -1
- package/dist/lib/advisory-dedup.js +16 -8
- package/dist/lib/advisory-dedup.js.map +1 -1
- package/dist/lib/advisory-verdict.d.ts +19 -0
- package/dist/lib/advisory-verdict.d.ts.map +1 -1
- package/dist/lib/advisory-verdict.js +6 -3
- package/dist/lib/advisory-verdict.js.map +1 -1
- package/dist/lib/backfill-state.d.ts +116 -0
- package/dist/lib/backfill-state.d.ts.map +1 -0
- package/dist/lib/backfill-state.js +342 -0
- package/dist/lib/backfill-state.js.map +1 -0
- package/dist/lib/backup-copy.d.ts +17 -0
- package/dist/lib/backup-copy.d.ts.map +1 -0
- package/dist/lib/backup-copy.js +13 -0
- package/dist/lib/backup-copy.js.map +1 -0
- package/dist/lib/backup-exclusion.d.ts +10 -0
- package/dist/lib/backup-exclusion.d.ts.map +1 -0
- package/dist/lib/backup-exclusion.js +58 -0
- package/dist/lib/backup-exclusion.js.map +1 -0
- package/dist/lib/capture-report.d.ts +22 -18
- package/dist/lib/capture-report.d.ts.map +1 -1
- package/dist/lib/capture-report.js +64 -2
- package/dist/lib/capture-report.js.map +1 -1
- package/dist/lib/cli-oauth.d.ts +2 -0
- package/dist/lib/cli-oauth.d.ts.map +1 -1
- package/dist/lib/cli-oauth.js +61 -10
- package/dist/lib/cli-oauth.js.map +1 -1
- package/dist/lib/config.d.ts +72 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +245 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/confirm-timeout.d.ts +8 -0
- package/dist/lib/confirm-timeout.d.ts.map +1 -0
- package/dist/lib/confirm-timeout.js +18 -0
- package/dist/lib/confirm-timeout.js.map +1 -0
- package/dist/lib/curation/check-marks.d.ts +48 -0
- package/dist/lib/curation/check-marks.d.ts.map +1 -0
- package/dist/lib/curation/check-marks.js +81 -0
- package/dist/lib/curation/check-marks.js.map +1 -0
- package/dist/lib/curation/guardrail.d.ts +39 -0
- package/dist/lib/curation/guardrail.d.ts.map +1 -0
- package/dist/lib/curation/guardrail.js +95 -0
- package/dist/lib/curation/guardrail.js.map +1 -0
- package/dist/lib/curation/judge.d.ts +3 -0
- package/dist/lib/curation/judge.d.ts.map +1 -0
- package/dist/lib/curation/judge.js +9 -0
- package/dist/lib/curation/judge.js.map +1 -0
- package/dist/lib/curation/judgements-db.d.ts +97 -0
- package/dist/lib/curation/judgements-db.d.ts.map +1 -0
- package/dist/lib/curation/judgements-db.js +206 -0
- package/dist/lib/curation/judgements-db.js.map +1 -0
- package/dist/lib/curation/last-check.d.ts +32 -0
- package/dist/lib/curation/last-check.d.ts.map +1 -0
- package/dist/lib/curation/last-check.js +81 -0
- package/dist/lib/curation/last-check.js.map +1 -0
- package/dist/lib/curation/mark.d.ts +76 -0
- package/dist/lib/curation/mark.d.ts.map +1 -0
- package/dist/lib/curation/mark.js +361 -0
- package/dist/lib/curation/mark.js.map +1 -0
- package/dist/lib/curation/text.d.ts +6 -0
- package/dist/lib/curation/text.d.ts.map +1 -0
- package/dist/lib/curation/text.js +35 -0
- package/dist/lib/curation/text.js.map +1 -0
- package/dist/lib/destination-name.d.ts +24 -0
- package/dist/lib/destination-name.d.ts.map +1 -0
- package/dist/lib/destination-name.js +39 -0
- package/dist/lib/destination-name.js.map +1 -0
- package/dist/lib/destination-summary.d.ts +6 -0
- package/dist/lib/destination-summary.d.ts.map +1 -0
- package/dist/lib/destination-summary.js +27 -0
- package/dist/lib/destination-summary.js.map +1 -0
- package/dist/lib/destination-trust.d.ts +54 -0
- package/dist/lib/destination-trust.d.ts.map +1 -0
- package/dist/lib/destination-trust.js +107 -0
- package/dist/lib/destination-trust.js.map +1 -0
- package/dist/lib/env-resolver.d.ts.map +1 -1
- package/dist/lib/env-resolver.js +3 -0
- package/dist/lib/env-resolver.js.map +1 -1
- package/dist/lib/fatal.d.ts +11 -0
- package/dist/lib/fatal.d.ts.map +1 -0
- package/dist/lib/fatal.js +22 -0
- package/dist/lib/fatal.js.map +1 -0
- package/dist/lib/fetchers/capture.d.ts +49 -2
- package/dist/lib/fetchers/capture.d.ts.map +1 -1
- package/dist/lib/fetchers/capture.js +7 -1
- package/dist/lib/fetchers/capture.js.map +1 -1
- package/dist/lib/fetchers/confluence.d.ts +2 -2
- package/dist/lib/fetchers/confluence.d.ts.map +1 -1
- package/dist/lib/fetchers/confluence.js.map +1 -1
- package/dist/lib/fetchers/git.d.ts +1 -0
- package/dist/lib/fetchers/git.d.ts.map +1 -1
- package/dist/lib/fetchers/git.js +3 -1
- package/dist/lib/fetchers/git.js.map +1 -1
- package/dist/lib/fetchers/github.d.ts +44 -5
- package/dist/lib/fetchers/github.d.ts.map +1 -1
- package/dist/lib/fetchers/github.js +122 -5
- package/dist/lib/fetchers/github.js.map +1 -1
- package/dist/lib/fetchers/gitlab.d.ts +2 -2
- package/dist/lib/fetchers/gitlab.d.ts.map +1 -1
- package/dist/lib/fetchers/gitlab.js.map +1 -1
- package/dist/lib/fetchers/jira.d.ts +2 -2
- package/dist/lib/fetchers/jira.d.ts.map +1 -1
- package/dist/lib/fetchers/jira.js.map +1 -1
- package/dist/lib/fetchers/linear.d.ts +2 -2
- package/dist/lib/fetchers/linear.d.ts.map +1 -1
- package/dist/lib/fetchers/linear.js.map +1 -1
- package/dist/lib/fetchers/notion.d.ts +2 -2
- package/dist/lib/fetchers/notion.d.ts.map +1 -1
- package/dist/lib/fetchers/notion.js.map +1 -1
- package/dist/lib/fetchers/slack.d.ts +2 -3
- package/dist/lib/fetchers/slack.d.ts.map +1 -1
- package/dist/lib/fetchers/slack.js.map +1 -1
- package/dist/lib/fetchers/teams.d.ts +2 -2
- package/dist/lib/fetchers/teams.d.ts.map +1 -1
- package/dist/lib/fetchers/teams.js.map +1 -1
- package/dist/lib/fetchers/zoom.d.ts +2 -2
- package/dist/lib/fetchers/zoom.d.ts.map +1 -1
- package/dist/lib/fetchers/zoom.js.map +1 -1
- package/dist/lib/gateway-client.d.ts +40 -14
- package/dist/lib/gateway-client.d.ts.map +1 -1
- package/dist/lib/gateway-client.js +47 -19
- package/dist/lib/gateway-client.js.map +1 -1
- package/dist/lib/github-text.d.ts +3 -0
- package/dist/lib/github-text.d.ts.map +1 -0
- package/dist/lib/github-text.js +18 -0
- package/dist/lib/github-text.js.map +1 -0
- package/dist/lib/hook-context.d.ts +10 -0
- package/dist/lib/hook-context.d.ts.map +1 -1
- package/dist/lib/hook-context.js +14 -0
- package/dist/lib/hook-context.js.map +1 -1
- package/dist/lib/import-defaults.d.ts +39 -23
- package/dist/lib/import-defaults.d.ts.map +1 -1
- package/dist/lib/import-defaults.js +28 -26
- package/dist/lib/import-defaults.js.map +1 -1
- package/dist/lib/invite-prompt.d.ts +4 -4
- package/dist/lib/invite-prompt.d.ts.map +1 -1
- package/dist/lib/invite-prompt.js +4 -4
- package/dist/lib/invite-prompt.js.map +1 -1
- package/dist/lib/invite-settings.d.ts +18 -0
- package/dist/lib/invite-settings.d.ts.map +1 -0
- package/dist/lib/invite-settings.js +29 -0
- package/dist/lib/invite-settings.js.map +1 -0
- package/dist/lib/join-flow.d.ts +60 -0
- package/dist/lib/join-flow.d.ts.map +1 -0
- package/dist/lib/join-flow.js +282 -0
- package/dist/lib/join-flow.js.map +1 -0
- package/dist/lib/launch/adapters/aider.d.ts +17 -0
- package/dist/lib/launch/adapters/aider.d.ts.map +1 -0
- package/dist/lib/launch/adapters/aider.js +30 -0
- package/dist/lib/launch/adapters/aider.js.map +1 -0
- package/dist/lib/launch/adapters/auggie.d.ts +18 -0
- package/dist/lib/launch/adapters/auggie.d.ts.map +1 -0
- package/dist/lib/launch/adapters/auggie.js +34 -0
- package/dist/lib/launch/adapters/auggie.js.map +1 -0
- package/dist/lib/launch/adapters/cline.d.ts +10 -0
- package/dist/lib/launch/adapters/cline.d.ts.map +1 -0
- package/dist/lib/launch/adapters/cline.js +41 -0
- package/dist/lib/launch/adapters/cline.js.map +1 -0
- package/dist/lib/launch/adapters/continue.d.ts +22 -0
- package/dist/lib/launch/adapters/continue.d.ts.map +1 -0
- package/dist/lib/launch/adapters/continue.js +46 -0
- package/dist/lib/launch/adapters/continue.js.map +1 -0
- package/dist/lib/launch/adapters/gemini-cli.d.ts +13 -14
- package/dist/lib/launch/adapters/gemini-cli.d.ts.map +1 -1
- package/dist/lib/launch/adapters/gemini-cli.js +38 -53
- package/dist/lib/launch/adapters/gemini-cli.js.map +1 -1
- package/dist/lib/launch/adapters/goose.d.ts +20 -0
- package/dist/lib/launch/adapters/goose.d.ts.map +1 -0
- package/dist/lib/launch/adapters/goose.js +47 -0
- package/dist/lib/launch/adapters/goose.js.map +1 -0
- package/dist/lib/launch/adapters/notes.d.ts +7 -0
- package/dist/lib/launch/adapters/notes.d.ts.map +1 -0
- package/dist/lib/launch/adapters/notes.js +5 -0
- package/dist/lib/launch/adapters/notes.js.map +1 -0
- package/dist/lib/launch/agents.d.ts +2 -0
- package/dist/lib/launch/agents.d.ts.map +1 -1
- package/dist/lib/launch/agents.js +3 -1
- package/dist/lib/launch/agents.js.map +1 -1
- package/dist/lib/launch/auggie-state.d.ts +25 -0
- package/dist/lib/launch/auggie-state.d.ts.map +1 -0
- package/dist/lib/launch/auggie-state.js +74 -0
- package/dist/lib/launch/auggie-state.js.map +1 -0
- package/dist/lib/launch/cline-state.d.ts +32 -0
- package/dist/lib/launch/cline-state.d.ts.map +1 -0
- package/dist/lib/launch/cline-state.js +108 -0
- package/dist/lib/launch/cline-state.js.map +1 -0
- package/dist/lib/launch/config-writes.d.ts +4 -0
- package/dist/lib/launch/config-writes.d.ts.map +1 -1
- package/dist/lib/launch/config-writes.js +8 -3
- package/dist/lib/launch/config-writes.js.map +1 -1
- package/dist/lib/launch/continue-state.d.ts +41 -0
- package/dist/lib/launch/continue-state.d.ts.map +1 -0
- package/dist/lib/launch/continue-state.js +142 -0
- package/dist/lib/launch/continue-state.js.map +1 -0
- package/dist/lib/launch/detect.d.ts.map +1 -1
- package/dist/lib/launch/detect.js +3 -1
- package/dist/lib/launch/detect.js.map +1 -1
- package/dist/lib/launch/gemini-state.d.ts +26 -20
- package/dist/lib/launch/gemini-state.d.ts.map +1 -1
- package/dist/lib/launch/gemini-state.js +95 -37
- package/dist/lib/launch/gemini-state.js.map +1 -1
- package/dist/lib/launch/gemini-system-file.d.ts +17 -0
- package/dist/lib/launch/gemini-system-file.d.ts.map +1 -0
- package/dist/lib/launch/gemini-system-file.js +55 -0
- package/dist/lib/launch/gemini-system-file.js.map +1 -0
- package/dist/lib/launch/gemini-trust.d.ts +3 -1
- package/dist/lib/launch/gemini-trust.d.ts.map +1 -1
- package/dist/lib/launch/gemini-trust.js +10 -3
- package/dist/lib/launch/gemini-trust.js.map +1 -1
- package/dist/lib/launch/goose-state.d.ts +53 -0
- package/dist/lib/launch/goose-state.d.ts.map +1 -0
- package/dist/lib/launch/goose-state.js +137 -0
- package/dist/lib/launch/goose-state.js.map +1 -0
- package/dist/lib/launch/launch-files.d.ts.map +1 -1
- package/dist/lib/launch/launch-files.js +3 -2
- package/dist/lib/launch/launch-files.js.map +1 -1
- package/dist/lib/launch/launch.d.ts +17 -2
- package/dist/lib/launch/launch.d.ts.map +1 -1
- package/dist/lib/launch/launch.js +36 -3
- package/dist/lib/launch/launch.js.map +1 -1
- package/dist/lib/launch/mcp-child-env.d.ts +30 -0
- package/dist/lib/launch/mcp-child-env.d.ts.map +1 -0
- package/dist/lib/launch/mcp-child-env.js +154 -0
- package/dist/lib/launch/mcp-child-env.js.map +1 -0
- package/dist/lib/launch/pick-agent.d.ts.map +1 -1
- package/dist/lib/launch/pick-agent.js +4 -4
- package/dist/lib/launch/pick-agent.js.map +1 -1
- package/dist/lib/launch/picker-options.d.ts.map +1 -1
- package/dist/lib/launch/picker-options.js +7 -2
- package/dist/lib/launch/picker-options.js.map +1 -1
- package/dist/lib/launch/registry/agents/aider.d.ts +3 -0
- package/dist/lib/launch/registry/agents/aider.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/aider.js +13 -0
- package/dist/lib/launch/registry/agents/aider.js.map +1 -0
- package/dist/lib/launch/registry/agents/auggie.d.ts +3 -0
- package/dist/lib/launch/registry/agents/auggie.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/auggie.js +11 -0
- package/dist/lib/launch/registry/agents/auggie.js.map +1 -0
- package/dist/lib/launch/registry/agents/cline.d.ts +3 -0
- package/dist/lib/launch/registry/agents/cline.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/cline.js +19 -0
- package/dist/lib/launch/registry/agents/cline.js.map +1 -0
- package/dist/lib/launch/registry/agents/continue.d.ts +3 -0
- package/dist/lib/launch/registry/agents/continue.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/continue.js +20 -0
- package/dist/lib/launch/registry/agents/continue.js.map +1 -0
- package/dist/lib/launch/registry/agents/gemini-cli.js +2 -2
- package/dist/lib/launch/registry/agents/gemini-cli.js.map +1 -1
- package/dist/lib/launch/registry/agents/goose.d.ts +3 -0
- package/dist/lib/launch/registry/agents/goose.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/goose.js +20 -0
- package/dist/lib/launch/registry/agents/goose.js.map +1 -0
- package/dist/lib/launch/registry/index.d.ts +1 -1
- package/dist/lib/launch/registry/index.d.ts.map +1 -1
- package/dist/lib/launch/registry/index.js +7 -2
- package/dist/lib/launch/registry/index.js.map +1 -1
- package/dist/lib/launch/registry/types.d.ts +12 -1
- package/dist/lib/launch/registry/types.d.ts.map +1 -1
- package/dist/lib/launch/strict-entry.d.ts +22 -2
- package/dist/lib/launch/strict-entry.d.ts.map +1 -1
- package/dist/lib/launch/strict-entry.js +80 -2
- package/dist/lib/launch/strict-entry.js.map +1 -1
- package/dist/lib/launch/yaml-scan.d.ts +59 -0
- package/dist/lib/launch/yaml-scan.d.ts.map +1 -0
- package/dist/lib/launch/yaml-scan.js +275 -0
- package/dist/lib/launch/yaml-scan.js.map +1 -0
- package/dist/lib/lead-prompt.d.ts +106 -0
- package/dist/lib/lead-prompt.d.ts.map +1 -0
- package/dist/lib/lead-prompt.js +175 -0
- package/dist/lib/lead-prompt.js.map +1 -0
- package/dist/lib/local-candidate-classify.d.ts +26 -0
- package/dist/lib/local-candidate-classify.d.ts.map +1 -0
- package/dist/lib/local-candidate-classify.js +53 -0
- package/dist/lib/local-candidate-classify.js.map +1 -0
- package/dist/lib/local-db-epoch.d.ts +4 -0
- package/dist/lib/local-db-epoch.d.ts.map +1 -0
- package/dist/lib/local-db-epoch.js +19 -0
- package/dist/lib/local-db-epoch.js.map +1 -0
- package/dist/lib/local-db-migrate.d.ts +85 -0
- package/dist/lib/local-db-migrate.d.ts.map +1 -0
- package/dist/lib/local-db-migrate.js +528 -0
- package/dist/lib/local-db-migrate.js.map +1 -0
- package/dist/lib/local-db-v10.d.ts +28 -0
- package/dist/lib/local-db-v10.d.ts.map +1 -0
- package/dist/lib/local-db-v10.js +49 -0
- package/dist/lib/local-db-v10.js.map +1 -0
- package/dist/lib/local-db-v11.d.ts +24 -0
- package/dist/lib/local-db-v11.d.ts.map +1 -0
- package/dist/lib/local-db-v11.js +25 -0
- package/dist/lib/local-db-v11.js.map +1 -0
- package/dist/lib/local-db-v12.d.ts +17 -0
- package/dist/lib/local-db-v12.d.ts.map +1 -0
- package/dist/lib/local-db-v12.js +8 -0
- package/dist/lib/local-db-v12.js.map +1 -0
- package/dist/lib/local-db-v7.d.ts +30 -0
- package/dist/lib/local-db-v7.d.ts.map +1 -0
- package/dist/lib/local-db-v7.js +285 -0
- package/dist/lib/local-db-v7.js.map +1 -0
- package/dist/lib/local-db-v8.d.ts +22 -0
- package/dist/lib/local-db-v8.d.ts.map +1 -0
- package/dist/lib/local-db-v8.js +33 -0
- package/dist/lib/local-db-v8.js.map +1 -0
- package/dist/lib/local-db-v9.d.ts +10 -0
- package/dist/lib/local-db-v9.d.ts.map +1 -0
- package/dist/lib/local-db-v9.js +8 -0
- package/dist/lib/local-db-v9.js.map +1 -0
- package/dist/lib/local-db.d.ts +73 -23
- package/dist/lib/local-db.d.ts.map +1 -1
- package/dist/lib/local-db.js +225 -375
- package/dist/lib/local-db.js.map +1 -1
- package/dist/lib/local-embeddings.d.ts.map +1 -1
- package/dist/lib/local-embeddings.js +2 -2
- package/dist/lib/local-embeddings.js.map +1 -1
- package/dist/lib/local-gateway-client.d.ts +31 -87
- package/dist/lib/local-gateway-client.d.ts.map +1 -1
- package/dist/lib/local-gateway-client.js +209 -187
- package/dist/lib/local-gateway-client.js.map +1 -1
- package/dist/lib/local-ingest.d.ts +131 -0
- package/dist/lib/local-ingest.d.ts.map +1 -0
- package/dist/lib/local-ingest.js +81 -0
- package/dist/lib/local-ingest.js.map +1 -0
- package/dist/lib/local-link-pass.d.ts +15 -0
- package/dist/lib/local-link-pass.d.ts.map +1 -0
- package/dist/lib/local-link-pass.js +57 -0
- package/dist/lib/local-link-pass.js.map +1 -0
- package/dist/lib/local-llm.d.ts +1 -1
- package/dist/lib/local-llm.d.ts.map +1 -1
- package/dist/lib/local-llm.js +3 -2
- package/dist/lib/local-llm.js.map +1 -1
- package/dist/lib/local-mode.d.ts +9 -2
- package/dist/lib/local-mode.d.ts.map +1 -1
- package/dist/lib/local-mode.js +27 -7
- package/dist/lib/local-mode.js.map +1 -1
- package/dist/lib/local-provenance.d.ts +14 -0
- package/dist/lib/local-provenance.d.ts.map +1 -0
- package/dist/lib/local-provenance.js +14 -0
- package/dist/lib/local-provenance.js.map +1 -0
- package/dist/lib/local-relationship-classifier.d.ts +4 -0
- package/dist/lib/local-relationship-classifier.d.ts.map +1 -1
- package/dist/lib/local-relationship-classifier.js +9 -4
- package/dist/lib/local-relationship-classifier.js.map +1 -1
- package/dist/lib/local-relink.d.ts +59 -0
- package/dist/lib/local-relink.d.ts.map +1 -0
- package/dist/lib/local-relink.js +171 -0
- package/dist/lib/local-relink.js.map +1 -0
- package/dist/lib/local-set-classifier.d.ts +36 -0
- package/dist/lib/local-set-classifier.d.ts.map +1 -0
- package/dist/lib/local-set-classifier.js +81 -0
- package/dist/lib/local-set-classifier.js.map +1 -0
- package/dist/lib/local-snapshot-loader.d.ts +29 -0
- package/dist/lib/local-snapshot-loader.d.ts.map +1 -0
- package/dist/lib/local-snapshot-loader.js +108 -0
- package/dist/lib/local-snapshot-loader.js.map +1 -0
- package/dist/lib/local-thresholds.d.ts +70 -0
- package/dist/lib/local-thresholds.d.ts.map +1 -0
- package/dist/lib/local-thresholds.js +79 -0
- package/dist/lib/local-thresholds.js.map +1 -0
- package/dist/lib/login-flow.d.ts +15 -0
- package/dist/lib/login-flow.d.ts.map +1 -1
- package/dist/lib/login-flow.js +80 -4
- package/dist/lib/login-flow.js.map +1 -1
- package/dist/lib/mcp/mark-tool.d.ts +27 -0
- package/dist/lib/mcp/mark-tool.d.ts.map +1 -0
- package/dist/lib/mcp/mark-tool.js +103 -0
- package/dist/lib/mcp/mark-tool.js.map +1 -0
- package/dist/lib/mcp/share-status-tool.d.ts +13 -0
- package/dist/lib/mcp/share-status-tool.d.ts.map +1 -0
- package/dist/lib/mcp/share-status-tool.js +116 -0
- package/dist/lib/mcp/share-status-tool.js.map +1 -0
- package/dist/lib/mcp/share-tool.d.ts +50 -0
- package/dist/lib/mcp/share-tool.d.ts.map +1 -0
- package/dist/lib/mcp/share-tool.js +174 -0
- package/dist/lib/mcp/share-tool.js.map +1 -0
- package/dist/lib/mcp/tool-rules.d.ts +30 -0
- package/dist/lib/mcp/tool-rules.d.ts.map +1 -0
- package/dist/lib/mcp/tool-rules.js +84 -0
- package/dist/lib/mcp/tool-rules.js.map +1 -0
- package/dist/lib/mcp-backfill.d.ts +89 -0
- package/dist/lib/mcp-backfill.d.ts.map +1 -0
- package/dist/lib/mcp-backfill.js +194 -0
- package/dist/lib/mcp-backfill.js.map +1 -0
- package/dist/lib/mcp-scope.d.ts +90 -0
- package/dist/lib/mcp-scope.d.ts.map +1 -0
- package/dist/lib/mcp-scope.js +125 -0
- package/dist/lib/mcp-scope.js.map +1 -0
- package/dist/lib/mcp-sync.d.ts +64 -0
- package/dist/lib/mcp-sync.d.ts.map +1 -0
- package/dist/lib/mcp-sync.js +183 -0
- package/dist/lib/mcp-sync.js.map +1 -0
- package/dist/lib/model-cache.d.ts +10 -0
- package/dist/lib/model-cache.d.ts.map +1 -0
- package/dist/lib/model-cache.js +35 -0
- package/dist/lib/model-cache.js.map +1 -0
- package/dist/lib/next-step.d.ts.map +1 -1
- package/dist/lib/next-step.js +2 -1
- package/dist/lib/next-step.js.map +1 -1
- package/dist/lib/personal-import.d.ts +7 -0
- package/dist/lib/personal-import.d.ts.map +1 -1
- package/dist/lib/personal-import.js +13 -1
- package/dist/lib/personal-import.js.map +1 -1
- package/dist/lib/private-files.d.ts +33 -0
- package/dist/lib/private-files.d.ts.map +1 -0
- package/dist/lib/private-files.js +96 -0
- package/dist/lib/private-files.js.map +1 -0
- package/dist/lib/redaction-notice.d.ts +7 -0
- package/dist/lib/redaction-notice.d.ts.map +1 -0
- package/dist/lib/redaction-notice.js +32 -0
- package/dist/lib/redaction-notice.js.map +1 -0
- package/dist/lib/relink-estimate.d.ts +16 -0
- package/dist/lib/relink-estimate.d.ts.map +1 -0
- package/dist/lib/relink-estimate.js +30 -0
- package/dist/lib/relink-estimate.js.map +1 -0
- package/dist/lib/resolve-env.d.ts +15 -1
- package/dist/lib/resolve-env.d.ts.map +1 -1
- package/dist/lib/resolve-env.js +27 -7
- package/dist/lib/resolve-env.js.map +1 -1
- package/dist/lib/safe-config-write.d.ts.map +1 -1
- package/dist/lib/safe-config-write.js +39 -2
- package/dist/lib/safe-config-write.js.map +1 -1
- package/dist/lib/scope-choices.d.ts +51 -0
- package/dist/lib/scope-choices.d.ts.map +1 -0
- package/dist/lib/scope-choices.js +193 -0
- package/dist/lib/scope-choices.js.map +1 -0
- package/dist/lib/scope-connect.d.ts +82 -0
- package/dist/lib/scope-connect.d.ts.map +1 -0
- package/dist/lib/scope-connect.js +258 -0
- package/dist/lib/scope-connect.js.map +1 -0
- package/dist/lib/scope-defaults.d.ts +3 -0
- package/dist/lib/scope-defaults.d.ts.map +1 -0
- package/dist/lib/scope-defaults.js +44 -0
- package/dist/lib/scope-defaults.js.map +1 -0
- package/dist/lib/scope-real.d.ts +280 -0
- package/dist/lib/scope-real.d.ts.map +1 -0
- package/dist/lib/scope-real.js +58 -0
- package/dist/lib/scope-real.js.map +1 -0
- package/dist/lib/scope-values.d.ts +76 -0
- package/dist/lib/scope-values.d.ts.map +1 -0
- package/dist/lib/scope-values.js +169 -0
- package/dist/lib/scope-values.js.map +1 -0
- package/dist/lib/scope.d.ts +161 -0
- package/dist/lib/scope.d.ts.map +1 -0
- package/dist/lib/scope.js +323 -0
- package/dist/lib/scope.js.map +1 -0
- package/dist/lib/setup-route.d.ts +4 -2
- package/dist/lib/setup-route.d.ts.map +1 -1
- package/dist/lib/setup-route.js +12 -6
- package/dist/lib/setup-route.js.map +1 -1
- package/dist/lib/share/approval.d.ts +71 -0
- package/dist/lib/share/approval.d.ts.map +1 -0
- package/dist/lib/share/approval.js +139 -0
- package/dist/lib/share/approval.js.map +1 -0
- package/dist/lib/share/approve-link.d.ts +31 -0
- package/dist/lib/share/approve-link.d.ts.map +1 -0
- package/dist/lib/share/approve-link.js +46 -0
- package/dist/lib/share/approve-link.js.map +1 -0
- package/dist/lib/share/browser-flow.d.ts +85 -0
- package/dist/lib/share/browser-flow.d.ts.map +1 -0
- package/dist/lib/share/browser-flow.js +168 -0
- package/dist/lib/share/browser-flow.js.map +1 -0
- package/dist/lib/share/command.d.ts +65 -0
- package/dist/lib/share/command.d.ts.map +1 -0
- package/dist/lib/share/command.js +278 -0
- package/dist/lib/share/command.js.map +1 -0
- package/dist/lib/share/delivery-options.d.ts +15 -0
- package/dist/lib/share/delivery-options.d.ts.map +1 -0
- package/dist/lib/share/delivery-options.js +16 -0
- package/dist/lib/share/delivery-options.js.map +1 -0
- package/dist/lib/share/delivery.d.ts +83 -0
- package/dist/lib/share/delivery.d.ts.map +1 -0
- package/dist/lib/share/delivery.js +134 -0
- package/dist/lib/share/delivery.js.map +1 -0
- package/dist/lib/share/envelope.d.ts +61 -0
- package/dist/lib/share/envelope.d.ts.map +1 -0
- package/dist/lib/share/envelope.js +99 -0
- package/dist/lib/share/envelope.js.map +1 -0
- package/dist/lib/share/ledger.d.ts +59 -0
- package/dist/lib/share/ledger.d.ts.map +1 -0
- package/dist/lib/share/ledger.js +137 -0
- package/dist/lib/share/ledger.js.map +1 -0
- package/dist/lib/share/payload.d.ts +101 -0
- package/dist/lib/share/payload.d.ts.map +1 -0
- package/dist/lib/share/payload.js +147 -0
- package/dist/lib/share/payload.js.map +1 -0
- package/dist/lib/share/pending.d.ts +94 -0
- package/dist/lib/share/pending.d.ts.map +1 -0
- package/dist/lib/share/pending.js +256 -0
- package/dist/lib/share/pending.js.map +1 -0
- package/dist/lib/share/preview.d.ts +22 -0
- package/dist/lib/share/preview.d.ts.map +1 -0
- package/dist/lib/share/preview.js +74 -0
- package/dist/lib/share/preview.js.map +1 -0
- package/dist/lib/share/qr.d.ts +13 -0
- package/dist/lib/share/qr.d.ts.map +1 -0
- package/dist/lib/share/qr.js +77 -0
- package/dist/lib/share/qr.js.map +1 -0
- package/dist/lib/share/requests-client.d.ts +63 -0
- package/dist/lib/share/requests-client.d.ts.map +1 -0
- package/dist/lib/share/requests-client.js +69 -0
- package/dist/lib/share/requests-client.js.map +1 -0
- package/dist/lib/share/run.d.ts +134 -0
- package/dist/lib/share/run.d.ts.map +1 -0
- package/dist/lib/share/run.js +278 -0
- package/dist/lib/share/run.js.map +1 -0
- package/dist/lib/share/salt.d.ts +2 -0
- package/dist/lib/share/salt.d.ts.map +1 -0
- package/dist/lib/share/salt.js +44 -0
- package/dist/lib/share/salt.js.map +1 -0
- package/dist/lib/share/secret-patterns.json +100 -0
- package/dist/lib/share/secret-scan.d.ts +24 -0
- package/dist/lib/share/secret-scan.d.ts.map +1 -0
- package/dist/lib/share/secret-scan.js +116 -0
- package/dist/lib/share/secret-scan.js.map +1 -0
- package/dist/lib/share/target.d.ts +38 -0
- package/dist/lib/share/target.d.ts.map +1 -0
- package/dist/lib/share/target.js +80 -0
- package/dist/lib/share/target.js.map +1 -0
- package/dist/lib/share/tty.d.ts +12 -0
- package/dist/lib/share/tty.d.ts.map +1 -0
- package/dist/lib/share/tty.js +102 -0
- package/dist/lib/share/tty.js.map +1 -0
- package/dist/lib/share/visible.d.ts +4 -0
- package/dist/lib/share/visible.d.ts.map +1 -0
- package/dist/lib/share/visible.js +30 -0
- package/dist/lib/share/visible.js.map +1 -0
- package/dist/lib/share/wire.d.ts +98 -0
- package/dist/lib/share/wire.d.ts.map +1 -0
- package/dist/lib/share/wire.js +43 -0
- package/dist/lib/share/wire.js.map +1 -0
- package/dist/lib/similarity/embedding-matrix.d.ts +64 -0
- package/dist/lib/similarity/embedding-matrix.d.ts.map +1 -0
- package/dist/lib/similarity/embedding-matrix.js +119 -0
- package/dist/lib/similarity/embedding-matrix.js.map +1 -0
- package/dist/lib/since-flag.d.ts +11 -0
- package/dist/lib/since-flag.d.ts.map +1 -0
- package/dist/lib/since-flag.js +24 -0
- package/dist/lib/since-flag.js.map +1 -0
- package/dist/lib/since.d.ts +59 -0
- package/dist/lib/since.d.ts.map +1 -0
- package/dist/lib/since.js +86 -0
- package/dist/lib/since.js.map +1 -0
- package/dist/lib/source-key.d.ts +13 -0
- package/dist/lib/source-key.d.ts.map +1 -0
- package/dist/lib/source-key.js +60 -0
- package/dist/lib/source-key.js.map +1 -0
- package/dist/lib/source-sync-state.d.ts +12 -0
- package/dist/lib/source-sync-state.d.ts.map +1 -0
- package/dist/lib/source-sync-state.js +45 -0
- package/dist/lib/source-sync-state.js.map +1 -0
- package/dist/lib/startup-backfill-track.d.ts +2 -0
- package/dist/lib/startup-backfill-track.d.ts.map +1 -0
- package/dist/lib/startup-backfill-track.js +6 -0
- package/dist/lib/startup-backfill-track.js.map +1 -0
- package/dist/lib/startup-xdg.d.ts +2 -0
- package/dist/lib/startup-xdg.d.ts.map +1 -0
- package/dist/lib/startup-xdg.js +9 -0
- package/dist/lib/startup-xdg.js.map +1 -0
- package/dist/lib/sync/after-connect.d.ts +2 -0
- package/dist/lib/sync/after-connect.d.ts.map +1 -0
- package/dist/lib/sync/after-connect.js +18 -0
- package/dist/lib/sync/after-connect.js.map +1 -0
- package/dist/lib/sync/bg-claim.d.ts +14 -0
- package/dist/lib/sync/bg-claim.d.ts.map +1 -0
- package/dist/lib/sync/bg-claim.js +97 -0
- package/dist/lib/sync/bg-claim.js.map +1 -0
- package/dist/lib/sync/blocked.d.ts +8 -0
- package/dist/lib/sync/blocked.d.ts.map +1 -0
- package/dist/lib/sync/blocked.js +45 -0
- package/dist/lib/sync/blocked.js.map +1 -0
- package/dist/lib/sync/classify.d.ts +34 -0
- package/dist/lib/sync/classify.d.ts.map +1 -0
- package/dist/lib/sync/classify.js +93 -0
- package/dist/lib/sync/classify.js.map +1 -0
- package/dist/lib/sync/drain.d.ts +16 -0
- package/dist/lib/sync/drain.d.ts.map +1 -0
- package/dist/lib/sync/drain.js +33 -0
- package/dist/lib/sync/drain.js.map +1 -0
- package/dist/lib/sync/forget.d.ts +12 -0
- package/dist/lib/sync/forget.d.ts.map +1 -0
- package/dist/lib/sync/forget.js +32 -0
- package/dist/lib/sync/forget.js.map +1 -0
- package/dist/lib/sync/launch-hook.d.ts +42 -0
- package/dist/lib/sync/launch-hook.d.ts.map +1 -0
- package/dist/lib/sync/launch-hook.js +117 -0
- package/dist/lib/sync/launch-hook.js.map +1 -0
- package/dist/lib/sync/lock.d.ts +35 -0
- package/dist/lib/sync/lock.d.ts.map +1 -0
- package/dist/lib/sync/lock.js +175 -0
- package/dist/lib/sync/lock.js.map +1 -0
- package/dist/lib/sync/purge.d.ts +38 -0
- package/dist/lib/sync/purge.d.ts.map +1 -0
- package/dist/lib/sync/purge.js +61 -0
- package/dist/lib/sync/purge.js.map +1 -0
- package/dist/lib/sync/real-env.d.ts +265 -0
- package/dist/lib/sync/real-env.d.ts.map +1 -0
- package/dist/lib/sync/real-env.js +47 -0
- package/dist/lib/sync/real-env.js.map +1 -0
- package/dist/lib/sync/relink.d.ts +14 -0
- package/dist/lib/sync/relink.d.ts.map +1 -0
- package/dist/lib/sync/relink.js +36 -0
- package/dist/lib/sync/relink.js.map +1 -0
- package/dist/lib/sync/report.d.ts +3 -0
- package/dist/lib/sync/report.d.ts.map +1 -0
- package/dist/lib/sync/report.js +54 -0
- package/dist/lib/sync/report.js.map +1 -0
- package/dist/lib/sync/run-all.d.ts +23 -0
- package/dist/lib/sync/run-all.d.ts.map +1 -0
- package/dist/lib/sync/run-all.js +30 -0
- package/dist/lib/sync/run-all.js.map +1 -0
- package/dist/lib/sync/run-source.d.ts +73 -0
- package/dist/lib/sync/run-source.d.ts.map +1 -0
- package/dist/lib/sync/run-source.js +262 -0
- package/dist/lib/sync/run-source.js.map +1 -0
- package/dist/lib/sync/safe-read.d.ts +4 -0
- package/dist/lib/sync/safe-read.d.ts.map +1 -0
- package/dist/lib/sync/safe-read.js +40 -0
- package/dist/lib/sync/safe-read.js.map +1 -0
- package/dist/lib/sync/should-background-sync.d.ts +31 -0
- package/dist/lib/sync/should-background-sync.d.ts.map +1 -0
- package/dist/lib/sync/should-background-sync.js +69 -0
- package/dist/lib/sync/should-background-sync.js.map +1 -0
- package/dist/lib/sync/source-ids.d.ts +10 -0
- package/dist/lib/sync/source-ids.d.ts.map +1 -0
- package/dist/lib/sync/source-ids.js +9 -0
- package/dist/lib/sync/source-ids.js.map +1 -0
- package/dist/lib/sync/sources.d.ts +33 -0
- package/dist/lib/sync/sources.d.ts.map +1 -0
- package/dist/lib/sync/sources.js +37 -0
- package/dist/lib/sync/sources.js.map +1 -0
- package/dist/lib/sync/spawn-background.d.ts +27 -0
- package/dist/lib/sync/spawn-background.d.ts.map +1 -0
- package/dist/lib/sync/spawn-background.js +66 -0
- package/dist/lib/sync/spawn-background.js.map +1 -0
- package/dist/lib/sync/status.d.ts +57 -0
- package/dist/lib/sync/status.d.ts.map +1 -0
- package/dist/lib/sync/status.js +166 -0
- package/dist/lib/sync/status.js.map +1 -0
- package/dist/lib/sync/summary-read.d.ts +19 -0
- package/dist/lib/sync/summary-read.d.ts.map +1 -0
- package/dist/lib/sync/summary-read.js +39 -0
- package/dist/lib/sync/summary-read.js.map +1 -0
- package/dist/lib/sync/summary.d.ts +10 -0
- package/dist/lib/sync/summary.d.ts.map +1 -0
- package/dist/lib/sync/summary.js +80 -0
- package/dist/lib/sync/summary.js.map +1 -0
- package/dist/lib/sync/sync-state.d.ts +128 -0
- package/dist/lib/sync/sync-state.d.ts.map +1 -0
- package/dist/lib/sync/sync-state.js +255 -0
- package/dist/lib/sync/sync-state.js.map +1 -0
- package/dist/lib/sync/telemetry.d.ts +20 -0
- package/dist/lib/sync/telemetry.d.ts.map +1 -0
- package/dist/lib/sync/telemetry.js +31 -0
- package/dist/lib/sync/telemetry.js.map +1 -0
- package/dist/lib/sync/threads.d.ts +48 -0
- package/dist/lib/sync/threads.d.ts.map +1 -0
- package/dist/lib/sync/threads.js +82 -0
- package/dist/lib/sync/threads.js.map +1 -0
- package/dist/lib/sync/window.d.ts +72 -0
- package/dist/lib/sync/window.d.ts.map +1 -0
- package/dist/lib/sync/window.js +112 -0
- package/dist/lib/sync/window.js.map +1 -0
- package/dist/lib/team-cta.d.ts +11 -0
- package/dist/lib/team-cta.d.ts.map +1 -0
- package/dist/lib/team-cta.js +16 -0
- package/dist/lib/team-cta.js.map +1 -0
- package/dist/lib/telemetry-ci.d.ts +2 -0
- package/dist/lib/telemetry-ci.d.ts.map +1 -0
- package/dist/lib/telemetry-ci.js +21 -0
- package/dist/lib/telemetry-ci.js.map +1 -0
- package/dist/lib/telemetry-consent.d.ts +44 -23
- package/dist/lib/telemetry-consent.d.ts.map +1 -1
- package/dist/lib/telemetry-consent.js +74 -35
- package/dist/lib/telemetry-consent.js.map +1 -1
- package/dist/lib/telemetry-env.d.ts +1 -1
- package/dist/lib/usage-telemetry.d.ts +89 -24
- package/dist/lib/usage-telemetry.d.ts.map +1 -1
- package/dist/lib/usage-telemetry.js +283 -76
- package/dist/lib/usage-telemetry.js.map +1 -1
- package/dist/lib/xdg.d.ts +27 -0
- package/dist/lib/xdg.d.ts.map +1 -0
- package/dist/lib/xdg.js +56 -0
- package/dist/lib/xdg.js.map +1 -0
- package/package.json +6 -3
- package/dist/commands/push.d.ts +0 -25
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -98
- package/dist/commands/push.js.map +0 -1
- package/dist/lib/personal-email-domains.d.ts +0 -8
- package/dist/lib/personal-email-domains.d.ts.map +0 -1
- package/dist/lib/personal-email-domains.js +0 -39
- package/dist/lib/personal-email-domains.js.map +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep the local graph out of backups and sync, best effort.
|
|
3
|
+
*
|
|
4
|
+
* The graph holds decision text from every connector a person imported, and it is not encrypted
|
|
5
|
+
* (by design, see docs/local-mode.md). A Time Machine disk or a backup service is a second copy of
|
|
6
|
+
* it, in a place the person may not think of as theirs to protect. So, once, the directory that
|
|
7
|
+
* holds it is:
|
|
8
|
+
* - excluded from Time Machine on macOS (`tmutil addexclusion`, a sticky exclusion that follows
|
|
9
|
+
* the folder, run only when /usr/bin/tmutil exists), and
|
|
10
|
+
* - tagged with CACHEDIR.TAG (https://bford.info/cachedir/), which borg, restic, tar and other
|
|
11
|
+
* backup tools skip when asked to exclude caches.
|
|
12
|
+
*
|
|
13
|
+
* There is no marker-FILE convention for iCloud or Dropbox: iCloud skips items whose NAME ends in
|
|
14
|
+
* `.nosync`, which would mean renaming the user's config directory. Neither syncs the config
|
|
15
|
+
* directory by default, so nothing is written for them. Undo: `tmutil removeexclusion <dir>` and
|
|
16
|
+
* delete the tag (docs/local-mode.md); a separate `.backup-exclusion-done` marker
|
|
17
|
+
* keeps that undo from being reversed.
|
|
18
|
+
*
|
|
19
|
+
* Never fatal: every step is wrapped, and nothing here can stop a command from running.
|
|
20
|
+
*/
|
|
21
|
+
import { spawnSync } from 'node:child_process';
|
|
22
|
+
import fs from 'node:fs';
|
|
23
|
+
import path from 'node:path';
|
|
24
|
+
export const CACHEDIR_TAG_SIGNATURE = 'Signature: 8a477f597d28d172789f06886806bc55';
|
|
25
|
+
const TMUTIL = '/usr/bin/tmutil';
|
|
26
|
+
const defaultDeps = {
|
|
27
|
+
platform: process.platform,
|
|
28
|
+
hasTmutil: () => fs.existsSync(TMUTIL),
|
|
29
|
+
run: (cmd, args) => { spawnSync(cmd, args, { stdio: 'ignore', timeout: 5000 }); },
|
|
30
|
+
};
|
|
31
|
+
/** Exclude the directory holding `dbPath` from backups, once. A no-op until the graph exists. */
|
|
32
|
+
export function excludeGraphFromBackups(dbPath, deps = defaultDeps) {
|
|
33
|
+
try {
|
|
34
|
+
if (!fs.existsSync(dbPath))
|
|
35
|
+
return;
|
|
36
|
+
const dir = path.dirname(dbPath);
|
|
37
|
+
const tag = path.join(dir, 'CACHEDIR.TAG');
|
|
38
|
+
// Its own "already done" marker, not the tag: a person who deletes the tag to back the graph up again
|
|
39
|
+
// (the documented undo) must not have it, or the Time Machine exclusion, put back by the next command.
|
|
40
|
+
const done = path.join(dir, '.backup-exclusion-done');
|
|
41
|
+
if (fs.existsSync(done) || fs.existsSync(tag))
|
|
42
|
+
return;
|
|
43
|
+
try {
|
|
44
|
+
fs.writeFileSync(done, '', { mode: 0o600 });
|
|
45
|
+
}
|
|
46
|
+
catch { /* best effort */ }
|
|
47
|
+
if (deps.platform === 'darwin' && deps.hasTmutil()) {
|
|
48
|
+
try {
|
|
49
|
+
deps.run(TMUTIL, ['addexclusion', dir]);
|
|
50
|
+
}
|
|
51
|
+
catch { /* best effort */ }
|
|
52
|
+
}
|
|
53
|
+
const body = `${CACHEDIR_TAG_SIGNATURE}\n# This file marks the Align CLI local decision graph so backup tools can skip it.\n# See https://bford.info/cachedir/ and docs/local-mode.md in align-cli.\n`;
|
|
54
|
+
(deps.writeFile ?? ((p, d) => fs.writeFileSync(p, d, { mode: 0o600 })))(tag, body);
|
|
55
|
+
}
|
|
56
|
+
catch { /* best effort: never stop a command */ }
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=backup-exclusion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-exclusion.js","sourceRoot":"","sources":["../../src/lib/backup-exclusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,sBAAsB,GAAG,6CAA6C,CAAC;AACpF,MAAM,MAAM,GAAG,iBAAiB,CAAC;AASjC,MAAM,WAAW,GAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CAClF,CAAC;AAEF,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,OAAmB,WAAW;IACpF,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC3C,sGAAsG;QACtG,uGAAuG;QACvG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QACtD,IAAI,CAAC;YAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,sBAAsB,gKAAgK,CAAC;QACvM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ALI-827: what an import fetched, and what it could not reach.
|
|
3
|
-
*
|
|
4
|
-
* A thin connector looks like a thin tool. `align setup --local` produced 39 Slack
|
|
5
|
-
* decisions on 2026-09-02 and nothing said why; the number this prints is the number the
|
|
6
|
-
* user was about to ask about, and printing it costs nothing - no model call, no extra
|
|
7
|
-
* request, only the counts the fetch already had in its hands.
|
|
8
|
-
*
|
|
9
|
-
* Pure: a sort and a string builder over plain numbers and strings, no I/O and no chalk,
|
|
10
|
-
* so it is unit-testable without a graph or a terminal (the found-summary.ts shape).
|
|
11
|
-
*
|
|
12
|
-
* It never states a REASON it did not measure. "30 of up to 50 requested" is derived and
|
|
13
|
-
* true; "Zoom caps a page at 30" is a fact owned by the fetcher, and duplicating it here
|
|
14
|
-
* would be a second writer of it (code-style.md). A skip line arrives from whoever
|
|
15
|
-
* measured it and is printed verbatim.
|
|
16
|
-
*/
|
|
17
1
|
import type { CaptureFetchResult, CaptureSkip } from './fetchers/capture.js';
|
|
18
2
|
export interface CaptureSource {
|
|
19
3
|
label: string;
|
|
@@ -28,6 +12,23 @@ export interface CaptureSource {
|
|
|
28
12
|
/** What the caller asked for, when it asked for anything. */
|
|
29
13
|
requested?: number;
|
|
30
14
|
skips: CaptureSkip[];
|
|
15
|
+
/** L3: the window this read covered, as the report prints it ("the last 6 months", from
|
|
16
|
+
* windowLabel). Present only for a windowed read; its presence is what switches the line
|
|
17
|
+
* to the "imported N ... from W" form, so a source without one prints exactly as before. */
|
|
18
|
+
window?: string;
|
|
19
|
+
/** L3: the SDK's `complete`. Anything but `false` reads as a complete windowed read. */
|
|
20
|
+
complete?: boolean;
|
|
21
|
+
/** L3: the oldest `updated_at` the read reached, named on an incomplete line. */
|
|
22
|
+
oldestReached?: string;
|
|
23
|
+
/** L3: what the gateway STORED, and how many batches failed. Absent means unknown, and the
|
|
24
|
+
* line then falls back to `fetched`. "Imported" is never claimed for more than was stored. */
|
|
25
|
+
stored?: number;
|
|
26
|
+
failedBatches?: number;
|
|
27
|
+
/** L3: whose items a team-scope read covered, printed as one line under the source. */
|
|
28
|
+
scopeNote?: string;
|
|
29
|
+
/** L3: GitHub items still without their discussion, of `discussionTotal` that could have had it. */
|
|
30
|
+
discussionPending?: number;
|
|
31
|
+
discussionTotal?: number;
|
|
31
32
|
}
|
|
32
33
|
export declare function renderCaptureReport(sources: CaptureSource[]): string;
|
|
33
34
|
/** The report line's inputs, from one wrapper result. `fetched` is what came BACK, not
|
|
@@ -35,7 +36,10 @@ export declare function renderCaptureReport(sources: CaptureSource[]): string;
|
|
|
35
36
|
export declare function toCaptureSource(source: {
|
|
36
37
|
label: string;
|
|
37
38
|
unit: string;
|
|
38
|
-
}, result: CaptureFetchResult
|
|
39
|
+
}, result: CaptureFetchResult, window?: string, imported?: {
|
|
40
|
+
stored?: number;
|
|
41
|
+
failedBatches?: number;
|
|
42
|
+
}): CaptureSource;
|
|
39
43
|
/**
|
|
40
44
|
* Accumulates sources across the concurrent imports one `align setup` runs, so the report
|
|
41
45
|
* prints once at the end instead of interleaved between spinners. Explicitly passed,
|
|
@@ -43,7 +47,7 @@ export declare function toCaptureSource(source: {
|
|
|
43
47
|
* two commands in one process.
|
|
44
48
|
*/
|
|
45
49
|
export declare function createCaptureCollector(): {
|
|
46
|
-
add(source: CaptureSource):
|
|
50
|
+
add(source: CaptureSource): CaptureSource;
|
|
47
51
|
render(): string;
|
|
48
52
|
};
|
|
49
53
|
//# sourceMappingURL=capture-report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-report.d.ts","sourceRoot":"","sources":["../../src/lib/capture-report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capture-report.d.ts","sourceRoot":"","sources":["../../src/lib/capture-report.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd;mCAC+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;wFAEoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;iGAE6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;mGAC+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oGAAoG;IACpG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAmCD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAwCpE;AAED;qFACqF;AACrF,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACvC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,aAAa,CAiBf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI;IAAE,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAAC;IAAC,MAAM,IAAI,MAAM,CAAA;CAAE,CAYxG"}
|
|
@@ -1,3 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ALI-827: what an import fetched, and what it could not reach.
|
|
3
|
+
*
|
|
4
|
+
* A thin connector looks like a thin tool. `align setup --local` produced 39 Slack
|
|
5
|
+
* decisions on 2026-09-02 and nothing said why; the number this prints is the number the
|
|
6
|
+
* user was about to ask about, and printing it costs nothing - no model call, no extra
|
|
7
|
+
* request, only the counts the fetch already had in its hands.
|
|
8
|
+
*
|
|
9
|
+
* Pure: a sort and a string builder over plain numbers and strings, no I/O and no chalk,
|
|
10
|
+
* so it is unit-testable without a graph or a terminal (the found-summary.ts shape).
|
|
11
|
+
*
|
|
12
|
+
* It never states a REASON it did not measure. "30 of up to 50 requested" is derived and
|
|
13
|
+
* true; "Zoom caps a page at 30" is a fact owned by the fetcher, and duplicating it here
|
|
14
|
+
* would be a second writer of it (code-style.md). A skip line arrives from whoever
|
|
15
|
+
* measured it and is printed verbatim.
|
|
16
|
+
*/
|
|
17
|
+
import { INCOMPLETE_SKIP_KINDS } from '@aligndottech/connector-core';
|
|
18
|
+
/**
|
|
19
|
+
* L3: the line for a windowed read. Complete: what was imported and over which window.
|
|
20
|
+
* Incomplete: the date actually reached and the skip that stopped it (Decision 5), so a thin
|
|
21
|
+
* result is never mistaken for a quiet six months. The reason is the fetcher's own words
|
|
22
|
+
* (verbatim, never a raw URL: the SDK redacts them and this adds nothing back).
|
|
23
|
+
*/
|
|
24
|
+
function storedNote(s) {
|
|
25
|
+
const stored = s.stored ?? s.fetched;
|
|
26
|
+
const n = s.failedBatches ?? 0;
|
|
27
|
+
return {
|
|
28
|
+
count: stored < s.fetched || n > 0 ? `${stored} of ${s.fetched}` : String(s.fetched),
|
|
29
|
+
failed: n > 0 ? ` (${n === 1 ? 'a batch' : `${n} batches`} failed)` : '',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function windowedLine(s, window) {
|
|
33
|
+
const { count, failed } = storedNote(s);
|
|
34
|
+
const head = `${s.label}: imported ${count} ${s.unit}${failed}`;
|
|
35
|
+
// Said as a count, and promising nothing: the items the request budget did not reach stay thin
|
|
36
|
+
// until `align sync` finishes them. Until the background refresh exists (L6) the person runs it.
|
|
37
|
+
const tail = s.discussionPending !== undefined && s.discussionPending > 0 && s.discussionTotal !== undefined
|
|
38
|
+
? `; discussion fetched for ${s.discussionTotal - s.discussionPending} of ${s.discussionTotal}, the rest stay thin until align sync reads them (run it now)`
|
|
39
|
+
: '';
|
|
40
|
+
if (s.complete !== false)
|
|
41
|
+
return `${head} from ${window}${tail}`;
|
|
42
|
+
const cut = s.skips.find((k) => k.kind !== undefined && INCOMPLETE_SKIP_KINDS.has(k.kind));
|
|
43
|
+
const refused = s.fetched === 0 ? s.skips.find((k) => k.kind === 'shape') : undefined;
|
|
44
|
+
const atCeiling = s.requested !== undefined && Math.max(s.fetched, s.scanned ?? 0) >= s.requested;
|
|
45
|
+
const reason = (cut ?? refused)?.detail
|
|
46
|
+
?? (atCeiling ? `stopped at the ceiling of ${s.requested}` : 'the read did not reach the end of the window');
|
|
47
|
+
const reached = s.oldestReached !== undefined ? `back to ${s.oldestReached.slice(0, 10)}` : 'read stopped early';
|
|
48
|
+
return `${head}, ${reached} (not ${window}): ${reason}${tail}`;
|
|
49
|
+
}
|
|
1
50
|
export function renderCaptureReport(sources) {
|
|
2
51
|
// Never a bare header over nothing.
|
|
3
52
|
if (sources.length === 0)
|
|
@@ -29,7 +78,10 @@ export function renderCaptureReport(sources) {
|
|
|
29
78
|
? ' (0 scanned)'
|
|
30
79
|
: ` (0 kept of ${s.scanned} scanned)`;
|
|
31
80
|
}
|
|
32
|
-
|
|
81
|
+
const stored = storedNote(s);
|
|
82
|
+
lines.push(` ${s.window !== undefined ? windowedLine(s, s.window) : `${s.label}: ${stored.count} ${s.unit}${stored.failed}${shortfall}${scannedNote}`}`);
|
|
83
|
+
if (s.scopeNote !== undefined)
|
|
84
|
+
lines.push(` reads ${s.scopeNote}`);
|
|
33
85
|
for (const skip of s.skips)
|
|
34
86
|
lines.push(` ${skip.count} ${skip.detail}`);
|
|
35
87
|
}
|
|
@@ -37,7 +89,7 @@ export function renderCaptureReport(sources) {
|
|
|
37
89
|
}
|
|
38
90
|
/** The report line's inputs, from one wrapper result. `fetched` is what came BACK, not
|
|
39
91
|
* what was scanned: the user is counting decisions in their graph, not API rows. */
|
|
40
|
-
export function toCaptureSource(source, result) {
|
|
92
|
+
export function toCaptureSource(source, result, window, imported) {
|
|
41
93
|
return {
|
|
42
94
|
label: source.label,
|
|
43
95
|
unit: source.unit,
|
|
@@ -45,6 +97,14 @@ export function toCaptureSource(source, result) {
|
|
|
45
97
|
scanned: result.report.scanned,
|
|
46
98
|
...(result.report.requested !== undefined ? { requested: result.report.requested } : {}),
|
|
47
99
|
skips: result.report.skips,
|
|
100
|
+
...(window !== undefined ? { window } : {}),
|
|
101
|
+
...(imported?.stored !== undefined ? { stored: imported.stored } : {}),
|
|
102
|
+
...(imported?.failedBatches !== undefined ? { failedBatches: imported.failedBatches } : {}),
|
|
103
|
+
...(result.report.complete !== undefined ? { complete: result.report.complete } : {}),
|
|
104
|
+
...(result.report.oldestReached !== undefined ? { oldestReached: result.report.oldestReached } : {}),
|
|
105
|
+
...(result.report.discussionPending !== undefined ? { discussionPending: result.report.discussionPending } : {}),
|
|
106
|
+
...(result.report.scopeNote !== undefined ? { scopeNote: result.report.scopeNote } : {}),
|
|
107
|
+
...(result.report.discussionTotal !== undefined ? { discussionTotal: result.report.discussionTotal } : {}),
|
|
48
108
|
};
|
|
49
109
|
}
|
|
50
110
|
/**
|
|
@@ -56,8 +116,10 @@ export function toCaptureSource(source, result) {
|
|
|
56
116
|
export function createCaptureCollector() {
|
|
57
117
|
const sources = [];
|
|
58
118
|
return {
|
|
119
|
+
/** Returns the same object, so the import that follows can fill in what it stored (L3). */
|
|
59
120
|
add(source) {
|
|
60
121
|
sources.push(source);
|
|
122
|
+
return source;
|
|
61
123
|
},
|
|
62
124
|
render() {
|
|
63
125
|
return renderCaptureReport(sources);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-report.js","sourceRoot":"","sources":["../../src/lib/capture-report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capture-report.js","sourceRoot":"","sources":["../../src/lib/capture-report.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/cli-oauth.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export declare function waitForCallback(opts: {
|
|
|
6
6
|
ports: number[];
|
|
7
7
|
timeoutMs: number;
|
|
8
8
|
onBound?: (port: number, nonce: string) => void | Promise<void>;
|
|
9
|
+
/** Stops the wait: the listeners close and the promise rejects. */
|
|
10
|
+
signal?: AbortSignal;
|
|
9
11
|
}): Promise<CallbackResult>;
|
|
10
12
|
export declare const CLI_CALLBACK_PORTS: number[];
|
|
11
13
|
//# sourceMappingURL=cli-oauth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-oauth.d.ts","sourceRoot":"","sources":["../../src/lib/cli-oauth.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"cli-oauth.d.ts","sourceRoot":"","sources":["../../src/lib/cli-oauth.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,mEAAmE;IACnE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0G1B;AAED,eAAO,MAAM,kBAAkB,UAAiC,CAAC"}
|
package/dist/lib/cli-oauth.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import { randomBytes } from 'node:crypto';
|
|
3
|
+
/** The page posts a token and a nonce: well under this. Anything larger is not it. */
|
|
4
|
+
const MAX_BODY_BYTES = 8 * 1024;
|
|
3
5
|
export function waitForCallback(opts) {
|
|
4
6
|
return new Promise((resolve, reject) => {
|
|
5
|
-
let
|
|
7
|
+
let servers = [];
|
|
8
|
+
const closeAll = () => { for (const x of servers)
|
|
9
|
+
x.close(); };
|
|
6
10
|
const nonce = randomBytes(16).toString('hex');
|
|
11
|
+
opts.signal?.addEventListener('abort', () => {
|
|
12
|
+
clearTimeout(timer);
|
|
13
|
+
closeAll();
|
|
14
|
+
reject(new Error('cancelled'));
|
|
15
|
+
}, { once: true });
|
|
7
16
|
const timer = setTimeout(() => {
|
|
8
|
-
|
|
17
|
+
closeAll();
|
|
9
18
|
reject(new Error('CLI OAuth timed out waiting for browser callback'));
|
|
10
19
|
}, opts.timeoutMs);
|
|
11
20
|
function tryPort(remaining) {
|
|
@@ -15,7 +24,7 @@ export function waitForCallback(opts) {
|
|
|
15
24
|
return;
|
|
16
25
|
}
|
|
17
26
|
const [port, ...rest] = remaining;
|
|
18
|
-
const
|
|
27
|
+
const onRequest = (req, res) => {
|
|
19
28
|
const origin = req.headers['origin'];
|
|
20
29
|
if (origin)
|
|
21
30
|
res.setHeader('Access-Control-Allow-Origin', origin);
|
|
@@ -31,16 +40,34 @@ export function waitForCallback(opts) {
|
|
|
31
40
|
res.writeHead(405).end();
|
|
32
41
|
return;
|
|
33
42
|
}
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
// Any web page can POST here (a no-cors request needs no permission), so what arrives is read under a bound and a
|
|
44
|
+
// stray request is answered and ignored. Only the right nonce ends the wait.
|
|
45
|
+
const chunks = [];
|
|
46
|
+
let size = 0;
|
|
47
|
+
let tooBig = false;
|
|
48
|
+
req.on('data', (chunk) => {
|
|
49
|
+
if (tooBig)
|
|
50
|
+
return;
|
|
51
|
+
size += chunk.length;
|
|
52
|
+
if (size > MAX_BODY_BYTES) {
|
|
53
|
+
tooBig = true;
|
|
54
|
+
res.writeHead(413, { Connection: 'close' }).end(() => req.destroy());
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
chunks.push(chunk);
|
|
58
|
+
});
|
|
36
59
|
req.on('end', () => {
|
|
60
|
+
if (tooBig)
|
|
61
|
+
return;
|
|
37
62
|
let parsed;
|
|
38
63
|
try {
|
|
39
|
-
|
|
64
|
+
const v = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
65
|
+
if (typeof v !== 'object' || v === null || Array.isArray(v))
|
|
66
|
+
throw new Error('not an object');
|
|
67
|
+
parsed = v;
|
|
40
68
|
}
|
|
41
69
|
catch {
|
|
42
70
|
res.writeHead(400).end();
|
|
43
|
-
reject(new Error('Invalid JSON received in CLI OAuth callback'));
|
|
44
71
|
return;
|
|
45
72
|
}
|
|
46
73
|
if (parsed['cli_nonce'] !== nonce) {
|
|
@@ -50,10 +77,11 @@ export function waitForCallback(opts) {
|
|
|
50
77
|
const { cli_nonce: _, ...payload } = parsed;
|
|
51
78
|
res.writeHead(200, { 'Content-Type': 'application/json' }).end('{"ok":true}');
|
|
52
79
|
clearTimeout(timer);
|
|
53
|
-
|
|
80
|
+
closeAll();
|
|
54
81
|
resolve({ data: payload, port });
|
|
55
82
|
});
|
|
56
|
-
}
|
|
83
|
+
};
|
|
84
|
+
const s = http.createServer(onRequest);
|
|
57
85
|
s.on('error', (err) => {
|
|
58
86
|
if (err.code === 'EADDRINUSE') {
|
|
59
87
|
tryPort(rest);
|
|
@@ -62,7 +90,30 @@ export function waitForCallback(opts) {
|
|
|
62
90
|
clearTimeout(timer);
|
|
63
91
|
reject(err);
|
|
64
92
|
});
|
|
65
|
-
|
|
93
|
+
// 127.0.0.1, not every interface: this socket accepts a credential, and on 0.0.0.0 anyone on the LAN can dial it (ALI-1504).
|
|
94
|
+
s.listen(port, '127.0.0.1', () => {
|
|
95
|
+
// The web page posts to http://localhost, which a browser may resolve to ::1. Answer there too, or the token goes to
|
|
96
|
+
// whatever else holds ::1 on this port. A port whose ::1 side is taken is skipped whole: never half of a pair.
|
|
97
|
+
const s6 = http.createServer(onRequest);
|
|
98
|
+
s6.once('error', (err) => {
|
|
99
|
+
if (err.code === 'EADDRINUSE') {
|
|
100
|
+
s.close();
|
|
101
|
+
tryPort(rest);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// No IPv6 loopback on this machine (a container, a disabled stack): IPv4 alone is all there is to answer on.
|
|
105
|
+
servers = [s];
|
|
106
|
+
if (opts.signal?.aborted) {
|
|
107
|
+
closeAll();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
void opts.onBound?.(port, nonce);
|
|
111
|
+
});
|
|
112
|
+
s6.listen(port, '::1', () => { servers = [s, s6]; if (opts.signal?.aborted) {
|
|
113
|
+
closeAll();
|
|
114
|
+
return;
|
|
115
|
+
} void opts.onBound?.(port, nonce); });
|
|
116
|
+
});
|
|
66
117
|
}
|
|
67
118
|
tryPort(opts.ports);
|
|
68
119
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-oauth.js","sourceRoot":"","sources":["../../src/lib/cli-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO1C,MAAM,UAAU,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"cli-oauth.js","sourceRoot":"","sources":["../../src/lib/cli-oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { type WrittenConfig } from './safe-config-write.js';
|
|
2
2
|
import { type StoredProviderId } from './llm-providers.js';
|
|
3
|
-
|
|
3
|
+
import type { StoredScope } from './scope-values.js';
|
|
4
|
+
import { type TeamDestinationName } from './destination-name.js';
|
|
5
|
+
export type BuiltinEnv = 'local' | 'preview' | 'prod';
|
|
6
|
+
/** A builtin, or the name of a team destination saved by `align join`. */
|
|
7
|
+
export type EnvName = BuiltinEnv | TeamDestinationName;
|
|
4
8
|
export interface EnvironmentConfig {
|
|
5
9
|
gatewayUrl: string;
|
|
6
10
|
authToken: string | null;
|
|
@@ -8,7 +12,16 @@ export interface EnvironmentConfig {
|
|
|
8
12
|
ngrokUrl?: string;
|
|
9
13
|
mode: 'demo' | 'auth' | 'local-embedded';
|
|
10
14
|
localDbPath?: string;
|
|
15
|
+
/** 'team' for a destination saved by `align join`; absent for the three builtins. */
|
|
16
|
+
kind?: 'builtin' | 'team';
|
|
17
|
+
/** Team destinations: the web app the gateway named at join time (never guessed from the gateway URL). */
|
|
18
|
+
appUrl?: string;
|
|
19
|
+
/** Team destinations: the org name the SERVER claimed. Display only, never an identity. */
|
|
20
|
+
orgNameClaimed?: string;
|
|
21
|
+
joinedAt?: string;
|
|
11
22
|
}
|
|
23
|
+
/** The gateway URL an environment uses when nothing overrides it (ALIGN_GATEWAY_URL, a saved value). */
|
|
24
|
+
export declare function defaultGatewayUrlFor(env: string): string;
|
|
12
25
|
/**
|
|
13
26
|
* ALI-618: local-embedded mode never makes an HTTP call for its own operations (it reads a
|
|
14
27
|
* local embedded DB - see gateway-client.ts's `createLocalGatewayClient` branch), so the
|
|
@@ -74,11 +87,34 @@ export declare function savedLlmConfig(config: {
|
|
|
74
87
|
provider?: string;
|
|
75
88
|
model?: string;
|
|
76
89
|
};
|
|
90
|
+
export type LeadPromptOutcome = 'declined' | 'submitted' | 'skipped';
|
|
91
|
+
export interface LeadState {
|
|
92
|
+
shownAt?: string;
|
|
93
|
+
version?: string;
|
|
94
|
+
outcome?: LeadPromptOutcome;
|
|
95
|
+
submittedAt?: string;
|
|
96
|
+
}
|
|
77
97
|
export declare function createConfigStore(): {
|
|
78
98
|
getEnvironment(env: EnvName): EnvironmentConfig;
|
|
99
|
+
/** One write: a crash cannot leave a token saved without the gateway it belongs to. */
|
|
100
|
+
saveTeamDestination(name: string, d: {
|
|
101
|
+
gatewayUrl: string;
|
|
102
|
+
appUrl: string;
|
|
103
|
+
authToken: string;
|
|
104
|
+
tenantId: string | null;
|
|
105
|
+
orgNameClaimed?: string;
|
|
106
|
+
}, now?: Date): void;
|
|
107
|
+
/** Logout for a team destination: the entry stays so `align login --env <name>` can renew it. */
|
|
108
|
+
clearTeamToken(name: string): void;
|
|
109
|
+
getShareDestination(): string | null;
|
|
110
|
+
setShareDestination(name: string): void;
|
|
111
|
+
clearShareDestination(): void;
|
|
79
112
|
setAuthToken(env: EnvName, token: string): void;
|
|
80
113
|
setTenantId(env: EnvName, tenantId: string): void;
|
|
81
114
|
setNgrokUrl(url: string): void;
|
|
115
|
+
/** True only for a destination `align join` saved. A builtin name is never one. */
|
|
116
|
+
hasTeamDestination(name: string): boolean;
|
|
117
|
+
listTeamDestinationNames(): string[];
|
|
82
118
|
setDefaultEnv(env: EnvName): void;
|
|
83
119
|
getDefaultEnv(): EnvName;
|
|
84
120
|
getConnectorToken(env: EnvName, connectorKey: string): string | null;
|
|
@@ -99,6 +135,19 @@ export declare function createConfigStore(): {
|
|
|
99
135
|
setConnectorCloudId(env: EnvName, connectorKey: string, cloudId: string): void;
|
|
100
136
|
getConnectorSiteBase(env: EnvName, connectorKey: string): string | null;
|
|
101
137
|
setConnectorSiteBase(env: EnvName, connectorKey: string, siteBase: string): void;
|
|
138
|
+
/**
|
|
139
|
+
* L4: what the person chose to read for a source, kept beside its token under `<env>:<source>:scope` so forgetting the
|
|
140
|
+
* connector removes it too. Non-secret, and not a `:field:` key, so no fetch is ever handed it as a credential.
|
|
141
|
+
* An entry that is PRESENT but unreadable (truncated, or written by a newer CLI) reads as yours, never as "no choice": for GitHub
|
|
142
|
+
* and GitLab "no choice" means "widen from the folder", and a damaged record must not do that. Only an absent entry is null.
|
|
143
|
+
*/
|
|
144
|
+
getConnectorScope(env: EnvName, connectorKey: string): StoredScope | null;
|
|
145
|
+
setConnectorScope(env: EnvName, connectorKey: string, scope: StoredScope): void;
|
|
146
|
+
clearConnectorScope(env: EnvName, connectorKey: string): void;
|
|
147
|
+
clearTeamScopeDisclosed(source: string): void;
|
|
148
|
+
getTeamScopeDisclosedFor(): string[];
|
|
149
|
+
isTeamScopeDisclosed(source: string, scopeKey: string): boolean;
|
|
150
|
+
markTeamScopeDisclosed(source: string, scopeKey: string): void;
|
|
102
151
|
setLocalMode(dbPath: string): void;
|
|
103
152
|
clearLocalMode(): void;
|
|
104
153
|
clear(env: EnvName): void;
|
|
@@ -107,7 +156,16 @@ export declare function createConfigStore(): {
|
|
|
107
156
|
setAgent(agent: string): void;
|
|
108
157
|
isLaunchOff(): boolean;
|
|
109
158
|
setLaunchOff(off: boolean): void;
|
|
159
|
+
/** The saved detector choice, or undefined when none is saved (the default then applies). */
|
|
160
|
+
getDetector(): string | undefined;
|
|
161
|
+
setDetector(detector: string): void;
|
|
110
162
|
clearAgent(): void;
|
|
163
|
+
isBackgroundSyncOff(): boolean;
|
|
164
|
+
setBackgroundSyncOff(off: boolean): void;
|
|
165
|
+
backgroundSyncNoticeShown(): boolean;
|
|
166
|
+
markBackgroundSyncNoticeShown(at: string): void;
|
|
167
|
+
getReauthLineShownAt(): string | undefined;
|
|
168
|
+
markReauthLineShown(at: string): void;
|
|
111
169
|
getWrittenConfigs(): Record<string, WrittenConfig>;
|
|
112
170
|
recordWrittenConfig(file: string, entry: WrittenConfig): void;
|
|
113
171
|
/** Forget only the files whose undo finished; a skipped file keeps its record. */
|
|
@@ -118,6 +176,17 @@ export declare function createConfigStore(): {
|
|
|
118
176
|
markWriteRefused(file: string): void;
|
|
119
177
|
getTelemetryConsent(): TelemetryConsent | undefined;
|
|
120
178
|
setTelemetryConsent(value: TelemetryConsent): void;
|
|
179
|
+
setTelemetryOffByEnv(via: string, now?: Date): void;
|
|
180
|
+
getTelemetryOffByEnv(): {
|
|
181
|
+
via: string;
|
|
182
|
+
at: string;
|
|
183
|
+
} | undefined;
|
|
184
|
+
getTelemetryNoticeShownAt(): string | undefined;
|
|
185
|
+
markTelemetryNoticeShown(): void;
|
|
186
|
+
getLeadState(): LeadState;
|
|
187
|
+
markLeadPromptShown(version: string, now?: Date): void;
|
|
188
|
+
setLeadOutcome(outcome: LeadPromptOutcome, now?: Date): void;
|
|
189
|
+
clearLeadPromptShown(): void;
|
|
121
190
|
getProviderKey(provider: GuidedProviderKey): string | null;
|
|
122
191
|
setProviderKey(provider: GuidedProviderKey, key: string): void;
|
|
123
192
|
clearProviderKey(provider: GuidedProviderKey): void;
|
|
@@ -127,6 +196,8 @@ export declare function createConfigStore(): {
|
|
|
127
196
|
isAskKeyOfferDismissed(): boolean;
|
|
128
197
|
setAskKeyOfferDismissed(dismissed: boolean): void;
|
|
129
198
|
wasFunnelStageRecorded(stage: string): boolean;
|
|
199
|
+
claimFunnelStage(stage: string): boolean;
|
|
200
|
+
releaseFunnelStage(stage: string): boolean;
|
|
130
201
|
markFunnelStageRecorded(stage: string): void;
|
|
131
202
|
};
|
|
132
203
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|