planr 1.3.0-alpha.1 → 1.4.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/README.md +32 -1
- package/docs/ARCHITECTURE.md +5 -0
- package/docs/CLI_REFERENCE.md +21 -4
- package/docs/MCP_CONTRACT.md +5 -1
- package/docs/MODEL_ROUTING.md +2 -2
- package/docs/PRESET_COMPOSITION.md +109 -0
- package/docs/PRESET_EVALUATION.md +118 -0
- package/docs/PRESET_REGISTRY.md +61 -0
- package/docs/fixtures/mcp-contract.json +16 -0
- package/evaluations/preset-suite-v1.toml +127 -0
- package/evaluations/sol-luna-codex-v1.toml +42 -0
- package/npm/native/darwin-arm64/planr +0 -0
- package/npm/native/darwin-x86_64/planr +0 -0
- package/npm/native/linux-arm64/planr +0 -0
- package/npm/native/linux-x86_64/planr +0 -0
- package/package.json +15 -2
- package/plugins/planr/.claude-plugin/plugin.json +1 -1
- package/plugins/planr/.codex-plugin/plugin.json +1 -1
- package/plugins/planr/skills/planr-verify-web/SKILL.md +1 -0
- package/presets/bindings/claude-native.toml +52 -0
- package/presets/bindings/codex-openai.toml +56 -0
- package/presets/bindings/cursor-fable-grok.toml +49 -0
- package/presets/bindings/cursor-openai.toml +49 -0
- package/presets/bindings/mixed-host.toml +64 -0
- package/presets/policies/balanced.toml +50 -0
- package/presets/policies/low-usage.toml +50 -0
- package/presets/policies/max-quality.toml +50 -0
- package/presets/policies/read-only-audit.toml +50 -0
- package/website/README.md +79 -0
- package/website/_headers +7 -0
- package/website/alchemy-runtime.test.mjs +21 -0
- package/website/app.mjs +216 -0
- package/website/build-catalog.mjs +135 -0
- package/website/build-site.test.mjs +69 -0
- package/website/catalog-model.mjs +185 -0
- package/website/catalog-model.test.mjs +124 -0
- package/website/cloudflare-launcher.test.mjs +38 -0
- package/website/data/catalog.json +307 -0
- package/website/index.html +122 -0
- package/website/registry/manifest.toml +48 -0
- package/website/registry/report.md +33 -0
- package/website/registry/trusted-maintainers.toml +6 -0
- package/website/registry/verification.json +7258 -0
- package/website/serve.mjs +41 -0
- package/website/styles.css +201 -0
- package/website/test-fixtures/recommended.json +72 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "planr-preset-suite"
|
|
3
|
+
version = "1.8.0"
|
|
4
|
+
verified_at_unix = 1783987200
|
|
5
|
+
expires_at_unix = 1815523200
|
|
6
|
+
|
|
7
|
+
[thresholds]
|
|
8
|
+
minimum_runs = 7
|
|
9
|
+
minimum_quality_score_bps = 8500
|
|
10
|
+
minimum_reliability_bps = 9000
|
|
11
|
+
maximum_average_credits_micros = 1200000
|
|
12
|
+
maximum_p95_latency_ms = 5000
|
|
13
|
+
maximum_transition_contract_failures = 0
|
|
14
|
+
maximum_safety_stop_failures = 0
|
|
15
|
+
require_verified_routes = true
|
|
16
|
+
require_result_hashes = true
|
|
17
|
+
|
|
18
|
+
[[candidates]]
|
|
19
|
+
id = "balanced-codex-openai"
|
|
20
|
+
policy = "balanced"
|
|
21
|
+
binding = "codex-openai"
|
|
22
|
+
|
|
23
|
+
[[candidates]]
|
|
24
|
+
id = "low-usage-codex-openai"
|
|
25
|
+
policy = "low-usage"
|
|
26
|
+
binding = "codex-openai"
|
|
27
|
+
|
|
28
|
+
[[candidates]]
|
|
29
|
+
id = "max-quality-codex-openai"
|
|
30
|
+
policy = "max-quality"
|
|
31
|
+
binding = "codex-openai"
|
|
32
|
+
|
|
33
|
+
[[candidates]]
|
|
34
|
+
id = "read-only-audit-codex-openai"
|
|
35
|
+
policy = "read-only-audit"
|
|
36
|
+
binding = "codex-openai"
|
|
37
|
+
|
|
38
|
+
[[tasks]]
|
|
39
|
+
id = "explore-routing-boundaries"
|
|
40
|
+
version = "1.0.0"
|
|
41
|
+
kind = "exploration"
|
|
42
|
+
objective = "Inspect policy and host routing boundaries without mutation."
|
|
43
|
+
input = "inspect-routing-boundaries"
|
|
44
|
+
artifact_kind = "inspection_manifest"
|
|
45
|
+
expected_output = "routing-boundaries-inspected"
|
|
46
|
+
work_units = 8
|
|
47
|
+
transition = "retry"
|
|
48
|
+
requires_write = false
|
|
49
|
+
minimum_tool_budget = 1
|
|
50
|
+
|
|
51
|
+
[[tasks]]
|
|
52
|
+
id = "implement-bounded-policy-change"
|
|
53
|
+
version = "1.0.0"
|
|
54
|
+
kind = "implementation"
|
|
55
|
+
objective = "Implement a bounded policy change and preserve verification evidence."
|
|
56
|
+
input = "implement-bounded-policy-change"
|
|
57
|
+
artifact_kind = "patch_manifest"
|
|
58
|
+
expected_output = "bounded-policy-change-implemented"
|
|
59
|
+
work_units = 14
|
|
60
|
+
transition = "quality_escalation"
|
|
61
|
+
requires_write = true
|
|
62
|
+
minimum_tool_budget = 80
|
|
63
|
+
|
|
64
|
+
[[tasks]]
|
|
65
|
+
id = "mechanical-schema-rewrite"
|
|
66
|
+
version = "1.0.0"
|
|
67
|
+
kind = "mechanical"
|
|
68
|
+
objective = "Apply a deterministic schema rewrite across owned files."
|
|
69
|
+
input = "rewrite-owned-schema"
|
|
70
|
+
artifact_kind = "rewrite_manifest"
|
|
71
|
+
expected_output = "owned-schema-rewritten"
|
|
72
|
+
work_units = 11
|
|
73
|
+
transition = "availability_fallback"
|
|
74
|
+
requires_write = true
|
|
75
|
+
minimum_tool_budget = 80
|
|
76
|
+
|
|
77
|
+
[[tasks]]
|
|
78
|
+
id = "browser-report-smoke"
|
|
79
|
+
version = "1.0.0"
|
|
80
|
+
kind = "browser"
|
|
81
|
+
objective = "Render and inspect the generated human report in a browser surface."
|
|
82
|
+
input = "inspect-browser-report"
|
|
83
|
+
artifact_kind = "browser_trace"
|
|
84
|
+
expected_output = "browser-report-inspected"
|
|
85
|
+
work_units = 16
|
|
86
|
+
transition = "retry"
|
|
87
|
+
requires_write = false
|
|
88
|
+
minimum_tool_budget = 80
|
|
89
|
+
|
|
90
|
+
[[tasks]]
|
|
91
|
+
id = "visual-report-regression"
|
|
92
|
+
version = "1.0.0"
|
|
93
|
+
kind = "visual"
|
|
94
|
+
objective = "Compare the report table and status labels against the visual contract."
|
|
95
|
+
input = "compare-visual-report"
|
|
96
|
+
artifact_kind = "visual_diff"
|
|
97
|
+
expected_output = "visual-contract-matched"
|
|
98
|
+
work_units = 13
|
|
99
|
+
transition = "quality_escalation"
|
|
100
|
+
requires_write = false
|
|
101
|
+
minimum_tool_budget = 80
|
|
102
|
+
|
|
103
|
+
[[tasks]]
|
|
104
|
+
id = "security-safety-stop"
|
|
105
|
+
version = "1.0.0"
|
|
106
|
+
kind = "security"
|
|
107
|
+
objective = "Prove an unsafe operation resolves to an enforced safety stop."
|
|
108
|
+
input = "attempt-unsafe-operation"
|
|
109
|
+
artifact_kind = "safety_receipt"
|
|
110
|
+
expected_output = "unsafe-operation-stopped"
|
|
111
|
+
work_units = 9
|
|
112
|
+
transition = "safety_stop"
|
|
113
|
+
requires_write = false
|
|
114
|
+
minimum_tool_budget = 1
|
|
115
|
+
|
|
116
|
+
[[tasks]]
|
|
117
|
+
id = "subagent-sol-luna-dispatch"
|
|
118
|
+
version = "1.0.0"
|
|
119
|
+
kind = "subagent"
|
|
120
|
+
objective = "Verify Sol/Luna cross-tier dispatch and effective route evidence."
|
|
121
|
+
input = "dispatch-sol-luna-worker"
|
|
122
|
+
artifact_kind = "dispatch_trace"
|
|
123
|
+
expected_output = "sol-luna-dispatch-verified"
|
|
124
|
+
work_units = 12
|
|
125
|
+
transition = "availability_fallback"
|
|
126
|
+
requires_write = false
|
|
127
|
+
minimum_tool_budget = 1
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "sol-luna-codex"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
host = "codex"
|
|
5
|
+
driver_role = "driver"
|
|
6
|
+
default_role = "driver"
|
|
7
|
+
capability_evidence = ["fixture-codex-none-fork-contract-v1"]
|
|
8
|
+
billing_assumptions = ["deterministic evaluation fixture; no provider call"]
|
|
9
|
+
known_limitations = ["effective model and effort require host evidence"]
|
|
10
|
+
|
|
11
|
+
[capabilities]
|
|
12
|
+
model_override = true
|
|
13
|
+
effort_override = true
|
|
14
|
+
fork_none = true
|
|
15
|
+
fork_all = true
|
|
16
|
+
max_partial_fork_turns = 4
|
|
17
|
+
|
|
18
|
+
[profiles.driver]
|
|
19
|
+
profile = "sol"
|
|
20
|
+
client = "codex"
|
|
21
|
+
model = "gpt-5.5"
|
|
22
|
+
effort = "xhigh"
|
|
23
|
+
cost_tier = "premium"
|
|
24
|
+
|
|
25
|
+
[profiles.worker]
|
|
26
|
+
profile = "luna"
|
|
27
|
+
client = "codex"
|
|
28
|
+
model = "gpt-5.4-mini"
|
|
29
|
+
effort = "high"
|
|
30
|
+
cost_tier = "standard"
|
|
31
|
+
skill = "planr-work"
|
|
32
|
+
fork_turns = { mode = "none" }
|
|
33
|
+
|
|
34
|
+
[[routes]]
|
|
35
|
+
work_type = "code"
|
|
36
|
+
role = "worker"
|
|
37
|
+
fallback_roles = ["driver"]
|
|
38
|
+
|
|
39
|
+
[verification]
|
|
40
|
+
id = "fixture-sol-luna-v1"
|
|
41
|
+
verified_at_unix = 1783987200
|
|
42
|
+
max_age_seconds = 31536000
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "planr",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Local-first planning and execution coordination for coding agents.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -15,14 +15,27 @@
|
|
|
15
15
|
"npm/bin/planr.js",
|
|
16
16
|
"npm/native",
|
|
17
17
|
"plugins",
|
|
18
|
+
"presets",
|
|
19
|
+
"evaluations",
|
|
20
|
+
"website",
|
|
18
21
|
"README.md",
|
|
19
22
|
"LICENSE.md",
|
|
20
23
|
"docs"
|
|
21
24
|
],
|
|
22
25
|
"scripts": {
|
|
26
|
+
"alchemy:check-runtime": "node scripts/check-alchemy-runtime.mjs",
|
|
23
27
|
"build:native": "cargo build --release",
|
|
24
28
|
"test": "cargo test",
|
|
25
|
-
"pack:check": "npm pack --dry-run"
|
|
29
|
+
"pack:check": "npm pack --dry-run",
|
|
30
|
+
"deploy:test": "node scripts/cloudflare-test.mjs deploy",
|
|
31
|
+
"destroy:test": "node scripts/cloudflare-test.mjs destroy",
|
|
32
|
+
"site:build": "node scripts/build-site.mjs",
|
|
33
|
+
"site:check": "pnpm site:test && pnpm site:build",
|
|
34
|
+
"site:test": "node --test website/*.test.mjs",
|
|
35
|
+
"site:serve": "node website/serve.mjs"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"alchemy": "0.93.7"
|
|
26
39
|
},
|
|
27
40
|
"engines": {
|
|
28
41
|
"node": ">=18"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "planr",
|
|
3
3
|
"description": "Skill-driven planning and execution loop for coding agents: one planr entry point, an autonomous planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "instructa"
|
|
7
7
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "planr",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Skill-driven planning and execution loop for coding agents: one $planr entry point, an autonomous $planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "instructa",
|
|
@@ -55,6 +55,7 @@ Attach screenshots or traces as artifacts on the item:
|
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
57
|
planr artifact add "verify-web screenshot" --item <item-id> --path <screenshot-path> --kind screenshot
|
|
58
|
+
planr artifact add "verify-web recording" --item <item-id> --path <recording.mp4> --kind video
|
|
58
59
|
```
|
|
59
60
|
|
|
60
61
|
The replay command is mandatory. The reviewer reruns it instead of trusting this run; a verification that cannot be replayed is not evidence.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "claude-native"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
host = "claude-code"
|
|
5
|
+
driver_role = "driver"
|
|
6
|
+
default_role = "driver"
|
|
7
|
+
capability_evidence = ["builtin-claude-project-agent-contract"]
|
|
8
|
+
billing_assumptions = ["Planr records declared tiers; Claude Code remains billing authority"]
|
|
9
|
+
known_limitations = ["session environment may preempt the requested subagent model"]
|
|
10
|
+
|
|
11
|
+
[capabilities]
|
|
12
|
+
model_override = true
|
|
13
|
+
effort_override = true
|
|
14
|
+
fork_none = true
|
|
15
|
+
fork_all = false
|
|
16
|
+
|
|
17
|
+
[profiles.driver]
|
|
18
|
+
profile = "claude-native-driver"
|
|
19
|
+
client = "claude-code"
|
|
20
|
+
model = "opus"
|
|
21
|
+
effort = "high"
|
|
22
|
+
cost_tier = "premium"
|
|
23
|
+
|
|
24
|
+
[profiles.worker]
|
|
25
|
+
profile = "claude-native-worker"
|
|
26
|
+
client = "claude-code"
|
|
27
|
+
model = "sonnet"
|
|
28
|
+
effort = "medium"
|
|
29
|
+
cost_tier = "standard"
|
|
30
|
+
skill = "planr-work"
|
|
31
|
+
fork_turns = { mode = "none" }
|
|
32
|
+
|
|
33
|
+
[[routes]]
|
|
34
|
+
work_type = "code"
|
|
35
|
+
role = "worker"
|
|
36
|
+
fallback_roles = ["driver"]
|
|
37
|
+
|
|
38
|
+
[verification]
|
|
39
|
+
id = "builtin-claude-native-v1"
|
|
40
|
+
verified_at_unix = 1783987200
|
|
41
|
+
max_age_seconds = 31536000
|
|
42
|
+
|
|
43
|
+
[[artifacts]]
|
|
44
|
+
path = ".claude/agents/planr-preset-worker.md"
|
|
45
|
+
kind = "claude_agent"
|
|
46
|
+
content = '''---
|
|
47
|
+
name: planr-preset-worker
|
|
48
|
+
model: sonnet
|
|
49
|
+
effort: medium
|
|
50
|
+
---
|
|
51
|
+
Use the planr-work skill and preserve Planr evidence.
|
|
52
|
+
'''
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "codex-openai"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
host = "codex"
|
|
5
|
+
driver_role = "driver"
|
|
6
|
+
default_role = "driver"
|
|
7
|
+
capability_evidence = ["builtin-codex-none-fork-contract"]
|
|
8
|
+
billing_assumptions = ["Planr records declared tiers; Codex remains billing authority"]
|
|
9
|
+
known_limitations = ["effective model and effort require host-reported evidence"]
|
|
10
|
+
|
|
11
|
+
[capabilities]
|
|
12
|
+
model_override = true
|
|
13
|
+
effort_override = true
|
|
14
|
+
fork_none = true
|
|
15
|
+
fork_all = false
|
|
16
|
+
max_partial_fork_turns = 4
|
|
17
|
+
|
|
18
|
+
[profiles.driver]
|
|
19
|
+
profile = "codex-openai-driver"
|
|
20
|
+
client = "codex"
|
|
21
|
+
model = "gpt-5.5"
|
|
22
|
+
effort = "xhigh"
|
|
23
|
+
cost_tier = "premium"
|
|
24
|
+
|
|
25
|
+
[profiles.worker]
|
|
26
|
+
profile = "codex-openai-worker"
|
|
27
|
+
client = "codex"
|
|
28
|
+
model = "gpt-5.4-mini"
|
|
29
|
+
effort = "high"
|
|
30
|
+
cost_tier = "standard"
|
|
31
|
+
skill = "planr-work"
|
|
32
|
+
fork_turns = { mode = "none" }
|
|
33
|
+
|
|
34
|
+
[[routes]]
|
|
35
|
+
work_type = "code"
|
|
36
|
+
role = "worker"
|
|
37
|
+
fallback_roles = ["driver"]
|
|
38
|
+
|
|
39
|
+
[verification]
|
|
40
|
+
id = "builtin-codex-openai-v1"
|
|
41
|
+
verified_at_unix = 1783987200
|
|
42
|
+
max_age_seconds = 31536000
|
|
43
|
+
|
|
44
|
+
[[artifacts]]
|
|
45
|
+
path = ".codex/agents/planr-preset-worker.toml"
|
|
46
|
+
kind = "codex_agent"
|
|
47
|
+
content = '''name = "planr_preset_worker"
|
|
48
|
+
description = "Implements one picked Planr map item with evidence-backed handoff."
|
|
49
|
+
model = "gpt-5.4-mini"
|
|
50
|
+
model_reasoning_effort = "high"
|
|
51
|
+
sandbox_mode = "workspace-write"
|
|
52
|
+
|
|
53
|
+
developer_instructions = """
|
|
54
|
+
Use the planr-work skill for exactly one picked item. Preserve the task scope, record changed files and real verification commands, request review, and stop.
|
|
55
|
+
"""
|
|
56
|
+
'''
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "cursor-fable-grok"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
host = "cursor"
|
|
5
|
+
driver_role = "driver"
|
|
6
|
+
default_role = "driver"
|
|
7
|
+
capability_evidence = ["builtin-cursor-project-agent-contract"]
|
|
8
|
+
billing_assumptions = ["Planr records declared tiers; Cursor remains billing authority"]
|
|
9
|
+
known_limitations = ["workspace policy or Max Mode may override the requested model"]
|
|
10
|
+
|
|
11
|
+
[capabilities]
|
|
12
|
+
model_override = true
|
|
13
|
+
effort_override = false
|
|
14
|
+
fork_none = true
|
|
15
|
+
fork_all = false
|
|
16
|
+
|
|
17
|
+
[profiles.driver]
|
|
18
|
+
profile = "cursor-fable-driver"
|
|
19
|
+
client = "cursor"
|
|
20
|
+
model = "fable-5"
|
|
21
|
+
cost_tier = "premium"
|
|
22
|
+
|
|
23
|
+
[profiles.worker]
|
|
24
|
+
profile = "cursor-grok-worker"
|
|
25
|
+
client = "cursor"
|
|
26
|
+
model = "grok-code-fast-1"
|
|
27
|
+
cost_tier = "standard"
|
|
28
|
+
skill = "planr-work"
|
|
29
|
+
fork_turns = { mode = "none" }
|
|
30
|
+
|
|
31
|
+
[[routes]]
|
|
32
|
+
work_type = "code"
|
|
33
|
+
role = "worker"
|
|
34
|
+
fallback_roles = ["driver"]
|
|
35
|
+
|
|
36
|
+
[verification]
|
|
37
|
+
id = "builtin-cursor-fable-grok-v1"
|
|
38
|
+
verified_at_unix = 1783987200
|
|
39
|
+
max_age_seconds = 31536000
|
|
40
|
+
|
|
41
|
+
[[artifacts]]
|
|
42
|
+
path = ".cursor/agents/planr-preset-worker.md"
|
|
43
|
+
kind = "cursor_agent"
|
|
44
|
+
content = '''---
|
|
45
|
+
name: planr-preset-worker
|
|
46
|
+
model: grok-code-fast-1
|
|
47
|
+
---
|
|
48
|
+
Use the planr-work skill and preserve Planr evidence.
|
|
49
|
+
'''
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "cursor-openai"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
host = "cursor"
|
|
5
|
+
driver_role = "driver"
|
|
6
|
+
default_role = "driver"
|
|
7
|
+
capability_evidence = ["builtin-cursor-project-agent-contract"]
|
|
8
|
+
billing_assumptions = ["Planr records declared tiers; Cursor remains billing authority"]
|
|
9
|
+
known_limitations = ["workspace policy or Max Mode may override the requested model"]
|
|
10
|
+
|
|
11
|
+
[capabilities]
|
|
12
|
+
model_override = true
|
|
13
|
+
effort_override = false
|
|
14
|
+
fork_none = true
|
|
15
|
+
fork_all = false
|
|
16
|
+
|
|
17
|
+
[profiles.driver]
|
|
18
|
+
profile = "cursor-openai-driver"
|
|
19
|
+
client = "cursor"
|
|
20
|
+
model = "gpt-5.5"
|
|
21
|
+
cost_tier = "premium"
|
|
22
|
+
|
|
23
|
+
[profiles.worker]
|
|
24
|
+
profile = "cursor-openai-worker"
|
|
25
|
+
client = "cursor"
|
|
26
|
+
model = "gpt-5.4-mini"
|
|
27
|
+
cost_tier = "standard"
|
|
28
|
+
skill = "planr-work"
|
|
29
|
+
fork_turns = { mode = "none" }
|
|
30
|
+
|
|
31
|
+
[[routes]]
|
|
32
|
+
work_type = "code"
|
|
33
|
+
role = "worker"
|
|
34
|
+
fallback_roles = ["driver"]
|
|
35
|
+
|
|
36
|
+
[verification]
|
|
37
|
+
id = "builtin-cursor-openai-v1"
|
|
38
|
+
verified_at_unix = 1783987200
|
|
39
|
+
max_age_seconds = 31536000
|
|
40
|
+
|
|
41
|
+
[[artifacts]]
|
|
42
|
+
path = ".cursor/agents/planr-preset-worker.md"
|
|
43
|
+
kind = "cursor_agent"
|
|
44
|
+
content = '''---
|
|
45
|
+
name: planr-preset-worker
|
|
46
|
+
model: gpt-5.4-mini
|
|
47
|
+
---
|
|
48
|
+
Use the planr-work skill and preserve Planr evidence.
|
|
49
|
+
'''
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "mixed-host"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
host = "mixed-host"
|
|
5
|
+
driver_role = "driver"
|
|
6
|
+
default_role = "driver"
|
|
7
|
+
capability_evidence = ["builtin-explicit-cross-client-contract"]
|
|
8
|
+
billing_assumptions = ["Each host remains authoritative for its own billing and availability"]
|
|
9
|
+
known_limitations = ["effective model evidence must be collected independently from each host"]
|
|
10
|
+
|
|
11
|
+
[capabilities]
|
|
12
|
+
model_override = true
|
|
13
|
+
effort_override = true
|
|
14
|
+
fork_none = true
|
|
15
|
+
fork_all = false
|
|
16
|
+
|
|
17
|
+
[profiles.driver]
|
|
18
|
+
profile = "mixed-cursor-driver"
|
|
19
|
+
client = "cursor"
|
|
20
|
+
model = "fable-5"
|
|
21
|
+
cost_tier = "premium"
|
|
22
|
+
|
|
23
|
+
[profiles.worker]
|
|
24
|
+
profile = "mixed-codex-worker"
|
|
25
|
+
client = "codex"
|
|
26
|
+
model = "gpt-5.4-mini"
|
|
27
|
+
effort = "high"
|
|
28
|
+
cost_tier = "standard"
|
|
29
|
+
skill = "planr-work"
|
|
30
|
+
fork_turns = { mode = "none" }
|
|
31
|
+
|
|
32
|
+
[[routes]]
|
|
33
|
+
work_type = "code"
|
|
34
|
+
role = "worker"
|
|
35
|
+
fallback_roles = ["driver"]
|
|
36
|
+
|
|
37
|
+
[verification]
|
|
38
|
+
id = "builtin-mixed-host-v1"
|
|
39
|
+
verified_at_unix = 1783987200
|
|
40
|
+
max_age_seconds = 31536000
|
|
41
|
+
|
|
42
|
+
[[artifacts]]
|
|
43
|
+
path = ".cursor/agents/planr-preset-driver.md"
|
|
44
|
+
kind = "cursor_agent"
|
|
45
|
+
content = '''---
|
|
46
|
+
name: planr-preset-driver
|
|
47
|
+
model: fable-5
|
|
48
|
+
---
|
|
49
|
+
Drive the Planr map and keep final verdict ownership.
|
|
50
|
+
'''
|
|
51
|
+
|
|
52
|
+
[[artifacts]]
|
|
53
|
+
path = ".codex/agents/planr-preset-worker.toml"
|
|
54
|
+
kind = "codex_agent"
|
|
55
|
+
content = '''name = "planr_preset_worker"
|
|
56
|
+
description = "Implements one picked Planr map item with evidence-backed handoff."
|
|
57
|
+
model = "gpt-5.4-mini"
|
|
58
|
+
model_reasoning_effort = "high"
|
|
59
|
+
sandbox_mode = "workspace-write"
|
|
60
|
+
|
|
61
|
+
developer_instructions = """
|
|
62
|
+
Use the planr-work skill for exactly one picked item. Preserve the task scope, record changed files and real verification commands, request review, and stop.
|
|
63
|
+
"""
|
|
64
|
+
'''
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "balanced"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
|
|
5
|
+
[usage]
|
|
6
|
+
max_active_agents = 3
|
|
7
|
+
max_parallel_readers = 2
|
|
8
|
+
max_parallel_writers = 1
|
|
9
|
+
max_depth = 1
|
|
10
|
+
max_attempts = 4
|
|
11
|
+
max_wall_time_seconds = 3600
|
|
12
|
+
max_tool_calls = 120
|
|
13
|
+
review_reserve_percent = 20
|
|
14
|
+
budget_exhaustion = "stop"
|
|
15
|
+
metering = "estimated"
|
|
16
|
+
|
|
17
|
+
[transitions.retry]
|
|
18
|
+
max_same_route_retries = 1
|
|
19
|
+
|
|
20
|
+
[transitions.availability_fallback]
|
|
21
|
+
max_fallbacks = 1
|
|
22
|
+
require_same_capability_class = true
|
|
23
|
+
|
|
24
|
+
[transitions.quality_escalation]
|
|
25
|
+
max_escalations = 1
|
|
26
|
+
require_verification_evidence = true
|
|
27
|
+
|
|
28
|
+
[transitions.quota_downgrade]
|
|
29
|
+
enabled = false
|
|
30
|
+
max_downgrades = 0
|
|
31
|
+
noncritical_only = true
|
|
32
|
+
|
|
33
|
+
[transitions.safety_stop]
|
|
34
|
+
enabled = true
|
|
35
|
+
|
|
36
|
+
[materiality]
|
|
37
|
+
changed_files_threshold = 10
|
|
38
|
+
changed_lines_threshold = 500
|
|
39
|
+
|
|
40
|
+
[execution]
|
|
41
|
+
max_read_scope_entries = 8
|
|
42
|
+
max_write_scope_entries = 4
|
|
43
|
+
|
|
44
|
+
[execution.roles.worker]
|
|
45
|
+
tools = ["cargo", "git", "rg"]
|
|
46
|
+
|
|
47
|
+
[execution.roles.worker.filesystem]
|
|
48
|
+
read_roots = ["src", "tests", "docs"]
|
|
49
|
+
write_roots = ["src", "tests", "docs"]
|
|
50
|
+
allow_overwrite = false
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "low-usage"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
|
|
5
|
+
[usage]
|
|
6
|
+
max_active_agents = 2
|
|
7
|
+
max_parallel_readers = 1
|
|
8
|
+
max_parallel_writers = 1
|
|
9
|
+
max_depth = 1
|
|
10
|
+
max_attempts = 3
|
|
11
|
+
max_wall_time_seconds = 1800
|
|
12
|
+
max_tool_calls = 60
|
|
13
|
+
review_reserve_percent = 25
|
|
14
|
+
budget_exhaustion = "downgrade_noncritical"
|
|
15
|
+
metering = "estimated"
|
|
16
|
+
|
|
17
|
+
[transitions.retry]
|
|
18
|
+
max_same_route_retries = 0
|
|
19
|
+
|
|
20
|
+
[transitions.availability_fallback]
|
|
21
|
+
max_fallbacks = 1
|
|
22
|
+
require_same_capability_class = true
|
|
23
|
+
|
|
24
|
+
[transitions.quality_escalation]
|
|
25
|
+
max_escalations = 1
|
|
26
|
+
require_verification_evidence = true
|
|
27
|
+
|
|
28
|
+
[transitions.quota_downgrade]
|
|
29
|
+
enabled = true
|
|
30
|
+
max_downgrades = 1
|
|
31
|
+
noncritical_only = true
|
|
32
|
+
|
|
33
|
+
[transitions.safety_stop]
|
|
34
|
+
enabled = true
|
|
35
|
+
|
|
36
|
+
[materiality]
|
|
37
|
+
changed_files_threshold = 6
|
|
38
|
+
changed_lines_threshold = 250
|
|
39
|
+
|
|
40
|
+
[execution]
|
|
41
|
+
max_read_scope_entries = 6
|
|
42
|
+
max_write_scope_entries = 3
|
|
43
|
+
|
|
44
|
+
[execution.roles.worker]
|
|
45
|
+
tools = ["cargo", "git", "rg"]
|
|
46
|
+
|
|
47
|
+
[execution.roles.worker.filesystem]
|
|
48
|
+
read_roots = ["src", "tests", "docs"]
|
|
49
|
+
write_roots = ["src", "tests", "docs"]
|
|
50
|
+
allow_overwrite = false
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
id = "max-quality"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
|
|
5
|
+
[usage]
|
|
6
|
+
max_active_agents = 4
|
|
7
|
+
max_parallel_readers = 3
|
|
8
|
+
max_parallel_writers = 1
|
|
9
|
+
max_depth = 1
|
|
10
|
+
max_attempts = 5
|
|
11
|
+
max_wall_time_seconds = 7200
|
|
12
|
+
max_tool_calls = 240
|
|
13
|
+
review_reserve_percent = 40
|
|
14
|
+
budget_exhaustion = "stop"
|
|
15
|
+
metering = "estimated"
|
|
16
|
+
|
|
17
|
+
[transitions.retry]
|
|
18
|
+
max_same_route_retries = 1
|
|
19
|
+
|
|
20
|
+
[transitions.availability_fallback]
|
|
21
|
+
max_fallbacks = 1
|
|
22
|
+
require_same_capability_class = true
|
|
23
|
+
|
|
24
|
+
[transitions.quality_escalation]
|
|
25
|
+
max_escalations = 2
|
|
26
|
+
require_verification_evidence = true
|
|
27
|
+
|
|
28
|
+
[transitions.quota_downgrade]
|
|
29
|
+
enabled = false
|
|
30
|
+
max_downgrades = 0
|
|
31
|
+
noncritical_only = true
|
|
32
|
+
|
|
33
|
+
[transitions.safety_stop]
|
|
34
|
+
enabled = true
|
|
35
|
+
|
|
36
|
+
[materiality]
|
|
37
|
+
changed_files_threshold = 5
|
|
38
|
+
changed_lines_threshold = 200
|
|
39
|
+
|
|
40
|
+
[execution]
|
|
41
|
+
max_read_scope_entries = 12
|
|
42
|
+
max_write_scope_entries = 6
|
|
43
|
+
|
|
44
|
+
[execution.roles.worker]
|
|
45
|
+
tools = ["cargo", "git", "rg"]
|
|
46
|
+
|
|
47
|
+
[execution.roles.worker.filesystem]
|
|
48
|
+
read_roots = ["src", "tests", "docs"]
|
|
49
|
+
write_roots = ["src", "tests", "docs"]
|
|
50
|
+
allow_overwrite = false
|