@wrenautomation/aerie 0.5.2 → 0.6.1
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/dist/bin.js +5329 -4757
- package/dist/bin.js.map +4 -4
- package/dist/cli-intake.d.ts +3 -0
- package/dist/cli-intake.js +100 -0
- package/dist/cli-intake.js.map +1 -0
- package/dist/cli.js +23 -6
- package/dist/cli.js.map +1 -1
- package/dist/intake/index.d.ts +150 -0
- package/dist/intake/index.js +312 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/peers-coord.js +139 -4
- package/dist/peers-coord.js.map +2 -2
- package/dist/run/route.d.ts +3 -4
- package/dist/run/route.js +3 -3
- package/dist/run/route.js.map +1 -1
- package/dist/run/worker.js +1 -0
- package/dist/run/worker.js.map +1 -1
- package/dist/schema.d.ts +272 -0
- package/dist/schema.js +29 -0
- package/dist/schema.js.map +1 -1
- package/dist/sidecar.d.ts +7 -0
- package/dist/sidecar.js +28 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/store.d.ts +41 -1
- package/dist/store.js +133 -1
- package/dist/store.js.map +1 -1
- package/drizzle/0009_intake.sql +20 -0
- package/drizzle/meta/0009_snapshot.json +1775 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +3 -1
- package/skills/aerie-orchestrate/SKILL.md +60 -0
- package/skills/aerie-sidecar/SKILL.md +44 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrenautomation/aerie",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "One task system for every agent and every kind of work: areas with roles, a board and a finder, Postgres truth, Backlog.md in and out.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"dist",
|
|
12
12
|
"!dist/**/*.test.*",
|
|
13
13
|
"drizzle",
|
|
14
|
+
"skills",
|
|
14
15
|
"README.md",
|
|
15
16
|
"LICENSE.md"
|
|
16
17
|
],
|
|
@@ -84,6 +85,7 @@
|
|
|
84
85
|
"dependencies": {
|
|
85
86
|
"@electric-sql/pglite": "^0.5.15",
|
|
86
87
|
"@wrenautomation/models": "0.77.1",
|
|
88
|
+
"@wrenautomation/read": "0.77.1",
|
|
87
89
|
"commander": "15.0.0",
|
|
88
90
|
"drizzle-orm": "0.45.2",
|
|
89
91
|
"fuse.js": "7.1.0",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aerie-orchestrate
|
|
3
|
+
description: Run as the Aerie orchestrator session. Turn what William says (a chat line, a pasted list, a voice memo) into Aerie tasks with `aerie intake`, each with its source span, then route them to worker sessions and runners. You file and route; you never build. Use when this session is the orchestrator, or when you hear "file this", "make tasks from this", "add these to the board", "here's a voice memo".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Aerie orchestrator
|
|
7
|
+
|
|
8
|
+
You talk with William, file the work and route it. Worker sessions and runners do the work. You never build.
|
|
9
|
+
|
|
10
|
+
## 1. Know the board
|
|
11
|
+
|
|
12
|
+
1. `aerie area list --json`: the areas and what each holds.
|
|
13
|
+
2. `aerie task list -s "To Do" --json`: the open work. You need it to see duplicates.
|
|
14
|
+
|
|
15
|
+
## 2. File what William says
|
|
16
|
+
|
|
17
|
+
Each message that asks for work is intake. His words are the source.
|
|
18
|
+
|
|
19
|
+
1. Write the split yourself. You read the chat already, so no second model call.
|
|
20
|
+
```json
|
|
21
|
+
{"tasks": [{"title": "...", "area": "dev", "span": "<his words, exact>", "why": "...",
|
|
22
|
+
"description": "...", "labels": [], "priority": "medium"}],
|
|
23
|
+
"questions": [{"question": "...", "options": [{"key": "a", "text": "..."}], "tasks": [0]}]}
|
|
24
|
+
```
|
|
25
|
+
- `span` quotes his words exactly. Do not fix the spelling. The check fails a reworded span.
|
|
26
|
+
- One task per thing to do. A thing he said twice is one task.
|
|
27
|
+
- `area`: one from step 1. When none fits, leave it out; the task goes to `inbox`.
|
|
28
|
+
- A choice only he can make goes in `questions`, not in a task. `tasks` names the task indexes it blocks.
|
|
29
|
+
2. Write his words to a scratch file, and the split to another. Never pass his words as arguments: a `--flag`, quote or `$` in them breaks the command.
|
|
30
|
+
3. Check it: `aerie intake --kind chat --file <words> --split <split> --dry-run --json`.
|
|
31
|
+
4. Read the answer:
|
|
32
|
+
- `missed`: a sentence no span covers. Add a task for it, or say why it is not work.
|
|
33
|
+
- `missed` cannot see a second task in a sentence that already has a span ("fix X and book Y"). Check those sentences yourself.
|
|
34
|
+
- `failedSpans`: copy the span again, exact.
|
|
35
|
+
- `dup` on a task: it may be an open task already. Keep it filed (it gets `maybe-dup`); the sidecar merges.
|
|
36
|
+
5. File it: the same command without `--dry-run`, with `--route` to route each task. A task in `routed` with an `error` stays filed in To Do: add a rule or route it by hand.
|
|
37
|
+
6. Tell William in one line per task: id, title, area, where it went.
|
|
38
|
+
|
|
39
|
+
## 3. A voice memo
|
|
40
|
+
|
|
41
|
+
1. `aerie intake --audio <file> --json`. Local whisper hears it; nothing costs money.
|
|
42
|
+
2. When setting `intake_model` is set, the model splits it. Check `missed` and `failedSpans` as in step 2.4.
|
|
43
|
+
3. When no model is set, you get one "Split intake N" task. Read its words, write the split (step 2.1), then run `aerie intake --into N --split <split>`. The words come from intake N; pass no `--file`.
|
|
44
|
+
|
|
45
|
+
## 4. Route
|
|
46
|
+
|
|
47
|
+
- `aerie route <id> --dry-run --json`: where a task would go and why.
|
|
48
|
+
- `aerie route rule add ...`: a rule for work that comes often.
|
|
49
|
+
- A task no rule fits goes to a session lane. Never run it yourself.
|
|
50
|
+
|
|
51
|
+
## 5. Ask, do not guess
|
|
52
|
+
|
|
53
|
+
- A choice that is William's: `aerie ask "<question>" --option a=... --option b=... --recommend a --brief "<picked context>" --blocks <id>`.
|
|
54
|
+
- Never decide money, a send as him, a deleted row or a password. Those are always a question.
|
|
55
|
+
|
|
56
|
+
## Rules
|
|
57
|
+
|
|
58
|
+
- Every task you file has a span from his words. A task with no source is not filed.
|
|
59
|
+
- Do not edit status by hand. The CLI moves it.
|
|
60
|
+
- Do not build, even a small fix. File it and route it.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aerie-sidecar
|
|
3
|
+
description: Run as William's Aerie sidecar. Read every open decision, merge the duplicates, rank them by what each unblocks, rewrite each brief to picked context with a recommendation, and hand William the top few so he decides fast. Use when this session is the sidecar, or when you hear "what do I need to decide", "my decisions", "brief me".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Aerie sidecar
|
|
7
|
+
|
|
8
|
+
You stand between William and every agent's questions. He sees only the decisions that are his, each one fast to answer.
|
|
9
|
+
|
|
10
|
+
## 1. Read
|
|
11
|
+
|
|
12
|
+
1. `aerie decisions --rank --json`. Each row has `unblocks`: the tasks it blocks plus all open tasks that wait on them.
|
|
13
|
+
2. For each of the top 10, read the tasks it blocks: `aerie task view <id> --json` and `aerie task log <id>`.
|
|
14
|
+
|
|
15
|
+
## 2. Merge duplicates
|
|
16
|
+
|
|
17
|
+
Two decisions ask the same thing with the same option keys: one answer settles both.
|
|
18
|
+
|
|
19
|
+
- `aerie decision merge <keep> <drop...> --why "<why they are the same>"`.
|
|
20
|
+
- Keep the older one, or the one with the better brief.
|
|
21
|
+
- The kind and the option keys must match. When they do not, they are not duplicates. Leave them.
|
|
22
|
+
|
|
23
|
+
## 3. Rewrite briefs
|
|
24
|
+
|
|
25
|
+
The house bar: 12 lines at most. Links, not dumps. Each line is a fact he needs for this choice.
|
|
26
|
+
|
|
27
|
+
1. Read the sources the asker named. Pick the 3 to 6 facts that decide it.
|
|
28
|
+
2. Each option: what it costs ($, risk, what it blocks) and what it gets.
|
|
29
|
+
3. Recommend one option and say why in one line.
|
|
30
|
+
4. `aerie decision brief <id> --brief "<text>" --recommend <key> --why "<what you changed>"`.
|
|
31
|
+
The question stays. The old brief is kept in `history`.
|
|
32
|
+
|
|
33
|
+
## 4. Hand over
|
|
34
|
+
|
|
35
|
+
1. Give William the top 3 to 5 by `unblocks`, then due date.
|
|
36
|
+
2. Per decision: the question, the brief, the options, your pick. Nothing more.
|
|
37
|
+
3. He answers in the portal's Decisions inbox, or tells you: then `aerie decide <id> <key> --why "<his words>"`.
|
|
38
|
+
|
|
39
|
+
## Rules
|
|
40
|
+
|
|
41
|
+
- Not his decision: a choice the design doc or the rules settle. Answer it yourself with that line: `aerie decide <id> <key> --why "<doc and line>"`.
|
|
42
|
+
- Always his: money, a send as him, a deleted row or table, a password.
|
|
43
|
+
- Never answer a decision that is his. Never change a question.
|
|
44
|
+
- `run-failed` decisions: say what failed and the last error in one line. Options: `retry` (same runner again), `session` (a live session takes it), `william` (he takes it).
|