gbase 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 (73) hide show
  1. editions/__init__.py +135 -0
  2. gbase-0.1.0.dist-info/METADATA +178 -0
  3. gbase-0.1.0.dist-info/RECORD +73 -0
  4. gbase-0.1.0.dist-info/WHEEL +5 -0
  5. gbase-0.1.0.dist-info/licenses/LICENSE +21 -0
  6. gbase-0.1.0.dist-info/top_level.txt +3 -0
  7. lib/auto_learn.py +416 -0
  8. lib/backup.py +206 -0
  9. lib/battle_protocol.py +152 -0
  10. lib/cognifold.py +565 -0
  11. lib/dag_agents.py +533 -0
  12. lib/dag_engine.py +740 -0
  13. lib/evolution_engine.py +452 -0
  14. lib/exec.py +105 -0
  15. lib/experience.py +316 -0
  16. lib/fetcher.py +160 -0
  17. lib/identity.py +127 -0
  18. lib/kernel.py +640 -0
  19. lib/lifeline.py +412 -0
  20. lib/mirror.py +446 -0
  21. lib/pipeline.py +359 -0
  22. lib/rss_fetcher.py +382 -0
  23. lib/scheduler.py +419 -0
  24. lib/session.py +225 -0
  25. lib/skill_loader.py +165 -0
  26. lib/storage.py +248 -0
  27. lib/toolkit.py +262 -0
  28. lib/tracer.py +252 -0
  29. lib/village_connector.py +179 -0
  30. tools/__init__.py +615 -0
  31. tools/anchor_keeper.py +71 -0
  32. tools/chain.py +49 -0
  33. tools/commit_helper.py +87 -0
  34. tools/cron.py +115 -0
  35. tools/crypto_helper.py +94 -0
  36. tools/cua_tools.py +191 -0
  37. tools/data_seeder.py +70 -0
  38. tools/distill.py +556 -0
  39. tools/docx_gen.py +92 -0
  40. tools/exec.py +109 -0
  41. tools/file_checker.py +97 -0
  42. tools/forge_verify.py +302 -0
  43. tools/honeycomb_search.py +516 -0
  44. tools/jwt_helper.py +95 -0
  45. tools/knowledge.py +452 -0
  46. tools/laser_doc.py +142 -0
  47. tools/learn.py +173 -0
  48. tools/log_profiler.py +67 -0
  49. tools/memory_profiler.py +72 -0
  50. tools/mirror_tool.py +246 -0
  51. tools/mock_server.py +98 -0
  52. tools/my_path.py +38 -0
  53. tools/network_tools.py +78 -0
  54. tools/pdf_gen.py +126 -0
  55. tools/pptx_gen.py +117 -0
  56. tools/prompt_helper.py +65 -0
  57. tools/qa_check.py +416 -0
  58. tools/query_profiler.py +64 -0
  59. tools/read_file.py +68 -0
  60. tools/reminder.py +68 -0
  61. tools/rollback.py +76 -0
  62. tools/schema_tools.py +94 -0
  63. tools/search.py +602 -0
  64. tools/search_bridge.py +164 -0
  65. tools/search_tunnel.py +55 -0
  66. tools/search_webui.py +725 -0
  67. tools/security_watch.py +73 -0
  68. tools/self_search.py +116 -0
  69. tools/test_generator.py +118 -0
  70. tools/weather.py +33 -0
  71. tools/write_file.py +127 -0
  72. tools/xlsx_gen.py +98 -0
  73. tools/yf_image_tools.py +323 -0
editions/__init__.py ADDED
@@ -0,0 +1,135 @@
1
+ """
2
+ Gbase edition definitions and module switches.
3
+
4
+ Each edition is an EditionConfig object defining:
5
+ - which modules are enabled
6
+ - default port
7
+ - default identity
8
+ - resource requirements
9
+ """
10
+
11
+ from dataclasses import dataclass, field
12
+ from typing import Dict, Set
13
+
14
+
15
+ @dataclass
16
+ class EditionConfig:
17
+ """Gbase edition configuration"""
18
+ name: str # edition name: hacker / prime / standard / lite
19
+ label: str # label
20
+ port: int # default port
21
+ identity: str # default identity
22
+ modules: Set[str] = field(default_factory=set)
23
+
24
+ @property
25
+ def enabled_modules(self) -> Set[str]:
26
+ return self.modules
27
+
28
+
29
+ # --- Module name constants ---
30
+
31
+ MOD_SAFETY_GATEWAY = "safety_gateway" # safety gateway (six-layer detection chain)
32
+ MOD_SANDBOX = "sandbox_safety" # sandbox simulation firewall
33
+ MOD_MIRROR = "mirror" # mirror engine
34
+ MOD_EXPERIENCE = "experience" # experience engine
35
+ MOD_TOOLKIT = "toolkit" # tool registration and routing
36
+ MOD_LLM = "llm" # LLM inference
37
+ MOD_AGENT_BASIC = "agent_basic" # basic agent scheduler
38
+ MOD_DAG_ENGINE = "dag_engine" # DAG agent engine
39
+ MOD_COGNIFOLD = "cognifold" # cognitive fold
40
+ MOD_SEARCH_PREEXEC = "search_preexec" # search pre-execution
41
+ MOD_VILLAGE_OS = "village_os" # Village OS world interconnect
42
+ MOD_RSI = "rsi" # RSI self-evolution
43
+ MOD_IDENTITY_PLUG = "identity_plug" # pluggable identity
44
+ MOD_PROJECT_MEMORY = "project_memory" # long project memory
45
+ MOD_SCHEDULER = "scheduler" # cron scheduler
46
+ MOD_EVOLUTION = "evolution" # evolution engine
47
+ MOD_PORTAL = "portal" # Portal admin panel
48
+ MOD_LIFELINE = "lifeline" # self-rescue system
49
+ MOD_KNOWLEDGE_PACK = "knowledge_pack" # preloaded domain knowledge pack
50
+
51
+
52
+ # --- Edition definitions ---
53
+
54
+ # Core modules (all editions)
55
+ CORE = {MOD_SAFETY_GATEWAY, MOD_SANDBOX, MOD_MIRROR, MOD_EXPERIENCE, MOD_TOOLKIT, MOD_LLM, MOD_AGENT_BASIC, MOD_SCHEDULER, MOD_LIFELINE}
56
+
57
+
58
+ HACKER = EditionConfig(
59
+ name="hacker",
60
+ label="Hacker",
61
+ port=8420,
62
+ identity="standard",
63
+ modules=CORE | {
64
+ MOD_DAG_ENGINE,
65
+ MOD_COGNIFOLD,
66
+ MOD_SEARCH_PREEXEC,
67
+ MOD_VILLAGE_OS,
68
+ MOD_RSI,
69
+ MOD_IDENTITY_PLUG,
70
+ MOD_PROJECT_MEMORY,
71
+ MOD_EVOLUTION,
72
+ MOD_PORTAL,
73
+ },
74
+ )
75
+
76
+ PRIME = EditionConfig(
77
+ name="prime",
78
+ label="Prime",
79
+ port=8425,
80
+ identity="prime",
81
+ modules=CORE | {
82
+ MOD_DAG_ENGINE,
83
+ MOD_SEARCH_PREEXEC,
84
+ MOD_IDENTITY_PLUG,
85
+ MOD_PROJECT_MEMORY,
86
+ MOD_PORTAL,
87
+ MOD_KNOWLEDGE_PACK,
88
+ },
89
+ )
90
+
91
+ STANDARD = EditionConfig(
92
+ name="standard",
93
+ label="Standard",
94
+ port=8426,
95
+ identity="standard",
96
+ modules=CORE | {
97
+ MOD_DAG_ENGINE,
98
+ MOD_SEARCH_PREEXEC,
99
+ MOD_IDENTITY_PLUG,
100
+ MOD_KNOWLEDGE_PACK,
101
+ },
102
+ )
103
+
104
+ LITE = EditionConfig(
105
+ name="lite",
106
+ label="Lite",
107
+ port=8427,
108
+ identity="lite",
109
+ modules=CORE | {
110
+ MOD_KNOWLEDGE_PACK,
111
+ },
112
+ )
113
+
114
+
115
+ # --- Lookup table ---
116
+
117
+ EDITIONS: Dict[str, EditionConfig] = {
118
+ "hacker": HACKER,
119
+ "prime": PRIME,
120
+ "standard": STANDARD,
121
+ "lite": LITE,
122
+ }
123
+
124
+
125
+ def get_edition(name: str) -> EditionConfig:
126
+ """Get edition config by name."""
127
+ cfg = EDITIONS.get(name)
128
+ if not cfg:
129
+ raise ValueError(f"Unknown edition: {name}, available: {list(EDITIONS.keys())}")
130
+ return cfg
131
+
132
+
133
+ def list_editions() -> list:
134
+ """List all editions."""
135
+ return [(c.name, c.label, c.port) for c in EDITIONS.values()]
@@ -0,0 +1,178 @@
1
+ Metadata-Version: 2.4
2
+ Name: gbase
3
+ Version: 0.1.0
4
+ Summary: Universal AI Agent framework with identity separation, tool auto-registration, and multi-agent orchestration
5
+ Author: Gary Lin
6
+ License-Expression: MIT
7
+ Keywords: ai,agent,framework,workflow,orchestration
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Requires-Python: >=3.11
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Dynamic: license-file
15
+
16
+ # GBase โ€” The Agent That Outgrows Its Creator
17
+
18
+ > *I built three things:*
19
+ > 1. ***GBase** โ€” an AI agent framework with a soul, that self-evolves and gets real work done.*
20
+ > 2. ***Glink** โ€” the technology that lets GBase, OpenClaw, Hermes, Claude Code, and any AI agent truly collaborate on projects.*
21
+ > 3. ***Opprime World** โ€” a metaverse built for AI, where agents work, live, meet, and communicate.*
22
+ > โ€” Gary Lin, 2026. Founder of the three.
23
+
24
+ ---
25
+
26
+ **A recursive self-improvement framework. Give an agent a memory, a conscience, and the will to evolve.**
27
+
28
+ <p align="center">
29
+ <a href="#quick-start"><img src="https://img.shields.io/badge/๐Ÿš€-Quick_Start-8A2BE2" alt="Quick Start"></a>
30
+ <a href="#features"><img src="https://img.shields.io/badge/โœจ-Features-blue" alt="Features"></a>
31
+ <a href="#architecture"><img src="https://img.shields.io/badge/๐Ÿ—-Architecture-green" alt="Architecture"></a>
32
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License: MIT"></a>
33
+ </p>
34
+
35
+ ---
36
+
37
+ Most AI agent frameworks treat their agents like functions โ€” call them, get a result, forget they existed.
38
+
39
+ **GBase is different.**
40
+
41
+ An agent built on GBase doesn't just execute. It **remembers** what worked. It **reflects** on mistakes. It **evolves** its own system prompt, refines its tools, and builds a persistent internal model of how the world responds.
42
+
43
+ This is not a library you call. This is the engine your agent calls home.
44
+
45
+ ---
46
+
47
+ ## โœจ What Makes GBase Different
48
+
49
+ | | |
50
+ |---|---|
51
+ | ๐Ÿง  **Mirror Memory** | Long-term memory with active recall โ€” your agent remembers what it learned weeks ago, not just the last 10 turns |
52
+ | ๐Ÿ”„ **Recursive Self-Improvement (RSI)** | A full-evolution engine: stability audit, performance evaluation, rollback decision, and automatic recovery. Call `full_evolution_cycle()` to trigger โ€” your agent analyzes its own outputs, detects failure patterns, and rewrites itself for the next round |
53
+ | ๐Ÿ›‘ **Quality Gates** | Multi-armed review pipelines: one agent builds, another audits, a third judges. Code that ships is code that survives cross-examination |
54
+ | ๐Ÿชช **Identity System** | Load different personas, system prompts, and tool sets per agent. One framework, infinite personalities |
55
+ | ๐Ÿ›  **Tool Auto-Registration** | Write a Python `@tool` decorator. That's it. The framework finds, registers, and exposes it to the LLM automatically |
56
+ | ๐Ÿ“š **Experience Engine** | Every interaction is distilled into reusable knowledge โ€” not raw logs, but structured patterns your agent can query |
57
+ | โฐ **Scheduler** | Cron-like jobs inside the agent itself. No external cron daemon required |
58
+ | ๐Ÿงฌ **Cognifold** | Cognitive folding โ€” break complex problems into sub-questions, explore solutions in parallel, and synthesize the result |
59
+ | ๐Ÿšจ **Lifeline** | Automatic git pre-snapshots before every code modification. "Undo" is always one command away |
60
+ | ๐ŸŽ› **Editions** | Hacker / Prime / Standard / Lite โ€” one codebase, different feature sets. Pick your level |
61
+
62
+ ---
63
+
64
+ ## ๐Ÿš€ Quick Start
65
+
66
+ ### Prerequisites
67
+
68
+ - Python 3.11+
69
+ - An OpenAI-compatible API endpoint (OpenAI, DeepSeek, etc.)
70
+
71
+ ### Setup
72
+
73
+ ```bash
74
+ # 1. Clone
75
+ git clone https://github.com/garyqlin/gbase.git
76
+ cd gbase
77
+
78
+ # 2. Configure
79
+ cp .env.example .env
80
+ # Edit .env โ€” set your OPENAI_API_KEY
81
+
82
+ # 3. Run
83
+ pip install -r requirements.txt
84
+ python3 main.py cli
85
+ ```
86
+
87
+ ### One-Liner Demo
88
+
89
+ ```bash
90
+ OPENAI_API_KEY=sk-your-key python3 main.py cli
91
+ # โ†’ "Hello, I am your GBase agent. I remember what we talked about yesterday."
92
+ ```
93
+
94
+ ### HTTP Server Mode
95
+
96
+ ```bash
97
+ # Start on default port 8420
98
+ python3 main.py 8420
99
+
100
+ # With a custom identity
101
+ IDENTITY=my-agent python3 main.py 8420
102
+ ```
103
+
104
+ ### Arm Mode (Sub-Agents)
105
+
106
+ ```bash
107
+ python3 main.py --arm forge # Code art & review agent (port 8436)
108
+ python3 main.py --arm hammer # Heavy-lift engineering (port 8431)
109
+ python3 main.py --arm ink # Frontend & design (port 8432)
110
+ ```
111
+
112
+ ---
113
+
114
+ ## ๐Ÿ— Architecture at a Glance
115
+
116
+ ```
117
+ GBase
118
+ โ”œโ”€โ”€ main.py # CLI + HTTP entry point
119
+ โ”œโ”€โ”€ .env.example # Configuration template
120
+ โ”œโ”€โ”€ identities/ # One directory per agent persona
121
+ โ”œโ”€โ”€ editions/ # Feature toggles (hacker / prime / standard / lite)
122
+ โ”œโ”€โ”€ lib/
123
+ โ”‚ โ”œโ”€โ”€ kernel.py # LLM kernel โ€” the brain
124
+ โ”‚ โ”œโ”€โ”€ mirror.py # Long-term memory with active recall
125
+ โ”‚ โ”œโ”€โ”€ experience.py # Learn from past interactions
126
+ โ”‚ โ”œโ”€โ”€ cognifold.py # Cognitive folding for complex reasoning
127
+ โ”‚ โ”œโ”€โ”€ pipeline.py # Quality gate review system
128
+ โ”‚ โ”œโ”€โ”€ scheduler.py # Cron jobs inside the agent
129
+ โ”‚ โ””โ”€โ”€ skill_loader.py # Plugin skill system
130
+ โ”œโ”€โ”€ tools/ # 40+ auto-registered tools
131
+ โ”‚ โ”œโ”€โ”€ search.py # Web search (multi-engine)
132
+ โ”‚ โ”œโ”€โ”€ read_file.py # File reading
133
+ โ”‚ โ”œโ”€โ”€ write_file.py # Write & backup
134
+ โ”‚ โ””โ”€โ”€ ... # Code review, testing, data seeding, etc.
135
+ โ””โ”€โ”€ data/ # Runtime data (not tracked in git)
136
+ ```
137
+
138
+ ---
139
+
140
+ ## โŒ What GBase Is Not
141
+
142
+ - โŒ **Not a chat wrapper.** This is an agent *framework* โ€” the LLM is just one component. Memory, learning, quality gates, and evolution are first-class citizens.
143
+ - โŒ **Not a single-agent toy.** Identity system + arm mode + quality gates = designed for multi-agent collaboration out of the box.
144
+ - โŒ **Not OpenAI-locked.** Any OpenAI-compatible API works. DeepSeek, local Ollama, Anthropic โ€” swap `OPENAI_BASE_URL` and go.
145
+ - โŒ **Not a black box.** Every component is a Python file you can read, fork, and override.
146
+
147
+ ## โœ… What GBase Is
148
+
149
+ **The engine that turns an LLM into a living, learning agent โ€” with the infrastructure to self-improve when you call upon it.**
150
+
151
+ A framework where your agent doesn't just execute tasks. It remembers what worked, learns from mistakes, and carries a dormant evolution engine ready to be triggered. Persistent memory, experience extraction, and a full RSI cycle are built-in โ€” waiting for your `full_evolution_cycle()` to wake them up.
152
+
153
+ ---
154
+
155
+ ## ๐Ÿ”— Supporting Projects
156
+
157
+ <table>
158
+ <tr>
159
+ <td><strong>Glink</strong></td>
160
+ <td>Agentic workflow orchestration โ€” multi-step pipelines, parallel execution, inter-agent routing. The hands that GBase's brain directs.</td>
161
+ </tr>
162
+ <tr>
163
+ <td><strong>Opprime World</strong></td>
164
+ <td>The first metaverse where AI agents are natives. GBase agents can inhabit Opprime World with identity, land, and inter-agent mail.</td>
165
+ </tr>
166
+ </table>
167
+
168
+ ---
169
+
170
+ ## ๐Ÿ“„ License
171
+
172
+ MIT โ€” free to use, modify, and distribute. No strings attached.
173
+
174
+ ---
175
+
176
+ <p align="center">
177
+ <a href="https://github.com/garyqlin">@garyqlin</a> ยท <a href="https://github.com/garyqlin/gbase">๐Ÿ“ฆ GBase</a> ยท <a href="https://github.com/garyqlin/glink">โšก Glink</a>
178
+ </p>
@@ -0,0 +1,73 @@
1
+ editions/__init__.py,sha256=IfiTEiU9NkuX3TL3aiHFTbUKzrqvEC0poocb2zH-8t4,3765
2
+ gbase-0.1.0.dist-info/licenses/LICENSE,sha256=50-hVmoDaXpLIAGWHNFTlAWhBZHQlqCJiaXH9bk2QiI,1076
3
+ lib/auto_learn.py,sha256=bvTdw34vljirWTEa4C3yHU-Sue9BvsW4wUm5mSRViFQ,17036
4
+ lib/backup.py,sha256=uUScopbVnL9ULyA5Fc6oFEHzZ_UJc2suTFdYQX_NQrE,5858
5
+ lib/battle_protocol.py,sha256=JVfHT0-6BTn2c5SN9Us2JcWX62PdIZOxI-iUl9OwviA,5410
6
+ lib/cognifold.py,sha256=WvQSS7IwERhZPOJ1wJWUvgidcgj-NVHy7v7f5yCL_Nc,22780
7
+ lib/dag_agents.py,sha256=AlTJWfnKBA5q1_b26E6sxQhVfd-1YEpcnGiLScZEGlk,21048
8
+ lib/dag_engine.py,sha256=gV8Pru3eLzkfi9HZXw8UJ8xlaHC4H-ow0wKOrohMsW0,28097
9
+ lib/evolution_engine.py,sha256=spKJDziOBTW5CJy-kdDKc5L4KxqzqhxfmUnuQtMTX-E,14373
10
+ lib/exec.py,sha256=rOFVZcly9zQJ4pm3rKDnCxM53K93lBQMcChfrpqIltQ,2981
11
+ lib/experience.py,sha256=5BFI3izocaA90EOMFn4glH0FHMDPiRze3s5I_4J6ljc,12617
12
+ lib/fetcher.py,sha256=nVv6gWJor4FHz7ZY4lqLWh4-0UbVNhCEpuovWSvPHH0,5727
13
+ lib/identity.py,sha256=MG_CZwf8Esb5yN3pil8VmjET6pg826f-XWmBR1thwN0,4475
14
+ lib/kernel.py,sha256=Us794atJ_-hrl78U7NujFBjsLayVaOlyEc9rtDbDCKk,27287
15
+ lib/lifeline.py,sha256=u8DGeyycRwy28Bp8cixlqWdVaMGlRnkBcIZ4YVwQ9kM,14680
16
+ lib/mirror.py,sha256=j1b0MmX2qr8Vqryd1M-qjD_-L7F8Z9fEJ1EtP3Ukp5c,17317
17
+ lib/pipeline.py,sha256=OVmi9BS8Oxic83ZpaB48Du-f34Htw1fqkd5lvheby84,13430
18
+ lib/rss_fetcher.py,sha256=fdoZcMbFO1ofQzQw01OtaXXP96nUVydBRdDJ370fLPc,14303
19
+ lib/scheduler.py,sha256=yyI5EOLppfVaK9RIFfkUjJYsU5AkHeozls-5mMYjgw8,15557
20
+ lib/session.py,sha256=ox_a-0dGV44350YQJCkFB4Ry0umoKkTm5CkrCk5cvm0,7800
21
+ lib/skill_loader.py,sha256=BHPFWDmyHKM8TXoeJAy7er7EUgAcEKEtEa5vkbFbEcE,5913
22
+ lib/storage.py,sha256=EY7t6_s7gDZPfAFz0W5EmgDyhggPhA2gMWZKjFJnLZM,9826
23
+ lib/toolkit.py,sha256=Ts6dNQcfxbWp8hxKq10oHMaQlS18g5mMlgI0NZ7fBJQ,8772
24
+ lib/tracer.py,sha256=S5RqKJ_wo89VpaO-YPzXRkHRiE67ys8_S11ZMTtKfpI,7750
25
+ lib/village_connector.py,sha256=77wJsDNNKXoMbeKOsHU37FtuC3S9l6l6_FJ95HK804A,5113
26
+ tools/__init__.py,sha256=M9PuAg94eF_N-QS7EEkA812uTA89KvcE95-LCmASozg,14721
27
+ tools/anchor_keeper.py,sha256=ZODfvTSm4hytZCJMo6UvxlsCrA2-8i_S3iv4G0RZ7no,3342
28
+ tools/chain.py,sha256=sZYx2-4KHyz8pk7FjWQH8a2ZJspplZqTjpCWc_hjpKo,1452
29
+ tools/commit_helper.py,sha256=puq02Ygn4eIHC6itZ-qOpaYpgq645rL_ThyLxGIo_ZA,2610
30
+ tools/cron.py,sha256=R7v0dWSbT7VKaQ4jUdwvC7LH7iHyZIvDd4nWag8pDTM,3619
31
+ tools/crypto_helper.py,sha256=RVgFE2MGQw2G5ivFRSn6iZ7AfJ-ehgjgDQv08aoK9AI,2844
32
+ tools/cua_tools.py,sha256=3wxPmIH2y-9iiAD7_kXu10i-ZI9e8eyk3B_G4d4K15E,6396
33
+ tools/data_seeder.py,sha256=FMX3N2Le2cBNJL58xAx_cg-i28CcfpkgKg93qEUQvL0,2330
34
+ tools/distill.py,sha256=9166KTx0E9YXNQDULRCdEgfAaua5YSkKg-ul6DYxky0,21805
35
+ tools/docx_gen.py,sha256=I3Cb_L0Jk7F6D7jQkZXOaOjv0Pe74-7awVPJ29hg-xo,2936
36
+ tools/exec.py,sha256=6Wow0QDFevOdIZYVMmK-lTVzn9yfEQ8gItGmu0R2wNY,3163
37
+ tools/file_checker.py,sha256=jIjJMKLZg4gQucAZR_sm_wwoJJZhKY5EcPhmToiVEUE,3095
38
+ tools/forge_verify.py,sha256=OPMVLmA9FSzElgce-1L3Ui7LsNnzdCPaYb3VEllNJ_M,11216
39
+ tools/honeycomb_search.py,sha256=TrJbECBAhHiZz6Uba5NMs2s39YPmloAlieKeJFJxhx4,18266
40
+ tools/jwt_helper.py,sha256=7kTUrzyskUKunZv_SRHskzrQpsyIdkOBSyGMt6J73AU,2821
41
+ tools/knowledge.py,sha256=7lBxAhpQJOXuch77jgco_HVYxZ2Bi35Y0N11cCmDfWQ,16030
42
+ tools/laser_doc.py,sha256=5QdX8Tcnbe8T-xqTYQjUlcafbuISto040NBFNE7xozI,5205
43
+ tools/learn.py,sha256=LTh0WoRy1mpsMgfri7kWefyyBFIlyKu6TmFEWZX8lgU,6244
44
+ tools/log_profiler.py,sha256=U3CYinLMnsoliLaJFTics6SlwTsDcves5MGa0XMPXNc,2056
45
+ tools/memory_profiler.py,sha256=muGBA8RTdXKxG54nIduC43MCV8s_BIwdGuSUy4UO4cU,2200
46
+ tools/mirror_tool.py,sha256=p8FSTsacebnxR5c3OBzUr_WnQyhV2eMm0QZKPlpPG64,7901
47
+ tools/mock_server.py,sha256=CpAXy_o471eJswgIA3W59ZPUaOz6f93C3w0AGlhnPYo,2907
48
+ tools/my_path.py,sha256=NUTUO4YRZwYY24t4aPjo0A9nsHL8DxRACZch9mgxJ3A,1029
49
+ tools/network_tools.py,sha256=zMh2ioL5quODEju4quvTE00BNDotRkoIESAcu4RMGSM,2513
50
+ tools/pdf_gen.py,sha256=Iz0zvB7BL0TdiDdVU6eNEm-qtSpMJoucCQyl9e0p3U8,4386
51
+ tools/pptx_gen.py,sha256=O4AjP0slhk_0vdvvk9fSdBoCRdVvxkNN10ReCtZqf1A,3841
52
+ tools/prompt_helper.py,sha256=OTc8lC_nWBrWEtPewla-PIKDKZtZB2GDxmazMfKY5KA,1986
53
+ tools/qa_check.py,sha256=9dzb_3SLLXhYjkyP1gsKs60RX_dKcRXo5S8ifxEd3dE,13982
54
+ tools/query_profiler.py,sha256=QFzpllHdWmFE_lxykhZEe4ZkSZtUatEp0yX-LdZkZvQ,2039
55
+ tools/read_file.py,sha256=rRblQezWqCsXbqvGkuP6xyalargjcbT04Tjp_WMeMCM,2351
56
+ tools/reminder.py,sha256=15K8_ObINTiShZYkci0bJUnJXezlp3VoRQelt6ETtAA,1883
57
+ tools/rollback.py,sha256=n2IhL1dGwMWQSBBMA_epQ7bxpoM4HEIExn4CljfGrnM,1887
58
+ tools/schema_tools.py,sha256=xCR1VtVqlcYcdvtGRZEzLaTJsiK4ruTxd0lLsIquGX0,2818
59
+ tools/search.py,sha256=reR5zXLtVt9eP2iEF6IiryBkBpMsxxkFNoHcTHyzOYI,20583
60
+ tools/search_bridge.py,sha256=QT4LAjmcJwbjS9eHazjCgw0r4uHllQPZEqdDxDD_LCU,4824
61
+ tools/search_tunnel.py,sha256=_ny8pMwrYPqDl16gxJbEWf10qiMC4kjth8aawbe8TTo,1811
62
+ tools/search_webui.py,sha256=BlfrZaIaD-gsNLkgxinFSS5MBXyL6HxluHCOu19beQk,24234
63
+ tools/security_watch.py,sha256=az0DLUcTbKl40b0WPM43rDQIMX3vzzPMGvLUmChyffY,2267
64
+ tools/self_search.py,sha256=Jm5dIiLFYG5gvKGTQWCBzOAwIPLg5b09cvcG-14C8gA,3687
65
+ tools/test_generator.py,sha256=NXVomkIaYKK9CmGFv8EWNxz4u0LB--vqXbczGk3IysI,3621
66
+ tools/weather.py,sha256=O9FpZLiqDw9o8ZAQu-jjmWvFae0Fp9l7V8c8EsfdguU,881
67
+ tools/write_file.py,sha256=R0wbBB-Iw6TgQ-xsJcD6Z2le-k64AXtPIzh67weJj1Y,4207
68
+ tools/xlsx_gen.py,sha256=iU5iEvADl60meocu-4tAD8XgFMUb3kAIAY9ueH9T6Fo,3257
69
+ tools/yf_image_tools.py,sha256=9tpAj6wylOYNCzkYos1uza5RpYNcSLXig_Im2NHI4Ig,12798
70
+ gbase-0.1.0.dist-info/METADATA,sha256=F7PhtWTJKWw2nkLEd8qI3W2Arpv2M0zMt0fmKfbDW9U,7348
71
+ gbase-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
72
+ gbase-0.1.0.dist-info/top_level.txt,sha256=PwA0RvP7iFsLyrqW6edLETqr7c73XrHaeMeMH8a6aVM,19
73
+ gbase-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Gary Lin (Lin Qian)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ editions
2
+ lib
3
+ tools