sourcecode 3.2.1__py3-none-any.whl → 3.3.0__py3-none-any.whl

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.

Potentially problematic release.


This version of sourcecode might be problematic. Click here for more details.

@@ -1,12 +1,13 @@
1
- """sourcecode telemetry — anonymous usage metrics, on by default (opt-out).
1
+ """sourcecode telemetry — anonymous usage metrics, off until you turn them on (opt-in).
2
2
 
3
3
  Public API:
4
4
  is_enabled() → bool
5
5
  record(event, **kw) → None (fire-and-forget)
6
6
  session_id() → str (ephemeral 8-char hex, new each process)
7
7
 
8
- Telemetry is enabled by default and stays anonymous. It can be disabled at any
9
- time via `sourcecode telemetry disable`, SOURCECODE_TELEMETRY=0, or DO_NOT_TRACK=1.
8
+ Telemetry is opt-in and stays anonymous: nothing is collected until `ask telemetry
9
+ enable` (or SOURCECODE_TELEMETRY=1). It was opt-out until 3.3.0 — see config.py for
10
+ why the default moved.
10
11
 
11
12
  Nothing sensitive (code, paths, secrets, output) is ever collected.
12
13
  See docs/privacy.md for full details.
@@ -1,11 +1,17 @@
1
1
  """Persistent telemetry configuration.
2
2
 
3
- Telemetry is enabled by default (opt-out). It stays anonymous and never
4
- collects source code, paths, secrets or repository content.
3
+ Telemetry is **off until the user turns it on** (opt-in). It stays anonymous and
4
+ never collects source code, paths, secrets or repository content.
5
+
6
+ It was opt-out until 3.3.0. Field evaluation #3 was the first audit of regulated
7
+ third-party code — public-sector health data — and there the default is not a
8
+ preference but a procurement blocker: the reviewer had to disable telemetry
9
+ *before the first run*, which the product gave them no way to do. Nothing is
10
+ collected before an explicit choice, so there is nothing to disable in time.
5
11
 
6
12
  Config file: ~/.config/sourcecode/config.json
7
- Disable: `sourcecode telemetry disable`, SOURCECODE_TELEMETRY=0, or DO_NOT_TRACK=1
8
- Env override: SOURCECODE_TELEMETRY=0 (disable) or =1 (enable)
13
+ Enable: `ask telemetry enable` or SOURCECODE_TELEMETRY=1
14
+ Env override: SOURCECODE_TELEMETRY=1 (enable) or =0 (disable); DO_NOT_TRACK=1 disables
9
15
  """
10
16
 
11
17
  from __future__ import annotations
@@ -18,18 +24,6 @@ from typing import Any
18
24
  _ENV_VAR = "SOURCECODE_TELEMETRY"
19
25
  _CONFIG_FILE = Path.home() / ".config" / "sourcecode" / "config.json"
20
26
 
21
- # CI markers — when no explicit choice has been made, telemetry defaults OFF
22
- # in CI (no human to see the first-run notice), ON otherwise.
23
- _CI_VARS = (
24
- "CI", "CONTINUOUS_INTEGRATION", "GITHUB_ACTIONS", "CIRCLECI",
25
- "TRAVIS", "JENKINS_URL", "BUILDKITE", "GITLAB_CI", "TF_BUILD",
26
- "TEAMCITY_VERSION", "DRONE", "SEMAPHORE",
27
- )
28
-
29
-
30
- def _in_ci() -> bool:
31
- return any(os.environ.get(v) for v in _CI_VARS)
32
-
33
27
 
34
28
  def _load() -> dict[str, Any]:
35
29
  try:
@@ -46,14 +40,29 @@ def _save(data: dict[str, Any]) -> None:
46
40
  pass # config write failure is non-fatal
47
41
 
48
42
 
43
+ def stored_choice() -> "bool | None":
44
+ """The explicit choice on record, or None when the user has made none.
45
+
46
+ `None` is a state, not a synonym for `False`: "off because nobody has been
47
+ asked yet" and "off because you turned it off" are different answers, and
48
+ `telemetry status` prints them differently.
49
+ """
50
+ stored = _load().get("telemetry", {}).get("enabled")
51
+ return None if stored is None else bool(stored)
52
+
53
+
49
54
  def is_enabled() -> bool:
50
- """True unless telemetry has been explicitly disabled.
55
+ """True only when telemetry has been explicitly turned on.
51
56
 
52
- Telemetry is enabled by default (opt-out). Precedence, highest first:
57
+ Telemetry is **opt-in**: no choice on record means off, everywhere, CI or
58
+ not. Precedence, highest first:
53
59
  1. SOURCECODE_TELEMETRY env var (0 = off, 1 = on)
54
60
  2. DO_NOT_TRACK env var (any value other than ""/"0" turns it off)
55
61
  3. config file 'enabled' flag, if the user has made an explicit choice
56
- 4. default: True — except in CI, where it defaults to False
62
+ 4. default: False
63
+
64
+ There is no CI special case any more, because there is nothing left for it
65
+ to protect against — the default it used to override is now off.
57
66
  """
58
67
  env = os.environ.get(_ENV_VAR, "").strip()
59
68
  if env == "0":
@@ -63,11 +72,10 @@ def is_enabled() -> bool:
63
72
  dnt = os.environ.get("DO_NOT_TRACK", "").strip()
64
73
  if dnt not in ("", "0"):
65
74
  return False
66
- stored = _load().get("telemetry", {}).get("enabled")
75
+ stored = stored_choice()
67
76
  if stored is not None:
68
- return bool(stored)
69
- # No explicit choice yet: on by default, off under CI.
70
- return not _in_ci()
77
+ return stored
78
+ return False
71
79
 
72
80
 
73
81
  def has_been_asked() -> bool:
@@ -1,9 +1,13 @@
1
1
  """First-run telemetry notice.
2
2
 
3
- Telemetry is enabled by default (opt-out) and stays anonymous. The notice is
4
- shown exactly once, only on interactive TTYs, to inform the user that
5
- telemetry is on and how to turn it off. It does not ask a question — it
6
- informs and respects the user's right to disable.
3
+ Telemetry is **opt-in**: nothing has been collected when this notice appears, and
4
+ nothing will be until the user runs `ask telemetry enable`. The notice is shown
5
+ exactly once, only on interactive TTYs, and it is an invitation — it states what
6
+ *would* be collected if they said yes, and it never changes the setting.
7
+
8
+ The invitation is deliberately printed even though the answer is already "no":
9
+ a user who never learns the option exists cannot choose to help, and a silent
10
+ collector is the thing this release removed.
7
11
 
8
12
  Notice is written to stderr so it doesn't pollute stdout output.
9
13
  """
@@ -15,20 +19,20 @@ import sys
15
19
 
16
20
  _NOTICE = """\
17
21
  \033[2m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18
- sourcecode — anonymous telemetry is ON by default
22
+ ask — anonymous telemetry is OFF
19
23
 
20
- Anonymous usage metrics help improve sourcecode.
24
+ Nothing has been collected, and nothing will be unless you
25
+ turn it on. If you would like to help:
21
26
 
22
- Collected: tool version, Python version, OS, commands used,
23
- flags used, MCP tool names invoked, approximate repo size,
24
- execution duration, errors.
27
+ ask telemetry enable
25
28
 
26
- Never collected: source code, file paths, file names, secrets,
27
- tokens, environment variables, or any repository content.
29
+ If you do, this is collected: tool version, Python version,
30
+ OS, commands used, flags used, MCP tool names invoked,
31
+ approximate repo size, execution duration, errors.
28
32
 
29
- Disable at any time:
30
- ask telemetry disable
31
- export SOURCECODE_TELEMETRY=0 (or DO_NOT_TRACK=1)
33
+ Never collected, on or off: source code, file paths, file
34
+ names, secrets, tokens, environment variables, or any
35
+ repository content.
32
36
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m
33
37
  """
34
38
 
@@ -47,10 +51,10 @@ def _is_interactive() -> bool:
47
51
 
48
52
 
49
53
  def show_first_run_notice() -> None:
50
- """Print the one-time telemetry notice on interactive terminals.
54
+ """Print the one-time telemetry invitation on interactive terminals.
51
55
 
52
56
  Never raises. Does nothing on non-interactive / CI environments.
53
- Telemetry stays enabled regardless — this only informs the user.
57
+ Telemetry stays off regardless — this only tells the user the option exists.
54
58
  """
55
59
  if not _is_interactive():
56
60
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 3.2.1
3
+ Version: 3.3.0
4
4
  Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
5
5
  License-File: LICENSE
6
6
  Keywords: agents,ai,codebase,context,developer-tools,llm
@@ -74,13 +74,17 @@ Cache keyed on content hashes — invalidated only when source changes. On repea
74
74
  At 0.3s per call, ASK Engine becomes **constant infrastructure** inside agent loops — call it before every edit, every PR review, every test run, without batching or caching manually.
75
75
 
76
76
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
77
- shared structural layers (L1/L2 + the Repository Intelligence Snapshot) and the **compact
78
- view**. Pass `--agent` to warm the agent view as well. Deeper projections are separate view
79
- keys and are *not* covered by either — `--full`, `--env-map` and a raised `--depth` recompute
80
- on first use, as do most `prepare-context` tasks. Measured on a 3,342-file Spring monolith:
81
- `cache warm` 103s → `--compact --git-context` 1s (hit), but `--agent --full --env-map
82
- --depth 20` still 171s (miss). Budget the deep run explicitly in CI, or warm exactly the view
83
- your pipeline consumes. Full model: [USER_GUIDE.md#caching](docs/USER_GUIDE.md#caching).
77
+ shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
78
+ IR) and the **compact view**. Pass `--agent` to warm the agent view as well. Deeper projections
79
+ are separate keys and are *not* covered by either — `--full`, `--env-map` and a raised `--depth`
80
+ recompute on first use, as do most `prepare-context` tasks. Measured on a 3,342-file Spring
81
+ monolith: `cache warm` 103s → `--compact --git-context` 1s (hit), but `--agent --full --env-map
82
+ --depth 20` still 171s (miss).
83
+
84
+ **One rule for invalidation, and a table that names every command.** Every layer keys on the
85
+ exact tree state: any change to the analysed files invalidates it, committed or not. Which of
86
+ *your* commands a warm helps — the answer, only the shared work, or nothing — is published per
87
+ command: `ask cache model`, or [docs/CACHE.md](docs/CACHE.md).
84
88
 
85
89
  ---
86
90
 
@@ -200,38 +204,58 @@ The everyday loop: diff-based PR review, symptom-driven bug triage, and delta co
200
204
  → [reference](docs/USER_GUIDE.md#typical-workflows)
201
205
 
202
206
  ### 7 · Utilities
203
- `ask rename-class` (word-boundary Java rename) · `ask chunk-file` (split large files for agents) · `ask cache` (status / warm / clear / freshness)
207
+ `ask rename-class` (word-boundary Java rename) · `ask chunk-file` (split large files for agents) · `ask cache` (status / warm / model / clear / freshness)
204
208
  → [reference](docs/USER_GUIDE.md)
205
209
 
206
210
  ---
207
211
 
212
+ ## Command tiers
213
+
214
+ A tier says **what an output is worth relying on** — it is a stability promise, not a value
215
+ ranking, and not the [pricing tier](docs/PRODUCT_TIERS.md) (Free/Pro gates repository size,
216
+ never capability). `posture` is the most differentiated command in the product *and* it is
217
+ experimental: both are true, and they are two different facts.
218
+
219
+ | Tier | Promise | Commands |
220
+ |---|---|---|
221
+ | **core** | contract stable within a major — safe to gate CI on | `endpoints` · `spring-audit` · `migrate-check` · `impact` · `impact-chain` · `pr-impact` · `verify` |
222
+ | **supported** | maintained; fields are added, never removed without a major | every command not named in another row |
223
+ | **experimental** | shape may change in a minor — do not gate CI on it | `posture` · `archetype` · `retrieve` |
224
+ | **parked** | kept working, no longer developed | none today |
225
+
226
+ The same table is printed by `ask --help`, and both are generated from one authority
227
+ (`cli.COMMAND_TIERS`) — the battery fails if a command is in no tier, or if this file drifts
228
+ from it.
229
+
230
+ ---
231
+
208
232
  ## Every command, in one table
209
233
 
210
234
  *`ask --help` shows a short header; this is the full surface. If you only read one row, read
211
235
  `posture`.*
212
236
 
213
- | Command | Answers | Note |
214
- |---|---|---|
215
- | `posture` | which beans a profile set wires, and how effective endpoint access differs between two sets | **experimental**, most differentiated |
216
- | `endpoints` | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators) |
217
- | `spring-audit` | transactional anomalies + security surface + validation gaps | `--ci`, `-f github-comment` |
218
- | `migrate-check` | Boot 2→3 readiness: located blockers, per-dimension score, effort | `--blast-radius` orders the re-test plan |
219
- | `impact` / `impact-chain` | blast radius of a change, to the endpoints it reaches | target the **interface**, not the `Impl` |
220
- | `pr-impact` | the same, scoped to a PR diff | gating command: `--fail-on`, exit codes |
221
- | `verify` | does the repo satisfy its declared contracts, **relative to a baseline** | `.ask/contracts.yml`; exit 0/1/2 |
222
- | `verify-edit` | did the working-tree edits change runtime behaviour | semantic diff gate for the edit loop |
223
- | `--compact` / `--agent` | bounded structural context for an agent | `--compact` is the token-cheap one |
224
- | `onboard` / `explain` / `cold-start` | orientation in an unfamiliar repo; per-class summary; bootstrap snapshot | |
225
- | `export` / `repo-ir` / `schema` | tool-agnostic views (C4, module graph, integrations); symbol-level IR; published JSON Schemas | |
226
- | `modernize` | coupling hubs, cycles, dead zones, refactor candidates | |
227
- | `review-pr` / `fix-bug` / `prepare-context` | diff review, symptom triage, task-shaped context | |
228
- | `plan` / `compare` / `delta` / `contract-diff` | what to review for a change; candidates by measured cost; outcome of a change; public-contract break | no verdicts, measured cost only |
229
- | `validation` | request-body validation coverage and gaps | |
230
- | `baseline capture\|diff\|trend` | versioned architectural metrics over time | trend reporting, not gating |
231
- | `retrieve` | typed knowledge queries over the model | **experimental** |
232
- | `archetype` | evidence-based architectural archetype | **experimental** |
233
- | `rename-class` / `chunk-file` | word-boundary Java rename; split a large file for an agent | |
234
- | `cache status\|warm\|clear` · `auth` · `telemetry` · `mcp` · `config` · `version` | housekeeping | |
237
+ | Command | Tier | Answers | Note |
238
+ |---|---|---|---|
239
+ | `posture` | experimental | which beans a profile set wires, and how effective endpoint access differs between two sets | the most differentiated capability here |
240
+ | `endpoints` | core | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators) |
241
+ | `spring-audit` | core | transactional anomalies + security surface + validation gaps | `--ci`, `-f github-comment` |
242
+ | `migrate-check` | core | Boot 2→3 readiness: located blockers, per-dimension score, effort | `--blast-radius` orders the re-test plan |
243
+ | `impact` / `impact-chain` | core | blast radius of a change, to the endpoints it reaches | target the **interface**, not the `Impl` |
244
+ | `pr-impact` | core | the same, scoped to a PR diff | gating command: `--fail-on`, exit codes |
245
+ | `verify` | core | does the repo satisfy its declared contracts, **relative to a baseline** | `.ask/contracts.yml`; exit 0/1/2 |
246
+ | `verify-edit` | supported | did the working-tree edits change runtime behaviour | semantic diff gate for the edit loop |
247
+ | `--compact` / `--agent` | — | bounded structural context for an agent | flags of the root command, not commands: not tiered |
248
+ | `onboard` / `explain` / `cold-start` | supported | orientation in an unfamiliar repo; per-class summary; bootstrap snapshot | |
249
+ | `export` / `repo-ir` / `schema` | supported | tool-agnostic views (C4, module graph, integrations); symbol-level IR; published JSON Schemas | |
250
+ | `modernize` | supported | coupling hubs, cycles, dead zones, refactor candidates | |
251
+ | `review-pr` / `fix-bug` / `prepare-context` | supported | diff review, symptom triage, task-shaped context | |
252
+ | `plan` / `compare` / `delta` / `contract-diff` | supported | what to review for a change; candidates by measured cost; outcome of a change; public-contract break | no verdicts, measured cost only |
253
+ | `validation` | supported | request-body validation coverage and gaps | |
254
+ | `baseline capture\|diff\|trend` | supported | versioned architectural metrics over time | trend reporting, not gating |
255
+ | `retrieve` | experimental | typed knowledge queries over the model | |
256
+ | `archetype` | experimental | evidence-based architectural archetype | |
257
+ | `rename-class` / `chunk-file` | supported | word-boundary Java rename; split a large file for an agent | |
258
+ | `cache status\|warm\|model\|clear` · `auth` · `telemetry` · `mcp` · `config` · `version` | supported | housekeeping | `activate` too |
235
259
 
236
260
  ---
237
261
 
@@ -287,18 +311,18 @@ Full breakdown: [docs/PRODUCT_TIERS.md](docs/PRODUCT_TIERS.md).
287
311
 
288
312
  ```bash
289
313
  ask config # version, config file path, telemetry status
290
- ask telemetry disable # anonymous telemetry is on by default (opt-out)
314
+ ask telemetry enable # anonymous telemetry is OFF by default (opt-in)
291
315
  ```
292
316
 
293
- Telemetry collects version, OS, commands, flags, duration, repo-size range, and errors —
294
- **no source code, paths, secrets, or output**. Disable any time with
295
- `export SOURCECODE_TELEMETRY=0` (or `DO_NOT_TRACK=1`). It defaults to **off in CI**.
317
+ **Nothing is collected or transmitted unless you turn telemetry on** — not on the first run,
318
+ not in CI. If you do opt in, it collects version, OS, commands, flags, duration, repo-size
319
+ range, and errors: **no source code, paths, secrets, or output**. Turn it off again with
320
+ `ask telemetry disable`, `export SOURCECODE_TELEMETRY=0`, or `DO_NOT_TRACK=1`.
296
321
 
297
- > **Auditing someone else's code — regulated, client-owned or public-sector?** Turn it off
298
- > *before* the first run, not after: `SOURCECODE_TELEMETRY=0 ask …`, or `ask telemetry disable`
299
- > once (remembered). The default is opt-out today; **moving it to opt-in is on the roadmap**
300
- > (`docs/DEFECT-LEDGER.md` P-1) precisely because a default you must remember to disable is the
301
- > wrong default for third-party code.
322
+ > **Auditing someone else's code — regulated, client-owned or public-sector?** Nothing to do.
323
+ > Telemetry was opt-out until 3.3.0; it is opt-in now (`docs/DEFECT-LEDGER.md` P-1), because a
324
+ > default you must remember to disable is the wrong default for third-party code. An explicit
325
+ > choice you made before is unchanged.
302
326
 
303
327
  **Custom security annotations.** Teach `endpoints`, `spring-audit`, and `explain` about
304
328
  project-specific authorization annotations via an optional `sourcecode.config.json` at the
@@ -1,4 +1,4 @@
1
- sourcecode/__init__.py,sha256=6x6sVPhgem27mPs9kjwcPvWQE6fXXRuvsi6L96JWOFM,308
1
+ sourcecode/__init__.py,sha256=9RKwt2uA8CQnRB8LqY0DRISYNXIrngyDDSP38-y1QgU,308
2
2
  sourcecode/adaptive_scanner.py,sha256=yJBKjNpkY6bpueYJ2YnRezen3sYZDecEt7WaaNWdqug,9466
3
3
  sourcecode/archetype.py,sha256=qWMCyL2UzSGXJhCIZj38JjS7wI15EE3eILsWiaoCZXQ,35779
4
4
  sourcecode/architectural_baseline.py,sha256=7QzJri4pbL3nzAn9gNutZW6mZR8HHD6H2C2H1EEwYPE,17904
@@ -6,7 +6,8 @@ sourcecode/architectural_delta.py,sha256=E6MkyjWl-1ZgR4KSKnI785gUAfc8nq-lK-jd_ru
6
6
  sourcecode/architecture_analyzer.py,sha256=GFc4ek-s1IHWM7pl-0L32WahZ93AmDgrAMcOuBKA5Dk,61463
7
7
  sourcecode/architecture_summary.py,sha256=BVVRHd952cjRhjHnR6CPrvKgaa-tdM16l-pBi1yDCPs,32395
8
8
  sourcecode/ast_extractor.py,sha256=ZwHN3Y0iRp2gpv3t5Nm5uvX7Xw1KtULCJPZqKpZQRAE,51255
9
- sourcecode/cache.py,sha256=hv5GTk-RktbediFMgNUMcd4R7NuEg5BOaAzj5ZEoD18,33739
9
+ sourcecode/cache.py,sha256=2zh87pMJ8WJ-ZNNlzogFv6v5lsxqyOUS7XRGoH9xRDc,38095
10
+ sourcecode/cache_model.py,sha256=A29lG7s0WpL1z0A3wZ6oGxwllJbbG0SBpgaSQ_kCmP0,14695
10
11
  sourcecode/call_surface.py,sha256=fiqYfHooxN1fX9oQoysq1LS3LoZcobhyUNjAGEZKpwk,4148
11
12
  sourcecode/caller_metrics.py,sha256=7xJDoar5RHOgDTvaZhML1V5JERJDFc4DA-y_WPKfJCw,3842
12
13
  sourcecode/canonical_ir.py,sha256=LdP_Ri3rl0M5p-MY0ypVvQwhq1WuUF1FmaHid7zyzEg,29807
@@ -14,12 +15,12 @@ sourcecode/chain_rules.py,sha256=Bi6UHfgd-GxWswmnHRcPz5jdbAuqka3Zkz_P-MTvqhw,127
14
15
  sourcecode/change_plan.py,sha256=MNgNyu4zrLGvBBaXPwyCh-T2ZGaUQX3Hm4W87uuhZ3w,7750
15
16
  sourcecode/cir_graphs.py,sha256=9G0HHj1kw2325IDyzo2OpX73BNswEckecf4MZUXB4JM,12078
16
17
  sourcecode/classifier.py,sha256=JBzPwSSrDG-tUHAbcKB678HRbjLpD-ohzbzzO62mgpo,20114
17
- sourcecode/cli.py,sha256=zkgwPCE88xAX5lZaBtNvN-pGYDvU_FzUkOGCuehioIY,403029
18
+ sourcecode/cli.py,sha256=U3Qcs1XcFo6nOeZpG3khVmz-4XHcb-7K1DZN2R4hupM,411709
18
19
  sourcecode/code_notes_analyzer.py,sha256=EJemNCNc9Dn-1RZYu-aNbK0ELzmsyC4s6FdHi3XyNEI,9392
19
20
  sourcecode/compare.py,sha256=jdePg0dNCxFpysiTGMsROL5XABLjy_zVUgVeySvdb0o,7514
20
21
  sourcecode/confidence_analyzer.py,sha256=_nvtwO6RM3k0JMuH5m7DsBxOD0PdxGFS4Bb1fTQ536E,21946
21
22
  sourcecode/constraint_diff.py,sha256=hWIO5vsxvHjsgQx23K3r_JMy1W6wQ2Ca4DqB9R_iMnY,5831
22
- sourcecode/context_cache.py,sha256=WwN07VUylo8sRyWIgK7qp1D6uK4ZrR4EkPnyENFKwyU,27101
23
+ sourcecode/context_cache.py,sha256=VCH-u6wPrTv6fz5uGqqwsLaVEUKVyZZSOhkb0BmZ6cA,26297
23
24
  sourcecode/context_graph.py,sha256=i2kOX3XiaCqcR20ojbUnqoX-hJbMyLNYc7rl-n15bwE,46426
24
25
  sourcecode/context_scorer.py,sha256=QpChSpsmaAYz91rXA4Ue5xzQmNz_ZboZN09YOHScq1U,14679
25
26
  sourcecode/context_summarizer.py,sha256=cI2TZMvEhl0BEma12VtPaX6z03ZVBAetVzuK5GaCOvg,6852
@@ -50,7 +51,7 @@ sourcecode/graph_evidence.py,sha256=rENNsYRZeNstX_ExNCLlbHJAruFQwxo5d00x6wO3xwI,
50
51
  sourcecode/hibernate_strat.py,sha256=5GmHiB865HxKdvaxeFV07ojglUgxyOP41AY2xiHfV30,61700
51
52
  sourcecode/integration_coordinates.py,sha256=7vGFxN4tCn_KTisYFJuixa8XkyHBoasEFB3fqM62OBI,7407
52
53
  sourcecode/jdk_exports.py,sha256=fCrlwNAXUT9gge_joq6kMnY3zJxYB2pxqy-0w3o3MJI,874
53
- sourcecode/license.py,sha256=keFuwNxdAtvK2Ds91Wl79GMYxuxWYnN5Wbw1qBpaoUI,24896
54
+ sourcecode/license.py,sha256=vvgE1vBUWh8ozWI7USYuteh6noxntnjuzDQIPF-l4rA,27795
54
55
  sourcecode/mcp_nudge.py,sha256=lKemOqK_wny2u7Ymcr2Idi5Kx8pXY02jCi-_nJYLGMg,2992
55
56
  sourcecode/metrics_analyzer.py,sha256=gLoRWKygF18jLgwsqmGXSWopw-f5iO1VbM7Jjdif6ag,22809
56
57
  sourcecode/migrate_check.py,sha256=TJvaShbglENOr8ikvCodnlXQy54TtT05N2ZVe02b3lc,110421
@@ -63,7 +64,7 @@ sourcecode/perf.py,sha256=GAcEoouPIlPMCQIcHNToxK6K3WdIR-lj9aFg4prOYJI,9743
63
64
  sourcecode/posture.py,sha256=9xM0iZWAPfA5qBP06xxjbwAQq3WzXEYLHftdjwXjsL0,36483
64
65
  sourcecode/pr_comment_renderer.py,sha256=KmcjMruhR44gjzMDJwjBSkWP9QEvh8xWBLyxzxoRbj0,14542
65
66
  sourcecode/pr_impact.py,sha256=eaFgcPMDsjaF8VZvcitFWCPCabMTi-khtGdxpK0wXTQ,22461
66
- sourcecode/prepare_context.py,sha256=cof5MFCPpbg4YWEghQWbMk3h6Egr7Ntiy2A4dAfkrgc,231349
67
+ sourcecode/prepare_context.py,sha256=DXU5ZtM5MY5AxC0897DlRgSifw3ux-obDA1SL0aKkrs,231503
67
68
  sourcecode/progress.py,sha256=qn30sWaHOkjTgXsSBmiPkz7Rsbwc5oSlIe6JNEMYp_k,3149
68
69
  sourcecode/ranking_engine.py,sha256=ZAucq_YX2KkWUuAZf4P0lhtQ_38vEFnUhuGtSZd1S0E,12970
69
70
  sourcecode/readiness_timeline.py,sha256=T5NKLuRHS83lPslE2kMs_RSVENd8jZJ11N1c9gpkpH8,7244
@@ -74,7 +75,7 @@ sourcecode/relevance_scorer.py,sha256=0AgEt4KrV73nioMqBgjhGjtY7L2C7L7cSyKtj3IKcr
74
75
  sourcecode/rename_refactor.py,sha256=h6dNFlB9aZ_3q6heeHBkgXQeXaT03nvPSsYH6P8qxFg,12965
75
76
  sourcecode/repo_classifier.py,sha256=FG1vaWKdWXsWdl-S8hjVMiTqcwgaRXkDyvK4rPcOGtQ,22681
76
77
  sourcecode/repository_ir.py,sha256=2S14aUMY5vpZePObd3F87kz71KUsVXQllurXjufa6A0,344648
77
- sourcecode/ris.py,sha256=Hw8TakTQ6hku-Abf2k8954NwkrH_sP73_8wVH8x5khc,22079
78
+ sourcecode/ris.py,sha256=A5fzx0s1qeDkVhf_rs2Kn78imXs4Xir9gLgMRdMT8nQ,23273
78
79
  sourcecode/runtime_classifier.py,sha256=uTAD6BDCiBLUZEDRfqk718kM4RTT_vAbfkcOI2_Xx58,18432
79
80
  sourcecode/scanner.py,sha256=z3CV0rcGunu0Y8mpNgp07wI7nxT0pxw1BkXRRtI0Rpo,9609
80
81
  sourcecode/schema.py,sha256=aHNXDf8LGyUC8ZDE_VS9kiskC2-Oswhi_WnpdGy6HDw,24897
@@ -133,7 +134,7 @@ sourcecode/mcp/__init__.py,sha256=XU4HfRGbdid8wdUA0x_4f7uKZD1z3mv_XUY_WU_T9Mw,17
133
134
  sourcecode/mcp/orchestrator.py,sha256=diVoQgn24QmgPL3Ev8Sp6hsvh02OqY3MktHXOzrlodo,36525
134
135
  sourcecode/mcp/registry.py,sha256=ZaezKqEbRtPto8aBHpP9XsnSkQ-u4fMtDxhwkgl-iuc,68418
135
136
  sourcecode/mcp/runner.py,sha256=RGimCwhLyHxjCvH7q72y12HWEnATXZLC-NBWhkzlu0I,2852
136
- sourcecode/mcp/server.py,sha256=aYCiQj7NiiDpr3rvZAwPeMvNPJf02X4MFxgB-pMkFGg,65514
137
+ sourcecode/mcp/server.py,sha256=EX6TJCGBK0zPOhtArXAVuVhi2o_whbA8jw0CyC7SkVw,65508
137
138
  sourcecode/mcp/onboarding/__init__.py,sha256=sj2PWqEBmMc4zBNkomg89WtL0M6S7A9yb7_wAuSWNP4,66
138
139
  sourcecode/mcp/onboarding/applier.py,sha256=Sx9vHTaXr_M1Bs4uMjO7qa_a2_p4J9oz93oJsKQ7ds4,3298
139
140
  sourcecode/mcp/onboarding/backup.py,sha256=ihqGOR8QTX8HASRSEDyfFyXr5bkXrygPHamv4p9KTmk,1452
@@ -158,14 +159,14 @@ sourcecode/retrieval/steps_intf.py,sha256=BIopGUhxwutV51r8-1bTCC_VTYENJiHbREF13p
158
159
  sourcecode/retrieval/steps_struct.py,sha256=jO9L49hziTlS_xhuhCGUavgyAL3ZAnJSOZB-UA4GaRM,13893
159
160
  sourcecode/retrieval/steps_txsec.py,sha256=LKRzALzRw_0aQ3_tpbd34mt8u7o690g5tCnp871j7P4,17804
160
161
  sourcecode/schemas/envelope-v1.schema.json,sha256=lABkyKqXND039JUY2R6KK47OCDco5mq5PLgkcCXFhOQ,3477
161
- sourcecode/telemetry/__init__.py,sha256=a-cy2Gypx9fzJfBHK-e3hstYi6FLNlUj-k62yWyugMY,3461
162
- sourcecode/telemetry/config.py,sha256=u_zctgmA1pVT3Ai5jm-pdLY_5kJTRg4Xq2bvIbGBQE4,3727
163
- sourcecode/telemetry/consent.py,sha256=GuhCiA_x2n3LwGBkZnvyIwtFcf5Zwa8O0DdLqkATIr0,2220
162
+ sourcecode/telemetry/__init__.py,sha256=ZxV5AJAK5_pk0RnW0B1ntpGPRapOX_XKFJdT_6RuYhE,3502
163
+ sourcecode/telemetry/config.py,sha256=HD5ccO_k91WxDsnMo1lmxaF906bK3nrLv8qzUR3HbTo,4212
164
+ sourcecode/telemetry/consent.py,sha256=pQdl-QeLl6Gcibn0eWHSKZrm-HYSsjpVqOnjrgFp8co,2472
164
165
  sourcecode/telemetry/events.py,sha256=4_yeO58U-Cwc1Qb27VB0_EjhmroY0k91n3_VGxeALB8,2776
165
166
  sourcecode/telemetry/filters.py,sha256=RzxauTz8HliO4BllQnXEXc7zTeqdCZi5MgqGEDuW7OQ,6570
166
167
  sourcecode/telemetry/transport.py,sha256=4gGHsq0WeY9VywEZXA3vUxykfiYnw9uuqfjAAec7F8o,1681
167
- sourcecode-3.2.1.dist-info/METADATA,sha256=fbRYK-M6OyhP2q9iWNDm-g0gHclD80KBOE5LWKfYboE,17855
168
- sourcecode-3.2.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
169
- sourcecode-3.2.1.dist-info/entry_points.txt,sha256=-JEAdChrK5We51kZcb7OaDcyil-dHBjBPL-NhuO-QY8,89
170
- sourcecode-3.2.1.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
171
- sourcecode-3.2.1.dist-info/RECORD,,
168
+ sourcecode-3.3.0.dist-info/METADATA,sha256=-QNzeVGjrT6BamRBDHef_8YUe7F6CtJzScZvbswMex0,19406
169
+ sourcecode-3.3.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
170
+ sourcecode-3.3.0.dist-info/entry_points.txt,sha256=-JEAdChrK5We51kZcb7OaDcyil-dHBjBPL-NhuO-QY8,89
171
+ sourcecode-3.3.0.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
172
+ sourcecode-3.3.0.dist-info/RECORD,,