@cluesmith/codev 3.3.4 → 3.3.5
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/dashboard-dist/assets/index-BuflRUi6.js +220 -0
- package/dashboard-dist/assets/index-BuflRUi6.js.map +1 -0
- package/dashboard-dist/assets/index-r3bZzLmX.css +32 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/commands/send.d.ts +3 -2
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +24 -5
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +12 -2
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/servers/decisions/file.d.ts +50 -0
- package/dist/agent-farm/servers/decisions/file.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/file.js +146 -0
- package/dist/agent-farm/servers/decisions/file.js.map +1 -0
- package/dist/agent-farm/servers/decisions/grammar.d.ts +36 -0
- package/dist/agent-farm/servers/decisions/grammar.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/grammar.js +109 -0
- package/dist/agent-farm/servers/decisions/grammar.js.map +1 -0
- package/dist/agent-farm/servers/decisions/notice.d.ts +11 -0
- package/dist/agent-farm/servers/decisions/notice.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/notice.js +18 -0
- package/dist/agent-farm/servers/decisions/notice.js.map +1 -0
- package/dist/agent-farm/servers/decisions/parse.d.ts +36 -0
- package/dist/agent-farm/servers/decisions/parse.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/parse.js +308 -0
- package/dist/agent-farm/servers/decisions/parse.js.map +1 -0
- package/dist/agent-farm/servers/decisions/routes.d.ts +17 -0
- package/dist/agent-farm/servers/decisions/routes.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/routes.js +160 -0
- package/dist/agent-farm/servers/decisions/routes.js.map +1 -0
- package/dist/agent-farm/servers/decisions/splice.d.ts +26 -0
- package/dist/agent-farm/servers/decisions/splice.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/splice.js +120 -0
- package/dist/agent-farm/servers/decisions/splice.js.map +1 -0
- package/dist/agent-farm/servers/decisions/stamp.d.ts +4 -0
- package/dist/agent-farm/servers/decisions/stamp.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/stamp.js +171 -0
- package/dist/agent-farm/servers/decisions/stamp.js.map +1 -0
- package/dist/agent-farm/servers/overview.d.ts +4 -3
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +51 -24
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +63 -5
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/utils/message-format.d.ts +8 -0
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.js +16 -0
- package/dist/agent-farm/utils/message-format.js.map +1 -1
- package/dist/commands/consult/index.d.ts +20 -1
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +56 -2
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/porch/checks.d.ts +7 -1
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +77 -14
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +38 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +79 -43
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts +4 -3
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +32 -5
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/types.d.ts +2 -0
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/lib/agent-env.d.ts +10 -1
- package/dist/lib/agent-env.d.ts.map +1 -1
- package/dist/lib/agent-env.js +12 -1
- package/dist/lib/agent-env.js.map +1 -1
- package/dist/lib/config.d.ts +8 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/package.json +4 -4
- package/skeleton/.claude/skills/afx/SKILL.md +15 -0
- package/skeleton/.claude/skills/arch-init/SKILL.md +56 -9
- package/skeleton/.claude/skills/arch-save/SKILL.md +100 -9
- package/skeleton/.claude/skills/consult/SKILL.md +9 -0
- package/skeleton/.claude/skills/porch/SKILL.md +18 -0
- package/skeleton/.codex/skills/afx/SKILL.md +15 -0
- package/skeleton/.codex/skills/arch-init/SKILL.md +56 -9
- package/skeleton/.codex/skills/arch-save/SKILL.md +100 -9
- package/skeleton/.codex/skills/consult/SKILL.md +9 -0
- package/skeleton/.codex/skills/porch/SKILL.md +18 -0
- package/skeleton/protocol-schema.json +6 -0
- package/skeleton/protocols/maintain/protocol.md +5 -0
- package/skeleton/protocols/pir/prompts/review.md +0 -1
- package/skeleton/protocols/protocol-schema.json +6 -0
- package/skeleton/resources/commands/agent-farm.md +44 -0
- package/skeleton/resources/commands/consult.md +9 -2
- package/skeleton/templates/cheatsheet.md +1 -1
- package/dashboard-dist/assets/index-DZf6pNPE.js +0 -199
- package/dashboard-dist/assets/index-DZf6pNPE.js.map +0 -1
- package/dashboard-dist/assets/index-DnYLy5C_.css +0 -32
|
@@ -133,6 +133,12 @@
|
|
|
133
133
|
"type": "string",
|
|
134
134
|
"description": "Command to run"
|
|
135
135
|
},
|
|
136
|
+
"timeout_ms": {
|
|
137
|
+
"type": "integer",
|
|
138
|
+
"minimum": 1,
|
|
139
|
+
"maximum": 2147483647,
|
|
140
|
+
"description": "Kill the check after this many milliseconds (default: 300000, i.e. 5 minutes)"
|
|
141
|
+
},
|
|
136
142
|
"on_fail": {
|
|
137
143
|
"type": "string",
|
|
138
144
|
"description": "Action on failure: 'retry' or phase name to return to"
|
|
@@ -932,6 +932,50 @@ afx spawn 42 --protocol spir --builder-cmd "claude --model haiku"
|
|
|
932
932
|
|
|
933
933
|
Both are Tower-global (they apply to the whole Tower, not per-project) and optional — omit them to use the defaults above.
|
|
934
934
|
|
|
935
|
+
### Decisions tab
|
|
936
|
+
|
|
937
|
+
When a workspace has a pending-decisions file, the dashboard shows a **Decisions** tab (Spec 1819). The tab is a view of that file. Each item under `## Open` becomes a card with a click box per option (the first option, the recommended one, is marked) and a comment box. Submitting writes the chosen word, then the comment, on the lines right after the item's `**Your word:**` line, exactly as the owner would type them, and changes nothing else. `## Ruled` is shown below as a collapsed, read-only list. The file is the only state. While the tab is open it re-reads the file every 2 seconds, so edits made elsewhere appear without a reload, and an unsent draft survives them.
|
|
938
|
+
|
|
939
|
+
The file is `codev/state/pending-decisions.md` unless `dashboard.decisionsFile` names another:
|
|
940
|
+
|
|
941
|
+
```json
|
|
942
|
+
{
|
|
943
|
+
"dashboard": {
|
|
944
|
+
"decisionsFile": "codev/state/pending-decisions.md"
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
```
|
|
948
|
+
|
|
949
|
+
- **Relative to the workspace root.** An absolute path, or anything but a non-empty string, is a configuration error: the tab does not appear, and Tower logs the error once.
|
|
950
|
+
- **Inside the workspace.** The path is resolved with symlinks followed on every read and write, and a path that leads outside the workspace (directly, through `..`, or through a symlink) is refused. A symlinked decisions file keeps its link: the ruling is written to its in-workspace target.
|
|
951
|
+
- **Layers.** Like the other settings, it can be set globally in `~/.codev/config.json`, for the team in the project's `.codev/config.json`, or per engineer in `.codev/config.local.json`. Project settings override global ones, and project-local settings override both.
|
|
952
|
+
|
|
953
|
+
The tab appears once the file exists (within about 5 seconds of a change to the setting), and then stays for the page session: if the file is deleted while the tab is open, the tab says so and keeps any unsent draft. A reload of a workspace without the file shows no tab. A submit is refused, with a message on the card and the draft kept, when the item has changed or been ruled since the tab showed it. Tower applies one write to a file at a time and replaces the file atomically (a temporary file renamed over it).
|
|
954
|
+
|
|
955
|
+
After each ruling is written, Tower tells the workspace's hub architect, the one named `main`, in one mailbox message delivered like an `afx send architect`: `RULED <id>: <word>`, or `QUESTION <id>:` for a comment-only submit, with the comment on the lines after it, under a `[USER via Decisions tab]` header. Like any message it waits for a clear prompt, and it waits for `main` to come back if `main` is not running. A workspace with no architect named `main` gets no notice: Tower logs a warning naming the workspace and does not pick another architect. A failed send is logged and leaves the ruling as written: the file is still the source of truth, and a ruling typed into the file by hand reaches the hub only when it scans the file.
|
|
956
|
+
|
|
957
|
+
### Porch check overrides
|
|
958
|
+
|
|
959
|
+
Protocol checks default to the npm toolchain (`npm run build`, `npm test`). Override them per check name under `porch.checks` instead of forking `protocol.json`:
|
|
960
|
+
|
|
961
|
+
```json
|
|
962
|
+
{
|
|
963
|
+
"porch": {
|
|
964
|
+
"checks": {
|
|
965
|
+
"build": { "command": "cargo build" },
|
|
966
|
+
"tests": { "command": "cargo test", "timeout_ms": 900000 },
|
|
967
|
+
"e2e_tests": { "skip": true }
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
**Override fields:**
|
|
974
|
+
- `command` — Replace the protocol's check command with a custom shell command
|
|
975
|
+
- `cwd` — Override the working directory for this check (relative to project root)
|
|
976
|
+
- `timeout_ms` — Kill the check after this many milliseconds (default 5 minutes; a protocol.json check can set it too). On timeout porch kills the check's whole process tree
|
|
977
|
+
- `skip: true` — Omit this check entirely (for checks that don't apply to your project)
|
|
978
|
+
|
|
935
979
|
---
|
|
936
980
|
|
|
937
981
|
## Files
|
|
@@ -366,8 +366,8 @@ agy # run once and sign in (OAuth / Google subscription)
|
|
|
366
366
|
```
|
|
367
367
|
|
|
368
368
|
Configure auth:
|
|
369
|
-
- Claude: `ANTHROPIC_API_KEY`
|
|
370
|
-
- Codex: `OPENAI_API_KEY`
|
|
369
|
+
- Claude: the stored `claude` login, or `CLAUDE_CODE_OAUTH_TOKEN` / `ANTHROPIC_API_KEY`
|
|
370
|
+
- Codex: the stored `codex login`, or `CODEX_API_KEY` (codex ignores `OPENAI_API_KEY`)
|
|
371
371
|
- Gemini (`agy`): **OAuth / subscription** — run `agy` once and sign in (no API key). If `agy`
|
|
372
372
|
is missing or unauthenticated, the gemini lane skips non-blockingly (the run proceeds without it).
|
|
373
373
|
|
|
@@ -434,6 +434,13 @@ The Agent SDK otherwise prioritizes `ANTHROPIC_API_KEY`, which silently routes
|
|
|
434
434
|
CMAP/review traffic to the metered API (issue #985). When no OAuth token is set,
|
|
435
435
|
the API key is used as before so CI / key-only environments keep working.
|
|
436
436
|
|
|
437
|
+
**Workspace `.env` (issue #1754).** `consult` loads `<workspace>/.env` and sets every key the
|
|
438
|
+
shell does not already define, credentials included. So a `CLAUDE_CODE_OAUTH_TOKEN` there
|
|
439
|
+
overrides your stored login and, via the strip above, displaces the API key too; `CODEX_API_KEY`
|
|
440
|
+
does the same for codex. Each SDK lane logs what it authenticates with, e.g.
|
|
441
|
+
`[CLAUDE] auth: CLAUDE_CODE_OAUTH_TOKEN (from .env)`. A result the SDK flags as an error (usage
|
|
442
|
+
limit, billing, auth) fails the run with no output file, and the error names that credential.
|
|
443
|
+
|
|
437
444
|
> **Caveat:** dedicated Agent-SDK subscription credit starts **2026-06-15**.
|
|
438
445
|
> Before that date, subscription auth draws from the interactive Max quota.
|
|
439
446
|
|
|
@@ -61,7 +61,7 @@ A **protocol** is a structured workflow that defines how work progresses from id
|
|
|
61
61
|
| Protocol | Use For | Phases |
|
|
62
62
|
|----------|---------|--------|
|
|
63
63
|
| **SPIR** | New features | Specify → Plan → Implement → Review |
|
|
64
|
-
| **MAINTAIN** |
|
|
64
|
+
| **MAINTAIN** | Scheduled codebase hygiene | Whole-repo audit → clean → sync run since the last one, on the human's call. Not for a single targeted cleanup or doc fix (that is a BUGFIX) |
|
|
65
65
|
| **EXPERIMENT** | Research & prototyping | Hypothesis → Experiment → Conclude |
|
|
66
66
|
| **RESEARCH** | Multi-agent research | Scope → Investigate (3-way) → Synthesize → Critique (3-way) |
|
|
67
67
|
|