@drawbridge/drawbridge-agents 0.1.98 → 0.1.99
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.
|
@@ -21,12 +21,9 @@
|
|
|
21
21
|
"../drawbridge-components",
|
|
22
22
|
"../drawbridge-docs",
|
|
23
23
|
"../drawbridge-emails",
|
|
24
|
-
"../drawbridge-games",
|
|
25
|
-
"../drawbridge-growth",
|
|
26
24
|
"../drawbridge-mongodb",
|
|
27
25
|
"../drawbridge-redis",
|
|
28
26
|
"../drawbridge-share",
|
|
29
|
-
"../drawbridge-shopify",
|
|
30
27
|
"../drawbridge-shopify-app",
|
|
31
28
|
"../drawbridge-stripe",
|
|
32
29
|
"../drawbridge-sync",
|
package/claude/CLAUDE.md
CHANGED
|
@@ -107,15 +107,17 @@ skill) so it stops living only in tribal memory.
|
|
|
107
107
|
carry `organization : null` and still block everyone;
|
|
108
108
|
api registers the number's SmsUrl at twilio connect (`lib/twilio.js`) and `scripts.js
|
|
109
109
|
registerTwilioWebhooks` backfills — a deployed webhooks route with unregistered numbers hears
|
|
110
|
-
nothing, silently. **
|
|
111
|
-
2026-10-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
110
|
+
nothing, silently. **Every message send and every draw checks the recipient's OWN canonical
|
|
111
|
+
address, never their contact** (Darren, 2026-10-29): contacts exist only once an organization
|
|
112
|
+
activates segments, and sync merges entrants who share a phone into one contact, so a
|
|
113
|
+
contact-reading gate blocked a second entrant for the first one's unsubscribe, and only where
|
|
114
|
+
segments was on. The api's draw check (`lib/opt-out.js`, used by prepare, the draw and the
|
|
115
|
+
winner send) and `canSend` without `person` must stay in step. **Since Butterscotch
|
|
116
|
+
(release 1219790090574059) the ONE caller that reads the contact is the vendor contact sync**:
|
|
117
|
+
`lib/step-runner.js` passes `person : lead.id` for the `suppressed` answer the
|
|
118
|
+
Mailchimp/Klaviyo/Attentive hooks receive, and `canSend` then blocks when any canonical or raw
|
|
119
|
+
address on the person's contact (found by `leads` or `canonical.emails`/`canonical.phones`) is
|
|
120
|
+
suppressed. A message path that passes `person` reintroduces the shared-phone bug.
|
|
119
121
|
- **`audience` picks the FROM-address; `intent` picks the unsubscribe plumbing — and NOTHING
|
|
120
122
|
passes the suppression gate** (utils ↔ sync ↔ api). Every suppression source blocks every
|
|
121
123
|
lead-facing send, the winner claim included: api's draw route refuses up front ("Disqualify
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Token budget
|
|
2
|
+
|
|
3
|
+
Darren works on a subscription, and the rolling limits are metered in tokens, so a QA run or
|
|
4
|
+
a full dev walk that spends fewer tokens is one that finishes before the limit lands
|
|
5
|
+
(Darren, 2026-11-02: "we don't want to stop doing those things, we just want a way to use less
|
|
6
|
+
tokens when we do"). Two rules, both about where the tokens actually go: tool output and
|
|
7
|
+
subagents, not the prompt.
|
|
8
|
+
|
|
9
|
+
## Read-only subagents run on Haiku
|
|
10
|
+
|
|
11
|
+
A subagent that only locates things — `Explore`, `Plan`, a `general-purpose` agent sent to
|
|
12
|
+
search or read — is spawned with `model : 'haiku'`. It returns file paths and conclusions,
|
|
13
|
+
and the session model reads the files it names. Agents that judge or write keep the session
|
|
14
|
+
model: `drawbridge-qa` (walks and reports), the code reviewer, anything that edits. A Haiku
|
|
15
|
+
agent's "not found" is never evidence of absence under rule 6 in `rules.md`: before claiming
|
|
16
|
+
nothing writes, reads or documents a thing, the session model runs that search itself.
|
|
17
|
+
|
|
18
|
+
## Long output is summarised by the command, not by the model
|
|
19
|
+
|
|
20
|
+
A build, test, log or list command that can print more than a screen is piped through `tail`
|
|
21
|
+
for its summary AND `grep -i -E 'fail|error'` for its failures, in the same command. A bare
|
|
22
|
+
`tail` hides the failing line; a bare dump spends the tokens. Before a long walk, `/compact`;
|
|
23
|
+
between unrelated tasks, a new session rather than a longer one.
|
|
24
|
+
|
|
25
|
+
## Locate with Serena, read with Read
|
|
26
|
+
|
|
27
|
+
Serena (an MCP server, `oraios/serena`, registered at user scope) finds a symbol and its
|
|
28
|
+
references through a language server. Use it to find WHERE code lives instead of reading
|
|
29
|
+
whole files or paging through grep hits. It does not replace the read: rule 5 in `rules.md`
|
|
30
|
+
still means the whole file is open before a claim about it, and rule 6 still means absence is
|
|
31
|
+
proved by a search of the whole space. Serena only shortens the search for the file to open.
|
|
32
|
+
|
|
33
|
+
Trial since 2026-11-02 on Darren's machine (install: `uv tool install -p 3.13 serena-agent`,
|
|
34
|
+
then `claude mcp add --scope user serena -- serena start-mcp-server --context claude-code
|
|
35
|
+
--project-from-cwd`; `**/.serena/` is in the global git ignore). The agents sync preflight
|
|
36
|
+
installs it family-wide only once the trial shows file reads dropping. Serena's own README
|
|
37
|
+
says never to install it from a plugin or MCP marketplace.
|
package/package.json
CHANGED