persona-sdk-python 0.2.22__tar.gz → 0.2.24__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 (35) hide show
  1. persona_sdk_python-0.2.24/.github/workflows/ci.yml +29 -0
  2. persona_sdk_python-0.2.24/.github/workflows/deploy.yml +154 -0
  3. persona_sdk_python-0.2.24/MIGRATION_GITHUB.md +44 -0
  4. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/PKG-INFO +8 -2
  5. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/README.md +6 -0
  6. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/pyproject.toml +2 -2
  7. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/uv.lock +6 -6
  8. persona_sdk_python-0.2.22/bitbucket-pipelines.yml +0 -18
  9. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/.gitignore +0 -0
  10. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/DEPLOY.md +0 -0
  11. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/__init__.py +0 -0
  12. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/_serde.py +0 -0
  13. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/__init__.py +0 -0
  14. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/agents.py +0 -0
  15. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/credentials.py +0 -0
  16. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/features.py +0 -0
  17. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/human_tasks.py +0 -0
  18. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/knowledge_bases.py +0 -0
  19. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/markup_rules.py +0 -0
  20. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/missions.py +0 -0
  21. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/projects.py +0 -0
  22. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/providers.py +0 -0
  23. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/service_prices.py +0 -0
  24. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/sessions.py +0 -0
  25. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/triggers.py +0 -0
  26. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/api/workflows.py +0 -0
  27. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/auth/__init__.py +0 -0
  28. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/auth/api_key_auth.py +0 -0
  29. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/auth/base.py +0 -0
  30. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/auth/bearer_token_auth.py +0 -0
  31. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/client.py +0 -0
  32. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/runners/__init__.py +0 -0
  33. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/runners/agent_runner.py +0 -0
  34. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/runners/resource_retriever.py +0 -0
  35. {persona_sdk_python-0.2.22 → persona_sdk_python-0.2.24}/persona_sdk/runners/tool_invoker.py +0 -0
@@ -0,0 +1,29 @@
1
+ name: CI
2
+
3
+ # Smoke su PR: il repo non ha suite di test (non ne aveva in Bitbucket).
4
+ # Lo smoke verifica che uv.lock risolva (--frozen) e che il package importi.
5
+ # Il publish avviene solo al push su main (deploy.yml).
6
+
7
+ on:
8
+ pull_request:
9
+ branches: [main]
10
+
11
+ concurrency:
12
+ group: ci-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ smoke:
17
+ name: Smoke
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: '3.12'
24
+ - name: Installa uv
25
+ run: pip install uv
26
+ - name: Smoke import
27
+ run: |
28
+ uv sync --frozen
29
+ uv run python -c "import persona_sdk; print('smoke ok:', persona_sdk.__name__)"
@@ -0,0 +1,154 @@
1
+ name: Publish
2
+
3
+ # Due percorsi di ingresso:
4
+ # - push su main → SEMPRE smoke + build + publish (percorso sicuro default)
5
+ # - workflow_dispatch → scelta manuale della modalità:
6
+ # test-and-publish : smoke + build + publish (come il push)
7
+ # publish-only : SOLO build + publish — test saltati volontariamente
8
+ #
9
+ # Il job `version` riconcilia la versione sull'ultimo tag git (max semver,
10
+ # patch +1 — es. 0.2.23 → 0.2.24) e applica una guard anti-collisione:
11
+ # interroga PyPI e bumpa finché la versione è libera (PyPI è immutabile:
12
+ # un doppio upload fallirebbe e bloccherebbe la release).
13
+ #
14
+ # Poi smoke ∥ build-package in parallelo → publish (OIDC Trusted
15
+ # Publishing, nessun segreto) → tag git della versione.
16
+
17
+ on:
18
+ push:
19
+ branches: [main]
20
+ workflow_dispatch:
21
+ inputs:
22
+ mode:
23
+ description: "Modalità di pubblicazione"
24
+ type: choice
25
+ required: true
26
+ default: test-and-publish
27
+ options:
28
+ - test-and-publish
29
+ - publish-only
30
+
31
+ concurrency:
32
+ group: publish-persona-sdk-python
33
+ cancel-in-progress: false
34
+
35
+ permissions:
36
+ contents: write # push del tag di versione con GITHUB_TOKEN
37
+ id-token: write # Trusted Publishing OIDC verso PyPI
38
+
39
+ jobs:
40
+ version:
41
+ name: Calcola versione (riconciliazione sui tag + guard PyPI)
42
+ runs-on: ubuntu-latest
43
+ outputs:
44
+ version: ${{ steps.v.outputs.version }}
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+ with:
48
+ fetch-depth: 0 # serve la history dei tag
49
+ - id: v
50
+ run: |
51
+ LAST=$(git tag -l --sort=-v:refname | head -1)
52
+ VERSION="${LAST%.*}.$(( ${LAST##*.} + 1 ))"
53
+ echo "Ultimo tag git ${LAST} → proposta ${VERSION}"
54
+ # Guard anti-collisione: bumpa finché la versione esiste già su PyPI
55
+ for _ in 1 2 3 4 5; do
56
+ if curl -sf "https://pypi.org/pypi/persona-sdk-python/${VERSION}/json" > /dev/null 2>&1; then
57
+ echo "⚠️ ${VERSION} già esiste su PyPI → bump"
58
+ VERSION="${VERSION%.*}.$(( ${VERSION##*.} + 1 ))"
59
+ else
60
+ break
61
+ fi
62
+ done
63
+ echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
64
+ echo "Versione finale: ${VERSION}"
65
+
66
+ test:
67
+ name: Test (smoke import)
68
+ runs-on: ubuntu-latest
69
+ if: github.event_name == 'push' || inputs.mode == 'test-and-publish'
70
+ steps:
71
+ - uses: actions/checkout@v4
72
+ - uses: actions/setup-python@v5
73
+ with:
74
+ python-version: '3.12'
75
+ - name: Installa uv
76
+ run: pip install uv
77
+ - name: Smoke import
78
+ # il repo non ha suite di test (non ne aveva in Bitbucket): lo smoke
79
+ # verifica che uv.lock risolva e che il package importi
80
+ run: |
81
+ uv sync --frozen
82
+ uv run python -c "import persona_sdk; print('smoke ok:', persona_sdk.__name__)"
83
+
84
+ build-package:
85
+ name: Build & check sdist/wheel
86
+ runs-on: ubuntu-latest
87
+ needs: [version] # in parallelo al job test
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ - uses: actions/setup-python@v5
91
+ with:
92
+ python-version: '3.12'
93
+ - name: Installa uv
94
+ run: pip install uv
95
+ - name: Build (versione sed-ata in pyproject, come faceva Bitbucket)
96
+ env:
97
+ VERSION: ${{ needs.version.outputs.version }}
98
+ run: |
99
+ sed -i "s/^version = .*/version = \"${VERSION}\"/" pyproject.toml
100
+ uv run --with build python -m build
101
+ uv run --with twine python -m twine check dist/*
102
+ - uses: actions/upload-artifact@v4
103
+ with:
104
+ name: dist
105
+ path: dist/
106
+
107
+ publish:
108
+ name: Publish su PyPI
109
+ runs-on: ubuntu-latest
110
+ needs: [version, test, build-package]
111
+ # pubblica se il build è verde E (il test è verde OPPURE volontariamente assente)
112
+ if: >-
113
+ always() &&
114
+ needs.build-package.result == 'success' &&
115
+ (needs.test.result == 'success' || needs.test.result == 'skipped')
116
+ steps:
117
+ - uses: actions/download-artifact@v4
118
+ with:
119
+ name: dist
120
+ path: dist/
121
+ - name: Publish (Trusted Publishing OIDC — nessun token)
122
+ uses: pypa/gh-action-pypi-publish@release/v1
123
+ - name: Summary
124
+ env:
125
+ VERSION: ${{ needs.version.outputs.version }}
126
+ MODE: ${{ inputs.mode || 'test-and-publish (push su main)' }}
127
+ run: |
128
+ {
129
+ echo "### Publish persona-sdk-python ${VERSION}"
130
+ echo ""
131
+ echo "Modalità: **${MODE}**"
132
+ if [ "${{ needs.test.result }}" = "skipped" ]; then
133
+ echo ""
134
+ echo "⚠️ **Test saltati volontariamente** (publish-only)"
135
+ fi
136
+ echo ""
137
+ echo "Pacchetto: https://pypi.org/project/persona-sdk-python/${VERSION}/"
138
+ } >> "$GITHUB_STEP_SUMMARY"
139
+
140
+ tag-release:
141
+ name: Tag di versione
142
+ runs-on: ubuntu-latest
143
+ needs: [version, publish]
144
+ if: always() && needs.publish.result == 'success'
145
+ steps:
146
+ - uses: actions/checkout@v4
147
+ - name: Crea e pusha il tag
148
+ env:
149
+ VERSION: ${{ needs.version.outputs.version }}
150
+ run: |
151
+ git config user.name "RoBYCoNTe"
152
+ git config user.email "2301162+RoBYCoNTe@users.noreply.github.com"
153
+ git tag -a "${VERSION}" -m "version ${VERSION}"
154
+ git push origin "${VERSION}"
@@ -0,0 +1,44 @@
1
+ # Migrazione Bitbucket → GitHub Actions
2
+
3
+ Repo migrato da `applicaguru/persona-sdk-python` (Bitbucket) a
4
+ `applica-software-guru/persona-sdk-python` (GitHub, privato) il
5
+ **2026-09-25**.
6
+
7
+ ## Fasi
8
+
9
+ 1. **Validazione locale** — smoke (`uv sync` + import `persona_sdk`)
10
+ + `uv build` (sdist+wheel): verdi. Il repo non ha suite di test
11
+ (non ne aveva in Bitbucket) → smoke pattern.
12
+ 2. **Repo GitHub** — creato privato; `main` (`c504855`) + 21 tag
13
+ (serie `0.2.*` fino a `0.2.23`) + ramo WIP `feature/sip-protocol`
14
+ (3 commit, SIP trunks/call-control — gemello del ramo js) pushato
15
+ tal quale. I rami mergiati `feature/skills` e
16
+ `refactor/litellm-model-config` non sono stati ripushati.
17
+ Invariante verificata: Bitbucket ⊆ GitHub.
18
+ 3. **Pipeline** — `deploy.yml` (PyPI OIDC) + `ci.yml`, cutover.
19
+ 4. **Verifica** — run verde, `0.2.24` su PyPI, tag git.
20
+
21
+ ## Versioning
22
+
23
+ Caso **allineato**: PyPI latest = `0.2.23` = tag git max. Il BB
24
+ calcolava la versione dal build counter (`0.2.$BITBUCKET_BUILD_NUMBER`);
25
+ in GitHub la riconciliazione è sui tag git (patch+1) con guard su
26
+ PyPI via API (immutabile). Prima release GitHub: **`0.2.24`**.
27
+
28
+ ## Pipeline decisionale (PyPI, pattern persona-models)
29
+
30
+ - **push su main** → version (tag+guard PyPI) → smoke ∥
31
+ build-package → **publish OIDC trusted publishing** (nessun token;
32
+ configurato su PyPI → progetto `persona-sdk-python` → Trusted
33
+ Publisher: owner `applica-software-guru`, repo, workflow
34
+ `deploy.yml`, environment vuoto) → tag di versione.
35
+ - **workflow_dispatch**: `test-and-publish` | `publish-only`
36
+ (summary segnala i test saltati con ⚠️).
37
+ - **PR** → `ci.yml`: smoke. Nuovo rispetto al BB.
38
+
39
+ ## Decisioni
40
+
41
+ - **Test**: smoke solo (`uv sync --frozen` + import) — nessuna suite
42
+ esistente; nota onesta, nessun test inventato.
43
+ - **Segreti**: nessuno — OIDC trusted publishing (come persona-models).
44
+ - **Rimosso dal tree nel cutover**: `bitbucket-pipelines.yml`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: persona-sdk-python
3
- Version: 0.2.22
3
+ Version: 0.2.24
4
4
  Summary: Async Python SDK for the Persona AI platform
5
5
  Project-URL: Homepage, https://persona.applica.guru
6
6
  Project-URL: Repository, https://bitbucket.org/applicaguru/persona-sdk-python
@@ -19,9 +19,15 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
20
  Requires-Python: >=3.10
21
21
  Requires-Dist: httpx>=0.27.0
22
- Requires-Dist: persona-models>=0.2.15
22
+ Requires-Dist: persona-models>=0.2.16
23
23
  Description-Content-Type: text/markdown
24
24
 
25
+ <div align="center">
26
+
27
+ [![Publish](https://github.com/applica-software-guru/persona-sdk-python/actions/workflows/deploy.yml/badge.svg)](https://github.com/applica-software-guru/persona-sdk-python/actions/workflows/deploy.yml)
28
+
29
+ </div>
30
+
25
31
  # persona-sdk-python
26
32
 
27
33
  Async Python SDK for the [Persona AI](https://persona.applica.guru) platform.
@@ -1,3 +1,9 @@
1
+ <div align="center">
2
+
3
+ [![Publish](https://github.com/applica-software-guru/persona-sdk-python/actions/workflows/deploy.yml/badge.svg)](https://github.com/applica-software-guru/persona-sdk-python/actions/workflows/deploy.yml)
4
+
5
+ </div>
6
+
1
7
  # persona-sdk-python
2
8
 
3
9
  Async Python SDK for the [Persona AI](https://persona.applica.guru) platform.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "persona-sdk-python"
3
- version = "0.2.22"
3
+ version = "0.2.24"
4
4
  description = "Async Python SDK for the Persona AI platform"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -22,7 +22,7 @@ classifiers = [
22
22
  "Framework :: AsyncIO",
23
23
  ]
24
24
  dependencies = [
25
- "persona-models>=0.2.15",
25
+ "persona-models>=0.2.16",
26
26
  "httpx>=0.27.0",
27
27
  ]
28
28
 
@@ -39,7 +39,7 @@ name = "exceptiongroup"
39
39
  version = "1.3.1"
40
40
  source = { registry = "https://pypi.org/simple" }
41
41
  dependencies = [
42
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
42
+ { name = "typing-extensions" },
43
43
  ]
44
44
  sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
45
45
  wheels = [
@@ -94,19 +94,19 @@ wheels = [
94
94
 
95
95
  [[package]]
96
96
  name = "persona-models"
97
- version = "0.2.15"
97
+ version = "0.2.16"
98
98
  source = { registry = "https://pypi.org/simple" }
99
99
  dependencies = [
100
100
  { name = "pydantic" },
101
101
  ]
102
- sdist = { url = "https://files.pythonhosted.org/packages/ad/74/482752d5fa260b009565f9e50766bd843c2e4ac4d446408cc41b35cb8ad6/persona_models-0.2.15.tar.gz", hash = "sha256:4395fcb1b10f0a898da56a0588a29459f15ea20a56a82d1be53290ade07a12a9", size = 26037, upload-time = "2026-09-21T12:25:37.687Z" }
102
+ sdist = { url = "https://files.pythonhosted.org/packages/96/1f/c6766afae509b4b5c8642770985958fe6114baa2d5ee1a9eed86fb5b3118/persona_models-0.2.16.tar.gz", hash = "sha256:2aee31d05e4f63de71f47ec2a917ea17c15d6dbe3274be0dbc697380518943f3", size = 26163, upload-time = "2026-09-21T17:49:39.138Z" }
103
103
  wheels = [
104
- { url = "https://files.pythonhosted.org/packages/28/95/044146ff00257d9561a1f5882998f21e704b98285749b405828bdc2996a6/persona_models-0.2.15-py3-none-any.whl", hash = "sha256:ab4cb6443ed1ce35e97b078fc8b4518a0b579af165745555f500c609fb4c7052", size = 19147, upload-time = "2026-09-21T12:25:36.728Z" },
104
+ { url = "https://files.pythonhosted.org/packages/cf/38/7647e04dc95f1ee31ca08fccdf066ca7dbfb93879f8f9560ef8a9babfbfb/persona_models-0.2.16-py3-none-any.whl", hash = "sha256:ccd5caa6934f291f3b7dd0678903f2cf6606ba012913178bbb837de2dea5fae4", size = 19265, upload-time = "2026-09-21T17:49:38.167Z" },
105
105
  ]
106
106
 
107
107
  [[package]]
108
108
  name = "persona-sdk-python"
109
- version = "0.1.0"
109
+ version = "0.2.24"
110
110
  source = { editable = "." }
111
111
  dependencies = [
112
112
  { name = "httpx" },
@@ -116,7 +116,7 @@ dependencies = [
116
116
  [package.metadata]
117
117
  requires-dist = [
118
118
  { name = "httpx", specifier = ">=0.27.0" },
119
- { name = "persona-models", specifier = ">=0.2.15" },
119
+ { name = "persona-models", specifier = ">=0.2.16" },
120
120
  ]
121
121
 
122
122
  [[package]]
@@ -1,18 +0,0 @@
1
- image: python:3.12
2
-
3
- pipelines:
4
- branches:
5
- main:
6
- - step:
7
- name: Publish to PyPI
8
- caches:
9
- - pip
10
- script:
11
- - apt-get update && apt-get install -y git
12
- - pip install build twine
13
- - export VERSION=0.2.$BITBUCKET_BUILD_NUMBER
14
- - sed -i "s/^version = .*/version = \"$VERSION\"/" pyproject.toml
15
- - python -m build
16
- - twine upload dist/* -u __token__ -p $PYPI_TOKEN
17
- - git tag -a $VERSION -m "$VERSION"
18
- - git push origin $VERSION