@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,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema v11 (ALI-1527): re-key zoom rows after connector-core 0.10.1 changed the zoom source key.
|
|
3
|
+
*
|
|
4
|
+
* Until 0.10.1 the key dropped the whole query for zoom, so the gateway's Discover recording URL
|
|
5
|
+
* `https://zoom.us/recording/detail?meeting_id=<uuid>` keyed every meeting to
|
|
6
|
+
* `zoom|https://zoom.us/recording/detail`. The key now keeps `meeting_id`. A graph written by an
|
|
7
|
+
* older build can still hold a row under the collapsed key (the v7 twin merge folded every
|
|
8
|
+
* Discover recording it saw into one such row).
|
|
9
|
+
*
|
|
10
|
+
* What it does: for each zoom row that has a key, recompute the key from the row's own source_url
|
|
11
|
+
* with the current function. Same key: untouched. A key that no longer exists (the URL names no
|
|
12
|
+
* item): cleared, and the row keeps its (source_url, title) identity. A different key that another
|
|
13
|
+
* row already holds: the two are twins, folded with the v7 fold (a ratified or confirmed row
|
|
14
|
+
* survives, everything that named the loser is re-pointed, the loser is backed up). Otherwise the
|
|
15
|
+
* key is rewritten in place, so the id, ratification, judgements and promotions are untouched.
|
|
16
|
+
*
|
|
17
|
+
* It does NOT bring back rows the v7 merge already folded away under the collapsed key: those are
|
|
18
|
+
* in `decisions_merged_backup`, and which of them were distinct meetings is a decision for a person.
|
|
19
|
+
*
|
|
20
|
+
* Replay-safe: a row already on the current key is skipped, so a second pass finds nothing.
|
|
21
|
+
*/
|
|
22
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
23
|
+
export declare function migrateV11(db: DatabaseSync): void;
|
|
24
|
+
//# sourceMappingURL=local-db-v11.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v11.d.ts","sourceRoot":"","sources":["../../src/lib/local-db-v11.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmBjD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { foldTwins } from './local-db-v7.js';
|
|
2
|
+
import { connectorItemKey } from './source-key.js';
|
|
3
|
+
const TWIN_COLUMNS = 'id, rowid, created_at, title, summary, ratified_by, ratified_at, confirmed_by, confirmed_at';
|
|
4
|
+
export function migrateV11(db) {
|
|
5
|
+
const rows = db.prepare(`SELECT id, source_url, source_key FROM decisions WHERE platform = 'zoom' AND source_key IS NOT NULL AND source_url IS NOT NULL ORDER BY rowid`)
|
|
6
|
+
.all();
|
|
7
|
+
for (const row of rows) {
|
|
8
|
+
const next = connectorItemKey('zoom', row.source_url);
|
|
9
|
+
if (next === row.source_key)
|
|
10
|
+
continue;
|
|
11
|
+
if (next === undefined) {
|
|
12
|
+
db.prepare('UPDATE decisions SET source_key = NULL WHERE id = ?').run(row.id);
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
const holder = db.prepare('SELECT id FROM decisions WHERE source_key = ? AND id <> ?').get(next, row.id);
|
|
16
|
+
if (holder === undefined) {
|
|
17
|
+
db.prepare('UPDATE decisions SET source_key = ? WHERE id = ?').run(next, row.id);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const twins = db.prepare(`SELECT ${TWIN_COLUMNS} FROM decisions WHERE id IN (?, ?) ORDER BY rowid`).all(row.id, holder.id);
|
|
21
|
+
// The row holding the right key is the preferred survivor when neither is attested.
|
|
22
|
+
foldTwins(db, twins, next, 'migration', holder.id);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=local-db-v11.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v11.js","sourceRoot":"","sources":["../../src/lib/local-db-v11.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,YAAY,GAAG,6FAA6F,CAAC;AAEnH,MAAM,UAAU,UAAU,CAAC,EAAgB;IACzC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,+IAA+I,CAAC;SACrK,GAAG,EAAmE,CAAC;IAC1E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,IAAI,KAAK,GAAG,CAAC,UAAU;YAAE,SAAS;QACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAA+B,CAAC;QACvI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,YAAY,mDAAmD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAyB,CAAC;QACnJ,oFAAoF;QACpF,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `decision_links.detector_version` (shared detector P3): an ADDITIVE step, not a schema version.
|
|
3
|
+
*
|
|
4
|
+
* Every link that exists when this runs was written by the v0 classifier, the cosine pass, a
|
|
5
|
+
* ref match or a person's mark, so all of them read 'v0'. A link the v1 detector writes is
|
|
6
|
+
* stamped 'v1'. Nothing is re-typed here: relation and confidence are untouched, and the only
|
|
7
|
+
* path that re-types an existing link is the explicit `align local relink`.
|
|
8
|
+
*
|
|
9
|
+
* Review F7: it does NOT bump user_version. An older CLI (0.50.0 refuses anything above 11) keeps
|
|
10
|
+
* opening the graph, and its link INSERTs, which name no detector_version, get the DEFAULT 'v0',
|
|
11
|
+
* which is true of what they write. It runs on every open, in a write lock, only when the column
|
|
12
|
+
* is missing, and re-checks inside the lock so two openers cannot both ALTER.
|
|
13
|
+
*/
|
|
14
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
15
|
+
export declare function hasDetectorVersion(db: DatabaseSync): boolean;
|
|
16
|
+
export declare function migrateV12(db: DatabaseSync): void;
|
|
17
|
+
//# sourceMappingURL=local-db-v12.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v12.d.ts","sourceRoot":"","sources":["../../src/lib/local-db-v12.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAEjD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function hasDetectorVersion(db) {
|
|
2
|
+
return db.prepare('PRAGMA table_info(decision_links)').all().some((c) => c.name === 'detector_version');
|
|
3
|
+
}
|
|
4
|
+
export function migrateV12(db) {
|
|
5
|
+
if (!hasDetectorVersion(db))
|
|
6
|
+
db.exec(`ALTER TABLE decision_links ADD COLUMN detector_version TEXT NOT NULL DEFAULT 'v0'`);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=local-db-v12.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v12.js","sourceRoot":"","sources":["../../src/lib/local-db-v12.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,kBAAkB,CAAC,EAAgB;IACjD,OAAQ,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;AACvI,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAgB;IACzC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;AAC5H,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
export interface TwinRow {
|
|
3
|
+
id: string;
|
|
4
|
+
rowid: number;
|
|
5
|
+
created_at: string;
|
|
6
|
+
title: string;
|
|
7
|
+
summary: string;
|
|
8
|
+
ratified_by: string | null;
|
|
9
|
+
ratified_at: string | null;
|
|
10
|
+
confirmed_by: string | null;
|
|
11
|
+
confirmed_at: string | null;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Fold a set of twins of one item into one row. Survivor: the earliest ratified row, else the
|
|
15
|
+
* earliest confirmed row, else `preferred` (the keyed holder at runtime) or the newest. A row a
|
|
16
|
+
* person ratified or confirmed keeps ITS text and vector: the attestation covers text they
|
|
17
|
+
* read, so newer upstream text is recorded as a `text_revision_pending` audit note instead of
|
|
18
|
+
* replacing it. An unattested survivor holds the newest text already. Either way the survivor
|
|
19
|
+
* keeps the earliest created_at and carries any ratification or confirmation a loser held that
|
|
20
|
+
* it lacks. A SECOND ratified twin with different text is a disagreement between two people:
|
|
21
|
+
* its ratification is kept as a `ratification_conflict` audit row (by, at, text) on the
|
|
22
|
+
* survivor. The local graph has no decision flag column or status surface for that, so the
|
|
23
|
+
* audit row is the visible record. Caller owns the transaction.
|
|
24
|
+
*/
|
|
25
|
+
export declare function foldTwins(db: DatabaseSync, twins: TwinRow[], key: string, actor: string, preferred?: string): void;
|
|
26
|
+
/** Runtime entry: fold the keyless row `twinId` into the row holding `key`, in one transaction
|
|
27
|
+
* (no partial re-points, no duplicate backup row on a retry). */
|
|
28
|
+
export declare function foldKeylessTwin(db: DatabaseSync, twinId: string, holderId: string, key: string): void;
|
|
29
|
+
export declare function migrateV7(db: DatabaseSync): void;
|
|
30
|
+
//# sourceMappingURL=local-db-v7.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v7.d.ts","sourceRoot":"","sources":["../../src/lib/local-db-v7.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyHhD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAClH;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CA0ClH;AAID;kEACkE;AAClE,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAYrG;AAQD,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA8ChD"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema v7 (plan phase L2): one bump for sync state, source identity, enrichment and local
|
|
3
|
+
* judgements. Called from migrate() in local-db-migrate.ts, inside the `version < 7` branch.
|
|
4
|
+
*
|
|
5
|
+
* What it adds:
|
|
6
|
+
* - `source_sync`: one row per (source, scope) - window, watermark, status and who changed it
|
|
7
|
+
* (`changed_via` cli|mcp, plus the agent for mcp). A widened scope is a NEW row, so it starts
|
|
8
|
+
* a fresh window instead of inheriting the narrow scope's watermark.
|
|
9
|
+
* - `decisions.source_key`: the identity of a one-item-per-URL connector item
|
|
10
|
+
* (source-key.ts). (source_url, title) stays the identity of every other row, because a
|
|
11
|
+
* session transcript or a manual capture can hold several decisions under one URL.
|
|
12
|
+
* - `decisions.detail_pending`: 1 while a GitHub item's discussion has not been fetched yet.
|
|
13
|
+
* - `decisions.enriched_at`: set by ingestOne as its LAST write, after the link pass. NULL on
|
|
14
|
+
* every row that exists at upgrade, on purpose: nothing on disk tells a finished ingest from
|
|
15
|
+
* one that died between embedding and linking, so every row is re-linked once by the next
|
|
16
|
+
* sync (Decision 30). The migration itself does no re-linking, so it stays fast.
|
|
17
|
+
* - `local_judgements`: a person's verdict on a decision, with judge, time and cli|mcp origin.
|
|
18
|
+
* No foreign key to `decisions`, like C7's `promotions`: a purge must not erase a record the
|
|
19
|
+
* user may still want to share. Ratification is not here (Decision 14).
|
|
20
|
+
* - `decisions_merged_backup`, `decision_embeddings_merged_backup`, `decision_refs_merged_backup`:
|
|
21
|
+
* every decision row the twin merge deletes, with that row's vector and refs. That is what a
|
|
22
|
+
* restore can recover (INSERT ... SELECT the three back). It is NOT a full undo: links, audit
|
|
23
|
+
* rows, local judgements and promotions that named a loser were RE-POINTED at the survivor
|
|
24
|
+
* (a link between two twins, and a duplicate link's lower confidence, were dropped), and are
|
|
25
|
+
* not copied anywhere. A restored loser comes back without them.
|
|
26
|
+
*
|
|
27
|
+
* Twin merge (Decision 3). v6 keyed rows on (source_url, title), so an edited PR or issue title
|
|
28
|
+
* wrote a second row for the same item. Rows sharing a source_key are merged: the survivor is
|
|
29
|
+
* the first ratified row, else the first confirmed row, else the most recently inserted. An
|
|
30
|
+
* unattested survivor holds the newest text (it is the newest row). An attested survivor KEEPS
|
|
31
|
+
* its own text and vector, and the newer text is stored as a `text_revision_pending` audit note
|
|
32
|
+
* (mergeGroup). Everything that named a loser is re-pointed; a link between two twins is dropped
|
|
33
|
+
* rather than turned into a self-link; a duplicate link keeps the higher confidence.
|
|
34
|
+
*
|
|
35
|
+
* Replay-safe: every CREATE is IF NOT EXISTS, every ALTER is guarded by table_info, keys are
|
|
36
|
+
* computed only where NULL, and a second pass finds no group of twins left to merge.
|
|
37
|
+
*/
|
|
38
|
+
import { copyRowsToBackup } from './backup-copy.js';
|
|
39
|
+
import { bumpRowSetEpoch } from './local-db-epoch.js';
|
|
40
|
+
import { isCaptureShaped } from './local-ingest.js';
|
|
41
|
+
import { connectorItemKey } from './source-key.js';
|
|
42
|
+
const V7_TABLES = `
|
|
43
|
+
CREATE TABLE IF NOT EXISTS source_sync (
|
|
44
|
+
source_id TEXT NOT NULL,
|
|
45
|
+
scope_key TEXT NOT NULL,
|
|
46
|
+
scope TEXT NOT NULL CHECK (scope IN ('yours', 'team')),
|
|
47
|
+
window_since TEXT,
|
|
48
|
+
high_water TEXT,
|
|
49
|
+
pending_until TEXT,
|
|
50
|
+
status TEXT NOT NULL DEFAULT 'ok' CHECK (status IN ('ok', 'partial', 'needs_reauth', 'error')),
|
|
51
|
+
last_started_at TEXT,
|
|
52
|
+
last_success_at TEXT,
|
|
53
|
+
items_last_run INTEGER,
|
|
54
|
+
skips_last_run TEXT,
|
|
55
|
+
changed_via TEXT CHECK (changed_via IS NULL OR changed_via IN ('cli', 'mcp')),
|
|
56
|
+
changed_by_agent TEXT,
|
|
57
|
+
PRIMARY KEY (source_id, scope_key)
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE TABLE IF NOT EXISTS local_judgements (
|
|
61
|
+
id TEXT PRIMARY KEY,
|
|
62
|
+
decision_id TEXT NOT NULL,
|
|
63
|
+
counterpart_id TEXT,
|
|
64
|
+
context_key TEXT,
|
|
65
|
+
kind TEXT NOT NULL CHECK (kind IN ('conflict_verdict', 'check_verdict', 'supersede', 'not_a_decision', 'note')),
|
|
66
|
+
value TEXT CHECK (value IS NULL OR value IN ('real', 'false')),
|
|
67
|
+
note TEXT,
|
|
68
|
+
judge_id TEXT NOT NULL,
|
|
69
|
+
judge_label TEXT,
|
|
70
|
+
via TEXT NOT NULL CHECK (via IN ('cli', 'mcp')),
|
|
71
|
+
agent_id TEXT,
|
|
72
|
+
judged_at TEXT NOT NULL,
|
|
73
|
+
CHECK ((via = 'mcp') = (agent_id IS NOT NULL)),
|
|
74
|
+
CHECK ((kind = 'check_verdict') = (context_key IS NOT NULL))
|
|
75
|
+
);
|
|
76
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_local_judgements_person
|
|
77
|
+
ON local_judgements (decision_id, COALESCE(counterpart_id, context_key, decision_id), judge_id, kind)
|
|
78
|
+
WHERE kind <> 'note';
|
|
79
|
+
`;
|
|
80
|
+
/** Created LAST: the source_key index cannot build while twins still share a key. */
|
|
81
|
+
const V7_INDEXES = `
|
|
82
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_decisions_source_key ON decisions(source_key) WHERE source_key IS NOT NULL;
|
|
83
|
+
CREATE INDEX IF NOT EXISTS idx_decisions_detail_pending ON decisions(platform, decided_at) WHERE detail_pending = 1;
|
|
84
|
+
CREATE INDEX IF NOT EXISTS idx_decisions_not_enriched ON decisions(created_at) WHERE enriched_at IS NULL;
|
|
85
|
+
`;
|
|
86
|
+
const V7_COLUMNS = [
|
|
87
|
+
['source_key', 'source_key TEXT'],
|
|
88
|
+
['detail_pending', 'detail_pending INTEGER NOT NULL DEFAULT 0'],
|
|
89
|
+
['enriched_at', 'enriched_at TEXT'],
|
|
90
|
+
];
|
|
91
|
+
function tableExists(db, name) {
|
|
92
|
+
return db.prepare(`SELECT 1 AS hit FROM sqlite_master WHERE type = 'table' AND name = ?`).get(name) !== undefined;
|
|
93
|
+
}
|
|
94
|
+
function columnsOf(db, table) {
|
|
95
|
+
return new Set(db.prepare(`PRAGMA table_info(${table})`).all().map(c => c.name));
|
|
96
|
+
}
|
|
97
|
+
/** Rows naming `from` now name `to`. A row whose re-pointed key already exists is left on the
|
|
98
|
+
* loser's id (the loser is in the backup table), never deleted: losing a record is the
|
|
99
|
+
* destructive direction, and an orphan pointing at a backed-up row can still be restored. */
|
|
100
|
+
function repoint(db, table, column, from, to) {
|
|
101
|
+
db.prepare(`UPDATE OR IGNORE ${table} SET ${column} = ? WHERE ${column} = ?`).run(to, from);
|
|
102
|
+
}
|
|
103
|
+
function repointLinks(db, loser, survivor, group) {
|
|
104
|
+
const links = db.prepare(`SELECT id, source_id AS s, target_id AS t, relation, confidence FROM decision_links WHERE source_id = ? OR target_id = ?`)
|
|
105
|
+
.all(loser, loser);
|
|
106
|
+
for (const link of links) {
|
|
107
|
+
const s = link.s === loser ? survivor : link.s;
|
|
108
|
+
const t = link.t === loser ? survivor : link.t;
|
|
109
|
+
// A link between two twins of one item would become a self-link: drop it.
|
|
110
|
+
if (s === t || (group.has(s) && group.has(t))) {
|
|
111
|
+
db.prepare('DELETE FROM decision_links WHERE id = ?').run(link.id);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const existing = db.prepare('SELECT id FROM decision_links WHERE source_id = ? AND target_id = ? AND relation = ?')
|
|
115
|
+
.get(s, t, link.relation);
|
|
116
|
+
if (existing) {
|
|
117
|
+
db.prepare('UPDATE decision_links SET confidence = MAX(confidence, ?) WHERE id = ?').run(link.confidence, existing.id);
|
|
118
|
+
db.prepare('DELETE FROM decision_links WHERE id = ?').run(link.id);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
db.prepare('UPDATE decision_links SET source_id = ?, target_id = ? WHERE id = ?').run(s, t, link.id);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Fold one twin into its survivor: back the row up, re-point everything that named it, delete
|
|
126
|
+
* it. The loser's vector is dropped: the survivor keeps its own text, so it keeps its own
|
|
127
|
+
* vector (a survivor that takes newer text is the newest row, which already holds that
|
|
128
|
+
* text's vector). Also used by insertDecision to absorb a keyless row written by an older
|
|
129
|
+
* binary. */
|
|
130
|
+
function absorbLoser(db, loserId, survivorId, group, actor) {
|
|
131
|
+
bumpRowSetEpoch(db);
|
|
132
|
+
const hasJudgements = tableExists(db, 'local_judgements');
|
|
133
|
+
const hasPromotions = tableExists(db, 'promotions');
|
|
134
|
+
copyRowsToBackup(db, 'decisions', 'decisions_merged_backup', 'id', loserId);
|
|
135
|
+
copyRowsToBackup(db, 'decision_embeddings', 'decision_embeddings_merged_backup', 'decision_id', loserId);
|
|
136
|
+
copyRowsToBackup(db, 'decision_refs', 'decision_refs_merged_backup', 'decision_id', loserId);
|
|
137
|
+
repoint(db, 'decision_audit', 'decision_id', loserId, survivorId);
|
|
138
|
+
repointLinks(db, loserId, survivorId, group);
|
|
139
|
+
repoint(db, 'decision_refs', 'decision_id', loserId, survivorId);
|
|
140
|
+
if (hasJudgements) {
|
|
141
|
+
repoint(db, 'local_judgements', 'decision_id', loserId, survivorId);
|
|
142
|
+
repoint(db, 'local_judgements', 'counterpart_id', loserId, survivorId);
|
|
143
|
+
}
|
|
144
|
+
if (hasPromotions)
|
|
145
|
+
repoint(db, 'promotions', 'local_id', loserId, survivorId);
|
|
146
|
+
// Refs the survivor already had stay as they are; the loser's leftovers are duplicates.
|
|
147
|
+
db.prepare('DELETE FROM decision_refs WHERE decision_id = ?').run(loserId);
|
|
148
|
+
db.prepare('DELETE FROM decision_embeddings WHERE decision_id = ?').run(loserId);
|
|
149
|
+
db.prepare('DELETE FROM decisions WHERE id = ?').run(loserId);
|
|
150
|
+
db.prepare(`INSERT INTO decision_audit (id, decision_id, action, actor, detail) VALUES (lower(hex(randomblob(16))), ?, 'merged', ?, ?)`)
|
|
151
|
+
.run(survivorId, actor, loserId);
|
|
152
|
+
}
|
|
153
|
+
/** Earliest first by the attestation time, ties by insertion order. */
|
|
154
|
+
function earliestBy(twins, at) {
|
|
155
|
+
return twins.filter(t => t[at] !== null)
|
|
156
|
+
.sort((a, b) => (a[at] < b[at] ? -1 : a[at] > b[at] ? 1 : a.rowid - b.rowid));
|
|
157
|
+
}
|
|
158
|
+
const auditInsert = `INSERT INTO decision_audit (id, decision_id, action, actor, detail) VALUES (lower(hex(randomblob(16))), ?, ?, ?, ?)`;
|
|
159
|
+
/**
|
|
160
|
+
* Fold a set of twins of one item into one row. Survivor: the earliest ratified row, else the
|
|
161
|
+
* earliest confirmed row, else `preferred` (the keyed holder at runtime) or the newest. A row a
|
|
162
|
+
* person ratified or confirmed keeps ITS text and vector: the attestation covers text they
|
|
163
|
+
* read, so newer upstream text is recorded as a `text_revision_pending` audit note instead of
|
|
164
|
+
* replacing it. An unattested survivor holds the newest text already. Either way the survivor
|
|
165
|
+
* keeps the earliest created_at and carries any ratification or confirmation a loser held that
|
|
166
|
+
* it lacks. A SECOND ratified twin with different text is a disagreement between two people:
|
|
167
|
+
* its ratification is kept as a `ratification_conflict` audit row (by, at, text) on the
|
|
168
|
+
* survivor. The local graph has no decision flag column or status surface for that, so the
|
|
169
|
+
* audit row is the visible record. Caller owns the transaction.
|
|
170
|
+
*/
|
|
171
|
+
export function foldTwins(db, twins, key, actor, preferred) {
|
|
172
|
+
const newest = twins[twins.length - 1];
|
|
173
|
+
const ratifiedAll = earliestBy(twins, 'ratified_at');
|
|
174
|
+
const ratified = ratifiedAll[0];
|
|
175
|
+
const confirmed = earliestBy(twins, 'confirmed_at')[0];
|
|
176
|
+
const attested = ratified ?? confirmed;
|
|
177
|
+
const survivor = attested ?? twins.find(t => t.id === preferred) ?? newest;
|
|
178
|
+
const group = new Set(twins.map(t => t.id));
|
|
179
|
+
const earliestCreated = twins.map(t => t.created_at).sort()[0];
|
|
180
|
+
const latest = db.prepare('SELECT source_url, repo, decided_at FROM decisions WHERE id = ?')
|
|
181
|
+
.get(newest.id);
|
|
182
|
+
for (const loser of twins.filter(t => t.id !== survivor.id))
|
|
183
|
+
absorbLoser(db, loser.id, survivor.id, group, actor);
|
|
184
|
+
const others = ratifiedAll.slice(1).filter(t => t.id !== survivor.id);
|
|
185
|
+
const conflicts = others.filter(t => t.title !== survivor.title || t.summary !== survivor.summary);
|
|
186
|
+
// A second ratifier of the SAME text: their ratification would otherwise exist only in the backup.
|
|
187
|
+
for (const t of others.filter(o => !conflicts.includes(o))) {
|
|
188
|
+
db.prepare(auditInsert).run(survivor.id, 'ratification_agreed', actor, JSON.stringify({ by: t.ratified_by, at: t.ratified_at }));
|
|
189
|
+
}
|
|
190
|
+
for (const c of conflicts) {
|
|
191
|
+
db.prepare(auditInsert).run(survivor.id, 'ratification_conflict', actor, JSON.stringify({ by: c.ratified_by, at: c.ratified_at, title: c.title, summary: c.summary }));
|
|
192
|
+
}
|
|
193
|
+
if (attested === undefined) {
|
|
194
|
+
db.prepare('UPDATE decisions SET source_url = ?, repo = COALESCE(?, repo), decided_at = COALESCE(?, decided_at) WHERE id = ?')
|
|
195
|
+
.run(latest.source_url, latest.repo, latest.decided_at, survivor.id);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
db.prepare('UPDATE decisions SET repo = COALESCE(?, repo), decided_at = COALESCE(?, decided_at) WHERE id = ?')
|
|
199
|
+
.run(latest.repo, latest.decided_at, survivor.id);
|
|
200
|
+
const covered = conflicts.some(c => c.id === newest.id);
|
|
201
|
+
if (newest.id !== survivor.id && !covered && (newest.title !== survivor.title || newest.summary !== survivor.summary)) {
|
|
202
|
+
db.prepare(auditInsert).run(survivor.id, 'text_revision_pending', actor, JSON.stringify({ title: newest.title, summary: newest.summary }));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
db.prepare(`UPDATE decisions SET created_at = ?, source_key = ?,
|
|
206
|
+
ratified_by = COALESCE(ratified_by, ?), ratified_at = COALESCE(ratified_at, ?),
|
|
207
|
+
confirmed_by = COALESCE(confirmed_by, ?), confirmed_at = COALESCE(confirmed_at, ?)
|
|
208
|
+
WHERE id = ?`).run(earliestCreated, key, ratified?.ratified_by ?? null, ratified?.ratified_at ?? null, confirmed?.confirmed_by ?? null, confirmed?.confirmed_at ?? null, survivor.id);
|
|
209
|
+
}
|
|
210
|
+
const TWIN_COLUMNS = 'id, rowid, created_at, title, summary, ratified_by, ratified_at, confirmed_by, confirmed_at';
|
|
211
|
+
/** Runtime entry: fold the keyless row `twinId` into the row holding `key`, in one transaction
|
|
212
|
+
* (no partial re-points, no duplicate backup row on a retry). */
|
|
213
|
+
export function foldKeylessTwin(db, twinId, holderId, key) {
|
|
214
|
+
const own = !db.isTransaction;
|
|
215
|
+
if (own)
|
|
216
|
+
db.exec('BEGIN IMMEDIATE');
|
|
217
|
+
try {
|
|
218
|
+
const twins = db.prepare(`SELECT ${TWIN_COLUMNS} FROM decisions WHERE id IN (?, ?) ORDER BY rowid`)
|
|
219
|
+
.all(twinId, holderId);
|
|
220
|
+
foldTwins(db, twins, key, 'sync', holderId);
|
|
221
|
+
if (own)
|
|
222
|
+
db.exec('COMMIT');
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
if (own && db.isTransaction)
|
|
226
|
+
db.exec('ROLLBACK');
|
|
227
|
+
throw err;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function mergeGroup(db, key) {
|
|
231
|
+
const twins = db.prepare(`SELECT ${TWIN_COLUMNS} FROM decisions WHERE source_key = ? ORDER BY rowid`)
|
|
232
|
+
.all(key);
|
|
233
|
+
foldTwins(db, twins, key, 'migration');
|
|
234
|
+
}
|
|
235
|
+
export function migrateV7(db) {
|
|
236
|
+
const existing = columnsOf(db, 'decisions');
|
|
237
|
+
for (const [name, ddl] of V7_COLUMNS) {
|
|
238
|
+
if (!existing.has(name))
|
|
239
|
+
db.exec(`ALTER TABLE decisions ADD COLUMN ${ddl}`);
|
|
240
|
+
}
|
|
241
|
+
db.exec(V7_TABLES);
|
|
242
|
+
// After the ALTERs, so the backup carries every column a row can hold.
|
|
243
|
+
db.exec('CREATE TABLE IF NOT EXISTS decisions_merged_backup AS SELECT * FROM decisions WHERE 0');
|
|
244
|
+
db.exec('CREATE TABLE IF NOT EXISTS decision_embeddings_merged_backup AS SELECT * FROM decision_embeddings WHERE 0');
|
|
245
|
+
db.exec('CREATE TABLE IF NOT EXISTS decision_refs_merged_backup AS SELECT * FROM decision_refs WHERE 0');
|
|
246
|
+
// Only rows that look like connector imports are keyed. A v6 row cannot say how it was
|
|
247
|
+
// written, and `align capture <PR url>` wrote platform github too, so the rule is on the
|
|
248
|
+
// row: a capture has the summary "Captured from <host>" or the URL's last path segment as
|
|
249
|
+
// its title (isCaptureShaped). Those stay unkeyed. When unsure, do not merge: the cost of
|
|
250
|
+
// a missed twin is a duplicate the next sync can still resolve, the cost of a wrong merge
|
|
251
|
+
// is a lost record.
|
|
252
|
+
const unkeyed = db.prepare('SELECT id, platform, source_url, title, summary FROM decisions WHERE source_key IS NULL AND source_url IS NOT NULL')
|
|
253
|
+
.all();
|
|
254
|
+
const setKey = db.prepare('UPDATE decisions SET source_key = ? WHERE id = ?');
|
|
255
|
+
for (const row of unkeyed) {
|
|
256
|
+
if (isCaptureShaped(row))
|
|
257
|
+
continue;
|
|
258
|
+
const key = connectorItemKey(row.platform, row.source_url);
|
|
259
|
+
if (key !== undefined)
|
|
260
|
+
setKey.run(key, row.id);
|
|
261
|
+
}
|
|
262
|
+
// Non-unique and temporary: the unique index cannot exist while twins share a key, and
|
|
263
|
+
// without any index each group's `WHERE source_key = ?` scanned the whole table.
|
|
264
|
+
db.exec('CREATE INDEX IF NOT EXISTS tmp_v7_key ON decisions(source_key)');
|
|
265
|
+
const groups = db.prepare('SELECT source_key AS k FROM decisions WHERE source_key IS NOT NULL GROUP BY source_key HAVING count(*) > 1')
|
|
266
|
+
.all();
|
|
267
|
+
// The fold looks up links by target, audit rows and judgements by decision for every loser;
|
|
268
|
+
// none of those has an index (links are indexed by source only), so 3k merges scanned the
|
|
269
|
+
// tables 3k times. Temporary, created inside the migration's transaction and dropped with it.
|
|
270
|
+
const temp = [
|
|
271
|
+
'CREATE INDEX IF NOT EXISTS tmp_v7_links_target ON decision_links(target_id)',
|
|
272
|
+
'CREATE INDEX IF NOT EXISTS tmp_v7_audit_decision ON decision_audit(decision_id)',
|
|
273
|
+
'CREATE INDEX IF NOT EXISTS tmp_v7_judgements_counterpart ON local_judgements(counterpart_id)',
|
|
274
|
+
];
|
|
275
|
+
if (groups.length > 0)
|
|
276
|
+
for (const ddl of temp)
|
|
277
|
+
db.exec(ddl);
|
|
278
|
+
for (const { k } of groups)
|
|
279
|
+
mergeGroup(db, k);
|
|
280
|
+
for (const name of ['tmp_v7_key', 'tmp_v7_links_target', 'tmp_v7_audit_decision', 'tmp_v7_judgements_counterpart']) {
|
|
281
|
+
db.exec(`DROP INDEX IF EXISTS ${name}`);
|
|
282
|
+
}
|
|
283
|
+
db.exec(V7_INDEXES);
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=local-db-v7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v7.js","sourceRoot":"","sources":["../../src/lib/local-db-v7.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema v8 (L5 review): the sync's own state moves into the migration system.
|
|
3
|
+
*
|
|
4
|
+
* - `source_sync.cycle_top`: the newest `updated_at` seen across a pending cycle (a read a ceiling
|
|
5
|
+
* split over several runs), kept in the scope's own row so another scope's items can never
|
|
6
|
+
* lift this scope's watermark.
|
|
7
|
+
* - `source_sync.last_attempt_at`: every run stamps it; `last_success_at` is stamped only by a
|
|
8
|
+
* COMPLETE run, so a source that is always partial no longer reads as freshly synced.
|
|
9
|
+
* - `sync_item_state`: the vendor's own last-updated time per stored item and scope (hot Slack
|
|
10
|
+
* threads). A cache of vendor facts, rebuilt by the next wide read. An earlier, unreleased shape
|
|
11
|
+
* of this table (no scope column, created outside the migrations) is replaced and its rows carried across.
|
|
12
|
+
* - `*_purged_backup`: every row `align local forget --purge` deletes is copied here first, with its
|
|
13
|
+
* vector and refs, inside the same transaction. Links, audit rows and judgements of a purged
|
|
14
|
+
* row are not copied (a purge never touches a row that has an audit act or a judgement).
|
|
15
|
+
*
|
|
16
|
+
* An earlier, unreleased shape of `sync_item_state` (no scope column) keeps its rows, as scope 'yours'.
|
|
17
|
+
*
|
|
18
|
+
* Replay-safe: every ALTER is guarded by table_info, every CREATE is IF NOT EXISTS.
|
|
19
|
+
*/
|
|
20
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
21
|
+
export declare function migrateV8(db: DatabaseSync): void;
|
|
22
|
+
//# sourceMappingURL=local-db-v8.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v8.d.ts","sourceRoot":"","sources":["../../src/lib/local-db-v8.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA0BhD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function columnsOf(db, table) {
|
|
2
|
+
return new Set(db.prepare(`PRAGMA table_info(${table})`).all().map((c) => c.name));
|
|
3
|
+
}
|
|
4
|
+
export function migrateV8(db) {
|
|
5
|
+
const sync = columnsOf(db, 'source_sync');
|
|
6
|
+
for (const [name, ddl] of [['cycle_top', 'cycle_top TEXT'], ['last_attempt_at', 'last_attempt_at TEXT']]) {
|
|
7
|
+
if (!sync.has(name))
|
|
8
|
+
db.exec(`ALTER TABLE source_sync ADD COLUMN ${ddl}`);
|
|
9
|
+
}
|
|
10
|
+
// An earlier, unreleased shape (no scope column, created outside the migrations) is set aside and its rows
|
|
11
|
+
// carried across as scope 'yours', the only scope that ever wrote them.
|
|
12
|
+
const state = columnsOf(db, 'sync_item_state');
|
|
13
|
+
const legacy = state.size > 0 && !state.has('scope_key');
|
|
14
|
+
if (legacy)
|
|
15
|
+
db.exec('ALTER TABLE sync_item_state RENAME TO sync_item_state_unscoped');
|
|
16
|
+
db.exec(`CREATE TABLE IF NOT EXISTS sync_item_state (
|
|
17
|
+
decision_id TEXT NOT NULL,
|
|
18
|
+
scope_key TEXT NOT NULL DEFAULT 'yours',
|
|
19
|
+
platform TEXT NOT NULL,
|
|
20
|
+
updated_at TEXT NOT NULL,
|
|
21
|
+
PRIMARY KEY (decision_id, scope_key)
|
|
22
|
+
)`);
|
|
23
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_sync_item_state_platform ON sync_item_state(platform)');
|
|
24
|
+
if (legacy) {
|
|
25
|
+
db.exec(`INSERT OR IGNORE INTO sync_item_state (decision_id, scope_key, platform, updated_at)
|
|
26
|
+
SELECT decision_id, 'yours', platform, updated_at FROM sync_item_state_unscoped`);
|
|
27
|
+
db.exec('DROP TABLE sync_item_state_unscoped');
|
|
28
|
+
}
|
|
29
|
+
db.exec('CREATE TABLE IF NOT EXISTS decisions_purged_backup AS SELECT * FROM decisions WHERE 0');
|
|
30
|
+
db.exec('CREATE TABLE IF NOT EXISTS decision_embeddings_purged_backup AS SELECT * FROM decision_embeddings WHERE 0');
|
|
31
|
+
db.exec('CREATE TABLE IF NOT EXISTS decision_refs_purged_backup AS SELECT * FROM decision_refs WHERE 0');
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=local-db-v8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v8.js","sourceRoot":"","sources":["../../src/lib/local-db-v8.ts"],"names":[],"mappings":"AAqBA,SAAS,SAAS,CAAC,EAAgB,EAAE,KAAa;IAChD,OAAO,IAAI,GAAG,CAAE,EAAE,CAAC,OAAO,CAAC,qBAAqB,KAAK,GAAG,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAgB;IACxC,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAU,EAAE,CAAC;QAClH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,2GAA2G;IAC3G,wEAAwE;IACxE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,MAAM;QAAE,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IACtF,EAAE,CAAC,IAAI,CAAC;;;;;;IAMN,CAAC,CAAC;IACJ,EAAE,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;IAChG,IAAI,MAAM,EAAE,CAAC;QACX,EAAE,CAAC,IAAI,CAAC;6FACiF,CAAC,CAAC;QAC3F,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACjD,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IACjG,EAAE,CAAC,IAAI,CAAC,2GAA2G,CAAC,CAAC;IACrH,EAAE,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;AAC3G,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema v9 (L5 second review): a hole that comes back run after run has to be NAMED and counted, or the
|
|
3
|
+
* source re-reads it forever (or, worse, hides it). `source_sync.hole_sig` is a signature of what the last
|
|
4
|
+
* incomplete run could not read and `hole_streak` is how many consecutive runs had that same hole; after
|
|
5
|
+
* five, the sync says plainly that it is a persistent hole and stops letting it hold the watermark back.
|
|
6
|
+
* Guarded ALTERs: replay-safe.
|
|
7
|
+
*/
|
|
8
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
9
|
+
export declare function migrateV9(db: DatabaseSync): void;
|
|
10
|
+
//# sourceMappingURL=local-db-v9.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v9.d.ts","sourceRoot":"","sources":["../../src/lib/local-db-v9.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAIhD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function migrateV9(db) {
|
|
2
|
+
const have = new Set(db.prepare('PRAGMA table_info(source_sync)').all().map((c) => c.name));
|
|
3
|
+
if (!have.has('hole_sig'))
|
|
4
|
+
db.exec('ALTER TABLE source_sync ADD COLUMN hole_sig TEXT');
|
|
5
|
+
if (!have.has('hole_streak'))
|
|
6
|
+
db.exec('ALTER TABLE source_sync ADD COLUMN hole_streak INTEGER NOT NULL DEFAULT 0');
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=local-db-v9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-db-v9.js","sourceRoot":"","sources":["../../src/lib/local-db-v9.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,SAAS,CAAC,EAAgB;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAE,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACvF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;AACrH,CAAC"}
|