TalkPipe 1.0.2b1__tar.gz → 1.0.2b2__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.
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/CHANGELOG.md +108 -14
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/PKG-INFO +8 -3
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/README.md +7 -2
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/README.md +127 -39
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/install.ps1 +13 -3
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/install.sh +16 -7
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/talkpipe.toml +14 -4
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/talkpipe_appcenter.py +705 -145
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/conftest.py +38 -2
- talkpipe-1.0.2b2/appcenter/tests/test_actions.py +601 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_bootstrap.py +12 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_catalog.py +29 -2
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_channel.py +130 -18
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_cli.py +17 -6
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_shortcut.py +4 -3
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_status.py +38 -2
- talkpipe-1.0.2b2/appcenter/tests/test_tui.py +545 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_uv.py +30 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/PKG-INFO +8 -3
- talkpipe-1.0.2b2/src/talkpipe.egg-info/scm_version.json +8 -0
- talkpipe-1.0.2b1/appcenter/tests/test_actions.py +0 -298
- talkpipe-1.0.2b1/appcenter/tests/test_tui.py +0 -257
- talkpipe-1.0.2b1/src/talkpipe.egg-info/scm_version.json +0 -8
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/changelog-update/SKILL.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/doc-example-formatting/SKILL.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/run-documentation-examples/SKILL.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/run-documentation-examples/scripts/run_documentation_examples.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/test-driven-development/SKILL.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/update-entry-points/SKILL.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.cursor/skills/update-entry-points/scripts/update_entry_points.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.dockerignore +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.gitea/default_merge_message/MERGE_TEMPLATE.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.gitea/default_merge_message/SQUASH_TEMPLATE.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/CICD.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/ISSUE_TEMPLATE/release-checklist.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/SECURITY.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/copilot-instructions.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/dependabot.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/prompts/add-segment.prompt.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/prompts/changelog.prompt.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/prompts/doc-examples.prompt.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/prompts/tdd.prompt.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/prompts/update-entry-points.prompt.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.github/workflows/ci-cd.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.gitignore +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.pre-commit-config.yaml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.safety-policy.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.safety-project.ini +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.vscode/settings.json +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/.vscode/tasks.json +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/AGENTS.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/COPYRIGHT +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/Dockerfile +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/LICENSE +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/RELEASING.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/appcenter/tests/test_packaging.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/.gitignore +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/LLMChat.png +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/LLMEvaluateWebPage.png +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/TalkPipe.png +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/TalkPipe.xcf +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/chatterlang-script.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/chatterlang-server.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/chatterlang-workbench.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/lazy-loading.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/talkpipe-plugin-manager.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/api-reference/talkpipe-ref.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/chatterlang.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/configuration.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/documentation-formatting.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/extending-talkpipe.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/metadata-stream.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/pipe-api.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/protocol.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/security.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/architecture/streaming.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/contributing/developer-handbook.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/guides/container-images.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/guides/makevectordatabase-and-serverag.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/guides/model-and-source-configuration.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/guides/model2vec-embeddings.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/make_structure_diagram.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/quickstart.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/structure.tex +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/talkpipe_architecture.png +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/talkpipe_architecture.tex +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/talkpipe_diagram.png +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/.gitignore +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/stories.json +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_1-Document_Indexing/story_search_ui.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/step_3_extras.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/story_by_example_ui.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.bat +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.sh +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/file_structure.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/multi_format_ui.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/report_topic_ui.yml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/step_1_extras.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/step_2_extras.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/tutorials/Tutorial_3_Report_Writing/step_3_extras.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/docs/workbench_demo.mp4 +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/frontend/.gitignore +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/frontend/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/frontend/build.mjs +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/frontend/package-lock.json +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/frontend/package.json +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/frontend/src/cm.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/pyproject.toml +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/pytest.ini +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/scripts/extract_documentation_examples.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/setup.cfg +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/chatterlang_generate_entry_points.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/chatterlang_reference_browser.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/chatterlang_reference_generator.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/chatterlang_script.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/chatterlang_serve.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/chatterlang_workbench.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/doc_examples.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/makevectordatabase.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/precache_model2vec.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/server_common.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/serverag.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/favicon.ico +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/common.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/index.css +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/index.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/stream.css +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/stream.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/vendor/LICENSES.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/vendor/marked.min.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/serve/vendor/purify.min.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/talkpipe_logo.png +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/app.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/editor.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/index.html +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/styles.css +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/suggest.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/vendor/LICENSES.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/vendor/codemirror.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/static/workbench/workspace.js +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/talkpipe_plugin_manager.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/templates/chatterlang_serve/index.html +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/templates/chatterlang_serve/stream.html +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/corpus.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/reference_api.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/suggest.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/suggest_api.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/workspace.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench/workspace_api.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/README.md +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_1-document_indexing__step_1_createsyntheticdata.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_1-document_indexing__step_2_indexstories.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_1-document_indexing__step_3_searchstories.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_2-search_by_example_and_rag__step_1_createvectordatabase.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_2-search_by_example_and_rag__step_2_searchbyexample.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_2-search_by_example_and_rag__step_3_specializedrag.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_3_report_writing__step_1_executivesummarygeneration.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_3_report_writing__step_2_detailedanalysisreportgeneration.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/app/workbench_data/seed_scripts/tutorial_3_report_writing__step_3_multiformatreportgeneration.script +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/chatterlang/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/chatterlang/compiler.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/chatterlang/parsers.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/chatterlang/registry.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/email.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/extraction.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/html.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/image.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/mongo.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/rss.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/text/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/text/chunking_units.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/text/cleaning.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/text/englishnormalize.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/data/text/operations.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/_ollama_common.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/chat.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/config.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/content.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/embedding.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/embedding_adapters.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/embedding_adapters_model2vec.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/embedding_adapters_openai.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/embedding_errors.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/model2vec_embeddings.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/multimodal.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapter_base.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapter_memory.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapters.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapters_anthropic.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapters_eliza.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapters_ollama.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/prompt_adapters_openai.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/llm/vision.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/operations/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/operations/filtering.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/operations/matrices.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/operations/thread_ops.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/operations/transforms.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/basic.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/collect.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/core.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/debug.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/fields.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/filters.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/flow.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/fork.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/hashing.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/io.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/math.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/metadata.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipe/shell.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipelines/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipelines/basic_rag.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/pipelines/vector_databases.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/py.typed +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/search/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/search/abstract.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/search/lancedb.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/search/whoosh.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/__init__.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/collections.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/config.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/constants.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/data_manipulation.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/doc_extraction.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/iterators.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/os.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe/util/plugin_loader.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/SOURCES.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/dependency_links.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/entry_points.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/requires.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/scm_file_list.json +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/src/talkpipe.egg-info/top_level.txt +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/conftest.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/embedding_adapter_contract_suite.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/prompt_adapter_contract_suite.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_chatterlang_generate_entry_points.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_chatterlang_reference_browser.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_chatterlang_reference_generator.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_chatterlang_script.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_chatterlang_serve.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_makevectordatabase.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_precache_model2vec.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_serve_static.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_server_common.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_server_hardening.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_serverag.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_talkpipe_plugin_manager.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_workbench_corpus.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_workbench_load_module.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_workbench_reference_api.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_workbench_static.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_workbench_suggest.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/app/test_workbench_workspace.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/chatterlang/test_chatterlang_workbench.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/chatterlang/test_compiler.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/chatterlang/test_entry_point_drift.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/chatterlang/test_entry_points.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/chatterlang/test_parsers.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/chatterlang/test_registry.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/sample_feed.pkl +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test.docx +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_email.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_extraction.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_html.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_html_exceptions.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_image.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_mogomock.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_mongo.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_mongo_integration.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_mongo_timeouts.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/test_rss.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/text/test_chunking_units.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/text/test_cleaning.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/text/test_englishnormalize.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/data/text/test_operations.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_chat.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_content.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_embedding.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_embedding_adapters_contract.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_embedding_batch.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_embedding_model2vec.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_embedding_token_overflow.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_multimodal.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_prompt_adapters_anthropic.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_prompt_adapters_base.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_prompt_adapters_eliza.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_prompt_adapters_memory.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_prompt_adapters_ollama.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_prompt_adapters_openai.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_timeouts.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_vision.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/llm/test_vision_adapters.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/operations/test_filtering.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/operations/test_matrices.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/operations/test_threading.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/operations/test_transforms.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_basic.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_basic_split.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_core.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_fork.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_io.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_math.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipe/test_metadata.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipelines/test_basic_rag.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/pipelines/test_vector_databases.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/search/test_abstract.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/search/test_lancedb.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/search/test_lancedb_cache.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/search/test_whoosh.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/test_documentation_examples.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/test_heavy_imports_are_lazy.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/test_py_typed.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/test_version.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_collections.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_config.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_data_manipulation.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_doc_extraction.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_iterators.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_os.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_plugin_loader.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/talkpipe/util/test_util.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/test_config_keys_documented.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/test_doc_examples.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/test_security_vulnerabilities.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/test_tutorial_scripts.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/tests/testutils.py +0 -0
- {talkpipe-1.0.2b1 → talkpipe-1.0.2b2}/uv.lock +0 -0
|
@@ -2,6 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- **App Center: a launch opens the page of a released application that does
|
|
6
|
+
not open its own.** A second newcomer run against the PyPI releases. The
|
|
7
|
+
catalog's `opens_browser` describes the newest version of an application,
|
|
8
|
+
and the released writing assistant 1.1.0 has no browser-opening at all, so
|
|
9
|
+
a launch reported "is running at ..." and nothing appeared. `opens_browser`
|
|
10
|
+
now also takes a version (`"1.1.1"`): the first one that opens its own tab,
|
|
11
|
+
with the App Center opening the page for older installed versions; the
|
|
12
|
+
writing assistant's entry says `"1.1.1"`. Also: an action that fails ends
|
|
13
|
+
on a `==> Failed:` line, the counterpart of `==> Done:`, and its toast is
|
|
14
|
+
titled Failed rather than Finished; when all the App Center knows is that
|
|
15
|
+
something answers on an application's port (no 200 from the health path,
|
|
16
|
+
and not a process it started), `launch` and `stop` say "something answers
|
|
17
|
+
on port 8002" instead of stating that the application is running; `l` and
|
|
18
|
+
`o` on an application that is not installed both say to install it (`o`
|
|
19
|
+
used to say "launch it first", and `l` then "not installed"); `list` sizes
|
|
20
|
+
its columns from their content, so `installed (pre-release)` no longer
|
|
21
|
+
pushes its row out of line; the screen moves the detail pane under the
|
|
22
|
+
table below 140 columns, where a fixed side pane cut the Running and
|
|
23
|
+
Launcher columns off at the widths most terminals have; and a Linux
|
|
24
|
+
launcher for a package that ships no icon names a standard generic one,
|
|
25
|
+
which the README already promised.
|
|
26
|
+
- **App Center: the release channel launches, and the way back to it
|
|
27
|
+
works.** Found by a newcomer run against the released applications rather
|
|
28
|
+
than the checkouts. A catalog `health` path that answers 404 no longer
|
|
29
|
+
counts as "down": the catalog describes the newest version, and the
|
|
30
|
+
released vault 1.0.0 and writing assistant 1.1.0 serve their ports without
|
|
31
|
+
the routes their catalog entries name, so on the default channel every
|
|
32
|
+
launch was reported as a failure while the app sat open in the browser —
|
|
33
|
+
and from there `open` refused, a second launch treated the app as "another
|
|
34
|
+
program" on its port, started a second copy on the next one, overwrote the
|
|
35
|
+
pid record, and `stop` killed the wrong one. Any HTTP answer on the port
|
|
36
|
+
now counts as running, and a launch never starts a second copy while the
|
|
37
|
+
pid file names a live process of the App Center's own. Leaving the
|
|
38
|
+
experimental channel (`e` again, `--no-experimental`) passes
|
|
39
|
+
`--reinstall`: `uv tool install --upgrade` never moves a package backwards,
|
|
40
|
+
so the switch silently kept the beta, reported "already the newest version",
|
|
41
|
+
forgot the channel record, and left the row offering the release as an
|
|
42
|
+
"upgrade" that the next `i` could not perform. If a fresh resolution still
|
|
43
|
+
lands on a pre-release, the App Center says so and keeps the record. A
|
|
44
|
+
pre-release with no record (installed by hand, or by an earlier copy) now
|
|
45
|
+
counts as being on the experimental channel, and `(pre-release)` describes
|
|
46
|
+
the installed version rather than the run's flag. Also: uninstall stops an
|
|
47
|
+
instance the App Center started before removing its environment; PyPI
|
|
48
|
+
lookups are no longer capped at 1 MiB, which blanked the latest version and
|
|
49
|
+
summary of any long-lived package (ruff's record is over 6 MB); `latest`
|
|
50
|
+
reads `?` rather than `None (<date>)` on the experimental channel; the
|
|
51
|
+
table's columns grow to fit `installed (pre-release)` instead of clipping
|
|
52
|
+
it; `c Stop` appears in the footer while the row's app is one the App
|
|
53
|
+
Center started; the uninstall question wraps; `i`, `l`, `x`, and `o` on the
|
|
54
|
+
App Center's own row say to move to an application's row instead of doing
|
|
55
|
+
nothing; the `list` hint no longer names a `talkpipe-appcenter` command
|
|
56
|
+
that the documented `uv run <url>` never creates; the language-model note
|
|
57
|
+
mentions an Ollama server on another computer; and the documented uv floor
|
|
58
|
+
(0.7) is checked, with the version named in the error — only when the
|
|
59
|
+
version parses, so a stand-in whose `--version` answers with words is not
|
|
60
|
+
mistaken for an old uv.
|
|
5
61
|
- **Deprecated: omitting the `|` between an input source and the first
|
|
6
62
|
segment.** `INPUT FROM echo[data="1,2"] print` has always parsed as though
|
|
7
63
|
the pipe were there — an accident of the grammar, and an inconsistent one,
|
|
@@ -26,20 +82,58 @@
|
|
|
26
82
|
take the channel by name — `install.sh --experimental`, or
|
|
27
83
|
`TALKPIPE_APPCENTER_CHANNEL=experimental` for both scripts, the only
|
|
28
84
|
mechanism Windows has since a piped `irm | iex` cannot receive arguments.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
and
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
85
|
+
That variable chooses only which copy of the App Center runs; the App
|
|
86
|
+
Center itself does not read it.
|
|
87
|
+
|
|
88
|
+
**Any one copy of the App Center installs either the release or the
|
|
89
|
+
pre-release of each application**, so a released App Center can install
|
|
90
|
+
betas and a beta one installs releases unless told otherwise. On the
|
|
91
|
+
screen the choice is a `Channel` column and two keys: `e` on an
|
|
92
|
+
application's row toggles its channel between `stable` and `pre-release`
|
|
93
|
+
and installs nothing, and `i` installs (or switches, or upgrades) from
|
|
94
|
+
whichever channel the row shows — choosing and acting are separate keys,
|
|
95
|
+
because one key that changed what you were looking at and installed it in
|
|
96
|
+
the same stroke proved confusing. The Status column says where the two
|
|
97
|
+
disagree (`installed (pre-release)`, `release available`), and the detail
|
|
98
|
+
pane repeats the channel. On the command line, `--experimental` (or
|
|
99
|
+
`--pre`), before or after the subcommand, chooses and installs in one.
|
|
100
|
+
Both pass `--prerelease allow` to uv — which covers the application and
|
|
101
|
+
its dependencies, since a pre-release application may require a
|
|
102
|
+
pre-release library. The choice is recorded per application beside the
|
|
103
|
+
saved catalogs, because uv replays its own recorded settings for `uv tool
|
|
104
|
+
upgrade` but not for the `uv tool install --upgrade` the App Center runs;
|
|
105
|
+
without the record, a later upgrade would quietly reinstall the newest
|
|
106
|
+
release over a pre-release. Installing the release again (`e` then `i`, or
|
|
107
|
+
`--no-experimental`) forgets the record. On the pre-release channel the
|
|
108
|
+
App Center no longer claims to know the latest version, since PyPI's is
|
|
109
|
+
the newest *release* and not an upgrade target for a pre-release: the row
|
|
110
|
+
reads `installed (pre-release)`.
|
|
111
|
+
|
|
112
|
+
- **Fixed: the App Center never said an install had finished.** uv's output
|
|
113
|
+
scrolled through the log for minutes and then simply stopped, and its own
|
|
114
|
+
last lines start with "Installed", so the App Center's summary of what had
|
|
115
|
+
happened was one indistinguishable line in the middle of it — leaving
|
|
116
|
+
"is it still working?" unanswered. Every action now ends with a line marked
|
|
117
|
+
`==> Done:` that says what it did (`==> Done: Installed talkpipe-vault
|
|
118
|
+
1.0.0.`), placed last, after any notes about what the application still
|
|
119
|
+
needs. On the screen a notification carries the same news over the top of
|
|
120
|
+
the log, so an install walked away from still reports itself — including
|
|
121
|
+
when it failed, which the screen also never used to say out loud.
|
|
122
|
+
|
|
123
|
+
- **Fixed: the App Center left a launch that hit a busy port to time out.** An
|
|
124
|
+
application whose port is already held by another program — a second copy of
|
|
125
|
+
it, or an unrelated server — either failed to bind or quietly relocated to a
|
|
126
|
+
port the App Center was not watching; both ended the same way, in a
|
|
127
|
+
thirty-second wait and "did not answer on port 8001". A web app's port is now
|
|
128
|
+
checked before it is started: when something else holds it, the App Center
|
|
129
|
+
finds the next free port above it and starts the app there, announcing the
|
|
130
|
+
move, and records that port so status, the browser, and `open` all follow the
|
|
131
|
+
app to where it actually runs. Doing so needs the new catalog key
|
|
132
|
+
`port_option` — the option the app takes a port on, `--port` for all three
|
|
133
|
+
bundled applications; without it the conflict is reported immediately rather
|
|
134
|
+
than launched into. A server that dies at startup for any other reason is
|
|
135
|
+
also reported as soon as it exits, with the last lines of its log, instead of
|
|
136
|
+
being waited out.
|
|
43
137
|
|
|
44
138
|
- **Fixed: `appcenter/install.sh` exited with status 2 instead of starting the
|
|
45
139
|
App Center** whenever the process had no controlling terminal — a CI runner, a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: talkpipe
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2b2
|
|
4
4
|
Summary: Python internal and external DSL for writing generative AI analytics
|
|
5
5
|
Author-email: Travis Bauer <tlbauer@sandia.gov>
|
|
6
6
|
Maintainer-email: Travis Bauer <tlbauer@sandia.gov>
|
|
@@ -148,8 +148,13 @@ Entry points for different usage scenarios, from interactive development to prod
|
|
|
148
148
|
Each release attaches the version-stamped file, so the URL above needs a full
|
|
149
149
|
release that post-dates the App Center — against an older one, or where the
|
|
150
150
|
only such release so far is a pre-release, it returns "Not Found" and uv
|
|
151
|
-
reports that as a `SyntaxError`. Pre-releases
|
|
152
|
-
|
|
151
|
+
reports that as a `SyntaxError`. Pre-releases *of the App Center itself* are
|
|
152
|
+
served by the experimental channel instead
|
|
153
|
+
(`releases/download/experimental/talkpipe_appcenter.py`). Either copy
|
|
154
|
+
installs the release or the pre-release of each application — press `e` on
|
|
155
|
+
its row to choose the channel and `i` to install, or pass
|
|
156
|
+
`--experimental` — so you never need a particular copy to
|
|
157
|
+
get a beta of an application (see
|
|
153
158
|
[Channels](appcenter/README.md#channels-stable-and-experimental)). From a
|
|
154
159
|
checkout of this branch, run the file directly:
|
|
155
160
|
`uv run appcenter/talkpipe_appcenter.py`.
|
|
@@ -79,8 +79,13 @@ Entry points for different usage scenarios, from interactive development to prod
|
|
|
79
79
|
Each release attaches the version-stamped file, so the URL above needs a full
|
|
80
80
|
release that post-dates the App Center — against an older one, or where the
|
|
81
81
|
only such release so far is a pre-release, it returns "Not Found" and uv
|
|
82
|
-
reports that as a `SyntaxError`. Pre-releases
|
|
83
|
-
|
|
82
|
+
reports that as a `SyntaxError`. Pre-releases *of the App Center itself* are
|
|
83
|
+
served by the experimental channel instead
|
|
84
|
+
(`releases/download/experimental/talkpipe_appcenter.py`). Either copy
|
|
85
|
+
installs the release or the pre-release of each application — press `e` on
|
|
86
|
+
its row to choose the channel and `i` to install, or pass
|
|
87
|
+
`--experimental` — so you never need a particular copy to
|
|
88
|
+
get a beta of an application (see
|
|
84
89
|
[Channels](appcenter/README.md#channels-stable-and-experimental)). From a
|
|
85
90
|
checkout of this branch, run the file directly:
|
|
86
91
|
`uv run appcenter/talkpipe_appcenter.py`.
|
|
@@ -44,6 +44,72 @@ uv run appcenter/talkpipe_appcenter.py
|
|
|
44
44
|
|
|
45
45
|
## Channels: stable and experimental
|
|
46
46
|
|
|
47
|
+
**Any one copy of the App Center installs either the release or the
|
|
48
|
+
pre-release of each application.** You never need a different copy of the App
|
|
49
|
+
Center to get a beta of the vault, and running a beta of the App Center does
|
|
50
|
+
not put betas of the applications on your computer. The two are separate
|
|
51
|
+
choices, and only the second one comes up in normal use.
|
|
52
|
+
|
|
53
|
+
### Which versions of the applications it installs
|
|
54
|
+
|
|
55
|
+
Every application installs as its newest **release** unless you ask for its
|
|
56
|
+
pre-release. On the screen the choice is a column of the table, `Channel`,
|
|
57
|
+
and two keys: `e` on an application's row toggles its channel between
|
|
58
|
+
`stable` and `pre-release` (installing nothing), and `i` installs — or
|
|
59
|
+
switches, or upgrades — from whichever channel the row shows. So to try the
|
|
60
|
+
vault's beta, press `e` then `i` on its row; to go back, `e` then `i` again.
|
|
61
|
+
The Status column says where the two disagree: `installed (pre-release)`
|
|
62
|
+
while a beta is installed on the pre-release channel, `release available`
|
|
63
|
+
once the release channel is chosen over it (when PyPI knows of one). With
|
|
64
|
+
several applications selected, `e` puts them all on the pre-release channel,
|
|
65
|
+
unless every one of them is there already, in which case all back. From the
|
|
66
|
+
command line, ask with `--experimental` (or `--pre`), before or after the
|
|
67
|
+
subcommand:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv run <url> --experimental install vault
|
|
71
|
+
uv run <url> install vault --pre
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
That passes `--prerelease allow` to uv, which applies to the application **and
|
|
75
|
+
its dependencies** — a pre-release vault may require a pre-release talkpipe, and
|
|
76
|
+
a narrower setting would reject it and fail to resolve at all.
|
|
77
|
+
|
|
78
|
+
The choice is remembered per application, in `channels.txt` beside the saved
|
|
79
|
+
catalogs, so a later `upgrade` keeps it: uv replays its own recorded settings
|
|
80
|
+
for `uv tool upgrade`, but the App Center runs `uv tool install --upgrade`,
|
|
81
|
+
which takes them from the command line, so without the record an upgrade would
|
|
82
|
+
reinstall the newest release over your pre-release. A pre-release that has no
|
|
83
|
+
record — installed by hand with uv, say — counts as being on the channel all
|
|
84
|
+
the same: the version decides, so the App Center never offers an application's
|
|
85
|
+
own release to it as an "upgrade". Choose the release channel again with `e`
|
|
86
|
+
on the screen (then `i` to install it) or with `--no-experimental` on the
|
|
87
|
+
command line; installing the release forgets the record, and so does
|
|
88
|
+
`uninstall`. Going back reinstalls the application's environment (`uv tool
|
|
89
|
+
install --reinstall`): uv never moves a package backwards on its own, and an
|
|
90
|
+
installed pre-release satisfies the requirement, so only a resolution from
|
|
91
|
+
scratch puts the release over it. If even that lands on a pre-release — an
|
|
92
|
+
application whose only releases so far are betas — the App Center says so and
|
|
93
|
+
leaves the choice standing, rather than reporting the switch as done.
|
|
94
|
+
|
|
95
|
+
On that channel the App Center stops claiming to know the newest version —
|
|
96
|
+
PyPI's own "latest" is the newest *release*, which is not an upgrade target
|
|
97
|
+
for a pre-release — so the row reads `installed (pre-release)` with `?` for
|
|
98
|
+
latest, and `info` prints the channel.
|
|
99
|
+
|
|
100
|
+
`--experimental` placed before `ui` (or given with no subcommand) sets the
|
|
101
|
+
channel for every install of that screen session and says so in the title;
|
|
102
|
+
`e` then declines, since one flag for the run and a choice per application
|
|
103
|
+
would contradict each other — the footer leaves the key out and pressing it
|
|
104
|
+
says why. Start without the flag to choose per application.
|
|
105
|
+
|
|
106
|
+
`--experimental` before `install`, or `--pre` after it, is the command line's
|
|
107
|
+
`e` and `i` in one: it both chooses the channel for that application and
|
|
108
|
+
installs from it.
|
|
109
|
+
|
|
110
|
+
### Which copy of the App Center you run
|
|
111
|
+
|
|
112
|
+
This choice matters only while no full release carries the App Center.
|
|
47
113
|
`releases/latest` is the newest release GitHub does *not* consider a
|
|
48
114
|
pre-release, so those URLs serve the last full release even while a beta is
|
|
49
115
|
out — and if the only release carrying the App Center is a beta, they return
|
|
@@ -70,31 +136,11 @@ $env:TALKPIPE_APPCENTER_CHANNEL="experimental"
|
|
|
70
136
|
powershell -ExecutionPolicy Bypass -c "irm .../install.ps1 | iex"
|
|
71
137
|
```
|
|
72
138
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
with
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
uv run <url> --experimental install vault
|
|
80
|
-
uv run <url> install vault --pre
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
That passes `--prerelease allow` to uv, which applies to the application **and
|
|
84
|
-
its dependencies** — a pre-release vault may require a pre-release talkpipe, and
|
|
85
|
-
a narrower setting would reject it and fail to resolve at all.
|
|
86
|
-
|
|
87
|
-
The choice is remembered per application, in `channels.txt` beside the saved
|
|
88
|
-
catalogs, so a later `upgrade` keeps it: uv replays its own recorded settings
|
|
89
|
-
for `uv tool upgrade`, but the App Center runs `uv tool install --upgrade`,
|
|
90
|
-
which takes them from the command line, so without the record an upgrade would
|
|
91
|
-
reinstall the newest release over your pre-release. Leave the channel with
|
|
92
|
-
`--no-experimental`, which also forgets the record; so does `uninstall`.
|
|
93
|
-
|
|
94
|
-
On that channel the App Center stops claiming to know the newest version —
|
|
95
|
-
PyPI's own "latest" is the newest *release*, which is not an upgrade target
|
|
96
|
-
for a pre-release — so the row reads `installed (pre-release)` with `?` for
|
|
97
|
-
latest, and `info` prints the channel.
|
|
139
|
+
Both forms choose only which copy of the file runs. The App Center itself does
|
|
140
|
+
not read `TALKPIPE_APPCENTER_CHANNEL`, so the pre-release copy fetched this way
|
|
141
|
+
installs releases of the applications exactly like the released copy does,
|
|
142
|
+
until you choose the pre-release channel with `e` (and install with `i`) or
|
|
143
|
+
pass `--experimental` for one of them.
|
|
98
144
|
|
|
99
145
|
The experimental channel is published from github.com only; the Gitea mirror
|
|
100
146
|
attaches no release assets.
|
|
@@ -107,11 +153,12 @@ desktop launcher. Keys:
|
|
|
107
153
|
|---|---|
|
|
108
154
|
| `i` | Install (or upgrade) the app under the cursor, or every selected app |
|
|
109
155
|
| `u` | Upgrade only apps that are installed |
|
|
156
|
+
| `e` | Choose the app's channel, `stable` or `pre-release` (the `Channel` column); `i` then installs from it (see [Channels](#channels-stable-and-experimental)) |
|
|
110
157
|
| `x` | Uninstall (asks first; your data stays) |
|
|
111
158
|
| `l` | Launch. Web apps start in the background and open in your browser |
|
|
112
159
|
| `o` | Open a running web app in the browser |
|
|
113
160
|
| `s` | Add or remove a desktop launcher (menu entry, `~/Applications`, or Start Menu) |
|
|
114
|
-
| `c` | Stop a web app the App Center started |
|
|
161
|
+
| `c` | Stop a web app the App Center started — the footer shows it while the row's app is one it started |
|
|
115
162
|
| `space` | Select for a batch install |
|
|
116
163
|
| `r` | Refresh |
|
|
117
164
|
| `q` | Quit |
|
|
@@ -119,6 +166,15 @@ desktop launcher. Keys:
|
|
|
119
166
|
The last row is the App Center itself: press `s` there to give the App Center a launcher
|
|
120
167
|
of its own, so nobody has to type a URL twice.
|
|
121
168
|
|
|
169
|
+
An install can run for minutes, and uv's output scrolls through the pane at
|
|
170
|
+
the bottom of the screen while it does. **You do not have to read it to know
|
|
171
|
+
when it is over.** The App Center's own lines are the ones that begin `==>`,
|
|
172
|
+
and the last one of an action begins `==> Done:` and says what happened —
|
|
173
|
+
`==> Done: Installed talkpipe-vault 1.0.0.` — or `==> Failed:` and says what
|
|
174
|
+
did not. A notification says the same thing over the screen, so an install
|
|
175
|
+
you walked away from is still reporting itself when you come back. The same
|
|
176
|
+
markers end the run in the subcommands below.
|
|
177
|
+
|
|
122
178
|
## Without the screen
|
|
123
179
|
|
|
124
180
|
Every action is also a subcommand, for scripts and for people who prefer
|
|
@@ -128,6 +184,7 @@ typing. Arguments after `sh -s --` pass straight through the bootstrap script.
|
|
|
128
184
|
uv run <url> list # every app and its status (--json for machines)
|
|
129
185
|
uv run <url> info vault
|
|
130
186
|
uv run <url> install vault writing-assistant
|
|
187
|
+
uv run <url> install vault --experimental # its pre-release; --no-experimental returns to releases
|
|
131
188
|
uv run <url> upgrade --all
|
|
132
189
|
uv run <url> launch vault
|
|
133
190
|
uv run <url> stop vault
|
|
@@ -144,29 +201,52 @@ curl -fsSL .../install.sh | sh -s -- install vault
|
|
|
144
201
|
|
|
145
202
|
- **Applications install with `uv tool install`**, each into its own
|
|
146
203
|
environment with its own Python. Nothing else on the computer is touched,
|
|
147
|
-
and uninstalling removes exactly that environment and its commands
|
|
148
|
-
|
|
149
|
-
`~/.writing_assistant`) is never
|
|
204
|
+
and uninstalling removes exactly that environment and its commands (stopping
|
|
205
|
+
the app first if the App Center started it). User data (the vault's
|
|
206
|
+
`~/.talkpipe-vault`, the writing assistant's `~/.writing_assistant`) is never
|
|
207
|
+
deleted; the App Center tells you where it is.
|
|
150
208
|
- **Re-running an install upgrades.** "Latest" is read from PyPI every time
|
|
151
209
|
the App Center starts, so the screen always knows whether an upgrade exists.
|
|
152
210
|
- **Launchers open a visible terminal** on purpose: the applications have no
|
|
153
211
|
tray icon or Quit command, so that window is how you stop them and see
|
|
154
212
|
their messages. The launcher targets the stable `~/.local/bin` command, so
|
|
155
213
|
it survives upgrades.
|
|
214
|
+
- **A busy port moves the app, it does not sink the launch.** When something
|
|
215
|
+
else already holds a web app's port, the App Center starts it on the next
|
|
216
|
+
free port above it, says which one it used, and opens and tracks the app
|
|
217
|
+
there. That needs the catalog's `port_option` (the option the app takes its
|
|
218
|
+
port on); without it, the conflict is reported straight away instead of
|
|
219
|
+
waiting out a server that will never come up. Either way you get an answer
|
|
220
|
+
in seconds, with the last lines of the app's log when it failed to start.
|
|
221
|
+
An app the App Center itself started is never treated as "another program"
|
|
222
|
+
on its port: while that process is alive, a second launch reports it
|
|
223
|
+
instead of starting a second copy beside it.
|
|
224
|
+
- **"Running" means something answers on the app's port.** A catalog `health`
|
|
225
|
+
path that answers 200 settles it; one that answers with any other status
|
|
226
|
+
does not count against the app, because the catalog describes the newest
|
|
227
|
+
version and an older release may serve the same port without that route.
|
|
228
|
+
The price is that an unrelated program on the port is not told apart — the
|
|
229
|
+
App Center would rather open the wrong page than call a running app down and
|
|
230
|
+
start a second one — so when that is all it knows (no 200 from the health
|
|
231
|
+
path, and not a process it started itself), its messages say "something
|
|
232
|
+
answers on port 8002" rather than naming the app.
|
|
156
233
|
- **Language models are not installed.** The catalog says which apps need a
|
|
157
234
|
language model; the App Center detects a local Ollama and shows its download
|
|
158
|
-
link when it is missing
|
|
159
|
-
own settings.
|
|
235
|
+
link when it is missing. An Ollama server on another computer, or an OpenAI
|
|
236
|
+
or Anthropic key, is entered in the app's own settings.
|
|
160
237
|
- **The App Center needs the network** to start (uv fetches the file) and to show
|
|
161
238
|
latest versions. Set `TALKPIPE_APPCENTER_OFFLINE=1` to skip the PyPI lookups;
|
|
162
239
|
versions then show as `?`.
|
|
163
|
-
- **`TALKPIPE_APPCENTER_CHANNEL=experimental`**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
240
|
+
- **`TALKPIPE_APPCENTER_CHANNEL=experimental`** makes the bootstrap scripts
|
|
241
|
+
run the pre-release copy of the App Center, and nothing more: which versions
|
|
242
|
+
of the applications it installs is chosen per application with `e` (then
|
|
243
|
+
`i`) or `--experimental` (see [Channels](#channels-stable-and-experimental)).
|
|
244
|
+
`UV_PRERELEASE` is uv's own setting and is not used here, so that pre-release
|
|
245
|
+
resolution reaches only the installs meant to have it; setting it yourself
|
|
246
|
+
is a power-user escape hatch.
|
|
168
247
|
|
|
169
|
-
uv is the only prerequisite. It must be at least 0.7
|
|
248
|
+
uv is the only prerequisite. It must be at least 0.7; the App Center checks,
|
|
249
|
+
and says so if yours is older.
|
|
170
250
|
|
|
171
251
|
## The catalog: listing any pip-installable application
|
|
172
252
|
|
|
@@ -197,8 +277,16 @@ command = "vault-server" # required; the console script to launch
|
|
|
197
277
|
args = ["--resume"]
|
|
198
278
|
kind = "web" # web | cli | tui (default cli)
|
|
199
279
|
port = 8002 # web only
|
|
200
|
-
|
|
201
|
-
|
|
280
|
+
port_option = "--port" # optional; how to ask the app for another port
|
|
281
|
+
# when this one is taken. Absent: a taken
|
|
282
|
+
# port is reported instead of launched into.
|
|
283
|
+
health = "/api/health" # optional; a path that answers 200 when up. Any
|
|
284
|
+
# HTTP answer on the port counts too (an older
|
|
285
|
+
# release may lack the route); absent, anything
|
|
286
|
+
# listening on the port counts.
|
|
287
|
+
opens_browser = true # the app opens its own tab; the App Center won't.
|
|
288
|
+
# A version ("1.1.1") means from that version
|
|
289
|
+
# on; older installs get the page opened for them.
|
|
202
290
|
icon = "talkpipe_vault/apps/static/icon-256.png" # a PNG inside the package
|
|
203
291
|
data = ["~/.talkpipe-vault"] # shown on uninstall, never deleted
|
|
204
292
|
needs = ["ollama"] # detected and explained, never installed
|
|
@@ -13,12 +13,19 @@ runs in its own cached environment:
|
|
|
13
13
|
To act without the screen, run that `uv run` line yourself with arguments,
|
|
14
14
|
e.g. `uv run <url> install vault` (a piped `irm | iex` cannot receive them).
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
The App Center it runs comes from the latest full release. To run the
|
|
17
|
+
pre-release copy of the App Center itself instead (needed only while no full
|
|
18
|
+
release carries it yet), set the channel in the environment first -- the only
|
|
17
19
|
way here, since a piped `irm | iex` takes no arguments:
|
|
18
20
|
|
|
19
21
|
$env:TALKPIPE_APPCENTER_CHANNEL="experimental"
|
|
20
22
|
powershell -ExecutionPolicy Bypass -c "irm .../install.ps1 | iex"
|
|
21
23
|
|
|
24
|
+
That chooses only which copy of the App Center runs. Either copy installs the
|
|
25
|
+
release version of every application unless told otherwise: press `e` on an
|
|
26
|
+
application's row, or run `uv run <url> install <app> --experimental`, to get
|
|
27
|
+
its pre-release from any copy.
|
|
28
|
+
|
|
22
29
|
uv is the only thing this script installs. The App Center installs applications
|
|
23
30
|
with `uv tool install`, each into its own environment; nothing else on the
|
|
24
31
|
machine is touched.
|
|
@@ -28,8 +35,11 @@ $ErrorActionPreference = "Stop"
|
|
|
28
35
|
$AppCenterUrl = "https://github.com/sandialabs/talkpipe/releases/latest/download/talkpipe_appcenter.py"
|
|
29
36
|
$AppCenterExperimentalUrl = "https://github.com/sandialabs/talkpipe/releases/download/experimental/talkpipe_appcenter.py"
|
|
30
37
|
|
|
31
|
-
# `releases/latest` is the newest release
|
|
32
|
-
# so it cannot serve a beta; the
|
|
38
|
+
# Which copy of the App Center to run. `releases/latest` is the newest release
|
|
39
|
+
# GitHub does not consider a pre-release, so it cannot serve a beta; the
|
|
40
|
+
# experimental release is where those assets go. The App Center itself does not
|
|
41
|
+
# read the variable: the copy chosen here installs release applications unless
|
|
42
|
+
# asked per application.
|
|
33
43
|
if ($env:TALKPIPE_APPCENTER_CHANNEL -eq "experimental") { $AppCenterUrl = $AppCenterExperimentalUrl }
|
|
34
44
|
|
|
35
45
|
function Start-AppCenter {
|
|
@@ -7,11 +7,19 @@
|
|
|
7
7
|
#
|
|
8
8
|
# curl -fsSL .../install.sh | sh -s -- install vault
|
|
9
9
|
#
|
|
10
|
-
#
|
|
10
|
+
# The App Center it runs comes from the latest full release. To run the
|
|
11
|
+
# pre-release copy of the App Center itself instead (needed only while no full
|
|
12
|
+
# release carries it yet), pass --experimental first, or set
|
|
11
13
|
# TALKPIPE_APPCENTER_CHANNEL=experimental in the environment:
|
|
12
14
|
#
|
|
13
15
|
# curl -fsSL .../install.sh | sh -s -- --experimental
|
|
14
16
|
#
|
|
17
|
+
# That chooses only which copy of the App Center runs. Either copy installs the
|
|
18
|
+
# release version of every application unless told otherwise: press `e` on an
|
|
19
|
+
# application's row to choose its pre-release channel and `i` to install from
|
|
20
|
+
# it, or pass `install <app> --experimental`, to get its pre-release from any
|
|
21
|
+
# copy.
|
|
22
|
+
#
|
|
15
23
|
# What it does: installs uv (https://docs.astral.sh/uv/) into ~/.local/bin if it
|
|
16
24
|
# is missing, then hands over to the App Center itself, one Python file that uv runs
|
|
17
25
|
# in its own cached environment:
|
|
@@ -38,18 +46,19 @@ download() {
|
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
main() {
|
|
41
|
-
#
|
|
42
|
-
# consider a pre-release, so it cannot serve a beta
|
|
43
|
-
# release is where those assets go. A channel name
|
|
44
|
-
# purpose: this script runs what it downloads, so the
|
|
45
|
-
# the two literals above.
|
|
49
|
+
# Which copy of the App Center to run. `releases/latest` is the newest
|
|
50
|
+
# release GitHub does not consider a pre-release, so it cannot serve a beta
|
|
51
|
+
# at all; the experimental release is where those assets go. A channel name
|
|
52
|
+
# rather than a URL, on purpose: this script runs what it downloads, so the
|
|
53
|
+
# URLs it will fetch stay the two literals above. The choice ends here: the
|
|
54
|
+
# App Center does not read the variable, and the copy it picks installs
|
|
55
|
+
# release applications unless asked per application.
|
|
46
56
|
if [ "${1:-}" = "--experimental" ]; then
|
|
47
57
|
shift
|
|
48
58
|
TALKPIPE_APPCENTER_CHANNEL=experimental
|
|
49
59
|
fi
|
|
50
60
|
if [ "${TALKPIPE_APPCENTER_CHANNEL:-}" = "experimental" ]; then
|
|
51
61
|
APPCENTER_URL="$APPCENTER_EXPERIMENTAL_URL"
|
|
52
|
-
export TALKPIPE_APPCENTER_CHANNEL
|
|
53
62
|
fi
|
|
54
63
|
|
|
55
64
|
local_bin="$HOME/.local/bin"
|
|
@@ -14,11 +14,18 @@
|
|
|
14
14
|
# args launcher arguments (default [])
|
|
15
15
|
# kind "web" (serves a page), "cli", or "tui" (default "cli")
|
|
16
16
|
# port web only, required for web
|
|
17
|
-
#
|
|
18
|
-
#
|
|
17
|
+
# port_option web only; the option that sets the app's port, e.g. "--port".
|
|
18
|
+
# With it the App Center starts the app on the next free port
|
|
19
|
+
# when the default one is taken; without it a taken port is
|
|
20
|
+
# reported instead.
|
|
21
|
+
# health web only; a path that answers 200 when up. Any HTTP answer
|
|
22
|
+
# on the port counts as running too (an older release may lack
|
|
23
|
+
# the route); absent, anything listening on the port counts.
|
|
19
24
|
# url web only; default "http://127.0.0.1:{port}/"
|
|
20
25
|
# opens_browser web only; true when the app opens the browser itself on
|
|
21
|
-
# start, so the App Center does not open a second tab (default
|
|
26
|
+
# start, so the App Center does not open a second tab (default
|
|
27
|
+
# false). A version ("1.1.1") means from that version on: the
|
|
28
|
+
# App Center opens the page itself for older installed versions.
|
|
22
29
|
# icon a PNG inside the installed package (site-packages-relative);
|
|
23
30
|
# a .ico beside it is used for Windows. Absent or wrong: a
|
|
24
31
|
# generic icon is used.
|
|
@@ -42,6 +49,7 @@ command = "vault-server"
|
|
|
42
49
|
args = ["--resume"]
|
|
43
50
|
kind = "web"
|
|
44
51
|
port = 8002
|
|
52
|
+
port_option = "--port"
|
|
45
53
|
health = "/api/health"
|
|
46
54
|
opens_browser = true
|
|
47
55
|
icon = "talkpipe_vault/apps/static/icon-256.png"
|
|
@@ -55,8 +63,9 @@ package = "talkpipe-writing-assistant"
|
|
|
55
63
|
command = "writing-assistant"
|
|
56
64
|
kind = "web"
|
|
57
65
|
port = 8001
|
|
66
|
+
port_option = "--port"
|
|
58
67
|
health = "/health"
|
|
59
|
-
opens_browser =
|
|
68
|
+
opens_browser = "1.1.1"
|
|
60
69
|
icon = "writing_assistant/app/static/android-chrome-512x512.png"
|
|
61
70
|
data = ["~/.writing_assistant"]
|
|
62
71
|
needs = ["ollama"]
|
|
@@ -68,4 +77,5 @@ package = "talkpipe[all]"
|
|
|
68
77
|
command = "chatterlang_workbench"
|
|
69
78
|
kind = "web"
|
|
70
79
|
port = 4143
|
|
80
|
+
port_option = "--port"
|
|
71
81
|
icon = "talkpipe/app/static/talkpipe_logo.png"
|