@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,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L4: the MCP tool `align_scope({ action, source, ... })` - see, or change, what the sources the user already connected read.
|
|
3
|
+
*
|
|
4
|
+
* What it does, and what it cannot:
|
|
5
|
+
* - `view`: each connected source's scope (their own items, or everyone's in a named repo, project, team or space), with no network
|
|
6
|
+
* call and nothing secret.
|
|
7
|
+
* - `set`: changes the scope of a CONNECTED source through `setScope`, the same function `align connect --scope` ends in, so a
|
|
8
|
+
* change by an agent takes exactly the path a person's does. It records `via = 'mcp'` and the agent id on the scope's row, returns
|
|
9
|
+
* the plain-words disclosure and what widening costs (a new scope re-reads the window), and never deletes an item.
|
|
10
|
+
* - Listing choices (is this Jira project visible?) uses the saved token inside this process. The token never appears in a result.
|
|
11
|
+
* - Connecting, re-authenticating and every token or key stay with the person: the input schema is closed, so a `token` or `api_key`
|
|
12
|
+
* property is refused before anything runs, and the reply for an unconnected source is the `align connect <source>` command.
|
|
13
|
+
* - Zoom is only the user's own and says why. Slack, Notion and Teams already read all the token can see and have nothing to set.
|
|
14
|
+
*
|
|
15
|
+
* The server's `instructions` text is at its 2,048-byte budget, so the guidance for when to offer this tool lives here, in its description.
|
|
16
|
+
*/
|
|
17
|
+
import type { EnvironmentConfig } from './config.js';
|
|
18
|
+
import { type ScopeDeps } from './scope.js';
|
|
19
|
+
export declare const SCOPE_TOOL = "align_scope";
|
|
20
|
+
export declare const SCOPE_ACTIONS: readonly ["view", "set"];
|
|
21
|
+
/** Every source that can be connected, so Zoom gets its own honest refusal instead of "unknown source". */
|
|
22
|
+
export declare const SCOPE_SOURCES: readonly ["github", "jira", "confluence", "slack", "teams", "gitlab", "linear", "notion", "zoom"];
|
|
23
|
+
export declare const SCOPE_TOOL_SCHEMA: {
|
|
24
|
+
readonly name: "align_scope";
|
|
25
|
+
readonly annotations: {
|
|
26
|
+
readonly readOnlyHint: false;
|
|
27
|
+
readonly destructiveHint: false;
|
|
28
|
+
};
|
|
29
|
+
readonly description: string;
|
|
30
|
+
readonly inputSchema: {
|
|
31
|
+
readonly type: "object";
|
|
32
|
+
readonly properties: {
|
|
33
|
+
readonly action: {
|
|
34
|
+
readonly type: "string";
|
|
35
|
+
readonly enum: readonly ["view", "set"];
|
|
36
|
+
readonly description: "view: show the scopes. set: change one source's scope";
|
|
37
|
+
};
|
|
38
|
+
readonly source: {
|
|
39
|
+
readonly type: "string";
|
|
40
|
+
readonly enum: readonly ["github", "jira", "confluence", "slack", "teams", "gitlab", "linear", "notion", "zoom"];
|
|
41
|
+
readonly description: "With \"set\": which connected source to change";
|
|
42
|
+
};
|
|
43
|
+
readonly scope: {
|
|
44
|
+
readonly type: "string";
|
|
45
|
+
readonly enum: readonly ["yours", "team"];
|
|
46
|
+
readonly description: "With \"set\": \"yours\" goes back to only the user's own items. \"team\" is implied by passing the source's value below";
|
|
47
|
+
};
|
|
48
|
+
readonly repo: {
|
|
49
|
+
readonly type: "string";
|
|
50
|
+
readonly description: "GitHub: the repo as owner/repo";
|
|
51
|
+
};
|
|
52
|
+
readonly projects: {
|
|
53
|
+
readonly type: "array";
|
|
54
|
+
readonly items: {
|
|
55
|
+
readonly type: "string";
|
|
56
|
+
};
|
|
57
|
+
readonly description: "Jira: project keys, for example [\"ALI\",\"OPS\"]";
|
|
58
|
+
};
|
|
59
|
+
readonly teams: {
|
|
60
|
+
readonly type: "array";
|
|
61
|
+
readonly items: {
|
|
62
|
+
readonly type: "string";
|
|
63
|
+
};
|
|
64
|
+
readonly description: "Linear: team keys, for example [\"ENG\"]";
|
|
65
|
+
};
|
|
66
|
+
readonly gitlab_project: {
|
|
67
|
+
readonly type: "string";
|
|
68
|
+
readonly description: "GitLab: the project id or group/project path";
|
|
69
|
+
};
|
|
70
|
+
readonly spaces: {
|
|
71
|
+
readonly type: "array";
|
|
72
|
+
readonly items: {
|
|
73
|
+
readonly type: "string";
|
|
74
|
+
};
|
|
75
|
+
readonly description: "Confluence: space keys, for example [\"ENG\"]";
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
readonly required: readonly ["action"];
|
|
79
|
+
readonly additionalProperties: false;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export interface ScopeToolResult {
|
|
83
|
+
text: string;
|
|
84
|
+
[k: string]: unknown;
|
|
85
|
+
}
|
|
86
|
+
export declare function defaultScopeToolDeps(env: EnvironmentConfig): ScopeDeps;
|
|
87
|
+
export declare function runScopeTool(args: Record<string, unknown> | undefined, env: EnvironmentConfig, injected?: ScopeDeps, o?: {
|
|
88
|
+
agent?: string;
|
|
89
|
+
}): Promise<ScopeToolResult>;
|
|
90
|
+
//# sourceMappingURL=mcp-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-scope.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,YAAY,CAAC;AAK/F,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,aAAa,0BAA2B,CAAC;AACtD,2GAA2G;AAC3G,eAAO,MAAM,aAAa,mGAAoG,CAAC;AAM/H,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BpB,CAAC;AAEX,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AAIvE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,CAItE;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,GAAG,EAAE,iBAAiB,EACtB,QAAQ,CAAC,EAAE,SAAS,EACpB,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACzB,OAAO,CAAC,eAAe,CAAC,CAoB1B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { ScopeRefusal, setScope, viewScopes } from './scope.js';
|
|
2
|
+
import { UNKNOWN_AGENT } from './mcp/tool-rules.js';
|
|
3
|
+
import { realScopeDeps } from './scope-real.js';
|
|
4
|
+
import { SCOPED_SOURCES } from './scope-values.js';
|
|
5
|
+
export const SCOPE_TOOL = 'align_scope';
|
|
6
|
+
export const SCOPE_ACTIONS = ['view', 'set'];
|
|
7
|
+
/** Every source that can be connected, so Zoom gets its own honest refusal instead of "unknown source". */
|
|
8
|
+
export const SCOPE_SOURCES = ['github', 'jira', 'confluence', 'slack', 'teams', 'gitlab', 'linear', 'notion', 'zoom'];
|
|
9
|
+
/** The one value property each source takes for a team scope. */
|
|
10
|
+
const VALUE_PROPERTY = { github: 'repo', jira: 'projects', linear: 'teams', gitlab: 'gitlab_project', confluence: 'spaces' };
|
|
11
|
+
const VALUE_PROPERTIES = Object.values(VALUE_PROPERTY);
|
|
12
|
+
export const SCOPE_TOOL_SCHEMA = {
|
|
13
|
+
name: SCOPE_TOOL,
|
|
14
|
+
annotations: { readOnlyHint: false, destructiveHint: false },
|
|
15
|
+
description: 'See, or change, what the sources the user has ALREADY connected read into the local graph on this machine: only their own items, or everyone\'s in one named GitHub repo, Jira project, Linear team, GitLab project or Confluence space that their token can see. ' +
|
|
16
|
+
'action "view" lists each connected source\'s scope (and any change waiting for the person); use it when asked what is read or why teammates\' items are missing. ' +
|
|
17
|
+
'action "set" changes one source; offer it when the user asks to include their team\'s items, or to go back to only their own. ' +
|
|
18
|
+
'Widening re-reads that source\'s history on its next sync (a few minutes; the reply says how far back). ' +
|
|
19
|
+
'It deletes nothing and reads other people\'s items onto this machine only. A team change you make WAITS: nothing reads it, in the background or via align_sync, until a person runs `align sync <source>` at a terminal, which shows what it reads and asks (default No). Tell them so, with the reply\'s disclosure sentence in your own words. That prompt is a speed bump, not proof of consent: an agent with shell access could answer it from a pseudo-terminal, and you must never do that. Narrowing to their own items is immediate. ' +
|
|
20
|
+
'Zoom is only the user\'s own; Slack, Notion and Teams already read all their token can see. ' +
|
|
21
|
+
'It never takes a token or key: for a source that is not connected, or whose saved token was refused, the reply gives the exact `align connect <source>` command for the user to run themselves. Do not ask the user to paste a token into the chat.',
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
action: { type: 'string', enum: [...SCOPE_ACTIONS], description: 'view: show the scopes. set: change one source\'s scope' },
|
|
26
|
+
source: { type: 'string', enum: [...SCOPE_SOURCES], description: 'With "set": which connected source to change' },
|
|
27
|
+
scope: { type: 'string', enum: ['yours', 'team'], description: 'With "set": "yours" goes back to only the user\'s own items. "team" is implied by passing the source\'s value below' },
|
|
28
|
+
repo: { type: 'string', description: 'GitHub: the repo as owner/repo' },
|
|
29
|
+
projects: { type: 'array', items: { type: 'string' }, description: 'Jira: project keys, for example ["ALI","OPS"]' },
|
|
30
|
+
teams: { type: 'array', items: { type: 'string' }, description: 'Linear: team keys, for example ["ENG"]' },
|
|
31
|
+
gitlab_project: { type: 'string', description: 'GitLab: the project id or group/project path' },
|
|
32
|
+
spaces: { type: 'array', items: { type: 'string' }, description: 'Confluence: space keys, for example ["ENG"]' },
|
|
33
|
+
},
|
|
34
|
+
required: ['action'],
|
|
35
|
+
additionalProperties: false,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
const KNOWN = new Set(Object.keys(SCOPE_TOOL_SCHEMA.inputSchema.properties));
|
|
39
|
+
export function defaultScopeToolDeps(env) {
|
|
40
|
+
const dbPath = env.localDbPath;
|
|
41
|
+
if (!dbPath)
|
|
42
|
+
throw new Error(`${SCOPE_TOOL} needs the local graph path, and this server has none configured.`);
|
|
43
|
+
return realScopeDeps(dbPath);
|
|
44
|
+
}
|
|
45
|
+
export async function runScopeTool(args, env, injected, o = {}) {
|
|
46
|
+
const input = args ?? {};
|
|
47
|
+
const unknownKeys = Object.keys(input).filter((k) => !KNOWN.has(k));
|
|
48
|
+
if (unknownKeys.length) {
|
|
49
|
+
// Neither the values NOR the key names: a token pasted as a property name must not be echoed into the transcript it was typed into.
|
|
50
|
+
throw new Error(`${SCOPE_TOOL} does not accept ${unknownKeys.length === 1 ? 'an unknown property' : `${unknownKeys.length} unknown properties`} (the name is not printed back). It never accepts a token or key: the person connects a source themselves with \`align connect <source>\`.`);
|
|
51
|
+
}
|
|
52
|
+
const action = input['action'];
|
|
53
|
+
if (action !== 'view' && action !== 'set')
|
|
54
|
+
throw new Error(`${SCOPE_TOOL} requires "action", one of: ${SCOPE_ACTIONS.join(', ')}. Call it again with one of those.`);
|
|
55
|
+
if (env.mode !== 'local-embedded') {
|
|
56
|
+
throw new Error(`${SCOPE_TOOL} edits what the local graph on this machine reads, and this server reads a hosted Align graph. ` +
|
|
57
|
+
'Use the local Align server (align mcp --env local); a hosted graph reads what its connectors are set up to read.');
|
|
58
|
+
}
|
|
59
|
+
const deps = injected ?? defaultScopeToolDeps(env);
|
|
60
|
+
if (action === 'view')
|
|
61
|
+
return view(deps);
|
|
62
|
+
return set(input, deps, o.agent ?? UNKNOWN_AGENT);
|
|
63
|
+
}
|
|
64
|
+
async function view(deps) {
|
|
65
|
+
const sources = await viewScopes(deps);
|
|
66
|
+
if (sources.length === 0) {
|
|
67
|
+
return { text: 'No source is connected, so there is no scope to show. Connecting needs a token only the person can supply. Ask them to run: align connect <source>', sources: [] };
|
|
68
|
+
}
|
|
69
|
+
const name = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
70
|
+
const lines = sources.map((s) => `${name(s.source)}: ${s.label}${s.origin === 'detected' ? " (from this folder's git remote)" : ''}.`);
|
|
71
|
+
return { text: lines.join('\n'), sources };
|
|
72
|
+
}
|
|
73
|
+
/** The schema says which are lists (projects, teams, spaces) and which are one text value (repo, gitlab_project): hold the input to it. */
|
|
74
|
+
function valueOf(property, v) {
|
|
75
|
+
const one = property === 'repo' || property === 'gitlab_project';
|
|
76
|
+
if (one && typeof v === 'string')
|
|
77
|
+
return v;
|
|
78
|
+
if (!one && Array.isArray(v) && v.every((x) => typeof x === 'string'))
|
|
79
|
+
return v;
|
|
80
|
+
throw new Error(`${SCOPE_TOOL} "${property}" must be ${one ? 'one text value' : 'a list of text values'}.`);
|
|
81
|
+
}
|
|
82
|
+
async function set(input, deps, agent) {
|
|
83
|
+
const source = input['source'];
|
|
84
|
+
if (source === undefined)
|
|
85
|
+
throw new Error(`${SCOPE_TOOL} requires "source" with action "set", one of: ${SCOPE_SOURCES.join(', ')}.`);
|
|
86
|
+
if (typeof source !== 'string' || !SCOPE_SOURCES.includes(source)) {
|
|
87
|
+
throw new Error(`${SCOPE_TOOL} "source" must be one of: ${SCOPE_SOURCES.join(', ')}.`);
|
|
88
|
+
}
|
|
89
|
+
const scope = input['scope'];
|
|
90
|
+
if (scope !== undefined && scope !== 'yours' && scope !== 'team')
|
|
91
|
+
throw new Error(`${SCOPE_TOOL} "scope" must be "yours" or "team".`);
|
|
92
|
+
const wanted = SCOPED_SOURCES.includes(source) ? VALUE_PROPERTY[source] : undefined;
|
|
93
|
+
const given = VALUE_PROPERTIES.filter((p) => input[p] !== undefined);
|
|
94
|
+
const wrong = given.filter((p) => p !== wanted);
|
|
95
|
+
if (wanted !== undefined && wrong.length > 0)
|
|
96
|
+
throw new Error(`${SCOPE_TOOL} for ${source} takes "${wanted}", not "${wrong[0]}".`);
|
|
97
|
+
let change;
|
|
98
|
+
if (scope === 'yours') {
|
|
99
|
+
if (given.length > 0)
|
|
100
|
+
throw new Error(`${SCOPE_TOOL} takes either scope "yours" or a value to read, not both.`);
|
|
101
|
+
change = { scope: 'yours' };
|
|
102
|
+
}
|
|
103
|
+
else if (wanted === undefined) {
|
|
104
|
+
// Zoom, Slack, Notion, Teams: setScope refuses with the honest reason for that source.
|
|
105
|
+
change = { scope: 'team', values: [] };
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
if (input[wanted] === undefined)
|
|
109
|
+
throw new Error(`${SCOPE_TOOL} for ${source} needs "${wanted}" to name what to read, or scope "yours" to go back to the user's own items.`);
|
|
110
|
+
change = { scope: 'team', values: valueOf(wanted, input[wanted]) };
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const r = await setScope(deps, source, change, { via: 'mcp', agent });
|
|
114
|
+
return {
|
|
115
|
+
text: [r.text, r.disclosure].filter((x) => x !== undefined && x !== '').join(' '),
|
|
116
|
+
source: r.source, scope: r.scope, scope_key: r.scopeKey, new_scope: r.newRow, pending: r.pending === true,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
if (e instanceof ScopeRefusal)
|
|
121
|
+
throw new Error(e.message);
|
|
122
|
+
throw e;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=mcp-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-scope.js","sourceRoot":"","sources":["../../src/lib/mcp-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { EnvironmentConfig } from './config.js';
|
|
2
|
+
import { estimateClassify } from './sync/classify.js';
|
|
3
|
+
import { type StatusDeps } from './sync/status.js';
|
|
4
|
+
export declare const SYNC_TOOL = "align_sync";
|
|
5
|
+
export declare const SYNC_ACTIONS: readonly ["status", "run", "classify_estimate"];
|
|
6
|
+
export declare const SYNC_TOOL_SCHEMA: {
|
|
7
|
+
readonly name: "align_sync";
|
|
8
|
+
readonly annotations: {
|
|
9
|
+
readonly readOnlyHint: false;
|
|
10
|
+
readonly destructiveHint: false;
|
|
11
|
+
};
|
|
12
|
+
readonly description: string;
|
|
13
|
+
readonly inputSchema: {
|
|
14
|
+
readonly type: "object";
|
|
15
|
+
readonly properties: {
|
|
16
|
+
readonly action: {
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
readonly enum: readonly ["status", "run", "classify_estimate"];
|
|
19
|
+
readonly description: "What to do";
|
|
20
|
+
};
|
|
21
|
+
readonly source: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly enum: readonly ["github", "jira", "confluence", "slack", "teams", "gitlab", "linear", "notion"];
|
|
24
|
+
readonly description: "With \"run\": only this source. Default: every connected source";
|
|
25
|
+
};
|
|
26
|
+
readonly max: {
|
|
27
|
+
readonly type: "integer";
|
|
28
|
+
readonly minimum: 1;
|
|
29
|
+
readonly maximum: 1000;
|
|
30
|
+
readonly description: "With \"classify_estimate\": how many items the person would classify (default 25)";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
readonly required: readonly ["action"];
|
|
34
|
+
readonly additionalProperties: false;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export interface SyncToolDeps {
|
|
38
|
+
dbPath: string;
|
|
39
|
+
status: StatusDeps;
|
|
40
|
+
needsReauth(source: string): boolean;
|
|
41
|
+
syncRunning(source: string): boolean;
|
|
42
|
+
backfillRunning(source: string): boolean;
|
|
43
|
+
/** Take a slot per source SYNCHRONOUSLY, before the child exists (MCP does not queue calls, so parallel `run`s would all pass
|
|
44
|
+
* the lock check and start a child each). All or none: a refusal names the sources that are taken. */
|
|
45
|
+
reserve?(sources: string[]): {
|
|
46
|
+
ok: true;
|
|
47
|
+
release(): void;
|
|
48
|
+
} | {
|
|
49
|
+
ok: false;
|
|
50
|
+
busy: string[];
|
|
51
|
+
};
|
|
52
|
+
start(sources: string[]): Promise<{
|
|
53
|
+
ok: boolean;
|
|
54
|
+
pid?: number;
|
|
55
|
+
}>;
|
|
56
|
+
estimate: typeof estimateClassify;
|
|
57
|
+
}
|
|
58
|
+
export interface SyncToolResult {
|
|
59
|
+
text: string;
|
|
60
|
+
[k: string]: unknown;
|
|
61
|
+
}
|
|
62
|
+
export declare function defaultSyncDeps(env: EnvironmentConfig): SyncToolDeps;
|
|
63
|
+
export declare function runSyncTool(args: Record<string, unknown> | undefined, env: EnvironmentConfig, injected?: SyncToolDeps): Promise<SyncToolResult>;
|
|
64
|
+
//# sourceMappingURL=mcp-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-sync.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-sync.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKtD,OAAO,EAAkD,KAAK,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAE/G,eAAO,MAAM,SAAS,eAAe,CAAC;AACtC,eAAO,MAAM,YAAY,iDAAkD,CAAC;AAI5E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBnB,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC;2GACuG;IACvG,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,OAAO,IAAI,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC3F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,EAAE,OAAO,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AAEtE,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,GAAG,YAAY,CA+BpE;AAMD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAmDrJ"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L5: the MCP tool `align_sync({ action })` - what the background refresh is doing, start it now,
|
|
3
|
+
* or price the optional AI classification.
|
|
4
|
+
*
|
|
5
|
+
* What it does, and what it cannot:
|
|
6
|
+
* - `status`: per source, scope, last success, status, items last run, discussion pending and
|
|
7
|
+
* skip counts, the manual-refresh note for Teams and the exact re-auth command for a refused
|
|
8
|
+
* token, and how many stored items wait for their links. Never an item's title, text or URL.
|
|
9
|
+
* - `run`: starts the SAME detached child a person gets from `align sync --background` and returns
|
|
10
|
+
* (Decision 9). A tool call never runs a bulk fetch in the MCP server's own process, and it
|
|
11
|
+
* returns inside journey 5's 500 ms. A source already syncing, or being backfilled, is not
|
|
12
|
+
* started twice.
|
|
13
|
+
* - `classify_estimate`: how many LLM calls typing the imported items would cost, and the command
|
|
14
|
+
* for the PERSON to run. There is no action that classifies: spending stays with the human
|
|
15
|
+
* (Decision 16). No LLM call is made, here or by the child `run` starts.
|
|
16
|
+
* - Connecting or re-authenticating needs a token only the person can supply: nothing here takes
|
|
17
|
+
* one. The input schema is closed, so a `token` or `api_key` property is refused before anything runs.
|
|
18
|
+
*/
|
|
19
|
+
import { backfillDir, liveBackfills, pidAlive, readStatus, reserveSlot, statusPath } from './backfill-state.js';
|
|
20
|
+
import { createConfigStore } from './config.js';
|
|
21
|
+
import { BACKFILL_SOURCES } from './mcp-backfill.js';
|
|
22
|
+
import { estimateClassify } from './sync/classify.js';
|
|
23
|
+
import { scopeStatusHooks } from './scope-real.js';
|
|
24
|
+
import { lockHolder } from './sync/lock.js';
|
|
25
|
+
import { startSyncChild } from './sync/spawn-background.js';
|
|
26
|
+
import { readRows } from './sync/sync-state.js';
|
|
27
|
+
import { collectStatus, renderStatus, TEAMS_NOTE } from './sync/status.js';
|
|
28
|
+
export const SYNC_TOOL = 'align_sync';
|
|
29
|
+
export const SYNC_ACTIONS = ['status', 'run', 'classify_estimate'];
|
|
30
|
+
const DEFAULT_ESTIMATE_ITEMS = 25;
|
|
31
|
+
export const SYNC_TOOL_SCHEMA = {
|
|
32
|
+
name: SYNC_TOOL,
|
|
33
|
+
annotations: { readOnlyHint: false, destructiveHint: false },
|
|
34
|
+
description: 'Check on, or start, the refresh of the sources the user has ALREADY connected into the local graph on this machine. ' +
|
|
35
|
+
'action "status" says per source when it last synced, whether it needs the person to re-authenticate, and what is still waiting; use it when the user asks whether the graph is up to date or why something is missing. ' +
|
|
36
|
+
'action "run" starts a background refresh now (it only reads from the sources, makes no LLM calls, and returns at once). ' +
|
|
37
|
+
'action "classify_estimate" says what typing the imported items with the user\'s own AI key would cost, plus the command for the user to run; it cannot start that. ' +
|
|
38
|
+
'It never takes a token or key: for a source that is not connected, or whose saved token was refused, the reply gives the exact `align connect <source>` command for the user to run themselves. Do not ask the user to paste a token into the chat.',
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: {
|
|
42
|
+
action: { type: 'string', enum: [...SYNC_ACTIONS], description: 'What to do' },
|
|
43
|
+
source: { type: 'string', enum: [...BACKFILL_SOURCES], description: 'With "run": only this source. Default: every connected source' },
|
|
44
|
+
max: { type: 'integer', minimum: 1, maximum: 1000, description: 'With "classify_estimate": how many items the person would classify (default 25)' },
|
|
45
|
+
},
|
|
46
|
+
required: ['action'],
|
|
47
|
+
additionalProperties: false,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
export function defaultSyncDeps(env) {
|
|
51
|
+
const dbPath = env.localDbPath;
|
|
52
|
+
if (!dbPath)
|
|
53
|
+
throw new Error('align_sync needs the local graph path, and this server has none configured.');
|
|
54
|
+
const config = createConfigStore();
|
|
55
|
+
const dir = backfillDir();
|
|
56
|
+
const status = {
|
|
57
|
+
dbPath, ...scopeStatusHooks(config),
|
|
58
|
+
isConnected: (id) => Boolean(config.getConnectorFields('local', id)?.['token']),
|
|
59
|
+
syncRunning: (id) => lockHolder(`sync-${id}`) !== undefined,
|
|
60
|
+
backfill: (id) => (dir ? readStatus(statusPath(dir, id)) : null),
|
|
61
|
+
backfillAlive: (s) => s.state === 'running' && pidAlive(s.pid),
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
dbPath, status,
|
|
65
|
+
needsReauth: (id) => readRows(dbPath, id).some((r) => r.status === 'needs_reauth'),
|
|
66
|
+
syncRunning: status.syncRunning,
|
|
67
|
+
backfillRunning: (id) => dir !== null && liveBackfills(dir).some((s) => s.source === id),
|
|
68
|
+
reserve: (sources) => {
|
|
69
|
+
const dir = backfillDir();
|
|
70
|
+
if (dir === null)
|
|
71
|
+
return { ok: false, busy: sources };
|
|
72
|
+
const taken = [];
|
|
73
|
+
for (const s of sources) {
|
|
74
|
+
const r = reserveSlot(dir, s);
|
|
75
|
+
if (!r.ok) {
|
|
76
|
+
for (const t of taken)
|
|
77
|
+
t.release();
|
|
78
|
+
return { ok: false, busy: [s] };
|
|
79
|
+
}
|
|
80
|
+
taken.push(r);
|
|
81
|
+
}
|
|
82
|
+
return { ok: true, release: () => { for (const t of taken)
|
|
83
|
+
t.release(); } };
|
|
84
|
+
},
|
|
85
|
+
start: (sources) => startSyncChild(sources),
|
|
86
|
+
estimate: estimateClassify,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function isAction(v) {
|
|
90
|
+
return typeof v === 'string' && SYNC_ACTIONS.includes(v);
|
|
91
|
+
}
|
|
92
|
+
export async function runSyncTool(args, env, injected) {
|
|
93
|
+
const input = args ?? {};
|
|
94
|
+
const unknownKeys = Object.keys(input).filter((k) => k !== 'action' && k !== 'source' && k !== 'max');
|
|
95
|
+
if (unknownKeys.length) {
|
|
96
|
+
// Names the keys, never their values: a rejected token must not be echoed into the transcript it was typed into.
|
|
97
|
+
const names = unknownKeys.slice(0, 3).map((k) => JSON.stringify(k.slice(0, 16))).join(', ');
|
|
98
|
+
throw new Error(`${SYNC_TOOL} takes only "action", "source" and "max", and does not accept ${names}. ` +
|
|
99
|
+
'It never accepts a token or key: the person connects a source themselves with `align connect <source>`.');
|
|
100
|
+
}
|
|
101
|
+
const action = input['action'];
|
|
102
|
+
if (!isAction(action))
|
|
103
|
+
throw new Error(`${SYNC_TOOL} requires "action", one of: ${SYNC_ACTIONS.join(', ')}. Call it again with one of those.`);
|
|
104
|
+
const source = input['source'];
|
|
105
|
+
if (source !== undefined && (typeof source !== 'string' || !BACKFILL_SOURCES.includes(source))) {
|
|
106
|
+
throw new Error(`${SYNC_TOOL} "source" must be one of: ${BACKFILL_SOURCES.join(', ')}.`);
|
|
107
|
+
}
|
|
108
|
+
const max = input['max'];
|
|
109
|
+
if (max !== undefined && (typeof max !== 'number' || !Number.isInteger(max) || max < 1 || max > 1000)) {
|
|
110
|
+
throw new Error(`${SYNC_TOOL} "max" must be a whole number from 1 to 1000.`);
|
|
111
|
+
}
|
|
112
|
+
if (env.mode !== 'local-embedded') {
|
|
113
|
+
throw new Error(`${SYNC_TOOL} refreshes the local graph on this machine, and this server reads a hosted Align graph. ` +
|
|
114
|
+
'Use the local Align server (align mcp --env local); a hosted graph is refreshed by its connectors.');
|
|
115
|
+
}
|
|
116
|
+
const d = injected ?? defaultSyncDeps(env);
|
|
117
|
+
switch (action) {
|
|
118
|
+
case 'status': {
|
|
119
|
+
const r = collectStatus(d.status);
|
|
120
|
+
return { text: renderStatus(r), sources: r.sources.filter((s) => s.connected), rows_awaiting_relink: r.rows_awaiting_relink };
|
|
121
|
+
}
|
|
122
|
+
case 'run':
|
|
123
|
+
return runAction(typeof source === 'string' ? source : undefined, d);
|
|
124
|
+
case 'classify_estimate': {
|
|
125
|
+
const e = d.estimate(d.dbPath, typeof max === 'number' ? max : DEFAULT_ESTIMATE_ITEMS);
|
|
126
|
+
if (e.available === 0)
|
|
127
|
+
return { text: 'Nothing to classify: no imported item has a close match that is still untyped.', available: 0 };
|
|
128
|
+
if (e.provider === undefined) {
|
|
129
|
+
return {
|
|
130
|
+
text: `${e.available} imported items could be typed, but no AI provider is configured, so there is no estimate. Ask the person to run: align ai`,
|
|
131
|
+
available: e.available,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
text: `Typing ${e.items} of ${e.available} imported items would use up to ${e.calls} LLM calls on your ${e.provider} key. Nothing was sent. To do it, ask the person to run: align sync --classify --max ${e.items}`,
|
|
136
|
+
available: e.available, items: e.items, max_llm_calls: e.calls, command: `align sync --classify --max ${e.items}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function runAction(source, d) {
|
|
142
|
+
const connected = BACKFILL_SOURCES.filter((s) => d.status.isConnected(s));
|
|
143
|
+
const wanted = source !== undefined ? [source] : connected.filter((s) => s !== 'teams');
|
|
144
|
+
if (source !== undefined && !d.status.isConnected(source)) {
|
|
145
|
+
return { started: false, text: `${source} is not connected, so nothing was started. Connecting needs a token only the person can supply. Ask them to run: align connect ${source}` };
|
|
146
|
+
}
|
|
147
|
+
if (source === 'teams') {
|
|
148
|
+
return { started: false, text: `${TEAMS_NOTE} Nothing was started. Ask the person to run: align connect teams` };
|
|
149
|
+
}
|
|
150
|
+
if (wanted.length === 0) {
|
|
151
|
+
return { started: false, text: 'No source is connected, so there is nothing to refresh. Ask the person to run: align connect <source>' };
|
|
152
|
+
}
|
|
153
|
+
const reauth = wanted.filter((s) => d.needsReauth(s));
|
|
154
|
+
const busy = wanted.filter((s) => !reauth.includes(s) && (d.syncRunning(s) || d.backfillRunning(s)));
|
|
155
|
+
const go = wanted.filter((s) => !reauth.includes(s) && !busy.includes(s));
|
|
156
|
+
const notes = [];
|
|
157
|
+
if (reauth.length)
|
|
158
|
+
notes.push(`${reauth.join(', ')} ${reauth.length === 1 ? 'needs' : 'need'} the person to re-authenticate (the provider refused the saved token); ask them to run: ${reauth.map((s) => `align connect ${s}`).join(' ; ')}.`);
|
|
159
|
+
if (busy.length)
|
|
160
|
+
notes.push(`${busy.join(', ')} ${busy.length === 1 ? 'is' : 'are'} already syncing or being backfilled, so nothing new was started for ${busy.length === 1 ? 'it' : 'them'}.`);
|
|
161
|
+
if (go.length === 0)
|
|
162
|
+
return { started: false, text: notes.join(' ') };
|
|
163
|
+
const slot = d.reserve?.(go) ?? { ok: true, release: () => { } };
|
|
164
|
+
if (!slot.ok) {
|
|
165
|
+
return { started: false, text: `${slot.busy.join(', ')} ${slot.busy.length === 1 ? 'is' : 'are'} already being started or backfilled, so nothing new was started. ${notes.join(' ')}`.trim() };
|
|
166
|
+
}
|
|
167
|
+
let started;
|
|
168
|
+
try {
|
|
169
|
+
started = await d.start(go);
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
slot.release();
|
|
173
|
+
}
|
|
174
|
+
if (!started.ok) {
|
|
175
|
+
return { started: false, text: `The background process could not start, so nothing was started. The person can run it themselves: align sync ${go.join(' ')}`.trim() };
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
started: true,
|
|
179
|
+
sources: go,
|
|
180
|
+
text: `Refresh started for ${go.join(', ')}. It runs in the background on this machine, only reads, and makes no LLM calls. Call ${SYNC_TOOL} with action "status" to see how it is going.${notes.length ? ` ${notes.join(' ')}` : ''}`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=mcp-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-sync.js","sourceRoot":"","sources":["../../src/lib/mcp-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* transformers.js asks a custom cache for a Response and hands one back to store. Keyed on the
|
|
3
|
+
* request URL rather than a filename: two different repos can carry the same basename, and the
|
|
4
|
+
* URL is the identity the library itself uses.
|
|
5
|
+
*/
|
|
6
|
+
export declare function modelFileCache(dir: string): {
|
|
7
|
+
match(request: unknown): Promise<Response | undefined>;
|
|
8
|
+
put(request: unknown, response: Response): Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=model-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../../src/lib/model-cache.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM;mBAQjB,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;iBAIzC,OAAO,YAAY,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;EAQjE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The on-disk cache transformers.js reads the embedding model through (local-embeddings-wasm.ts,
|
|
3
|
+
* the binary build). A module of its own so it can be tested without loading the wasm runtime.
|
|
4
|
+
*/
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
6
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { ensurePrivateDir, writePrivateFile } from './private-files.js';
|
|
9
|
+
/**
|
|
10
|
+
* transformers.js asks a custom cache for a Response and hands one back to store. Keyed on the
|
|
11
|
+
* request URL rather than a filename: two different repos can carry the same basename, and the
|
|
12
|
+
* URL is the identity the library itself uses.
|
|
13
|
+
*/
|
|
14
|
+
export function modelFileCache(dir) {
|
|
15
|
+
const keyFor = (request) => {
|
|
16
|
+
const url = typeof request === 'string'
|
|
17
|
+
? request
|
|
18
|
+
: request.url ?? String(request);
|
|
19
|
+
return join(dir, createHash('sha256').update(url).digest('hex').slice(0, 32));
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
async match(request) {
|
|
23
|
+
const path = keyFor(request);
|
|
24
|
+
return existsSync(path) ? new Response(readFileSync(path)) : undefined;
|
|
25
|
+
},
|
|
26
|
+
async put(request, response) {
|
|
27
|
+
// Owner-only like everything else align keeps (private-files.ts), and tightened when an older
|
|
28
|
+
// version left the directory wider.
|
|
29
|
+
ensurePrivateDir(dir);
|
|
30
|
+
// clone() because the caller still needs to read the body it handed us.
|
|
31
|
+
writePrivateFile(keyFor(request), Buffer.from(await response.clone().arrayBuffer()));
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=model-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/lib/model-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAU,EAAE;QAC1C,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ;YACrC,CAAC,CAAC,OAAO;YACT,CAAC,CAAE,OAA4B,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAgB;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,QAAkB;YAC5C,8FAA8F;YAC9F,oCAAoC;YACpC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACtB,wEAAwE;YACxE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-step.d.ts","sourceRoot":"","sources":["../../src/lib/next-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"next-step.d.ts","sourceRoot":"","sources":["../../src/lib/next-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CASpD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEpE;AAED,sHAAsH;AACtH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAGvE;AAmBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIpE;AAOD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,MAAM,CAOT;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAWD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAe/D"}
|
package/dist/lib/next-step.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { envFlag } from './destination-name.js';
|
|
1
2
|
/**
|
|
2
3
|
* The agent detected in this repo's project config leads: it is the one the user is most
|
|
3
4
|
* likely sitting in, since the wizard ran from this repo. Then the rest, deduplicated - Claude
|
|
@@ -60,7 +61,7 @@ export function firstQuestion(firstTitle) {
|
|
|
60
61
|
}
|
|
61
62
|
/** Runnable AS PRINTED: bare `align mcp --setup` wires the cloud default, which is not a local user's graph. */
|
|
62
63
|
function mcpSetupCommand(envName) {
|
|
63
|
-
return
|
|
64
|
+
return `align mcp --setup${envFlag(envName)}`;
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
66
67
|
* The one next action, and it happens in the agent. `inRepo` is the outro (the wizard just
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../src/lib/next-step.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../src/lib/next-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,13 @@ export declare function runPersonalImport(items: PersonalImportItem[], client: R
|
|
|
18
18
|
env: EnvironmentConfig;
|
|
19
19
|
source: string;
|
|
20
20
|
};
|
|
21
|
+
/** L3: filled with what the gateway STORED and how many batches failed, so the capture report
|
|
22
|
+
* can say "imported 20 of 40 (a batch failed)" instead of the fetched count. Untouched when
|
|
23
|
+
* the import throws or the process exits before ingest: the caller treats absence as unknown. */
|
|
24
|
+
result?: {
|
|
25
|
+
stored?: number;
|
|
26
|
+
failedBatches?: number;
|
|
27
|
+
};
|
|
21
28
|
}): Promise<number>;
|
|
22
29
|
/** A single confirm-each candidate: whatever it is, it can render itself for review. */
|
|
23
30
|
export interface ConfirmEachItem {
|