@cat-factory/orchestration 0.241.0 → 0.243.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/board/BoardService.d.ts +43 -23
- package/dist/modules/board/BoardService.d.ts.map +1 -1
- package/dist/modules/board/BoardService.js +109 -126
- package/dist/modules/board/BoardService.js.map +1 -1
- package/dist/modules/board/newServiceFrameDefaults.d.ts +18 -1
- package/dist/modules/board/newServiceFrameDefaults.d.ts.map +1 -1
- package/dist/modules/board/newServiceFrameDefaults.js +17 -0
- package/dist/modules/board/newServiceFrameDefaults.js.map +1 -1
- package/dist/modules/board/publicBoardReads.d.ts +56 -2
- package/dist/modules/board/publicBoardReads.d.ts.map +1 -1
- package/dist/modules/board/publicBoardReads.js +53 -0
- package/dist/modules/board/publicBoardReads.js.map +1 -1
- package/dist/modules/board/serviceRepoLinkage.d.ts +51 -0
- package/dist/modules/board/serviceRepoLinkage.d.ts.map +1 -0
- package/dist/modules/board/serviceRepoLinkage.js +54 -0
- package/dist/modules/board/serviceRepoLinkage.js.map +1 -0
- package/dist/modules/board/sharedServiceMount.d.ts +30 -0
- package/dist/modules/board/sharedServiceMount.d.ts.map +1 -0
- package/dist/modules/board/sharedServiceMount.js +91 -0
- package/dist/modules/board/sharedServiceMount.js.map +1 -0
- package/dist/modules/execution/AgentContextBuilder.d.ts +8 -9
- package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
- package/dist/modules/execution/AgentContextBuilder.js +12 -57
- package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
- package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
- package/dist/modules/execution/RunDispatcher.js +9 -4
- package/dist/modules/execution/RunDispatcher.js.map +1 -1
- package/dist/modules/execution/VisualConfirmationController.d.ts.map +1 -1
- package/dist/modules/execution/VisualConfirmationController.js +18 -44
- package/dist/modules/execution/VisualConfirmationController.js.map +1 -1
- package/dist/modules/execution/block-reference-set.d.ts +53 -0
- package/dist/modules/execution/block-reference-set.d.ts.map +1 -0
- package/dist/modules/execution/block-reference-set.js +68 -0
- package/dist/modules/execution/block-reference-set.js.map +1 -0
- package/dist/modules/execution/builder-block-payload.d.ts +33 -0
- package/dist/modules/execution/builder-block-payload.d.ts.map +1 -0
- package/dist/modules/execution/builder-block-payload.js +57 -0
- package/dist/modules/execution/builder-block-payload.js.map +1 -0
- package/dist/modules/execution/run-context-admission.d.ts.map +1 -1
- package/dist/modules/execution/run-context-admission.js +1 -0
- package/dist/modules/execution/run-context-admission.js.map +1 -1
- package/dist/modules/execution/run-reference-screenshots.d.ts +63 -0
- package/dist/modules/execution/run-reference-screenshots.d.ts.map +1 -0
- package/dist/modules/execution/run-reference-screenshots.js +122 -0
- package/dist/modules/execution/run-reference-screenshots.js.map +1 -0
- package/dist/modules/execution/visual-confirm-design-references.d.ts +7 -0
- package/dist/modules/execution/visual-confirm-design-references.d.ts.map +1 -1
- package/dist/modules/execution/visual-confirm-design-references.js +6 -3
- package/dist/modules/execution/visual-confirm-design-references.js.map +1 -1
- package/package.json +11 -11
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { type RegistrationProblem, type ValidateRegistrationsOptions, collectRegistrationProblems, validateRegistrations, validateRegistrationsOnce, resetRegistrationValidationGuard, } from './validation/validateRegistrations.js';
|
|
2
2
|
export { BoardService, type BoardServiceDependencies } from './modules/board/BoardService.js';
|
|
3
|
+
export type { PublicRepoOption } from './modules/board/publicBoardReads.js';
|
|
3
4
|
export * as boardLogic from './modules/board/board.logic.js';
|
|
4
5
|
export { sweepBinaryArtifactRetention } from './modules/artifacts/artifactRetention.js';
|
|
5
6
|
export { PipelineService, type PipelineServiceDependencies, } from './modules/pipelines/PipelineService.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC7F,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAA;AAEvF,OAAO,EACL,eAAe,EACf,KAAK,2BAA2B,GACjC,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EACL,gBAAgB,EAChB,KAAK,4BAA4B,GAClC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AAI9F,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AACtF,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAInF,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,UAAU,GAChB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,KAAK,SAAS,GACf,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAA;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,kBAAkB,GACxB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EACL,wBAAwB,EACxB,KAAK,oCAAoC,GAC1C,MAAM,iDAAiD,CAAA;AACxD,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,GACnC,MAAM,2CAA2C,CAAA;AAClD,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,GACxC,MAAM,+CAA+C,CAAA;AACtD,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AAEtE,OAAO,EACL,mBAAmB,EACnB,KAAK,+BAA+B,GACrC,MAAM,gDAAgD,CAAA;AAIvD,OAAO,EACL,2BAA2B,EAC3B,KAAK,uCAAuC,GAC7C,MAAM,wDAAwD,CAAA;AAI/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,GACnC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,EACxC,KAAK,wBAAwB,GAC9B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,cAAc,EACd,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,iBAAiB,GAClB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,GACnC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,EACL,wBAAwB,EACxB,KAAK,oCAAoC,GAC1C,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,GACzC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,wBAAwB,EACxB,KAAK,oCAAoC,GAC1C,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACL,oBAAoB,EACpB,KAAK,gCAAgC,GACtC,MAAM,iDAAiD,CAAA;AACxD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,mCAAmC,EACnC,KAAK,kCAAkC,EACvC,KAAK,uBAAuB,GAC7B,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EACL,cAAc,EACd,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,yBAAyB,EACzB,KAAK,qCAAqC,GAC3C,MAAM,2DAA2D,CAAA;AAClE,OAAO,EACL,kBAAkB,EAClB,KAAK,8BAA8B,EACnC,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,qBAAqB,EACrB,KAAK,iCAAiC,GACvC,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,KAAK,8BAA8B,GACpC,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,6BAA6B,EAC7B,KAAK,yCAAyC,GAC/C,MAAM,0DAA0D,CAAA;AACjE,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,sCAAsC,EAC3C,KAAK,uBAAuB,GAC7B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EACL,8BAA8B,EAC9B,KAAK,0CAA0C,GAChD,MAAM,qEAAqE,CAAA;AAE5E,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,EACxC,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAI5B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACL,gCAAgC,EAChC,KAAK,4CAA4C,EACjD,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,6DAA6D,CAAA;AACpE,OAAO,EACL,+BAA+B,EAC/B,KAAK,2CAA2C,EAChD,sBAAsB,GACvB,MAAM,4DAA4D,CAAA;AACnE,OAAO,EACL,4BAA4B,EAC5B,KAAK,wCAAwC,EAC7C,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,4BAA4B,EAC5B,KAAK,wCAAwC,GAC9C,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,cAAc,EACd,KAAK,0BAA0B,GAChC,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,GACjB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,iDAAiD,CAAA;AACxD,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,aAAa,GACnB,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,uBAAuB,EACvB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,GAChC,MAAM,kDAAkD,CAAA;AACzD,OAAO,EACL,yBAAyB,EACzB,KAAK,iBAAiB,GACvB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,cAAc,GACpB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,2BAA2B,GACjC,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,GACzB,MAAM,yCAAyC,CAAA;AAEhD,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,GAC/B,MAAM,qDAAqD,CAAA;AAE5D,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,GAC/B,MAAM,kDAAkD,CAAA;AAEzD,OAAO,EACL,gBAAgB,EAChB,KAAK,4BAA4B,GAClC,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,cAAc,MAAM,yCAAyC,CAAA;AAEzE,OAAO,EACL,wBAAwB,EACxB,KAAK,oCAAoC,GAC1C,MAAM,oDAAoD,CAAA;AAC3D,OAAO,KAAK,iBAAiB,MAAM,8CAA8C,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AACjG,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAE/D,OAAO,EACL,oBAAoB,EACpB,KAAK,gCAAgC,GACtC,MAAM,2CAA2C,CAAA;AAClD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAElE,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,GACnC,MAAM,2CAA2C,CAAA;AAClD,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAA;AAE3E,OAAO,EACL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,UAAU,GACX,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,sFAAsF;AACtF,2FAA2F;AAC3F,mCAAmC;AACnC,OAAO,EAGL,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAiC,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,9 @@ import type { BlockRepository, Clock, ExecutionEventPublisher, ExecutionReposito
|
|
|
4
4
|
import type { IdGenerator } from '@cat-factory/kernel';
|
|
5
5
|
import type { ReviewFrictionNotificationReader } from './reviewFrictionGuard.js';
|
|
6
6
|
import type { WorkspaceSettingsReader } from './workspaceSettingsReader.js';
|
|
7
|
+
import { type PublicRepoOption } from './publicBoardReads.js';
|
|
8
|
+
import type { SharedServicePolicy } from './serviceRepoLinkage.js';
|
|
9
|
+
export type { SharedServicePolicy } from './serviceRepoLinkage.js';
|
|
7
10
|
export type { ReviewFrictionNotificationReader } from './reviewFrictionGuard.js';
|
|
8
11
|
export type { WorkspaceSettingsReader } from './workspaceSettingsReader.js';
|
|
9
12
|
export interface BoardServiceDependencies {
|
|
@@ -186,6 +189,12 @@ export declare class BoardService {
|
|
|
186
189
|
* mount for a frame, and project it onto anything a mutation hands back.
|
|
187
190
|
*/
|
|
188
191
|
private readonly mountProjection;
|
|
192
|
+
/**
|
|
193
|
+
* The repo side of `addServiceFromRepo` (see sharedServiceMount.ts): the account-wide dedupe
|
|
194
|
+
* that mounts an existing whole-repo service, and the repository-wide monorepo flag write it
|
|
195
|
+
* has to stay ordered behind.
|
|
196
|
+
*/
|
|
197
|
+
private readonly sharedServiceMount;
|
|
189
198
|
/**
|
|
190
199
|
* What a new task's TYPE implies for the row `addTask` writes (see taskTypeCreationDefaults.ts):
|
|
191
200
|
* the fragment set it owns from creation, and the pipeline its Run controls default to.
|
|
@@ -276,7 +285,14 @@ export declare class BoardService {
|
|
|
276
285
|
* workspace's data, never reach across into another's.
|
|
277
286
|
*/
|
|
278
287
|
private resolveBlockHomeForRemoval;
|
|
279
|
-
/**
|
|
288
|
+
/**
|
|
289
|
+
* Add a top-level frame (service/api/database/…) to the board.
|
|
290
|
+
*
|
|
291
|
+
* `title`, `description` and `position` are each optional and each falls back to what drag-drop
|
|
292
|
+
* has always produced. The fallbacks are what let a caller with NO CANVAS create a frame at all:
|
|
293
|
+
* the public API's service creation deliberately publishes no coordinate system (a board layout
|
|
294
|
+
* is ergonomics for a human looking at one), so it names the service and lets the board place it.
|
|
295
|
+
*/
|
|
280
296
|
addFrame(workspaceId: string, input: AddFrameInput): Promise<Block>;
|
|
281
297
|
/**
|
|
282
298
|
* Add a service frame backed by an existing GitHub repo the workspace already
|
|
@@ -285,21 +301,16 @@ export declare class BoardService {
|
|
|
285
301
|
* projection row is linked to it so execution resolves this repo for tasks
|
|
286
302
|
* dropped on the frame. The frontend's drag-drop path uses {@link addFrame};
|
|
287
303
|
* this is the "import an existing repo as a service" button.
|
|
304
|
+
*
|
|
305
|
+
* `sharedService` decides what a repository that already backs an account service homed on
|
|
306
|
+
* ANOTHER board means here; see {@link SharedServicePolicy}. It defaults to the app's `mount`,
|
|
307
|
+
* so only a caller that cannot address a foreign-homed frame has to say so.
|
|
308
|
+
*
|
|
309
|
+
* NOTHING is written until every guard has passed — including the repository's own `isMonorepo`
|
|
310
|
+
* flag, which this call may change. See `serviceRepoLinkage.ts` for why that ordering is the
|
|
311
|
+
* rule and not an accident.
|
|
288
312
|
*/
|
|
289
|
-
addServiceFromRepo(workspaceId: string, input: AddServiceFromRepoInput): Promise<Block>;
|
|
290
|
-
/**
|
|
291
|
-
* The account's existing WHOLE-REPO (non-monorepo, no subdirectory) service for a repo, or null.
|
|
292
|
-
* Account-scoped so it dedups a shared repo across the org regardless of which installation each
|
|
293
|
-
* board reached it through. Requires the service repo to be wired.
|
|
294
|
-
*/
|
|
295
|
-
private findAccountWholeRepoService;
|
|
296
|
-
/**
|
|
297
|
-
* Mount an EXISTING account-owned service onto `workspaceId` and return its frame block —
|
|
298
|
-
* the shared-service path taken by {@link addServiceFromRepo} when the repo already backs a
|
|
299
|
-
* service. Mounting (not re-creating) is how two boards in one org work on the same service
|
|
300
|
-
* with a shared subtree/task list. Same-org only; idempotent when already mounted here.
|
|
301
|
-
*/
|
|
302
|
-
private mountExistingService;
|
|
313
|
+
addServiceFromRepo(workspaceId: string, input: AddServiceFromRepoInput, sharedService?: SharedServicePolicy): Promise<Block>;
|
|
303
314
|
/**
|
|
304
315
|
* A document repository is authored, not implemented: it accepts only document/spike tasks
|
|
305
316
|
* (there is no code-producing pipeline for it). Enforced everywhere a task can enter a frame
|
|
@@ -329,6 +340,8 @@ export declare class BoardService {
|
|
|
329
340
|
countActiveInternalTasks(workspaceId: string): Promise<number>;
|
|
330
341
|
/** Public-API: the workspace's board services (visible service frames). */
|
|
331
342
|
listServices(workspaceId: string): Promise<Block[]>;
|
|
343
|
+
/** Public-API: the repositories a service can be created against, and what already backs each. */
|
|
344
|
+
listRepoOptions(workspaceId: string): Promise<PublicRepoOption[]>;
|
|
332
345
|
/** Public-API: create a task under a visible service frame the workspace owns. */
|
|
333
346
|
addServiceTask(workspaceId: string, serviceId: string, input: AddTaskInput, editor: BlockEditAuthority): Promise<Block>;
|
|
334
347
|
/** Public-API: refuse a service frame that cannot hold a new task, before doing work for one. */
|
|
@@ -418,13 +431,20 @@ export declare class BoardService {
|
|
|
418
431
|
private setArchived;
|
|
419
432
|
/** Toggle a dependency edge: target dependsOn source. */
|
|
420
433
|
toggleDependency(workspaceId: string, targetId: string, sourceId: string): Promise<Block>;
|
|
434
|
+
/**
|
|
435
|
+
* Set a dependency edge EXPLICITLY: `linked` true declares that `targetId` waits for `sourceId`,
|
|
436
|
+
* false drops the edge. Idempotent in both directions: an edge already in the requested state
|
|
437
|
+
* is a no-op returning the block as it stands.
|
|
438
|
+
*
|
|
439
|
+
* The explicit form beside {@link toggleDependency} rather than instead of it, because the two
|
|
440
|
+
* doors want different things and neither is the other's read-modify-write. The board CANVAS
|
|
441
|
+
* toggles: a human clicks an edge they can see, so "flip it" is exactly the intent. An API caller
|
|
442
|
+
* declares: a provisioning integration re-running its own setup must converge, and a toggle would
|
|
443
|
+
* INVERT every edge it declared last time, silently, since both calls succeed and the graph it
|
|
444
|
+
* asked for is the one it does not get. Deriving the explicit form from the toggle would mean the
|
|
445
|
+
* caller reading the graph first and racing whoever else is editing it.
|
|
446
|
+
*/
|
|
447
|
+
setDependency(workspaceId: string, targetId: string, sourceId: string, linked: boolean): Promise<Block>;
|
|
448
|
+
private writeDependency;
|
|
421
449
|
}
|
|
422
|
-
/**
|
|
423
|
-
* Coerce a user-supplied monorepo service subdirectory into a clean, SAFE relative path
|
|
424
|
-
* (or undefined when absent/empty): normalise separators, drop `.`/empty segments, and
|
|
425
|
-
* reject any `..` segment or absolute path so the stored value can never escape the repo
|
|
426
|
-
* checkout when it later becomes an agent's cwd. Mirrors the harness's `sanitizeService
|
|
427
|
-
* Directory`, kept here so a bad value is rejected before the service row is written.
|
|
428
|
-
*/
|
|
429
|
-
export declare function normalizeServiceDirectory(raw: string | undefined): string | undefined;
|
|
430
450
|
//# sourceMappingURL=BoardService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardService.d.ts","sourceRoot":"","sources":["../../../src/modules/board/BoardService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EAGX,QAAQ,EACR,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EACV,eAAe,EACf,KAAK,EACL,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,MAAM,EACN,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"BoardService.d.ts","sourceRoot":"","sources":["../../../src/modules/board/BoardService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { assertFound, ValidationError } from '@cat-factory/kernel';
|
|
2
2
|
import { BLOCK_TYPE_LABEL } from '@cat-factory/kernel';
|
|
3
|
-
import {
|
|
3
|
+
import { noopLogger, registerServiceForFrame, requireWorkspace } from '@cat-factory/kernel';
|
|
4
4
|
import { createBoardLayoutWrites } from './layoutWrites.js';
|
|
5
5
|
import { createBoardReparentWrite } from './reparentWrite.js';
|
|
6
6
|
import { createMountProjection } from './mountProjection.js';
|
|
7
7
|
import { pruneDanglingEdges, reclaimDoomedEntities } from './removal-cascade.js';
|
|
8
8
|
import { canReparent, descendantIds, gridSlot, serviceOf, tasksOf, unfinishedTasksUnder, wouldCreateCycle, } from './board.logic.js';
|
|
9
9
|
import { ReviewFrictionGuard } from './reviewFrictionGuard.js';
|
|
10
|
-
import { resolveNewServiceFrameDefaults } from './newServiceFrameDefaults.js';
|
|
10
|
+
import { nextFrameSlot, resolveNewServiceFrameDefaults } from './newServiceFrameDefaults.js';
|
|
11
11
|
import { createInternalAnchors } from './internalAnchors.js';
|
|
12
12
|
import { PublicBoardReads } from './publicBoardReads.js';
|
|
13
13
|
import { buildReviewDescription, resolveReviewTaskTarget } from './reviewTaskTarget.js';
|
|
@@ -15,6 +15,8 @@ import { createBlockPatchNarrowing } from './blockPatchNarrowing.js';
|
|
|
15
15
|
import { applyTaskTypeFieldsPatch } from './taskTypeFieldsPatch.js';
|
|
16
16
|
import { createTaskTypeCreationDefaults } from './taskTypeCreationDefaults.js';
|
|
17
17
|
import { createRiskPolicySelectionGuard } from './riskPolicySelectionGuard.js';
|
|
18
|
+
import { createSharedServiceMount } from './sharedServiceMount.js';
|
|
19
|
+
import { resolveServiceRepoLinkage } from './serviceRepoLinkage.js';
|
|
18
20
|
/**
|
|
19
21
|
* Board mutations: frames, modules, tasks and the dependency edges between them.
|
|
20
22
|
* Mirrors the operations the frontend's board store performs locally, but
|
|
@@ -64,6 +66,12 @@ export class BoardService {
|
|
|
64
66
|
* mount for a frame, and project it onto anything a mutation hands back.
|
|
65
67
|
*/
|
|
66
68
|
mountProjection;
|
|
69
|
+
/**
|
|
70
|
+
* The repo side of `addServiceFromRepo` (see sharedServiceMount.ts): the account-wide dedupe
|
|
71
|
+
* that mounts an existing whole-repo service, and the repository-wide monorepo flag write it
|
|
72
|
+
* has to stay ordered behind.
|
|
73
|
+
*/
|
|
74
|
+
sharedServiceMount;
|
|
67
75
|
/**
|
|
68
76
|
* What a new task's TYPE implies for the row `addTask` writes (see taskTypeCreationDefaults.ts):
|
|
69
77
|
* the fragment set it owns from creation, and the pipeline its Run controls default to.
|
|
@@ -106,6 +114,16 @@ export class BoardService {
|
|
|
106
114
|
serviceRepository,
|
|
107
115
|
workspaceMountRepository,
|
|
108
116
|
});
|
|
117
|
+
this.sharedServiceMount = createSharedServiceMount({
|
|
118
|
+
blockRepository,
|
|
119
|
+
workspaceRepository,
|
|
120
|
+
clock,
|
|
121
|
+
serviceRepository,
|
|
122
|
+
workspaceMountRepository,
|
|
123
|
+
repoProjectionRepository,
|
|
124
|
+
repoProjectionCache,
|
|
125
|
+
emitBoardChanged: (workspaceId, change) => this.emitBoardChanged(workspaceId, change),
|
|
126
|
+
});
|
|
109
127
|
this.taskTypeDefaults = createTaskTypeCreationDefaults({
|
|
110
128
|
taskTypeRegistry,
|
|
111
129
|
promptFragmentSource,
|
|
@@ -152,6 +170,9 @@ export class BoardService {
|
|
|
152
170
|
});
|
|
153
171
|
this.publicReads = new PublicBoardReads({
|
|
154
172
|
blockRepository,
|
|
173
|
+
repoProjectionRepository,
|
|
174
|
+
serviceRepository,
|
|
175
|
+
accountOf: (workspaceId) => workspaceRepository.accountOf(workspaceId),
|
|
155
176
|
requireWorkspace: (workspaceId) => this.requireWorkspace(workspaceId),
|
|
156
177
|
addTask: (workspaceId, containerId, input, editor, createdBy) => this.addTask(workspaceId, containerId, input, editor, createdBy),
|
|
157
178
|
});
|
|
@@ -294,7 +315,14 @@ export class BoardService {
|
|
|
294
315
|
}
|
|
295
316
|
return workspaceId;
|
|
296
317
|
}
|
|
297
|
-
/**
|
|
318
|
+
/**
|
|
319
|
+
* Add a top-level frame (service/api/database/…) to the board.
|
|
320
|
+
*
|
|
321
|
+
* `title`, `description` and `position` are each optional and each falls back to what drag-drop
|
|
322
|
+
* has always produced. The fallbacks are what let a caller with NO CANVAS create a frame at all:
|
|
323
|
+
* the public API's service creation deliberately publishes no coordinate system (a board layout
|
|
324
|
+
* is ergonomics for a human looking at one), so it names the service and lets the board place it.
|
|
325
|
+
*/
|
|
298
326
|
async addFrame(workspaceId, input) {
|
|
299
327
|
await this.requireWorkspace(workspaceId);
|
|
300
328
|
const blocks = await this.blockRepository.listByWorkspace(workspaceId);
|
|
@@ -303,10 +331,10 @@ export class BoardService {
|
|
|
303
331
|
const { serviceFragmentIds, provisioning } = await this.newFrameDefaults(workspaceId);
|
|
304
332
|
const block = {
|
|
305
333
|
id: this.idGenerator.next('blk'),
|
|
306
|
-
title: `${BLOCK_TYPE_LABEL[type]} ${count}`,
|
|
334
|
+
title: input.title ?? `${BLOCK_TYPE_LABEL[type]} ${count}`,
|
|
307
335
|
type,
|
|
308
|
-
description: 'Newly dropped building block. Drag a pipeline onto it to start.',
|
|
309
|
-
position: input.position,
|
|
336
|
+
description: input.description ?? 'Newly dropped building block. Drag a pipeline onto it to start.',
|
|
337
|
+
position: input.position ?? nextFrameSlot(blocks),
|
|
310
338
|
status: 'planned',
|
|
311
339
|
progress: 0,
|
|
312
340
|
dependsOn: [],
|
|
@@ -329,52 +357,50 @@ export class BoardService {
|
|
|
329
357
|
* projection row is linked to it so execution resolves this repo for tasks
|
|
330
358
|
* dropped on the frame. The frontend's drag-drop path uses {@link addFrame};
|
|
331
359
|
* this is the "import an existing repo as a service" button.
|
|
360
|
+
*
|
|
361
|
+
* `sharedService` decides what a repository that already backs an account service homed on
|
|
362
|
+
* ANOTHER board means here; see {@link SharedServicePolicy}. It defaults to the app's `mount`,
|
|
363
|
+
* so only a caller that cannot address a foreign-homed frame has to say so.
|
|
364
|
+
*
|
|
365
|
+
* NOTHING is written until every guard has passed — including the repository's own `isMonorepo`
|
|
366
|
+
* flag, which this call may change. See `serviceRepoLinkage.ts` for why that ordering is the
|
|
367
|
+
* rule and not an accident.
|
|
332
368
|
*/
|
|
333
|
-
async addServiceFromRepo(workspaceId, input) {
|
|
369
|
+
async addServiceFromRepo(workspaceId, input, sharedService = 'mount') {
|
|
334
370
|
await this.requireWorkspace(workspaceId);
|
|
335
371
|
if (!this.repoProjectionRepository) {
|
|
336
372
|
throw new ValidationError('GitHub integration is not configured');
|
|
337
373
|
}
|
|
338
374
|
const repo = assertFound(await this.repoProjectionRepository.get(workspaceId, input.repoGithubId), 'GitHubRepo', String(input.repoGithubId));
|
|
339
|
-
// The monorepo flag
|
|
340
|
-
//
|
|
341
|
-
//
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
repo.isMonorepo = input.isMonorepo;
|
|
345
|
-
// The monorepo flag decides whether `resolveRepoTarget` hands agents the service
|
|
346
|
-
// subdirectory, so drop the cached projection or a warmed entry keeps serving the
|
|
347
|
-
// old flag until its TTL — the agent would run at the repo root instead of the pin.
|
|
348
|
-
await this.repoProjectionCache?.invalidateGroup(workspaceId);
|
|
349
|
-
}
|
|
350
|
-
// Normalise the requested service subdirectory to a clean, SAFE relative path:
|
|
351
|
-
// strip slashes/`.` and reject any `..` segment, so a stored directory can never
|
|
352
|
-
// point an agent's cwd outside the checkout (the harness enforces the same — this
|
|
353
|
-
// is defence in depth, and surfaces a clean error before the row is written).
|
|
354
|
-
const directory = normalizeServiceDirectory(input.directory);
|
|
375
|
+
// The monorepo flag rides the add request (no separate up-front PATCH), so every guard below
|
|
376
|
+
// reads the flag as it will stand AFTER this call rather than as it is stored, and the
|
|
377
|
+
// subdirectory is normalised to a safe relative path before anything can store it.
|
|
378
|
+
const linkage = resolveServiceRepoLinkage(input, repo.isMonorepo === true);
|
|
379
|
+
const { directory } = linkage;
|
|
355
380
|
// A monorepo can back SEVERAL service frames (one per subdirectory), so the
|
|
356
|
-
// single-service guard applies only to whole-repo (non-monorepo) repos.
|
|
357
|
-
// service MUST name its subdirectory so execution can scope agents to it. The link
|
|
381
|
+
// single-service guard applies only to whole-repo (non-monorepo) repos. The link
|
|
358
382
|
// is the account-owned Service, so a duplicate is detected via `getByRepo`.
|
|
359
|
-
if (!
|
|
383
|
+
if (!linkage.isMonorepo && this.serviceRepository) {
|
|
360
384
|
// Dedup ACCOUNT-scoped (not just same-installation): a service is account-owned and shared
|
|
361
385
|
// across the org's boards, so an existing whole-repo service for this repo anywhere in the
|
|
362
386
|
// account must be MOUNTED here — not duplicated by minting a rival (which could happen if two
|
|
363
387
|
// boards reach the repo through different installations). Mounting gives both boards one
|
|
364
388
|
// shared subtree + task list (composeBoard); idempotent when already on this board. Monorepos
|
|
365
389
|
// are exempt — each subdirectory is its own service (handled by the directory guard below).
|
|
366
|
-
const existing = await this.findAccountWholeRepoService(workspaceId, repo.githubId);
|
|
390
|
+
const existing = await this.sharedServiceMount.findAccountWholeRepoService(workspaceId, repo.githubId);
|
|
367
391
|
if (existing) {
|
|
368
|
-
|
|
392
|
+
// Mount FIRST: it carries the last two refusals this path can raise (a cross-account
|
|
393
|
+
// service, a stale orphan frame, and a foreign home under `refuse`), and the flag write
|
|
394
|
+
// below must not outlive one of them.
|
|
395
|
+
const mounted = await this.sharedServiceMount.mountExistingService(workspaceId, existing, sharedService, input.position);
|
|
396
|
+
await this.sharedServiceMount.persistMonorepoFlag(workspaceId, repo, linkage);
|
|
397
|
+
return mounted;
|
|
369
398
|
}
|
|
370
399
|
}
|
|
371
|
-
if (repo.isMonorepo && !directory) {
|
|
372
|
-
throw new ValidationError('Select a service directory for this monorepo');
|
|
373
|
-
}
|
|
374
400
|
const blocks = await this.blockRepository.listByWorkspace(workspaceId);
|
|
375
401
|
// Each subdirectory of a monorepo backs at most one service — reject a duplicate so
|
|
376
402
|
// two frames don't fight over the same subtree (each resolves to the same repo+dir).
|
|
377
|
-
if (
|
|
403
|
+
if (linkage.isMonorepo && directory && this.serviceRepository) {
|
|
378
404
|
// One batched read for every frame's service, not a getByFrameBlock per frame (N+1).
|
|
379
405
|
const frameIds = blocks.filter((b) => b.level === 'frame').map((b) => b.id);
|
|
380
406
|
const existing = await this.serviceRepository.listByFrameBlocks(frameIds);
|
|
@@ -382,19 +408,20 @@ export class BoardService {
|
|
|
382
408
|
throw new ValidationError(`A service for '${directory}' already exists in this repository`);
|
|
383
409
|
}
|
|
384
410
|
}
|
|
385
|
-
|
|
411
|
+
await this.sharedServiceMount.persistMonorepoFlag(workspaceId, repo, linkage);
|
|
386
412
|
const title = directory ? (directory.split('/').pop() ?? repo.name) : repo.name;
|
|
387
413
|
const { serviceFragmentIds, provisioning } = await this.newFrameDefaults(workspaceId);
|
|
388
414
|
const frameType = input.type ?? 'service';
|
|
389
415
|
const roleLabel = BLOCK_TYPE_LABEL[frameType];
|
|
390
416
|
const block = {
|
|
391
417
|
id: this.idGenerator.next('blk'),
|
|
392
|
-
title,
|
|
418
|
+
title: input.title ?? title,
|
|
393
419
|
type: frameType,
|
|
394
|
-
description:
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
420
|
+
description: input.description ??
|
|
421
|
+
(directory
|
|
422
|
+
? `${roleLabel} backed by ${repo.owner}/${repo.name} (${directory}/).`
|
|
423
|
+
: `${roleLabel} backed by ${repo.owner}/${repo.name}.`),
|
|
424
|
+
position: input.position ?? nextFrameSlot(blocks),
|
|
398
425
|
status: 'ready',
|
|
399
426
|
progress: 0,
|
|
400
427
|
dependsOn: [],
|
|
@@ -414,65 +441,6 @@ export class BoardService {
|
|
|
414
441
|
await this.emitBoardChanged(workspaceId, { reason: 'block-added', blockId: block.id });
|
|
415
442
|
return block;
|
|
416
443
|
}
|
|
417
|
-
/**
|
|
418
|
-
* The account's existing WHOLE-REPO (non-monorepo, no subdirectory) service for a repo, or null.
|
|
419
|
-
* Account-scoped so it dedups a shared repo across the org regardless of which installation each
|
|
420
|
-
* board reached it through. Requires the service repo to be wired.
|
|
421
|
-
*/
|
|
422
|
-
async findAccountWholeRepoService(workspaceId, repoGithubId) {
|
|
423
|
-
if (!this.serviceRepository)
|
|
424
|
-
return null;
|
|
425
|
-
const account = (await this.workspaceRepository.accountOf(workspaceId)) ?? null;
|
|
426
|
-
const services = await this.serviceRepository.listByAccount(account);
|
|
427
|
-
return services.find((s) => s.repoGithubId === repoGithubId && !s.directory) ?? null;
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Mount an EXISTING account-owned service onto `workspaceId` and return its frame block —
|
|
431
|
-
* the shared-service path taken by {@link addServiceFromRepo} when the repo already backs a
|
|
432
|
-
* service. Mounting (not re-creating) is how two boards in one org work on the same service
|
|
433
|
-
* with a shared subtree/task list. Same-org only; idempotent when already mounted here.
|
|
434
|
-
*/
|
|
435
|
-
async mountExistingService(workspaceId, service, position) {
|
|
436
|
-
if (!this.workspaceMountRepository) {
|
|
437
|
-
throw new ValidationError('This repository is already linked to a board service');
|
|
438
|
-
}
|
|
439
|
-
// A service is shared strictly within its account — never mount one from another org.
|
|
440
|
-
const account = await this.workspaceRepository.accountOf(workspaceId);
|
|
441
|
-
if ((account ?? null) !== (service.accountId ?? null)) {
|
|
442
|
-
throw new ValidationError('This repository is already linked to a service in another organization');
|
|
443
|
-
}
|
|
444
|
-
const home = await this.blockRepository.findById(service.frameBlockId);
|
|
445
|
-
if (!home) {
|
|
446
|
-
// The service's frame block is gone (a stale orphan). Surface a clean error rather than
|
|
447
|
-
// mounting a dead frame; the delete cascade normally reclaims such orphans.
|
|
448
|
-
throw new ValidationError('This repository is already linked to a board service');
|
|
449
|
-
}
|
|
450
|
-
let mount = await this.workspaceMountRepository.get(workspaceId, service.id);
|
|
451
|
-
if (!mount) {
|
|
452
|
-
const existingMounts = await this.workspaceMountRepository.listByWorkspace(workspaceId);
|
|
453
|
-
// Lay a new mount out on a 5-wide grid (matching ServiceMountService) when no explicit
|
|
454
|
-
// position is given, so shared services don't pile onto the same point.
|
|
455
|
-
const n = existingMounts.length;
|
|
456
|
-
mount = {
|
|
457
|
-
workspaceId,
|
|
458
|
-
serviceId: service.id,
|
|
459
|
-
position: position ?? { x: 80 + (n % 5) * 48, y: 80 + Math.floor(n / 5) * 48 },
|
|
460
|
-
size: null,
|
|
461
|
-
createdAt: this.clock.now(),
|
|
462
|
-
};
|
|
463
|
-
await this.workspaceMountRepository.upsert(mount);
|
|
464
|
-
// Fan out from the frame's HOME so every board mounting the shared service refreshes. A
|
|
465
|
-
// FRAME, and each target board reads its own mount, so there is no payload to carry.
|
|
466
|
-
await this.emitBoardChanged(home.workspaceId, {
|
|
467
|
-
reason: 'block-added',
|
|
468
|
-
blockId: home.block.id,
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
// The frame block is the one homed on ANOTHER board, carrying that board's coordinates —
|
|
472
|
-
// return it placed where THIS board just mounted it, or the SPA drops the imported service
|
|
473
|
-
// at the home board's spot until the next full refresh.
|
|
474
|
-
return applyMountLayout(home.block, mount);
|
|
475
|
-
}
|
|
476
444
|
/**
|
|
477
445
|
* A document repository is authored, not implemented: it accepts only document/spike tasks
|
|
478
446
|
* (there is no code-producing pipeline for it). Enforced everywhere a task can enter a frame
|
|
@@ -654,6 +622,10 @@ export class BoardService {
|
|
|
654
622
|
listServices(workspaceId) {
|
|
655
623
|
return this.publicReads.listServices(workspaceId);
|
|
656
624
|
}
|
|
625
|
+
/** Public-API: the repositories a service can be created against, and what already backs each. */
|
|
626
|
+
listRepoOptions(workspaceId) {
|
|
627
|
+
return this.publicReads.listRepoOptions(workspaceId);
|
|
628
|
+
}
|
|
657
629
|
/** Public-API: create a task under a visible service frame the workspace owns. */
|
|
658
630
|
addServiceTask(workspaceId, serviceId, input, editor) {
|
|
659
631
|
return this.publicReads.addServiceTask(workspaceId, serviceId, input, editor);
|
|
@@ -958,19 +930,52 @@ export class BoardService {
|
|
|
958
930
|
}
|
|
959
931
|
/** Toggle a dependency edge: target dependsOn source. */
|
|
960
932
|
async toggleDependency(workspaceId, targetId, sourceId) {
|
|
933
|
+
return this.writeDependency(workspaceId, targetId, sourceId, 'toggle');
|
|
934
|
+
}
|
|
935
|
+
/**
|
|
936
|
+
* Set a dependency edge EXPLICITLY: `linked` true declares that `targetId` waits for `sourceId`,
|
|
937
|
+
* false drops the edge. Idempotent in both directions: an edge already in the requested state
|
|
938
|
+
* is a no-op returning the block as it stands.
|
|
939
|
+
*
|
|
940
|
+
* The explicit form beside {@link toggleDependency} rather than instead of it, because the two
|
|
941
|
+
* doors want different things and neither is the other's read-modify-write. The board CANVAS
|
|
942
|
+
* toggles: a human clicks an edge they can see, so "flip it" is exactly the intent. An API caller
|
|
943
|
+
* declares: a provisioning integration re-running its own setup must converge, and a toggle would
|
|
944
|
+
* INVERT every edge it declared last time, silently, since both calls succeed and the graph it
|
|
945
|
+
* asked for is the one it does not get. Deriving the explicit form from the toggle would mean the
|
|
946
|
+
* caller reading the graph first and racing whoever else is editing it.
|
|
947
|
+
*/
|
|
948
|
+
async setDependency(workspaceId, targetId, sourceId, linked) {
|
|
949
|
+
return this.writeDependency(workspaceId, targetId, sourceId, linked ? 'add' : 'remove');
|
|
950
|
+
}
|
|
951
|
+
async writeDependency(workspaceId, targetId, sourceId, mode) {
|
|
961
952
|
await this.requireWorkspace(workspaceId);
|
|
962
953
|
if (targetId === sourceId) {
|
|
963
954
|
throw new ValidationError('A block cannot depend on itself');
|
|
964
955
|
}
|
|
965
956
|
const { homeWorkspaceId, block: target } = await this.resolveBlock(workspaceId, targetId);
|
|
966
|
-
|
|
967
|
-
//
|
|
968
|
-
|
|
969
|
-
|
|
957
|
+
const existing = target.dependsOn.indexOf(sourceId);
|
|
958
|
+
// Idempotent for the explicit modes: an edge already where the caller asked for it is returned
|
|
959
|
+
// untouched rather than re-written, so no event fans out for a change nobody made.
|
|
960
|
+
if ((mode === 'add' && existing >= 0) || (mode === 'remove' && existing < 0))
|
|
961
|
+
return target;
|
|
962
|
+
// Past that guard the three modes agree: `add` can only be here with no edge, `remove` only
|
|
963
|
+
// with one, and `toggle` means whichever it found. So the branches below stay written against
|
|
964
|
+
// the edge's ACTUAL presence rather than against the mode, and there is one write path.
|
|
965
|
+
const i = existing;
|
|
970
966
|
if (i < 0) {
|
|
971
|
-
// Adding a NEW edge.
|
|
972
|
-
//
|
|
973
|
-
//
|
|
967
|
+
// Adding a NEW edge. The source need only be visible to this board (it may be homed
|
|
968
|
+
// elsewhere); the edge is stored as an id on the target, which lives at `homeWorkspaceId`.
|
|
969
|
+
//
|
|
970
|
+
// Resolved only on the ADD, because the rules below are about what an edge may point AT and
|
|
971
|
+
// a REMOVAL is a fact about the target's own row. `pruneDanglingEdges` runs against the
|
|
972
|
+
// deleted block's home workspace, so a blocker deleted on the board that homes it leaves the
|
|
973
|
+
// edge behind on a task homed elsewhere — and resolving the source first would make that
|
|
974
|
+
// edge permanently unremovable, gating the task on a blocker that can never reach `done`.
|
|
975
|
+
const { block: source } = await this.resolveBlock(workspaceId, sourceId);
|
|
976
|
+
// Both endpoints must be tasks: only a task ever reaches `done`, so an edge onto a
|
|
977
|
+
// frame/module/epic (which never executes) would wedge the engine's start gate forever
|
|
978
|
+
// (`dependenciesMet` requires the blocker to be `done`). Reject it up front.
|
|
974
979
|
if (target.level !== 'task' || source.level !== 'task') {
|
|
975
980
|
throw new ValidationError('Only tasks can have dependency edges');
|
|
976
981
|
}
|
|
@@ -1004,26 +1009,4 @@ export class BoardService {
|
|
|
1004
1009
|
return updated;
|
|
1005
1010
|
}
|
|
1006
1011
|
}
|
|
1007
|
-
/**
|
|
1008
|
-
* Coerce a user-supplied monorepo service subdirectory into a clean, SAFE relative path
|
|
1009
|
-
* (or undefined when absent/empty): normalise separators, drop `.`/empty segments, and
|
|
1010
|
-
* reject any `..` segment or absolute path so the stored value can never escape the repo
|
|
1011
|
-
* checkout when it later becomes an agent's cwd. Mirrors the harness's `sanitizeService
|
|
1012
|
-
* Directory`, kept here so a bad value is rejected before the service row is written.
|
|
1013
|
-
*/
|
|
1014
|
-
export function normalizeServiceDirectory(raw) {
|
|
1015
|
-
if (!raw)
|
|
1016
|
-
return undefined;
|
|
1017
|
-
const segments = raw
|
|
1018
|
-
.trim()
|
|
1019
|
-
.replace(/\\/g, '/')
|
|
1020
|
-
.split('/')
|
|
1021
|
-
.filter((s) => s !== '' && s !== '.');
|
|
1022
|
-
if (segments.length === 0)
|
|
1023
|
-
return undefined;
|
|
1024
|
-
if (segments.some((s) => s === '..')) {
|
|
1025
|
-
throw new ValidationError('Service directory must be a path inside the repository');
|
|
1026
|
-
}
|
|
1027
|
-
return segments.join('/');
|
|
1028
|
-
}
|
|
1029
1012
|
//# sourceMappingURL=BoardService.js.map
|