interlatch 0.28.1__tar.gz → 0.28.3__tar.gz
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.
- {interlatch-0.28.1 → interlatch-0.28.3}/CHANGELOG.md +40 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/PKG-INFO +1 -1
- interlatch-0.28.3/changelog.d/hubs-page.md +4 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/README.md +1 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/cli.md +3 -3
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/README.md +1 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/cli.md +3 -3
- interlatch-0.28.3/docs/ja/profiles.md +112 -0
- interlatch-0.28.3/docs/profiles.md +147 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/mkdocs.yml +2 -2
- interlatch-0.28.3/src/interlatch/application/profiles.py +586 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/config.py +1 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/i18n/ja.py +1 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/profiles.py +28 -15
- interlatch-0.28.3/src/interlatch/interfaces/cli/commands/hubs.py +341 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/sharing.py +8 -5
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/main.py +10 -10
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/parser.py +5 -4
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/mcp.py +5 -4
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/__init__.py +1 -0
- interlatch-0.28.3/src/interlatch/interfaces/web/api/hubs.py +141 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/projects.py +33 -5
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/status.py +26 -4
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/routes.py +15 -1
- interlatch-0.28.3/src/interlatch/projects/hubgroups.py +69 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/owners.py +1 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/client.py +37 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/membership.py +1 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/protocol.py +4 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/push.py +41 -4
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/receiver.py +39 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/app.css +15 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/app.js +231 -23
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/ja.js +62 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/cli.json +236 -121
- interlatch-0.28.3/tests/hubs_fixture.py +22 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_cli_pins.py +3 -1
- interlatch-0.28.3/tests/test_hub_groups.py +229 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_instructions.py +4 -2
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_profile_hubs.py +95 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_profile_scope.py +4 -3
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_profiles.py +115 -38
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_project_groups.py +1 -1
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_route_matrix.py +2 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_security.py +7 -0
- interlatch-0.28.1/changelog.d/opencode-analysis.md +0 -4
- interlatch-0.28.1/changelog.d/profiles-agents.md +0 -4
- interlatch-0.28.1/changelog.d/profiles-hubs.md +0 -4
- interlatch-0.28.1/changelog.d/profiles.md +0 -4
- interlatch-0.28.1/changelog.d/record-only.md +0 -3
- interlatch-0.28.1/docs/ja/profiles.md +0 -108
- interlatch-0.28.1/docs/profiles.md +0 -146
- interlatch-0.28.1/src/interlatch/application/profiles.py +0 -386
- interlatch-0.28.1/src/interlatch/interfaces/cli/commands/profiles.py +0 -193
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/dependabot.yml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/windows-ja-qa/driver.ps1 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/windows-ja-qa/ja_check.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/windows-ja-qa/report.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/windows-ja-qa/shots.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/windows-ja-qa/user.ps1 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/workflows/changelog.yml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/workflows/ci.yml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/workflows/docs.yml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/workflows/release.yml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.github/workflows/windows-ja-qa.yml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.gitignore +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.pre-commit-config.yaml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/.python-version +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/CONTRIBUTING.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/LICENSE +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/README.ja.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/README.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/ROADMAP.ja.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/ROADMAP.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/SECURITY.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/careers/README.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/careers/boards.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/careers/pipeline.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/changelog.d/README.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/dev.sh +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docker/.dockerignore +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docker/.env.example +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docker/Caddyfile +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docker/Dockerfile +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docker/compose.yaml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docker/wheels/.gitignore +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/_site/hooks.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/analysis.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/configuration.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/dashboard.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/demo/make_demo.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/demo/record_demo.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/design/innerlatch.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/design/ja/innerlatch.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/design/ja/learning.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/design/learning.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/development.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/devices.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/diagrams/analysis.excalidraw.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/diagrams/architecture.excalidraw.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/docker.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/faq.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/images/demo.gif +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/images/home.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/images/map.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/images/palette.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/images/session.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/install.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/analysis.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/configuration.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/dashboard.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/development.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/devices.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/docker.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/faq.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/install.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/join-a-hub.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/mcp.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/moving-from-chronicle.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/party.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/postgres.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/privacy.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/sources.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/suggestions.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/troubleshooting.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/ja/vscode.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/join-a-hub.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/mcp.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/moving-from-chronicle.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/party.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/postgres.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/privacy.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/sources.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/suggestions.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/troubleshooting.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/docs/vscode.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/leaderboard/.firebaserc +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/leaderboard/.gitignore +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/leaderboard/README.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/leaderboard/firebase.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/leaderboard/firestore.indexes.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/leaderboard/firestore.rules +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/README.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/art.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/filing.html +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/loops.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/loops.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/members.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/render.html +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/render.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/scenes-more.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/icons3d/scenes.html +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/Chronicle.icns +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/Interlatch.spec +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/build.sh +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/entitlements.plist +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/icon-3d.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/icon-blueprint-prompt.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/icon-blueprint.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/icon.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/interlatch_app.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/macos/make_icon.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/packaging/release.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/pyproject.toml +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/chronicle/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/chronicle/__main__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/chronicle/windows.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/__main__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/digest.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/language.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/queue.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/api.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/base.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/bob.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/claude.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/codex.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/factory.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/off.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/opencode.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/process.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/replies.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/runners/settings.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/screen.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/session.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/analysis/worker.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/application/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/application/records.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/application/search.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/application/workflows.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/artifacts/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/artifacts/files.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/artifacts/queries.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/cli.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/agents.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/artifact_records.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/diagrams.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/i18n/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/machine.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/paths.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/pricing.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/process.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/redact.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/sessions.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/core/util.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/analyses.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/archive.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/chat_import.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/deletion.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/history.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/memory.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/persistence.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/report.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/ingestion/service.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/archive.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/knowledge.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/operations.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/recording.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/commands/setup.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/cli/common.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/exports/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/exports/diagrams.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/exports/markdown.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/exports/sessions.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/exports/vault.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/artifacts.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/common.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/devices.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/hub_admin.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/knowledge.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/leaderboard.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/party.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/sessions.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/settings.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/sources.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/storage.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/api/team.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/app.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/assets.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/context.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/handler.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/jobs.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/interfaces/web/server.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/arena.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/bag.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/cases.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/formation.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/friction.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/glossary.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/group_graph.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/instructions.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/ladder.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/learning.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/market.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/party.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/reviews.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/roadmap.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/study.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/suggest.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/synthesize.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/knowledge/weekly.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/groups.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/labels.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/progress.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/routing.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/scope.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/projects/systems.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/connectors.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/container.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/hooks.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/install.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/migrate.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/notify.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/platforms/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/platforms/desktop.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/platforms/menubar.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/platforms/windows.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/statusline.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/tailnet.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/runtime/update.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/access.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/arena.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/identity.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/leaderboard.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/market.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/news.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/people.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/projects.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sharing/pull.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/antigravity.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/bob.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/builder.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/chatgpt.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/chats.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/claude/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/claude/export.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/claude/files.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/claude/parser.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/codex/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/codex/cloud.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/codex/parser.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/copilot.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/discovery.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/opencode.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/sources/prompts.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/__init__.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/fts.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/kv.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/migrations.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/mirror.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/postgres.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/schema.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/sqlite.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/storage/team.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/AGENT-ICONS.txt +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/PLEX-OFL.txt +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/adventure.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-antigravity.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-bob.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-chatgpt.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-claude-ai.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-claude.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-codex.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-copilot.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/agent-opencode.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-book.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-camera.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-chip.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-clock.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-cloud.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-coins.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-container.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-dashboard.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-dex.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-document.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-flag.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-folder.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-gateway.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-gears.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-glitch.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-globe.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-laptop.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-log.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-lumi.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-magnifier.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-pip.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-plug.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-rack.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/art-tink.webp +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/battle.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/boot.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/favicon.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/field.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/i18n.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/icon-180.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/icon-192.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/icon-512.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/icon.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/index.html +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/innerlatch.css +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/innerlatch.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/learning.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/manifest.webmanifest +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/panel.css +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/panel.html +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/panel.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-mono-400.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-mono-500.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-mono-600.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-sans-400.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-sans-500.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-sans-600.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/plex-sans-700.woff2 +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/rough.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/scene.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/web/sprites.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/src/interlatch/windows.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/antigravity_fixture.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/codex_fixture.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/conftest.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/copilot_fixture.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/friction_fixture.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/golden.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/diagram.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/parsers/antigravity.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/parsers/bob.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/parsers/claude_code.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/parsers/codex.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/parsers/copilot.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/parsers/opencode.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/goldens/systems.json +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/opencode_fixture.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_adventure_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_analysis.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_antigravity.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_architecture.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_arena.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_artifacts.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_bag.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_battle_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_bob_analysis.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_boot_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_careers.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_case_files.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_cases.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_chat_import.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_codex.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_codex_analysis.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_codex_cloud.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_container.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_copilot_bob.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_dedicated_hub.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_dedupe.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_desktop.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_diagram.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_ee_boundary.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_field_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_fix_effect.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_formation.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_friction.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_game_mode.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_glossary.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_group_graph.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_group_sharing.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_guidance.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_home_agents.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_accept.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_cookie.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_inventory_scope.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_leave_join.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_news.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_payload_privacy.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_projects.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_projects_listed.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_purge.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_send_problems.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_hub_sharing_race.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_i18n_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_ingest.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_integration.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_ladder.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_language.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_leaderboard.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_learning_glance.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_learning_interests.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_learning_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_leave_project.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_legacy_package.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_map_goldens.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_market.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_menubar.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_migrate.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_mirror.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_notify.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_opencode.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_opencode_analysis.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_parser.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_parser_goldens.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_party.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_party_map.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_people.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_people_hub.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_people_web.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_project_progress.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_providers.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_queue.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_regressions.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_release.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_roadmap_catalog.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_screen.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_setup.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_statusline.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_study.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_suggest.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_suggest_cli.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_systems.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_team.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_team_home.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_update.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_weekly_reanalysis.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/test_windows.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/tests/windows_smoke.py +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/uv.lock +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/.vscodeignore +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/LICENSE +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/README.md +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/extension.js +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/media/icon.png +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/media/interlatch.svg +0 -0
- {interlatch-0.28.1 → interlatch-0.28.3}/vscode-extension/package.json +0 -0
|
@@ -3,6 +3,46 @@
|
|
|
3
3
|
<!-- Don't add lines here: a pull request puts its line in a new file in changelog.d/ (see changelog.d/README.md),
|
|
4
4
|
and each release moves the files it took into a dated section below. -->
|
|
5
5
|
|
|
6
|
+
## 0.28.2 (2026-10-20)
|
|
7
|
+
|
|
8
|
+
- **Several hubs: connect your groups.** `interlatch profile` became `interlatch hubs` and `interlatch group`: add a
|
|
9
|
+
hub (`interlatch hubs add Acme <address> --code <code>`), then connect a group of projects to it
|
|
10
|
+
(`interlatch group connect "Acme work" Acme`). What the group holds goes to that hub, and changing the group on the
|
|
11
|
+
dashboard's Projects page moves its sessions with it. A project taken out of a connected group waits for you
|
|
12
|
+
instead of going back to Personal. `--profile` is now `--hub`; the old name still works
|
|
13
|
+
([Several hubs on one computer](docs/profiles.md)).
|
|
14
|
+
- **Several hubs on the dashboard.** Settings › Devices › Hubs lists this computer's hubs and their groups, adds and
|
|
15
|
+
joins one, and settles folders that wait for you; a group's page has **Goes to**, which connects the group to a hub
|
|
16
|
+
([Several hubs on one computer](docs/profiles.md)).
|
|
17
|
+
- **Moving a folder takes its sessions back from the hub that had them.** When a group, a project or a waiting folder
|
|
18
|
+
moves to another hub (or a group is disconnected), the hub it left takes back the sessions this computer sent it,
|
|
19
|
+
before anything goes to the new one. One that can't be reached takes them back at the next send. Home now shows
|
|
20
|
+
folders that wait for you to choose a hub under **Needs you**
|
|
21
|
+
([Moving takes sessions back](docs/profiles.md#moving-takes-sessions-back)). Update your hubs too: an older hub
|
|
22
|
+
can't take sessions back.
|
|
23
|
+
|
|
24
|
+
## 0.28.1 (2026-10-19)
|
|
25
|
+
|
|
26
|
+
- **Profiles, first stage:** `interlatch profile create Acme --owns ~/work/acme` makes a named profile that owns a
|
|
27
|
+
folder (or repositories by git remote, `--remotes`). Its sessions stay off your Personal hub, a folder two profiles
|
|
28
|
+
could claim waits for you (`profile waiting`, `profile choose`), and `interlatch --profile Acme <command>` runs any
|
|
29
|
+
command for it. Sharing with each profile's own hub comes next ([Profiles](docs/profiles.md)).
|
|
30
|
+
- **Profiles: agents see only their profile.** With named profiles, the MCP server and the notes at session start
|
|
31
|
+
show an agent only what its folder's profile owns, and nothing in a folder that waits for you to choose. Lines
|
|
32
|
+
proposed for your user-level CLAUDE.md and AGENTS.md come only from Personal's lessons
|
|
33
|
+
([What agents see](docs/profiles.md#what-agents-see)).
|
|
34
|
+
- **Profiles: one computer, several hubs.** A named profile joins a hub of its own
|
|
35
|
+
(`interlatch --profile Acme hub join …`) and sends it only the sessions it owns, read from your one archive, with its
|
|
36
|
+
own token and computer ID. Teammates' lessons from each hub reach only that profile's folders, and `interlatch push`
|
|
37
|
+
and the background job send for every hub ([Connect a profile to its hub](docs/profiles.md#connect-a-profile-to-its-hub)).
|
|
38
|
+
- **OpenCode analyzes sessions:** pick OpenCode as the analyzer (`interlatch install`, `--backend opencode`, or
|
|
39
|
+
**Status › Analysis**) and it runs `opencode run` headless with no tools, through the providers you set up in
|
|
40
|
+
OpenCode, with the model you choose as `provider/model`. Install asks for the model and offers a test call. The CLI
|
|
41
|
+
inside the OpenCode desktop app is found too ([Analysis](docs/analysis.md)).
|
|
42
|
+
- **Record only:** `interlatch install --no-analysis` (or **Record only** in install's list, or **Off** in
|
|
43
|
+
**Status › Analysis**) records sessions and never analyzes them: no model is called and nothing is sent anywhere for
|
|
44
|
+
analysis. Pick an analyzer later to analyze what was recorded ([Analysis](docs/analysis.md)).
|
|
45
|
+
|
|
6
46
|
## 0.28.0 (2026-10-19)
|
|
7
47
|
|
|
8
48
|
- **Sharing knowledge only sends only what is about the project:** a computer with `share = "knowledge"` used to send
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: interlatch
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.3
|
|
4
4
|
Summary: Shared memory for your coding agents: records every session (Claude Code, Codex, Copilot, Bob, Antigravity, OpenCode) locally and keeps what they learned, each lesson linked to the session it came from.
|
|
5
5
|
Project-URL: Homepage, https://interlatch.com
|
|
6
6
|
Project-URL: Documentation, https://interlatch.com/docs/
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
- **Settings › Hubs.** Each hub this computer sends to has its own card: whether sending works, the last share,
|
|
2
|
+
**Share now**, its dashboard (signed in as that hub's link), joining and leaving it. The Projects sidebar names the
|
|
3
|
+
hub each group goes to and lists folders waiting for a hub first, and the status bar names every hub
|
|
4
|
+
([Several hubs on one computer](docs/profiles.md)).
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| [VS Code extension](vscode.md) | The sessions behind the open file and every file agents worked on, in VS Code's Explorer |
|
|
15
15
|
| [Phone and other computers](devices.md) | The dashboard on your phone through Tailscale, and one archive for several computers (a hub) |
|
|
16
16
|
| [A hub in Docker](docker.md) | Setting up a team's hub on a server, step by step: Azure, the first admin, projects, inviting the team, troubleshooting |
|
|
17
|
-
| [
|
|
17
|
+
| [Several hubs on one computer](profiles.md) | Several teams with their own hubs on one computer: connect your groups of projects to the hub each belongs to, waiting folders, what agents see |
|
|
18
18
|
| [Joining your team's hub](join-a-hub.md) | For teammates: join with the code your admin sent, add your project folder, get teammates' lessons back |
|
|
19
19
|
| [A copy in Postgres](postgres.md) | Keep a copy of your archive in a Postgres database you choose (on this computer, in Docker, or in the cloud) for SQL and BI tools |
|
|
20
20
|
| [What gets recorded and how analysis works](analysis.md) | Session data, knowledge kinds, the analysis pipeline and its cost |
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
| `interlatch hub people` / `hub role <email\|id> <role>` / `hub remove <email\|id>` / `hub shared-token on\|off` | On the hub: everyone with their role, the projects they see and their computers; change a role; remove someone; allow or refuse the shared token ([People and roles](devices.md#people-and-roles)) |
|
|
47
47
|
| `interlatch hub add-folder <folder> --project <name>` / `hub remove-folder <folder>` / `hub folders [--list]` | On a computer that joined a hub: file a folder's sessions under a project on the hub, take a folder added by mistake back out, or show what goes where (`--list`: the hub's projects) ([Same project, different folders](devices.md#same-project-different-folders)). Sharing knowledge, `remove-folder` also has the hub delete what the computer shared from that folder ([Leaving](devices.md#leaving)) |
|
|
48
48
|
| `interlatch hub leave --project <name>` / `hub rejoin --project <name>` | On a computer that shares knowledge: stop sharing to one of the hub's projects and getting its teammates' lessons, keeping what it already shared there; or start again ([Leaving](devices.md#leaving)) |
|
|
49
|
-
| `interlatch
|
|
50
|
-
| `interlatch
|
|
51
|
-
| `interlatch --
|
|
49
|
+
| `interlatch hubs` / `hubs add <name> [<address> --code <code>] [--all-folders]` / `hubs remove <name> [--delete-data]` | The hubs this computer sends to besides Personal's, with the groups connected to each; add one (and join it), remove one ([Several hubs on one computer](profiles.md)) |
|
|
50
|
+
| `interlatch group list` / `create <name> --folder <folder>…` / `add-folder` / `remove-folder <group> <folder>` / `connect <group> <hub>` / `disconnect <group>` / `where <folder>` / `waiting` / `choose <folder> <hub\|personal>` / `remove <group>` | Your groups of projects and the hub each goes to: connecting one moves its sessions so far to that hub; taking a project out of a connected group, or disconnecting it, makes it wait for you. `--dry-run` shows what would move; a hub that has sessions that move takes them back first; `--leave-on-hub` moves them even if it can't now |
|
|
51
|
+
| `interlatch --hub <name> hub … \| push \| config …` | Run a hub command for another of this computer's hubs: join it, push its sessions, change its settings. Recording and analysis are Personal's. `interlatch push` sends to Personal's hub and then each other one |
|
|
52
52
|
| `interlatch push` | On a computer that joined a hub: send its new sessions now (the hook and the background sync do this) |
|
|
53
53
|
| `interlatch container` | What the hub's Docker image runs: set the hub up from `INTERLATCH_*` variables, then serve the dashboard and sync every 15 minutes ([A hub in Docker](docker.md)) |
|
|
54
54
|
| `interlatch config [edit]` | Show or edit `~/.interlatch/config.toml` |
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| [VS Code 拡張機能](vscode.md) | 開いているファイルと、エージェントが作業したすべてのファイルの背後にあるセッションを、VS Code のエクスプローラーに表示 |
|
|
15
15
|
| [スマートフォンとほかのコンピューター](devices.md) | Tailscale 経由でスマートフォンからダッシュボードを開く、複数のコンピューターで 1 つのアーカイブ(ハブ) |
|
|
16
16
|
| [Docker でハブを動かす](docker.md) | サーバーでチームのハブを用意する手順:Azure、最初の管理者、プロジェクト、チームの招待、トラブルシューティング |
|
|
17
|
-
| [
|
|
17
|
+
| [1 台のコンピューターで複数のハブ](profiles.md) | それぞれにハブがある複数のチームを 1 台で:プロジェクトのグループをそれぞれのハブにつなぐ、選択を待つフォルダー、エージェントに見えるもの |
|
|
18
18
|
| [チームのハブに参加する](join-a-hub.md) | チームメイト向け:管理者から届いたコードで参加し、プロジェクトのフォルダーを加え、チームメイトのナレッジを受け取る |
|
|
19
19
|
| [Postgres へのコピー](postgres.md) | アーカイブのコピーを、選んだ Postgres データベース(このコンピューター、Docker、クラウド)に置いて SQL や BI ツールで使う |
|
|
20
20
|
| [記録される内容と分析の仕組み](analysis.md) | セッションのデータ、ナレッジの種類、分析の流れとその費用 |
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
| `interlatch hub people` / `hub role <email\|id> <role>` / `hub remove <email\|id>` / `hub shared-token on\|off` | ハブで:全員のロール、見えるプロジェクト、コンピューターの一覧/ロールを変える/人を外す/共有トークンを許すか拒むか([利用者とロール](devices.md#利用者とロール)) |
|
|
47
47
|
| `interlatch hub add-folder <folder> --project <name>` / `hub remove-folder <folder>` / `hub folders [--list]` | ハブに参加したコンピューターで:フォルダーのセッションをハブのプロジェクトに入れる/間違えて追加したフォルダーを外す/どこに入るかを表示(`--list`:ハブのプロジェクト一覧)([同じプロジェクト、別のフォルダー](devices.md#同じプロジェクト別のフォルダー))。ナレッジを共有しているときは、`remove-folder` でそのフォルダーから共有したものもハブが削除します([やめるとき](devices.md#やめるとき)) |
|
|
48
48
|
| `interlatch hub leave --project <name>` / `hub rejoin --project <name>` | ナレッジを共有するコンピューターで:ハブのプロジェクトの一つへの共有とチームメイトのナレッジの受け取りをやめる(すでに共有したものは残る)、または再開する([やめるとき](devices.md#やめるとき)) |
|
|
49
|
-
| `interlatch
|
|
50
|
-
| `interlatch
|
|
51
|
-
| `interlatch --
|
|
49
|
+
| `interlatch hubs` / `hubs add <name> [<address> --code <code>] [--all-folders]` / `hubs remove <name> [--delete-data]` | Personal 以外にこのコンピューターが送るハブと、それぞれにつないだグループの一覧。追加する(参加もする)、削除する([1 台のコンピューターで複数のハブ](profiles.md)) |
|
|
50
|
+
| `interlatch group list` / `create <name> --folder <folder>…` / `add-folder` / `remove-folder <group> <folder>` / `connect <group> <hub>` / `disconnect <group>` / `where <folder>` / `waiting` / `choose <folder> <hub\|personal>` / `remove <group>` | プロジェクトのグループと、それぞれの送り先のハブ:つなぐと、これまでのセッションもそのハブに移る。つないだグループからプロジェクトを外す、または接続を外すと、あなたの選択を待つ。`--dry-run` は移るものの表示だけ、移るセッションを持つハブは先にそれを取り下げる。`--leave-on-hub` は今取り下げられなくても移す |
|
|
51
|
+
| `interlatch --hub <name> hub … \| push \| config …` | このコンピューターのほかのハブでハブのコマンドを実行する:参加する、セッションを送る、設定を変える。記録と分析は Personal が行います。`interlatch push` は Personal のハブ、次にほかの各ハブへ送ります |
|
|
52
52
|
| `interlatch push` | ハブに参加したコンピューターで:新しいセッションを今すぐ送る(フックとバックグラウンド同期も送ります) |
|
|
53
53
|
| `interlatch container` | ハブの Docker イメージが実行するコマンド:`INTERLATCH_*` 変数からハブを設定し、ダッシュボードを提供して 15 分ごとに同期([Docker でハブを動かす](docker.md)) |
|
|
54
54
|
| `interlatch config [edit]` | `~/.interlatch/config.toml` を表示または編集 |
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# 1 台のコンピューターで複数のハブ
|
|
2
|
+
|
|
3
|
+
[← Interlatch](../../README.ja.md) · [ドキュメント一覧](README.md)
|
|
4
|
+
|
|
5
|
+
コンピューターが参加できるハブは一つです。自分のプロジェクトと取引先のプロジェクトのように、それぞれにハブがある複数のチームで働くときは、**プロジェクトのグループ**を、それぞれが属するハブにつなぎます。そうすると、各フォルダーのセッションは一つのハブにだけ届き、そこで作業するエージェントにはそのハブのものだけが見えます。
|
|
6
|
+
|
|
7
|
+
- **Personal**(`~/.interlatch`)は、これまでどおり、すべてのエージェントのすべてのセッションを記録・分析します。このコンピューターにあるすべてのものの元のコピーで、自分のハブに送ることもできます。
|
|
8
|
+
- **ほかのハブ**には、ここでの名前(たとえば Acme)を付けます。そのハブにつないだグループのセッションが届きます。読むのは Personal のアーカイブで、コピーは作らず、分析も二度しません。
|
|
9
|
+
|
|
10
|
+
## ハブを追加してグループをつなぐ
|
|
11
|
+
|
|
12
|
+
1. ハブの管理者から受け取った招待コードでハブを追加します([チームのハブに参加する](join-a-hub.md))。
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
interlatch hubs add Acme https://hub.acme.example --code XXXX-XXXX-XXXX
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
2. そのハブに属するフォルダーのグループを作ります。ダッシュボードの「プロジェクト」ページにあるグループも使えます。
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
interlatch group create "Acme work" --folder ~/work/acme --folder ~/clients/acme-site
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
3. グループをハブにつなぎます。
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
interlatch group connect "Acme work" Acme
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
グループのフォルダーですでに記録されたセッションは Acme に移り、それ以降は Acme のハブに送られます。Personal のハブがすでに持っているものは、先にそのハブが取り下げます([移すとハブから取り下げる](#moving-takes-sessions-back))。`--dry-run` を付けると、何も変えずに、移るものと、そのうちハブが持っている数を表示します。
|
|
31
|
+
|
|
32
|
+
**ダッシュボードでは:** **設定 › ハブ**に、ハブごとのカードがあります。送信がうまくいっているか、最後に送った時刻、**今すぐ共有**、ハブのダッシュボード、参加と脱退です。ハブの追加(名前、アドレス、招待コード)もここで行います。グループのページの**送り先**で、そのグループのセッションを送るハブを選びます。**プロジェクト**のサイドバーでは、ハブにつないだグループにそのハブの名前が表示され、選択を待つフォルダーが先頭に並びます。
|
|
33
|
+
|
|
34
|
+
ほかのコンピューターと同じく、ハブに送られるのは、そのハブのプロジェクトに追加したフォルダーのものだけです(`interlatch --hub Acme hub add-folder ~/work/acme/app --project App`)。`--all-folders` を付けて参加した場合は別です。
|
|
35
|
+
|
|
36
|
+
## グループで決まる
|
|
37
|
+
|
|
38
|
+
つないだグループに入っているものが、そのハブに送られます。グループのフォルダーとその下のすべて、そして「プロジェクト」ページで手で入れたプロジェクトです。グループを変えると、これまでのセッションも含めてハブがそれに従います。
|
|
39
|
+
|
|
40
|
+
| すること | そこにあるセッション |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| つないだグループにフォルダーを加える、プロジェクトを入れる | そのハブに移る |
|
|
43
|
+
| つないだグループからプロジェクトを外す | あなたの選択を待つ(下記)。勝手に Personal には戻らない |
|
|
44
|
+
| つないだグループのフォルダーの中に、どのハブにもつながないグループを作る | あなたの選択を待つ |
|
|
45
|
+
| つないだグループのフォルダーの中のグループを、別のハブにつなぐ | そのハブに移る。狭いほうのグループが優先 |
|
|
46
|
+
| グループの接続を外す(`interlatch group disconnect "Acme work"`) | あなたの選択を待つ |
|
|
47
|
+
|
|
48
|
+
<a id="moving-takes-sessions-back"></a>
|
|
49
|
+
|
|
50
|
+
### 移すとハブから取り下げる
|
|
51
|
+
|
|
52
|
+
セッションが置かれるハブは一度に一つです。変更でセッションがあるハブから離れるとき(別のハブへ、またはあなたの選択待ちへ)、そのハブは、このコンピューターが送ったものを取り下げます。要約とナレッジが、そのハブとチームストアから消えます。これは新しいハブに何かを送る前に行います。あとでそのハブに戻すと、もう一度送られます。
|
|
53
|
+
|
|
54
|
+
ハブに届かないとき、またはこのコンピューターがまだそのハブに送っている最中のときは、何も変えず、理由を表示します(ダッシュボードでも同じ)。あとでやり直すか、そのまま移してください(`--leave-on-hub`、またはダッシュボードの確認で **OK**)。その場合、次にこのコンピューターがそのハブに送るときに取り下げます。このバージョンより古いハブは取り下げができません。ハブを更新するか、そのまま移してください。そのハブのコピーは残ります。
|
|
55
|
+
|
|
56
|
+
ハブの削除(`interlatch hubs remove`)では何も取り下げません。先にそのハブから抜けてください。
|
|
57
|
+
|
|
58
|
+
一つのフォルダーが属せるハブは一つです。二つのハブのグループを同じフォルダーにつなぐことはできません。
|
|
59
|
+
|
|
60
|
+
## 選択を待つフォルダー
|
|
61
|
+
|
|
62
|
+
複数のハブのものになりうるフォルダーや、グループが手放したフォルダーは**選択を待ちます**。Personal は記録・分析を続けますが、あなたが選ぶまで、どのハブにも送られず、どのエージェントにも見えません。
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
interlatch group waiting
|
|
66
|
+
interlatch group choose ~/work/acme/notes Acme # または personal
|
|
67
|
+
interlatch group where ~/work/acme/app # フォルダーがどのハブに行くか、その理由
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**設定 › ハブ**にも一覧があり、それぞれに**選ぶ**ボタンがあります。**ホーム**の**あなたの対応待ち**にも表示されます。あるフォルダーが選択待ちにしているプロジェクト(つないだグループの中にある、どのハブにもつないでいないグループ)は、そのフォルダーの下にまとめて表示します。
|
|
71
|
+
|
|
72
|
+
## エージェントに見えるもの
|
|
73
|
+
|
|
74
|
+
Interlatch がエージェントに渡すもの([MCP サーバー](mcp.md)のツールと、セッション開始時のメモ)は、エージェントが動くフォルダーで決まります。
|
|
75
|
+
|
|
76
|
+
- **ハブにつないだグループのフォルダーでは:** そのハブのセッション、ナレッジ、ナレッジベース、チームメイトのナレッジだけ。
|
|
77
|
+
- **それ以外の場所では:** Personal のものだけ。
|
|
78
|
+
- **選択を待つフォルダーでは:** 何もありません。MCP のツールは、そのフォルダーがあなたの選択を待っていると伝えます。
|
|
79
|
+
|
|
80
|
+
すべてのプロジェクトをまとめて作るもの(全体のプレイブック、ほかのハブのプロジェクトにも出てくる用語集の用語、テーマ、週次レビュー)は、ほかのハブがある間はエージェントに見せません。ダッシュボードには引き続きすべて表示されます。
|
|
81
|
+
|
|
82
|
+
すべてのフォルダーでエージェントが読むユーザーレベルの指示ファイル(`~/.claude/CLAUDE.md`、`~/.codex/AGENTS.md`)に Interlatch が提案する行は、Personal のナレッジからだけ作ります。ほかのハブのセッションで得たナレッジは、そのプロジェクト自身のファイルに提案します([提案](suggestions.md))。
|
|
83
|
+
|
|
84
|
+
## コマンド
|
|
85
|
+
|
|
86
|
+
| 目的 | 実行するコマンド |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| ハブとそのグループの一覧 | `interlatch hubs` |
|
|
89
|
+
| ハブを追加して参加する | `interlatch hubs add <name> [<address> --code <code>] [--all-folders]` |
|
|
90
|
+
| ハブを削除する | `interlatch hubs remove <name> [--delete-data]`(先に抜けておく:`interlatch --hub <name> hub leave`) |
|
|
91
|
+
| グループと送り先の一覧 | `interlatch group list` |
|
|
92
|
+
| グループを作る、フォルダーを変える | `interlatch group create <name> --folder <folder>…`、`group add-folder` / `remove-folder <group> <folder>` |
|
|
93
|
+
| グループをつなぐ、外す | `interlatch group connect <group> <hub>`、`group disconnect <group>` |
|
|
94
|
+
| ほかのハブのハブコマンドを実行する | `interlatch --hub <name> hub …` / `push` / `config …` |
|
|
95
|
+
|
|
96
|
+
`interlatch push` とバックグラウンドの処理は、Personal のハブ、次にほかの各ハブへ送ります。記録、分析、ダッシュボードは Personal が行います。`--hub` を付けて実行できるのは `hub`、`push`、`config` だけです。
|
|
97
|
+
|
|
98
|
+
## 複数のハブとの共有
|
|
99
|
+
|
|
100
|
+
- **ナレッジだけ。** どのハブにも、要約とプロジェクトのナレッジだけを送り、トランスクリプトは送りません。トランスクリプトを送るとすべてのハブのセッションが含まれてしまうため、ほかのハブがある間は Personal もトランスクリプトを送りません:`interlatch config set hub.share knowledge`。
|
|
101
|
+
- **各ハブに一度だけ。** このコンピューターがすでに送っているハブへの参加は、何も送る前に断られます。
|
|
102
|
+
- **自分の ID。** ハブごとにトークンとコンピューターの ID が別なので、二つのハブが ID でこのコンピューターを突き合わせることはできません。ただし、どのハブにもコンピューターの名前は表示されます。ハブに見せる名前は `~/.interlatch/profiles/<id>/machine.json` で変えられます。
|
|
103
|
+
- **自分のチームメイト。** ハブから届いたチームメイトのナレッジはそのハブのものとして保存し、エージェントにはそのフォルダーでだけ見せます。一つのハブから抜けても(`interlatch --hub Acme hub leave`)、消えるのはそのハブのものだけです。
|
|
104
|
+
- **Personal のハブ**には Personal のセッションだけが届きます。ハブへのあいさつで伝えるリポジトリやフォルダーにも、ほかのハブのものは含まれません。
|
|
105
|
+
|
|
106
|
+
## 保存場所
|
|
107
|
+
|
|
108
|
+
`~/.interlatch/profiles.toml` に、ほかのハブ、それぞれにつないだグループ、そこから決まるフォルダー、あなたの選択が入ります。読めるのはあなただけです。このファイルが読めないときは、直すまでどのハブにも何も共有しません。ハブごとに専用のフォルダー `~/.interlatch/profiles/<id>` があり、トークン、コンピューターの ID、共有の状態が入ります。
|
|
109
|
+
|
|
110
|
+
最初にほかのハブを追加すると、Personal のアーカイブに各セッションの属するハブを記録する `session_owner` テーブルができます。ほかのハブのないアーカイブは変更されません。
|
|
111
|
+
|
|
112
|
+
**0.28.1 から:** `interlatch profile` は `interlatch hubs` と `interlatch group` になり、`--profile` は `--hub` になりました(古い名前も使えます)。`--owns` でプロファイルに与えたフォルダーは、そのハブのものとして残ります。
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Several hubs on one computer
|
|
2
|
+
|
|
3
|
+
[← Interlatch](../README.md) · [Docs index](README.md)
|
|
4
|
+
|
|
5
|
+
A computer joins one hub. If you work for more than one team, such as your own projects and a client's, each with
|
|
6
|
+
its own hub, connect your **groups of projects** to the hub each one belongs to. Each folder's sessions then reach one
|
|
7
|
+
hub only, and agents working there see only what belongs to it.
|
|
8
|
+
|
|
9
|
+
- **Personal** (`~/.interlatch`) records and analyzes every session from every agent, as always. It's the master copy
|
|
10
|
+
of everything on this computer, and it may send to a hub of its own.
|
|
11
|
+
- **Another hub** has a name here, such as Acme. It gets the sessions in the groups you connect to it, read from
|
|
12
|
+
Personal's archive: no second copy, and nothing analyzed twice.
|
|
13
|
+
|
|
14
|
+
<a id="connect-a-profile-to-its-hub"></a>
|
|
15
|
+
|
|
16
|
+
## Add a hub and connect a group
|
|
17
|
+
|
|
18
|
+
1. Add the hub, with the invite code its admin sent ([Joining your team's hub](join-a-hub.md)):
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
interlatch hubs add Acme https://hub.acme.example --code XXXX-XXXX-XXXX
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
2. Make a group of the folders that belong to it, or use one you already have on the dashboard's **Projects** page:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
interlatch group create "Acme work" --folder ~/work/acme --folder ~/clients/acme-site
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. Connect the group to the hub:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
interlatch group connect "Acme work" Acme
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The sessions already recorded in the group's folders move to Acme, and go to Acme's hub from then on. Any that
|
|
37
|
+
Personal's hub already has, it takes back first (see [Moving takes sessions back](#moving-takes-sessions-back)).
|
|
38
|
+
`--dry-run` shows what would move, and how many of them a hub has, without changing anything.
|
|
39
|
+
|
|
40
|
+
**On the dashboard:** **Settings › Hubs** has a card for each hub: whether sending to it works, when it last got
|
|
41
|
+
something, **Share now**, its dashboard, and joining or leaving it. It also adds a hub (its name, address and invite
|
|
42
|
+
code). A group's page has **Goes to**, where you pick the hub its sessions go to. In the **Projects** sidebar, a group
|
|
43
|
+
connected to a hub shows that hub's name, and folders waiting for you are listed first.
|
|
44
|
+
|
|
45
|
+
As on any computer, a hub gets only the folders added to one of its projects
|
|
46
|
+
(`interlatch --hub Acme hub add-folder ~/work/acme/app --project App`), unless you joined with `--all-folders`.
|
|
47
|
+
|
|
48
|
+
## Groups decide
|
|
49
|
+
|
|
50
|
+
What a connected group holds goes to its hub: its folders and everything below them, and projects you put in it by
|
|
51
|
+
hand on the **Projects** page. Change the group and its hub follows, sessions so far included:
|
|
52
|
+
|
|
53
|
+
| You | The sessions there |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| Add a folder to a connected group, or put a project in it | Move to its hub |
|
|
56
|
+
| Take a project out of a connected group | Wait for you (below), never back to Personal on their own |
|
|
57
|
+
| Make a group inside a connected group's folder, connected to no hub | Wait for you |
|
|
58
|
+
| Connect a group to another hub inside a connected group's folder | Go to that hub: the narrower group wins |
|
|
59
|
+
| Disconnect a group (`interlatch group disconnect "Acme work"`) | Wait for you |
|
|
60
|
+
|
|
61
|
+
<a id="moving-takes-sessions-back"></a>
|
|
62
|
+
|
|
63
|
+
### Moving takes sessions back
|
|
64
|
+
|
|
65
|
+
A session is on one hub at a time. When a change moves sessions away from a hub (to another hub, or to wait for
|
|
66
|
+
you), that hub takes back the ones this computer sent it: their summaries and lessons go, there and in its team
|
|
67
|
+
store. This happens before anything goes to the new hub. A session chosen for that hub again is simply sent again.
|
|
68
|
+
|
|
69
|
+
If the hub can't be reached, or this computer is still sending to it, nothing changes, on the dashboard too, and
|
|
70
|
+
you're told why. Try again later, or move them anyway (`--leave-on-hub`, or **OK** on the dashboard's question): the
|
|
71
|
+
hub takes them back the next time this computer sends to it. A hub older than this version can't take sessions back.
|
|
72
|
+
Update it, or move them anyway and its copies stay there.
|
|
73
|
+
|
|
74
|
+
Removing a hub (`interlatch hubs remove`) takes nothing back: leave it first.
|
|
75
|
+
|
|
76
|
+
A folder can belong to one hub: connecting two hubs' groups to the same folder is refused.
|
|
77
|
+
|
|
78
|
+
## Waiting folders
|
|
79
|
+
|
|
80
|
+
A folder that could belong to more than one hub, or that a group let go, **waits**. Personal still records and
|
|
81
|
+
analyzes its sessions, but no hub gets them and no agent sees them until you choose:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
interlatch group waiting
|
|
85
|
+
interlatch group choose ~/work/acme/notes Acme # or: personal
|
|
86
|
+
interlatch group where ~/work/acme/app # who gets a folder, and why
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Settings › Hubs** lists them too, with a **Choose** for each, and **Home** shows them under **Needs you**. Projects a folder holds waiting (a group
|
|
90
|
+
connected to no hub inside a connected one) are listed once, under that folder.
|
|
91
|
+
|
|
92
|
+
## What agents see
|
|
93
|
+
|
|
94
|
+
What Interlatch gives an agent depends on the folder it runs in: the [MCP server](mcp.md)'s tools and the notes at
|
|
95
|
+
the start of each session.
|
|
96
|
+
|
|
97
|
+
- **In a folder of a group connected to a hub:** that hub's sessions, lessons, knowledge bases and teammates' lessons
|
|
98
|
+
only.
|
|
99
|
+
- **Anywhere else:** Personal's only.
|
|
100
|
+
- **In a waiting folder:** nothing. The MCP tools say the folder waits for you to choose.
|
|
101
|
+
|
|
102
|
+
What is made from every project at once (the global playbook, glossary terms seen in another hub's projects, themes
|
|
103
|
+
and weekly reviews) isn't shown to agents while you have another hub. The dashboard still shows everything.
|
|
104
|
+
|
|
105
|
+
Lines Interlatch proposes for your user-level instruction files (`~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md`), which
|
|
106
|
+
agents read in every folder, come only from Personal's lessons. A lesson another hub's sessions taught is proposed for
|
|
107
|
+
that project's own files instead ([Suggestions](suggestions.md)).
|
|
108
|
+
|
|
109
|
+
## Commands
|
|
110
|
+
|
|
111
|
+
| To | Run |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| List the hubs and their groups | `interlatch hubs` |
|
|
114
|
+
| Add a hub, and join it | `interlatch hubs add <name> [<address> --code <code>] [--all-folders]` |
|
|
115
|
+
| Remove a hub | `interlatch hubs remove <name> [--delete-data]` (leave it first: `interlatch --hub <name> hub leave`) |
|
|
116
|
+
| List your groups and where each goes | `interlatch group list` |
|
|
117
|
+
| Make a group, change its folders | `interlatch group create <name> --folder <folder>…`, `group add-folder` / `remove-folder <group> <folder>` |
|
|
118
|
+
| Connect a group, or disconnect it | `interlatch group connect <group> <hub>`, `group disconnect <group>` |
|
|
119
|
+
| Run a hub command for another hub | `interlatch --hub <name> hub …` / `push` / `config …` |
|
|
120
|
+
|
|
121
|
+
`interlatch push` and the background job send to Personal's hub, then each other hub. Recording, analysis and the
|
|
122
|
+
dashboard are Personal's: with `--hub`, only `hub`, `push` and `config` run.
|
|
123
|
+
|
|
124
|
+
## Sharing with several hubs
|
|
125
|
+
|
|
126
|
+
- **Knowledge only.** Every hub gets summaries and project lessons, never transcripts. A transcript upload would
|
|
127
|
+
carry every hub's sessions, so while you have another hub, Personal won't send transcripts:
|
|
128
|
+
`interlatch config set hub.share knowledge`.
|
|
129
|
+
- **Each hub once.** Joining a hub that this computer already sends to is refused before anything is sent.
|
|
130
|
+
- **Its own identity.** Each hub gets its own token and computer ID, so two hubs can't match this computer by its ID.
|
|
131
|
+
Each hub still shows the computer's name: change the name a hub sees in `~/.interlatch/profiles/<id>/machine.json`.
|
|
132
|
+
- **Its own teammates.** Teammates' lessons a hub sends are kept for that hub, and agents see them only in its
|
|
133
|
+
folders. Leaving one hub (`interlatch --hub Acme hub leave`) removes only that hub's.
|
|
134
|
+
- **Personal's hub** gets only Personal's sessions. The repositories and folders its hello names leave out what the
|
|
135
|
+
other hubs own.
|
|
136
|
+
|
|
137
|
+
## Where it's kept
|
|
138
|
+
|
|
139
|
+
`~/.interlatch/profiles.toml` lists the other hubs, the groups connected to each, the folders that follows from, and
|
|
140
|
+
your choices. Only you can read it. If it can't be read, nothing is shared with any hub until it's fixed. Each hub
|
|
141
|
+
also has a folder of its own, `~/.interlatch/profiles/<id>`, with its token, computer ID and sharing state.
|
|
142
|
+
|
|
143
|
+
Personal's archive gets a `session_owner` table, the hub each session belongs to, once the first other hub is added.
|
|
144
|
+
An archive without one is never changed.
|
|
145
|
+
|
|
146
|
+
**From 0.28.1:** `interlatch profile` became `interlatch hubs` and `interlatch group`, and `--profile` is now `--hub`
|
|
147
|
+
(the old name still works). Folders a profile was given with `--owns` stay that hub's.
|
|
@@ -75,7 +75,7 @@ nav:
|
|
|
75
75
|
- Phone and other computers: devices.md
|
|
76
76
|
- A hub in Docker: docker.md
|
|
77
77
|
- Joining your team's hub: join-a-hub.md
|
|
78
|
-
-
|
|
78
|
+
- Several hubs on one computer: profiles.md
|
|
79
79
|
- A copy in Postgres: postgres.md
|
|
80
80
|
- Reference:
|
|
81
81
|
- What gets recorded and how analysis works: analysis.md
|
|
@@ -98,7 +98,7 @@ nav:
|
|
|
98
98
|
- スマートフォンとほかのコンピューター: ja/devices.md
|
|
99
99
|
- Docker でハブを動かす: ja/docker.md
|
|
100
100
|
- チームのハブに参加する: ja/join-a-hub.md
|
|
101
|
-
-
|
|
101
|
+
- 1 台のコンピューターで複数のハブ: ja/profiles.md
|
|
102
102
|
- Postgres へのコピー: ja/postgres.md
|
|
103
103
|
- 記録される内容と分析の仕組み: ja/analysis.md
|
|
104
104
|
- 設定: ja/configuration.md
|