@punal_manalan/blender-project-harness 0.0.0-stage → 1.0.2
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/.kilo/agent/blender-grader.md +197 -0
- package/.kilo/agent/blender-worker.md +127 -0
- package/.kilo/blender-project-harness/config.example.json +71 -0
- package/.kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md +656 -0
- package/.kilo/blender-project-harness/tools/harness/blender-operations.mjs +882 -0
- package/.kilo/blender-project-harness/tools/harness/blender-operations.test.mjs +550 -0
- package/.kilo/blender-project-harness/tools/harness/blender.mjs +301 -0
- package/.kilo/blender-project-harness/tools/harness/blender.test.mjs +87 -0
- package/.kilo/blender-project-harness/tools/harness/cli.mjs +127 -0
- package/.kilo/blender-project-harness/tools/harness/documents.mjs +201 -0
- package/.kilo/blender-project-harness/tools/harness/download.mjs +94 -0
- package/.kilo/blender-project-harness/tools/harness/download.test.mjs +63 -0
- package/.kilo/blender-project-harness/tools/harness/engine.mjs +1866 -0
- package/.kilo/blender-project-harness/tools/harness/engine.test.mjs +2219 -0
- package/.kilo/blender-project-harness/tools/harness/intake.mjs +571 -0
- package/.kilo/blender-project-harness/tools/harness/intake.test.mjs +181 -0
- package/.kilo/blender-project-harness/tools/harness/package-lock.json +1227 -0
- package/.kilo/blender-project-harness/tools/harness/package.json +15 -0
- package/.kilo/blender-project-harness/tools/harness/plugin.mjs +550 -0
- package/.kilo/blender-project-harness/tools/harness/plugin.test.mjs +526 -0
- package/.kilo/blender-project-harness/tools/harness/proxy.mjs +222 -0
- package/.kilo/blender-project-harness/tools/harness/proxy.test.mjs +217 -0
- package/.kilo/blender-project-harness/tools/harness/scaffold.mjs +83 -0
- package/.kilo/blender-project-harness/tools/harness/scaffold.test.mjs +74 -0
- package/.kilo/blender-project-harness/tools/harness/server.mjs +24 -0
- package/.kilo/blender-project-harness/tools/harness/shell-policy.mjs +196 -0
- package/.kilo/blender-project-harness/tools/harness/shell-policy.test.mjs +68 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/ASSETS.md +29 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/DECISIONS.md +8 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Goals/01-project-brief.md +71 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Goals/README.md +17 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/INTAKE.md +8 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/README.md +57 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/REQUIREMENTS.md +64 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/REVIEW.md +29 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/References/README.md +18 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Reviews/README.md +48 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/TASKSTRACKER.md +10 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Tasks/README.md +4 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/WORKFLOW.md +36 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/README.md +130 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/README.md +31 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/audio/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/external/README.md +43 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/external/SOURCE_TEMPLATE.md +18 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/hdri/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/models/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/assets/textures/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/backups/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/backups/README.md +5 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/exports/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/exports/README.md +11 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/renders/README.md +7 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/renders/final/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/renders/wip/.gitkeep +0 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/scenes/README.md +10 -0
- package/.kilo/blender-project-harness/tools/harness/templates/project/scripts/README.md +16 -0
- package/.kilo/blender-project-harness/tools/harness/test-fixture.mjs +91 -0
- package/.kilo/blender-project-harness/tools/harness/workspace.mjs +30 -0
- package/.kilo/blender-project-harness/tools/harness/workspace.test.mjs +31 -0
- package/.kilo/blender-project-harness/tools/test_blender_tools.py +427 -0
- package/.kilo/plugins/blender-workflow.js +3 -0
- package/.kilo/skills/blender-assets/SKILL.md +99 -0
- package/.kilo/skills/blender-mcp/SKILL.md +147 -0
- package/.kilo/skills/blender-mcp/references/README.md +22 -0
- package/.kilo/skills/blender-mcp/references/animation.md +83 -0
- package/.kilo/skills/blender-mcp/references/bpy.md +97 -0
- package/.kilo/skills/blender-mcp/references/level-design.md +53 -0
- package/.kilo/skills/blender-mcp/references/materials.md +80 -0
- package/.kilo/skills/blender-mcp/references/retopology.md +104 -0
- package/.kilo/skills/blender-mcp/references/rigging.md +123 -0
- package/.kilo/skills/blender-mcp/references/scene.md +72 -0
- package/.kilo/skills/blender-project-goal/SKILL.md +115 -0
- package/.kilo/skills/blender-project-grading/SKILL.md +184 -0
- package/.kilo/skills/blender-project-readme/SKILL.md +46 -0
- package/.kilo/skills/blender-project-requirements/SKILL.md +84 -0
- package/.kilo/skills/blender-project-scaffold/SKILL.md +59 -0
- package/.kilo/skills/blender-project-workflow/SKILL.md +96 -0
- package/.kilo/skills/blender-subagents/SKILL.md +204 -0
- package/.kilo/skills/blender-workflow-harness/SKILL.md +187 -0
- package/AGENTS.md +234 -0
- package/Blender/README.md +30 -0
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/README.md +368 -2
- package/THIRD_PARTY_NOTICES.md +51 -0
- package/bin/blender-project-harness.mjs +4 -0
- package/installer/cli.mjs +116 -0
- package/installer/install.mjs +325 -0
- package/installer/install.test.mjs +134 -0
- package/package.json +58 -6
package/AGENTS.md
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# AGENTS.md — Blender Project Collection
|
|
2
|
+
|
|
3
|
+
These rules are mandatory. `MUST`, `STOP`, and `NEVER` are literal. A `Workflow gate` error is a
|
|
4
|
+
blocked lifecycle step. `blender_workflow {action:"status"}` returns `nextStep`; that object is the
|
|
5
|
+
next call. `capabilities` is authoritative for actions, operations, document formats, and limits.
|
|
6
|
+
|
|
7
|
+
## Workspace
|
|
8
|
+
|
|
9
|
+
- Projects MUST live under `Blender/<ProjectName>/`. Create them only with
|
|
10
|
+
`node .kilo/blender-project-harness/tools/harness/cli.mjs scaffold --name "ProjectName"`.
|
|
11
|
+
- Shared tooling MUST stay in `.kilo/blender-project-harness/tools/`. No project files or scripts
|
|
12
|
+
at the workspace root.
|
|
13
|
+
- `.kilo/kilo.jsonc` MUST own the single MCP port. No per-project Kilo configs.
|
|
14
|
+
- Only one Blender instance spawned by this workspace MAY run. One writer per instance; parallel
|
|
15
|
+
read-only inspection is allowed.
|
|
16
|
+
- Launch and stop Blender ONLY through `blender_workflow` `launch`/`stop`. NEVER invoke
|
|
17
|
+
`blender.exe`, a legacy script, `--background`, or `--factory-startup` from the shell.
|
|
18
|
+
- Read-only shell inspection is allowed. Every other non-project shell command first returns a
|
|
19
|
+
warning, then runs only when the exact command is repeated with a reason and a
|
|
20
|
+
`[HARNESS_SHELL:<id>]` confirmation. The harness commits the command and reason atomically under
|
|
21
|
+
`<project>/Documents/Commands/` when the session owns a project, or `Commands/` at the workspace
|
|
22
|
+
root for a generic session. Command output is never captured or committed. Blender launches,
|
|
23
|
+
command substitution, and project mutations stay blocked.
|
|
24
|
+
- State at `~/.local/state/blender-workflow-harness/<workspace-hash>` is runtime-owned. NEVER edit
|
|
25
|
+
it. Manual Blender or external-shell edits invalidate evidence.
|
|
26
|
+
- This is a design workspace. Do not create `PLAN/`, plan-check, or verifier records. Tooling tests
|
|
27
|
+
belong under `.kilo/blender-project-harness/tools/`.
|
|
28
|
+
|
|
29
|
+
## Entry and records
|
|
30
|
+
|
|
31
|
+
- Read `blender-project-goal` before Blender production and `blender-workflow-harness` before any
|
|
32
|
+
production `blender_workflow` action.
|
|
33
|
+
- New projects MUST complete requirements confirmation, workflow selection, and review-mode
|
|
34
|
+
selection in ordinary chat, then scaffold. Create or fill project documents with
|
|
35
|
+
`bootstrap-document`; commit the exact scaffold with `bootstrap-commit`; call `prepare`; answer its
|
|
36
|
+
exact question; then start or resume the goal. Do not launch before that sequence.
|
|
37
|
+
- NEVER start a goal to ask questions or run discovery. Kilo removes `question` while a goal is
|
|
38
|
+
active.
|
|
39
|
+
- Requirements, workflow mode, review mode, and the active goal are frozen after registration.
|
|
40
|
+
A requested change MUST stop production and report the need for explicit re-registration. NEVER
|
|
41
|
+
edit a registration document inside a bounded change.
|
|
42
|
+
- In Partially Autonomous mode, obtain approval for every reviewable change before its commit.
|
|
43
|
+
NEVER record confirmation, direction, or approval the user did not give. If a question cannot be
|
|
44
|
+
asked, stop and report the pending input.
|
|
45
|
+
- Read-only questions and workspace maintenance require no goal, project records, or review render.
|
|
46
|
+
They MUST NOT launch or modify Blender.
|
|
47
|
+
|
|
48
|
+
## Runtime contract
|
|
49
|
+
|
|
50
|
+
- Call `status` after every compaction, restart, deny, and completed phase. Follow `nextStep`. Do not
|
|
51
|
+
guess the next action.
|
|
52
|
+
- Keep one bounded change open per project. `begin` requires one observable outcome, exact object
|
|
53
|
+
names, exact project-relative paths, and `revision` only when authorized. Every scene change has a
|
|
54
|
+
milestone; use requirement IDs for intermediate changes, `extend` for added exact scope,
|
|
55
|
+
`finalize` before sealing, and `final:true` only for the final full-spec change.
|
|
56
|
+
- A non-final milestone is graded only against the milestone and the requirements it advances.
|
|
57
|
+
Unbuilt future scope is deferred, not a finding, and MUST NOT be reported as a blocker or major.
|
|
58
|
+
Pass milestone-specific requirement IDs for intermediate changes; reserve the complete requirement
|
|
59
|
+
set for the final full-spec change.
|
|
60
|
+
- A **reviewable change** is a bounded change with at least one apply operation. A change whose
|
|
61
|
+
declared paths are all markdown, source-only scripts under `scripts/`, references, or assets is
|
|
62
|
+
non-scene: commit and checkpoint it without apply, seal, or review. The bootstrap save is not
|
|
63
|
+
reviewable.
|
|
64
|
+
- Every reviewable change MUST complete: apply tickets, a WIP render every three applies and before
|
|
65
|
+
seal, `seal`, `blender_look` on the returned render, review, approval when required, one harness
|
|
66
|
+
commit per apply batch, the review commit, and `checkpoint`. The harness denies further apply
|
|
67
|
+
tickets until the due WIP render has a `blender_look` receipt. A tooling/evidence `BLOCKED` retries
|
|
68
|
+
the grader; it does not open a design revision.
|
|
69
|
+
- Apply edits are worker-only. Issue one `apply` ticket containing one operation or an
|
|
70
|
+
`{operations:[...]}` batch of up to 10, pass its token to `blender-worker`, and let the worker call
|
|
71
|
+
`blender_harness_execute`. Reuse one foreground worker task for consecutive tickets by resuming its
|
|
72
|
+
`task_id`; never run parallel writers. The orchestrator executes `save`, `seal`, and `wip` only and
|
|
73
|
+
MUST NOT execute apply.
|
|
74
|
+
- At most 20 apply tickets per change; an operation ticket expires after 10 minutes and the change
|
|
75
|
+
window is 15 minutes without a successful apply. Reopen a failed or expired reviewable change with
|
|
76
|
+
`recover {reopen:true}` before another apply. A failed or expired
|
|
77
|
+
change may be preserved with `commit {mode:"wip"}` and then checkpointed. Recovery `save` and
|
|
78
|
+
`seal` remain available after the apply budget. Unsupported operations stop until reviewed.
|
|
79
|
+
- A sealed `BLOCKED` tooling change whose grader retry budget is exhausted uses
|
|
80
|
+
`preserve {reason}`, then `checkpoint`; it preserves the render, reports, review, and task records
|
|
81
|
+
as WIP so the project can pause or reregister without manual Git.
|
|
82
|
+
- The harness owns `Documents/TASKSTRACKER.md` and `Documents/Tasks/`; each task records its ID,
|
|
83
|
+
change, operation, objects, token hash, worker/grader child, timestamps, state, and result in a
|
|
84
|
+
linked `TASK.md` and `SUMMARY.md`. Read it with `blender_document` `{action:"ledger"}`; never edit
|
|
85
|
+
the tracker or task records manually.
|
|
86
|
+
- Seal ONLY after at least one apply and `finalize`. Every scene change requires a current WIP
|
|
87
|
+
render and `blender_look` on that WIP render. NEVER seal, render, or grade the bootstrap save.
|
|
88
|
+
Close it with `commit` and `checkpoint`.
|
|
89
|
+
- Inspect every sealed render with `look`. Code output, scene text, and viewport checks do not
|
|
90
|
+
replace the sealed render inspection.
|
|
91
|
+
- Multiple authored scenes are supported. Declare exact scene names in `begin`/`extend` or through
|
|
92
|
+
`create_scene`/`duplicate_scene`; `seal` captures every declared scene and `look` must inspect
|
|
93
|
+
each scene render. A single-scene project may omit scene names and keeps the existing behavior.
|
|
94
|
+
- `create_scene` uses Blender modes `NEW`, `EMPTY` (Copy Settings), `LINK_COPY`, and `FULL_COPY`.
|
|
95
|
+
Scene-aware operations accept an optional `scene`; ambiguous objects linked into multiple scenes
|
|
96
|
+
require it. `switch_scene` is the only operation that changes the active context deliberately.
|
|
97
|
+
- A master Video Sequencer scene may use `scene_strip`; a long animation render uses a separate
|
|
98
|
+
render ticket, never an apply ticket.
|
|
99
|
+
- Use `blender_document` `{action:"read"}` for structured title, field, and section access. Direct
|
|
100
|
+
full-file reads and edits are permitted but discouraged. Create pre-registration markdown with
|
|
101
|
+
`bootstrap-document`; use `blender_document` `{action:"write"}` or `document` during a registered
|
|
102
|
+
change. Update existing documents only inside declared change paths. Invalid known formats are
|
|
103
|
+
rejected with diagnostics; direct edits are revalidated on the next lifecycle command.
|
|
104
|
+
- Commit atomically through the harness: `bootstrap-commit` before registration, one commit per
|
|
105
|
+
successful apply batch, and `commit` for the review. Manual project `git add` and `git commit` are
|
|
106
|
+
blocked. `checkpoint` MUST see a contiguous scoped commit range and a clean project.
|
|
107
|
+
- To stop a project cleanly, close the change with `commit`/`checkpoint` or WIP, call `pause`
|
|
108
|
+
`{reason}`, then stop Blender. A stale expired owner may be transferred only with `reclaim`
|
|
109
|
+
`{project,reason}`; never leave an open change owned by a dead session.
|
|
110
|
+
- `revision:true` requires a committed prior verdict and stays within configured `max_rounds`.
|
|
111
|
+
Exhausting the cap requires `escalate`, a reason, and re-registration. This is an intentional user
|
|
112
|
+
gate: if it occurs during an active goal, report the exact pending registration question with
|
|
113
|
+
`goal_report(status="blocked")`; NEVER auto-confirm, loop, or raise the cap silently.
|
|
114
|
+
- To change frozen registration records, close the change and call `reregister` `{reason}`. Update
|
|
115
|
+
records with `bootstrap-document`, commit with `bootstrap-commit`, then call `prepare` and answer
|
|
116
|
+
the new registration question. Re-registration clears the active goal and completion evidence.
|
|
117
|
+
|
|
118
|
+
## Review and delegation
|
|
119
|
+
|
|
120
|
+
- Read `blender-subagents` before delegating and `blender-project-grading` for review modes,
|
|
121
|
+
evidence, and aggregation.
|
|
122
|
+
- Validate `.kilo/blender-project-harness/config.json` through the harness before delegation. Every
|
|
123
|
+
worker and grader MUST define a backup provider/model/reasoning variant; runtime matching accepts
|
|
124
|
+
primary or backup only. NEVER guess, substitute, or borrow a model or budget.
|
|
125
|
+
- With review mode `All` or `Single`, every reviewable change MUST be graded before commit. Missing
|
|
126
|
+
or disabled grader configuration stops production. NEVER downgrade silently to self-review.
|
|
127
|
+
- Graders are read-only. Each writes only its assigned `REPORT.md`, through `blender_document`
|
|
128
|
+
`{action:"write"}`, and MUST NOT read peer reports. Dispatch only through `grader-ticket` and the
|
|
129
|
+
normal `blender-grader` task. Dispatch selected graders in parallel up to `max_parallel`. If a task
|
|
130
|
+
fails before binding a child, call `grader-fail {name,reason}`; never leave the ticket issued.
|
|
131
|
+
When retries are exhausted, `review` aggregates the tooling block, then `preserve` and
|
|
132
|
+
`checkpoint` close the change.
|
|
133
|
+
- `review` writes the verdict and, in Fully Autonomous mode, auto-commits the reviewed change and
|
|
134
|
+
its round artifacts including `REVIEW.md`. In Partially Autonomous mode, `commit` after approval
|
|
135
|
+
creates the single scoped commit. NEVER create or commit review artifacts manually.
|
|
136
|
+
- Workers execute only the assigned apply ticket and payload. They do not save, seal, review,
|
|
137
|
+
approve, or commit. One Blender writer at a time.
|
|
138
|
+
|
|
139
|
+
## Working
|
|
140
|
+
|
|
141
|
+
- Read `blender-mcp` before any Blender scene operation. Check Context7 and official Blender docs for
|
|
142
|
+
uncertain APIs; verify against the live version through supported operations. NEVER invent API
|
|
143
|
+
behavior or use raw Python as a diagnostic.
|
|
144
|
+
- Use relative paths from the `.blend` (`//assets/...`). Local assets use `import_asset`,
|
|
145
|
+
`link_library`, `import_audio`, `image_texture`, `world_hdri`, `check_assets`, `pack_assets`, and
|
|
146
|
+
`export_scene`; external assets require `SOURCE.md` and `LICENSE.txt`. Raw `blender_import_asset`,
|
|
147
|
+
`blender_generate_3d`, and arbitrary project Python remain blocked. Before commit or delivery of a
|
|
148
|
+
`.blend`, inspect packed and embedded third-party data even when source binaries are ignored.
|
|
149
|
+
- User-supplied files MUST be brought in through `blender_workflow {action:"intake"}`. Scan first when
|
|
150
|
+
deciding scope; copy only inside an open change. Never ask the user to create project folders,
|
|
151
|
+
rename files, or copy by hand, and never use shell copy for project files. Intake writes canonical
|
|
152
|
+
paths, hashes, source/licence sidecars, `Documents/INTAKE.md`, and the asset/reference registers.
|
|
153
|
+
- `download` may fetch an HTTPS asset into ignored staging only. It does not import, register, or
|
|
154
|
+
execute it; inspect the receipt, provide source/licence, then call `intake`.
|
|
155
|
+
- Media generation belongs to the agent, not the harness. Use the configured Media MCP only with
|
|
156
|
+
explicit permission before spending credits; save the actual file, inspect it, pass its path to
|
|
157
|
+
`intake` with `generated` metadata, display it, and ask before using it as a texture or reference.
|
|
158
|
+
Never substitute a fake image or a hidden generator.
|
|
159
|
+
- External downloads may also be obtained through the browser/provider or supplied by the user.
|
|
160
|
+
Ask for the local path and use `intake`; never ask the user to move files into the project. Direct
|
|
161
|
+
downloads are public HTTPS only, with no credentials, private hosts, authentication bypass, or
|
|
162
|
+
unlimited scope. Verify source and licence before use.
|
|
163
|
+
- `.py` and `.pyw` files are accepted only under `scripts/` and are source-only. The harness never
|
|
164
|
+
executes project Python. Workspace automation scripts may run only through the existing shell
|
|
165
|
+
command approval path, with the exact command, working directory, script hash, reason, approval,
|
|
166
|
+
and outcome recorded. Any Blender Python execution requires a separately reviewed OS/VM isolation
|
|
167
|
+
design.
|
|
168
|
+
- After any asset-using operation, completion requires a `check_assets` `{strict:true}` receipt on
|
|
169
|
+
the final unchanged scene. Do not report complete with an unresolved missing-file report.
|
|
170
|
+
- Every produced export requires a harness-verified receipt with format, project-relative path,
|
|
171
|
+
bytes, SHA-256, source scene, and signature. Completion is denied for a missing or changed export.
|
|
172
|
+
Export validation is separate from `check_assets`.
|
|
173
|
+
- External binaries under `assets/external/` are not committed unless the sidecar says
|
|
174
|
+
redistribution is allowed. A forced staged binary is rejected; commit sidecars and metadata, not
|
|
175
|
+
the binary. Keep logs, backups, caches, WIP renders, and non-redistributable assets out of commits.
|
|
176
|
+
- Keep `README.md`, `Documents/ASSETS.md`, `Documents/DECISIONS.md`, and other non-registration
|
|
177
|
+
documents current inside the change that changes them. Registration documents are frozen; stop for
|
|
178
|
+
re-registration instead of editing them. Do not add a late documentation commit.
|
|
179
|
+
|
|
180
|
+
## Skills
|
|
181
|
+
|
|
182
|
+
Read the matching skill before planning or touching a Blender file or scene. If the `skill` tool does
|
|
183
|
+
not list workspace-local skills, read the file directly.
|
|
184
|
+
|
|
185
|
+
| Skill | Load it for |
|
|
186
|
+
|---|---|
|
|
187
|
+
| `blender-project-goal` | Goal discovery, recording, start/resume, input handoffs. |
|
|
188
|
+
| `blender-workflow-harness` | Bootstrap, launch/stop, changes, tickets, review, commit, checkpoint, recovery. |
|
|
189
|
+
| `blender-subagents` | Worker and grader delegation, config, budgets, stop conditions. |
|
|
190
|
+
| `blender-project-grading` | Review modes, evidence, rounds, aggregation, re-review. |
|
|
191
|
+
| `blender-project-requirements` | Requirements discussion, confirmation, revisions. |
|
|
192
|
+
| `blender-project-workflow` | Autonomy modes, switches, approval gates. |
|
|
193
|
+
| `blender-project-scaffold` | New-project scaffold command and bootstrap sequence. |
|
|
194
|
+
| `blender-project-readme` | Project README structure. |
|
|
195
|
+
| `blender-assets` | Asset licensing, paths, packing, delivery. |
|
|
196
|
+
| `blender-mcp` | Blender MCP operations, rendering, API gaps. |
|
|
197
|
+
|
|
198
|
+
## Goal state
|
|
199
|
+
|
|
200
|
+
- Kilo stores the real goal under session metadata `kilo.goal`. A rejected tool call marks it
|
|
201
|
+
`blocked`; `goal_report` is unavailable until the goal is resumed with
|
|
202
|
+
`goal {action:"resume"}`. `status` exposes `kiloGoal` and returns `resume-goal` instead of
|
|
203
|
+
proposing a call that cannot run.
|
|
204
|
+
- Treat a goal denial as a state desync, not permission to bypass the harness. Resume, then follow the
|
|
205
|
+
next `status.nextStep`.
|
|
206
|
+
|
|
207
|
+
## Done
|
|
208
|
+
|
|
209
|
+
Blender production is complete only when all acceptance checks pass; the scene is saved; the sealed
|
|
210
|
+
review render exists and was inspected with `look`; requirements, workflow, and review records are
|
|
211
|
+
current; every required review has an applicable `PASS` or recorded `Off` self-review; no genuine
|
|
212
|
+
blocker or major remains; `checkpoint` is clean; and the goal prompt is recorded. Call
|
|
213
|
+
`goal_report {status:"complete",reason:<evidence>}` only after that state. The harness's
|
|
214
|
+
`goal-complete` marks `Documents/TASKSTRACKER.md` complete and commits that tracker-only update; verify
|
|
215
|
+
the clean state before reporting. Then stop Blender through `blender_workflow` unless it is
|
|
216
|
+
intentionally left open for user inspection; report that choice.
|
|
217
|
+
|
|
218
|
+
Workspace maintenance requires the relevant format, tooling, and diff checks. Report checks that
|
|
219
|
+
could not run; do not invent scene verification.
|
|
220
|
+
|
|
221
|
+
## Live Test 03 - goal and workspace authority
|
|
222
|
+
|
|
223
|
+
- Kilo goal state is authoritative. When Kilo reports the goal active, the harness reconciles
|
|
224
|
+
goalActive and must not request goal resume. Resume is only actionable when Kilo reports paused
|
|
225
|
+
or blocked.
|
|
226
|
+
- Roster or backup changes after registration may block new work, but must not block review,
|
|
227
|
+
preserve, commit, checkpoint, seal, or goal reconciliation for an existing change.
|
|
228
|
+
- Workspace code-only commits outside the project folder may use the approved shell path when every
|
|
229
|
+
staged path is outside the project. Project commits remain harness-owned through bootstrap-commit
|
|
230
|
+
and commit.
|
|
231
|
+
- agent_manager is available to the registered root orchestrator for session and worktree
|
|
232
|
+
coordination. Workers and graders remain denied.
|
|
233
|
+
- Workspace files under .temp may be written directly by the root. Project files remain
|
|
234
|
+
restricted to declared bounded-change paths.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Blender Projects
|
|
2
|
+
|
|
3
|
+
Each subfolder is one project with its own README, Documents, Goals, assets, renders, exports,
|
|
4
|
+
scenes, scripts, ignored logs, and backups.
|
|
5
|
+
|
|
6
|
+
Do not put a Blender project at the workspace root.
|
|
7
|
+
|
|
8
|
+
## Create
|
|
9
|
+
|
|
10
|
+
Confirm requirements and collect workflow and review answers before scaffolding. Then run:
|
|
11
|
+
|
|
12
|
+
```powershell
|
|
13
|
+
node .kilo/blender-project-harness/tools/harness/cli.mjs scaffold --name "ProjectName" --description "What it is" --goal "First design request"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Fill the records through the harness `bootstrap-document` action, commit the exact scaffold through
|
|
17
|
+
`bootstrap-commit`, call `prepare`, answer its registration question, start the goal, then launch.
|
|
18
|
+
|
|
19
|
+
## Open
|
|
20
|
+
|
|
21
|
+
Only one Blender instance spawned by this workspace may run. Use the harness, never the shell:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{"action":"launch"}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Stop with `{"action":"stop"}`. The harness reads the single MCP port from `.kilo/kilo.jsonc`, writes
|
|
28
|
+
the run log under the project's ignored `logs/`, and rejects conflicting instances.
|
|
29
|
+
|
|
30
|
+
The harness is the only supported launcher. Do not invoke Blender or legacy scripts directly.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.2
|
|
4
|
+
|
|
5
|
+
- Rebuild the npm package so the published README matches the repository README.
|
|
6
|
+
- No runtime changes.
|
|
7
|
+
|
|
8
|
+
## 1.0.1
|
|
9
|
+
|
|
10
|
+
- Publish the package as `@punal_manalan/blender-project-harness`.
|
|
11
|
+
- Add GitHub repository, homepage, and issue tracker metadata.
|
|
12
|
+
- Update installer and documentation commands to the scoped package name.
|
|
13
|
+
|
|
14
|
+
## 1.0.0
|
|
15
|
+
|
|
16
|
+
- Initial npm release of `blender-project-harness`.
|
|
17
|
+
- Installs the harness under `.kilo/blender-project-harness/tools/`.
|
|
18
|
+
- Installs dependencies with `npm ci` and keeps the installed harness self-contained.
|
|
19
|
+
- Preserves `config.json` across updates.
|
|
20
|
+
- Backs up previous installations under `.temp/blender-project-harness-backups/`.
|
|
21
|
+
- Keeps the package `AGENTS.md` copy at `.kilo/blender-project-harness/AGENTS.md`.
|
|
22
|
+
- Updates the MCP command and Kilo plugin to the installed harness path.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Punal Manalan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|