passiveworkers 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.
- council/__init__.py +1 -0
- council/artifacts.py +161 -0
- council/batch.py +84 -0
- council/cli.py +54 -0
- council/coordinator.py +133 -0
- council/crypto.py +133 -0
- council/fidelity.py +197 -0
- council/judge.py +393 -0
- council/ledger.py +230 -0
- council/library.py +431 -0
- council/local.py +228 -0
- council/mcp_server.py +87 -0
- council/net/__init__.py +1 -0
- council/net/agent.py +231 -0
- council/net/app.py +390 -0
- council/net/baseline.py +86 -0
- council/net/config.py +79 -0
- council/net/coordinator_app.py +370 -0
- council/net/dashboard.py +111 -0
- council/net/store.py +964 -0
- council/net/submit.py +102 -0
- council/operator.py +412 -0
- council/research.py +520 -0
- council/researcher.py +300 -0
- council/retrieval.py +80 -0
- council/run_demo.py +175 -0
- council/sanitize.py +78 -0
- council/serve.py +183 -0
- council/trust.py +168 -0
- council/worker.py +123 -0
- passiveworkers-0.1.0.dist-info/METADATA +269 -0
- passiveworkers-0.1.0.dist-info/RECORD +36 -0
- passiveworkers-0.1.0.dist-info/WHEEL +5 -0
- passiveworkers-0.1.0.dist-info/entry_points.txt +2 -0
- passiveworkers-0.1.0.dist-info/licenses/LICENSE +21 -0
- passiveworkers-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: passiveworkers
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Local-first deep research: your models, your connection, your disk. Multiple local LLMs research the live web as independent analysts; a blind editor compiles a cited report.
|
|
5
|
+
License: MIT License
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2026 Passive Workers contributors
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in all
|
|
17
|
+
copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
25
|
+
SOFTWARE.
|
|
26
|
+
|
|
27
|
+
Project-URL: Homepage, https://github.com/wikithoughts/passiveworkers
|
|
28
|
+
Project-URL: Repository, https://github.com/wikithoughts/passiveworkers
|
|
29
|
+
Keywords: deep-research,ollama,local-first,llm,rag,privacy,mcp
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Classifier: Programming Language :: Python :: 3
|
|
32
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
33
|
+
Classifier: Environment :: Console
|
|
34
|
+
Requires-Python: >=3.10
|
|
35
|
+
Description-Content-Type: text/markdown
|
|
36
|
+
License-File: LICENSE
|
|
37
|
+
Requires-Dist: requests>=2.32
|
|
38
|
+
Requires-Dist: ddgs>=9.0
|
|
39
|
+
Requires-Dist: fastapi>=0.115
|
|
40
|
+
Requires-Dist: uvicorn>=0.30
|
|
41
|
+
Requires-Dist: psutil>=7.0
|
|
42
|
+
Requires-Dist: pydantic>=2.0
|
|
43
|
+
Requires-Dist: numpy>=1.26
|
|
44
|
+
Provides-Extra: extract
|
|
45
|
+
Requires-Dist: trafilatura>=2.0; extra == "extract"
|
|
46
|
+
Provides-Extra: docs
|
|
47
|
+
Requires-Dist: pypdf>=4.0; extra == "docs"
|
|
48
|
+
Requires-Dist: python-docx>=1.1; extra == "docs"
|
|
49
|
+
Provides-Extra: mcp
|
|
50
|
+
Requires-Dist: mcp>=1.0; extra == "mcp"
|
|
51
|
+
Provides-Extra: crypto
|
|
52
|
+
Requires-Dist: pynacl>=1.5; extra == "crypto"
|
|
53
|
+
Provides-Extra: all
|
|
54
|
+
Requires-Dist: trafilatura>=2.0; extra == "all"
|
|
55
|
+
Requires-Dist: pypdf>=4.0; extra == "all"
|
|
56
|
+
Requires-Dist: python-docx>=1.1; extra == "all"
|
|
57
|
+
Requires-Dist: mcp>=1.0; extra == "all"
|
|
58
|
+
Requires-Dist: pynacl>=1.5; extra == "all"
|
|
59
|
+
Dynamic: license-file
|
|
60
|
+
|
|
61
|
+
# Passive Workers — local-first deep research
|
|
62
|
+
|
|
63
|
+
**Your models. Your connection. Your disk.** One command turns any computer with
|
|
64
|
+
[Ollama](https://ollama.com) into a deep-research engine: multiple local models research the
|
|
65
|
+
**live web** as independent analysts, and a blind editor compiles one **cited markdown report**
|
|
66
|
+
into `./reports/`.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pip install '.[all]' # core + extraction + private-docs + MCP (PyPI release planned)
|
|
70
|
+
ollama pull qwen3:14b # any decent models you like — it auto-detects what you have
|
|
71
|
+
pw research "What changed in EU AI Act enforcement this quarter, and who has been fined?"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
🔬 Deep research (standard) — analysts: qwen3:14b, gemma3:12b, llama3.2 · editor: qwen3:14b
|
|
76
|
+
[1/3] qwen3:14b researching the live web…
|
|
77
|
+
12 sources · 390 words · 41s
|
|
78
|
+
[2/3] gemma3:12b researching the live web…
|
|
79
|
+
...
|
|
80
|
+
blind judge + editor compiling the report…
|
|
81
|
+
📄 Report ready in 7.2 min · 1480 words · 31 sources → reports/2026-06-10-eu-ai-act….md
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Prefer a UI? **`pw serve`** → a single-user research desk at `http://127.0.0.1:8770` —
|
|
85
|
+
brief in, live progress, rendered report, history of everything you've researched.
|
|
86
|
+
|
|
87
|
+
### Research your own documents too (private, local RAG)
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pw library add ~/Documents/contracts # index files or folders (PDF, Word, txt, md)
|
|
91
|
+
pw research "What are the renewal terms across my contracts?" --local # docs only
|
|
92
|
+
pw research "How do my notes compare to the latest guidance?" # docs + live web (default)
|
|
93
|
+
```
|
|
94
|
+
Your files are chunked and embedded **locally** (Ollama `nomic-embed-text`) into
|
|
95
|
+
`~/.passiveworkers/library.db` — nothing is uploaded. Reports cite documents as `[L#]` and web
|
|
96
|
+
sources as `[S#]`, kept in separate sections.
|
|
97
|
+
|
|
98
|
+
Retrieval is state-of-the-art but lean: **hybrid** (dense embeddings ⊕ BM25 lexical, fused by
|
|
99
|
+
reciprocal rank fusion) so exact names/codes/numbers aren't missed; **structure-aware chunking**
|
|
100
|
+
that never straddles a section; **parent-window** expansion for grounding; and optional
|
|
101
|
+
**Contextual Retrieval** (`PW_CONTEXTUAL_CHUNKS=1`, Anthropic's technique — a small local model
|
|
102
|
+
situates each chunk before indexing) and **reranking** (`PW_RERANK=1`). Indexing is incremental
|
|
103
|
+
(unchanged files are skipped). Measure it on your own corpus with `python scripts/bench_rag.py` —
|
|
104
|
+
we publish what actually helps, not vendor numbers.
|
|
105
|
+
|
|
106
|
+
### Use it from your own AI (MCP)
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
pw mcp # run as an MCP server (stdio)
|
|
110
|
+
```
|
|
111
|
+
Add to Claude Desktop's `claude_desktop_config.json` so your assistant can call the engine:
|
|
112
|
+
```json
|
|
113
|
+
{ "mcpServers": { "passive-workers": { "command": "pw", "args": ["mcp"] } } }
|
|
114
|
+
```
|
|
115
|
+
Tools exposed: `research`, `library_search`, `library_add`. Your own agentic AI orchestrates;
|
|
116
|
+
our multi-model, live-web + private-library engine is the capability it reaches for.
|
|
117
|
+
|
|
118
|
+
**Recommended setup (avoids public-search rate limits, keeps queries private):**
|
|
119
|
+
```bash
|
|
120
|
+
docker compose up -d searxng # self-hosted meta-search; pw auto-detects it
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Why this exists
|
|
124
|
+
|
|
125
|
+
- **Currency beats memory.** Frontier chatbots answer from training data that is months or
|
|
126
|
+
years old. This engine reads the web *now* and cites what it found. In our own blind trial,
|
|
127
|
+
live-web research was the only thing that beat a frontier model — both times currency mattered.
|
|
128
|
+
For time-sensitive questions it leads with the **freshest-dated** sources (so they survive the
|
|
129
|
+
cap and get read first), pins the **current year into the search query** so the engine returns
|
|
130
|
+
*this year's* results instead of an SEO-dominant old page, and **researches deeper on breaking
|
|
131
|
+
topics** — while leaving stable-fact questions in plain relevance order.
|
|
132
|
+
- **Private by construction.** No account, no server, no telemetry. The only thing that leaves
|
|
133
|
+
your machine is the web searches themselves. Reports are files on your disk.
|
|
134
|
+
- **Plural by design.** Different model families make *different* mistakes. A planner discovers
|
|
135
|
+
distinct angles (STORM-style); each analyst researches its own angle with its own model and
|
|
136
|
+
drafts from **full page extracts**, and a blind editor **preserves disagreement**
|
|
137
|
+
(agree / differ / unique sections — never a forced consensus). Question diversity × model
|
|
138
|
+
diversity catches what any single model hallucinates.
|
|
139
|
+
- **Right source for the query.** Beyond live web, academic-looking queries also hit **arXiv** and
|
|
140
|
+
definitional ones **Wikipedia** (`PW_SOURCE_ROUTING=off` to disable). Models stay warm between
|
|
141
|
+
steps (`PW_OLLAMA_KEEP_ALIVE`, default `30m`; set `0` to unload immediately) so there are no
|
|
142
|
+
reload stalls mid-run.
|
|
143
|
+
- **Free forever.** It's your hardware.
|
|
144
|
+
|
|
145
|
+
## Honesty section (when NOT to use this)
|
|
146
|
+
|
|
147
|
+
A frontier chatbot is better when the answer lives in stable knowledge — math, code,
|
|
148
|
+
explanations, anything where being current doesn't matter. We measured this bluntly: local
|
|
149
|
+
models lose that fight 0/10 (`docs/TRIAL_RESULTS.md`). This tool wins when the answer lives
|
|
150
|
+
**on today's web** — prices, regulations, releases, markets, anything where "as of when?"
|
|
151
|
+
decides usefulness. Optional `--editor api` brings your own OpenRouter key for a frontier
|
|
152
|
+
editor pass over locally-gathered findings — your choice; the default is fully local.
|
|
153
|
+
|
|
154
|
+
## Benchmark (honest, small sample)
|
|
155
|
+
|
|
156
|
+
On a 25-question subset of OpenAI's SimpleQA, the engine scored **64%** (single `qwen2.5:14b`,
|
|
157
|
+
snippet-only search, LLM-graded — `scripts/bench_simpleqa.py`). Context, plainly: SimpleQA rewards
|
|
158
|
+
short factoid recall, which is the *opposite* of what this tool is built for (multi-source reports
|
|
159
|
+
where currency and citation matter); the leaders' ~95% figures use bigger models, deeper agentic
|
|
160
|
+
loops, and more sources. We publish the number — small sample and all — because the honest floor is
|
|
161
|
+
more useful to you than a cherry-picked one. Run it yourself: `python scripts/bench_simpleqa.py --n 100`.
|
|
162
|
+
|
|
163
|
+
### Citation fidelity (the metric that actually matters here)
|
|
164
|
+
|
|
165
|
+
A research tool lives or dies on one question: *when it says X [S3], does source S3 say X?*
|
|
166
|
+
`scripts/eval_citation_fidelity.py` measures exactly that — for every cited claim it checks
|
|
167
|
+
content-overlap with the source it points at and flags numbers stated in a claim that are absent from
|
|
168
|
+
the source. Two keyless (no-API-cost) modes:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
python scripts/eval_citation_fidelity.py --report reports/your-report.md # score an existing report (re-fetches its sources)
|
|
172
|
+
python scripts/eval_citation_fidelity.py --run --depth quick # fresh run, scored against the exact extract each model read
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
It is honest about being a **floor**: lexical grounding catches off-topic citations and fabricated
|
|
176
|
+
numbers — the common, damaging failures — but a GROUNDED verdict means "not obviously fabricated",
|
|
177
|
+
*not* "verified true" (it can't detect subtle misrepresentation). The "grounded rate" is of
|
|
178
|
+
*verifiable* claims; unreachable sources are reported separately, never counted as failures.
|
|
179
|
+
|
|
180
|
+
### Currency gap (where live web beats a frontier model's memory)
|
|
181
|
+
|
|
182
|
+
This tool's real edge isn't raw model size — it's *currency*. `scripts/eval_currency_gap.py` measures
|
|
183
|
+
exactly that: the local council (live web) vs a frontier model answering from its frozen training
|
|
184
|
+
knowledge, scored against curated references, as a matrix by *currency window × category*. A `static`
|
|
185
|
+
control set keeps it fair (where currency is irrelevant, the frontier should win). It **spends nothing
|
|
186
|
+
by default** — a bare run is a `$0` dry run that validates the question set and estimates cost; only
|
|
187
|
+
`--run` (with `OPENROUTER_API_KEY` in your env) makes the paid frontier calls:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
python scripts/eval_currency_gap.py # dry run — validate + estimate, $0
|
|
191
|
+
python scripts/eval_currency_gap.py --run # paid: council (free) vs frontier (your API key)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Security model (designed in, not bolted on)
|
|
195
|
+
|
|
196
|
+
- **No browser automation, no computer use, no sessions, no cookies — ever.** Search API +
|
|
197
|
+
plain fetch of public pages only. The gravest agent attacks (session-token theft,
|
|
198
|
+
authenticated exfiltration) have nothing to grab here.
|
|
199
|
+
- **All web content is untrusted data.** It passes a sanitizer (invisible-Unicode and
|
|
200
|
+
hidden-comment stripping) and enters prompts only inside spotlighting delimiters marked
|
|
201
|
+
"data, never instructions" (`council/sanitize.py`). The same gate covers the **ends** of the
|
|
202
|
+
pipeline too: your brief is scrubbed of hidden/bidi characters and length-bounded before it
|
|
203
|
+
shapes any prompt, and every model-written passage is re-scrubbed before it lands in the
|
|
204
|
+
report (so a payload smuggled through a source can't survive into the artifact) — all without
|
|
205
|
+
touching visible layout or citations.
|
|
206
|
+
- **Models hold zero tool privileges.** They only return text; every action (search, fetch,
|
|
207
|
+
file write) is plain Python under this repo's control. Reports write only into `./reports/`;
|
|
208
|
+
fetches pass an SSRF guard (public hosts only, size-capped).
|
|
209
|
+
|
|
210
|
+
## Hardware guide
|
|
211
|
+
|
|
212
|
+
| Your machine | Models that fit (4-bit) | Experience |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| 8 GB RAM/VRAM | 3–4B (llama3.2, qwen3:4b, gemma3:4b) | quick reports, lighter analysis |
|
|
215
|
+
| 16 GB | 7–14B (qwen3:14b, gemma3:12b) | the sweet spot |
|
|
216
|
+
| 24 GB+ | 14–32B (+ mistral-small:22b) | best local quality |
|
|
217
|
+
|
|
218
|
+
Models run **sequentially** by design — no concurrent loads fighting for memory.
|
|
219
|
+
On CPU-only or busy machines, cap the cast by weight size: `PW_MODEL_CAP_GB=3 pw research …`
|
|
220
|
+
(big models on CPU crawl at 3–6 tok/s — a small model that fits is always faster than a large
|
|
221
|
+
one that spills).
|
|
222
|
+
|
|
223
|
+
Page evidence uses [trafilatura](https://github.com/adbar/trafilatura) for clean main-content
|
|
224
|
+
extraction (with a regex fallback); full credits in [docs/PRIOR_ART.md](docs/PRIOR_ART.md).
|
|
225
|
+
|
|
226
|
+
## Federation (experimental) — the multiplayer mode
|
|
227
|
+
|
|
228
|
+
Everything above runs on one machine. The same repo contains the network layer
|
|
229
|
+
(`council/net/`): connect machines in **different countries** and reports gain genuinely
|
|
230
|
+
different windows on the web — each node researches from its own egress and returns its **own
|
|
231
|
+
cited findings** (never proxied traffic), an editor merges with per-country sections, and a
|
|
232
|
+
non-tradeable mutual-aid credit accounts for who helped whom. It already powers a live
|
|
233
|
+
two-country deployment, plus typed marketplace jobs (deep research, sharded batch work with
|
|
234
|
+
capability matching, and **assisted** human-in-the-loop tasks — `pw tasks` / `pw accept` /
|
|
235
|
+
`pw deliver`: an operator consents to a bounded brief and does it with their own AI or by hand,
|
|
236
|
+
never our autonomous code). The asker **rates** the result (`pw rate`), building operator
|
|
237
|
+
**reputation** that gates higher-trust offers — while newcomers can still take ungated work. Deliverables can be **real files**, moved as content-addressed,
|
|
238
|
+
integrity-verified chunks (`pw deliver <task> @file <job>` → `pw fetch <job> <dir>`) — a
|
|
239
|
+
corrupted or swapped chunk is detected, never written. With the `[crypto]` extra, deliverables are
|
|
240
|
+
**signed** (the asker verifies which operator produced them) and files can be **end-to-end
|
|
241
|
+
encrypted** to the asker (`pw keygen` → the coordinator relays ciphertext it cannot read). For
|
|
242
|
+
authenticity that holds even against a hostile coordinator, the asker **pins** an operator's signing
|
|
243
|
+
key out of band — `pw fingerprint` (operator) → `pw trust add` (asker), or trust-on-first-use — and
|
|
244
|
+
`pw fetch` verifies against the pinned key, refusing a swapped one. Two principles are absolute: **operators always see and consent to the
|
|
245
|
+
work their machine does** (never hidden tasks), and when a job needs a real computer driven, it
|
|
246
|
+
is **handed to the human operator** to do with their own AI under approval — our code never
|
|
247
|
+
automates anyone's machine. The long game is a commons of computers doing real work for each
|
|
248
|
+
other — **no token, no secondary market, money only ever at the edges.** See
|
|
249
|
+
[docs/FEDERATION_V2.md](docs/FEDERATION_V2.md).
|
|
250
|
+
|
|
251
|
+
## Documentation
|
|
252
|
+
|
|
253
|
+
| Doc | What |
|
|
254
|
+
|---|---|
|
|
255
|
+
| [docs/CONTEXT.md](docs/CONTEXT.md) | The why, the history, the layered vision. |
|
|
256
|
+
| [docs/ROADMAP.md](docs/ROADMAP.md) | Milestones + pivots (living tracker). |
|
|
257
|
+
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Roles, local vs networked shape, trust/security. |
|
|
258
|
+
| [docs/DECISIONS.md](docs/DECISIONS.md) | Settled decisions + rationale (ADR-style, D1–D16). |
|
|
259
|
+
| [docs/ECONOMICS.md](docs/ECONOMICS.md) | Credit, give/take, score-weighted payouts, legal posture. |
|
|
260
|
+
| [docs/TRIAL_RESULTS.md](docs/TRIAL_RESULTS.md) | Our blind trial vs a frontier model — losses included. |
|
|
261
|
+
| [docs/GLOSSARY.md](docs/GLOSSARY.md) | Terms (Council, analyst, judge, lens, credit…). |
|
|
262
|
+
| [docs/CONTRIBUTE_COMPUTE.md](docs/CONTRIBUTE_COMPUTE.md) | Plug a machine into the federation — what it does, earns, and why it's safe. |
|
|
263
|
+
| [docs/RELEASING.md](docs/RELEASING.md) | How to publish to PyPI (verified build; needs your token). |
|
|
264
|
+
|
|
265
|
+
## Status
|
|
266
|
+
|
|
267
|
+
Young software, honestly labeled: the single-player engine works and is verified end-to-end;
|
|
268
|
+
the federation layer is experimental. We publish our methodology and our losses, not just wins.
|
|
269
|
+
Issues and PRs welcome. MIT.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
council/__init__.py,sha256=M4GOJGKGxoJQPBaaRQvGbcGmaE-5gsd1yRGw2dg6MnY,79
|
|
2
|
+
council/artifacts.py,sha256=gTPio5drOyUI97SfSgxoM14Cfa-UITJOA0J_DxFUJRI,7078
|
|
3
|
+
council/batch.py,sha256=E8wG_XMhmIHUm93D5WWgYdbXfCFOU3aG3HIMr60Eudc,3691
|
|
4
|
+
council/cli.py,sha256=BzIhfDDE9iwMs2E0HT_eKWdlSfDGzHY9PzeD62l_wDA,2131
|
|
5
|
+
council/coordinator.py,sha256=Yg_UbfTGeIJtH5wSskZ_1lf0eldwzZNMYv_5c4Ya2pI,4711
|
|
6
|
+
council/crypto.py,sha256=sQcYBqnIK9iwIaZ2yKb6JHn1XD8-PrgDx19buSJVF94,5078
|
|
7
|
+
council/fidelity.py,sha256=GttgA4IuYcUOVmUfAVjp_b7TO46l-vmXeNYT3ND4iHg,9874
|
|
8
|
+
council/judge.py,sha256=Wu75gKAnCqiUKj6ml7bf73Hdz3F-2vrhPMWf8503bQ0,20530
|
|
9
|
+
council/ledger.py,sha256=s_UKnuu96gFjd2lD4hDBSxhBe1wZItbwNkWsgvg-MEs,10165
|
|
10
|
+
council/library.py,sha256=dmwkssL7Au4_8zHW7ZPwYWkTZkbsFbEVvOnGF2ucoeM,20377
|
|
11
|
+
council/local.py,sha256=aNuZhYqx9AkIn845EJmck2A-gwmS4IY-y7HZ3PsnVYk,11074
|
|
12
|
+
council/mcp_server.py,sha256=05I4lY3DQuRFI0_suBYUfbC1BaXyApb9gdMd5dr5hRk,3792
|
|
13
|
+
council/operator.py,sha256=B5N1dejw5aND8ER_tlQRmpMAVRR0enYLemF_oL4ePj4,19746
|
|
14
|
+
council/research.py,sha256=3YKy0ZNtZwkLWTFRQZ_L1lGPqII8T4KbIhRl6-dJ4ug,24761
|
|
15
|
+
council/researcher.py,sha256=oj57VQzkzW2oZmehv0igNXgGJwgbAYgym4t_IVXiJQw,17219
|
|
16
|
+
council/retrieval.py,sha256=QzPMdKUKIByH74uPWUgrg_jnK3FCSM-vO34E2RwoGrY,3388
|
|
17
|
+
council/run_demo.py,sha256=B1Ni5ha38596BHHyCw-GAcSStS8ZlBJ7JpIN7zZNaZ0,7887
|
|
18
|
+
council/sanitize.py,sha256=uUanARG4bQvwebRlR7LoHO-cz1VAanD81GM8v9etF8Q,3722
|
|
19
|
+
council/serve.py,sha256=PP6pB7zrKG2VSmJa27RZtCMTGtqKNgeXNGB0nlx3-Dg,7710
|
|
20
|
+
council/trust.py,sha256=FEPjOixpCZ5s8gQ5R2R1iPj52T2bTQRcyiSKzimHomk,7260
|
|
21
|
+
council/worker.py,sha256=aV5vB7dyjT0NvtxR0CI8bvWYqfut8anBwsXGfJ3NLg0,4872
|
|
22
|
+
council/net/__init__.py,sha256=l9f0r4g5F1c8N56TtW12qlTsk80f_KmL2Bl-KZ5MLbQ,69
|
|
23
|
+
council/net/agent.py,sha256=2IpJCJKG1mgvG-1ZSeIu4gZNC0jaq2dJ7moHoITD5qQ,10539
|
|
24
|
+
council/net/app.py,sha256=8y401tKIZC5uDuma8qBwa_6t48KlrawjbQGKcWgfSpk,25141
|
|
25
|
+
council/net/baseline.py,sha256=TBcXCT1j-IDUjDcETiwLp6_qgy4pUpjBUy15PN8JUOA,3499
|
|
26
|
+
council/net/config.py,sha256=4K762328O0UAQrCvc2ynPbtdYmx84vh0FfmwgSGB1c4,4076
|
|
27
|
+
council/net/coordinator_app.py,sha256=rhjhBncYhyw0w3I9ADDb3icPqjsJFy59_tnBugV1_Go,14361
|
|
28
|
+
council/net/dashboard.py,sha256=062u-RconGM7scNW0xZfi7kd6VHLEcVMwdNfTZTZ-Bk,6294
|
|
29
|
+
council/net/store.py,sha256=v7rnrd33IrfmWZdQQGDy-gyEAWJERTDQQFo3qGHtB9c,54036
|
|
30
|
+
council/net/submit.py,sha256=7KbR9sHb56vKgU54AtdFdUQ0Zghqerj-KlX6kHszqmI,3541
|
|
31
|
+
passiveworkers-0.1.0.dist-info/licenses/LICENSE,sha256=gbFD35hqMFePOH_0UofcAQsrDTGaGbzc4mcC_GAgLIU,1085
|
|
32
|
+
passiveworkers-0.1.0.dist-info/METADATA,sha256=ennHO287NB57kKznb00jgwY4iV4HuTnf8UbU8ZUAB54,15826
|
|
33
|
+
passiveworkers-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
34
|
+
passiveworkers-0.1.0.dist-info/entry_points.txt,sha256=bq30gR0pXfDo80UCQw5sGB8nQXpCMCpAh_8XL11AfBo,40
|
|
35
|
+
passiveworkers-0.1.0.dist-info/top_level.txt,sha256=0sVlJPir1ik8gJW_pSBusk186XhQdCB3SMf1yp8En5w,8
|
|
36
|
+
passiveworkers-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Passive Workers contributors
|
|
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 @@
|
|
|
1
|
+
council
|