engineering-memory 1.11.15 → 1.11.17
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/package.json +1 -1
- package/runtime/build.json +1 -1
- package/runtime/dist/src/config.js +1 -0
- package/runtime/dist/src/mcp/tool-annotations.js +1 -0
- package/runtime/dist/src/mcp/tool-definitions.js +14 -2
- package/runtime/dist/src/runtime/api-client.js +1 -0
- package/runtime/dist/src/runtime/bridge-service.js +25 -23
- package/runtime/dist/src/runtime/worktree-editor.js +184 -0
- package/runtime/dist/src/runtime/worktree-gradle.js +318 -0
- package/runtime/dist/src/runtime/worktree-pool.js +181 -3
- package/runtime/dist/src/runtime/worktree-preparation.js +901 -0
- package/runtime/dist/src/runtime/worktree-readiness-types.js +18 -0
- package/skill/references/lifecycle.md +10 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export var WorktreeFileStatus;
|
|
2
|
+
(function (WorktreeFileStatus) {
|
|
3
|
+
WorktreeFileStatus["Prepared"] = "prepared";
|
|
4
|
+
WorktreeFileStatus["Attention"] = "attention";
|
|
5
|
+
WorktreeFileStatus["NotNeeded"] = "not_needed";
|
|
6
|
+
WorktreeFileStatus["Skipped"] = "skipped";
|
|
7
|
+
})(WorktreeFileStatus || (WorktreeFileStatus = {}));
|
|
8
|
+
export var WorktreeFileIssue;
|
|
9
|
+
(function (WorktreeFileIssue) {
|
|
10
|
+
WorktreeFileIssue["Missing"] = "missing";
|
|
11
|
+
WorktreeFileIssue["Conflict"] = "conflict";
|
|
12
|
+
WorktreeFileIssue["Stale"] = "stale";
|
|
13
|
+
WorktreeFileIssue["Unsafe"] = "unsafe";
|
|
14
|
+
WorktreeFileIssue["Unsupported"] = "unsupported";
|
|
15
|
+
WorktreeFileIssue["SourceChanged"] = "source_changed";
|
|
16
|
+
WorktreeFileIssue["Failed"] = "failed";
|
|
17
|
+
})(WorktreeFileIssue || (WorktreeFileIssue = {}));
|
|
18
|
+
//# sourceMappingURL=worktree-readiness-types.js.map
|
|
@@ -24,6 +24,8 @@ Start new write or scaffold work with `task.branch`, before `session.bootstrap`,
|
|
|
24
24
|
|
|
25
25
|
Use the returned `repoRoot` for **every** file read/write, terminal, context, validation and Git/delivery operation. The user-local pool is shared by Codex and Claude. Managed directories live under `engineering_memory/worktrees/<stable-project-folder>/<folder>_worktreeN`, at the root of the system drive on Windows (`C:\engineering_memory\worktrees\...`) and in the home directory elsewhere, or under the absolute directory named by `worktree-root.json` in the user-level API state directory when that file exists; `worktree.list` reports the effective root, and worktrees created by earlier clients under the Documents folder keep working where they are. Do not supply arbitrary `worktreePath` values or create ad-hoc siblings. Independent clones cannot reuse each other's worktrees. `worktree.list` explains which slots are active, inactive but protected, or safely reusable. The versioned backend policy defaults to 50 directories per project/computer, 30-second heartbeats and 10-minute inactivity. Protected inactive directories still count toward the limit. Only a global admin changes `worktree.set_policy`; it is not an environment setting.
|
|
26
26
|
|
|
27
|
+
After managed allocation, inspect `readiness.files` and `readiness.editor`. The bridge prepares supported ignored runtime files from pinned same-clone sources, preserving existing files and reporting missing, conflicting, stale or unsupported configuration. A signing key outside the source checkout remains external. File contents stay local. Repair the reported issue with the user's existing authority, then retry `task.branch` or `session.resume`; never overwrite a conflict merely to make preparation pass. The editor status `requested` records a VS Code CLI request, not verified window visibility. The CLI reuses a matching single-folder window and preserves unrelated windows; an existing multi-root membership is not verified. Headless sessions, unavailable editors and launch failures leave the task allocated. Do not repeatedly open windows yourself after a recorded request.
|
|
28
|
+
|
|
27
29
|
Renew `task.heartbeat` using the exact returned task, path and ownership generation during actual work and at approximately the cached heartbeat interval during long local commands. The bridge renews while its own task operation is running. Never run a perpetual heartbeat for an idle chat or MCP process. Inactivity never authorizes takeover of a live owner or deletion of files. Before writing after interruption, use `session.resume`; follow any returned worktree redirect and resume there. A stale generation cannot renew, release, verify or commit another owner's work.
|
|
28
30
|
|
|
29
31
|
Use `task.pause` when work stops or is handed to another client. It preserves task state and files, invalidates the old owner, and allows safe clean directories to be reused. It is not `task.abandon`. Resume reacquires the original directory when possible or uses the retained task branch in another safe directory. `worktree.reconcile` recovers interrupted allocation and validated local ownership records against Git. Never edit the registry, force checkout, stash/reset/clean, remove branches, kill a client or delete a worktree to bypass a refusal.
|
|
@@ -71,6 +73,14 @@ One WorkItem UUID coordinates independent EngineeringTask runs, one per selected
|
|
|
71
73
|
|
|
72
74
|
Open each side with the same workItemId and its own repository binding when work reaches that side. Each side has its own lease, reconciliation, verify, close and commit gate. Check `work_item.runs` and sibling checkpoints when handing off; one side completing does not prove all selected projects are complete. A plan's scope and branch cannot change while an implementation run is active. Read-only analysis does not acquire application write rights; its later write transition must satisfy discipline and the confirmed plan.
|
|
73
75
|
|
|
76
|
+
### Work item statuses
|
|
77
|
+
|
|
78
|
+
Read `work_item.statuses` before choosing a status for `work_item.update` or filtering `work_item.list`. The catalogue belongs to the project: follow its user-defined `meaning`, `entryRule` and flags. Never infer workflow from a name or translate statuses into the old six-value set. Send the actual catalogue slug. A work item's `status` is that slug, or null when its status link is invalid.
|
|
79
|
+
|
|
80
|
+
The catalogue returns `items`, `total`, `offset` and `limit`. Page with `offset` (default 0) and `limit` (default 50, maximum 100); use `includeArchived: true` to inspect retained archived statuses. Each row includes `id`, `slug`, `name`, `category`, `isInitial`, `isActionable`, `isParked`, `isTerminal`, `archivedAt`, `meaning`, `entryRule`, `position` and `lockVersion`. The work item's nested `projectStatus` remains its compact nine-field summary. `work_item.list` also accepts `offset` and `limit`; a status filter matches the actual slug, including retained archived statuses, and an unknown slug returns an empty page. Its `includeArchived` option concerns work items.
|
|
81
|
+
|
|
82
|
+
Session entry uses the backend's actionable selection. An empty page remains empty, and a failed lookup offers no work items; never retry an unfiltered list to classify statuses locally. Reuse existing user choices. Any unresolved workflow choice must use the native questionnaire.
|
|
83
|
+
|
|
74
84
|
### Administration, product management and QA
|
|
75
85
|
|
|
76
86
|
Administrative authority and work discipline are independent. Organization admins can manage projects, assignments, repository URLs and work items in their organization. A global admin has those rights only in organizations they actively belong to. Ordinary users need a live explicit project assignment. Active organization administrators, including a global admin with live membership in that organization, inherit contributor access to its projects without a separate project grant. Fullstack/backend/web/mobile/frontend disciplines still govern implementation, while project overrides do not grant administration.
|