@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,282 @@
|
|
|
1
|
+
import { createGatewayClient } from './gateway-client.js';
|
|
2
|
+
import { validateDestinationName } from './destination-name.js';
|
|
3
|
+
import { assertTransport, describeHost, needsTypeBack, parseJoinLink, slugOrgName, TransportError } from './destination-trust.js';
|
|
4
|
+
import { visible } from './share/visible.js';
|
|
5
|
+
const PEEK_MAX_BYTES = 16 * 1024;
|
|
6
|
+
const ORG_NOTE = 'chosen by that organisation, not verified by Align';
|
|
7
|
+
const PEEK_TIMEOUT_MS = 10_000;
|
|
8
|
+
const ORG_NAME_MAX = 100;
|
|
9
|
+
const TOKEN_SHAPE = /^[\x21-\x7e]{8,512}$/;
|
|
10
|
+
export async function runJoin(deps, input) {
|
|
11
|
+
const refuse = (reason) => {
|
|
12
|
+
deps.out(`\nNothing was saved and no browser was opened.\n ${reason}\n`);
|
|
13
|
+
return { ok: false, reason };
|
|
14
|
+
};
|
|
15
|
+
// After the browser step: a browser WAS opened, and if the server already issued a token it is still live there. Say both.
|
|
16
|
+
const refuseLate = (reason, issued) => {
|
|
17
|
+
const live = issued
|
|
18
|
+
? `\n ${issued.host} issued a token to this computer and it was not saved. It stays valid until ${issued.expiresAt ? issued.expiresAt.slice(0, 10) : 'it expires'} (or until the organisation's admin revokes the invite); nothing here can revoke it.`
|
|
19
|
+
: '';
|
|
20
|
+
deps.out(`\nNothing was saved. A browser was opened.\n ${reason}${live}\n`);
|
|
21
|
+
return { ok: false, reason };
|
|
22
|
+
};
|
|
23
|
+
// First, before any request: a join gives a server a credential and a place to send shares, so it is a person's act, at a
|
|
24
|
+
// terminal of their own. An agent (or a script) that has been handed a link must not be able to finish it, whichever host
|
|
25
|
+
// the link names, and the refusal says nothing about a way around it.
|
|
26
|
+
if (deps.wrapped)
|
|
27
|
+
return refuse('align join has to be run by you, in your own terminal, not from inside an agent.');
|
|
28
|
+
if (!deps.isTTY)
|
|
29
|
+
return refuse('align join needs a terminal: both input and output must be a terminal, so a person answers the questions.');
|
|
30
|
+
let link;
|
|
31
|
+
try {
|
|
32
|
+
link = parseJoinLink(input.link, input.gateway === undefined ? {} : { gateway: input.gateway });
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
return refuse(e instanceof TransportError ? e.message : 'That link could not be read.');
|
|
36
|
+
}
|
|
37
|
+
const gwHost = new URL(link.gatewayUrl).host;
|
|
38
|
+
if (input.name !== undefined) {
|
|
39
|
+
const bad = validateDestinationName(input.name);
|
|
40
|
+
if (bad)
|
|
41
|
+
return refuse(`The name "${visible(input.name.slice(0, 40))}" cannot be used: ${bad}.`);
|
|
42
|
+
}
|
|
43
|
+
const peeked = await peek(link.gatewayUrl, link.token);
|
|
44
|
+
if (typeof peeked === 'string')
|
|
45
|
+
return refuse(peeked);
|
|
46
|
+
// The gateway's own account of itself has to match the link, or the link is lying about one of them.
|
|
47
|
+
let peekApp;
|
|
48
|
+
try {
|
|
49
|
+
peekApp = assertTransport(peeked.appUrl);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
return refuse(`The server's web app address is not acceptable: ${e.message}`);
|
|
53
|
+
}
|
|
54
|
+
const peekAppHost = new URL(peekApp).host;
|
|
55
|
+
if (peekAppHost !== link.appHost) {
|
|
56
|
+
return refuse(`The link points at the web app ${link.appHost}, but ${gwHost} says its web app is ${peekAppHost}. Both are shown so you can see which to trust; neither was used.`);
|
|
57
|
+
}
|
|
58
|
+
if (peeked.gatewayClaim !== undefined && peeked.gatewayClaim !== link.gatewayUrl) {
|
|
59
|
+
return refuse(`The link names the server ${gwHost}, but that server says it is ${new URL(peeked.gatewayClaim).host}. Neither was used.`);
|
|
60
|
+
}
|
|
61
|
+
// A gateway that wrote gw= into the link also reports its own address when asked. An answer with none, to a link that carried one, is not that gateway.
|
|
62
|
+
if (peeked.gatewayClaim === undefined && link.gatewayFromLink) {
|
|
63
|
+
return refuse(`The link names the server ${gwHost}, but that server did not say it is the one that made the link. Ask for a new link.`);
|
|
64
|
+
}
|
|
65
|
+
const claimed = visible(peeked.orgName).slice(0, ORG_NAME_MAX);
|
|
66
|
+
const gwShown = describeHost(gwHost);
|
|
67
|
+
const appShown = describeHost(peekAppHost);
|
|
68
|
+
deps.out('\nJoining a team graph');
|
|
69
|
+
deps.out(` Gateway: ${gwShown.text}`);
|
|
70
|
+
deps.out(` Web app: ${appShown.text}`);
|
|
71
|
+
deps.out(` Org: "${claimed || '(no name given)'}" (${ORG_NOTE})`);
|
|
72
|
+
for (const w of new Set([gwShown.warning, appShown.warning]))
|
|
73
|
+
if (w)
|
|
74
|
+
deps.out(` Warning: ${w}`);
|
|
75
|
+
const hostTyped = { done: false };
|
|
76
|
+
if (needsTypeBack(gwHost, peekAppHost)) {
|
|
77
|
+
const typed = await typeBack(deps, gwHost);
|
|
78
|
+
if (typed === null || typed.trim().toLowerCase() !== gwHost)
|
|
79
|
+
return refuse(`That is not ${gwHost}, so nothing was done.`);
|
|
80
|
+
hostTyped.done = true;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// An Align address does not make the org name Align's: any hosted org picks its own name and can issue invites.
|
|
84
|
+
const yes = await deps.promptLine(`Join "${claimed}" at ${gwHost}? The name is ${ORG_NOTE}. Type y to continue: `);
|
|
85
|
+
if (yes === null || !/^y(es)?$/i.test(yes.trim()))
|
|
86
|
+
return refuse('You did not answer y, so nothing was done.');
|
|
87
|
+
}
|
|
88
|
+
const derived = input.name ?? slugOrgName(claimed);
|
|
89
|
+
if (!derived)
|
|
90
|
+
return refuse('Could not make a name from the org name. Choose one with --name <name>.');
|
|
91
|
+
const name = derived;
|
|
92
|
+
if (deps.config.hasTeamDestination(name)) {
|
|
93
|
+
if (!input.replace)
|
|
94
|
+
return refuse(`You already have a destination called "${name}". Use --replace to replace it, or --name <other> to keep both.`);
|
|
95
|
+
const refusal = await confirmReplace(deps, name, gwHost, claimed, hostTyped.done);
|
|
96
|
+
if (refusal)
|
|
97
|
+
return refuse(refusal);
|
|
98
|
+
}
|
|
99
|
+
const received = await receive(deps, link.token, peekApp, link.gatewayUrl);
|
|
100
|
+
if (typeof received === 'string')
|
|
101
|
+
return refuseLate(received);
|
|
102
|
+
const me = await verifyToken(link.gatewayUrl, received.token);
|
|
103
|
+
if (typeof me === 'string')
|
|
104
|
+
return refuseLate(`${gwHost} ${me}`, { host: gwHost, ...(received.expiresAt ? { expiresAt: received.expiresAt } : {}) });
|
|
105
|
+
const tenantName = visible(me.tenantName).slice(0, ORG_NAME_MAX);
|
|
106
|
+
if (tenantName.trim() !== claimed.trim()) {
|
|
107
|
+
deps.out(`\n Heads up: the invite said "${claimed}" but you are signed in to "${tenantName}". Both come from ${gwHost}, so neither proves who runs it.`);
|
|
108
|
+
}
|
|
109
|
+
deps.config.saveTeamDestination(name, {
|
|
110
|
+
gatewayUrl: link.gatewayUrl,
|
|
111
|
+
appUrl: peekApp,
|
|
112
|
+
authToken: received.token,
|
|
113
|
+
tenantId: me.tenantId,
|
|
114
|
+
orgNameClaimed: claimed,
|
|
115
|
+
}, deps.now());
|
|
116
|
+
await chooseShareDestination(deps, name, claimed, gwHost);
|
|
117
|
+
deps.out(`\nJoined as "${name}" (${visible(me.email)}, ${tenantName}).`);
|
|
118
|
+
if (received.expiresAt)
|
|
119
|
+
deps.out(` This access expires on ${received.expiresAt.slice(0, 10)}. Renew it with: align login --env ${name}`);
|
|
120
|
+
deps.out(` Use it with: align <command> --env ${name}`);
|
|
121
|
+
return received.expiresAt ? { ok: true, name, expiresAt: received.expiresAt } : { ok: true, name };
|
|
122
|
+
}
|
|
123
|
+
/** Replacing a destination points a saved name at a server a person has not used under that name. Never silent. */
|
|
124
|
+
async function confirmReplace(deps, name, newHost, claimed, hostAlreadyTyped) {
|
|
125
|
+
let oldHost = '(unknown)';
|
|
126
|
+
try {
|
|
127
|
+
oldHost = new URL(deps.config.getEnvironment(name).gatewayUrl).host;
|
|
128
|
+
}
|
|
129
|
+
catch { /* unreadable entry: shown as unknown */ }
|
|
130
|
+
deps.out(`\n Replacing "${name}": ${describeHost(oldHost).text} -> ${describeHost(newHost).text}`);
|
|
131
|
+
if (!hostAlreadyTyped) {
|
|
132
|
+
const typed = await deps.promptLine('Type the new gateway host to confirm the replacement: ');
|
|
133
|
+
if (typed === null || typed.trim().toLowerCase() !== newHost)
|
|
134
|
+
return `That is not ${newHost}, so "${name}" was not replaced.`;
|
|
135
|
+
}
|
|
136
|
+
if (deps.config.getShareDestination() === name) {
|
|
137
|
+
const ok = await deps.confirm(`"${name}" is where "align share" sends decisions. Send them to "${claimed}" at ${newHost} instead?`);
|
|
138
|
+
if (!ok)
|
|
139
|
+
return `"${name}" was not replaced: it is where your shares go, and you did not agree to move them.`;
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
async function typeBack(deps, gwHost) {
|
|
144
|
+
deps.out(`\n ${gwHost} is not an Align address. If you did not expect this link, stop here.`);
|
|
145
|
+
return deps.promptLine('Type the gateway host to confirm: ');
|
|
146
|
+
}
|
|
147
|
+
/** Reads at most `max` bytes, and stops reading (cancels the stream) the moment it would pass that. Null when the body is too big. */
|
|
148
|
+
async function readCapped(res, max) {
|
|
149
|
+
const reader = res.body?.getReader();
|
|
150
|
+
if (!reader)
|
|
151
|
+
return '';
|
|
152
|
+
const parts = [];
|
|
153
|
+
let total = 0;
|
|
154
|
+
for (;;) {
|
|
155
|
+
const { done, value } = await reader.read();
|
|
156
|
+
if (done)
|
|
157
|
+
break;
|
|
158
|
+
total += value.byteLength;
|
|
159
|
+
if (total > max) {
|
|
160
|
+
await reader.cancel().catch(() => undefined);
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
parts.push(value);
|
|
164
|
+
}
|
|
165
|
+
return Buffer.concat(parts).toString('utf8');
|
|
166
|
+
}
|
|
167
|
+
async function peek(gatewayUrl, token) {
|
|
168
|
+
const host = new URL(gatewayUrl).host;
|
|
169
|
+
let res;
|
|
170
|
+
try {
|
|
171
|
+
res = await fetch(`${gatewayUrl}/auth/invite-peek?token=${encodeURIComponent(token)}`, {
|
|
172
|
+
headers: { accept: 'application/json' },
|
|
173
|
+
redirect: 'error',
|
|
174
|
+
signal: AbortSignal.timeout(PEEK_TIMEOUT_MS),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return `Could not reach ${host}.`;
|
|
179
|
+
}
|
|
180
|
+
if (res.status === 404)
|
|
181
|
+
return 'That invite was not found. It may have expired, been used, or been revoked. Ask for a new link.';
|
|
182
|
+
if (!res.ok)
|
|
183
|
+
return `${host} answered ${res.status} when asked about the invite.`;
|
|
184
|
+
let body;
|
|
185
|
+
try {
|
|
186
|
+
const text = await readCapped(res, PEEK_MAX_BYTES);
|
|
187
|
+
if (text === null)
|
|
188
|
+
return `${host} sent an unexpectedly large answer.`;
|
|
189
|
+
body = JSON.parse(text);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return `${host} did not answer with an invite description.`;
|
|
193
|
+
}
|
|
194
|
+
const b = body;
|
|
195
|
+
if (typeof b !== 'object' || b === null)
|
|
196
|
+
return `${host} did not answer with an invite description.`;
|
|
197
|
+
if (typeof b.app_url !== 'string' || b.app_url === '') {
|
|
198
|
+
return `${host} did not say where its web app is. It may be too old to join from the CLI; ask its admin to update it.`;
|
|
199
|
+
}
|
|
200
|
+
let gatewayClaim;
|
|
201
|
+
if (b.gateway_url !== undefined) {
|
|
202
|
+
if (typeof b.gateway_url !== 'string')
|
|
203
|
+
return `${host} sent a malformed server address.`;
|
|
204
|
+
try {
|
|
205
|
+
gatewayClaim = assertTransport(b.gateway_url);
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
return `The server address ${host} reports is not acceptable: ${e.message}`;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return { orgName: typeof b.org_name === 'string' ? b.org_name : '', appUrl: b.app_url, gatewayClaim };
|
|
212
|
+
}
|
|
213
|
+
async function receive(deps, token, appUrl, gatewayUrl) {
|
|
214
|
+
let result;
|
|
215
|
+
try {
|
|
216
|
+
result = await deps.waitForCallback({
|
|
217
|
+
ports: deps.callbackPorts,
|
|
218
|
+
timeoutMs: deps.timeoutMs,
|
|
219
|
+
onBound: async (port, nonce) => {
|
|
220
|
+
// cli_gw: the gateway THIS CLI validated. The web app is the one party that knows its own gateway, so it can refuse a
|
|
221
|
+
// link whose gw= was swapped for another server's, which no check on this side can tell from the real one.
|
|
222
|
+
const url = `${appUrl}/join?token=${token}&cli_port=${port}&cli_nonce=${nonce}&cli_gw=${encodeURIComponent(gatewayUrl)}`;
|
|
223
|
+
deps.out(`\nOpening your browser at:\n ${url}`);
|
|
224
|
+
if (!(await deps.openUrl(url)))
|
|
225
|
+
deps.out(' Could not open a browser here. Open that link yourself.');
|
|
226
|
+
deps.out('Waiting for you to approve in the browser (5 min)...');
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
catch (e) {
|
|
231
|
+
return `No approval arrived: ${e.message}.`;
|
|
232
|
+
}
|
|
233
|
+
const t = result.data['token'];
|
|
234
|
+
if (typeof t !== 'string' || !TOKEN_SHAPE.test(t))
|
|
235
|
+
return 'The browser sent back no usable token. Run the command again.';
|
|
236
|
+
const raw = result.data['expires_at'];
|
|
237
|
+
let expiresAt;
|
|
238
|
+
if (typeof raw === 'string' && !Number.isNaN(Date.parse(raw)))
|
|
239
|
+
expiresAt = new Date(raw).toISOString();
|
|
240
|
+
return expiresAt ? { token: t, expiresAt } : { token: t };
|
|
241
|
+
}
|
|
242
|
+
const ID_SHAPE = /^[\x21-\x7e]{1,128}$/;
|
|
243
|
+
const EMAIL_SHAPE = /^[^\s\p{C}]{3,254}$/u;
|
|
244
|
+
/**
|
|
245
|
+
* "Verified" means the gateway answered /auth/me like an Align gateway would, with this token and no other, not that it said 2xx.
|
|
246
|
+
* Every field that is saved or printed is checked for type and shape first, so a hostile server cannot save an object as a tenant
|
|
247
|
+
* id or put escape sequences on the person's screen. Anything else is a string saying why, and nothing is saved.
|
|
248
|
+
*/
|
|
249
|
+
export async function verifyToken(gatewayUrl, token) {
|
|
250
|
+
let raw;
|
|
251
|
+
try {
|
|
252
|
+
raw = await createGatewayClient({ gatewayUrl, authToken: token, tenantId: null, mode: 'auth' }).whoami();
|
|
253
|
+
}
|
|
254
|
+
catch (e) {
|
|
255
|
+
return `did not accept the new token (${visible(String(e.message).slice(0, 120))}).`;
|
|
256
|
+
}
|
|
257
|
+
const r = raw;
|
|
258
|
+
const email = r?.user?.email;
|
|
259
|
+
const id = r?.tenant?.id;
|
|
260
|
+
const name = r?.tenant?.name;
|
|
261
|
+
if (typeof email !== 'string' || !EMAIL_SHAPE.test(email) || typeof id !== 'string' || !ID_SHAPE.test(id) || typeof name !== 'string') {
|
|
262
|
+
return 'answered, but not the way an Align gateway answers who you are. The token was not saved.';
|
|
263
|
+
}
|
|
264
|
+
return { email, tenantId: id, tenantName: name };
|
|
265
|
+
}
|
|
266
|
+
async function chooseShareDestination(deps, name, claimed, gwHost) {
|
|
267
|
+
const current = deps.config.getShareDestination();
|
|
268
|
+
// Where shares go is a decision about where decisions are sent, so it is made by a yes at this terminal and never by default.
|
|
269
|
+
// (A replace of the share destination was already agreed to, and keeps pointing at the name it had.)
|
|
270
|
+
if (current !== name) {
|
|
271
|
+
const q = current === null
|
|
272
|
+
? `Send "align share" to "${claimed}" at ${gwHost} from now on?`
|
|
273
|
+
: `Send "align share" to "${claimed}" at ${gwHost} from now on? It currently goes to "${current}".`;
|
|
274
|
+
if (!(await deps.confirm(q))) {
|
|
275
|
+
deps.out(` "align share" ${current === null ? 'has no destination yet' : `still goes to "${current}"`}. Send one share to "${name}" with --to ${name}.`);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
deps.config.setShareDestination(name);
|
|
279
|
+
}
|
|
280
|
+
deps.out(` Shares from this machine now go to "${claimed}" at ${gwHost}.`);
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=join-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join-flow.js","sourceRoot":"","sources":["../../src/lib/join-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { LaunchContext, LaunchSpec } from './claude-code.js';
|
|
2
|
+
export type AiderLaunchContext = Pick<LaunchContext, 'passthrough' | 'cachePath'>;
|
|
3
|
+
/**
|
|
4
|
+
* Aider has no MCP, so it gets instructions and no graph tools. The model cannot call Align, so the
|
|
5
|
+
* text asks it to send the user to Align in another terminal.
|
|
6
|
+
*/
|
|
7
|
+
export declare const AIDER_INSTRUCTIONS = "# Align (decision graph)\n\nThis project's decisions live in Align, but this Aider session has no MCP and so no graph tools:\nyou cannot query Align yourself.\n\n- Before a change that could touch a past decision (architecture, data model, a dependency, a\n config value someone chose), stop and ask the user to run, in another terminal:\n `align ask \"<what you are about to change and why>\"`\n- After editing, suggest the user runs `align check` in another terminal to compare the diff\n against recorded decisions.\n- If the user reports a conflict, follow the recorded decision or confirm with them first.\n";
|
|
8
|
+
/**
|
|
9
|
+
* Aider, per session, instructions only (aider 0.86.2, `aider --help`): `--read FILE` loads a
|
|
10
|
+
* read-only file into the chat, and can be given more than once, so the user's own `--read`
|
|
11
|
+
* files are kept. It is added even when one of those carries Align's general block (AGENTS.md):
|
|
12
|
+
* that block tells the model to call MCP tools Aider does not have, and this file corrects it.
|
|
13
|
+
* The flag goes first, where a user's `--` cannot turn it into a file name.
|
|
14
|
+
* Nothing else is passed: no `--lint-cmd` (plan Open Question 8), no `--yes-always`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildAiderLaunch(c: AiderLaunchContext): LaunchSpec;
|
|
17
|
+
//# sourceMappingURL=aider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aider.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/aider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC;AAIlF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4mBAW9B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAGlE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const FILE = 'aider-align-instructions.md';
|
|
2
|
+
/**
|
|
3
|
+
* Aider has no MCP, so it gets instructions and no graph tools. The model cannot call Align, so the
|
|
4
|
+
* text asks it to send the user to Align in another terminal.
|
|
5
|
+
*/
|
|
6
|
+
export const AIDER_INSTRUCTIONS = `# Align (decision graph)
|
|
7
|
+
|
|
8
|
+
This project's decisions live in Align, but this Aider session has no MCP and so no graph tools:
|
|
9
|
+
you cannot query Align yourself.
|
|
10
|
+
|
|
11
|
+
- Before a change that could touch a past decision (architecture, data model, a dependency, a
|
|
12
|
+
config value someone chose), stop and ask the user to run, in another terminal:
|
|
13
|
+
\`align ask "<what you are about to change and why>"\`
|
|
14
|
+
- After editing, suggest the user runs \`align check\` in another terminal to compare the diff
|
|
15
|
+
against recorded decisions.
|
|
16
|
+
- If the user reports a conflict, follow the recorded decision or confirm with them first.
|
|
17
|
+
`;
|
|
18
|
+
/**
|
|
19
|
+
* Aider, per session, instructions only (aider 0.86.2, `aider --help`): `--read FILE` loads a
|
|
20
|
+
* read-only file into the chat, and can be given more than once, so the user's own `--read`
|
|
21
|
+
* files are kept. It is added even when one of those carries Align's general block (AGENTS.md):
|
|
22
|
+
* that block tells the model to call MCP tools Aider does not have, and this file corrects it.
|
|
23
|
+
* The flag goes first, where a user's `--` cannot turn it into a file name.
|
|
24
|
+
* Nothing else is passed: no `--lint-cmd` (plan Open Question 8), no `--yes-always`.
|
|
25
|
+
*/
|
|
26
|
+
export function buildAiderLaunch(c) {
|
|
27
|
+
const spec = { bin: 'aider', args: [...c.passthrough], env: { ALIGN_WRAPPED: '1' }, files: [] };
|
|
28
|
+
return { ...spec, args: ['--read', c.cachePath(FILE), ...c.passthrough], files: [{ name: FILE, content: AIDER_INSTRUCTIONS }] };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=aider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aider.js","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/aider.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAG,6BAA6B,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;CAWjC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAqB;IACpD,MAAM,IAAI,GAAe,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5G,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;AAClI,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AuggieProjectState } from '../auggie-state.js';
|
|
2
|
+
import type { LaunchContext, LaunchSpec } from './claude-code.js';
|
|
3
|
+
export interface AuggieLaunchContext extends Pick<LaunchContext, 'passthrough'>, AuggieProjectState {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Auggie, written ONCE (auggie 0.36.0): align-local goes into the user settings file under
|
|
7
|
+
* `mcpServers` through the safe writer, once, with an exact `align use --undo`.
|
|
8
|
+
*
|
|
9
|
+
* Not `--mcp-config`, though Auggie has it: its help says it "Overwrites default mcp
|
|
10
|
+
* configuration in settings.json", and in its bundle the settings servers are not read at all
|
|
11
|
+
* when the flag is given. The user's own servers would vanish for the session.
|
|
12
|
+
*
|
|
13
|
+
* A commented settings file is never rewritten: one line with Auggie's own command instead. No
|
|
14
|
+
* flag is injected: no `--permission`, no `--allow-indexing`; Auggie's own prompts stay the
|
|
15
|
+
* user's. Instructions come from AGENTS.md.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildAuggieLaunch(c: AuggieLaunchContext): LaunchSpec;
|
|
18
|
+
//# sourceMappingURL=auggie.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auggie.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/auggie.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,kBAAkB;CAAG;AAItG;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAgBpE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { alignServerEntry } from '../../mcp-setup.js';
|
|
2
|
+
const INJECTED_SERVER_NAME = 'align-local';
|
|
3
|
+
/**
|
|
4
|
+
* Auggie, written ONCE (auggie 0.36.0): align-local goes into the user settings file under
|
|
5
|
+
* `mcpServers` through the safe writer, once, with an exact `align use --undo`.
|
|
6
|
+
*
|
|
7
|
+
* Not `--mcp-config`, though Auggie has it: its help says it "Overwrites default mcp
|
|
8
|
+
* configuration in settings.json", and in its bundle the settings servers are not read at all
|
|
9
|
+
* when the flag is given. The user's own servers would vanish for the session.
|
|
10
|
+
*
|
|
11
|
+
* A commented settings file is never rewritten: one line with Auggie's own command instead. No
|
|
12
|
+
* flag is injected: no `--permission`, no `--allow-indexing`; Auggie's own prompts stay the
|
|
13
|
+
* user's. Instructions come from AGENTS.md.
|
|
14
|
+
*/
|
|
15
|
+
export function buildAuggieLaunch(c) {
|
|
16
|
+
const writes = [];
|
|
17
|
+
const notes = [];
|
|
18
|
+
if (c.conflict) {
|
|
19
|
+
notes.push(`${c.conflict} defines its own align-local MCP server, so Align did not add its graph to Auggie. Remove that entry to use the graph.`);
|
|
20
|
+
}
|
|
21
|
+
else if (!c.present && c.commented) {
|
|
22
|
+
notes.push(`${c.settingsFile} has comments or trailing commas, and Align does not rewrite a file it would strip them from. Add the graph yourself: auggie mcp add align-local --command align --args "mcp --env local"`);
|
|
23
|
+
}
|
|
24
|
+
else if (!c.present) {
|
|
25
|
+
writes.push({ kind: 'mcp-entry', file: c.settingsFile, topKey: 'mcpServers', name: INJECTED_SERVER_NAME, entry: alignServerEntry('mcpServers', 'local') });
|
|
26
|
+
}
|
|
27
|
+
// The user's own --mcp-config replaces the settings servers for this session (see above), so
|
|
28
|
+
// whatever is in the settings file, the graph is not loaded. Say so; the file is left as it is.
|
|
29
|
+
if (c.passthrough.some((a) => a === '--mcp-config' || a.startsWith('--mcp-config='))) {
|
|
30
|
+
notes.push("--mcp-config replaces the MCP servers in Auggie's settings for this session, so Align's graph is not loaded. Add align-local to that config to use it here.");
|
|
31
|
+
}
|
|
32
|
+
return { bin: 'auggie', args: [...c.passthrough], env: { ALIGN_WRAPPED: '1' }, files: [], ...(writes.length > 0 ? { writes } : {}), ...(notes.length > 0 ? { notes } : {}) };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=auggie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auggie.js","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/auggie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAsB;IACtD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,wHAAwH,CAAC,CAAC;IACpJ,CAAC;SAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,2LAA2L,CAAC,CAAC;IAC3N,CAAC;SAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7J,CAAC;IACD,6FAA6F;IAC7F,gGAAgG;IAChG,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,cAAc,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,6JAA6J,CAAC,CAAC;IAC5K,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/K,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ClineProjectState } from '../cline-state.js';
|
|
2
|
+
import type { LaunchContext, LaunchSpec } from './claude-code.js';
|
|
3
|
+
export interface ClineLaunchContext extends Pick<LaunchContext, 'passthrough'>, ClineProjectState {
|
|
4
|
+
/** The launcher's environment: the user's own values for the MCP child's env block. */
|
|
5
|
+
env?: Record<string, string | undefined>;
|
|
6
|
+
/** The file a launch without the one-session flag would use (for the note). */
|
|
7
|
+
defaultMcpFile?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildClineLaunch(c: ClineLaunchContext): LaunchSpec;
|
|
10
|
+
//# sourceMappingURL=cline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/cline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,iBAAiB;IAC/F,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAmBD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAkBlE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { alignServerEntry } from '../../mcp-setup.js';
|
|
2
|
+
import { mcpChildEnv } from '../mcp-child-env.js';
|
|
3
|
+
const INJECTED_SERVER_NAME = 'align-local';
|
|
4
|
+
/**
|
|
5
|
+
* Cline CLI, written ONCE (cline 3.0.70): align-local goes into its MCP settings file through the
|
|
6
|
+
* safe writer, once, with an exact `align use --undo`. The flat `{command, args}` entry loads
|
|
7
|
+
* (checked with `cline config --json`).
|
|
8
|
+
*
|
|
9
|
+
* A `--config` or `--data-dir` the user passes picks a directory for that session; align writes
|
|
10
|
+
* nothing there (a permanent entry in a one-session directory), and says so.
|
|
11
|
+
*
|
|
12
|
+
* Not CLINE_MCP_SETTINGS_PATH pointed at a copy: a `cline mcp add` during the session would land
|
|
13
|
+
* in the copy and be lost. Never `--config`: that directory also holds the user's auth. No flag
|
|
14
|
+
* is injected, so Cline's own approval settings stay the user's.
|
|
15
|
+
*/
|
|
16
|
+
/** The note names the file the user's own default launch would get. */
|
|
17
|
+
const clineMcpFileDefault = (c) => c.defaultMcpFile ?? c.mcpFile;
|
|
18
|
+
export function buildClineLaunch(c) {
|
|
19
|
+
const writes = [];
|
|
20
|
+
const notes = [];
|
|
21
|
+
if (c.conflict && c.envConflictKey) {
|
|
22
|
+
notes.push(`${c.conflict}: its align-local entry carries an env value Align did not write (${c.envConflictKey}), so Align did not add its graph to Cline. Remove that entry and Align will add its own.`);
|
|
23
|
+
}
|
|
24
|
+
else if (c.conflict) {
|
|
25
|
+
notes.push(`${c.conflict} defines its own align-local MCP server, so Align did not add its graph to Cline. Remove that entry to use the graph.`);
|
|
26
|
+
}
|
|
27
|
+
else if (!c.present && c.oneSession) {
|
|
28
|
+
const flag = c.passthrough.some((a) => a === '--config' || a.startsWith('--config=')) ? '--config' : '--data-dir';
|
|
29
|
+
notes.push(`Align does not add its graph to a Cline directory chosen for one session (${flag}). Run cline without it once, or add align-local to ${clineMcpFileDefault(c)} yourself.`);
|
|
30
|
+
}
|
|
31
|
+
else if (c.stale && !c.oneSession) {
|
|
32
|
+
// Align's own entry from an older key set, or with values that changed: rewrite it (backup and undo as for any write).
|
|
33
|
+
writes.push({ kind: 'mcp-entry', file: c.mcpFile, topKey: 'mcpServers', name: INJECTED_SERVER_NAME, entry: { ...alignServerEntry('mcpServers', 'local'), env: mcpChildEnv(c.env ?? {}) }, replace: true });
|
|
34
|
+
}
|
|
35
|
+
else if (!c.present) {
|
|
36
|
+
// With its env block: Cline's MCP children (spawned by its hub) inherit a repo `.env`.
|
|
37
|
+
writes.push({ kind: 'mcp-entry', file: c.mcpFile, topKey: 'mcpServers', name: INJECTED_SERVER_NAME, entry: { ...alignServerEntry('mcpServers', 'local'), env: mcpChildEnv(c.env ?? {}) } });
|
|
38
|
+
}
|
|
39
|
+
return { bin: 'cline', args: [...c.passthrough], env: { ALIGN_WRAPPED: '1' }, files: [], ...(writes.length > 0 ? { writes } : {}), ...(notes.length > 0 ? { notes } : {}) };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=cline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cline.js","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/cline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAUlD,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,uEAAuE;AACvE,MAAM,mBAAmB,GAAG,CAAC,CAAqB,EAAU,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,OAAO,CAAC;AAE7F,MAAM,UAAU,gBAAgB,CAAC,CAAqB;IACpD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,qEAAqE,CAAC,CAAC,cAAc,2FAA2F,CAAC,CAAC;IAC5M,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,uHAAuH,CAAC,CAAC;IACnJ,CAAC;SAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;QAClH,KAAK,CAAC,IAAI,CAAC,6EAA6E,IAAI,uDAAuD,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACzL,CAAC;SAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACpC,uHAAuH;QACvH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,GAAG,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7M,CAAC;SAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACtB,uFAAuF;QACvF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,GAAG,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9L,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9K,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ContinueProjectState } from '../continue-state.js';
|
|
2
|
+
import type { LaunchContext, LaunchSpec } from './claude-code.js';
|
|
3
|
+
export interface ContinueLaunchContext extends Pick<LaunchContext, 'passthrough' | 'cachePath'>, ContinueProjectState {
|
|
4
|
+
/** The launcher's environment: the user's own values for the MCP child's env block. */
|
|
5
|
+
env?: Record<string, string | undefined>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Continue CLI (`cn`), per session, nothing written to the user's config (cn 1.5.47): `--mcp`
|
|
9
|
+
* takes a local block when the value is a path (`/`, `.`, `~` or `file://`), and cn merges it into
|
|
10
|
+
* whatever config it loaded. Verified against a stub model: the request carried the user's server
|
|
11
|
+
* and align-local. `file://` + the raw path is used because it is the form that also reads a
|
|
12
|
+
* Windows path: cn's decodePackageIdentifier strips the first 7 characters of a `file://` value and
|
|
13
|
+
* uses the rest as the path, so `file://C:\\...` gives `C:\\...`. pathToFileURL would give
|
|
14
|
+
* `file:///C:/...`, which cn decodes to `/C:/...`, a path that does not exist on Windows.
|
|
15
|
+
*
|
|
16
|
+
* The flag goes first: `--mcp` is a root option, and cn accepted it in front of a subcommand
|
|
17
|
+
* (`cn --mcp f ls --help`). When the loaded config.yaml already defines align-local, nothing is
|
|
18
|
+
* added (canonical: no duplicate; anything else wins over ours, so one line says why). No
|
|
19
|
+
* `--auto`/`--allow`: cn's own tool policy stays the user's.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildContinueLaunch(c: ContinueLaunchContext): LaunchSpec;
|
|
22
|
+
//# sourceMappingURL=continue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/continue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CAAC,EAAE,oBAAoB;IACnH,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAyBxE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { alignServerEntry } from '../../mcp-setup.js';
|
|
2
|
+
import { mcpChildEnv } from '../mcp-child-env.js';
|
|
3
|
+
import { unreadableNote } from './notes.js';
|
|
4
|
+
const FILE = 'continue-align-local.yaml';
|
|
5
|
+
/**
|
|
6
|
+
* Continue CLI (`cn`), per session, nothing written to the user's config (cn 1.5.47): `--mcp`
|
|
7
|
+
* takes a local block when the value is a path (`/`, `.`, `~` or `file://`), and cn merges it into
|
|
8
|
+
* whatever config it loaded. Verified against a stub model: the request carried the user's server
|
|
9
|
+
* and align-local. `file://` + the raw path is used because it is the form that also reads a
|
|
10
|
+
* Windows path: cn's decodePackageIdentifier strips the first 7 characters of a `file://` value and
|
|
11
|
+
* uses the rest as the path, so `file://C:\\...` gives `C:\\...`. pathToFileURL would give
|
|
12
|
+
* `file:///C:/...`, which cn decodes to `/C:/...`, a path that does not exist on Windows.
|
|
13
|
+
*
|
|
14
|
+
* The flag goes first: `--mcp` is a root option, and cn accepted it in front of a subcommand
|
|
15
|
+
* (`cn --mcp f ls --help`). When the loaded config.yaml already defines align-local, nothing is
|
|
16
|
+
* added (canonical: no duplicate; anything else wins over ours, so one line says why). No
|
|
17
|
+
* `--auto`/`--allow`: cn's own tool policy stays the user's.
|
|
18
|
+
*/
|
|
19
|
+
export function buildContinueLaunch(c) {
|
|
20
|
+
const spec = { bin: 'cn', args: [...c.passthrough], env: { ALIGN_WRAPPED: '1' }, files: [] };
|
|
21
|
+
if (c.unreadable) {
|
|
22
|
+
return { ...spec, notes: [unreadableNote(c.unreadable)] };
|
|
23
|
+
}
|
|
24
|
+
if (c.conflict) {
|
|
25
|
+
return { ...spec, notes: [`${c.conflict} defines its own align-local MCP server, so Align did not add its graph to Continue CLI. Remove that entry to use the graph.`] };
|
|
26
|
+
}
|
|
27
|
+
if (c.present)
|
|
28
|
+
return spec;
|
|
29
|
+
const { command, args } = alignServerEntry('mcpServers', 'local');
|
|
30
|
+
const content = [
|
|
31
|
+
'name: align-local',
|
|
32
|
+
'version: 0.0.1',
|
|
33
|
+
'schema: v1',
|
|
34
|
+
'mcpServers:',
|
|
35
|
+
' - name: align-local',
|
|
36
|
+
` command: ${JSON.stringify(command)}`,
|
|
37
|
+
` args: [${args.map((a) => JSON.stringify(a)).join(', ')}]`,
|
|
38
|
+
// cn spawns its MCP servers with its own environment, repo `.env` included: name every
|
|
39
|
+
// variable align reads (JSON-quoted values are valid YAML scalars).
|
|
40
|
+
' env:',
|
|
41
|
+
...Object.entries(mcpChildEnv(c.env ?? {})).map(([k, v]) => ` ${k}: ${JSON.stringify(v)}`),
|
|
42
|
+
'',
|
|
43
|
+
].join('\n');
|
|
44
|
+
return { ...spec, args: ['--mcp', `file://${c.cachePath(FILE)}`, ...c.passthrough], files: [{ name: FILE, content }] };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=continue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/continue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ5C,MAAM,IAAI,GAAG,2BAA2B,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAwB;IAC1D,MAAM,IAAI,GAAe,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACzG,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,8HAA8H,CAAC,EAAE,CAAC;IAC3K,CAAC;IACD,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAwC,CAAC;IACzG,MAAM,OAAO,GAAG;QACd,mBAAmB;QACnB,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,uBAAuB;QACvB,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QACzC,cAAc,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9D,uFAAuF;QACvF,oEAAoE;QACpE,UAAU;QACV,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACzH,CAAC"}
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
import { type GeminiProjectState } from '../gemini-state.js';
|
|
2
2
|
import type { LaunchContext, LaunchSpec } from './claude-code.js';
|
|
3
3
|
export interface GeminiLaunchContext extends Pick<LaunchContext, 'passthrough' | 'cachePath'>, GeminiProjectState {
|
|
4
|
-
/** The environment the child will inherit: the user's own GEMINI_CLI_* are read from here. */
|
|
5
|
-
env: Record<string, string | undefined>;
|
|
6
|
-
platform: string;
|
|
7
4
|
}
|
|
8
5
|
export declare const GEMINI_TRUST_NOTE = "Gemini turns off MCP servers, Align's included, in folders you haven't trusted. Trust this folder in Gemini to use the graph here.";
|
|
9
6
|
/**
|
|
10
|
-
* Gemini CLI,
|
|
11
|
-
*
|
|
12
|
-
* mcpServers with the user's (verified: `gemini mcp list` shows both). That variable REPLACES
|
|
13
|
-
* the system file Gemini would otherwise read (the user's own value, or the platform default an
|
|
14
|
-
* admin may have filled), so align points it at a COPY of that file with align-local added,
|
|
15
|
-
* never at a file of align's alone. Gemini also derives system-defaults.json from that file's
|
|
16
|
-
* directory, so the original location is pinned with GEMINI_CLI_SYSTEM_DEFAULTS_PATH unless the
|
|
17
|
-
* user set it. A system file align cannot read or parse is never replaced: no injection, and
|
|
18
|
-
* one line saying why (the same rule as OpenCode's OPENCODE_CONFIG_CONTENT).
|
|
7
|
+
* Gemini CLI, written ONCE (gemini 0.63.0): the `align-local` entry goes into the user's
|
|
8
|
+
* settings file by the safe writer, with a backup and an exact `align use --undo`.
|
|
19
9
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
10
|
+
* Not per session. The first design pointed GEMINI_CLI_SYSTEM_SETTINGS_PATH at a copy in the
|
|
11
|
+
* launch cache, and Gemini 0.63.0 skips any system settings file unless the file and every
|
|
12
|
+
* directory above it is root-owned and not group/other writable (gemini-system-file.ts), so
|
|
13
|
+
* Gemini users got no graph and only Gemini's own warning as a clue. A per-session
|
|
14
|
+
* GEMINI_CLI_HOME was rejected too: it would have to mirror the user's whole ~/.gemini (oauth
|
|
15
|
+
* credentials, history, trusted folders, extensions) and anything Gemini writes there during
|
|
16
|
+
* the session, a changed theme or a first login, would be lost with the session directory.
|
|
17
|
+
*
|
|
18
|
+
* Nothing else changes: no flags, no GEMINI_CLI_* variable (so a repo .env cannot substitute
|
|
19
|
+
* one either), no --skip-trust. Trust: Gemini turns off every MCP server in a folder it does
|
|
20
|
+
* not trust. align says so in one line and never trusts a folder for the user.
|
|
22
21
|
* Instructions come from the managed GEMINI.md block. Pass-through args are the whole of the args.
|
|
23
22
|
*/
|
|
24
23
|
export declare function buildGeminiLaunch(c: GeminiLaunchContext): LaunchSpec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/gemini-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/gemini-cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CAAC,EAAE,kBAAkB;CAAG;AAKpH,eAAO,MAAM,iBAAiB,uIAAuI,CAAC;AAEtK;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAgCpE"}
|