@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,528 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The local graph's schema and its one-time migrations, moved out of local-db.ts verbatim so
|
|
3
|
+
* that file stays under the 900-line limit. local-db.ts re-exports SCHEMA_VERSION, so every
|
|
4
|
+
* existing `import { SCHEMA_VERSION } from './local-db.js'` still resolves.
|
|
5
|
+
*/
|
|
6
|
+
import { bumpRowSetEpoch } from './local-db-epoch.js';
|
|
7
|
+
import { repoFromSourceUrl } from './repo-identity.js';
|
|
8
|
+
import { migrateV7 } from './local-db-v7.js';
|
|
9
|
+
import { migrateV8 } from './local-db-v8.js';
|
|
10
|
+
import { migrateV9 } from './local-db-v9.js';
|
|
11
|
+
import { migrateV10, repairPromotions } from './local-db-v10.js';
|
|
12
|
+
import { migrateV11 } from './local-db-v11.js';
|
|
13
|
+
import { hasDetectorVersion, migrateV12 } from './local-db-v12.js';
|
|
14
|
+
export const SCHEMA = `
|
|
15
|
+
CREATE TABLE IF NOT EXISTS decisions (
|
|
16
|
+
id TEXT PRIMARY KEY,
|
|
17
|
+
title TEXT NOT NULL,
|
|
18
|
+
summary TEXT NOT NULL,
|
|
19
|
+
source_url TEXT,
|
|
20
|
+
platform TEXT NOT NULL DEFAULT 'cli',
|
|
21
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
22
|
+
repo TEXT,
|
|
23
|
+
decided_at TEXT,
|
|
24
|
+
decider_kind TEXT,
|
|
25
|
+
confirmed_by TEXT,
|
|
26
|
+
confirmed_at TEXT,
|
|
27
|
+
ratified_by TEXT,
|
|
28
|
+
ratified_at TEXT
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE TABLE IF NOT EXISTS decision_audit (
|
|
32
|
+
id TEXT PRIMARY KEY,
|
|
33
|
+
decision_id TEXT NOT NULL,
|
|
34
|
+
action TEXT NOT NULL,
|
|
35
|
+
actor TEXT,
|
|
36
|
+
detail TEXT,
|
|
37
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
CREATE TABLE IF NOT EXISTS decision_embeddings (
|
|
41
|
+
decision_id TEXT PRIMARY KEY REFERENCES decisions(id) ON DELETE CASCADE,
|
|
42
|
+
embedding BLOB NOT NULL,
|
|
43
|
+
model TEXT
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
CREATE TABLE IF NOT EXISTS decision_links (
|
|
47
|
+
id TEXT PRIMARY KEY,
|
|
48
|
+
source_id TEXT NOT NULL REFERENCES decisions(id) ON DELETE CASCADE,
|
|
49
|
+
target_id TEXT NOT NULL REFERENCES decisions(id) ON DELETE CASCADE,
|
|
50
|
+
relation TEXT NOT NULL,
|
|
51
|
+
confidence REAL NOT NULL DEFAULT 1.0,
|
|
52
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
CREATE TABLE IF NOT EXISTS decision_refs (
|
|
56
|
+
decision_id TEXT NOT NULL REFERENCES decisions(id) ON DELETE CASCADE,
|
|
57
|
+
ref TEXT NOT NULL,
|
|
58
|
+
platform TEXT NOT NULL,
|
|
59
|
+
PRIMARY KEY (decision_id, ref)
|
|
60
|
+
);
|
|
61
|
+
`;
|
|
62
|
+
/**
|
|
63
|
+
* Schema version this build expects. Bump when adding a step to `migrate`.
|
|
64
|
+
*
|
|
65
|
+
* Exported so a test can assert the migration WROTE the version it claims, without hardcoding
|
|
66
|
+
* the number - a test pinning a literal 1 had to be edited by this change rather than passing
|
|
67
|
+
* or failing on its own merits. A parity test also derives the highest `version <` branch in
|
|
68
|
+
* `migrate` from the source and compares it here, because forgetting the bump leaves the new
|
|
69
|
+
* branch running destructively on every open with nothing to stop it.
|
|
70
|
+
*/
|
|
71
|
+
export const SCHEMA_VERSION = 11;
|
|
72
|
+
/** The title connector-core 0.5.0 gave every Slack thread whose root was deleted. The 0.6.0
|
|
73
|
+
* fetcher titles such a thread from its first human message, or drops it; either way this
|
|
74
|
+
* row is a duplicate-to-be under the (source_url, title) key, or noise. */
|
|
75
|
+
export const SLACK_TOMBSTONE_TITLE = 'This message was deleted.';
|
|
76
|
+
/** The five ALI-831 columns, named exactly as the shared contract spells them. One list,
|
|
77
|
+
* read by the migration; SCHEMA above spells them a second time because a fresh CREATE
|
|
78
|
+
* TABLE cannot read a constant, and the provenance test pins both against each other. */
|
|
79
|
+
const PROVENANCE_COLUMNS = ['decider_kind', 'confirmed_by', 'confirmed_at', 'ratified_by', 'ratified_at'];
|
|
80
|
+
/**
|
|
81
|
+
* ALI-787: the only embedding model this graph has ever written before the `model` column
|
|
82
|
+
* existed. Verified, not assumed - `git log --all -p` on local-embeddings.ts and
|
|
83
|
+
* local-embeddings-wasm.ts shows exactly one HF model id was ever hardcoded there, across
|
|
84
|
+
* every commit. So backfilling every pre-column row with this is a true historical fact,
|
|
85
|
+
* unlike `decided_at` (step 4 below), which genuinely cannot be derived from an existing row.
|
|
86
|
+
*
|
|
87
|
+
* A deliberate LITERAL, not an import of local-embeddings.ts's EMBEDDING_MODEL_ID: this
|
|
88
|
+
* constant names what was true when the column was added, and must stay that value even
|
|
89
|
+
* after a future model swap changes EMBEDDING_MODEL_ID. Migrations are a historical record.
|
|
90
|
+
*/
|
|
91
|
+
const LEGACY_EMBEDDING_MODEL = 'Xenova/all-MiniLM-L6-v2';
|
|
92
|
+
/**
|
|
93
|
+
* One-time data migrations, tracked in SQLite's built-in `user_version`.
|
|
94
|
+
*
|
|
95
|
+
* 1. ALI-503: relabel the cosine-similarity links that were written as `conflicts_with`.
|
|
96
|
+
* Every such row at version 0 is provably an artefact, because `insertLink` had exactly
|
|
97
|
+
* one caller and it hardcoded that relation for any pair over 0.65 cosine. No classifier
|
|
98
|
+
* verdict was ever persisted, so there is no earned row to damage.
|
|
99
|
+
*
|
|
100
|
+
* 2. A decision's `source_url` identifies it, and nothing enforced that: `insertDecision` minted
|
|
101
|
+
* a fresh UUID per call, so re-importing the same commit added a second copy. The documented
|
|
102
|
+
* first run does exactly that - `setup --local` seeds from git, then its own outro tells you
|
|
103
|
+
* to run `align connect git` - so a graph goes from 2 decisions to 4 by following the tips.
|
|
104
|
+
* Collapse the existing duplicates, then make them unrepresentable with a unique index.
|
|
105
|
+
*
|
|
106
|
+
* 3. ALI-798: add the `repo` column (missing on any graph that predates it) and backfill it
|
|
107
|
+
* for every existing row from `source_url`, via the same `repoFromSourceUrl` the importer
|
|
108
|
+
* now stamps new rows with - one reader of the URL shape, used for both. A row whose
|
|
109
|
+
* source is not code (Jira, Slack, a bare capture) stays NULL, which is "unattributed",
|
|
110
|
+
* not "wrong": `--repo` scoping always includes unattributed rows alongside the named
|
|
111
|
+
* repo (see local-gateway-client.ts), so nothing existing becomes invisible.
|
|
112
|
+
*
|
|
113
|
+
* 4. ALI-829: add `decided_at` - when the decision was MADE, from the source's own
|
|
114
|
+
* timestamp, as distinct from `created_at`, the minute this CLI imported it. Every one
|
|
115
|
+
* of the 684 rows in the 2026-09-02 measurement carried the ingest minute and nothing
|
|
116
|
+
* else, so "what changed since March" was unanswerable offline. No backfill, unlike
|
|
117
|
+
* `repo`: a repo is derivable from a stored source_url, and a decision date is not
|
|
118
|
+
* derivable from anything already in the row. A re-import fills it in; inventing one
|
|
119
|
+
* from created_at would write the exact wrong fact this column exists to correct.
|
|
120
|
+
*
|
|
121
|
+
* Same bump, second step: drop the Slack rows titled by a deleted root. The 0.6.0
|
|
122
|
+
* fetcher titles a thread from its first human message, and the dedup key is
|
|
123
|
+
* (source_url, title), so each of those rows would otherwise be re-inserted BESIDE its
|
|
124
|
+
* tombstone twin on the next import (35 of 39 on the 2026-09-02 graph). The next import
|
|
125
|
+
* recreates the real ones with real titles; the ones that were only bot output on a
|
|
126
|
+
* deleted root do not come back, which is the point. Foreign keys are off in this
|
|
127
|
+
* database (see step 2), so the dependent rows are deleted explicitly - including any
|
|
128
|
+
* link a human adjudicated on such a row. That is a real loss, accepted: the row's
|
|
129
|
+
* identity is changing under it, and the re-import classifies the retitled thread
|
|
130
|
+
* afresh. Scoped to platform = 'slack': a git commit or a captured note that happens to
|
|
131
|
+
* carry the same words is not a tombstone and is left alone.
|
|
132
|
+
*
|
|
133
|
+
* 5. ALI-831: add the decider/ratified columns (`decider_kind`, `confirmed_by`,
|
|
134
|
+
* `confirmed_at`, `ratified_by`, `ratified_at`) so an agent-made decision can enter as a
|
|
135
|
+
* CLAIM a human later stands behind, and the `decision_audit` table the human act is
|
|
136
|
+
* recorded in. No backfill, on purpose: a row captured before the column reads as
|
|
137
|
+
* 'unknown', and stamping 'human' on it from its platform would be the retroactive
|
|
138
|
+
* guess align-stack's migration 113 refuses. The columns are added here rather than only
|
|
139
|
+
* in SCHEMA because CREATE TABLE IF NOT EXISTS never alters an existing table.
|
|
140
|
+
*
|
|
141
|
+
* 6. ALI-787: tag each embedding with the model that produced it (see LEGACY_EMBEDDING_MODEL).
|
|
142
|
+
*
|
|
143
|
+
* 7. L2: per-source sync state, `source_key` identity with a backed-up twin merge,
|
|
144
|
+
* `detail_pending`, `enriched_at` (NULL on every existing row) and `local_judgements`.
|
|
145
|
+
* See local-db-v7.ts.
|
|
146
|
+
*
|
|
147
|
+
* The version guard is load-bearing rather than tidiness. The same UPDATE run on every open
|
|
148
|
+
* is indistinguishable from this one today, and starts silently eating genuine conflicts the
|
|
149
|
+
* moment anything writes one.
|
|
150
|
+
*/
|
|
151
|
+
/**
|
|
152
|
+
* Remove a decision and everything hanging off it. Foreign keys are off in this database
|
|
153
|
+
* (see migrate, step 2), so the dependents are named explicitly rather than cascaded. One
|
|
154
|
+
* writer for the v4 tombstone sweep and the ingest-time twin removal (ALI-829).
|
|
155
|
+
*/
|
|
156
|
+
export function deleteDecisionWithDependents(db, id) {
|
|
157
|
+
bumpRowSetEpoch(db);
|
|
158
|
+
db.prepare('DELETE FROM decision_links WHERE source_id = ? OR target_id = ?').run(id, id);
|
|
159
|
+
db.prepare('DELETE FROM decision_refs WHERE decision_id = ?').run(id);
|
|
160
|
+
db.prepare('DELETE FROM decision_embeddings WHERE decision_id = ?').run(id);
|
|
161
|
+
db.prepare('DELETE FROM decision_audit WHERE decision_id = ?').run(id);
|
|
162
|
+
db.prepare('DELETE FROM decisions WHERE id = ?').run(id);
|
|
163
|
+
}
|
|
164
|
+
/** The one downgrade guard: migrate() and every other writer of this file (the sync state, purge) call it. */
|
|
165
|
+
export function assertSchemaSupported(version, db) {
|
|
166
|
+
// R4: an early-branch 12 that differs only by the additive column is not newer (see restampEarlyV12).
|
|
167
|
+
if (version === 12 && db !== undefined && hasDetectorVersion(db))
|
|
168
|
+
return;
|
|
169
|
+
if (version > SCHEMA_VERSION) {
|
|
170
|
+
throw new Error(`This local graph was written by a newer Align CLI (schema v${version}; this CLI supports up to v${SCHEMA_VERSION}). ` +
|
|
171
|
+
'Upgrade the CLI (npm install -g @aligndottech/cli@latest) before opening it.');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Re-review R4: an unreleased build of the detector branch (68cc596) stamped user_version 12 for
|
|
176
|
+
* the detector_version column, which is now an additive step. A 12 whose only difference is that
|
|
177
|
+
* column is put back to 11, inside a write lock, so this CLI and older ones open it. A 12 without
|
|
178
|
+
* the column came from somewhere else and is still refused. The day a real numbered step 12 lands,
|
|
179
|
+
* this must go, or it would hide that step.
|
|
180
|
+
*/
|
|
181
|
+
function restampEarlyV12(db) {
|
|
182
|
+
if (db.prepare('PRAGMA user_version').get().user_version !== 12)
|
|
183
|
+
return;
|
|
184
|
+
db.exec('BEGIN IMMEDIATE');
|
|
185
|
+
try {
|
|
186
|
+
const current = db.prepare('PRAGMA user_version').get().user_version;
|
|
187
|
+
if (current === 12 && hasDetectorVersion(db))
|
|
188
|
+
db.exec('PRAGMA user_version = 11');
|
|
189
|
+
db.exec('COMMIT');
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (db.isTransaction)
|
|
193
|
+
db.exec('ROLLBACK');
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export function migrate(db) {
|
|
198
|
+
restampEarlyV12(db);
|
|
199
|
+
const version = db.prepare('PRAGMA user_version').get().user_version;
|
|
200
|
+
// A newer CLI migrated this file. Running this build's older code against the newer tables
|
|
201
|
+
// (a v6 binary inserting rows without a source_key beside keyed ones) corrupts identity, so
|
|
202
|
+
// refuse before touching anything.
|
|
203
|
+
assertSchemaSupported(version);
|
|
204
|
+
if (version < 1) {
|
|
205
|
+
db.exec(`UPDATE decision_links SET relation = 'relates' WHERE relation = 'conflicts_with'`);
|
|
206
|
+
}
|
|
207
|
+
if (version < 2) {
|
|
208
|
+
// IMMEDIATE, not the default DEFERRED: this transaction reads (the survivor scan) before it
|
|
209
|
+
// writes, and under WAL another writer arriving in between makes the first write fail with
|
|
210
|
+
// SQLITE_BUSY_SNAPSHOT, which busy_timeout does not retry. Every local command opens the DB
|
|
211
|
+
// and the advisory hook fires on every agent edit, so a concurrent open is the normal case.
|
|
212
|
+
db.exec('BEGIN IMMEDIATE');
|
|
213
|
+
try {
|
|
214
|
+
// The survivor is the row inserted FIRST. `rowid` rather than `id` breaks a created_at
|
|
215
|
+
// tie: created_at has one-second granularity so rows written in one import tie routinely,
|
|
216
|
+
// and ordering by a random UUID would keep an arbitrary one while this comment claimed to
|
|
217
|
+
// keep the long-standing id. rowid is insertion order (the table is not WITHOUT ROWID).
|
|
218
|
+
//
|
|
219
|
+
// Keyed on (source_url, title), not source_url alone. Some fetchers emit a CONSTANT
|
|
220
|
+
// source_url when the per-item link is missing - connector-core's Teams fallback is
|
|
221
|
+
// literally 'https://teams.microsoft.com' - and collapsing on the URL alone deleted every
|
|
222
|
+
// such message but one. Two rows sharing a URL AND a title are duplicates by any reading;
|
|
223
|
+
// two sharing only the URL are not.
|
|
224
|
+
db.exec(`
|
|
225
|
+
CREATE TEMP TABLE dedup_survivor AS
|
|
226
|
+
SELECT source_url, title, id FROM (
|
|
227
|
+
SELECT source_url, title, id,
|
|
228
|
+
ROW_NUMBER() OVER (PARTITION BY source_url, title ORDER BY created_at, rowid) AS rn
|
|
229
|
+
FROM decisions WHERE source_url IS NOT NULL
|
|
230
|
+
) WHERE rn = 1;
|
|
231
|
+
|
|
232
|
+
CREATE TEMP TABLE dedup_dropped AS
|
|
233
|
+
SELECT d.id AS id, s.id AS survivor_id
|
|
234
|
+
FROM decisions d JOIN dedup_survivor s
|
|
235
|
+
ON d.source_url = s.source_url AND d.title = s.title
|
|
236
|
+
WHERE d.id <> s.id;
|
|
237
|
+
`);
|
|
238
|
+
// Repoint edges rather than dropping them: an edge naming a duplicate is a real edge that
|
|
239
|
+
// happened to name the copy. Dropping it would lose a relationship the user earned.
|
|
240
|
+
db.exec(`
|
|
241
|
+
UPDATE decision_links SET source_id = (
|
|
242
|
+
SELECT survivor_id FROM dedup_dropped WHERE id = decision_links.source_id
|
|
243
|
+
) WHERE source_id IN (SELECT id FROM dedup_dropped);
|
|
244
|
+
UPDATE decision_links SET target_id = (
|
|
245
|
+
SELECT survivor_id FROM dedup_dropped WHERE id = decision_links.target_id
|
|
246
|
+
) WHERE target_id IN (SELECT id FROM dedup_dropped);
|
|
247
|
+
`);
|
|
248
|
+
// Both cleanups are scoped to the pairs repointing actually touched. An earlier version
|
|
249
|
+
// deduplicated decision_links table-wide, which deleted user-earned edges that had nothing
|
|
250
|
+
// to do with duplication - and kept the lowest UUID rather than the highest confidence.
|
|
251
|
+
db.exec(`
|
|
252
|
+
DELETE FROM decision_links
|
|
253
|
+
WHERE source_id = target_id
|
|
254
|
+
AND (source_id IN (SELECT survivor_id FROM dedup_dropped)
|
|
255
|
+
OR target_id IN (SELECT survivor_id FROM dedup_dropped));
|
|
256
|
+
`);
|
|
257
|
+
// Explicitly, not by CASCADE: SQLite leaves foreign_keys OFF unless asked, so the
|
|
258
|
+
// ON DELETE CASCADE in the schema does not fire and these would be orphaned.
|
|
259
|
+
if (db.prepare('SELECT COUNT(*) AS n FROM dedup_dropped').get().n > 0)
|
|
260
|
+
bumpRowSetEpoch(db);
|
|
261
|
+
db.exec(`DELETE FROM decision_embeddings WHERE decision_id IN (SELECT id FROM dedup_dropped)`);
|
|
262
|
+
db.exec(`DELETE FROM decisions WHERE id IN (SELECT id FROM dedup_dropped)`);
|
|
263
|
+
db.exec(`DROP TABLE dedup_dropped; DROP TABLE dedup_survivor;`);
|
|
264
|
+
// Created here rather than in SCHEMA on purpose: SCHEMA runs before this function, so on
|
|
265
|
+
// any already-duplicated graph the index would fail to build before the collapse could
|
|
266
|
+
// run. A fresh database passes through the same path with nothing to collapse.
|
|
267
|
+
//
|
|
268
|
+
// A distinct name from any previous attempt, because IF NOT EXISTS matches on the NAME
|
|
269
|
+
// only: an index of the same name with different columns would be silently kept, and
|
|
270
|
+
// every later insert would then fail with "ON CONFLICT clause does not match".
|
|
271
|
+
db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS decisions_source_title_unique ON decisions(source_url, title)`);
|
|
272
|
+
// Same story for edges: insertLink's `OR IGNORE` was decorative without a unique index, so
|
|
273
|
+
// a re-import stacked an identical relates row every time. Collapse, then constrain.
|
|
274
|
+
//
|
|
275
|
+
// This one IS table-wide, unavoidably: the index cannot be created while any duplicate
|
|
276
|
+
// triple remains anywhere. Every row it removes duplicates another by definition - same
|
|
277
|
+
// source, same target, same relation. It keeps the HIGHEST confidence rather than the
|
|
278
|
+
// lowest uuid, so the survivor is the best score rather than an arbitrary one.
|
|
279
|
+
db.exec(`
|
|
280
|
+
DELETE FROM decision_links WHERE id NOT IN (
|
|
281
|
+
SELECT id FROM (
|
|
282
|
+
SELECT id, ROW_NUMBER() OVER (
|
|
283
|
+
PARTITION BY source_id, target_id, relation ORDER BY confidence DESC, rowid
|
|
284
|
+
) AS rn FROM decision_links
|
|
285
|
+
) WHERE rn = 1
|
|
286
|
+
);
|
|
287
|
+
`);
|
|
288
|
+
db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS decision_links_triple_unique ON decision_links(source_id, target_id, relation)`);
|
|
289
|
+
// Stamped INSIDE the transaction. Outside it, a process killed between COMMIT and the
|
|
290
|
+
// pragma replays the version-1 relabel on the next open, which turns an adjudicated
|
|
291
|
+
// conflicts_with edge into relates - the exact silent loss the docstring above warns of.
|
|
292
|
+
//
|
|
293
|
+
// Stamps this step's OWN number (2), not SCHEMA_VERSION: a later step (3, below) runs
|
|
294
|
+
// after this one commits, and if a crash lands between the two, `user_version` must
|
|
295
|
+
// still read 2 so the version-3 step is not skipped on the next open.
|
|
296
|
+
db.exec('PRAGMA user_version = 2');
|
|
297
|
+
db.exec('COMMIT');
|
|
298
|
+
}
|
|
299
|
+
catch (err) {
|
|
300
|
+
// Guarded: SQLITE_FULL, IOERR, BUSY, NOMEM and INTERRUPT auto-roll-back, and an
|
|
301
|
+
// unconditional ROLLBACK then throws "no transaction is active" and buries the real
|
|
302
|
+
// cause - so a user whose disk filled mid-migration would be told the wrong thing.
|
|
303
|
+
if (db.isTransaction)
|
|
304
|
+
db.exec('ROLLBACK');
|
|
305
|
+
throw err;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (version < 3) {
|
|
309
|
+
// The column may already exist: a brand-new database's CREATE TABLE (SCHEMA, above)
|
|
310
|
+
// declares `repo` directly, so on a fresh install this ALTER would fail with "duplicate
|
|
311
|
+
// column name" if run unconditionally. A legacy database predates the column entirely.
|
|
312
|
+
const hasRepoColumn = db.prepare('PRAGMA table_info(decisions)').all()
|
|
313
|
+
.some((c) => c.name === 'repo');
|
|
314
|
+
if (!hasRepoColumn) {
|
|
315
|
+
db.exec('ALTER TABLE decisions ADD COLUMN repo TEXT');
|
|
316
|
+
}
|
|
317
|
+
// Backfill every row with no repo yet. JS-side because SQLite has no regex function to
|
|
318
|
+
// apply `repoFromSourceUrl`'s pattern in SQL - and it must be the SAME function the
|
|
319
|
+
// importer stamps new rows with, or a backfilled row and a freshly-imported one for the
|
|
320
|
+
// same URL could disagree about which repo they belong to.
|
|
321
|
+
const rows = db.prepare('SELECT id, source_url FROM decisions WHERE repo IS NULL')
|
|
322
|
+
.all();
|
|
323
|
+
if (rows.length) {
|
|
324
|
+
db.exec('BEGIN IMMEDIATE');
|
|
325
|
+
try {
|
|
326
|
+
const update = db.prepare('UPDATE decisions SET repo = ? WHERE id = ?');
|
|
327
|
+
for (const row of rows) {
|
|
328
|
+
const repo = repoFromSourceUrl(row.source_url);
|
|
329
|
+
// Only WRITE when a repo was found: leaving a non-code row NULL is the correct
|
|
330
|
+
// outcome (unattributed, not "wrong"), and writing NULL over NULL is a no-op
|
|
331
|
+
// this loop can just skip.
|
|
332
|
+
if (repo)
|
|
333
|
+
update.run(repo, row.id);
|
|
334
|
+
}
|
|
335
|
+
db.exec('PRAGMA user_version = 3');
|
|
336
|
+
db.exec('COMMIT');
|
|
337
|
+
}
|
|
338
|
+
catch (err) {
|
|
339
|
+
if (db.isTransaction)
|
|
340
|
+
db.exec('ROLLBACK');
|
|
341
|
+
throw err;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
db.exec('PRAGMA user_version = 3');
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (version < 4) {
|
|
349
|
+
db.exec('BEGIN IMMEDIATE');
|
|
350
|
+
try {
|
|
351
|
+
// Same shape as the `repo` step: a fresh database's CREATE TABLE already declares the
|
|
352
|
+
// column, and a legacy one predates it, so the ALTER is conditional. Checked INSIDE
|
|
353
|
+
// the write lock, unlike step 3: two processes opening a v3 file at once (the
|
|
354
|
+
// advisory hook is the normal concurrent case) could otherwise both read "no column"
|
|
355
|
+
// and the second would die on "duplicate column name". SQLite DDL is transactional.
|
|
356
|
+
const hasDecidedAt = db.prepare('PRAGMA table_info(decisions)').all()
|
|
357
|
+
.some((c) => c.name === 'decided_at');
|
|
358
|
+
if (!hasDecidedAt) {
|
|
359
|
+
db.exec('ALTER TABLE decisions ADD COLUMN decided_at TEXT');
|
|
360
|
+
}
|
|
361
|
+
const tombstones = db.prepare(`SELECT id FROM decisions WHERE platform = 'slack' AND title = ?`).all(SLACK_TOMBSTONE_TITLE);
|
|
362
|
+
for (const { id } of tombstones)
|
|
363
|
+
deleteDecisionWithDependents(db, id);
|
|
364
|
+
// Stamped inside the transaction, for the reason step 2 gives.
|
|
365
|
+
db.exec('PRAGMA user_version = 4');
|
|
366
|
+
db.exec('COMMIT');
|
|
367
|
+
}
|
|
368
|
+
catch (err) {
|
|
369
|
+
if (db.isTransaction)
|
|
370
|
+
db.exec('ROLLBACK');
|
|
371
|
+
throw err;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
if (version < 5) {
|
|
375
|
+
// Inside the write lock, for the reason step 4 gives: two concurrent opens of a v4
|
|
376
|
+
// file must not both read "no column" and race the ALTER.
|
|
377
|
+
db.exec('BEGIN IMMEDIATE');
|
|
378
|
+
try {
|
|
379
|
+
const existing = new Set(db.prepare('PRAGMA table_info(decisions)').all().map((c) => c.name));
|
|
380
|
+
for (const column of PROVENANCE_COLUMNS) {
|
|
381
|
+
if (!existing.has(column))
|
|
382
|
+
db.exec(`ALTER TABLE decisions ADD COLUMN ${column} TEXT`);
|
|
383
|
+
}
|
|
384
|
+
db.exec('PRAGMA user_version = 5');
|
|
385
|
+
db.exec('COMMIT');
|
|
386
|
+
}
|
|
387
|
+
catch (err) {
|
|
388
|
+
if (db.isTransaction)
|
|
389
|
+
db.exec('ROLLBACK');
|
|
390
|
+
throw err;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
if (version < 6) {
|
|
394
|
+
// Inside the write lock, for the reason step 4/5 give: two concurrent opens of a v5
|
|
395
|
+
// file must not both read "no column" and race the ALTER.
|
|
396
|
+
db.exec('BEGIN IMMEDIATE');
|
|
397
|
+
try {
|
|
398
|
+
const hasModel = db.prepare('PRAGMA table_info(decision_embeddings)').all()
|
|
399
|
+
.some((c) => c.name === 'model');
|
|
400
|
+
if (!hasModel) {
|
|
401
|
+
db.exec('ALTER TABLE decision_embeddings ADD COLUMN model TEXT');
|
|
402
|
+
}
|
|
403
|
+
// Every row that predates the column was written by LEGACY_EMBEDDING_MODEL - see its
|
|
404
|
+
// doc comment for how that is verified rather than assumed. Only rows with no tag yet
|
|
405
|
+
// are touched, so re-running this on an already-migrated database is a no-op.
|
|
406
|
+
db.prepare('UPDATE decision_embeddings SET model = ? WHERE model IS NULL').run(LEGACY_EMBEDDING_MODEL);
|
|
407
|
+
db.exec('PRAGMA user_version = 6');
|
|
408
|
+
db.exec('COMMIT');
|
|
409
|
+
}
|
|
410
|
+
catch (err) {
|
|
411
|
+
if (db.isTransaction)
|
|
412
|
+
db.exec('ROLLBACK');
|
|
413
|
+
throw err;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (version < 7) {
|
|
417
|
+
// L2: sync state, source_key with the twin merge, enriched_at, local_judgements. One
|
|
418
|
+
// transaction, IMMEDIATE and stamped inside, for the reasons steps 2 and 4 give. The step
|
|
419
|
+
// itself, and why each part is shaped as it is, lives in local-db-v7.ts.
|
|
420
|
+
//
|
|
421
|
+
// `version` was read BEFORE this lock: a second opener of a v6 file waits here (busy_timeout)
|
|
422
|
+
// while the first migrates, and must then find the work done. Re-read it inside the lock.
|
|
423
|
+
db.exec('BEGIN IMMEDIATE');
|
|
424
|
+
try {
|
|
425
|
+
const current = db.prepare('PRAGMA user_version').get().user_version;
|
|
426
|
+
if (current < 7) {
|
|
427
|
+
migrateV7(db);
|
|
428
|
+
db.exec('PRAGMA user_version = 7');
|
|
429
|
+
}
|
|
430
|
+
db.exec('COMMIT');
|
|
431
|
+
}
|
|
432
|
+
catch (err) {
|
|
433
|
+
if (db.isTransaction)
|
|
434
|
+
db.exec('ROLLBACK');
|
|
435
|
+
throw err;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
if (version < 8) {
|
|
439
|
+
// L5 review: sync cycle state, last_attempt_at, sync_item_state and the purge backups.
|
|
440
|
+
db.exec('BEGIN IMMEDIATE');
|
|
441
|
+
try {
|
|
442
|
+
const current = db.prepare('PRAGMA user_version').get().user_version;
|
|
443
|
+
if (current < 8) {
|
|
444
|
+
migrateV8(db);
|
|
445
|
+
db.exec('PRAGMA user_version = 8');
|
|
446
|
+
}
|
|
447
|
+
db.exec('COMMIT');
|
|
448
|
+
}
|
|
449
|
+
catch (err) {
|
|
450
|
+
if (db.isTransaction)
|
|
451
|
+
db.exec('ROLLBACK');
|
|
452
|
+
throw err;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
if (version < 9) {
|
|
456
|
+
// L5 second review: hole_sig and hole_streak on source_sync.
|
|
457
|
+
db.exec('BEGIN IMMEDIATE');
|
|
458
|
+
try {
|
|
459
|
+
const current = db.prepare('PRAGMA user_version').get().user_version;
|
|
460
|
+
if (current < 9) {
|
|
461
|
+
migrateV9(db);
|
|
462
|
+
db.exec('PRAGMA user_version = 9');
|
|
463
|
+
}
|
|
464
|
+
db.exec('COMMIT');
|
|
465
|
+
}
|
|
466
|
+
catch (err) {
|
|
467
|
+
if (db.isTransaction)
|
|
468
|
+
db.exec('ROLLBACK');
|
|
469
|
+
throw err;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
if (version < 10) {
|
|
473
|
+
// L9: the promotions ledger, and the old `align push` audit rows carried across as legacy rows.
|
|
474
|
+
db.exec('BEGIN IMMEDIATE');
|
|
475
|
+
try {
|
|
476
|
+
const current = db.prepare('PRAGMA user_version').get().user_version;
|
|
477
|
+
if (current < 10) {
|
|
478
|
+
migrateV10(db);
|
|
479
|
+
db.exec('PRAGMA user_version = 10');
|
|
480
|
+
}
|
|
481
|
+
db.exec('COMMIT');
|
|
482
|
+
}
|
|
483
|
+
catch (err) {
|
|
484
|
+
if (db.isTransaction)
|
|
485
|
+
db.exec('ROLLBACK');
|
|
486
|
+
throw err;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
if (version < 11) {
|
|
490
|
+
// ALI-1527: re-key zoom rows after connector-core changed the zoom source key. See local-db-v11.ts.
|
|
491
|
+
db.exec('BEGIN IMMEDIATE');
|
|
492
|
+
try {
|
|
493
|
+
const current = db.prepare('PRAGMA user_version').get().user_version;
|
|
494
|
+
if (current < 11) {
|
|
495
|
+
migrateV11(db);
|
|
496
|
+
db.exec('PRAGMA user_version = 11');
|
|
497
|
+
}
|
|
498
|
+
db.exec('COMMIT');
|
|
499
|
+
}
|
|
500
|
+
catch (err) {
|
|
501
|
+
if (db.isTransaction)
|
|
502
|
+
db.exec('ROLLBACK');
|
|
503
|
+
throw err;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
// A graph an earlier build of this branch stamped v10 (see repairPromotions): runs on every open.
|
|
507
|
+
repairPromotions(db);
|
|
508
|
+
// ADDITIVE steps (review F7): a change an older CLI can live with does not bump user_version,
|
|
509
|
+
// because every older CLI refuses a graph whose user_version is above what it knows. A column
|
|
510
|
+
// with a DEFAULT an older CLI's INSERTs fill correctly is additive; anything an older CLI would
|
|
511
|
+
// write wrongly, or misread, is not, and still takes a numbered step and the refusal.
|
|
512
|
+
if (!hasDetectorVersion(db)) {
|
|
513
|
+
db.exec('BEGIN IMMEDIATE');
|
|
514
|
+
try {
|
|
515
|
+
migrateV12(db); // re-checks the column inside the lock
|
|
516
|
+
db.exec('COMMIT');
|
|
517
|
+
}
|
|
518
|
+
catch (err) {
|
|
519
|
+
if (db.isTransaction)
|
|
520
|
+
db.exec('ROLLBACK');
|
|
521
|
+
throw err;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
if (version < SCHEMA_VERSION) {
|
|
525
|
+
db.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
//# sourceMappingURL=local-db-migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-migrate.js","sourceRoot":"","sources":["../../src/lib/local-db-migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema v10 (L9): the promotions ledger - what this machine has shared to which team workspace.
|
|
3
|
+
*
|
|
4
|
+
* One row per (local decision, environment, workspace). It holds the remote id (to retract), the
|
|
5
|
+
* hash of the payload that was sent (to say "already shared" and to notice an edit), and whether
|
|
6
|
+
* the share MATCHED a decision the team already held (`matched`: a retract must never archive
|
|
7
|
+
* somebody else's decision).
|
|
8
|
+
*
|
|
9
|
+
* There is deliberately NO foreign key to `decisions`: `align local forget` must not erase the only
|
|
10
|
+
* record that lets a person retract a copy that is on the team graph.
|
|
11
|
+
*
|
|
12
|
+
* Old `align push` rows (audit action 'pushed', detail `<env>:<cloudId>`) become 'legacy' rows: they
|
|
13
|
+
* carry no workspace, so a second share of the same decision warns that it may create a second copy
|
|
14
|
+
* instead of pretending the first never happened. Replay-safe: CREATE IF NOT EXISTS, INSERT OR IGNORE.
|
|
15
|
+
*/
|
|
16
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
17
|
+
export declare const PROMOTIONS_TABLE = "\nCREATE TABLE IF NOT EXISTS promotions (\n local_id TEXT NOT NULL,\n env TEXT NOT NULL,\n tenant_id TEXT NOT NULL,\n remote_id TEXT NOT NULL,\n content_hash TEXT NOT NULL,\n matched INTEGER NOT NULL DEFAULT 0,\n client_key TEXT NOT NULL DEFAULT '',\n sent TEXT NOT NULL DEFAULT '[]',\n confirm_pending INTEGER NOT NULL DEFAULT 0,\n shared_at TEXT NOT NULL DEFAULT (datetime('now')),\n retracted_at TEXT,\n PRIMARY KEY (local_id, env, tenant_id)\n);\n";
|
|
18
|
+
export declare function migrateV10(db: DatabaseSync): void;
|
|
19
|
+
/**
|
|
20
|
+
* A graph an EARLIER build of this branch already stamped v10 has `promotions` without the columns v10 grew
|
|
21
|
+
* (`client_key`, `sent`, `confirm_pending`), and the `version < 10` step will never run for it. This repair
|
|
22
|
+
* runs on every open: guarded by table_info, so it is idempotent and a no-op on a current graph. Existing
|
|
23
|
+
* rows keep their values (the defaults say "no key yet, nothing recorded as sent, nothing pending").
|
|
24
|
+
*/
|
|
25
|
+
export declare function repairPromotions(db: DatabaseSync): void;
|
|
26
|
+
/** The columns the ledger code reads and writes, in one place so the share can refuse BEFORE any request. */
|
|
27
|
+
export declare const LEDGER_COLUMNS: readonly ["local_id", "env", "tenant_id", "remote_id", "content_hash", "matched", "client_key", "sent", "confirm_pending", "shared_at", "retracted_at"];
|
|
28
|
+
//# sourceMappingURL=local-db-v10.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v10.d.ts","sourceRoot":"","sources":["../../src/lib/local-db-v10.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,gBAAgB,yfAe5B,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAWjD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAMvD;AAED,6GAA6G;AAC7G,eAAO,MAAM,cAAc,yJAA0J,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const PROMOTIONS_TABLE = `
|
|
2
|
+
CREATE TABLE IF NOT EXISTS promotions (
|
|
3
|
+
local_id TEXT NOT NULL,
|
|
4
|
+
env TEXT NOT NULL,
|
|
5
|
+
tenant_id TEXT NOT NULL,
|
|
6
|
+
remote_id TEXT NOT NULL,
|
|
7
|
+
content_hash TEXT NOT NULL,
|
|
8
|
+
matched INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
client_key TEXT NOT NULL DEFAULT '',
|
|
10
|
+
sent TEXT NOT NULL DEFAULT '[]',
|
|
11
|
+
confirm_pending INTEGER NOT NULL DEFAULT 0,
|
|
12
|
+
shared_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
13
|
+
retracted_at TEXT,
|
|
14
|
+
PRIMARY KEY (local_id, env, tenant_id)
|
|
15
|
+
);
|
|
16
|
+
`;
|
|
17
|
+
export function migrateV10(db) {
|
|
18
|
+
db.exec(PROMOTIONS_TABLE);
|
|
19
|
+
const pushes = db.prepare(`SELECT decision_id, detail FROM decision_audit WHERE action = 'pushed' AND detail IS NOT NULL ORDER BY created_at, rowid`).all();
|
|
20
|
+
const insert = db.prepare(`INSERT OR IGNORE INTO promotions (local_id, env, tenant_id, remote_id, content_hash) VALUES (?, ?, 'legacy', ?, '')`);
|
|
21
|
+
for (const p of pushes) {
|
|
22
|
+
const cut = p.detail.indexOf(':');
|
|
23
|
+
const env = cut > 0 ? p.detail.slice(0, cut) : '';
|
|
24
|
+
const remote = cut > 0 ? p.detail.slice(cut + 1) : '';
|
|
25
|
+
if (env === '' || remote === '')
|
|
26
|
+
continue; // no cloud id recorded: nothing a retract could name
|
|
27
|
+
insert.run(p.decision_id, env, remote);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A graph an EARLIER build of this branch already stamped v10 has `promotions` without the columns v10 grew
|
|
32
|
+
* (`client_key`, `sent`, `confirm_pending`), and the `version < 10` step will never run for it. This repair
|
|
33
|
+
* runs on every open: guarded by table_info, so it is idempotent and a no-op on a current graph. Existing
|
|
34
|
+
* rows keep their values (the defaults say "no key yet, nothing recorded as sent, nothing pending").
|
|
35
|
+
*/
|
|
36
|
+
export function repairPromotions(db) {
|
|
37
|
+
const cols = new Set(db.prepare('PRAGMA table_info(promotions)').all().map((c) => c.name));
|
|
38
|
+
if (cols.size === 0)
|
|
39
|
+
return; // pre-v10: the step itself creates it
|
|
40
|
+
if (!cols.has('client_key'))
|
|
41
|
+
db.exec("ALTER TABLE promotions ADD COLUMN client_key TEXT NOT NULL DEFAULT ''");
|
|
42
|
+
if (!cols.has('sent'))
|
|
43
|
+
db.exec("ALTER TABLE promotions ADD COLUMN sent TEXT NOT NULL DEFAULT '[]'");
|
|
44
|
+
if (!cols.has('confirm_pending'))
|
|
45
|
+
db.exec('ALTER TABLE promotions ADD COLUMN confirm_pending INTEGER NOT NULL DEFAULT 0');
|
|
46
|
+
}
|
|
47
|
+
/** The columns the ledger code reads and writes, in one place so the share can refuse BEFORE any request. */
|
|
48
|
+
export const LEDGER_COLUMNS = ['local_id', 'env', 'tenant_id', 'remote_id', 'content_hash', 'matched', 'client_key', 'sent', 'confirm_pending', 'shared_at', 'retracted_at'];
|
|
49
|
+
//# sourceMappingURL=local-db-v10.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v10.js","sourceRoot":"","sources":["../../src/lib/local-db-v10.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;CAe/B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAgB;IACzC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,0HAA0H,CAAC,CAAC,GAAG,EAAoD,CAAC;IAC9M,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,qHAAqH,CAAC,CAAC;IACjJ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,IAAI,GAAG,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE;YAAE,SAAS,CAAC,qDAAqD;QAChG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAgB;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAE,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxH,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,sCAAsC;IACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IAC9G,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IACpG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;AAC5H,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,CAAU,CAAC"}
|