token-steward 0.1.0

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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +122 -0
  3. package/config/registry.yaml +413 -0
  4. package/dist/audit_log.d.ts +5 -0
  5. package/dist/audit_log.d.ts.map +1 -0
  6. package/dist/audit_log.js +28 -0
  7. package/dist/audit_log.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +1029 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/export_data.d.ts +45 -0
  13. package/dist/export_data.d.ts.map +1 -0
  14. package/dist/export_data.js +149 -0
  15. package/dist/export_data.js.map +1 -0
  16. package/dist/guardrails.d.ts +21 -0
  17. package/dist/guardrails.d.ts.map +1 -0
  18. package/dist/guardrails.js +87 -0
  19. package/dist/guardrails.js.map +1 -0
  20. package/dist/issue_discovery.d.ts +7 -0
  21. package/dist/issue_discovery.d.ts.map +1 -0
  22. package/dist/issue_discovery.js +180 -0
  23. package/dist/issue_discovery.js.map +1 -0
  24. package/dist/models.d.ts +333 -0
  25. package/dist/models.d.ts.map +1 -0
  26. package/dist/models.js +41 -0
  27. package/dist/models.js.map +1 -0
  28. package/dist/policy_store.d.ts +9 -0
  29. package/dist/policy_store.d.ts.map +1 -0
  30. package/dist/policy_store.js +52 -0
  31. package/dist/policy_store.js.map +1 -0
  32. package/dist/registry_sync.d.ts +15 -0
  33. package/dist/registry_sync.d.ts.map +1 -0
  34. package/dist/registry_sync.js +67 -0
  35. package/dist/registry_sync.js.map +1 -0
  36. package/dist/run_orchestrator.d.ts +51 -0
  37. package/dist/run_orchestrator.d.ts.map +1 -0
  38. package/dist/run_orchestrator.js +435 -0
  39. package/dist/run_orchestrator.js.map +1 -0
  40. package/dist/scheduler.d.ts +14 -0
  41. package/dist/scheduler.d.ts.map +1 -0
  42. package/dist/scheduler.js +196 -0
  43. package/dist/scheduler.js.map +1 -0
  44. package/dist/scoring_engine.d.ts +7 -0
  45. package/dist/scoring_engine.d.ts.map +1 -0
  46. package/dist/scoring_engine.js +173 -0
  47. package/dist/scoring_engine.js.map +1 -0
  48. package/dist/store.d.ts +28 -0
  49. package/dist/store.d.ts.map +1 -0
  50. package/dist/store.js +196 -0
  51. package/dist/store.js.map +1 -0
  52. package/dist/usage_adapter.d.ts +19 -0
  53. package/dist/usage_adapter.d.ts.map +1 -0
  54. package/dist/usage_adapter.js +251 -0
  55. package/dist/usage_adapter.js.map +1 -0
  56. package/package.json +54 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Robert Keenan
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.
package/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # Token Steward
2
+
3
+ Turn your unused Claude Code tokens into open-source contributions.
4
+
5
+ Most Claude Max subscribers don't use their full weekly token allowance. Token Steward helps you put that surplus to work by finding real issues on important open-source projects and helping you resolve them with Claude Code.
6
+
7
+ ## How it works
8
+
9
+ ```
10
+ steward discover # Find impactful issues worth your time
11
+ steward work cli/cli#9432 # Jump into a guided Claude Code session
12
+ steward submit # Review your changes and open a draft PR
13
+ ```
14
+
15
+ **Discover.** Find interesting, important open-source projects that actually need help. Token Steward uses the GitHub API and your curated registry to find open issues, then scores them by impact and feasibility. You see the ones where your contribution will matter most. Pick one and go.
16
+
17
+ **Propose.** For larger issues, Claude analyzes the codebase and posts a proposal comment on the issue before writing any code. The maintainer can approve, suggest changes, or decline — so you don't burn tokens on an approach they'd reject. This happens automatically for issues estimated above 30k tokens (configurable via `propose_first` in your policy).
18
+
19
+ **Work.** Solve real issues alongside Claude Code. Token Steward sets up everything (forks the repo, creates a branch, pulls in the issue details) then drops you into a Claude Code session with full context already loaded. Just ask Claude to get started. It already knows the issue, the codebase, and what needs to happen.
20
+
21
+ **Submit.** You're the human in the loop. Review the changes, run the tests, and when you're satisfied, submit quality code to a project that needs it. Token Steward pushes your branch and opens a draft PR. Safe to run multiple times.
22
+
23
+ ## Setup
24
+
25
+ ```bash
26
+ git clone <repo-url> token-steward && cd token-steward
27
+ nvm install 22 && nvm use 22
28
+ npm install && npm run setup
29
+ ```
30
+
31
+ `steward init` checks your environment, walks you through policy config, builds the project, and links the CLI globally. After that, `steward discover` is all you need.
32
+
33
+ Already set up? Run `steward init --check` to verify prerequisites without changing anything.
34
+
35
+ ## Configuration
36
+
37
+ **`config/policy.yaml`** controls how and when you contribute:
38
+
39
+ ```yaml
40
+ weekly_target_tokens: 500000
41
+ weekly_min_reserve_tokens: 25000
42
+
43
+ schedule:
44
+ - day: FRI
45
+ start: "18:00"
46
+ end: "23:59"
47
+ - day: SAT
48
+ start: "09:00"
49
+ end: "23:59"
50
+
51
+ filters:
52
+ categories_allow: [developer-tools, documentation, security, ai-ml]
53
+ min_confidence: 0.40
54
+
55
+ limits:
56
+ max_concurrency: 2
57
+ max_tokens_per_run: 60000
58
+ max_runs_per_day: 6
59
+
60
+ # auto = propose first for issues >30k tokens
61
+ # always = always propose before coding
62
+ # never = skip straight to implementation
63
+ propose_first: auto
64
+ ```
65
+
66
+ **`config/registry.yaml`** is your list of projects you want to contribute to. Each entry specifies which issue labels to look for:
67
+
68
+ ```yaml
69
+ repositories:
70
+ - slug: cli/cli
71
+ name: GitHub CLI
72
+ category: developer-tools
73
+ tags: [cli, go, github]
74
+ issue_labels: [good first issue, help wanted]
75
+ ```
76
+
77
+ ## How issues are scored
78
+
79
+ Token Steward ranks issues so you spend time on the ones that matter. Each issue is scored across four dimensions:
80
+
81
+ | Dimension | Weight | What it looks at |
82
+ |-------------|--------|------------------|
83
+ | Reach | 20% | Reactions, comments, repo stars |
84
+ | Impact | 25% | Bug vs feature, maintainer engagement, category |
85
+ | Confidence | 30% | LLM receptivity, approachability labels, CI, CONTRIBUTING.md |
86
+ | Effort | 25% | Issue age, complexity labels, token budget fit |
87
+
88
+ ## Other commands
89
+
90
+ ```bash
91
+ steward init # Setup wizard (prereqs, config, build)
92
+ steward init --check # Verify prerequisites only
93
+ steward status # Show current state
94
+ steward usage # Check token budget
95
+ steward runs # List recent contributions
96
+ steward stats # Show contribution statistics
97
+ steward cancel <id> # Cancel a run
98
+ steward clean # Remove workspace clones to free disk space
99
+ steward export # Export registry and scored issues as JSON
100
+ steward pause # Pause autopilot
101
+ steward resume # Resume autopilot
102
+ ```
103
+
104
+ ## Roadmap
105
+
106
+ - **Public leaderboard.** Track contributions across Token Steward users. Issues resolved, PRs merged, tokens donated. See who's making the biggest impact.
107
+ - **Shared registry.** A registry service that maintainers can submit their projects to directly, so contributors always have fresh work to pick from.
108
+ - **PR outcome tracking.** Follow up on submitted PRs to measure merge rates and contribution quality over time.
109
+ - **Multi-provider support.** Extend beyond Claude Code to other AI tools with token or credit systems.
110
+ - **Team mode.** Coordinate across multiple contributors to avoid duplicate work on the same issues.
111
+
112
+ ## Development
113
+
114
+ ```bash
115
+ npm run dev # Run via tsx (no build step)
116
+ npm test # Run all tests (vitest)
117
+ npm run build # Compile TypeScript
118
+ ```
119
+
120
+ ## License
121
+
122
+ MIT
@@ -0,0 +1,413 @@
1
+ # Token Steward Local Registry
2
+ # Curated repos where contributions are welcome.
3
+ # Each entry specifies which issue labels to scan for eligible work.
4
+
5
+ repositories:
6
+ # --- Documentation & Education ---
7
+ - slug: TheOdinProject/curriculum
8
+ name: The Odin Project Curriculum
9
+ description: Open-source web development curriculum.
10
+ category: documentation
11
+ tags: [education, web, curriculum]
12
+ issue_labels: [good first issue, help wanted]
13
+
14
+ - slug: mdn/content
15
+ name: MDN Web Docs
16
+ description: Source for MDN Web Docs content.
17
+ category: documentation
18
+ tags: [documentation, web, mdn]
19
+ issue_labels: [good first issue, help wanted, content]
20
+
21
+ - slug: tldr-pages/tldr
22
+ name: tldr-pages
23
+ description: Collaborative cheatsheets for console commands.
24
+ category: documentation
25
+ tags: [documentation, cli, reference]
26
+ issue_labels: [good first issue, help wanted]
27
+
28
+ # --- Developer Tools (TypeScript / JavaScript) ---
29
+ - slug: biomejs/biome
30
+ name: Biome
31
+ description: Fast formatter and linter for JS/TS/JSON/CSS.
32
+ category: developer-tools
33
+ tags: [rust, linter, formatter, javascript]
34
+ issue_labels: [good first issue, help wanted, easy]
35
+
36
+ - slug: hoppscotch/hoppscotch
37
+ name: Hoppscotch
38
+ description: Open-source API development ecosystem.
39
+ category: developer-tools
40
+ tags: [typescript, api, vue]
41
+ issue_labels: [good first issue, help wanted]
42
+
43
+ - slug: colinhacks/zod
44
+ name: Zod
45
+ description: TypeScript-first schema validation.
46
+ category: developer-tools
47
+ tags: [typescript, validation, schema]
48
+ issue_labels: [good first issue, help wanted, bug]
49
+
50
+ - slug: drizzle-team/drizzle-orm
51
+ name: Drizzle ORM
52
+ description: TypeScript ORM for SQL databases.
53
+ category: developer-tools
54
+ tags: [typescript, orm, database]
55
+ issue_labels: [good first issue, help wanted, bug]
56
+
57
+ # --- Developer Tools (Python) ---
58
+ - slug: astral-sh/ruff
59
+ name: Ruff
60
+ description: Extremely fast Python linter and formatter.
61
+ category: developer-tools
62
+ tags: [python, rust, linter]
63
+ issue_labels: [good first issue, help wanted]
64
+
65
+ - slug: pydantic/pydantic
66
+ name: Pydantic
67
+ description: Data validation using Python type annotations.
68
+ category: developer-tools
69
+ tags: [python, validation, typing]
70
+ issue_labels: [good first issue, help wanted, bug]
71
+
72
+ - slug: tiangolo/fastapi
73
+ name: FastAPI
74
+ description: Modern, fast web framework for building APIs with Python.
75
+ category: developer-tools
76
+ tags: [python, api, web]
77
+ issue_labels: [good first issue, help wanted]
78
+
79
+ - slug: encode/httpx
80
+ name: HTTPX
81
+ description: Fully featured HTTP client for Python 3.
82
+ category: developer-tools
83
+ tags: [python, http, async]
84
+ issue_labels: [good first issue, help wanted]
85
+
86
+ # --- Developer Tools (Go) ---
87
+ - slug: cli/cli
88
+ name: GitHub CLI
89
+ description: GitHub's official command line tool.
90
+ category: developer-tools
91
+ tags: [cli, go, github]
92
+ issue_labels: [good first issue, help wanted]
93
+
94
+ - slug: charmbracelet/bubbletea
95
+ name: Bubble Tea
96
+ description: TUI framework for Go.
97
+ category: developer-tools
98
+ tags: [go, tui, cli]
99
+ issue_labels: [good first issue, help wanted]
100
+
101
+ - slug: junegunn/fzf
102
+ name: fzf
103
+ description: Command-line fuzzy finder.
104
+ category: developer-tools
105
+ tags: [go, cli, search]
106
+ issue_labels: [good first issue, help wanted, bug]
107
+
108
+ # --- Developer Tools (Rust) ---
109
+ - slug: nushell/nushell
110
+ name: Nushell
111
+ description: A new type of shell with structured data.
112
+ category: developer-tools
113
+ tags: [shell, rust, cli]
114
+ issue_labels: [good-first-issue, help-wanted, easy]
115
+
116
+ - slug: BurntSushi/ripgrep
117
+ name: ripgrep
118
+ description: Recursively search directories for a regex pattern.
119
+ category: developer-tools
120
+ tags: [rust, cli, search]
121
+ issue_labels: [good first issue, help wanted, bug]
122
+
123
+ - slug: sharkdp/bat
124
+ name: bat
125
+ description: A cat clone with syntax highlighting and Git integration.
126
+ category: developer-tools
127
+ tags: [rust, cli, terminal]
128
+ issue_labels: [good first issue, help wanted]
129
+
130
+ - slug: sharkdp/fd
131
+ name: fd
132
+ description: A simple, fast alternative to find.
133
+ category: developer-tools
134
+ tags: [rust, cli, search]
135
+ issue_labels: [good first issue, help wanted]
136
+
137
+ # --- AI / ML ---
138
+ - slug: langgenius/dify
139
+ name: Dify
140
+ description: Open-source LLM app development platform.
141
+ category: ai-ml
142
+ tags: [llm, python, platform]
143
+ issue_labels: [good first issue, help wanted]
144
+
145
+ - slug: vllm-project/vllm
146
+ name: vLLM
147
+ description: High-throughput LLM serving engine.
148
+ category: ai-ml
149
+ tags: [llm, python, serving, gpu]
150
+ issue_labels: [good first issue, help wanted, bug]
151
+
152
+ - slug: langchain-ai/langchain
153
+ name: LangChain
154
+ description: Framework for building applications with LLMs.
155
+ category: ai-ml
156
+ tags: [llm, python, agents, rag]
157
+ issue_labels: [good first issue, help wanted]
158
+
159
+ - slug: run-llama/llama_index
160
+ name: LlamaIndex
161
+ description: Data framework for LLM applications.
162
+ category: ai-ml
163
+ tags: [llm, python, rag, indexing]
164
+ issue_labels: [good first issue, help wanted, bug]
165
+
166
+ - slug: ollama/ollama
167
+ name: Ollama
168
+ description: Run LLMs locally with a simple CLI.
169
+ category: ai-ml
170
+ tags: [llm, go, local, cli]
171
+ issue_labels: [good first issue, help wanted, bug]
172
+
173
+ - slug: open-webui/open-webui
174
+ name: Open WebUI
175
+ description: Feature-rich chat interface for LLMs.
176
+ category: ai-ml
177
+ tags: [llm, python, typescript, ui]
178
+ issue_labels: [good first issue, help wanted, bug]
179
+
180
+ - slug: huggingface/transformers
181
+ name: Hugging Face Transformers
182
+ description: State-of-the-art ML model library for PyTorch, TensorFlow, and JAX.
183
+ category: ai-ml
184
+ tags: [llm, python, models, ml]
185
+ issue_labels: [good first issue, help wanted, bug]
186
+
187
+ - slug: microsoft/autogen
188
+ name: AutoGen
189
+ description: Multi-agent conversation framework.
190
+ category: ai-ml
191
+ tags: [agents, python, multi-agent]
192
+ issue_labels: [good first issue, help wanted]
193
+
194
+ - slug: browser-use/browser-use
195
+ name: Browser Use
196
+ description: Browser automation for AI agents.
197
+ category: ai-ml
198
+ tags: [agents, python, browser, automation]
199
+ issue_labels: [good first issue, help wanted, bug]
200
+
201
+ - slug: mlflow/mlflow
202
+ name: MLflow
203
+ description: Open-source MLOps platform for the ML lifecycle.
204
+ category: ai-ml
205
+ tags: [mlops, python, tracking, deployment]
206
+ issue_labels: [good first issue, help wanted, bug]
207
+
208
+ - slug: optuna/optuna
209
+ name: Optuna
210
+ description: Hyperparameter optimization framework.
211
+ category: ai-ml
212
+ tags: [ml, python, optimization]
213
+ issue_labels: [good first issue, help wanted]
214
+
215
+ - slug: langflow-ai/langflow
216
+ name: Langflow
217
+ description: Visual framework for building multi-agent AI applications.
218
+ category: ai-ml
219
+ tags: [agents, python, typescript, visual]
220
+ issue_labels: [good first issue, help wanted, bug]
221
+
222
+ # --- Security ---
223
+ - slug: OWASP/CheatSheetSeries
224
+ name: OWASP Cheat Sheet Series
225
+ description: Security cheat sheets for developers.
226
+ category: security
227
+ tags: [security, documentation, owasp]
228
+ issue_labels: [good first issue, help wanted]
229
+
230
+ # --- Infrastructure ---
231
+ - slug: containers/podman
232
+ name: Podman
233
+ description: Daemonless container engine for OCI containers.
234
+ category: developer-tools
235
+ tags: [containers, go, linux]
236
+ issue_labels: [good-first-issue, help wanted]
237
+
238
+ - slug: traefik/traefik
239
+ name: Traefik
240
+ description: Modern reverse proxy and load balancer.
241
+ category: developer-tools
242
+ tags: [proxy, go, cloud-native]
243
+ issue_labels: [good first issue, help wanted]
244
+
245
+ # --- Developer Tools (additions) ---
246
+ - slug: continuedev/continue
247
+ name: Continue
248
+ description: AI code assistant extension for VS Code and JetBrains.
249
+ category: developer-tools
250
+ tags: [typescript, ide, ai, extension]
251
+ issue_labels: [good first issue, help wanted]
252
+
253
+ - slug: n8n-io/n8n
254
+ name: n8n
255
+ description: AI-native workflow automation with 400+ integrations.
256
+ category: developer-tools
257
+ tags: [typescript, automation, workflow, ai]
258
+ issue_labels: [good first issue, help wanted]
259
+
260
+ - slug: iterative/dvc
261
+ name: DVC
262
+ description: Git for data - version control for ML datasets and pipelines.
263
+ category: developer-tools
264
+ tags: [python, data, versioning, ml]
265
+ issue_labels: [good first issue, help wanted]
266
+
267
+ - slug: PostHog/posthog
268
+ name: PostHog
269
+ description: Open-source product analytics with LLM usage tracking.
270
+ category: developer-tools
271
+ tags: [python, typescript, analytics, ai]
272
+ issue_labels: [good first issue, help wanted]
273
+
274
+ # --- AI / ML (additions) ---
275
+ - slug: crewAIInc/crewAI
276
+ name: CrewAI
277
+ description: Framework for orchestrating role-playing autonomous AI agents.
278
+ category: ai-ml
279
+ tags: [agents, python, multi-agent, orchestration]
280
+ issue_labels: [good first issue, help wanted]
281
+
282
+ - slug: langchain-ai/langgraph
283
+ name: LangGraph
284
+ description: Stateful multi-actor orchestration with cyclic flows for LLM agents.
285
+ category: ai-ml
286
+ tags: [agents, python, graphs, langchain]
287
+ issue_labels: [good first issue, help wanted]
288
+
289
+ - slug: All-Hands-AI/OpenHands
290
+ name: OpenHands
291
+ description: Autonomous AI software engineer with sandboxed execution.
292
+ category: ai-ml
293
+ tags: [agents, python, typescript, coding]
294
+ issue_labels: [good first issue, help wanted]
295
+
296
+ - slug: pydantic/pydantic-ai
297
+ name: Pydantic AI
298
+ description: Type-safe agent framework by the Pydantic team.
299
+ category: ai-ml
300
+ tags: [agents, python, typing, validation]
301
+ issue_labels: [good first issue, help wanted]
302
+
303
+ - slug: stanfordnlp/dspy
304
+ name: DSPy
305
+ description: Programming framework that compiles declarative LLM modules into optimized prompts.
306
+ category: ai-ml
307
+ tags: [llm, python, prompting, optimization]
308
+ issue_labels: [good first issue, help wanted]
309
+
310
+ - slug: BerriAI/litellm
311
+ name: LiteLLM
312
+ description: Universal LLM API gateway supporting 100+ providers.
313
+ category: ai-ml
314
+ tags: [llm, python, gateway, api]
315
+ issue_labels: [good first issue, help wanted, bug]
316
+
317
+ - slug: unclecode/crawl4ai
318
+ name: Crawl4AI
319
+ description: LLM-friendly web crawler that outputs clean Markdown for RAG.
320
+ category: ai-ml
321
+ tags: [python, rag, scraping, data]
322
+ issue_labels: [good first issue, help wanted]
323
+
324
+ - slug: Aider-AI/aider
325
+ name: Aider
326
+ description: Terminal-based AI pair programmer with repository map feature.
327
+ category: ai-ml
328
+ tags: [python, coding, cli, agents]
329
+ issue_labels: [good first issue, help wanted, bug]
330
+
331
+ - slug: explodinggradients/ragas
332
+ name: RAGAS
333
+ description: Evaluation framework for Retrieval Augmented Generation pipelines.
334
+ category: ai-ml
335
+ tags: [python, rag, evaluation, testing]
336
+ issue_labels: [good first issue, help wanted]
337
+
338
+ - slug: confident-ai/deepeval
339
+ name: DeepEval
340
+ description: Unit testing framework for LLMs - Pytest for AI.
341
+ category: ai-ml
342
+ tags: [python, testing, evaluation, llm]
343
+ issue_labels: [good first issue, help wanted]
344
+
345
+ - slug: guardrails-ai/guardrails
346
+ name: Guardrails AI
347
+ description: Validation and reliability framework for LLM outputs.
348
+ category: ai-ml
349
+ tags: [python, validation, safety, llm]
350
+ issue_labels: [good first issue, help wanted]
351
+
352
+ - slug: chroma-core/chroma
353
+ name: Chroma
354
+ description: AI-native embedding database for RAG applications.
355
+ category: ai-ml
356
+ tags: [python, vector-db, rag, embeddings]
357
+ issue_labels: [good first issue, help wanted]
358
+
359
+ - slug: infiniflow/ragflow
360
+ name: RAGFlow
361
+ description: RAG engine with deep document understanding and layout parsing.
362
+ category: ai-ml
363
+ tags: [python, rag, document, nlp]
364
+ issue_labels: [good first issue, help wanted]
365
+
366
+ - slug: HumanSignal/label-studio
367
+ name: Label Studio
368
+ description: Multi-type data labeling and annotation tool.
369
+ category: ai-ml
370
+ tags: [python, labeling, annotation, data]
371
+ issue_labels: [good first issue, help wanted]
372
+
373
+ - slug: bentoml/BentoML
374
+ name: BentoML
375
+ description: Unified model serving framework for production APIs.
376
+ category: ai-ml
377
+ tags: [python, serving, deployment, mlops]
378
+ issue_labels: [good first issue, help wanted]
379
+
380
+ - slug: lobehub/lobe-chat
381
+ name: Lobe Chat
382
+ description: Agent UI framework with Model Context Protocol support.
383
+ category: ai-ml
384
+ tags: [typescript, ui, agents, mcp]
385
+ issue_labels: [good first issue, help wanted]
386
+
387
+ - slug: FlowiseAI/Flowise
388
+ name: Flowise
389
+ description: Drag-and-drop LLM workflow builder for the JavaScript ecosystem.
390
+ category: ai-ml
391
+ tags: [typescript, visual, workflow, langchain]
392
+ issue_labels: [good first issue, help wanted]
393
+
394
+ - slug: Arize-AI/phoenix
395
+ name: Arize Phoenix
396
+ description: LLM observability and tracing for AI application debugging.
397
+ category: ai-ml
398
+ tags: [python, observability, tracing, llm]
399
+ issue_labels: [good first issue, help wanted]
400
+
401
+ - slug: mendableai/firecrawl
402
+ name: Firecrawl
403
+ description: Web scraper for LLMs that handles dynamic JavaScript rendering.
404
+ category: ai-ml
405
+ tags: [typescript, scraping, rag, data]
406
+ issue_labels: [good first issue, help wanted]
407
+
408
+ - slug: Agenta-AI/agenta
409
+ name: Agenta
410
+ description: Open-source LLMOps platform for prompt management and evaluation.
411
+ category: ai-ml
412
+ tags: [python, llmops, evaluation, prompts]
413
+ issue_labels: [good first issue, help wanted]
@@ -0,0 +1,5 @@
1
+ import pino from "pino";
2
+ import type { AuditEvent } from "./models.js";
3
+ export declare function getLogger(): pino.Logger;
4
+ export declare function emitEvent(event: AuditEvent["event"], data?: Record<string, unknown>): void;
5
+ //# sourceMappingURL=audit_log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit_log.d.ts","sourceRoot":"","sources":["../src/audit_log.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9C,wBAAgB,SAAS,IAAI,IAAI,CAAC,MAAM,CAUvC;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,IAAI,CAUN"}
@@ -0,0 +1,28 @@
1
+ import { appendFileSync, mkdirSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import pino from "pino";
4
+ const STATE_DIR = "state";
5
+ const EVENTS_FILE = `${STATE_DIR}/events.jsonl`;
6
+ let logger = null;
7
+ export function getLogger() {
8
+ if (!logger) {
9
+ logger = pino({
10
+ transport: {
11
+ target: "pino-pretty",
12
+ options: { colorize: true, translateTime: "SYS:HH:MM:ss", destination: 2 },
13
+ },
14
+ });
15
+ }
16
+ return logger;
17
+ }
18
+ export function emitEvent(event, data = {}) {
19
+ const entry = {
20
+ timestamp: new Date().toISOString(),
21
+ event,
22
+ data,
23
+ };
24
+ mkdirSync(dirname(EVENTS_FILE), { recursive: true });
25
+ appendFileSync(EVENTS_FILE, JSON.stringify(entry) + "\n");
26
+ getLogger().info({ event, ...data }, event);
27
+ }
28
+ //# sourceMappingURL=audit_log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit_log.js","sourceRoot":"","sources":["../src/audit_log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,WAAW,GAAG,GAAG,SAAS,eAAe,CAAC;AAEhD,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,CAAC;YACZ,SAAS,EAAE;gBACT,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,EAAE;aAC3E;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAA0B,EAC1B,OAAgC,EAAE;IAElC,MAAM,KAAK,GAAe;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,IAAI;KACL,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}