@cat-factory/orchestration 0.225.0 → 0.228.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/dist/container/dependencies.d.ts +23 -1
- package/dist/container/dependencies.d.ts.map +1 -1
- package/dist/container/foundation.d.ts.map +1 -1
- package/dist/container/foundation.js +17 -6
- package/dist/container/foundation.js.map +1 -1
- package/dist/container/modules.js +2 -2
- package/dist/container/modules.js.map +1 -1
- package/dist/container/platform-modules.d.ts.map +1 -1
- package/dist/container/platform-modules.js +1 -0
- package/dist/container/platform-modules.js.map +1 -1
- package/dist/container.d.ts +21 -8
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +4 -1
- package/dist/container.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/board/BoardService.d.ts +22 -9
- package/dist/modules/board/BoardService.d.ts.map +1 -1
- package/dist/modules/board/BoardService.js +42 -106
- package/dist/modules/board/BoardService.js.map +1 -1
- package/dist/modules/board/publicBoardReads.d.ts +3 -3
- package/dist/modules/board/publicBoardReads.d.ts.map +1 -1
- package/dist/modules/board/publicBoardReads.js.map +1 -1
- package/dist/modules/board/reparentWrite.d.ts +43 -0
- package/dist/modules/board/reparentWrite.d.ts.map +1 -0
- package/dist/modules/board/reparentWrite.js +126 -0
- package/dist/modules/board/reparentWrite.js.map +1 -0
- package/dist/modules/board/riskPolicySelectionGuard.d.ts +45 -4
- package/dist/modules/board/riskPolicySelectionGuard.d.ts.map +1 -1
- package/dist/modules/board/riskPolicySelectionGuard.js +84 -20
- package/dist/modules/board/riskPolicySelectionGuard.js.map +1 -1
- package/dist/modules/boardScan/BoardScanService.js +6 -6
- package/dist/modules/boardScan/BoardScanService.js.map +1 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts +2 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts.map +1 -1
- package/dist/modules/execution/MergeResolver.d.ts +3 -3
- package/dist/modules/execution/MergeResolver.d.ts.map +1 -1
- package/dist/modules/execution/MergeResolver.js +76 -34
- package/dist/modules/execution/MergeResolver.js.map +1 -1
- package/dist/modules/execution/PostMergeBoardController.d.ts.map +1 -1
- package/dist/modules/execution/PostMergeBoardController.js +6 -1
- package/dist/modules/execution/PostMergeBoardController.js.map +1 -1
- package/dist/modules/execution/RunMergePolicy.d.ts +3 -2
- package/dist/modules/execution/RunMergePolicy.d.ts.map +1 -1
- package/dist/modules/execution/RunMergePolicy.js +1 -1
- package/dist/modules/execution/RunMergePolicy.js.map +1 -1
- package/dist/modules/execution/StepGraph.d.ts.map +1 -1
- package/dist/modules/execution/StepGraph.js +20 -0
- package/dist/modules/execution/StepGraph.js.map +1 -1
- package/dist/modules/execution/policy-types.d.ts +5 -4
- package/dist/modules/execution/policy-types.d.ts.map +1 -1
- package/dist/modules/merge/RiskPolicyService.d.ts +22 -11
- package/dist/modules/merge/RiskPolicyService.d.ts.map +1 -1
- package/dist/modules/merge/RiskPolicyService.js +27 -48
- package/dist/modules/merge/RiskPolicyService.js.map +1 -1
- package/dist/modules/merge/riskPolicyResolution.d.ts +36 -4
- package/dist/modules/merge/riskPolicyResolution.d.ts.map +1 -1
- package/dist/modules/merge/riskPolicyResolution.js +36 -8
- package/dist/modules/merge/riskPolicyResolution.js.map +1 -1
- package/dist/modules/observability/retentionPass.d.ts +82 -1
- package/dist/modules/observability/retentionPass.d.ts.map +1 -1
- package/dist/modules/observability/retentionPass.js +104 -0
- package/dist/modules/observability/retentionPass.js.map +1 -1
- package/dist/modules/reports/ReportsService.d.ts +29 -6
- package/dist/modules/reports/ReportsService.d.ts.map +1 -1
- package/dist/modules/reports/ReportsService.js +64 -18
- package/dist/modules/reports/ReportsService.js.map +1 -1
- package/dist/modules/reports/reports.logic.d.ts +16 -2
- package/dist/modules/reports/reports.logic.d.ts.map +1 -1
- package/dist/modules/reports/reports.logic.js +26 -5
- package/dist/modules/reports/reports.logic.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { BlockEditAuthority, ReparentInput } from '@cat-factory/contracts';
|
|
2
|
+
import type { Block, BlockRepository, BoardChange, ExecutionRepository, ServiceRepository, WorkspaceMountRepository } from '@cat-factory/kernel';
|
|
3
|
+
import type { BoardChangeReason } from './board.logic.js';
|
|
4
|
+
import type { RiskPolicySelectionGuard } from './riskPolicySelectionGuard.js';
|
|
5
|
+
/**
|
|
6
|
+
* The board's REPARENT write (moving a block into a new container), extracted from `BoardService`
|
|
7
|
+
* following the established controller-extraction pattern: one small deps object of bound
|
|
8
|
+
* callbacks, and the service keeps a thin delegate.
|
|
9
|
+
*
|
|
10
|
+
* It is its own collaborator rather than a third layout write, because it is not a layout write at
|
|
11
|
+
* all. Where those split ONE block's geometry between a mount override and the row, this moves a
|
|
12
|
+
* whole SUBTREE between parents, and in the cross-home case between physical workspaces. It carries
|
|
13
|
+
* the rows and their executions, re-stamps the service scope key, prunes the edges that then
|
|
14
|
+
* dangle, and decides whether the destination's merge policy is one the mover may put the task
|
|
15
|
+
* under.
|
|
16
|
+
*/
|
|
17
|
+
export interface BoardReparentDeps {
|
|
18
|
+
blockRepository: BlockRepository;
|
|
19
|
+
executionRepository: ExecutionRepository;
|
|
20
|
+
/** Absent ⇒ sharing isn't wired, so blocks are plain workspace-local and never re-stamped. */
|
|
21
|
+
serviceRepository?: ServiceRepository;
|
|
22
|
+
workspaceMountRepository?: WorkspaceMountRepository;
|
|
23
|
+
/** Refuses a move that would drop a role-scoped merge restriction (ADR 0037). */
|
|
24
|
+
riskPolicySelection: RiskPolicySelectionGuard;
|
|
25
|
+
/** 404s an unknown board before anything is written. */
|
|
26
|
+
requireWorkspace: (workspaceId: string) => Promise<unknown>;
|
|
27
|
+
/** The block plus the workspace that HOMES it (which may not be the acting one). */
|
|
28
|
+
resolveBlock: (workspaceId: string, id: string) => Promise<{
|
|
29
|
+
homeWorkspaceId: string;
|
|
30
|
+
block: Block;
|
|
31
|
+
}>;
|
|
32
|
+
/** The service id a block placed under `container` belongs to, or undefined. */
|
|
33
|
+
serviceForContainer: (blocks: Block[], container: Block) => Promise<string | undefined>;
|
|
34
|
+
/** The doc-repo containment rule, shared with `addTask`. */
|
|
35
|
+
assertTaskTypeAllowed: (frame: Block | undefined, taskType: Block['taskType']) => void;
|
|
36
|
+
emitBoardChanged: (originWorkspaceId: string, change: BoardChange & {
|
|
37
|
+
reason: BoardChangeReason;
|
|
38
|
+
}) => Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export declare function createBoardReparentWrite(deps: BoardReparentDeps): {
|
|
41
|
+
reparent: (workspaceId: string, id: string, input: ReparentInput, editor: BlockEditAuthority, originConnectionId?: string | null) => Promise<Block>;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=reparentWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reparentWrite.d.ts","sourceRoot":"","sources":["../../../src/modules/board/reparentWrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE/E,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EAEf,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAE7E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAA;IAChC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,iFAAiF;IACjF,mBAAmB,EAAE,wBAAwB,CAAA;IAC7C,wDAAwD;IACxD,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3D,oFAAoF;IACpF,YAAY,EAAE,CACZ,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAA;IACvD,gFAAgF;IAChF,mBAAmB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACvF,4DAA4D;IAC5D,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IACtF,gBAAgB,EAAE,CAChB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,iBAAiB,CAAA;KAAE,KAChD,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB;4BAU/C,MAAM,MACf,MAAM,SACH,aAAa,UACZ,kBAAkB,uBACL,MAAM,GAAG,IAAI,KACjC,OAAO,CAAC,KAAK,CAAC;EA8HlB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { BLOCK_LEVEL_RUNS_PIPELINES } from '@cat-factory/contracts';
|
|
2
|
+
import { assertFound, ValidationError } from '@cat-factory/kernel';
|
|
3
|
+
import { canReparent, descendantIds, serviceOf } from './board.logic.js';
|
|
4
|
+
import { pruneDanglingEdges } from './removal-cascade.js';
|
|
5
|
+
export function createBoardReparentWrite(deps) {
|
|
6
|
+
/**
|
|
7
|
+
* Move a block into a new container at a new local position.
|
|
8
|
+
*
|
|
9
|
+
* `editor` is who is moving it, for the merge-preset guard: see the cross-home branch below. It
|
|
10
|
+
* is an AUTHORITY rather than a resolved actor because a cross-home move decides in two
|
|
11
|
+
* workspaces and the mover holds a role in each on their own terms. Pass
|
|
12
|
+
* `UNATTRIBUTED_BLOCK_EDIT_AUTHORITY` for a caller with no workspace tier (an engine path).
|
|
13
|
+
*/
|
|
14
|
+
async function reparent(workspaceId, id, input, editor, originConnectionId) {
|
|
15
|
+
await deps.requireWorkspace(workspaceId);
|
|
16
|
+
const { homeWorkspaceId: blockHome, block } = await deps.resolveBlock(workspaceId, id);
|
|
17
|
+
if (id === input.parentId)
|
|
18
|
+
throw new ValidationError('A block cannot contain itself');
|
|
19
|
+
const { homeWorkspaceId: parentHome, block: parent } = await deps.resolveBlock(workspaceId, input.parentId);
|
|
20
|
+
if (!canReparent(block.level, parent)) {
|
|
21
|
+
throw new ValidationError(`A ${block.level} cannot be placed inside a ${parent.level}`);
|
|
22
|
+
}
|
|
23
|
+
// The destination's enclosing frame drives two things: the doc-repo task gate (same as
|
|
24
|
+
// addTask — drag-drop must not smuggle a feature/bug/recurring task into a doc frame) and
|
|
25
|
+
// the moved task's inherited `type`, which is behavioural for the frame repo roles. Load
|
|
26
|
+
// the parent's workspace blocks once here; the branches below reuse this list.
|
|
27
|
+
const destBlocks = await deps.blockRepository.listByWorkspace(parentHome);
|
|
28
|
+
const destFrame = serviceOf(destBlocks, parent);
|
|
29
|
+
if (block.level === 'task') {
|
|
30
|
+
deps.assertTaskTypeAllowed(destFrame, block.taskType);
|
|
31
|
+
}
|
|
32
|
+
// A task inherits its enclosing frame's type, so a move re-stamps it (no-op when unchanged
|
|
33
|
+
// or when the destination isn't a resolvable frame). Non-task blocks keep their own type.
|
|
34
|
+
const movedType = block.level === 'task' && destFrame ? destFrame.type : block.type;
|
|
35
|
+
// Same physical home (the common case, incl. two of the workspace's own services): move in
|
|
36
|
+
// place and re-stamp `service_id`, the physical scope key that decides which boards render
|
|
37
|
+
// the subtree and where its events fan out. No-op re-stamp when sharing isn't wired or the
|
|
38
|
+
// destination frame isn't a registered service. No preset guard here: the home decides which
|
|
39
|
+
// library a `riskPolicyId` resolves against, so a move that keeps it re-decides nothing.
|
|
40
|
+
if (blockHome === parentHome) {
|
|
41
|
+
await deps.blockRepository.update(blockHome, id, {
|
|
42
|
+
parentId: input.parentId,
|
|
43
|
+
position: input.position,
|
|
44
|
+
...(movedType !== block.type ? { type: movedType } : {}),
|
|
45
|
+
});
|
|
46
|
+
if (deps.serviceRepository) {
|
|
47
|
+
const destService = await deps.serviceForContainer(destBlocks, parent);
|
|
48
|
+
await deps.blockRepository.setService(blockHome, [...descendantIds(destBlocks, id)], destService ?? null);
|
|
49
|
+
}
|
|
50
|
+
// Origin = the block's HOME so the re-stamped subtree fans out to every mounting board. No
|
|
51
|
+
// payload: a reparent moves the whole SUBTREE between parents, and the moved block alone
|
|
52
|
+
// cannot state what its descendants' service stamps became.
|
|
53
|
+
await deps.emitBoardChanged(blockHome, {
|
|
54
|
+
reason: 'block-reparented',
|
|
55
|
+
blockId: id,
|
|
56
|
+
originConnectionId,
|
|
57
|
+
});
|
|
58
|
+
return assertFound(await deps.blockRepository.get(blockHome, id), 'Block', id);
|
|
59
|
+
}
|
|
60
|
+
// Cross-home: the block and its new parent belong to two services homed in different
|
|
61
|
+
// workspaces (both mounted on this board). Keep the invariant that a service's blocks live
|
|
62
|
+
// in its home workspace by MOVING the subtree's rows — and any executions on them — to the
|
|
63
|
+
// destination service's home, re-stamped with the destination service.
|
|
64
|
+
const srcBlocks = await deps.blockRepository.listByWorkspace(blockHome);
|
|
65
|
+
const ids = [...descendantIds(srcBlocks, id)];
|
|
66
|
+
const subtree = ids
|
|
67
|
+
.map((bid) => srcBlocks.find((b) => b.id === bid))
|
|
68
|
+
.filter((b) => b !== undefined);
|
|
69
|
+
// BEFORE any write, and the reason this write takes an editor at all. A block's merge preset
|
|
70
|
+
// resolves against the workspace that HOMES it, so carrying it to another home re-decides
|
|
71
|
+
// which policy governs its runs without touching `riskPolicyId` or the preset library: the
|
|
72
|
+
// swap the picker refuses, spelled as a drag. Every RUNNABLE block in the moved subtree is
|
|
73
|
+
// judged, not just the dragged one, because a module carries its contents with it. What
|
|
74
|
+
// counts as runnable is the declared `BLOCK_LEVEL_RUNS_PIPELINES`, not a `level === 'task'`
|
|
75
|
+
// test, which silently exempted the `initiative` blocks that start their own planning chains.
|
|
76
|
+
await deps.riskPolicySelection.assertMayMove({
|
|
77
|
+
fromWorkspaceId: blockHome,
|
|
78
|
+
toWorkspaceId: parentHome,
|
|
79
|
+
authority: editor,
|
|
80
|
+
riskPolicyIds: subtree
|
|
81
|
+
.filter((b) => BLOCK_LEVEL_RUNS_PIPELINES[b.level])
|
|
82
|
+
.map((b) => b.riskPolicyId),
|
|
83
|
+
});
|
|
84
|
+
// Capture the SOURCE service's mounting boards BEFORE the move (afterwards the subtree no
|
|
85
|
+
// longer resolves to the source service), so every board that showed the block at its old
|
|
86
|
+
// home can refresh it away. The destination side is reached by the post-move emit below.
|
|
87
|
+
const sourceFanout = new Set([blockHome]);
|
|
88
|
+
if (deps.workspaceMountRepository) {
|
|
89
|
+
for (const ws of await deps.workspaceMountRepository.listWorkspaceIdsMountingBlock(blockHome, id)) {
|
|
90
|
+
sourceFanout.add(ws);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const destService = (await deps.serviceForContainer(destBlocks, parent)) ?? null;
|
|
94
|
+
for (const b of subtree) {
|
|
95
|
+
const moved = b.id === id
|
|
96
|
+
? { ...b, parentId: input.parentId, position: input.position, type: movedType }
|
|
97
|
+
: b;
|
|
98
|
+
await deps.blockRepository.insert(parentHome, moved, destService);
|
|
99
|
+
const exec = await deps.executionRepository.getByBlock(blockHome, b.id);
|
|
100
|
+
if (exec) {
|
|
101
|
+
await deps.executionRepository.deleteByBlock(blockHome, b.id);
|
|
102
|
+
await deps.executionRepository.upsert(parentHome, exec);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
await deps.blockRepository.deleteMany(blockHome, ids);
|
|
106
|
+
// Drop dependency + epic edges in the source workspace that now dangle to the moved subtree.
|
|
107
|
+
await pruneDanglingEdges(deps.blockRepository, blockHome, srcBlocks, new Set(ids));
|
|
108
|
+
// Destination side: origin = the new HOME so the moved subtree fans out to the destination
|
|
109
|
+
// service's mounts (and that board). Source side: the block is gone from its old service, so
|
|
110
|
+
// the block→service join can't resolve it anymore — notify the captured source boards
|
|
111
|
+
// directly (origin-only) so they refresh the subtree away.
|
|
112
|
+
await deps.emitBoardChanged(parentHome, {
|
|
113
|
+
reason: 'block-reparented',
|
|
114
|
+
blockId: id,
|
|
115
|
+
originConnectionId,
|
|
116
|
+
});
|
|
117
|
+
for (const ws of sourceFanout) {
|
|
118
|
+
if (ws !== parentHome) {
|
|
119
|
+
await deps.emitBoardChanged(ws, { reason: 'block-reparented', originConnectionId });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return assertFound(await deps.blockRepository.get(parentHome, id), 'Block', id);
|
|
123
|
+
}
|
|
124
|
+
return { reparent };
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=reparentWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reparentWrite.js","sourceRoot":"","sources":["../../../src/modules/board/reparentWrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BlockEditAuthority } from '@cat-factory/contracts';
|
|
2
2
|
import type { RiskPolicyRepository } from '@cat-factory/kernel';
|
|
3
3
|
/**
|
|
4
4
|
* Refuse a task's merge-preset SELECTION that would relax what the selector's own role is held to.
|
|
@@ -10,23 +10,64 @@ import type { RiskPolicyRepository } from '@cat-factory/kernel';
|
|
|
10
10
|
* the guard cover CREATION too: a member authoring a task straight onto a permissive preset is
|
|
11
11
|
* moving off the default that would otherwise have governed it.
|
|
12
12
|
*
|
|
13
|
+
* A SELECTION is not the only way a task changes policy, which is why there are two methods.
|
|
14
|
+
* `riskPolicyId` resolves against the workspace that HOMES the task, so carrying the task to
|
|
15
|
+
* another home re-decides the policy while touching neither the id nor the library: the same swap,
|
|
16
|
+
* spelled as a drag. {@link RiskPolicySelectionGuard.assertMayMove} is that arm.
|
|
17
|
+
*
|
|
18
|
+
* **Every workspace named here is a HOME, never the acting board.** A board mounts services homed
|
|
19
|
+
* elsewhere, and a write on one lands at that home: the row is written there, its preset id
|
|
20
|
+
* resolves against THAT library, and a run on it is admitted through that board under the role the
|
|
21
|
+
* editor holds THERE (`blockRepository.get` is scoped by physical `workspace_id`, so a run cannot
|
|
22
|
+
* even resolve the block anywhere else). Which is why the editor arrives as a
|
|
23
|
+
* {@link BlockEditAuthority} rather than a pre-resolved actor: asking it per workspace is what
|
|
24
|
+
* keeps the policies and the role being compared answers to the same question.
|
|
25
|
+
*
|
|
13
26
|
* Read live rather than through the `riskPolicy` cache slice: this runs on a rare board write, not
|
|
14
27
|
* on the engine's per-gate path, and an authorization decision is the last place to want a
|
|
15
28
|
* stale-by-a-TTL answer on a facade whose cross-isolate invalidation is a pass-through.
|
|
16
29
|
*/
|
|
17
30
|
export interface RiskPolicySelectionGuard {
|
|
18
31
|
/**
|
|
19
|
-
* Throw a {@link ForbiddenError} when
|
|
32
|
+
* Throw a {@link ForbiddenError} when the editor may not move a task from `currentId` to
|
|
33
|
+
* `nextId` within `homeWorkspaceId`.
|
|
34
|
+
*
|
|
35
|
+
* `homeWorkspaceId` is the workspace the row LIVES in, which for a task in a mounted foreign
|
|
36
|
+
* service is not the board the request was addressed to. Both the library the two ids resolve
|
|
37
|
+
* against and the role the editor is judged under are read there, because that is where the
|
|
38
|
+
* write lands and where a run on it would be admitted.
|
|
20
39
|
*
|
|
21
40
|
* Both ids are the RAW stored/patched values: absent or empty means "the workspace default",
|
|
22
41
|
* which is a real selection with a real policy behind it, not the absence of one.
|
|
23
42
|
*/
|
|
24
43
|
assertMaySelect(input: {
|
|
25
|
-
|
|
26
|
-
|
|
44
|
+
homeWorkspaceId: string;
|
|
45
|
+
authority: BlockEditAuthority;
|
|
27
46
|
currentId: string | null | undefined;
|
|
28
47
|
nextId: string | null | undefined;
|
|
29
48
|
}): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Throw a {@link ForbiddenError} when the editor may not carry blocks pinning `riskPolicyIds`
|
|
51
|
+
* out of `fromWorkspaceId` and into `toWorkspaceId`.
|
|
52
|
+
*
|
|
53
|
+
* The two workspaces are the subtree's HOME before and after the move (a cross-home reparent,
|
|
54
|
+
* which physically migrates the rows), never the acting board. Each pinned id is resolved on
|
|
55
|
+
* both sides, because an id is only meaningful in the library that holds it: a preset belonging
|
|
56
|
+
* to the source workspace is simply dangling at the destination and falls back to ITS default,
|
|
57
|
+
* exactly like a deleted one. That is what makes the move a policy decision even when the id
|
|
58
|
+
* never changes. The editor is resolved on both sides too, and for the same reason: a role is
|
|
59
|
+
* only meaningful in the workspace that granted it.
|
|
60
|
+
*
|
|
61
|
+
* The ids arrive as the raw stored values of every RUNNABLE block in the moved subtree,
|
|
62
|
+
* deduplicated here: a module of a hundred tasks sharing one preset (or pinning none, which is
|
|
63
|
+
* the default) costs one pair of resolutions, not a hundred.
|
|
64
|
+
*/
|
|
65
|
+
assertMayMove(input: {
|
|
66
|
+
fromWorkspaceId: string;
|
|
67
|
+
toWorkspaceId: string;
|
|
68
|
+
authority: BlockEditAuthority;
|
|
69
|
+
riskPolicyIds: Iterable<string | null | undefined>;
|
|
70
|
+
}): Promise<void>;
|
|
30
71
|
}
|
|
31
72
|
export declare function createRiskPolicySelectionGuard(deps: {
|
|
32
73
|
riskPolicyRepository?: RiskPolicyRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"riskPolicySelectionGuard.d.ts","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"riskPolicySelectionGuard.d.ts","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAc,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAK3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,KAAK,EAAE;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,SAAS,EAAE,kBAAkB,CAAA;QAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;QACpC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjB;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,KAAK,EAAE;QACnB,eAAe,EAAE,MAAM,CAAA;QACvB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,kBAAkB,CAAA;QAC7B,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;KACnD,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClB;AAoCD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C,GAAG,wBAAwB,CAyE3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { refuseRiskPolicySelection } from '@cat-factory/contracts';
|
|
2
2
|
import { ForbiddenError } from '@cat-factory/kernel';
|
|
3
|
-
import { resolveRiskPolicy } from '../merge/riskPolicyResolution.js';
|
|
3
|
+
import { preloadedRiskPolicyRead, resolveRiskPolicy } from '../merge/riskPolicyResolution.js';
|
|
4
4
|
/** Why the swap was refused, in copy the person holding the picker can act on. */
|
|
5
5
|
const REFUSAL_MESSAGE = {
|
|
6
6
|
relaxes_role_sandbox: 'This task runs sandboxed for your role, and the merge policy you picked does not. Ask a ' +
|
|
@@ -10,33 +10,97 @@ const REFUSAL_MESSAGE = {
|
|
|
10
10
|
relaxes_role_class_rule: 'The merge policy you picked auto-merges changes your role is held to review on this task. ' +
|
|
11
11
|
'Ask a workspace admin to change the policy or to run this task themselves.',
|
|
12
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* The same three refusals, said about the DESTINATION rather than about a picked preset. Separate
|
|
15
|
+
* copy rather than a shared string with the noun swapped, because the person who dragged a task
|
|
16
|
+
* between two services picked no policy at all: told "the merge policy you picked", they would go
|
|
17
|
+
* looking for a picker they never touched.
|
|
18
|
+
*
|
|
19
|
+
* Both maps are the UNTRANSLATED last resort behind `details.reason`, which is what the SPA maps
|
|
20
|
+
* to its own copy (CLAUDE.md: the backend does not localize prose).
|
|
21
|
+
*/
|
|
22
|
+
const MOVE_REFUSAL_MESSAGE = {
|
|
23
|
+
relaxes_role_sandbox: 'This task runs sandboxed for your role where it is now, and the merge policy governing it ' +
|
|
24
|
+
'where you are moving it does not. Ask a workspace admin to move it.',
|
|
25
|
+
relaxes_role_submission_allowlist: 'The merge policy where you are moving this task would let your role land kinds of change it ' +
|
|
26
|
+
'is held back from here. Ask a workspace admin to move it.',
|
|
27
|
+
relaxes_role_class_rule: 'The merge policy where you are moving this task auto-merges changes your role is held to ' +
|
|
28
|
+
'review on it here. Ask a workspace admin to move it.',
|
|
29
|
+
};
|
|
13
30
|
export function createRiskPolicySelectionGuard(deps) {
|
|
31
|
+
/**
|
|
32
|
+
* A resolver for every policy in force in ONE workspace, off ONE query.
|
|
33
|
+
*
|
|
34
|
+
* The library is read whole rather than per pinned id because the alternative is the N+1 this
|
|
35
|
+
* repo bans (a point read per pin, with the workspace default re-read alongside every one of
|
|
36
|
+
* them), and a preset library is a handful of hand-maintained rows either way. The resolution
|
|
37
|
+
* itself stays `resolveRiskPolicy`, the one the engine uses, so a preloaded answer and a live
|
|
38
|
+
* one cannot diverge on a dangling id or an unseeded default.
|
|
39
|
+
*/
|
|
40
|
+
const openLibrary = async (workspaceId) => {
|
|
41
|
+
const library = (await deps.riskPolicyRepository?.list(workspaceId)) ?? [];
|
|
42
|
+
const read = preloadedRiskPolicyRead(library);
|
|
43
|
+
return (riskPolicyId) => resolveRiskPolicy({ repository: deps.riskPolicyRepository, workspaceId, riskPolicyId, read });
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Whether the rule can refuse anything at all for this pair of authorities, before either
|
|
47
|
+
* library is read. Not an optimisation the rule needs (`refuseRiskPolicySelection` decides the
|
|
48
|
+
* same cases), but it spares a round trip on the two readings that dominate: an editor with no
|
|
49
|
+
* tier on a side (an engine path, a headless key, dev-open) and one who owns the preset library.
|
|
50
|
+
*/
|
|
51
|
+
const couldRefuse = (from, to) => Boolean(from.role) && Boolean(to.role) && !from.managesPolicy && !to.managesPolicy;
|
|
14
52
|
return {
|
|
15
53
|
async assertMaySelect(input) {
|
|
16
|
-
const {
|
|
17
|
-
// Short-circuit before either read on the two cases that cannot refuse anything: an editor
|
|
18
|
-
// with no tier to be scoped by, and one who owns the preset library outright. Both are
|
|
19
|
-
// decided by the contracts rule as well, so this only spares them the round trip.
|
|
20
|
-
if (!actor.role || actor.managesPolicy)
|
|
21
|
-
return;
|
|
54
|
+
const { homeWorkspaceId, authority, currentId, nextId } = input;
|
|
22
55
|
if ((currentId ?? '') === (nextId ?? ''))
|
|
23
56
|
return;
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}),
|
|
35
|
-
]);
|
|
36
|
-
const refusal = refuseRiskPolicySelection({ from, to, actor });
|
|
57
|
+
const actor = await authority.in(homeWorkspaceId);
|
|
58
|
+
// Both sides are in force in the SAME workspace here, so one actor answers for both.
|
|
59
|
+
if (!couldRefuse(actor, actor))
|
|
60
|
+
return;
|
|
61
|
+
const policy = await openLibrary(homeWorkspaceId);
|
|
62
|
+
const [from, to] = await Promise.all([policy(currentId), policy(nextId)]);
|
|
63
|
+
const refusal = refuseRiskPolicySelection({
|
|
64
|
+
from: { policy: from, actor },
|
|
65
|
+
to: { policy: to, actor },
|
|
66
|
+
});
|
|
37
67
|
if (refusal)
|
|
38
68
|
throw new ForbiddenError(REFUSAL_MESSAGE[refusal], { reason: refusal });
|
|
39
69
|
},
|
|
70
|
+
async assertMayMove(input) {
|
|
71
|
+
const { fromWorkspaceId, toWorkspaceId, authority, riskPolicyIds } = input;
|
|
72
|
+
// A move that does not change the home changes no resolution: same library, same ids, same
|
|
73
|
+
// answer, same role. Only the cross-home half of a reparent is a policy decision.
|
|
74
|
+
if (fromWorkspaceId === toWorkspaceId)
|
|
75
|
+
return;
|
|
76
|
+
const [fromActor, toActor] = await Promise.all([
|
|
77
|
+
authority.in(fromWorkspaceId),
|
|
78
|
+
authority.in(toWorkspaceId),
|
|
79
|
+
]);
|
|
80
|
+
if (!couldRefuse(fromActor, toActor))
|
|
81
|
+
return;
|
|
82
|
+
const picks = new Set();
|
|
83
|
+
for (const id of riskPolicyIds)
|
|
84
|
+
picks.add(id ?? '');
|
|
85
|
+
if (picks.size === 0)
|
|
86
|
+
return;
|
|
87
|
+
// Two reads for the whole subtree: each home's library, once. Every pick below resolves in
|
|
88
|
+
// memory off those, so the pick count costs nothing.
|
|
89
|
+
const [fromPolicy, toPolicy] = await Promise.all([
|
|
90
|
+
openLibrary(fromWorkspaceId),
|
|
91
|
+
openLibrary(toWorkspaceId),
|
|
92
|
+
]);
|
|
93
|
+
for (const pick of picks) {
|
|
94
|
+
const id = pick || null;
|
|
95
|
+
const [held, next] = await Promise.all([fromPolicy(id), toPolicy(id)]);
|
|
96
|
+
const refusal = refuseRiskPolicySelection({
|
|
97
|
+
from: { policy: held, actor: fromActor },
|
|
98
|
+
to: { policy: next, actor: toActor },
|
|
99
|
+
});
|
|
100
|
+
if (refusal)
|
|
101
|
+
throw new ForbiddenError(MOVE_REFUSAL_MESSAGE[refusal], { reason: refusal });
|
|
102
|
+
}
|
|
103
|
+
},
|
|
40
104
|
};
|
|
41
105
|
}
|
|
42
106
|
//# sourceMappingURL=riskPolicySelectionGuard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"riskPolicySelectionGuard.js","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"riskPolicySelectionGuard.js","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UNATTRIBUTED_BLOCK_EDIT_AUTHORITY } from '@cat-factory/contracts';
|
|
2
2
|
import { countModules, describeNode } from './board-scan.logic.js';
|
|
3
3
|
/** Case-insensitive, whitespace-tolerant name match used to pair board ↔ blueprint nodes. */
|
|
4
4
|
function sameName(a, b) {
|
|
@@ -22,8 +22,8 @@ export class BoardScanService {
|
|
|
22
22
|
position: { x: 80, y: 80 },
|
|
23
23
|
});
|
|
24
24
|
// Unattributed: the engine reconciling a blueprint is not a person acting under a workspace
|
|
25
|
-
// tier, and none of these patches names a merge preset (see `
|
|
26
|
-
await this.deps.boardService.updateBlock(workspaceId, frame.id, { title: service.name, description: describeNode(service.summary, service.references) },
|
|
25
|
+
// tier, and none of these patches names a merge preset (see `BlockEditAuthority`).
|
|
26
|
+
await this.deps.boardService.updateBlock(workspaceId, frame.id, { title: service.name, description: describeNode(service.summary, service.references) }, UNATTRIBUTED_BLOCK_EDIT_AUTHORITY);
|
|
27
27
|
const planModules = service.modules ?? [];
|
|
28
28
|
// One batched insert for the whole map, not an addModule (→ full board list) per module.
|
|
29
29
|
const created = await this.deps.boardService.addModules(workspaceId, frame.id, planModules.map((m) => ({ name: m.name })));
|
|
@@ -33,7 +33,7 @@ export class BoardScanService {
|
|
|
33
33
|
continue;
|
|
34
34
|
const moduleDescription = describeNode(planModule.summary, planModule.references);
|
|
35
35
|
if (moduleDescription) {
|
|
36
|
-
await this.deps.boardService.updateBlock(workspaceId, moduleBlock.id, { description: moduleDescription },
|
|
36
|
+
await this.deps.boardService.updateBlock(workspaceId, moduleBlock.id, { description: moduleDescription }, UNATTRIBUTED_BLOCK_EDIT_AUTHORITY);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
return { frameId: frame.id, modules: planModules.length };
|
|
@@ -58,7 +58,7 @@ export class BoardScanService {
|
|
|
58
58
|
// which a human may have renamed.
|
|
59
59
|
const frameDescription = describeNode(service.summary, service.references);
|
|
60
60
|
if (frameDescription && frameDescription !== frame.description) {
|
|
61
|
-
await this.deps.boardService.updateBlock(workspaceId, frame.id, { description: frameDescription },
|
|
61
|
+
await this.deps.boardService.updateBlock(workspaceId, frame.id, { description: frameDescription }, UNATTRIBUTED_BLOCK_EDIT_AUTHORITY);
|
|
62
62
|
}
|
|
63
63
|
const moduleBlocks = blocks.filter((b) => b.parentId === frame.id && b.level === 'module');
|
|
64
64
|
const planModules = service.modules ?? [];
|
|
@@ -85,7 +85,7 @@ export class BoardScanService {
|
|
|
85
85
|
modules += 1;
|
|
86
86
|
const moduleDescription = describeNode(planModule.summary, planModule.references);
|
|
87
87
|
if (moduleDescription && moduleDescription !== moduleBlock.description) {
|
|
88
|
-
await this.deps.boardService.updateBlock(workspaceId, moduleBlock.id, { description: moduleDescription },
|
|
88
|
+
await this.deps.boardService.updateBlock(workspaceId, moduleBlock.id, { description: moduleDescription }, UNATTRIBUTED_BLOCK_EDIT_AUTHORITY);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
return { frameId: frame.id, modules };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardScanService.js","sourceRoot":"","sources":["../../../src/modules/boardScan/BoardScanService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"BoardScanService.js","sourceRoot":"","sources":["../../../src/modules/boardScan/BoardScanService.ts"],"names":[],"mappings":"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"}
|
|
@@ -397,7 +397,8 @@ export interface ExecutionServiceDependencies {
|
|
|
397
397
|
pullRequestMerger?: PullRequestMerger;
|
|
398
398
|
/**
|
|
399
399
|
* Optional: resolves a task's merge threshold preset (auto-merge ceilings + the
|
|
400
|
-
* CI-fixer attempt budget). Absent → the built-in
|
|
400
|
+
* CI-fixer attempt budget). Absent → the built-in `FALLBACK_RISK_POLICY`, which auto-merges
|
|
401
|
+
* nothing: an engine with no preset library configured lands no pull request on its own.
|
|
401
402
|
*/
|
|
402
403
|
riskPolicyRepository?: RiskPolicyRepository;
|
|
403
404
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionServiceDependencies.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionServiceDependencies.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ExecutionServiceDependencies.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionServiceDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,9 +87,9 @@ export declare class MergeResolver {
|
|
|
87
87
|
/**
|
|
88
88
|
* The track-record context a review card carries so the human can tag in the same tap.
|
|
89
89
|
*
|
|
90
|
-
* Takes only what it PROJECTS. `
|
|
91
|
-
* thread, but it
|
|
92
|
-
* here would advertise an input this function has no use for.
|
|
90
|
+
* Takes only what it PROJECTS. The `reason` rides the same {@link ReviewCardContext} the
|
|
91
|
+
* callers thread, but it decides the card's WORDING rather than its track-record link, so
|
|
92
|
+
* naming it here would advertise an input this function has no use for.
|
|
93
93
|
*/
|
|
94
94
|
private readonly trackContext;
|
|
95
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MergeResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EAEf,gBAAgB,EAChB,iBAAiB,EAIjB,eAAe,EACf,aAAa,EACb,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"MergeResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EAEf,gBAAgB,EAChB,iBAAiB,EAIjB,eAAe,EACf,aAAa,EACb,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAYlF,iFAAiF;AACjF,UAAU,eAAe;IACvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,wFAAwF;IACxF,gBAAgB,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;CAClD;AAsMD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE7D,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAA;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,6FAA6F;IAC7F,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IAClF;;;;OAIG;IACH,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrF;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;CAC3C;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,iBAAiB,EAAI;IAExD;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqK/B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IAEF;;;;;;;;;;;;OAYG;YACW,mBAAmB;IAcjC,oFAAoF;YACtE,gBAAgB;CA6B/B"}
|