pythia-plsql 0.8.0__tar.gz → 0.10.0__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.
- {pythia_plsql-0.8.0/scripts/pythia_plsql.egg-info → pythia_plsql-0.10.0}/PKG-INFO +10 -7
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/README.md +9 -6
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/pyproject.toml +1 -1
- pythia_plsql-0.10.0/queries/current-schema.sql +6 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/scripts/pythia.py +512 -82
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0/scripts/pythia_plsql.egg-info}/PKG-INFO +10 -7
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/scripts/pythia_plsql.egg-info/SOURCES.txt +1 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-apply/SKILL.md +30 -30
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/tests/test_phase3.py +363 -5
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/tests/test_phase5.py +2 -1
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/LICENSE +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/compile-errors.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/dependencies.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/impact.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/invalid-objects.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/name-occupants.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/object-names.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/object-source.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/plscope-enabled.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/plscope-statements.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/plscope-usages.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/session-privileges.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/similar-candidates.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/queries/source.sql +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/scripts/pythia_plsql.egg-info/dependency_links.txt +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/scripts/pythia_plsql.egg-info/entry_points.txt +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/scripts/pythia_plsql.egg-info/requires.txt +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/scripts/pythia_plsql.egg-info/top_level.txt +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/setup.cfg +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-conventions/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-explore/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-explore/reference/data-dictionary.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-impact/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-review/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-review/reference/antipatterns.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-setup/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-skill-author/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-spec/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-write/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/pythia-write/reference/patterns.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/skills/using-pythia/SKILL.md +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/tests/test_install.py +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/tests/test_phase1.py +0 -0
- {pythia_plsql-0.8.0 → pythia_plsql-0.10.0}/tests/test_phase2.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythia-plsql
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0
|
|
4
4
|
Summary: PL/SQL development for AI agents on Oracle Database - expert data-dictionary queries, impact analysis, and a snapshot-verified write path with honest rollback.
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/thaildhe172591/pythia
|
|
@@ -101,11 +101,14 @@ through one door: **snapshot → impact → preview → token → approve → ap
|
|
|
101
101
|
verify → report**. DDL self-commits in Oracle, so the snapshot is the only real
|
|
102
102
|
undo — it runs first and no flag disables it. A content-bound token guarantees
|
|
103
103
|
what lands is byte-for-byte what was previewed, and a **developer-minted grant**
|
|
104
|
-
guarantees a person approved it at all
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
guarantees a person approved it at all — through one of two doors, both the
|
|
105
|
+
developer's. In chat: the agent asks with `AskUserQuestion`, the question text
|
|
106
|
+
being pythia's own approval card (`pythia approve --card <token>`), and the
|
|
107
|
+
answer **Approve** — written into the hook payload by Claude Code, never by
|
|
108
|
+
the agent — mints the one-time grant. At a console: `pythia approve <token>`.
|
|
109
|
+
Without that grant `apply --confirm` refuses. A headless agent cannot `--yes`
|
|
110
|
+
its own writes, cannot mint approval, and cannot loosen policy — each of those
|
|
111
|
+
takes a human, answering or typing.
|
|
109
112
|
|
|
110
113
|
The same discipline holds when the *developer* does the work: `src` and
|
|
111
114
|
`impact` silently snapshot what they read, so even a change made by hand in
|
|
@@ -211,7 +214,7 @@ Per-group write policy, `.pythia/policy.json` (defaults shown):
|
|
|
211
214
|
| Group | Default | Is rollback real? |
|
|
212
215
|
|---|---|---|
|
|
213
216
|
| `plsql_source` | `confirm` | **Yes — completely.** Source is recoverable from `ALL_SOURCE`. |
|
|
214
|
-
| `data_dml` | `deny` | **No.** After commit only Flashback Query remains, within undo retention. |
|
|
217
|
+
| `data_dml` | `deny` | **No.** After commit only Flashback Query remains, within undo retention. Revalidation checks the row set *before* the write; it is not an undo. |
|
|
215
218
|
| `structural` | `deny` | **Almost never.** `DROP COLUMN` is permanent; a dropped table may be in the Recycle Bin. |
|
|
216
219
|
| `grants` | `deny` | Yes, but by hand. |
|
|
217
220
|
| `session` | `allow` | Not needed. |
|
|
@@ -87,11 +87,14 @@ through one door: **snapshot → impact → preview → token → approve → ap
|
|
|
87
87
|
verify → report**. DDL self-commits in Oracle, so the snapshot is the only real
|
|
88
88
|
undo — it runs first and no flag disables it. A content-bound token guarantees
|
|
89
89
|
what lands is byte-for-byte what was previewed, and a **developer-minted grant**
|
|
90
|
-
guarantees a person approved it at all
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
guarantees a person approved it at all — through one of two doors, both the
|
|
91
|
+
developer's. In chat: the agent asks with `AskUserQuestion`, the question text
|
|
92
|
+
being pythia's own approval card (`pythia approve --card <token>`), and the
|
|
93
|
+
answer **Approve** — written into the hook payload by Claude Code, never by
|
|
94
|
+
the agent — mints the one-time grant. At a console: `pythia approve <token>`.
|
|
95
|
+
Without that grant `apply --confirm` refuses. A headless agent cannot `--yes`
|
|
96
|
+
its own writes, cannot mint approval, and cannot loosen policy — each of those
|
|
97
|
+
takes a human, answering or typing.
|
|
95
98
|
|
|
96
99
|
The same discipline holds when the *developer* does the work: `src` and
|
|
97
100
|
`impact` silently snapshot what they read, so even a change made by hand in
|
|
@@ -197,7 +200,7 @@ Per-group write policy, `.pythia/policy.json` (defaults shown):
|
|
|
197
200
|
| Group | Default | Is rollback real? |
|
|
198
201
|
|---|---|---|
|
|
199
202
|
| `plsql_source` | `confirm` | **Yes — completely.** Source is recoverable from `ALL_SOURCE`. |
|
|
200
|
-
| `data_dml` | `deny` | **No.** After commit only Flashback Query remains, within undo retention. |
|
|
203
|
+
| `data_dml` | `deny` | **No.** After commit only Flashback Query remains, within undo retention. Revalidation checks the row set *before* the write; it is not an undo. |
|
|
201
204
|
| `structural` | `deny` | **Almost never.** `DROP COLUMN` is permanent; a dropped table may be in the Recycle Bin. |
|
|
202
205
|
| `grants` | `deny` | Yes, but by hand. |
|
|
203
206
|
| `session` | `allow` | Not needed. |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pythia-plsql"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.10.0"
|
|
8
8
|
description = "PL/SQL development for AI agents on Oracle Database - expert data-dictionary queries, impact analysis, and a snapshot-verified write path with honest rollback."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- Purpose: the schema an unqualified CREATE lands in for this session. A proxy
|
|
2
|
+
-- or a mis-set connections.json can put it somewhere other than the
|
|
3
|
+
-- schema pythia snapshots and verifies; apply refuses that mismatch.
|
|
4
|
+
-- Binds: none
|
|
5
|
+
-- Returns: CURRENT_SCHEMA
|
|
6
|
+
select sys_context('userenv', 'current_schema') current_schema from dual
|