TalkPipe 0.12.2__tar.gz → 0.12.3a2__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.
Files changed (275) hide show
  1. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.github/copilot-instructions.md +13 -1
  2. talkpipe-0.12.3a2/.github/prompts/add-segment.prompt.md +57 -0
  3. talkpipe-0.12.3a2/.github/prompts/changelog.prompt.md +23 -0
  4. talkpipe-0.12.3a2/.github/prompts/doc-examples.prompt.md +29 -0
  5. talkpipe-0.12.3a2/.github/prompts/tdd.prompt.md +21 -0
  6. talkpipe-0.12.3a2/.github/prompts/update-entry-points.prompt.md +26 -0
  7. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.github/workflows/ci-cd.yml +7 -7
  8. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/CHANGELOG.md +10 -0
  9. {talkpipe-0.12.2/src/talkpipe.egg-info → talkpipe-0.12.3a2}/PKG-INFO +31 -12
  10. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/README.md +29 -11
  11. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/configuration.md +9 -3
  12. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/extending-talkpipe.md +11 -3
  13. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/guides/model-and-source-configuration.md +16 -6
  14. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/quickstart.md +22 -2
  15. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/pyproject.toml +3 -3
  16. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/makevectordatabase.py +20 -7
  17. talkpipe-0.12.3a2/src/talkpipe/app/static/unit-docs.html +1 -0
  18. talkpipe-0.12.3a2/src/talkpipe/app/static/unit-docs.txt +1 -0
  19. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/chatterlang/compiler.py +91 -7
  20. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/chatterlang/registry.py +28 -4
  21. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/config.py +3 -2
  22. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/prompt_adapter_base.py +26 -1
  23. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/prompt_adapters.py +2 -0
  24. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/prompt_adapters_anthropic.py +3 -1
  25. talkpipe-0.12.3a2/src/talkpipe/llm/prompt_adapters_eliza.py +334 -0
  26. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/prompt_adapters_openai.py +3 -1
  27. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/config.py +8 -1
  28. {talkpipe-0.12.2 → talkpipe-0.12.3a2/src/talkpipe.egg-info}/PKG-INFO +31 -12
  29. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe.egg-info/SOURCES.txt +10 -0
  30. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe.egg-info/requires.txt +1 -0
  31. talkpipe-0.12.3a2/src/talkpipe.egg-info/scm_file_list.json +265 -0
  32. talkpipe-0.12.3a2/src/talkpipe.egg-info/scm_version.json +8 -0
  33. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/chatterlang/test_compiler.py +37 -0
  34. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_prompt_adapters_base.py +10 -0
  35. talkpipe-0.12.3a2/tests/talkpipe/llm/test_prompt_adapters_eliza.py +111 -0
  36. talkpipe-0.12.3a2/uv.lock +3292 -0
  37. talkpipe-0.12.2/src/talkpipe/app/static/unit-docs.html +0 -1
  38. talkpipe-0.12.2/src/talkpipe/app/static/unit-docs.txt +0 -1
  39. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.bandit +0 -0
  40. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/changelog-update/SKILL.md +0 -0
  41. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/doc-example-formatting/SKILL.md +0 -0
  42. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/run-documentation-examples/SKILL.md +0 -0
  43. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/run-documentation-examples/scripts/run_documentation_examples.py +0 -0
  44. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/test-driven-development/SKILL.md +0 -0
  45. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/update-entry-points/SKILL.md +0 -0
  46. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.cursor/skills/update-entry-points/scripts/update_entry_points.py +0 -0
  47. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.dockerignore +0 -0
  48. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.github/CICD.md +0 -0
  49. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.github/ISSUE_TEMPLATE/release-checklist.md +0 -0
  50. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.github/SECURITY.md +0 -0
  51. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.github/dependabot.yml +0 -0
  52. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.gitignore +0 -0
  53. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.safety-policy.yml +0 -0
  54. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.safety-project.ini +0 -0
  55. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.vscode/settings.json +0 -0
  56. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/.vscode/tasks.json +0 -0
  57. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/AGENTS.md +0 -0
  58. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/COPYRIGHT +0 -0
  59. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/Dockerfile +0 -0
  60. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/LICENSE +0 -0
  61. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/bin/config-analyzer.py +0 -0
  62. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/bin/config_bash +0 -0
  63. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/.gitignore +0 -0
  64. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/LLMChat.png +0 -0
  65. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/LLMEvaluateWebPage.png +0 -0
  66. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/README.md +0 -0
  67. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/TalkPipe.png +0 -0
  68. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/TalkPipe.xcf +0 -0
  69. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/README.md +0 -0
  70. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/chatterlang-script.md +0 -0
  71. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/chatterlang-server.md +0 -0
  72. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/chatterlang-workbench.md +0 -0
  73. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/lazy-loading.md +0 -0
  74. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/talkpipe-plugin-manager.md +0 -0
  75. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/api-reference/talkpipe-ref.md +0 -0
  76. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/README.md +0 -0
  77. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/chatterlang.md +0 -0
  78. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/documentation-formatting.md +0 -0
  79. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/metadata-stream.md +0 -0
  80. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/pipe-api.md +0 -0
  81. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/protocol.md +0 -0
  82. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/architecture/streaming.md +0 -0
  83. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/contributing/developer-handbook.md +0 -0
  84. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/guides/container-images.md +0 -0
  85. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/guides/makevectordatabase-and-serverag.md +0 -0
  86. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/guides/model2vec-embeddings.md +0 -0
  87. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/make_structure_diagram.sh +0 -0
  88. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/structure.tex +0 -0
  89. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/talkpipe_architecture.png +0 -0
  90. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/talkpipe_architecture.tex +0 -0
  91. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/talkpipe_diagram.png +0 -0
  92. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/.gitignore +0 -0
  93. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/README.md +0 -0
  94. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/README.md +0 -0
  95. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.bat +0 -0
  96. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.script +0 -0
  97. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.sh +0 -0
  98. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.bat +0 -0
  99. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.script +0 -0
  100. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.sh +0 -0
  101. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.bat +0 -0
  102. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.script +0 -0
  103. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.sh +0 -0
  104. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/stories.json +0 -0
  105. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_1-Document_Indexing/story_search_ui.yml +0 -0
  106. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/README.md +0 -0
  107. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.bat +0 -0
  108. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.script +0 -0
  109. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.sh +0 -0
  110. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.bat +0 -0
  111. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.script +0 -0
  112. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.sh +0 -0
  113. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.bat +0 -0
  114. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.script +0 -0
  115. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.sh +0 -0
  116. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/step_3_extras.py +0 -0
  117. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/story_by_example_ui.yml +0 -0
  118. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/README.md +0 -0
  119. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.bat +0 -0
  120. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.script +0 -0
  121. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.sh +0 -0
  122. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.bat +0 -0
  123. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.script +0 -0
  124. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.sh +0 -0
  125. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.bat +0 -0
  126. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.script +0 -0
  127. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.sh +0 -0
  128. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/file_structure.md +0 -0
  129. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/multi_format_ui.yml +0 -0
  130. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/report_topic_ui.yml +0 -0
  131. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/step3_extras.py +0 -0
  132. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/step_1_extras.py +0 -0
  133. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/docs/tutorials/Tutorial_3_Report_Writing/step_2_extras.py +0 -0
  134. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/pytest.ini +0 -0
  135. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/scripts/extract_documentation_examples.py +0 -0
  136. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/setup.cfg +0 -0
  137. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/setup.py +0 -0
  138. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/__init__.py +0 -0
  139. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/__init__.py +0 -0
  140. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/chatterlang_generate_entry_points.py +0 -0
  141. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/chatterlang_reference_browser.py +0 -0
  142. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/chatterlang_reference_generator.py +0 -0
  143. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/chatterlang_script.py +0 -0
  144. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/chatterlang_serve.py +0 -0
  145. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/chatterlang_workbench.py +0 -0
  146. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/doc_examples.py +0 -0
  147. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/precache_model2vec.py +0 -0
  148. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/serverag.py +0 -0
  149. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/static/.gitignore +0 -0
  150. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/static/favicon.ico +0 -0
  151. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/static/talkpipe_logo.png +0 -0
  152. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/app/talkpipe_plugin_manager.py +0 -0
  153. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/chatterlang/__init__.py +0 -0
  154. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/chatterlang/parsers.py +0 -0
  155. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/__init__.py +0 -0
  156. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/email.py +0 -0
  157. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/extraction.py +0 -0
  158. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/html.py +0 -0
  159. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/image.py +0 -0
  160. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/mongo.py +0 -0
  161. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/rss.py +0 -0
  162. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/text/chunking_units.py +0 -0
  163. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/text/englishnormalize.py +0 -0
  164. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/data/text/operations.py +0 -0
  165. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/__init__.py +0 -0
  166. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/chat.py +0 -0
  167. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/content.py +0 -0
  168. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/embedding.py +0 -0
  169. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/embedding_adapters.py +0 -0
  170. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/embedding_adapters_model2vec.py +0 -0
  171. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/embedding_adapters_openai.py +0 -0
  172. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/embedding_errors.py +0 -0
  173. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/model2vec_embeddings.py +0 -0
  174. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/multimodal.py +0 -0
  175. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/prompt_adapter_memory.py +0 -0
  176. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/prompt_adapters_ollama.py +0 -0
  177. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/llm/vision.py +0 -0
  178. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/operations/__init__.py +0 -0
  179. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/operations/filtering.py +0 -0
  180. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/operations/matrices.py +0 -0
  181. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/operations/thread_ops.py +0 -0
  182. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/operations/transforms.py +0 -0
  183. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/__init__.py +0 -0
  184. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/basic.py +0 -0
  185. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/core.py +0 -0
  186. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/fork.py +0 -0
  187. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/io.py +0 -0
  188. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/math.py +0 -0
  189. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipe/metadata.py +0 -0
  190. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipelines/__init__.py +0 -0
  191. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipelines/basic_rag.py +0 -0
  192. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/pipelines/vector_databases.py +0 -0
  193. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/search/abstract.py +0 -0
  194. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/search/lancedb.py +0 -0
  195. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/search/whoosh.py +0 -0
  196. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/__init__.py +0 -0
  197. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/collections.py +0 -0
  198. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/constants.py +0 -0
  199. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/data_manipulation.py +0 -0
  200. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/doc_extraction.py +0 -0
  201. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/iterators.py +0 -0
  202. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/os.py +0 -0
  203. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe/util/plugin_loader.py +0 -0
  204. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe.egg-info/dependency_links.txt +0 -0
  205. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe.egg-info/entry_points.txt +0 -0
  206. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/src/talkpipe.egg-info/top_level.txt +0 -0
  207. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/stories.json +0 -0
  208. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/test-workflow.yml +0 -0
  209. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/conftest.py +0 -0
  210. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/prompt_adapter_contract_suite.py +0 -0
  211. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/app/test_chatterlang_generate_entry_points.py +0 -0
  212. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/app/test_chatterlang_reference_browser.py +0 -0
  213. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/app/test_chatterlang_reference_generator.py +0 -0
  214. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/app/test_chatterlang_script.py +0 -0
  215. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/app/test_chatterlang_serve.py +0 -0
  216. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/app/test_talkpipe_plugin_manager.py +0 -0
  217. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/chatterlang/test_chatterlang_workbench.py +0 -0
  218. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/chatterlang/test_entry_points.py +0 -0
  219. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/chatterlang/test_parsers.py +0 -0
  220. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/chatterlang/test_registry.py +0 -0
  221. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/sample_feed.pkl +0 -0
  222. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test.docx +0 -0
  223. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_email.py +0 -0
  224. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_extraction.py +0 -0
  225. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_html.py +0 -0
  226. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_html_exceptions.py +0 -0
  227. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_image.py +0 -0
  228. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_mogomock.py +0 -0
  229. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_mongo.py +0 -0
  230. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_mongo_integration.py +0 -0
  231. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/test_rss.py +0 -0
  232. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/text/test_chunking_units.py +0 -0
  233. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/text/test_englishnormalize.py +0 -0
  234. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/data/text/test_operations.py +0 -0
  235. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_chat.py +0 -0
  236. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_content.py +0 -0
  237. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_embedding.py +0 -0
  238. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_embedding_batch.py +0 -0
  239. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_embedding_model2vec.py +0 -0
  240. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_embedding_token_overflow.py +0 -0
  241. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_multimodal.py +0 -0
  242. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_prompt_adapters_anthropic.py +0 -0
  243. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_prompt_adapters_memory.py +0 -0
  244. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_prompt_adapters_ollama.py +0 -0
  245. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_prompt_adapters_openai.py +0 -0
  246. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_vision.py +0 -0
  247. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/llm/test_vision_adapters.py +0 -0
  248. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/operations/test_filtering.py +0 -0
  249. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/operations/test_matrices.py +0 -0
  250. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/operations/test_threading.py +0 -0
  251. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/operations/test_transforms.py +0 -0
  252. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipe/test_basic.py +0 -0
  253. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipe/test_core.py +0 -0
  254. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipe/test_fork.py +0 -0
  255. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipe/test_io.py +0 -0
  256. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipe/test_math.py +0 -0
  257. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipe/test_metadata.py +0 -0
  258. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipelines/test_basic_rag.py +0 -0
  259. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/pipelines/test_vector_databases.py +0 -0
  260. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/search/test_abstract.py +0 -0
  261. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/search/test_lancedb.py +0 -0
  262. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/search/test_lancedb_cache.py +0 -0
  263. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/search/test_whoosh.py +0 -0
  264. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/test_documentation_examples.py +0 -0
  265. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_collections.py +0 -0
  266. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_config.py +0 -0
  267. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_data_manipulation.py +0 -0
  268. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_doc_extraction.py +0 -0
  269. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_iterators.py +0 -0
  270. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_os.py +0 -0
  271. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_plugin_loader.py +0 -0
  272. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/talkpipe/util/test_util.py +0 -0
  273. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/test_doc_examples.py +0 -0
  274. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/test_security_vulnerabilities.py +0 -0
  275. {talkpipe-0.12.2 → talkpipe-0.12.3a2}/tests/testutils.py +0 -0
@@ -1,6 +1,18 @@
1
1
  # TalkPipe AI Coding Instructions
2
2
 
3
- *Cursor users: See [AGENTS.md](../AGENTS.md) and `.cursor/skills/` for additional workflows (TDD, changelog, doc examples, entry points).*
3
+ *Cursor users: See [AGENTS.md](../AGENTS.md) and `.cursor/skills/` for additional workflows.*
4
+
5
+ ## Quick Actions (Prompts)
6
+
7
+ Use these slash commands in VS Code chat (type `/` to invoke):
8
+
9
+ | Prompt | When to use |
10
+ |--------|-------------|
11
+ | `/tdd` | Implement a change with write-fail-fix-pass TDD order |
12
+ | `/add-segment` | Add a new segment or source end-to-end (test → impl → entry-point → changelog) |
13
+ | `/changelog` | Update CHANGELOG.md after a feature or fix |
14
+ | `/update-entry-points` | Regenerate pyproject.toml entry points from decorators |
15
+ | `/doc-examples` | Validate and fix documentation code examples |
4
16
 
5
17
  ## Project Overview
6
18
 
@@ -0,0 +1,57 @@
1
+ ---
2
+ mode: agent
3
+ description: Add a new segment or source to TalkPipe. Use when creating new pipe components. Covers decorator pattern, parameter annotations, entry-point registration, and TDD.
4
+ ---
5
+
6
+ Add a new **$input** to TalkPipe following all project conventions:
7
+
8
+ ## Step 1 — Write a failing test
9
+
10
+ In the appropriate file under `tests/talkpipe/`, write a test that fails without the new component. Run it to confirm failure:
11
+
12
+ ```bash
13
+ source .venv/bin/activate && pytest <test-file> -v
14
+ ```
15
+
16
+ ## Step 2 — Implement the component
17
+
18
+ Place it in the appropriate module under `src/talkpipe/`:
19
+
20
+ ```python
21
+ from typing import Annotated, Iterator, Any
22
+ from talkpipe.pipe.core import segment, field_segment
23
+ from talkpipe import register_segment # or register_source
24
+
25
+ @register_segment("mySegment") # camelCase name used in ChatterLang
26
+ @segment()
27
+ def my_segment(
28
+ items: Iterator[Any],
29
+ param: Annotated[str, "Description of this parameter"] = "default",
30
+ ) -> Iterator[Any]:
31
+ for item in items:
32
+ yield item # process and yield
33
+ ```
34
+
35
+ Rules:
36
+ - Use `@segment()` for iterators; `@field_segment()` for per-field transforms
37
+ - Use `Annotated[type, "description"]` for every parameter (shown in ChatterLang reference)
38
+ - Do NOT add docstrings documenting parameters — use `Annotated` instead
39
+ - For `@field_segment`, the first non-items argument is the `field` parameter by convention
40
+
41
+ ## Step 3 — Register entry point
42
+
43
+ ```bash
44
+ .venv/bin/python .cursor/skills/update-entry-points/scripts/update_entry_points.py
45
+ ```
46
+
47
+ Verify the new entry appears in `pyproject.toml` under `[project.entry-points."talkpipe.segments"]` or `"talkpipe.sources"`.
48
+
49
+ ## Step 4 — Verify test passes
50
+
51
+ ```bash
52
+ pytest <test-file> -v
53
+ ```
54
+
55
+ ## Step 5 — Update CHANGELOG.md
56
+
57
+ Add a bullet under `## Unreleased` describing the new component.
@@ -0,0 +1,23 @@
1
+ ---
2
+ mode: agent
3
+ description: Update CHANGELOG.md after implementing a feature, fixing a bug, or making any user-facing change. Handles update-vs-add logic correctly.
4
+ ---
5
+
6
+ Update [CHANGELOG.md](../../CHANGELOG.md) under the `## Unreleased` section.
7
+
8
+ **Decision logic:**
9
+ 1. Is this a **minor change to an existing feature** already mentioned in Unreleased?
10
+ - Yes → Update that existing bullet; do not add a new one
11
+ - No → Add a new bullet at the top of the Unreleased list
12
+
13
+ 2. Is this **purely internal** (refactor, no user impact)?
14
+ - Yes → Changelog update optional
15
+ - No → Always update
16
+
17
+ **Format rules:**
18
+ - Present tense, sentence case
19
+ - Use backticks for segment/command names (e.g. `mySegment`, `run_doc_examples`)
20
+ - Link to docs with `[text](path)` when helpful
21
+ - Multi-line bullets use 2-space indent for continuation lines
22
+
23
+ The change to document: $input
@@ -0,0 +1,29 @@
1
+ ---
2
+ mode: agent
3
+ description: Validate and fix documentation code examples. Use after editing docs, before committing doc changes, or when examples may be broken. Runs examples via pytest and fixes formatting issues.
4
+ ---
5
+
6
+ Validate documentation code examples following TalkPipe conventions. See [docs/architecture/documentation-formatting.md](../../docs/architecture/documentation-formatting.md) for full formatting rules.
7
+
8
+ ## Run examples via pytest
9
+
10
+ ```bash
11
+ source .venv/bin/activate
12
+ pytest tests/test_doc_examples.py -v
13
+ ```
14
+
15
+ Skip Ollama-dependent examples when Ollama is unavailable:
16
+ ```bash
17
+ pytest tests/test_doc_examples.py -v -m "not requires_ollama"
18
+ ```
19
+
20
+ ## Formatting rules (fix any violations found)
21
+
22
+ - Use **unindented** ` ```python ` fences (no leading spaces before the triple backtick)
23
+ - Always include a language tag (` ```python ` or ` ```chatterlang `)
24
+ - Standalone examples must include all imports and be runnable in isolation
25
+ - Add `# skip-extract` as the first line of blocks that are intentionally non-runnable (fragments, setup code, external-service-only)
26
+
27
+ ## Scope
28
+
29
+ $input
@@ -0,0 +1,21 @@
1
+ ---
2
+ mode: agent
3
+ description: Follow TalkPipe TDD workflow. Use when implementing features, fixing bugs, or adding segments/sources. Enforces write-fail-fix-pass order.
4
+ ---
5
+
6
+ Follow the TalkPipe TDD workflow for this change:
7
+
8
+ 1. **Write or update a test** in `tests/` that fails without the change. Prefer updating an existing test file over creating a new one.
9
+ 2. **Verify the test fails**: run `source .venv/bin/activate && pytest <test-file> -v`
10
+ 3. **Implement the change**
11
+ 4. **Verify the test passes**: re-run the same pytest command
12
+
13
+ Constraints:
14
+ - Tests mirror `src/` structure under `tests/talkpipe/`
15
+ - Keep tests as short as possible while covering the functionality completely
16
+ - Use `pytest.fixture` and `pytest-mock` for dependencies
17
+ - Always use the `.venv` environment; abort and alert if it doesn't exist
18
+
19
+ If a unit test is not reasonable (e.g., requires external LLM, is purely cosmetic), notify the user and explain why.
20
+
21
+ The change to implement: $input
@@ -0,0 +1,26 @@
1
+ ---
2
+ mode: agent
3
+ description: Regenerate and apply talkpipe.sources and talkpipe.segments entry points from @register_source/@register_segment decorators. Use after adding new sources or segments, or when pyproject.toml entry points are out of sync.
4
+ ---
5
+
6
+ Regenerate entry points from `@register_source` and `@register_segment` decorators and update `pyproject.toml`.
7
+
8
+ Run from the project root:
9
+
10
+ ```bash
11
+ source .venv/bin/activate
12
+ python .cursor/skills/update-entry-points/scripts/update_entry_points.py
13
+ ```
14
+
15
+ The script:
16
+ 1. Scans `src/talkpipe/` for `@register_source` and `@register_segment` decorators
17
+ 2. Generates updated entry-point TOML
18
+ 3. Replaces `[project.entry-points."talkpipe.sources"]` and `[project.entry-points."talkpipe.segments"]` in `pyproject.toml`
19
+ 4. Preserves all other `pyproject.toml` content
20
+
21
+ **Dry run** (preview without writing):
22
+ ```bash
23
+ python .cursor/skills/update-entry-points/scripts/update_entry_points.py --dry-run
24
+ ```
25
+
26
+ After running, verify the expected entry appears in `pyproject.toml`.
@@ -20,7 +20,7 @@ jobs:
20
20
  python-version: ['3.11', '3.12', '3.13']
21
21
 
22
22
  steps:
23
- - uses: actions/checkout@v6
23
+ - uses: actions/checkout@v7
24
24
  with:
25
25
  fetch-depth: 0
26
26
 
@@ -30,7 +30,7 @@ jobs:
30
30
  python-version: ${{ matrix.python-version }}
31
31
 
32
32
  - name: Cache pip dependencies
33
- uses: actions/cache@v5
33
+ uses: actions/cache@v6
34
34
  with:
35
35
  path: ~/.cache/pip
36
36
  key: ${{ runner.os }}-pip-${{ hashFiles('pyproject.toml') }}
@@ -48,7 +48,7 @@ jobs:
48
48
 
49
49
  - name: Upload coverage to Codecov
50
50
  if: matrix.python-version == '3.11'
51
- uses: codecov/codecov-action@v6
51
+ uses: codecov/codecov-action@v7
52
52
  with:
53
53
  files: ./coverage.xml
54
54
  flags: unittests
@@ -60,7 +60,7 @@ jobs:
60
60
  SAFETY_API_KEY: ${{ secrets.SAFETY_API_KEY }}
61
61
 
62
62
  steps:
63
- - uses: actions/checkout@v6
63
+ - uses: actions/checkout@v7
64
64
  with:
65
65
  fetch-depth: 0
66
66
 
@@ -104,7 +104,7 @@ jobs:
104
104
 
105
105
  steps:
106
106
  - name: Checkout repository
107
- uses: actions/checkout@v6
107
+ uses: actions/checkout@v7
108
108
 
109
109
  - name: Log in to Container Registry
110
110
  uses: docker/login-action@v4
@@ -177,7 +177,7 @@ jobs:
177
177
 
178
178
  steps:
179
179
  - name: Checkout repository
180
- uses: actions/checkout@v6
180
+ uses: actions/checkout@v7
181
181
 
182
182
  - name: Initialize CodeQL
183
183
  uses: github/codeql-action/init@v4
@@ -196,7 +196,7 @@ jobs:
196
196
  if: github.event_name == 'release' && github.event.action == 'published'
197
197
 
198
198
  steps:
199
- - uses: actions/checkout@v6
199
+ - uses: actions/checkout@v7
200
200
  with:
201
201
  fetch-depth: 0
202
202
 
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - Added a local `eliza` prompt-adapter source for `llmPrompt` and guided-generation
6
+ segments. The adapter is deterministic (no external API keys), uses the configured
7
+ model name as ELIZA's self-reference, supports multi-turn memory/fact callbacks,
8
+ and provides generic structured outputs for score/binary/term extraction schemas.
9
+ Added a matching ChatterLang example to model/source configuration docs.
10
+ - Fixed single-turn (`multi_turn=False`) prompt-adapter state handling so `_summary_message`
11
+ is cleared after each response and does not leak conversation memory between calls.
12
+ - Fixed a CI import failure in `talkpipe.chatterlang.registry` by importing `List`
13
+ for the `available_names` return annotation, preventing `NameError` during module import.
14
+
5
15
  ## v0.12.2
6
16
  - Added batch embedding support: embedding adapters expose `execute_one` and `execute_batch`;
7
17
  `execute` remains as a deprecated alias for `execute_one` (removed in 1.0). `llmEmbed` extends
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: talkpipe
3
- Version: 0.12.2
3
+ Version: 0.12.3a2
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>
@@ -36,6 +36,7 @@ Requires-Dist: pyyaml
36
36
  Requires-Dist: greenlet
37
37
  Requires-Dist: networkx
38
38
  Requires-Dist: starlette>=0.49.1
39
+ Requires-Dist: build>=1.5.0
39
40
  Provides-Extra: dev
40
41
  Requires-Dist: pytest; extra == "dev"
41
42
  Requires-Dist: pytest-mock; extra == "dev"
@@ -79,7 +80,7 @@ This README is a high-level overview. Use the **[documentation map](#documentati
79
80
 
80
81
  ## What Can You Do With TalkPipe?
81
82
 
82
- - **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just 2 lines of code
83
+ - **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just a few lines of code
83
84
  - **Process Documents** - Extract text from PDFs, analyze research papers, score content relevance
84
85
  - **Build RAG Pipelines** - Create end-to-end Retrieval-Augmented Generation workflows with vector databases
85
86
  - **Analyze Web Content** - Download web pages (respecting robots.txt), extract readable text, and summarize
@@ -128,7 +129,7 @@ These applications are entry points for different usage scenarios, from interact
128
129
 
129
130
  ## Quick Start
130
131
 
131
- **Requirements:** Python 3.11 or newer.
132
+ **Requirements:** Python 3.11 or newer. Check your version first with `python3 --version` — it must report 3.11 or higher before installing.
132
133
 
133
134
  ```bash
134
135
  pip install talkpipe
@@ -144,14 +145,32 @@ pip install talkpipe[model2vec] # In-process static embeddings (also in [all])
144
145
  # Or: pip install talkpipe[all]
145
146
  ```
146
147
 
147
- Configure API keys and provider URLs via environment variables (for example `TALKPIPE_openai_api_key`) or `~/.talkpipe.toml`. If TalkPipe runs on a different machine than your Ollama server, set `TALKPIPE_OLLAMA_SERVER_URL` to that host. See **[Configuration](docs/architecture/configuration.md)** for details and ChatterLang `$var` substitution.
148
+ Configure API keys and provider URLs via environment variables (for example `OPENAI_API_KEY` and `ANTHROPIC_API_KEY`) or `~/.talkpipe.toml`. If TalkPipe runs on a different machine than your Ollama server, set `TALKPIPE_OLLAMA_SERVER_URL` to that host. See **[Configuration](docs/architecture/configuration.md)** for details and ChatterLang `$var` substitution.
149
+
150
+ Quick local syntax check (no LLM server required):
151
+
152
+ > **Note:** `source="eliza"` is **not** an LLM provider. It is a local, deterministic adapter intended for experimenting with TalkPipe/ChatterLang syntax and multi-turn flow when you do not yet have Ollama/OpenAI/Anthropic access.
153
+
154
+ ```python
155
+ from talkpipe.chatterlang import compiler
156
+
157
+ script = '| print | llmPrompt[model="Dr. Eliza", source="eliza", multi_turn=True] | print'
158
+ chat = compiler.compile(script).as_function(single_in=True, single_out=True)
159
+
160
+ chat("Hello, my name is Alice.")
161
+ chat("What's my name?")
162
+ ```
148
163
 
149
164
  Multi-turn chat in a few lines:
150
165
 
166
+ > **Prerequisite:** this example uses Ollama, which is a separate application, not just the `talkpipe[ollama]` Python package. Install and start it from https://ollama.com/download, then pull the model with `ollama pull llama3.2`. Cloud users can skip Ollama and substitute `source="openai"` or `source="anthropic"` (see the commented variants below).
167
+
151
168
  ```python
152
169
  from talkpipe.chatterlang import compiler
153
170
 
154
171
  script = '| print | llmPrompt[model="llama3.2", source="ollama", multi_turn=True] | print'
172
+ # Using OpenAI: model="gpt-4o-mini", source="openai" (set OPENAI_API_KEY)
173
+ # Using Anthropic: model="claude-haiku-4-5", source="anthropic" (set ANTHROPIC_API_KEY)
155
174
  chat = compiler.compile(script).as_function(single_in=True, single_out=True)
156
175
 
157
176
  response = chat("Hello! My name is Alice.")
@@ -581,7 +600,7 @@ smtp_port = 587
581
600
  Environment variables use the `TALKPIPE_` prefix:
582
601
  ```bash
583
602
  export TALKPIPE_email_password="your-password"
584
- export TALKPIPE_openai_api_key="sk-..."
603
+ export OPENAI_API_KEY="sk-..."
585
604
  ```
586
605
 
587
606
  ### Performance Optimization
@@ -638,17 +657,17 @@ def multiplyBy(items, factor=2):
638
657
  for item in items:
639
658
  yield item * factor
640
659
 
641
- # Use it to double the Fibonacci numbers
660
+ # Use it to multiply each value in the range by 3
642
661
  pipeline = arange(lower=5, upper=10) | multiplyBy(factor=3) | io.Print()
643
662
  result = pipeline.as_function(single_out=False)()
644
663
 
645
664
  # Output:
646
- # 0
647
- # 3
648
- # 3
649
- # 6
650
- # 9
651
- # Returns: [0, 3, 3, 6, 9]
665
+ # 15
666
+ # 18
667
+ # 21
668
+ # 24
669
+ # 27
670
+ # Returns: [15, 18, 21, 24, 27]
652
671
  ```
653
672
 
654
673
  **Field Segments** provide a convenient way to create 1:1 segments:
@@ -20,7 +20,7 @@ This README is a high-level overview. Use the **[documentation map](#documentati
20
20
 
21
21
  ## What Can You Do With TalkPipe?
22
22
 
23
- - **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just 2 lines of code
23
+ - **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just a few lines of code
24
24
  - **Process Documents** - Extract text from PDFs, analyze research papers, score content relevance
25
25
  - **Build RAG Pipelines** - Create end-to-end Retrieval-Augmented Generation workflows with vector databases
26
26
  - **Analyze Web Content** - Download web pages (respecting robots.txt), extract readable text, and summarize
@@ -69,7 +69,7 @@ These applications are entry points for different usage scenarios, from interact
69
69
 
70
70
  ## Quick Start
71
71
 
72
- **Requirements:** Python 3.11 or newer.
72
+ **Requirements:** Python 3.11 or newer. Check your version first with `python3 --version` — it must report 3.11 or higher before installing.
73
73
 
74
74
  ```bash
75
75
  pip install talkpipe
@@ -85,14 +85,32 @@ pip install talkpipe[model2vec] # In-process static embeddings (also in [all])
85
85
  # Or: pip install talkpipe[all]
86
86
  ```
87
87
 
88
- Configure API keys and provider URLs via environment variables (for example `TALKPIPE_openai_api_key`) or `~/.talkpipe.toml`. If TalkPipe runs on a different machine than your Ollama server, set `TALKPIPE_OLLAMA_SERVER_URL` to that host. See **[Configuration](docs/architecture/configuration.md)** for details and ChatterLang `$var` substitution.
88
+ Configure API keys and provider URLs via environment variables (for example `OPENAI_API_KEY` and `ANTHROPIC_API_KEY`) or `~/.talkpipe.toml`. If TalkPipe runs on a different machine than your Ollama server, set `TALKPIPE_OLLAMA_SERVER_URL` to that host. See **[Configuration](docs/architecture/configuration.md)** for details and ChatterLang `$var` substitution.
89
+
90
+ Quick local syntax check (no LLM server required):
91
+
92
+ > **Note:** `source="eliza"` is **not** an LLM provider. It is a local, deterministic adapter intended for experimenting with TalkPipe/ChatterLang syntax and multi-turn flow when you do not yet have Ollama/OpenAI/Anthropic access.
93
+
94
+ ```python
95
+ from talkpipe.chatterlang import compiler
96
+
97
+ script = '| print | llmPrompt[model="Dr. Eliza", source="eliza", multi_turn=True] | print'
98
+ chat = compiler.compile(script).as_function(single_in=True, single_out=True)
99
+
100
+ chat("Hello, my name is Alice.")
101
+ chat("What's my name?")
102
+ ```
89
103
 
90
104
  Multi-turn chat in a few lines:
91
105
 
106
+ > **Prerequisite:** this example uses Ollama, which is a separate application, not just the `talkpipe[ollama]` Python package. Install and start it from https://ollama.com/download, then pull the model with `ollama pull llama3.2`. Cloud users can skip Ollama and substitute `source="openai"` or `source="anthropic"` (see the commented variants below).
107
+
92
108
  ```python
93
109
  from talkpipe.chatterlang import compiler
94
110
 
95
111
  script = '| print | llmPrompt[model="llama3.2", source="ollama", multi_turn=True] | print'
112
+ # Using OpenAI: model="gpt-4o-mini", source="openai" (set OPENAI_API_KEY)
113
+ # Using Anthropic: model="claude-haiku-4-5", source="anthropic" (set ANTHROPIC_API_KEY)
96
114
  chat = compiler.compile(script).as_function(single_in=True, single_out=True)
97
115
 
98
116
  response = chat("Hello! My name is Alice.")
@@ -522,7 +540,7 @@ smtp_port = 587
522
540
  Environment variables use the `TALKPIPE_` prefix:
523
541
  ```bash
524
542
  export TALKPIPE_email_password="your-password"
525
- export TALKPIPE_openai_api_key="sk-..."
543
+ export OPENAI_API_KEY="sk-..."
526
544
  ```
527
545
 
528
546
  ### Performance Optimization
@@ -579,17 +597,17 @@ def multiplyBy(items, factor=2):
579
597
  for item in items:
580
598
  yield item * factor
581
599
 
582
- # Use it to double the Fibonacci numbers
600
+ # Use it to multiply each value in the range by 3
583
601
  pipeline = arange(lower=5, upper=10) | multiplyBy(factor=3) | io.Print()
584
602
  result = pipeline.as_function(single_out=False)()
585
603
 
586
604
  # Output:
587
- # 0
588
- # 3
589
- # 3
590
- # 6
591
- # 9
592
- # Returns: [0, 3, 3, 6, 9]
605
+ # 15
606
+ # 18
607
+ # 21
608
+ # 24
609
+ # 27
610
+ # Returns: [15, 18, 21, 24, 27]
593
611
  ```
594
612
 
595
613
  **Field Segments** provide a convenient way to create 1:1 segments:
@@ -27,7 +27,8 @@ logger_levels = "root:INFO,talkpipe:DEBUG"
27
27
  logger_files = "talkpipe:/tmp/talkpipe.log,root:/tmp/app.log"
28
28
 
29
29
  # LLM Configuration
30
- openai_api_key = "your-api-key-here"
30
+ default_model_name = "llama3.2"
31
+ default_model_source = "ollama"
31
32
  ollama_base_url = "http://localhost:11434"
32
33
 
33
34
  # Server Configuration
@@ -58,6 +59,10 @@ The configuration system loads a single TOML file from:
58
59
 
59
60
  All TalkPipe environment variables use the prefix `TALKPIPE_` followed by the configuration key name in uppercase.
60
61
 
62
+ Provider SDK credentials are separate from TalkPipe config keys:
63
+ - OpenAI SDK reads `OPENAI_API_KEY`
64
+ - Anthropic SDK reads `ANTHROPIC_API_KEY`
65
+
61
66
  #### Environment Variable Examples
62
67
 
63
68
  ```bash
@@ -211,7 +216,8 @@ In the script:
211
216
  **Best Practices:**
212
217
  ```bash
213
218
  # ✅ Use environment variables for secrets
214
- export TALKPIPE_OPENAI_API_KEY="sk-your-secret-key"
219
+ export OPENAI_API_KEY="sk-your-secret-key"
220
+ export ANTHROPIC_API_KEY="your-anthropic-key"
215
221
 
216
222
  # ❌ Avoid putting secrets in config files
217
223
  # ~/.talkpipe.toml
@@ -281,7 +287,7 @@ config = get_config(reload=True) # Re-reads from sources
281
287
  ```bash
282
288
  # Use environment variables for local development
283
289
  export TALKPIPE_LOGGER_LEVELS="root:DEBUG,talkpipe:DEBUG"
284
- export TALKPIPE_OPENAI_API_KEY="sk-dev-key"
290
+ export OPENAI_API_KEY="sk-dev-key"
285
291
  export TALKPIPE_DEFAULT_PORT="8080"
286
292
 
287
293
  # Use local configuration file for persistent settings
@@ -6,6 +6,8 @@ This guide explains how to add custom **sources** (pipeline starters) and **segm
6
6
 
7
7
  You usually implement a segment as a small function and attach two decorators: `@segment()` turns the function into a segment class factory, and `@register_segment("nameInChatterLang")` adds that class to the global registry under one or more ChatterLang names.
8
8
 
9
+ > **Import note:** `talkpipe` re-exports `segment`, `register_segment`, `compile`, and friends at the top level as convenience shortcuts. `from talkpipe import segment, register_segment` and `from talkpipe.chatterlang import registry, compiler` (used in the README) are equivalent — pick one style and use it consistently. This guide uses the top-level shortcuts.
10
+
9
11
  ```python
10
12
  from typing import Iterator, Any
11
13
 
@@ -285,14 +287,20 @@ INPUT FROM apiData(url="https://api.example.com/data")
285
287
 
286
288
  ### Entry points for distributable components
287
289
 
288
- For code in **this** repository, after adding or renaming `@register_segment` / `@register_source` classes, regenerate `pyproject.toml` entry points with:
290
+ Segments and sources are discovered through the **`talkpipe.segments`** and **`talkpipe.sources`** entry point groups. How you keep those aligned with your decorators depends on whether you are writing a third-party package or contributing to the TalkPipe repository itself.
291
+
292
+ #### For third-party plugin authors
293
+
294
+ In your **own** package, declare the same groups in your `pyproject.toml`, pointing each name at `module:ClassName` (the class your decorators attach to). This is all a distributable plugin needs — you do **not** need any TalkPipe repo tooling.
295
+
296
+ #### For TalkPipe repo contributors (this repository only)
297
+
298
+ When working inside the TalkPipe source checkout, after adding or renaming `@register_segment` / `@register_source` classes, regenerate `pyproject.toml` entry points with the repo-internal script (not shipped with the installed package):
289
299
 
290
300
  `python .cursor/skills/update-entry-points/scripts/update_entry_points.py`
291
301
 
292
302
  (from the project root; see [protocol.md](protocol.md)). That keeps **`talkpipe.segments`** and **`talkpipe.sources`** aligned with decorators so installs and lazy loading resolve the right modules.
293
303
 
294
- In a **separate** package, declare the same groups in your own `pyproject.toml`, pointing each name at `module:ClassName` (the class your decorators attach to).
295
-
296
304
  ### `talkpipe.plugins` (optional)
297
305
 
298
306
  The `talkpipe.plugins` entry point group is separate from per-segment registration. Importing `talkpipe` runs `load_plugins()`, which loads each plugin entry point. Prefer pointing the entry point at a **module** so importing it runs your `@register_*` decorators; optionally define a module-level `initialize_plugin()` for extra setup. See [TalkPipe Plugin Manager](../api-reference/talkpipe-plugin-manager.md) for CLI (`talkpipe_plugins`) and configuration details.
@@ -117,7 +117,7 @@ The first piece of the pattern above is the `source` value itself. Sources are r
117
117
 
118
118
  | Segment | Registered sources |
119
119
  |---------|-------------------|
120
- | **`llmPrompt`** (chat) | `ollama`, `openai`, `anthropic` |
120
+ | **`llmPrompt`** (chat) | `ollama`, `openai`, `anthropic`, `eliza` |
121
121
  | **`llmVisionPrompt`** (multimodal chat) | `ollama`, `openai`, `anthropic` |
122
122
  | **`llmEmbed`** (embeddings) | `ollama`, `openai`, `model2vec` |
123
123
 
@@ -344,7 +344,17 @@ INPUT FROM prompt[data="Hello"]
344
344
  | print
345
345
  ```
346
346
 
347
- ### 2. Global defaults in TOML
347
+ ### 2. Local Eliza source (no provider API key)
348
+
349
+ `eliza` is a local adapter. Set `model` to the name Eliza should use when referring to itself.
350
+
351
+ ```chatterlang
352
+ INPUT FROM prompt[data="I'm feeling stuck on a bug."]
353
+ | llmPrompt[model="Dr. Eliza", source="eliza", multi_turn=True]
354
+ | print
355
+ ```
356
+
357
+ ### 3. Global defaults in TOML
348
358
 
349
359
  With `default_model_name` and `default_model_source` set in `~/.talkpipe.toml`:
350
360
 
@@ -354,7 +364,7 @@ INPUT FROM prompt[data="Hello"]
354
364
  | print
355
365
  ```
356
366
 
357
- ### 3. Environment-only defaults (containers / CI)
367
+ ### 4. Environment-only defaults (containers / CI)
358
368
 
359
369
  ```bash
360
370
  export TALKPIPE_default_model_name=llama3.2
@@ -385,7 +395,7 @@ ENV TALKPIPE_default_model_name=gpt-4o \
385
395
 
386
396
  `OPENAI_API_KEY` is intentionally left to the runtime (a Docker secret, Kubernetes secret, or `--env` flag) rather than baked into the image.
387
397
 
388
- ### 4. ChatterLang `$key` and CLI overrides
398
+ ### 5. ChatterLang `$key` and CLI overrides
389
399
 
390
400
  ```bash
391
401
  chatterlang_script --script 'INPUT FROM prompt[data="Hi"] | llmPrompt[model=$default_model_name, source=$default_model_source] | print' \
@@ -393,7 +403,7 @@ chatterlang_script --script 'INPUT FROM prompt[data="Hi"] | llmPrompt[model=$def
393
403
  --default_model_source ollama
394
404
  ```
395
405
 
396
- ### 5. Pipe API with config fallback
406
+ ### 6. Pipe API with config fallback
397
407
 
398
408
  ```python
399
409
  from talkpipe.llm.chat import LLMPrompt
@@ -409,7 +419,7 @@ segment = LLMPrompt(system_prompt="You are helpful.")
409
419
  | Symptom | What to check |
410
420
  |---------|----------------|
411
421
  | `Model name and source must be provided` | Set `model` and `source` on the segment, or add `default_model_name` and `default_model_source` (or embedding equivalents for `llmEmbed`). |
412
- | `Unknown source` | Chat / vision: use `ollama`, `openai`, or `anthropic`. Embeddings: use `ollama` or `openai` (or register additional adapters). |
422
+ | `Unknown source` | Chat / vision: use `ollama`, `openai`, `anthropic`, or `eliza` (chat only). Embeddings: use `ollama`, `openai`, or `model2vec` (or register additional adapters). |
413
423
  | `llmVisionPrompt` errors at the provider with model-not-found / unsupported-input | `llmVisionPrompt` reads `default_model_name` / `default_model_source` (the chat defaults). Set `model` and `source` explicitly on the segment, or change the chat defaults to a vision-capable model. |
414
424
  | Ollama connection refused | Run `ollama serve` or set `OLLAMA_SERVER_URL` / `TALKPIPE_OLLAMA_SERVER_URL`. |
415
425
  | OpenAI / Anthropic auth errors | Set `OPENAI_API_KEY` or `ANTHROPIC_API_KEY`; these are not read from `TALKPIPE_*` model keys. |
@@ -81,6 +81,26 @@ pipeline = compiler.compile(script).as_function(single_out=False)
81
81
  pipeline() # Skips "hello", prints 1, 2, 3, 4
82
82
  ```
83
83
 
84
+ ## Local Syntax Sandbox (No LLM Backend Needed)
85
+
86
+ If you do not have Ollama/OpenAI/Anthropic access yet, you can still practice
87
+ TalkPipe and ChatterLang syntax with `source="eliza"`.
88
+
89
+ `eliza` is **not** an LLM provider. It is a local deterministic adapter meant for
90
+ testing pipeline shape, parameter wiring, and multi-turn flow.
91
+
92
+ ### ChatterLang
93
+
94
+ ```python
95
+ from talkpipe.chatterlang import compiler
96
+
97
+ script = '| llmPrompt[model="Dr. Eliza", source="eliza", multi_turn=True] | print'
98
+ chat = compiler.compile(script).as_function(single_in=True, single_out=True)
99
+
100
+ chat("Hello, my name is Alice.")
101
+ chat("What's my name?")
102
+ ```
103
+
84
104
  ## Your First Pipeline (With LLM)
85
105
 
86
106
  Requires `talkpipe[ollama]` and Ollama running with a model (e.g. `ollama pull llama3.2`).
@@ -137,11 +157,11 @@ Open http://localhost:2025/stream to chat with the LLM.
137
157
  For a minimal document Q&A workflow without writing scripts:
138
158
 
139
159
  ```bash
140
- makevectordatabase "docs/*.md" --path ./mydb
160
+ makevectordatabase "docs/*.md" --path ./mydb --embedding_source ollama --embedding_model nomic-embed-text
141
161
  serverag --path ./mydb
142
162
  ```
143
163
 
144
- Then open http://localhost:2026/stream. See [makevectordatabase and serverag](guides/makevectordatabase-and-serverag.md) for full options.
164
+ `--embedding_source` and `--embedding_model` are required unless you set defaults in `~/.talkpipe.toml`; the example above needs Ollama running with the embedding model pulled (`ollama pull nomic-embed-text`). Then open http://localhost:2026/stream. See [makevectordatabase and serverag](guides/makevectordatabase-and-serverag.md) for full options.
145
165
 
146
166
  ## Next Steps
147
167
 
@@ -43,11 +43,11 @@ dependencies = [
43
43
  'pyyaml',
44
44
  'greenlet',
45
45
  'networkx',
46
-
47
46
  # Security override: starlette is a transitive dependency, pinned here
48
- # to fix CVE-2025-62727 (DoS vulnerability). Remove once parent
47
+ # to fix CVE-2025-62727 (DoS vulnerability). Remove once parent
49
48
  # dependency (e.g., FastAPI) requires starlette>=0.49.1
50
- "starlette>=0.49.1"
49
+ "starlette>=0.49.1",
50
+ "build>=1.5.0",
51
51
  ]
52
52
  dynamic = ["version"]
53
53