@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.
Files changed (91) hide show
  1. package/.kilo/agent/blender-grader.md +197 -0
  2. package/.kilo/agent/blender-worker.md +127 -0
  3. package/.kilo/blender-project-harness/config.example.json +71 -0
  4. package/.kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md +656 -0
  5. package/.kilo/blender-project-harness/tools/harness/blender-operations.mjs +882 -0
  6. package/.kilo/blender-project-harness/tools/harness/blender-operations.test.mjs +550 -0
  7. package/.kilo/blender-project-harness/tools/harness/blender.mjs +301 -0
  8. package/.kilo/blender-project-harness/tools/harness/blender.test.mjs +87 -0
  9. package/.kilo/blender-project-harness/tools/harness/cli.mjs +127 -0
  10. package/.kilo/blender-project-harness/tools/harness/documents.mjs +201 -0
  11. package/.kilo/blender-project-harness/tools/harness/download.mjs +94 -0
  12. package/.kilo/blender-project-harness/tools/harness/download.test.mjs +63 -0
  13. package/.kilo/blender-project-harness/tools/harness/engine.mjs +1866 -0
  14. package/.kilo/blender-project-harness/tools/harness/engine.test.mjs +2219 -0
  15. package/.kilo/blender-project-harness/tools/harness/intake.mjs +571 -0
  16. package/.kilo/blender-project-harness/tools/harness/intake.test.mjs +181 -0
  17. package/.kilo/blender-project-harness/tools/harness/package-lock.json +1227 -0
  18. package/.kilo/blender-project-harness/tools/harness/package.json +15 -0
  19. package/.kilo/blender-project-harness/tools/harness/plugin.mjs +550 -0
  20. package/.kilo/blender-project-harness/tools/harness/plugin.test.mjs +526 -0
  21. package/.kilo/blender-project-harness/tools/harness/proxy.mjs +222 -0
  22. package/.kilo/blender-project-harness/tools/harness/proxy.test.mjs +217 -0
  23. package/.kilo/blender-project-harness/tools/harness/scaffold.mjs +83 -0
  24. package/.kilo/blender-project-harness/tools/harness/scaffold.test.mjs +74 -0
  25. package/.kilo/blender-project-harness/tools/harness/server.mjs +24 -0
  26. package/.kilo/blender-project-harness/tools/harness/shell-policy.mjs +196 -0
  27. package/.kilo/blender-project-harness/tools/harness/shell-policy.test.mjs +68 -0
  28. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/ASSETS.md +29 -0
  29. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/DECISIONS.md +8 -0
  30. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Goals/01-project-brief.md +71 -0
  31. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Goals/README.md +17 -0
  32. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/INTAKE.md +8 -0
  33. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/README.md +57 -0
  34. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/REQUIREMENTS.md +64 -0
  35. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/REVIEW.md +29 -0
  36. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/References/README.md +18 -0
  37. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Reviews/README.md +48 -0
  38. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/TASKSTRACKER.md +10 -0
  39. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/Tasks/README.md +4 -0
  40. package/.kilo/blender-project-harness/tools/harness/templates/project/Documents/WORKFLOW.md +36 -0
  41. package/.kilo/blender-project-harness/tools/harness/templates/project/README.md +130 -0
  42. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/README.md +31 -0
  43. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/audio/.gitkeep +0 -0
  44. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/external/README.md +43 -0
  45. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/external/SOURCE_TEMPLATE.md +18 -0
  46. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/hdri/.gitkeep +0 -0
  47. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/models/.gitkeep +0 -0
  48. package/.kilo/blender-project-harness/tools/harness/templates/project/assets/textures/.gitkeep +0 -0
  49. package/.kilo/blender-project-harness/tools/harness/templates/project/backups/.gitkeep +0 -0
  50. package/.kilo/blender-project-harness/tools/harness/templates/project/backups/README.md +5 -0
  51. package/.kilo/blender-project-harness/tools/harness/templates/project/exports/.gitkeep +0 -0
  52. package/.kilo/blender-project-harness/tools/harness/templates/project/exports/README.md +11 -0
  53. package/.kilo/blender-project-harness/tools/harness/templates/project/renders/README.md +7 -0
  54. package/.kilo/blender-project-harness/tools/harness/templates/project/renders/final/.gitkeep +0 -0
  55. package/.kilo/blender-project-harness/tools/harness/templates/project/renders/wip/.gitkeep +0 -0
  56. package/.kilo/blender-project-harness/tools/harness/templates/project/scenes/README.md +10 -0
  57. package/.kilo/blender-project-harness/tools/harness/templates/project/scripts/README.md +16 -0
  58. package/.kilo/blender-project-harness/tools/harness/test-fixture.mjs +91 -0
  59. package/.kilo/blender-project-harness/tools/harness/workspace.mjs +30 -0
  60. package/.kilo/blender-project-harness/tools/harness/workspace.test.mjs +31 -0
  61. package/.kilo/blender-project-harness/tools/test_blender_tools.py +427 -0
  62. package/.kilo/plugins/blender-workflow.js +3 -0
  63. package/.kilo/skills/blender-assets/SKILL.md +99 -0
  64. package/.kilo/skills/blender-mcp/SKILL.md +147 -0
  65. package/.kilo/skills/blender-mcp/references/README.md +22 -0
  66. package/.kilo/skills/blender-mcp/references/animation.md +83 -0
  67. package/.kilo/skills/blender-mcp/references/bpy.md +97 -0
  68. package/.kilo/skills/blender-mcp/references/level-design.md +53 -0
  69. package/.kilo/skills/blender-mcp/references/materials.md +80 -0
  70. package/.kilo/skills/blender-mcp/references/retopology.md +104 -0
  71. package/.kilo/skills/blender-mcp/references/rigging.md +123 -0
  72. package/.kilo/skills/blender-mcp/references/scene.md +72 -0
  73. package/.kilo/skills/blender-project-goal/SKILL.md +115 -0
  74. package/.kilo/skills/blender-project-grading/SKILL.md +184 -0
  75. package/.kilo/skills/blender-project-readme/SKILL.md +46 -0
  76. package/.kilo/skills/blender-project-requirements/SKILL.md +84 -0
  77. package/.kilo/skills/blender-project-scaffold/SKILL.md +59 -0
  78. package/.kilo/skills/blender-project-workflow/SKILL.md +96 -0
  79. package/.kilo/skills/blender-subagents/SKILL.md +204 -0
  80. package/.kilo/skills/blender-workflow-harness/SKILL.md +187 -0
  81. package/AGENTS.md +234 -0
  82. package/Blender/README.md +30 -0
  83. package/CHANGELOG.md +22 -0
  84. package/LICENSE +21 -0
  85. package/README.md +368 -2
  86. package/THIRD_PARTY_NOTICES.md +51 -0
  87. package/bin/blender-project-harness.mjs +4 -0
  88. package/installer/cli.mjs +116 -0
  89. package/installer/install.mjs +325 -0
  90. package/installer/install.test.mjs +134 -0
  91. 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.