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.
- editions/__init__.py +135 -0
- gbase-0.1.0.dist-info/METADATA +178 -0
- gbase-0.1.0.dist-info/RECORD +73 -0
- gbase-0.1.0.dist-info/WHEEL +5 -0
- gbase-0.1.0.dist-info/licenses/LICENSE +21 -0
- gbase-0.1.0.dist-info/top_level.txt +3 -0
- lib/auto_learn.py +416 -0
- lib/backup.py +206 -0
- lib/battle_protocol.py +152 -0
- lib/cognifold.py +565 -0
- lib/dag_agents.py +533 -0
- lib/dag_engine.py +740 -0
- lib/evolution_engine.py +452 -0
- lib/exec.py +105 -0
- lib/experience.py +316 -0
- lib/fetcher.py +160 -0
- lib/identity.py +127 -0
- lib/kernel.py +640 -0
- lib/lifeline.py +412 -0
- lib/mirror.py +446 -0
- lib/pipeline.py +359 -0
- lib/rss_fetcher.py +382 -0
- lib/scheduler.py +419 -0
- lib/session.py +225 -0
- lib/skill_loader.py +165 -0
- lib/storage.py +248 -0
- lib/toolkit.py +262 -0
- lib/tracer.py +252 -0
- lib/village_connector.py +179 -0
- tools/__init__.py +615 -0
- tools/anchor_keeper.py +71 -0
- tools/chain.py +49 -0
- tools/commit_helper.py +87 -0
- tools/cron.py +115 -0
- tools/crypto_helper.py +94 -0
- tools/cua_tools.py +191 -0
- tools/data_seeder.py +70 -0
- tools/distill.py +556 -0
- tools/docx_gen.py +92 -0
- tools/exec.py +109 -0
- tools/file_checker.py +97 -0
- tools/forge_verify.py +302 -0
- tools/honeycomb_search.py +516 -0
- tools/jwt_helper.py +95 -0
- tools/knowledge.py +452 -0
- tools/laser_doc.py +142 -0
- tools/learn.py +173 -0
- tools/log_profiler.py +67 -0
- tools/memory_profiler.py +72 -0
- tools/mirror_tool.py +246 -0
- tools/mock_server.py +98 -0
- tools/my_path.py +38 -0
- tools/network_tools.py +78 -0
- tools/pdf_gen.py +126 -0
- tools/pptx_gen.py +117 -0
- tools/prompt_helper.py +65 -0
- tools/qa_check.py +416 -0
- tools/query_profiler.py +64 -0
- tools/read_file.py +68 -0
- tools/reminder.py +68 -0
- tools/rollback.py +76 -0
- tools/schema_tools.py +94 -0
- tools/search.py +602 -0
- tools/search_bridge.py +164 -0
- tools/search_tunnel.py +55 -0
- tools/search_webui.py +725 -0
- tools/security_watch.py +73 -0
- tools/self_search.py +116 -0
- tools/test_generator.py +118 -0
- tools/weather.py +33 -0
- tools/write_file.py +127 -0
- tools/xlsx_gen.py +98 -0
- 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,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.
|