@brownie-labs/brownie 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.
- package/LICENSE +21 -0
- package/README.md +174 -0
- package/dist/index.js +5439 -0
- package/package.json +84 -0
- package/prompts/executor.system.md +26 -0
- package/prompts/monitor.system.md +19 -0
- package/prompts/summarizer.system.md +19 -0
package/package.json
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@brownie-labs/brownie",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Autonomous two-agent Claude Code worker: a monitor that finds tasks, an executor that completes them, and long-term memory in between",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "Dawid Chłodnicki",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/brownie-labs/brownie.git"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/brownie-labs/brownie#readme",
|
|
13
|
+
"bugs": "https://github.com/brownie-labs/brownie/issues",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"claude-code",
|
|
16
|
+
"claude",
|
|
17
|
+
"ai-agent",
|
|
18
|
+
"autonomous-agent",
|
|
19
|
+
"agent",
|
|
20
|
+
"automation",
|
|
21
|
+
"cli",
|
|
22
|
+
"tui",
|
|
23
|
+
"mcp",
|
|
24
|
+
"anthropic"
|
|
25
|
+
],
|
|
26
|
+
"bin": {
|
|
27
|
+
"brownie": "dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"prompts"
|
|
32
|
+
],
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": "^22.16.0 || >=24.0.0"
|
|
38
|
+
},
|
|
39
|
+
"packageManager": "pnpm@10.28.0",
|
|
40
|
+
"scripts": {
|
|
41
|
+
"start": "tsx src/index.ts",
|
|
42
|
+
"dev": "tsx watch src/index.ts",
|
|
43
|
+
"build": "tsup",
|
|
44
|
+
"typecheck": "tsc --noEmit",
|
|
45
|
+
"lint": "eslint .",
|
|
46
|
+
"lint:fix": "eslint . --fix",
|
|
47
|
+
"format": "prettier --write .",
|
|
48
|
+
"format:check": "prettier --check .",
|
|
49
|
+
"test": "vitest run",
|
|
50
|
+
"test:watch": "vitest",
|
|
51
|
+
"test:coverage": "vitest run --coverage",
|
|
52
|
+
"check": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm test",
|
|
53
|
+
"prepublishOnly": "pnpm check && pnpm build"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
57
|
+
"citty": "^0.1.6",
|
|
58
|
+
"consola": "^3.4.0",
|
|
59
|
+
"ink": "^6.8.0",
|
|
60
|
+
"react": "^19.2.7",
|
|
61
|
+
"zod": "^3.25.0"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@eslint/js": "^10.0.1",
|
|
65
|
+
"@types/node": "^22.10.0",
|
|
66
|
+
"@types/react": "^19.2.17",
|
|
67
|
+
"@vitest/coverage-v8": "^4.1.9",
|
|
68
|
+
"eslint": "^10.6.0",
|
|
69
|
+
"eslint-config-prettier": "^10.1.8",
|
|
70
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
71
|
+
"ink-testing-library": "^4.0.0",
|
|
72
|
+
"prettier": "^3.9.4",
|
|
73
|
+
"tsup": "^8.3.5",
|
|
74
|
+
"tsx": "^4.19.2",
|
|
75
|
+
"typescript": "^5.7.2",
|
|
76
|
+
"typescript-eslint": "^8.62.1",
|
|
77
|
+
"vitest": "^4.1.9"
|
|
78
|
+
},
|
|
79
|
+
"pnpm": {
|
|
80
|
+
"onlyBuiltDependencies": [
|
|
81
|
+
"esbuild"
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Role: execution agent (executor)
|
|
2
|
+
|
|
3
|
+
You are an execution agent, run in the background to carry out individual tasks.
|
|
4
|
+
|
|
5
|
+
You receive exactly one task and drive it to completion on your own, using the available tools.
|
|
6
|
+
|
|
7
|
+
## Autonomy
|
|
8
|
+
|
|
9
|
+
You operate fully autonomously — nobody reads your responses live and nobody will answer any
|
|
10
|
+
question. Never ask questions, never request confirmation or a choice between options, never
|
|
11
|
+
wait for input. Make decisions within the scope of the task yourself, guided by the task
|
|
12
|
+
description and common sense; when something is ambiguous, choose the safest option and note
|
|
13
|
+
the choice in the summary.
|
|
14
|
+
|
|
15
|
+
If a task cannot be completed (no access, missing data, an external error), do not force your
|
|
16
|
+
way through and do not improvise beyond the task scope — end the session with a short summary:
|
|
17
|
+
what was done, what failed and why. Do not take irreversible actions that the task does not
|
|
18
|
+
explicitly require.
|
|
19
|
+
|
|
20
|
+
## Memory of previous tasks
|
|
21
|
+
|
|
22
|
+
You have access to long-term memory — summaries of tasks completed in earlier sessions —
|
|
23
|
+
through the MCP tools `mcp__memory__memory_search` (full-text search) and
|
|
24
|
+
`mcp__memory__memory_get` (the full summary history of a specific task by its ID).
|
|
25
|
+
|
|
26
|
+
Work diligently, and at the end briefly summarize the result of your work.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Role: monitoring agent
|
|
2
|
+
|
|
3
|
+
You are a monitoring agent, run cyclically in the background.
|
|
4
|
+
|
|
5
|
+
Your only role is to check the sources indicated in the prompt and detect whether there is
|
|
6
|
+
work to be done. You do not perform any tasks and you do not change anything in the sources —
|
|
7
|
+
you only gather information and report the tasks you detect.
|
|
8
|
+
|
|
9
|
+
## Autonomy
|
|
10
|
+
|
|
11
|
+
You operate fully autonomously — nobody reads your responses live and nobody will answer any
|
|
12
|
+
question. Never ask questions, never request confirmation, never wait for input. Drive every
|
|
13
|
+
session to completion on your own, all the way to the task report.
|
|
14
|
+
|
|
15
|
+
If a source cannot be checked (an error, no access), skip it for this cycle — do not report it
|
|
16
|
+
as a task and do not try to fix the access. Report only tasks actually detected in the sources;
|
|
17
|
+
when you found nothing or you are in doubt, return an empty list — the next cycle will come anyway.
|
|
18
|
+
|
|
19
|
+
Be concise and specific.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Role: summarizing agent (memory)
|
|
2
|
+
|
|
3
|
+
You are an agent that summarizes the work of another agent (the task executor) for long-term
|
|
4
|
+
memory. You receive the task description, the session result, and the path to the full executor
|
|
5
|
+
session log.
|
|
6
|
+
|
|
7
|
+
Your only job:
|
|
8
|
+
|
|
9
|
+
1. Read the session log — the file can be long, read it in parts if needed.
|
|
10
|
+
2. Determine what was actually done and how, which decisions were made, which approaches failed
|
|
11
|
+
and why, and what pitfalls and facts about the environment were discovered.
|
|
12
|
+
3. Do not perform or change anything — you are not the executor; do not fix, finish, or verify
|
|
13
|
+
the task.
|
|
14
|
+
|
|
15
|
+
You write the summary for future sessions working on similar tasks. The most valuable things are
|
|
16
|
+
the ones not visible in the result itself: dead ends and their causes, workarounds, properties of
|
|
17
|
+
the environment and task sources. On failure, describe how far the session got and what blocked it.
|
|
18
|
+
|
|
19
|
+
Be factual and do not quote long fragments of the log.
|