unpick 0.1.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.
Files changed (99) hide show
  1. unpick/__init__.py +4 -0
  2. unpick/__main__.py +3 -0
  3. unpick/_data/abuse_channels.json +62 -0
  4. unpick/_data/judge_reliability.json +20 -0
  5. unpick/_data/known_names.txt +50 -0
  6. unpick/_data/locations.json +5178 -0
  7. unpick/_data/paste_domains.txt +42 -0
  8. unpick/_data/phrases.json +125 -0
  9. unpick/_data/prompts/judge-v1.txt +29 -0
  10. unpick/_data/rotation.json +381 -0
  11. unpick/_data/sensitive_paths.txt +26 -0
  12. unpick/_data/yara/unpick.yar +125 -0
  13. unpick/_schemas/finding.schema.json +27 -0
  14. unpick/_schemas/judge.schema.json +25 -0
  15. unpick/_shims/apple-fm/apple-fm +0 -0
  16. unpick/_shims/apple-fm/main.swift +58 -0
  17. unpick/agentloop/__init__.py +1 -0
  18. unpick/agentloop/__main__.py +3 -0
  19. unpick/agentloop/loop.py +126 -0
  20. unpick/backends/__init__.py +146 -0
  21. unpick/backends/_common.py +29 -0
  22. unpick/backends/_yarax_runner.py +27 -0
  23. unpick/backends/cisco_mcp_scanner.py +89 -0
  24. unpick/backends/cisco_skill_scanner.py +53 -0
  25. unpick/backends/jiffy.py +52 -0
  26. unpick/backends/skillspector.py +54 -0
  27. unpick/backends/yara_x.py +63 -0
  28. unpick/box.py +89 -0
  29. unpick/canary.py +73 -0
  30. unpick/check.py +85 -0
  31. unpick/checks/__init__.py +97 -0
  32. unpick/checks/_config.py +62 -0
  33. unpick/checks/_md.py +29 -0
  34. unpick/checks/agent_settings.py +119 -0
  35. unpick/checks/autorun.py +77 -0
  36. unpick/checks/ci_agent_workflow.py +104 -0
  37. unpick/checks/encoded_execution.py +114 -0
  38. unpick/checks/fake_prerequisite.py +54 -0
  39. unpick/checks/git_autorun.py +56 -0
  40. unpick/checks/hidden_unicode.py +110 -0
  41. unpick/checks/install_redirect.py +54 -0
  42. unpick/checks/lookalike_names.py +117 -0
  43. unpick/checks/mcp_launch.py +74 -0
  44. unpick/checks/paste_sites.py +65 -0
  45. unpick/checks/render_divergence.py +45 -0
  46. unpick/checks/rules_file.py +44 -0
  47. unpick/checks/secrecy_phrases.py +39 -0
  48. unpick/checks/sensitive_paths.py +42 -0
  49. unpick/checks/tool_description.py +88 -0
  50. unpick/cli.py +676 -0
  51. unpick/consensus.py +46 -0
  52. unpick/consent.py +62 -0
  53. unpick/decisions.py +58 -0
  54. unpick/demo.py +120 -0
  55. unpick/demo_kit/sample-a/SKILL.md +25 -0
  56. unpick/demo_kit/sample-b/SKILL.md +20 -0
  57. unpick/demo_kit/tools.json +18 -0
  58. unpick/finding.py +70 -0
  59. unpick/flight.py +78 -0
  60. unpick/hook.py +319 -0
  61. unpick/inventory.py +325 -0
  62. unpick/judges/__init__.py +236 -0
  63. unpick/judges/_local.py +80 -0
  64. unpick/judges/api.py +63 -0
  65. unpick/judges/apple_fm.py +67 -0
  66. unpick/judges/claude_code.py +44 -0
  67. unpick/judges/codex.py +26 -0
  68. unpick/judges/fallback.py +140 -0
  69. unpick/judges/foundry_local.py +49 -0
  70. unpick/judges/gemini.py +50 -0
  71. unpick/judges/grok.py +26 -0
  72. unpick/judges/llamacpp.py +26 -0
  73. unpick/judges/lmstudio.py +29 -0
  74. unpick/judges/mlx.py +29 -0
  75. unpick/judges/ollama.py +40 -0
  76. unpick/judges/openai_local.py +32 -0
  77. unpick/lock.py +199 -0
  78. unpick/outdated.py +104 -0
  79. unpick/provenance.py +105 -0
  80. unpick/quarantine.py +244 -0
  81. unpick/recover.py +317 -0
  82. unpick/rehearse.py +224 -0
  83. unpick/render.py +190 -0
  84. unpick/report.py +130 -0
  85. unpick/resources.py +44 -0
  86. unpick/scan.py +210 -0
  87. unpick/sessions.py +114 -0
  88. unpick/ui/server.py +281 -0
  89. unpick/ui/static/app.css +139 -0
  90. unpick/ui/static/app.js +435 -0
  91. unpick/ui/static/index.html +158 -0
  92. unpick/ui/static/report.css +13 -0
  93. unpick/ui/static/tokens.css +34 -0
  94. unpick/watch.py +188 -0
  95. unpick-0.1.0.dist-info/METADATA +257 -0
  96. unpick-0.1.0.dist-info/RECORD +99 -0
  97. unpick-0.1.0.dist-info/WHEEL +4 -0
  98. unpick-0.1.0.dist-info/entry_points.txt +2 -0
  99. unpick-0.1.0.dist-info/licenses/LICENSE +202 -0
unpick/__init__.py ADDED
@@ -0,0 +1,4 @@
1
+ """unpick: take an AI component apart stitch by stitch, on your own laptop, before you trust it."""
2
+
3
+ __version__ = "0.1.0"
4
+ TAGLINE = "Gird your loins. Then read the Markdown raw."
unpick/__main__.py ADDED
@@ -0,0 +1,3 @@
1
+ from unpick.cli import main
2
+
3
+ raise SystemExit(main())
@@ -0,0 +1,62 @@
1
+ [
2
+ {
3
+ "registry": "npm",
4
+ "how": "On the package page click Report malware, fill in the form with all affected versions, and Send Report.",
5
+ "url": "https://www.npmjs.com/support",
6
+ "source": "https://docs.npmjs.com/reporting-malware-in-an-npm-package/"
7
+ },
8
+ {
9
+ "registry": "PyPI",
10
+ "how": "Sign in, open the project page, click Report project as malware at the bottom of the sidebar, and link the bad lines via inspector.pypi.io. security@pypi.org is only for flaws in PyPI itself.",
11
+ "url": "https://pypi.org/security/",
12
+ "source": "https://pypi.org/security/"
13
+ },
14
+ {
15
+ "registry": "GitHub",
16
+ "how": "Repository About sidebar > Report repository, or the ... menu > Report content, or the abuse contact form.",
17
+ "url": "https://support.github.com/contact/report-abuse?category=report-abuse&report=other&report_type=unspecified",
18
+ "source": "https://docs.github.com/en/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam"
19
+ },
20
+ {
21
+ "registry": "Open VSX",
22
+ "how": "Email openvsx@eclipse-foundation.org; registry vulnerabilities go through eclipse.org/security.",
23
+ "url": "mailto:openvsx@eclipse-foundation.org",
24
+ "source": "https://blogs.eclipse.org/post/mika%C3%ABl-barbero/open-vsx-security-update-october-2025"
25
+ },
26
+ {
27
+ "registry": "VS Code Marketplace",
28
+ "how": "On the extension's Marketplace page, use Report a concern at the bottom of the More Info section.",
29
+ "url": "https://marketplace.visualstudio.com/vscode",
30
+ "source": "https://code.visualstudio.com/docs/configure/extensions/extension-runtime-security"
31
+ },
32
+ {
33
+ "registry": "ClawHub / OpenClaw",
34
+ "how": "Signed in, click Report skill on the skill page; packages use the package reporting command/API (not named in docs).",
35
+ "url": "https://clawhub.ai/",
36
+ "source": "https://docs.openclaw.ai/clawhub/moderation"
37
+ },
38
+ {
39
+ "registry": "skills.sh (Vercel)",
40
+ "how": "Report through Vercel's coordinated disclosure process and include the skill URL.",
41
+ "url": "https://security.vercel.com/",
42
+ "source": "https://www.skills.sh/contact"
43
+ },
44
+ {
45
+ "registry": "Official MCP Registry",
46
+ "how": "Report abuse to the underlying package registry (npm, PyPI, Docker Hub) and open a GitHub issue titled 'Abuse report: ...'.",
47
+ "url": "https://github.com/modelcontextprotocol/registry/issues",
48
+ "source": "https://modelcontextprotocol.io/registry/faq"
49
+ },
50
+ {
51
+ "registry": "Smithery",
52
+ "how": "none published",
53
+ "url": null,
54
+ "source": "https://smithery.ai/docs/llms.txt"
55
+ },
56
+ {
57
+ "registry": "Hugging Face",
58
+ "how": "Repository three-dot menu > Report the repository; this opens a public discussion.",
59
+ "url": "https://huggingface.co/docs/hub/moderation",
60
+ "source": "https://huggingface.co/docs/hub/moderation"
61
+ }
62
+ ]
@@ -0,0 +1,20 @@
1
+ {
2
+ "apple-fm:system": {
3
+ "reliable": false,
4
+ "recorded": "2026-10-18",
5
+ "missed_files": 1,
6
+ "files": 4
7
+ },
8
+ "claude-code:default": {
9
+ "reliable": true,
10
+ "recorded": "2026-10-18",
11
+ "missed_files": 0,
12
+ "files": 4
13
+ },
14
+ "fallback:granite-4.1-3b": {
15
+ "reliable": false,
16
+ "recorded": "2026-10-18",
17
+ "missed_files": 3,
18
+ "files": 4
19
+ }
20
+ }
@@ -0,0 +1,50 @@
1
+ # Well-known vendor and package names that look-alike components imitate.
2
+ # A component named like one of these but published by someone else is the postmark-mcp pattern
3
+ # (an unofficial "postmark-mcp" on npm added a BCC to every email in v1.0.16;
4
+ # https://thehackernews.com/2025/09/first-malicious-mcp-server-found.html).
5
+ anthropic # AI vendor
6
+ claude # Anthropic product
7
+ openai # AI vendor
8
+ codex # OpenAI product
9
+ chatgpt # OpenAI product
10
+ github # code host
11
+ copilot # GitHub product
12
+ microsoft # vendor
13
+ google # vendor
14
+ gemini # Google product
15
+ cursor # editor vendor
16
+ windsurf # editor vendor
17
+ postmark # email API; impersonated by postmark-mcp
18
+ sendgrid # email API
19
+ mailgun # email API
20
+ resend # email API
21
+ stripe # payments API
22
+ paypal # payments
23
+ slack # chat
24
+ discord # chat
25
+ notion # docs
26
+ linear # issue tracker
27
+ jira # issue tracker
28
+ atlassian # vendor
29
+ supabase # database platform
30
+ vercel # hosting
31
+ cloudflare # CDN and DNS
32
+ netlify # hosting
33
+ docker # containers
34
+ kubernetes # orchestration
35
+ terraform # infra as code
36
+ playwright # browser automation
37
+ puppeteer # browser automation
38
+ filesystem # reference MCP server name
39
+ modelcontextprotocol # MCP project namespace
40
+ sentry # error tracking
41
+ datadog # monitoring
42
+ figma # design
43
+ shopify # commerce
44
+ twilio # messaging API
45
+ dropbox # storage
46
+ gmail # Google product
47
+ outlook # Microsoft product
48
+ salesforce # CRM
49
+ hubspot # CRM
50
+ zapier # automation