@possumtech/rummy 0.2.7 → 0.3.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.
- package/.env.example +12 -3
- package/EXCEPTIONS.md +46 -0
- package/PLUGINS.md +454 -197
- package/SPEC.md +284 -93
- package/migrations/001_initial_schema.sql +57 -70
- package/package.json +16 -10
- package/service.js +1 -1
- package/src/agent/AgentLoop.js +254 -70
- package/src/agent/ContextAssembler.js +18 -4
- package/src/agent/KnownStore.js +156 -23
- package/src/agent/ProjectAgent.js +5 -4
- package/src/agent/ResponseHealer.js +21 -1
- package/src/agent/TurnExecutor.js +393 -115
- package/src/agent/XmlParser.js +92 -39
- package/src/agent/known_checks.sql +5 -4
- package/src/agent/known_queries.sql +4 -3
- package/src/agent/known_store.sql +45 -15
- package/src/agent/loops.sql +63 -0
- package/src/agent/runs.sql +7 -7
- package/src/agent/schemes.sql +5 -2
- package/src/agent/tokens.js +6 -21
- package/src/agent/turns.sql +13 -4
- package/src/hooks/Hooks.js +18 -0
- package/src/hooks/PluginContext.js +14 -10
- package/src/hooks/RummyContext.js +30 -10
- package/src/hooks/ToolRegistry.js +83 -19
- package/src/llm/LlmProvider.js +27 -8
- package/src/llm/OpenAiClient.js +20 -0
- package/src/llm/OpenRouterClient.js +24 -2
- package/src/llm/XaiClient.js +47 -2
- package/src/plugins/ask_user/README.md +4 -4
- package/src/plugins/ask_user/ask_user.js +8 -7
- package/src/plugins/ask_user/ask_userDoc.js +29 -0
- package/src/plugins/budget/BudgetGuard.js +74 -0
- package/src/plugins/budget/README.md +43 -0
- package/src/plugins/budget/budget.js +79 -0
- package/src/plugins/cp/README.md +5 -4
- package/src/plugins/cp/cp.js +16 -12
- package/src/plugins/cp/cpDoc.js +29 -0
- package/src/plugins/current/README.md +4 -4
- package/src/plugins/current/current.js +12 -10
- package/src/plugins/engine/engine.sql +5 -10
- package/src/plugins/engine/turn_context.sql +13 -13
- package/src/plugins/env/README.md +3 -4
- package/src/plugins/env/env.js +8 -7
- package/src/plugins/env/envDoc.js +29 -0
- package/src/plugins/file/README.md +9 -12
- package/src/plugins/file/file.js +34 -45
- package/src/plugins/get/README.md +2 -2
- package/src/plugins/get/get.js +28 -11
- package/src/plugins/get/getDoc.js +41 -0
- package/src/plugins/hedberg/docs.md +0 -9
- package/src/plugins/hedberg/hedberg.js +4 -6
- package/src/plugins/hedberg/matcher.js +1 -1
- package/src/plugins/hedberg/normalize.js +28 -0
- package/src/plugins/hedberg/patterns.js +31 -33
- package/src/plugins/hedberg/sed.js +17 -10
- package/src/plugins/helpers.js +2 -2
- package/src/plugins/index.js +93 -28
- package/src/plugins/instructions/README.md +6 -2
- package/src/plugins/instructions/instructions.js +21 -5
- package/src/plugins/instructions/preamble.md +9 -5
- package/src/plugins/known/README.md +10 -7
- package/src/plugins/known/known.js +33 -23
- package/src/plugins/known/knownDoc.js +33 -0
- package/src/plugins/mv/README.md +5 -4
- package/src/plugins/mv/mv.js +16 -12
- package/src/plugins/mv/mvDoc.js +31 -0
- package/src/plugins/persona/persona.js +78 -0
- package/src/plugins/previous/README.md +2 -2
- package/src/plugins/previous/previous.js +12 -8
- package/src/plugins/progress/progress.js +44 -12
- package/src/plugins/prompt/README.md +5 -5
- package/src/plugins/prompt/prompt.js +23 -19
- package/src/plugins/rm/README.md +4 -4
- package/src/plugins/rm/rm.js +29 -12
- package/src/plugins/rm/rmDoc.js +30 -0
- package/src/plugins/rpc/README.md +15 -28
- package/src/plugins/rpc/rpc.js +63 -107
- package/src/plugins/set/README.md +13 -12
- package/src/plugins/set/set.js +82 -21
- package/src/plugins/set/setDoc.js +45 -0
- package/src/plugins/sh/README.md +4 -4
- package/src/plugins/sh/sh.js +8 -7
- package/src/plugins/sh/shDoc.js +29 -0
- package/src/plugins/{skills/skills.js → skill/skill.js} +12 -54
- package/src/plugins/summarize/README.md +6 -5
- package/src/plugins/summarize/summarize.js +7 -6
- package/src/plugins/summarize/summarizeDoc.js +33 -0
- package/src/plugins/telemetry/telemetry.js +20 -8
- package/src/plugins/think/README.md +20 -0
- package/src/plugins/think/think.js +5 -0
- package/src/plugins/unknown/README.md +5 -5
- package/src/plugins/unknown/unknown.js +11 -8
- package/src/plugins/unknown/unknownDoc.js +31 -0
- package/src/plugins/update/README.md +3 -8
- package/src/plugins/update/update.js +7 -6
- package/src/plugins/update/updateDoc.js +33 -0
- package/src/server/ClientConnection.js +3 -5
- package/src/server/RpcRegistry.js +52 -4
- package/src/sql/v_model_context.sql +31 -39
- package/src/sql/v_run_log.sql +3 -3
- package/src/agent/prompt_queue.sql +0 -39
- package/src/plugins/ask_user/docs.md +0 -2
- package/src/plugins/cp/docs.md +0 -2
- package/src/plugins/env/docs.md +0 -2
- package/src/plugins/get/docs.md +0 -6
- package/src/plugins/known/docs.md +0 -3
- package/src/plugins/mv/docs.md +0 -2
- package/src/plugins/rm/docs.md +0 -4
- package/src/plugins/set/docs.md +0 -4
- package/src/plugins/sh/docs.md +0 -2
- package/src/plugins/skills/README.md +0 -25
- package/src/plugins/store/README.md +0 -20
- package/src/plugins/store/docs.md +0 -5
- package/src/plugins/store/store.js +0 -52
- package/src/plugins/summarize/docs.md +0 -4
- package/src/plugins/unknown/docs.md +0 -5
- package/src/plugins/update/docs.md +0 -4
package/.env.example
CHANGED
|
@@ -18,7 +18,9 @@ RUMMY_MMAP_MB=0
|
|
|
18
18
|
# Agent Loop Limits
|
|
19
19
|
RUMMY_MAX_TURNS=99
|
|
20
20
|
RUMMY_MAX_UNKNOWN_WARNINGS=3
|
|
21
|
+
RUMMY_MAX_STALLS=3
|
|
21
22
|
RUMMY_MAX_REPETITIONS=3
|
|
23
|
+
RUMMY_MAX_UPDATE_REPEATS=3
|
|
22
24
|
|
|
23
25
|
# Hygiene
|
|
24
26
|
# Days to keep completed/aborted runs before purging
|
|
@@ -26,7 +28,15 @@ RUMMY_RETENTION_DAYS=31
|
|
|
26
28
|
|
|
27
29
|
# Timeouts (ms)
|
|
28
30
|
RUMMY_RPC_TIMEOUT=30000
|
|
29
|
-
RUMMY_FETCH_TIMEOUT=
|
|
31
|
+
RUMMY_FETCH_TIMEOUT=300000
|
|
32
|
+
|
|
33
|
+
# Debug
|
|
34
|
+
# RUMMY_DEBUG=true
|
|
35
|
+
|
|
36
|
+
# Token Estimation
|
|
37
|
+
# Characters per token. Lower = more conservative (fewer tokens per character).
|
|
38
|
+
# Default 2. Set to 1 for worst-case (1 token per character).
|
|
39
|
+
RUMMY_TOKEN_DIVISOR=2
|
|
30
40
|
|
|
31
41
|
# Model Behavior
|
|
32
42
|
# LLM temperature (0 = deterministic, 0.7 = creative). Client can override per-request.
|
|
@@ -57,7 +67,6 @@ RUMMY_X_TITLE=RUMMY
|
|
|
57
67
|
# Web Search
|
|
58
68
|
# RUMMY_SEARXNG_URL="http://127.0.0.1:8888"
|
|
59
69
|
|
|
60
|
-
#
|
|
70
|
+
# External plugins: npm i -g <package>, then uncomment
|
|
61
71
|
# RUMMY_PLUGIN_WEB="@possumtech/rummy.web"
|
|
62
|
-
# required for git repo and repomap/symbol functionality
|
|
63
72
|
# RUMMY_PLUGIN_REPO="@possumtech/rummy.repo"
|
package/EXCEPTIONS.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# EXCEPTIONS.md — Documented Backbone Responsibilities
|
|
2
|
+
|
|
3
|
+
Operations that bypass the plugin protocol. Each must justify WHY it
|
|
4
|
+
can't go through the standard tool handler path. If the justification
|
|
5
|
+
is weak, the exception should be eliminated.
|
|
6
|
+
|
|
7
|
+
## Resolved
|
|
8
|
+
|
|
9
|
+
### File.setConstraint / File.dropConstraint
|
|
10
|
+
|
|
11
|
+
**What:** Direct DB writes to `file_constraints` table.
|
|
12
|
+
**Justification:** File constraints are project-level config — they
|
|
13
|
+
define which files a project cares about. This is backbone, not tool
|
|
14
|
+
dispatch. Entry promotion/demotion that follows constraints now goes
|
|
15
|
+
through the standard tool handler chain via `dispatchTool`.
|
|
16
|
+
**Boundary documented:** SPEC.md §2.3.
|
|
17
|
+
|
|
18
|
+
## Currently Identified
|
|
19
|
+
|
|
20
|
+
### 1. TurnExecutor#record — tool-specific handling
|
|
21
|
+
|
|
22
|
+
**What:** `known`, `unknown`, `summarize`, `update` have special-case
|
|
23
|
+
code in `#record` (dedup, slug paths, lifecycle classification).
|
|
24
|
+
**Bypasses:** These tools don't go through the same dispatch path as
|
|
25
|
+
`get`, `set`, `rm` etc.
|
|
26
|
+
**Justification:** Lifecycle signals (`summarize`, `update`) are state
|
|
27
|
+
declarations, not tool operations — they always dispatch and cannot be
|
|
28
|
+
409'd. `known` and `unknown` generate their own paths from body content
|
|
29
|
+
(slug paths). The classification is a fundamental architectural split
|
|
30
|
+
(lifecycle vs action), not a protocol violation.
|
|
31
|
+
|
|
32
|
+
### 2. Token math — multiple measurement points
|
|
33
|
+
|
|
34
|
+
**What:** `known_entries.tokens`, `turn_context.tokens`,
|
|
35
|
+
`turns.context_tokens`, `countTokens()` estimates.
|
|
36
|
+
**Bypasses:** No single function call, but a strict rule.
|
|
37
|
+
**Justification:** Each serves a different purpose. `known_entries.tokens`
|
|
38
|
+
is display-only (model sees entry sizes in `<knowns>`). `turn_context.tokens`
|
|
39
|
+
is per-turn snapshot. `turns.context_tokens` is assembled ground truth for
|
|
40
|
+
budget. The rule: budget decisions use ONLY assembled message tokens.
|
|
41
|
+
DB tokens are NEVER used for budget. Documented in PLUGINS.md §7.5.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
*This file should shrink over time. Every entry is a debt to be paid
|
|
46
|
+
or a boundary to be justified.*
|