affinity-sdk 2.0.5__tar.gz → 2.0.6__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 (710) hide show
  1. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/CHANGELOG.md +15 -5
  2. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/PKG-INFO +1 -1
  3. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/field_resolver.py +28 -26
  4. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/plugin.json +1 -1
  5. affinity_sdk-2.0.6/mcp/.mcp-bash/VERSION +1 -0
  6. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/tools_policy.sh +99 -5
  7. affinity_sdk-2.0.6/mcp/.mcp-bash/vendor.json +1 -0
  8. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.registry/commands.generated.json +2 -2
  9. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/CHANGELOG.md +13 -0
  10. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/COMPATIBILITY +2 -0
  11. affinity_sdk-2.0.6/mcp/VERSION +1 -0
  12. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/mcp-bash.lock +2 -2
  13. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/server.d/server.meta.json +1 -1
  14. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/.claude-plugin/plugin.json +1 -1
  15. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/hooks/pre-xaffinity.sh +2 -2
  16. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/hooks/session-setup.sh +1 -1
  17. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/SKILL.md +2 -2
  18. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/references/setup.md +1 -1
  19. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/pyproject.toml +1 -1
  20. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/cassettes/company-lists-status.cassette.json +87 -87
  21. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/cassettes/hook-blocks-without-key.cassette.json +64 -64
  22. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/cassettes/no-key-skill-path.cassette.json +101 -108
  23. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/cassettes/status-history.cassette.json +117 -124
  24. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_field_resolver.py +35 -0
  25. affinity_sdk-2.0.5/mcp/.mcp-bash/VERSION +0 -1
  26. affinity_sdk-2.0.5/mcp/.mcp-bash/vendor.json +0 -1
  27. affinity_sdk-2.0.5/mcp/VERSION +0 -1
  28. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.claude-plugin/marketplace.json +0 -0
  29. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.cursor/rules/test-data-privacy.mdc +0 -0
  30. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.editorconfig +0 -0
  31. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.env.example +0 -0
  32. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.gitattributes +0 -0
  33. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/CODEOWNERS +0 -0
  34. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  35. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  36. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/PULL_REQUEST_TEMPLATE/cli_command.md +0 -0
  37. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/PULL_REQUEST_TEMPLATE/release.md +0 -0
  38. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/dependabot.yml +0 -0
  39. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/labels.yml +0 -0
  40. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/mcp-release-install-footer.md +0 -0
  41. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/pull_request_template.md +0 -0
  42. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/release-install-footer.md +0 -0
  43. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/ci.yml +0 -0
  44. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/cowork-replay.yml +0 -0
  45. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/docs.yml +0 -0
  46. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/labels.yml +0 -0
  47. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/linkcheck.yml +0 -0
  48. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/openapi-validation.yml +0 -0
  49. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/plugin-build.yml +0 -0
  50. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/plugin-release.yml +0 -0
  51. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/release-detect.yml +0 -0
  52. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/release.yml +0 -0
  53. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.github/workflows/version-check.yml +0 -0
  54. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.gitignore +0 -0
  55. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/.pre-commit-config.yaml +0 -0
  56. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/AGENTS.md +0 -0
  57. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/CODE_OF_CONDUCT.md +0 -0
  58. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/CONTRIBUTING.md +0 -0
  59. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/LICENSE +0 -0
  60. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/README.md +0 -0
  61. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/SECURITY.md +0 -0
  62. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/VERSIONING.md +0 -0
  63. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/__init__.py +0 -0
  64. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_filtering/__init__.py +0 -0
  65. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_filtering/dates.py +0 -0
  66. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_filtering/filter_text.py +0 -0
  67. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_filtering/pushdown.py +0 -0
  68. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_filtering/search.py +0 -0
  69. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_filtering/where.py +0 -0
  70. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_internal/__init__.py +0 -0
  71. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/_internal/keyfile.py +0 -0
  72. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/api_versions.py +0 -0
  73. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/__init__.py +0 -0
  74. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/__main__.py +0 -0
  75. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/_update_worker.py +0 -0
  76. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/async_utils.py +0 -0
  77. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/click_compat.py +0 -0
  78. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/__init__.py +0 -0
  79. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_entity_field.py +0 -0
  80. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_entity_files_dump.py +0 -0
  81. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_entity_files_read.py +0 -0
  82. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_entity_files_upload.py +0 -0
  83. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_list_entry_fields.py +0 -0
  84. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_org_reads.py +0 -0
  85. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_search_common.py +0 -0
  86. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/_v1_parsing.py +0 -0
  87. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/company_cmds.py +0 -0
  88. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/completion_cmd.py +0 -0
  89. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/config_cmds.py +0 -0
  90. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/discovery_cmds.py +0 -0
  91. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/entry_cmds.py +0 -0
  92. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/field_cmds.py +0 -0
  93. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/file_cmds.py +0 -0
  94. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/file_url_cmd.py +0 -0
  95. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/interaction_cmds.py +0 -0
  96. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/list_cmds.py +0 -0
  97. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/note_cmds.py +0 -0
  98. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/opportunity_cmds.py +0 -0
  99. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/org_cmds.py +0 -0
  100. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/org_read_cmds.py +0 -0
  101. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/person_cmds.py +0 -0
  102. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/query_cmd.py +0 -0
  103. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/relationship_strength_cmds.py +0 -0
  104. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/reminder_cmds.py +0 -0
  105. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/resolve_url_cmd.py +0 -0
  106. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/session_cmds.py +0 -0
  107. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/task_cmds.py +0 -0
  108. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/transcript_cmds.py +0 -0
  109. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/version_cmd.py +0 -0
  110. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/webhook_cmds.py +0 -0
  111. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/commands/whoami_cmd.py +0 -0
  112. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/config.py +0 -0
  113. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/confirm.py +0 -0
  114. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/constants.py +0 -0
  115. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/context.py +0 -0
  116. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/csv_utils.py +0 -0
  117. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/date_utils.py +0 -0
  118. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/decorators.py +0 -0
  119. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/entity_search.py +0 -0
  120. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/errors.py +0 -0
  121. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/field_utils.py +0 -0
  122. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/formatters.py +0 -0
  123. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/help_json.py +0 -0
  124. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/interaction_utils.py +0 -0
  125. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/list_search.py +0 -0
  126. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/logging.py +0 -0
  127. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/main.py +0 -0
  128. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/mcp_limits.py +0 -0
  129. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/options.py +0 -0
  130. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/paths.py +0 -0
  131. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/progress.py +0 -0
  132. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/__init__.py +0 -0
  133. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/aggregates.py +0 -0
  134. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/cursor.py +0 -0
  135. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/dates.py +0 -0
  136. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/exceptions.py +0 -0
  137. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/executor.py +0 -0
  138. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/filter_text.py +0 -0
  139. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/filters.py +0 -0
  140. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/models.py +0 -0
  141. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/output.py +0 -0
  142. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/parser.py +0 -0
  143. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/planner.py +0 -0
  144. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/progress.py +0 -0
  145. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/pushdown.py +0 -0
  146. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/query/schema.py +0 -0
  147. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/render.py +0 -0
  148. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/resolve.py +0 -0
  149. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/resolvers.py +0 -0
  150. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/results.py +0 -0
  151. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/runner.py +0 -0
  152. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/serialization.py +0 -0
  153. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/session_cache.py +0 -0
  154. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/types.py +0 -0
  155. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/cli/update_check.py +0 -0
  156. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/client.py +0 -0
  157. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/clients/__init__.py +0 -0
  158. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/clients/http.py +0 -0
  159. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/clients/pipeline.py +0 -0
  160. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/compare.py +0 -0
  161. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/criteria.py +0 -0
  162. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/downloads.py +0 -0
  163. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/exceptions.py +0 -0
  164. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/field_resolve_utils.py +0 -0
  165. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/filters.py +0 -0
  166. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/hooks.py +0 -0
  167. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/inbound_webhooks.py +0 -0
  168. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/__init__.py +0 -0
  169. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/discovery.py +0 -0
  170. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/entities.py +0 -0
  171. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/interactions_v2.py +0 -0
  172. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/org.py +0 -0
  173. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/pagination.py +0 -0
  174. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/rate_limit_snapshot.py +0 -0
  175. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/relationships_v2.py +0 -0
  176. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/search.py +0 -0
  177. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/secondary.py +0 -0
  178. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/transcripts.py +0 -0
  179. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/models/types.py +0 -0
  180. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/policies.py +0 -0
  181. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/progress.py +0 -0
  182. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/py.typed +0 -0
  183. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/__init__.py +0 -0
  184. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_batch_interactions.py +0 -0
  185. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_discovery.py +0 -0
  186. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_dropdown_options.py +0 -0
  187. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_field_listing.py +0 -0
  188. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_field_updates.py +0 -0
  189. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_note_html.py +0 -0
  190. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_org_reads.py +0 -0
  191. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_search.py +0 -0
  192. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_single_field.py +0 -0
  193. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/_v2_filters.py +0 -0
  194. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/companies.py +0 -0
  195. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/lists.py +0 -0
  196. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/opportunities.py +0 -0
  197. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/org.py +0 -0
  198. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/persons.py +0 -0
  199. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/rate_limits.py +0 -0
  200. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/reminders.py +0 -0
  201. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/search.py +0 -0
  202. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/tasks.py +0 -0
  203. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/transcripts.py +0 -0
  204. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/v1_only.py +0 -0
  205. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/services/webhooks.py +0 -0
  206. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/affinity/types.py +0 -0
  207. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/codecov.yml +0 -0
  208. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/cli-development-guide.md +0 -0
  209. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/ai-integrations/index.md +0 -0
  210. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/changelog.md +0 -0
  211. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/cli/commands.md +0 -0
  212. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/cli/index.md +0 -0
  213. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/cli/scripting.md +0 -0
  214. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/cli-reference.md +0 -0
  215. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/examples.md +0 -0
  216. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/getting-started.md +0 -0
  217. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/glossary.md +0 -0
  218. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/affinity-official-mcp-comparison.md +0 -0
  219. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/api-versions-and-routing.md +0 -0
  220. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/api-versions.md +0 -0
  221. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/authentication.md +0 -0
  222. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/claude-code-plugins.md +0 -0
  223. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/configuration.md +0 -0
  224. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/csv-export.md +0 -0
  225. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/datetime-handling.md +0 -0
  226. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/debugging-hooks.md +0 -0
  227. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/errors-and-retries.md +0 -0
  228. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/field-types-and-values.md +0 -0
  229. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/field-values.md +0 -0
  230. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/filtering.md +0 -0
  231. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/ids-and-types.md +0 -0
  232. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/migrating-to-2.md +0 -0
  233. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/models.md +0 -0
  234. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/opportunity-associations.md +0 -0
  235. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/pagination.md +0 -0
  236. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/performance.md +0 -0
  237. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/query-command.md +0 -0
  238. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/rate-limits.md +0 -0
  239. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/sync-vs-async.md +0 -0
  240. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/guides/webhooks.md +0 -0
  241. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/index.md +0 -0
  242. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/mcp/index.md +0 -0
  243. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/api-coverage.md +0 -0
  244. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/client.md +0 -0
  245. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/exceptions.md +0 -0
  246. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/filters.md +0 -0
  247. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/models.md +0 -0
  248. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/query-language.md +0 -0
  249. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/companies.md +0 -0
  250. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/lists.md +0 -0
  251. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/opportunities.md +0 -0
  252. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/persons.md +0 -0
  253. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/reminders.md +0 -0
  254. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/tasks.md +0 -0
  255. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/teams-users.md +0 -0
  256. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/transcripts.md +0 -0
  257. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/auth.md +0 -0
  258. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/field-values.md +0 -0
  259. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/fields.md +0 -0
  260. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/files.md +0 -0
  261. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/interactions.md +0 -0
  262. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/notes.md +0 -0
  263. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/v1/relationships.md +0 -0
  264. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/services/webhooks.md +0 -0
  265. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/reference/types.md +0 -0
  266. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/docs/public/troubleshooting.md +0 -0
  267. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/advanced_usage.py +0 -0
  268. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/async_lifecycle.py +0 -0
  269. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/basic_usage.py +0 -0
  270. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/filter_builder.py +0 -0
  271. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/hooks_debugging.py +0 -0
  272. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/list_management.py +0 -0
  273. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/resolve_helpers.py +0 -0
  274. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/examples/task_polling.py +0 -0
  275. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/.gitignore +0 -0
  276. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/affinity-mcp-workflows/SKILL.md +0 -0
  277. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/pipeline-history/SKILL.md +0 -0
  278. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/query-language/SKILL.md +0 -0
  279. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/query-language/references/filter-operators.md +0 -0
  280. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/query-language/references/include-expand.md +0 -0
  281. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/query-language/references/output-formats.md +0 -0
  282. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/skills/query-language/references/quantifiers.md +0 -0
  283. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.claude-plugin/xaffinity-mcp.sh +0 -0
  284. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.gitignore +0 -0
  285. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/bin/mcp-bash +0 -0
  286. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/completion.sh +0 -0
  287. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/lifecycle.sh +0 -0
  288. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/logging.sh +0 -0
  289. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/ping.sh +0 -0
  290. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/prompts.sh +0 -0
  291. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/resources.sh +0 -0
  292. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/roots.sh +0 -0
  293. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/handlers/tools.sh +0 -0
  294. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/auth.sh +0 -0
  295. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/capabilities.sh +0 -0
  296. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/cli/common.sh +0 -0
  297. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/cli/health.sh +0 -0
  298. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/completion.sh +0 -0
  299. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/core.sh +0 -0
  300. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/elicitation.sh +0 -0
  301. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/file_read.sh +0 -0
  302. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/handler_helpers.sh +0 -0
  303. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/hash.sh +0 -0
  304. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/ids.sh +0 -0
  305. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/io.sh +0 -0
  306. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/json.sh +0 -0
  307. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/lock.sh +0 -0
  308. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/logging.sh +0 -0
  309. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/meta_env.sh +0 -0
  310. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/paginate.sh +0 -0
  311. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/path.sh +0 -0
  312. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/policy.sh +0 -0
  313. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/progress-passthrough.sh +0 -0
  314. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/progress.sh +0 -0
  315. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/prompts.sh +0 -0
  316. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/registry.sh +0 -0
  317. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/require.sh +0 -0
  318. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/resource_content.sh +0 -0
  319. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/resource_match.sh +0 -0
  320. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/resource_providers.sh +0 -0
  321. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/resources.sh +0 -0
  322. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/roots.sh +0 -0
  323. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/rpc.sh +0 -0
  324. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/runtime.sh +0 -0
  325. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/spec.sh +0 -0
  326. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/timeout.sh +0 -0
  327. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/tools.sh +0 -0
  328. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/ui-templates.sh +0 -0
  329. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/ui.sh +0 -0
  330. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/uri.sh +0 -0
  331. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/lib/validate.sh +0 -0
  332. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/providers/echo.sh +0 -0
  333. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/providers/file.sh +0 -0
  334. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/providers/git.sh +0 -0
  335. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/providers/https.sh +0 -0
  336. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/providers/ui.sh +0 -0
  337. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/sdk/tool-error.sh +0 -0
  338. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/sdk/tool-sdk.sh +0 -0
  339. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.mcp-bash/sdk/ui-sdk.sh +0 -0
  340. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.registry/mcp-commands.json +0 -0
  341. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.registry/prompts.json +0 -0
  342. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.registry/resource-templates.json +0 -0
  343. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.registry/resources.json +0 -0
  344. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/.registry/ui-resources.json +0 -0
  345. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/Makefile +0 -0
  346. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/README.md +0 -0
  347. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/completions/entity-name.sh +0 -0
  348. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/completions/list-name.sh +0 -0
  349. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/completions/status-value.sh +0 -0
  350. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/docs/DEBUGGING.md +0 -0
  351. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/icon.svg +0 -0
  352. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/lib/cache.sh +0 -0
  353. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/lib/cli-detect.sh +0 -0
  354. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/lib/cli-gateway.sh +0 -0
  355. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/lib/common.sh +0 -0
  356. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/lib/entity-types.sh +0 -0
  357. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/lib/field-resolution.sh +0 -0
  358. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/mcp-publisher.lock +0 -0
  359. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/mcpb.conf +0 -0
  360. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/change-status/change-status.completion.sh +0 -0
  361. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/change-status/change-status.meta.json +0 -0
  362. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/change-status/change-status.txt +0 -0
  363. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/interaction-brief/interaction-brief.meta.json +0 -0
  364. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/interaction-brief/interaction-brief.txt +0 -0
  365. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/log-call/log-call.meta.json +0 -0
  366. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/log-call/log-call.txt +0 -0
  367. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/log-interaction-and-update-workflow/log-interaction-and-update-workflow.meta.json +0 -0
  368. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/log-interaction-and-update-workflow/log-interaction-and-update-workflow.txt +0 -0
  369. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/log-message/log-message.meta.json +0 -0
  370. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/log-message/log-message.txt +0 -0
  371. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/pipeline-review/pipeline-review.completion.sh +0 -0
  372. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/pipeline-review/pipeline-review.meta.json +0 -0
  373. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/pipeline-review/pipeline-review.txt +0 -0
  374. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/prepare-briefing/prepare-briefing.meta.json +0 -0
  375. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/prepare-briefing/prepare-briefing.txt +0 -0
  376. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/warm-intro/warm-intro.meta.json +0 -0
  377. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/prompts/warm-intro/warm-intro.txt +0 -0
  378. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/providers/xaffinity.sh +0 -0
  379. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/data-model/data-model.md +0 -0
  380. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/data-model/data-model.meta.json +0 -0
  381. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/field-catalogs/field-catalogs.meta.json +0 -0
  382. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/field-catalogs/field-catalogs.sh +0 -0
  383. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/interaction-enums/interaction-enums.json +0 -0
  384. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/interaction-enums/interaction-enums.meta.json +0 -0
  385. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/me/me.meta.json +0 -0
  386. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/me/me.sh +0 -0
  387. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/me-person-id/me-person-id.meta.json +0 -0
  388. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/me-person-id/me-person-id.sh +0 -0
  389. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/query-guide/query-guide.meta.json +0 -0
  390. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/query-guide/query-guide.sh +0 -0
  391. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/saved-views/saved-views.meta.json +0 -0
  392. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/saved-views/saved-views.sh +0 -0
  393. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/workflow-config/workflow-config.meta.json +0 -0
  394. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/workflow-config/workflow-config.sh +0 -0
  395. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/workflows-guide/workflows-guide.meta.json +0 -0
  396. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/workflows-guide/workflows-guide.sh +0 -0
  397. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/xaffinity-field-catalogs.completion.sh +0 -0
  398. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/xaffinity-saved-views.completion.sh +0 -0
  399. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/resources/xaffinity-workflow-config.completion.sh +0 -0
  400. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/server.d/env.sh +0 -0
  401. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/server.d/health-checks.sh +0 -0
  402. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/server.d/policy.sh +0 -0
  403. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/server.d/requirements.json +0 -0
  404. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/server.json +0 -0
  405. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/test/README.md +0 -0
  406. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/test/run.sh +0 -0
  407. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/test/test_env_update_check.sh +0 -0
  408. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/test-progress.sh +0 -0
  409. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/discover-commands/tool.meta.json +0 -0
  410. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/discover-commands/tool.sh +0 -0
  411. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/execute-read-command/tool.meta.json +0 -0
  412. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/execute-read-command/tool.sh +0 -0
  413. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/execute-write-command/tool.meta.json +0 -0
  414. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/execute-write-command/tool.sh +0 -0
  415. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/get-entity-dossier/tool.meta.json +0 -0
  416. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/get-entity-dossier/tool.sh +0 -0
  417. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/get-file-url/tool.meta.json +0 -0
  418. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/get-file-url/tool.sh +0 -0
  419. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/query/tool.meta.json +0 -0
  420. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/query/tool.sh +0 -0
  421. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/read-xaffinity-resource/tool.meta.json +0 -0
  422. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/tools/read-xaffinity-resource/tool.sh +0 -0
  423. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/user-config.json +0 -0
  424. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/xaffinity-mcp-env.sh +0 -0
  425. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mcp/xaffinity-mcp.sh +0 -0
  426. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/mkdocs.yml +0 -0
  427. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/affinity-sdk/.claude-plugin/plugin.json +0 -0
  428. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/affinity-sdk/.claude-plugin/skills/affinity-python-sdk/SKILL.md +0 -0
  429. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/affinity-sdk/.claude-plugin/skills/affinity-python-sdk/references/services.md +0 -0
  430. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/hooks/guard-env-read.sh +0 -0
  431. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/hooks/hooks.json +0 -0
  432. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/references/files-and-writes.md +0 -0
  433. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/references/filtering.md +0 -0
  434. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/references/history-and-activity.md +0 -0
  435. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/references/interactions.md +0 -0
  436. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/plugins/xaffinity-cli/skills/xaffinity-cli-usage/references/query-guide.md +0 -0
  437. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/query/test_cursor.py +0 -0
  438. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_company_create_dedup.py +0 -0
  439. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_company_ls_filter_rejection.py +0 -0
  440. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_formatters.py +0 -0
  441. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_output_formats_integration.py +0 -0
  442. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_person_create_dedup.py +0 -0
  443. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_person_ls_filter_rejection.py +0 -0
  444. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_query_filter_rejection.py +0 -0
  445. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_query_list_entry_relationships.py +0 -0
  446. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_query_list_export_parity.py +0 -0
  447. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_query_output_flattening.py +0 -0
  448. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_query_output_truncation.py +0 -0
  449. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cli/test_query_unreplied.py +0 -0
  450. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/conftest.py +0 -0
  451. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/.cowork-redact.json +0 -0
  452. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/README.md +0 -0
  453. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/fixtures/workdir-key/README.txt +0 -0
  454. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/fixtures/workdir-key/xaffinity-test-key +0 -0
  455. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/fixtures/workdir-nokey/README.txt +0 -0
  456. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/image/Dockerfile +0 -0
  457. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/image/fakeaff/build_fixtures.py +0 -0
  458. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/image/fakeaff/fixtures.json +0 -0
  459. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/image/fakeaff/server.py +0 -0
  460. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/image/xaffinity-wrapper.sh +0 -0
  461. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/privacy-allow.txt +0 -0
  462. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/record.sh +0 -0
  463. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/scenarios/company-lists-status.yaml +0 -0
  464. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/scenarios/hook-blocks-without-key.yaml +0 -0
  465. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/scenarios/no-key-skill-path.yaml +0 -0
  466. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/scenarios/status-history.yaml +0 -0
  467. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/sessions/no-key.yaml +0 -0
  468. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/cowork/sessions/with-key.yaml +0 -0
  469. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/field_write_mocks.py +0 -0
  470. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/openapi/mini_openapi.json +0 -0
  471. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/webhooks/field_value_updated.json +0 -0
  472. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/webhooks/list_entry_created.json +0 -0
  473. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/webhooks/organization_created.json +0 -0
  474. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/webhooks/organization_merged.json +0 -0
  475. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/webhooks/person_created.json +0 -0
  476. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/fixtures/webhooks/unknown_event.json +0 -0
  477. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/README.md +0 -0
  478. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/conftest.py +0 -0
  479. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/setup_query_parity_data.py +0 -0
  480. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/test_cli_writes.py +0 -0
  481. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/test_query_parity_integration.py +0 -0
  482. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/test_sdk_reads.py +0 -0
  483. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/test_sdk_writes.py +0 -0
  484. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/integration/test_sdk_writes_runner.py +0 -0
  485. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/mcp/__init__.py +0 -0
  486. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/mcp/test_query_cursor.py +0 -0
  487. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/skill-evals/xaffinity-cli-usage-evals/evals.json +0 -0
  488. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/spec_guard.py +0 -0
  489. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_affinity_client_wrapper_additional_coverage.py +0 -0
  490. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_api_coverage.py +0 -0
  491. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_api_key_file_formats.py +0 -0
  492. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_api_key_resolution.py +0 -0
  493. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_api_version.py +0 -0
  494. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_api_version_per_operation.py +0 -0
  495. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_async_file_download_streaming.py +0 -0
  496. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_batch_get.py +0 -0
  497. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_api_version.py +0 -0
  498. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_column_limiting.py +0 -0
  499. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_command_context.py +0 -0
  500. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_commands_must_fix.py +0 -0
  501. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_company_cmds_coverage.py +0 -0
  502. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_company_get.py +0 -0
  503. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_config_cmds.py +0 -0
  504. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_context_coverage.py +0 -0
  505. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_csv_export.py +0 -0
  506. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_date_params.py +0 -0
  507. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_date_utils.py +0 -0
  508. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_datetime_formatting.py +0 -0
  509. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_datetime_header_offsets.py +0 -0
  510. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_domain_linkification.py +0 -0
  511. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_dotenv_resolution.py +0 -0
  512. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_dropdown_field_writes.py +0 -0
  513. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_enriched_field_writes.py +0 -0
  514. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_entity_field_writes.py +0 -0
  515. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_entity_files_dump.py +0 -0
  516. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_entity_ls_server_filter.py +0 -0
  517. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_entry_field.py +0 -0
  518. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_entry_field_batch_writes.py +0 -0
  519. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_entry_field_multi_value_limits.py +0 -0
  520. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_error_hints.py +0 -0
  521. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_error_rendering.py +0 -0
  522. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_history.py +0 -0
  523. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_history_bulk.py +0 -0
  524. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_history_deleted_options.py +0 -0
  525. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_options_and_transcripts.py +0 -0
  526. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_utils.py +0 -0
  527. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_utils_coverage.py +0 -0
  528. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_utils_set_phase.py +0 -0
  529. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_field_value_humanization.py +0 -0
  530. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_file_url.py +0 -0
  531. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_files_ls.py +0 -0
  532. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_files_read.py +0 -0
  533. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_get_interaction_dates.py +0 -0
  534. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_help_json.py +0 -0
  535. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_interaction_date_chunking.py +0 -0
  536. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_interaction_utils.py +0 -0
  537. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_json_safety.py +0 -0
  538. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_cmds_coverage.py +0 -0
  539. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_expand_interactions.py +0 -0
  540. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_export_entity_scope.py +0 -0
  541. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_export_field_refresh.py +0 -0
  542. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_export_filter_safety.py +0 -0
  543. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_export_server_filter.py +0 -0
  544. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_list_export_truncation_meta.py +0 -0
  545. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_missing_coverage.py +0 -0
  546. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_multi_value_truncation_warnings.py +0 -0
  547. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_no_network_commands.py +0 -0
  548. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_notes_writes.py +0 -0
  549. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_opportunity_cmds.py +0 -0
  550. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_opportunity_cmds_coverage.py +0 -0
  551. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_org.py +0 -0
  552. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_page_size_validation.py +0 -0
  553. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_pager_logic.py +0 -0
  554. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_person_cmds_coverage.py +0 -0
  555. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_person_get.py +0 -0
  556. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_plugin_manifest.py +0 -0
  557. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_pre_xaffinity_hook.py +0 -0
  558. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_progress_manager.py +0 -0
  559. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_aggregates.py +0 -0
  560. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_cmd.py +0 -0
  561. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_cmd_coverage.py +0 -0
  562. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_dates.py +0 -0
  563. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_executor.py +0 -0
  564. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_expand_interactions.py +0 -0
  565. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_filters.py +0 -0
  566. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_integration.py +0 -0
  567. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_must_fix.py +0 -0
  568. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_parser.py +0 -0
  569. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_planner.py +0 -0
  570. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_review_fixes.py +0 -0
  571. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_safety.py +0 -0
  572. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_schema.py +0 -0
  573. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_query_server_filter.py +0 -0
  574. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_rate_limit_rendering.py +0 -0
  575. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_rate_limit_throttle.py +0 -0
  576. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_reminders.py +0 -0
  577. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_render_coverage.py +0 -0
  578. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_resolve_coverage.py +0 -0
  579. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_resolve_url_parsing.py +0 -0
  580. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_result_summary.py +0 -0
  581. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_safe_field_writes.py +0 -0
  582. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_search.py +0 -0
  583. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_serialization.py +0 -0
  584. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_session_cache.py +0 -0
  585. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_session_setup_hook.py +0 -0
  586. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_set_phase_atomicity.py +0 -0
  587. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_types.py +0 -0
  588. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_unreplied.py +0 -0
  589. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_update_check.py +0 -0
  590. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_v1_only_cmds.py +0 -0
  591. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_v1_parsing.py +0 -0
  592. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_webhooks.py +0 -0
  593. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_cli_write_ops.py +0 -0
  594. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_client.py +0 -0
  595. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_companies_create_dedup.py +0 -0
  596. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_companies_filter_rejection.py +0 -0
  597. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_compare.py +0 -0
  598. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_duplicates_connections.py +0 -0
  599. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_env_helpers.py +0 -0
  600. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_exceptions_coverage.py +0 -0
  601. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_field_service_caching.py +0 -0
  602. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_field_types_c4.py +0 -0
  603. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_field_value_type.py +0 -0
  604. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_field_values_get_value.py +0 -0
  605. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_file_batch_get.py +0 -0
  606. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_file_download_streaming.py +0 -0
  607. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_file_list_batch.py +0 -0
  608. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_file_upload_helpers_and_validation.py +0 -0
  609. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_files_upload_returning_files.py +0 -0
  610. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_files_v2.py +0 -0
  611. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_filters.py +0 -0
  612. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_generate_mcp_command_registry.py +0 -0
  613. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_get_fields_filter_includes.py +0 -0
  614. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_get_fields_pagination.py +0 -0
  615. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_get_first.py +0 -0
  616. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_hidden_field_values.py +0 -0
  617. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_hooks.py +0 -0
  618. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_http_client_additional_coverage.py +0 -0
  619. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_http_client_remaining_coverage.py +0 -0
  620. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_inbound_webhooks.py +0 -0
  621. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_integration_smoke.py +0 -0
  622. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_interaction_date_validation.py +0 -0
  623. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_interactions_and_files_regressions.py +0 -0
  624. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_isodatetime.py +0 -0
  625. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_list_entries_server_filter.py +0 -0
  626. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_list_entry_membership_and_opportunities.py +0 -0
  627. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_list_term.py +0 -0
  628. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_lists_v2_writes.py +0 -0
  629. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_bundle_env_and_completions.py +0 -0
  630. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_cli_version_check.py +0 -0
  631. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_entity_dossier.py +0 -0
  632. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_gateway_limits.py +0 -0
  633. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_history_bulk_gateway.py +0 -0
  634. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_limits.py +0 -0
  635. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_must_fix.py +0 -0
  636. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_query_cli_error.py +0 -0
  637. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_read_truncation.py +0 -0
  638. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_mcp_resource_scripts.py +0 -0
  639. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_models.py +0 -0
  640. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_models_v2_2026_fields.py +0 -0
  641. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_multi_value_limits.py +0 -0
  642. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_new_features.py +0 -0
  643. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_notes_v2.py +0 -0
  644. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_notes_v2_writes.py +0 -0
  645. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_opportunities_filter_rejection.py +0 -0
  646. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_org_reads.py +0 -0
  647. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_pagination_iterators.py +0 -0
  648. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_persons_create_dedup.py +0 -0
  649. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_persons_filter_rejection.py +0 -0
  650. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_public_api.py +0 -0
  651. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_query_pushdown.py +0 -0
  652. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_rate_limit_v2.py +0 -0
  653. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_raw_pipeline_hook_events.py +0 -0
  654. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_readonly_factory.py +0 -0
  655. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_reminder_list_batch.py +0 -0
  656. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_reminders_v2.py +0 -0
  657. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_requirements_additional.py +0 -0
  658. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_review_fixes_sdk_cli.py +0 -0
  659. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_sdk_interaction_dates.py +0 -0
  660. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_sdk_must_fix.py +0 -0
  661. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_search.py +0 -0
  662. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_search_v2.py +0 -0
  663. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_service_get_parameter_combinations.py +0 -0
  664. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_batch_get_interaction_dates.py +0 -0
  665. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_companies_coverage_gaps.py +0 -0
  666. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_dropdown_options.py +0 -0
  667. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_entity_field_updates.py +0 -0
  668. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_entity_list_entries.py +0 -0
  669. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_field_value_changes.py +0 -0
  670. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_list_entries_filter_paths.py +0 -0
  671. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_lists_additional_coverage.py +0 -0
  672. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_lists_coverage_gaps.py +0 -0
  673. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_opportunities_additional_coverage.py +0 -0
  674. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_opportunities_coverage_gaps.py +0 -0
  675. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_opportunities_tasks_additional_coverage.py +0 -0
  676. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_pages_cursor_guard.py +0 -0
  677. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_persons_companies_additional_coverage.py +0 -0
  678. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_rate_limits_coverage_gaps.py +0 -0
  679. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_v1_only_async.py +0 -0
  680. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_services_v1_only_coverage_gaps.py +0 -0
  681. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_single_field_v2.py +0 -0
  682. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_small_modules_coverage.py +0 -0
  683. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_spec_guard.py +0 -0
  684. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_teams_users_feedback.py +0 -0
  685. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_transport_and_readonly_mode.py +0 -0
  686. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_v1_association_parsing.py +0 -0
  687. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_v1_only_services_additional_coverage.py +0 -0
  688. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_v1_only_services_more_coverage.py +0 -0
  689. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_v2_request_bodies.py +0 -0
  690. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_validate_openapi_tool.py +0 -0
  691. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/test_webhooks_v2.py +0 -0
  692. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/unit/__init__.py +0 -0
  693. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tests/unit/test_exceptions.py +0 -0
  694. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/__init__.py +0 -0
  695. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/api_coverage.json +0 -0
  696. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/api_coverage.py +0 -0
  697. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/api_coverage_v1_snapshot.json +0 -0
  698. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/check_cli_patterns.py +0 -0
  699. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/generate_mcp_command_registry.py +0 -0
  700. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/generate_release_notes.py +0 -0
  701. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/generate_requirements_mapping.py +0 -0
  702. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/openapi_snapshots/2024-01-01.json +0 -0
  703. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/openapi_snapshots/2026-07-15.json +0 -0
  704. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/openapi_snapshots/2026-09-17.json +0 -0
  705. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/search_golden.py +0 -0
  706. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/sync_mcp_bundle_env.py +0 -0
  707. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/sync_mcp_registry.py +0 -0
  708. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/sync_mcp_version.py +0 -0
  709. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/validate_mcp_registry_metadata.py +0 -0
  710. {affinity_sdk-2.0.5 → affinity_sdk-2.0.6}/tools/validate_openapi_models.py +0 -0
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.6] - 2026-10-14
9
+
10
+ ### Fixed
11
+
12
+ - `FieldResolver.get`, `get_many` and `get_by_id` accept a plain `ListEntry` (as returned by
13
+ `companies.get_list_entries()` and `persons.get_list_entries()`) in their type hints. They
14
+ already worked on it at runtime; strict type checkers no longer need a cast.
15
+
8
16
  ## [2.0.5] - 2026-10-14
9
17
 
10
18
  **Exception to semantic versioning** (as 2.0.2–2.0.4): two fixes change what a call returns or
@@ -20,12 +28,14 @@ what the CLI prints. Each is marked **Behavior change**.
20
28
  options are unchanged. When a value is plain text the CLI reads the field's metadata (one call)
21
29
  to tell a dropdown from a text field (`history-bulk --list-id` already has it). Table and CSV
22
30
  output show the text, as before.
23
- - **Behavior change. SDK: `on_error="skip"` leaves failed records out of
31
+ - **Behavior change (correctness fix). SDK: `on_error="skip"` leaves failed records out of
24
32
  `AsyncReminderService.list_batch` and `AsyncFileService.list_batch`.** A failed request used
25
- to leave its ids in the result with empty or partial lists, which looked like "no reminders" /
26
- "no files"; one failed reminders request (50 ids) silently hid them all. They are now absent
27
- from the result, as with every other `on_error="skip"` method: a requested id with no key
28
- failed.
33
+ to leave its ids in the result with empty lists, which looked like "no reminders" / "no files";
34
+ one failed reminders request (50 ids) silently hid them all. A failure on a later page left a
35
+ partial list that looked complete. They are now absent from the result, as with every other
36
+ `on_error="skip"` method: a requested id with no key failed. **If you stored or cached results
37
+ of these calls made with `on_error="skip"` before 2.0.5, some empty or partial lists may be
38
+ failures: re-fetch them.**
29
39
  - SDK: `field_value_changes.iter_all()` reads 10,000 changes per call by default (was 100), the
30
40
  V1 maximum: a 16,000-change history takes 3 calls instead of 161 (paging ends on an empty
31
41
  page). Pass `page_size` for smaller
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: affinity-sdk
3
- Version: 2.0.5
3
+ Version: 2.0.6
4
4
  Summary: A modern, strongly-typed Python SDK for the Affinity CRM API
5
5
  Project-URL: Homepage, https://github.com/yaniv-golan/affinity-sdk
6
6
  Project-URL: Documentation, https://yaniv-golan.github.io/affinity-sdk/latest/
@@ -12,6 +12,7 @@ from .field_resolve_utils import (
12
12
  resolve_location,
13
13
  resolve_person,
14
14
  )
15
+ from .models.entities import FieldValues
15
16
  from .models.types import FieldValueType, ResolveMode
16
17
 
17
18
  __all__ = ["AmbiguousFieldError", "FieldResolver"]
@@ -20,6 +21,7 @@ if TYPE_CHECKING:
20
21
  from .models.entities import (
21
22
  Company,
22
23
  FieldMetadata,
24
+ ListEntry,
23
25
  ListEntryWithEntity,
24
26
  Opportunity,
25
27
  Person,
@@ -27,6 +29,25 @@ if TYPE_CHECKING:
27
29
  from .models.types import AnyFieldId
28
30
 
29
31
 
32
+ def _field_values(
33
+ entity: Company | Person | Opportunity | ListEntry | ListEntryWithEntity,
34
+ ) -> FieldValues:
35
+ """
36
+ The field values to read: the entity's own, or, for a list entry fetched without its
37
+ list fields, those of the embedded entity when they were requested. A ``ListEntry``
38
+ from ``get_list_entries()`` has no embedded entity (``entity`` is None), so it reads
39
+ its own fields.
40
+ """
41
+ inner_fields = getattr(getattr(entity, "entity", None), "fields", None)
42
+ if (
43
+ not entity.fields.requested
44
+ and isinstance(inner_fields, FieldValues)
45
+ and inner_fields.requested
46
+ ):
47
+ return inner_fields
48
+ return entity.fields
49
+
50
+
30
51
  class AmbiguousFieldError(Exception):
31
52
  """Raised when find_field() matches multiple fields and disambiguation is needed."""
32
53
 
@@ -97,7 +118,7 @@ class FieldResolver:
97
118
 
98
119
  def get(
99
120
  self,
100
- entity: Company | Person | Opportunity | ListEntryWithEntity,
121
+ entity: Company | Person | Opportunity | ListEntry | ListEntryWithEntity,
101
122
  field_name: str,
102
123
  *,
103
124
  resolve: ResolveMode = ResolveMode.RAW,
@@ -123,17 +144,8 @@ class FieldResolver:
123
144
  >>> stage = resolver.get(opportunity, "Stage", resolve=ResolveMode.TEXT)
124
145
  >>> print(stage) # "Negotiation" instead of 12345
125
146
  """
126
- # Delegate to inner entity for ListEntryWithEntity
127
- if (
128
- hasattr(entity, "entity")
129
- and entity.entity is not None
130
- and hasattr(entity.entity, "fields")
131
- and not entity.fields.requested
132
- and entity.entity.fields.requested
133
- ):
134
- entity = entity.entity
135
-
136
- if not entity.fields.requested:
147
+ fields = _field_values(entity)
148
+ if not fields.requested:
137
149
  warnings.warn(
138
150
  "Fields were not requested for this entity. "
139
151
  "Pass field_ids or field_types when fetching to populate field values.",
@@ -146,7 +158,7 @@ class FieldResolver:
146
158
  if field is None:
147
159
  return None
148
160
 
149
- value = entity.fields.get_value(str(field.id))
161
+ value = fields.get_value(str(field.id))
150
162
 
151
163
  if resolve == ResolveMode.TEXT and value is not None:
152
164
  value = self._resolve_value(value, field.value_type)
@@ -155,7 +167,7 @@ class FieldResolver:
155
167
 
156
168
  def get_many(
157
169
  self,
158
- entity: Company | Person | Opportunity | ListEntryWithEntity,
170
+ entity: Company | Person | Opportunity | ListEntry | ListEntryWithEntity,
159
171
  field_names: Sequence[str],
160
172
  *,
161
173
  resolve: ResolveMode = ResolveMode.RAW,
@@ -284,7 +296,7 @@ class FieldResolver:
284
296
 
285
297
  def get_by_id(
286
298
  self,
287
- entity: Company | Person | Opportunity | ListEntryWithEntity,
299
+ entity: Company | Person | Opportunity | ListEntry | ListEntryWithEntity,
288
300
  field_id: str | AnyFieldId,
289
301
  *,
290
302
  resolve: ResolveMode = ResolveMode.RAW,
@@ -300,18 +312,8 @@ class FieldResolver:
300
312
  Returns:
301
313
  The extracted field value, or None if not found.
302
314
  """
303
- # Delegate to inner entity for ListEntryWithEntity
304
- if (
305
- hasattr(entity, "entity")
306
- and entity.entity is not None
307
- and hasattr(entity.entity, "fields")
308
- and not entity.fields.requested
309
- and entity.entity.fields.requested
310
- ):
311
- entity = entity.entity
312
-
313
315
  field_id_str = str(field_id)
314
- value = entity.fields.get_value(field_id_str)
316
+ value = _field_values(entity).get_value(field_id_str)
315
317
  if resolve == ResolveMode.TEXT and value is not None:
316
318
  field = self._by_id.get(field_id_str)
317
319
  value_type = field.value_type if field else None
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "affinity-crm-mcp-unofficial",
3
3
  "description": "Affinity CRM workflows for Claude \u2014 meeting prep, pipeline review, warm intros, interaction logging, and relationship intelligence",
4
- "version": "2.0.6",
4
+ "version": "2.0.7",
5
5
  "author": {
6
6
  "name": "Yaniv Golan",
7
7
  "email": "yaniv@golan.name"
@@ -0,0 +1 @@
1
+ 1.9.6
@@ -105,8 +105,15 @@ mcp_tools_policy_check_secure_tree() {
105
105
 
106
106
  # Why server.d/policy.sh can't be loaded safely: prints the reason, or
107
107
  # nothing when there is no policy.sh or it is fine. Insecure ownership or
108
- # permissions, a symlink, or a syntax error (checked with bash -n first: bash
109
- # 3.2 stops the whole shell on a syntax error in a sourced file).
108
+ # permissions, a symlink, a syntax error, or a file that dies while it is
109
+ # sourced (a top-level command that fails, a syntax error in a file it
110
+ # sources, a top-level exit), tried in a fresh bash process at each start
111
+ # (its top-level code then runs one extra time); the workers reuse that
112
+ # verdict while the file's content is the same. A file it sources that breaks
113
+ # while the server runs is not seen until the next start (a worker's own load
114
+ # can't tell on bash 4+: the dispatcher's callers exempt it from errexit),
115
+ # except that a worker whose load no longer defines a hook the start check
116
+ # saw refuses the call (mcp_tools_policy_init).
110
117
  mcp_tools_policy_unsafe_reason() {
111
118
  [ -n "${MCPBASH_SERVER_DIR:-}" ] || return 0
112
119
  local policy_path="${MCPBASH_SERVER_DIR}/policy.sh"
@@ -116,10 +123,75 @@ mcp_tools_policy_unsafe_reason() {
116
123
  "${policy_path}" "${policy_path}" "${MCPBASH_SERVER_DIR}" "${MCPBASH_PROJECT_ROOT:-.}"
117
124
  return 0
118
125
  fi
126
+ case "$(mcp_tools_policy_load_verdict "${policy_path}")" in
127
+ ok*) ;;
128
+ syntax) printf '%s was not loaded: it has a syntax error (check it with: bash -n "%s")' "${policy_path}" "${policy_path}" ;;
129
+ *) printf '%s was not loaded: it stops while loading (a top-level command that fails, a syntax error in a file it sources, or a top-level exit)' "${policy_path}" ;;
130
+ esac
131
+ return 0
132
+ }
133
+
134
+ # Whether sourcing POLICY_PATH completes, tried in a new bash process and
135
+ # cached in the state dir against the file's content: "syntax", "failed", or
136
+ # "ok" followed by the hooks it defines, as ":project" (mcp_tools_policy_project)
137
+ # and ":check" (a mcp_tools_policy_check that replaces the built-in one).
138
+ mcp_tools_policy_load_verdict() {
139
+ local policy_path="$1" content="" cache="" cached_content="" verdict=""
140
+ IFS= read -r -d '' content <"${policy_path}" 2>/dev/null || true
141
+ # Kept for this server only (its state dir), so the workers don't repeat
142
+ # it: the next start checks again, since a file policy.sh sources may
143
+ # have changed (only policy.sh's own content is compared).
144
+ if [ -n "${MCPBASH_STATE_DIR:-}" ] && [ -d "${MCPBASH_STATE_DIR}" ]; then
145
+ cache="${MCPBASH_STATE_DIR}/policy.loads"
146
+ fi
147
+ if [ -n "${cache}" ] && [ -f "${cache}" ]; then
148
+ {
149
+ IFS= read -r verdict
150
+ IFS= read -r -d '' cached_content || true
151
+ } <"${cache}" 2>/dev/null || true
152
+ if [ -n "${verdict}" ] && [ "${cached_content}" = "${content}" ]; then
153
+ printf '%s' "${verdict}"
154
+ return 0
155
+ fi
156
+ fi
119
157
  if ! "${BASH:-bash}" -n "${policy_path}" 2>/dev/null; then
120
- printf '%s was not loaded: it has a syntax error (check it with: bash -n "%s")' "${policy_path}" "${policy_path}"
158
+ verdict=syntax
159
+ else
160
+ # A fresh bash process: a subshell would inherit an errexit exemption
161
+ # from any || or if around this call, and then let a failing
162
+ # top-level command through. As strict as a worker on every bash: a
163
+ # top-level command that fails, or one in a file policy.sh sources (a
164
+ # syntax error there), ends the probe. The status of the file as a
165
+ # whole (its last command) is fine: the ERR trap tells that case by
166
+ # where it fires. A new process sees only exported variables: export
167
+ # the server paths a policy.sh may use at its top level, as a worker
168
+ # has them (in this command substitution only).
169
+ # shellcheck disable=SC2016 # The probe script is expanded by the new bash.
170
+ verdict="$(
171
+ export MCPBASH_HOME MCPBASH_PROJECT_ROOT MCPBASH_SERVER_DIR MCPBASH_TOOLS_DIR MCPBASH_STATE_DIR
172
+ exec "${BASH:-bash}" -c '
173
+ exec 3>&1 </dev/null >/dev/null 2>&1
174
+ set -euo pipefail
175
+ probe_self="${BASH_SOURCE[0]:-}"
176
+ exited=false
177
+ _mcp_probe_loaded() {
178
+ local v=ok
179
+ if declare -F mcp_tools_policy_project >/dev/null; then v="${v}:project"; fi
180
+ if declare -F mcp_tools_policy_check >/dev/null; then v="${v}:check"; fi
181
+ printf "%s" "${v}" >&3
182
+ }
183
+ trap "[ \"\${BASH_SOURCE[0]:-}\" = \"\${probe_self}\" ] && [ \"\${exited}\" = false ] && _mcp_probe_loaded" ERR
184
+ exit() { exited=true; }
185
+ . "$1"
186
+ unset -f exit
187
+ trap - ERR
188
+ [ "${exited}" = "false" ] && _mcp_probe_loaded
189
+ ' _ "${policy_path}" 2>/dev/null
190
+ )" || true
191
+ [ -n "${verdict}" ] || verdict=failed
121
192
  fi
122
- return 0
193
+ [ -z "${cache}" ] || printf '%s\n%s' "${verdict}" "${content}" >"${cache}" 2>/dev/null || true
194
+ printf '%s' "${verdict}"
123
195
  }
124
196
 
125
197
  # At server start (main process): tell the operator on stderr when policy.sh
@@ -151,8 +223,30 @@ mcp_tools_policy_init() {
151
223
  fi
152
224
  local policy_path="${MCPBASH_SERVER_DIR:-}/policy.sh"
153
225
  if [ -n "${MCPBASH_SERVER_DIR:-}" ] && [ -f "${policy_path}" ]; then
226
+ local check_before
227
+ check_before="$(declare -f mcp_tools_policy_check 2>/dev/null || true)"
228
+ # A top-level `exit` would end this worker, and the client would get no
229
+ # answer: catch it while sourcing.
230
+ _MCP_TOOLS_POLICY_EXITED=false
231
+ # shellcheck disable=SC2317,SC2329 # Invoked indirectly: by a top-level exit in policy.sh.
232
+ exit() { _MCP_TOOLS_POLICY_EXITED=true; }
154
233
  # shellcheck disable=SC1090
155
- . "${policy_path}"
234
+ . "${policy_path}" || true
235
+ unset -f exit
236
+ local verdict=""
237
+ if [ "${_MCP_TOOLS_POLICY_EXITED}" = "true" ]; then
238
+ MCP_TOOLS_POLICY_UNSAFE="${policy_path} was not loaded: it stops while loading (a top-level exit)"
239
+ elif ! declare -F mcp_tools_policy_project >/dev/null 2>&1 \
240
+ || [ "$(declare -f mcp_tools_policy_check 2>/dev/null || true)" = "${check_before}" ]; then
241
+ # A hook the start check saw is missing from this load: a file
242
+ # policy.sh sources broke since (this load can't see a failure on
243
+ # bash 4+: the callers exempt it from errexit).
244
+ verdict="$(mcp_tools_policy_load_verdict "${policy_path}")"
245
+ if { ! declare -F mcp_tools_policy_project >/dev/null 2>&1 && [ "${verdict}" != "${verdict#*:project}" ]; } \
246
+ || { [ "$(declare -f mcp_tools_policy_check 2>/dev/null || true)" = "${check_before}" ] && [ "${verdict}" != "${verdict#*:check}" ]; }; then
247
+ MCP_TOOLS_POLICY_UNSAFE="${policy_path} was not loaded: it no longer defines its policy hook (a file it sources changed since the server started; restart the server)"
248
+ fi
249
+ fi
156
250
  fi
157
251
  return 0
158
252
  }
@@ -0,0 +1 @@
1
+ {"version":"1.9.6","sha256":"d09a66e1e97d654905774351226b3103072bcd428fbc79cb677447a7dbc30556","vendored_from":"/Users/yaniv/.local/share/mcp-bash","vendored_at":"2026-10-14T12:55:45Z"}
@@ -2,11 +2,11 @@
2
2
  "_generated": {
3
3
  "warning": "DO NOT EDIT - This file is auto-generated",
4
4
  "generator": "tools/generate_mcp_command_registry.py",
5
- "cliVersion": "2.0.5",
5
+ "cliVersion": "2.0.6",
6
6
  "sourceConfig": "mcp/.registry/mcp-commands.json"
7
7
  },
8
8
  "version": 1,
9
- "cliVersion": "2.0.5",
9
+ "cliVersion": "2.0.6",
10
10
  "commands": [
11
11
  {
12
12
  "name": "company connections",
@@ -5,6 +5,19 @@ All notable changes to the xaffinity MCP server will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.7] - 2026-10-14
9
+
10
+ Requires CLI 2.0.5 (no new CLI requirements).
11
+
12
+ ### Security
13
+
14
+ - On mcp-bash 1.9.6 (was 1.9.5): a `server.d/policy.sh` that fails while loading (a failing
15
+ top-level command, a syntax error in a file it sources, a top-level `exit`) now refuses every
16
+ tool call with a reason. Before, a tool the policy blocks (e.g. the write tool in read-only
17
+ mode) could run on bash 4+, or the call got no answer. Calls are also refused if a file the
18
+ policy sources breaks while the server runs. The server test-loads `policy.sh` in a separate
19
+ process at each start; this server's policy only sets variables, so start-up is unchanged.
20
+
8
21
  ## [2.0.6] - 2026-10-14
9
22
 
10
23
  Requires CLI 2.0.5.
@@ -4,6 +4,8 @@
4
4
  CLI_MIN_VERSION="2.0.5"
5
5
  CLI_MAX_VERSION="2.0.5"
6
6
 
7
+ # MCP 2.0.7: no new CLI requirements (mcp-bash 1.9.6).
8
+
7
9
  # MCP 2.0.6 requires CLI 2.0.5 for:
8
10
  # - `field history` / `field history-bulk`: a deleted dropdown option as
9
11
  # {"id": null, "text": ..., "deleted": true} (was a bare string); the pipeline-history skill
@@ -0,0 +1 @@
1
+ 2.0.7
@@ -1,5 +1,5 @@
1
1
  # mcp-bash.lock - Pin mcp-bash-framework version and commit
2
2
  # Source this file in bash scripts: source mcp-bash.lock
3
3
  # Update: git ls-remote https://github.com/yaniv-golan/mcp-bash-framework.git 'vX.Y.Z^{}'
4
- MCPBASH_VERSION=1.9.5
5
- MCPBASH_COMMIT=988556b732983f4a8025d954d2bd528833e9719b
4
+ MCPBASH_VERSION=1.9.6
5
+ MCPBASH_COMMIT=33f21cc4bfcab20d86d0d1b62d8a1f3844c8b776
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "xaffinity-mcp",
3
3
  "title": "xaffinity MCP",
4
- "version": "2.0.6",
4
+ "version": "2.0.7",
5
5
  "description": "MCP server for Affinity CRM - workflow management, entity lookup, relationship intelligence using xaffinity CLI",
6
6
  "env": {
7
7
  "MCPBASH_TOOL_ENV_MODE": "allowlist",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "affinity-crm-cli-xaffinity-unofficial",
3
3
  "description": "Affinity CRM command-line tools — search contacts, export lists to CSV, filter pipelines, and manage CRM data via xaffinity",
4
- "version": "2.0.4",
4
+ "version": "2.0.5",
5
5
  "author": {
6
6
  "name": "Yaniv Golan",
7
7
  "email": "yaniv@golan.name"
@@ -42,7 +42,7 @@ if [ -f "$HOME/.xaffinity-install-status" ] && grep -qF "INSTALL_FAILED" "$HOME/
42
42
  "hookSpecificOutput": {
43
43
  "permissionDecision": "deny"
44
44
  },
45
- "systemMessage": "BLOCKED: xaffinity CLI installation failed. Ask the user to check network connectivity and Python environment, then run: pip install 'affinity-sdk[cli]==2.0.5'"
45
+ "systemMessage": "BLOCKED: xaffinity CLI installation failed. Ask the user to check network connectivity and Python environment, then run: pip install 'affinity-sdk[cli]==2.0.6'"
46
46
  }
47
47
  EOF
48
48
  exit 2
@@ -67,7 +67,7 @@ if [ -z "${AFFINITY_SESSION_CACHE:-}" ]; then
67
67
  "hookSpecificOutput": {
68
68
  "permissionDecision": "deny"
69
69
  },
70
- "systemMessage": "BLOCKED: xaffinity CLI installation failed. Ask the user to check network connectivity and Python environment, then run: pip install 'affinity-sdk[cli]==2.0.5'"
70
+ "systemMessage": "BLOCKED: xaffinity CLI installation failed. Ask the user to check network connectivity and Python environment, then run: pip install 'affinity-sdk[cli]==2.0.6'"
71
71
  }
72
72
  EOF
73
73
  exit 2
@@ -72,7 +72,7 @@ set -euo pipefail
72
72
  # The CLI version this plugin release is written for. Kept equal to pyproject.toml's version
73
73
  # (tests/test_cli_session_setup_hook.py checks it). Set XAFFINITY_CLI_SPEC to install another,
74
74
  # e.g. XAFFINITY_CLI_SPEC="affinity-sdk[cli]" for the newest release.
75
- cli_spec="${XAFFINITY_CLI_SPEC:-affinity-sdk[cli]==2.0.5}"
75
+ cli_spec="${XAFFINITY_CLI_SPEC:-affinity-sdk[cli]==2.0.6}"
76
76
 
77
77
  # --- Recursion guard ---
78
78
  # Prevents infinite loop if pip install somehow triggers this wrapper again.
@@ -23,7 +23,7 @@ xaffinity config check-key --json
23
23
  ```
24
24
 
25
25
  - **`command not found`** (exit 127; e.g. a Claude Cowork VM) — install it once per task:
26
- `pip install --user -q --no-warn-script-location "affinity-sdk[cli]==2.0.5"` (about 10s), then
26
+ `pip install --user -q --no-warn-script-location "affinity-sdk[cli]==2.0.6"` (about 10s), then
27
27
  start every later bash call with `export PATH="$HOME/.local/bin:$PATH";` (each call is a
28
28
  fresh shell) and run check-key again. Details and the no-network case: `references/setup.md` (Claude Cowork).
29
29
  - **`"configured": true`** — use the `pattern` field from the output for ALL subsequent commands:
@@ -319,6 +319,6 @@ reference (JSON structure, operators, aggregation, examples): `references/query-
319
319
  | Get command help | `xaffinity <command> --help` (USE THIS — don't guess flags) |
320
320
 
321
321
  **Remember:** prefix all commands with `xaffinity --readonly` (and `--dotenv` if `check-key` says
322
- so). Install: `pip install "affinity-sdk[cli]==2.0.5"`, the version this skill is written for
322
+ so). Install: `pip install "affinity-sdk[cli]==2.0.6"`, the version this skill is written for
323
323
  (`--user` plus the PATH line above when `xaffinity` isn't found); if a command or flag shown
324
324
  here is missing, the installed CLI is older: install that version. Docs: https://yaniv-golan.github.io/affinity-sdk/latest/
@@ -43,7 +43,7 @@ config files):
43
43
  ## Claude Cowork
44
44
 
45
45
  **Installing the CLI.** Cowork's VM may not have `xaffinity` (`command not found`). Install it
46
- once per task: `pip install --user -q --no-warn-script-location "affinity-sdk[cli]==2.0.5"` (about
46
+ once per task: `pip install --user -q --no-warn-script-location "affinity-sdk[cli]==2.0.6"` (about
47
47
  10s). It lands in `~/.local/bin`, which is not on PATH, and each bash call is a fresh shell, so start every
48
48
  xaffinity call with `export PATH="$HOME/.local/bin:$PATH";` — then commands and check-key's
49
49
  `pattern` work as written (or call `~/.local/bin/xaffinity` by its full path). The install lasts
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "affinity-sdk"
7
- version = "2.0.5"
7
+ version = "2.0.6"
8
8
  description = "A modern, strongly-typed Python SDK for the Affinity CRM API"
9
9
  readme = "README.md"
10
10
  license = "MIT"