@cat-factory/server 0.279.1 → 0.281.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.
Files changed (35) hide show
  1. package/dist/app.d.ts +1 -1
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +3 -2
  4. package/dist/app.js.map +1 -1
  5. package/dist/http/accountAccess.d.ts +29 -0
  6. package/dist/http/accountAccess.d.ts.map +1 -0
  7. package/dist/http/accountAccess.js +45 -0
  8. package/dist/http/accountAccess.js.map +1 -0
  9. package/dist/modules/board/BoardController.d.ts.map +1 -1
  10. package/dist/modules/board/BoardController.js +9 -6
  11. package/dist/modules/board/BoardController.js.map +1 -1
  12. package/dist/modules/foundationalServices/FoundationalServiceController.d.ts.map +1 -1
  13. package/dist/modules/foundationalServices/FoundationalServiceController.js +11 -19
  14. package/dist/modules/foundationalServices/FoundationalServiceController.js.map +1 -1
  15. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  16. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +5 -17
  17. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  18. package/dist/modules/merge/RiskPolicyController.d.ts +16 -4
  19. package/dist/modules/merge/RiskPolicyController.d.ts.map +1 -1
  20. package/dist/modules/merge/RiskPolicyController.js +90 -22
  21. package/dist/modules/merge/RiskPolicyController.js.map +1 -1
  22. package/dist/modules/publicApi/PublicBoardController.d.ts.map +1 -1
  23. package/dist/modules/publicApi/PublicBoardController.js +35 -5
  24. package/dist/modules/publicApi/PublicBoardController.js.map +1 -1
  25. package/dist/modules/publicApi/openapiDocument.generated.d.ts +1 -1
  26. package/dist/modules/publicApi/openapiDocument.generated.d.ts.map +1 -1
  27. package/dist/modules/publicApi/openapiDocument.generated.js +1 -1
  28. package/dist/modules/publicApi/openapiDocument.generated.js.map +1 -1
  29. package/dist/modules/skillLibrary/SkillLibraryController.d.ts.map +1 -1
  30. package/dist/modules/skillLibrary/SkillLibraryController.js +3 -11
  31. package/dist/modules/skillLibrary/SkillLibraryController.js.map +1 -1
  32. package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
  33. package/dist/persistence/rpc-allowlist.js +28 -0
  34. package/dist/persistence/rpc-allowlist.js.map +1 -1
  35. package/package.json +8 -8
@@ -1,45 +1,113 @@
1
- import { createRiskPolicyContract, deleteRiskPolicyContract, listRiskPoliciesContract, reseedRiskPolicyContract, updateRiskPolicyContract, } from '@cat-factory/contracts';
1
+ import { cloneRiskPolicyContract, createRiskPolicyContract, deleteRiskPolicyContract, listRiskPoliciesContract, listRiskPolicySuppressionsContract, reseedRiskPolicyContract, restoreRiskPolicyContract, suppressRiskPolicyContract, updateRiskPolicyContract, } from '@cat-factory/contracts';
2
2
  import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
+ import { mountAccountMembership } from '../../http/accountAccess.js';
4
5
  import { mountWorkspacePermission } from '../../http/workspaceAccess.js';
5
6
  import { param } from '../../http/params.js';
6
7
  import { requireCapability } from '../../http/guards.js';
7
- /** Resolve the merge-preset module, or refuse with a 503 naming what isn't wired. */
8
+ /** Every TOP-LEVEL path this controller serves, gated at whichever tier owns the scope. */
9
+ const GUARDED_RESOURCES = ['/risk-policies', '/risk-policy-suppressions'];
10
+ /** Resolve the risk-policy module, or refuse with a 503 naming what isn't wired. */
8
11
  function requireRiskPolicies(c) {
9
12
  return requireCapability(c.get('container').riskPolicies, 'Risk policies are not configured');
10
13
  }
11
14
  /**
12
- * CRUD for a workspace's merge threshold presets (the library a task picks its
13
- * auto-merge policy from). The library is seeded when the board is created, and the
14
- * default preset cannot be deleted/unset. Mounted under `/workspaces/:workspaceId`.
15
+ * The ACCOUNT tier, a capability behind a capability: it is wired only where the facade has an
16
+ * account-tier store, so it gets its own accessor rather than a message borrowed from its parent,
17
+ * which would name a library the operator has already configured.
15
18
  */
16
- export function riskPolicyController() {
19
+ function requireAccountRiskPolicies(c) {
20
+ return requireCapability(requireRiskPolicies(c).accountService, 'Account-wide risk policies are not configured');
21
+ }
22
+ /**
23
+ * Risk policy CRUD, mounted TWICE — once under `/accounts/:accountId` and once under
24
+ * `/workspaces/:workspaceId` — so each tier is managed at the scope that owns it (ADR 0055).
25
+ *
26
+ * A board's list is its own policies MERGED with the ones it inherits from its account, so the four
27
+ * inheritance routes live on the workspace mount alone: an account has no tier above it to clone
28
+ * from or hide. Reseed is workspace-only for the same reason in reverse — the built-in catalog is
29
+ * copied into boards, so only a board has a built-in to restore.
30
+ *
31
+ * Workspace routes are `settings.manage` (the library is board configuration); account routes guard
32
+ * on account membership, exactly as the fragment library's do. Both mounts name this controller's OWN
33
+ * paths from one list, so neither can gate a subset the other doesn't: each shared prefix carries
34
+ * sibling controllers, and a `use('*')` inside a sub-app lands on `<prefix>/*` and would authorize
35
+ * their routes too.
36
+ */
37
+ export function riskPolicyController(scope) {
17
38
  const app = new Hono();
18
- mountWorkspacePermission(app, 'settings.manage', ['/risk-policies']);
39
+ if (scope === 'account') {
40
+ mountAccountMembership(app, GUARDED_RESOURCES, 'Sign in to manage risk policies');
41
+ }
42
+ else {
43
+ mountWorkspacePermission(app, 'settings.manage', GUARDED_RESOURCES);
44
+ }
45
+ // ---- the tier's own library ---------------------------------------------
19
46
  buildHonoRoute(app, listRiskPoliciesContract, async (c) => {
20
- const presets = requireRiskPolicies(c);
21
- return c.json(await presets.service.list(param(c, 'workspaceId')), 200);
47
+ if (scope === 'account') {
48
+ return c.json(await requireAccountRiskPolicies(c).list(param(c, 'accountId')), 200);
49
+ }
50
+ const policies = requireRiskPolicies(c);
51
+ return c.json(await policies.service.list(param(c, 'workspaceId')), 200);
22
52
  });
23
53
  buildHonoRoute(app, createRiskPolicyContract, async (c) => {
24
- const presets = requireRiskPolicies(c);
25
- const preset = await presets.service.create(param(c, 'workspaceId'), c.req.valid('json'));
26
- return c.json(preset, 201);
54
+ const input = c.req.valid('json');
55
+ if (scope === 'account') {
56
+ const created = await requireAccountRiskPolicies(c).create(param(c, 'accountId'), input);
57
+ return c.json(created, 201);
58
+ }
59
+ const policies = requireRiskPolicies(c);
60
+ const created = await policies.service.create(param(c, 'workspaceId'), input);
61
+ return c.json(created, 201);
27
62
  });
28
63
  buildHonoRoute(app, updateRiskPolicyContract, async (c) => {
29
- const presets = requireRiskPolicies(c);
30
- const preset = await presets.service.update(param(c, 'workspaceId'), c.req.valid('param').presetId, c.req.valid('json'));
31
- return c.json(preset, 200);
64
+ const { presetId } = c.req.valid('param');
65
+ const patch = c.req.valid('json');
66
+ if (scope === 'account') {
67
+ const updated = await requireAccountRiskPolicies(c).update(param(c, 'accountId'), presetId, patch);
68
+ return c.json(updated, 200);
69
+ }
70
+ const policies = requireRiskPolicies(c);
71
+ const updated = await policies.service.update(param(c, 'workspaceId'), presetId, patch);
72
+ return c.json(updated, 200);
32
73
  });
33
74
  buildHonoRoute(app, deleteRiskPolicyContract, async (c) => {
34
- const presets = requireRiskPolicies(c);
35
- await presets.service.remove(param(c, 'workspaceId'), c.req.valid('param').presetId);
75
+ const { presetId } = c.req.valid('param');
76
+ if (scope === 'account') {
77
+ await requireAccountRiskPolicies(c).remove(param(c, 'accountId'), presetId);
78
+ return c.body(null, 204);
79
+ }
80
+ const policies = requireRiskPolicies(c);
81
+ await policies.service.remove(param(c, 'workspaceId'), presetId);
36
82
  return c.body(null, 204);
37
83
  });
38
- buildHonoRoute(app, reseedRiskPolicyContract, async (c) => {
39
- const presets = requireRiskPolicies(c);
40
- const preset = await presets.service.reseed(param(c, 'workspaceId'), c.req.valid('param').presetId);
41
- return c.json(preset, 200);
42
- });
84
+ // ---- inheritance (workspace mount only) ---------------------------------
85
+ if (scope === 'workspace') {
86
+ buildHonoRoute(app, reseedRiskPolicyContract, async (c) => {
87
+ const policies = requireRiskPolicies(c);
88
+ const preset = await policies.service.reseed(param(c, 'workspaceId'), c.req.valid('param').presetId);
89
+ return c.json(preset, 200);
90
+ });
91
+ buildHonoRoute(app, cloneRiskPolicyContract, async (c) => {
92
+ const policies = requireRiskPolicies(c);
93
+ const clone = await policies.service.clone(param(c, 'workspaceId'), c.req.valid('param').presetId, c.req.valid('json'));
94
+ return c.json(clone, 201);
95
+ });
96
+ buildHonoRoute(app, suppressRiskPolicyContract, async (c) => {
97
+ const policies = requireRiskPolicies(c);
98
+ await policies.service.suppress(param(c, 'workspaceId'), c.req.valid('param').presetId);
99
+ return c.body(null, 204);
100
+ });
101
+ buildHonoRoute(app, restoreRiskPolicyContract, async (c) => {
102
+ const policies = requireRiskPolicies(c);
103
+ await policies.service.restoreInherited(param(c, 'workspaceId'), c.req.valid('param').presetId);
104
+ return c.body(null, 204);
105
+ });
106
+ buildHonoRoute(app, listRiskPolicySuppressionsContract, async (c) => {
107
+ const policies = requireRiskPolicies(c);
108
+ return c.json(await policies.service.listSuppressions(param(c, 'workspaceId')), 200);
109
+ });
110
+ }
43
111
  return app;
44
112
  }
45
113
  //# sourceMappingURL=RiskPolicyController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RiskPolicyController.js","sourceRoot":"","sources":["../../../src/modules/merge/RiskPolicyController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,qFAAqF;AACrF,SAAS,mBAAmB,CAAmB,CAAa;IAC1D,OAAO,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAA;AAC/F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEpE,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACzF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CACzC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAC7B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CACpB,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAA;QACpF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CACzC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAC9B,CAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"RiskPolicyController.js","sourceRoot":"","sources":["../../../src/modules/merge/RiskPolicyController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PublicBoardController.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicBoardController.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAA;AA8DhE,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CAMpD"}
1
+ {"version":3,"file":"PublicBoardController.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicBoardController.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAA;AA+DhE,wBAAgB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CAMpD"}
@@ -1,4 +1,4 @@
1
- import { addPublicTaskDependencyContract, attachPublicTaskDocumentContract, createPublicServiceContract, detachPublicTaskDocumentContract, listPublicReposContract, listPublicTaskDocumentsContract, removePublicTaskDependencyContract, } from '@cat-factory/contracts';
1
+ import { addPublicTaskDependencyContract, attachPublicTaskDocumentContract, createPublicServiceContract, deletePublicServiceContract, detachPublicTaskDocumentContract, listPublicReposContract, listPublicTaskDocumentsContract, removePublicTaskDependencyContract, } from '@cat-factory/contracts';
2
2
  import { NotFoundError } from '@cat-factory/kernel';
3
3
  import { buildHonoRoute } from '@toad-contracts/hono';
4
4
  import { Hono } from 'hono';
@@ -6,8 +6,8 @@ import { requireCapability } from '../../http/guards.js';
6
6
  import { toPublicRepo, toPublicService, toPublicTask } from './boardProjection.js';
7
7
  import { resolveDocuments } from './documentAttachment.js';
8
8
  import { authorizeOrThrow } from './publicApiAuth.js';
9
- // Board PROVISIONING (`GET /api/v1/repos`, `POST /api/v1/services`) and the two task relationships
10
- // that outlive a create call: dependency edges and attached requirements documents.
9
+ // Board PROVISIONING (`GET /api/v1/repos`, `POST`/`DELETE /api/v1/services`) and the two task
10
+ // relationships that outlive a create call: dependency edges and attached requirements documents.
11
11
  //
12
12
  // Its own controller rather than more of `PublicApiController`, which already carries the whole
13
13
  // job + task lifecycle and sits at its size budget. The split is also the honest one: everything
@@ -26,8 +26,9 @@ import { authorizeOrThrow } from './publicApiAuth.js';
26
26
  // 3. **No board COORDINATES.** A service created here is laid out by the board itself. Positions,
27
27
  // sizes and reparenting stay out of a surface that is frozen forever.
28
28
  // 4. **Every read is scoped to the key's workspace and to a BOARD-VISIBLE block**
29
- // (`getServiceTask`, which excludes the headless job anchors), so a key can never reach a run's
30
- // internal anchor or another workspace's task through these paths.
29
+ // (`getServiceTask` for a task, `getService` for a frame, both excluding the headless job
30
+ // anchors), so a key can never reach a run's internal anchor or another workspace's block
31
+ // through these paths, and a delete cannot reach one either.
31
32
  /** Project a stored document onto the small attached-document resource. */
32
33
  function toPublicAttachedDocument(document) {
33
34
  return {
@@ -81,6 +82,35 @@ function registerProvisioningRoutes(app) {
81
82
  const block = await createService(c.get('container'), auth.workspaceId, body);
82
83
  return c.json(toPublicService(block), 201);
83
84
  });
85
+ // Delete a service, its subtree and the run history under it: the same refuse-tear-down-remove
86
+ // sequence the app's own delete runs (`BoardController` remove). The teardown kills every
87
+ // container and durable driver under the frame, so deleting a service whose task is mid-run
88
+ // never orphans a container that would idle until its watchdog.
89
+ //
90
+ // Resolved through `getService`, so a frame in another workspace, a task id, a headless run
91
+ // anchor and an ARCHIVED frame are all ABSENT rather than forbidden: the population this route
92
+ // addresses is exactly the one `GET /api/v1/services` reports, which is the rule every
93
+ // per-service endpoint here follows. An archived frame is therefore not deletable from this
94
+ // surface, which is honest rather than incidental (restoring one is an app act too), and it is
95
+ // the state a caller reaches by archiving instead of deleting.
96
+ //
97
+ // The unfinished-work refusal is not written here either: `assertRemovable` is `removeBlock`'s
98
+ // own guard, run FIRST because the teardown between them is irreversible, and it hands back the
99
+ // board list both later steps reuse. A 422 out of this route therefore means nothing happened.
100
+ buildHonoRoute(app, deletePublicServiceContract, async (c) => {
101
+ const auth = await authorizeOrThrow(c, deletePublicServiceContract.minScope);
102
+ const container = c.get('container');
103
+ const { serviceId } = c.req.valid('param');
104
+ const service = await container.boardService.getService(auth.workspaceId, serviceId);
105
+ if (!service)
106
+ throw new NotFoundError('Service', serviceId, { reason: 'service_not_found' });
107
+ const preloaded = await container.boardService.assertRemovable(auth.workspaceId, serviceId);
108
+ await container.executionService.teardownForBlockTree(auth.workspaceId, serviceId, {
109
+ preloaded,
110
+ });
111
+ await container.boardService.removeBlock(auth.workspaceId, serviceId, { preloaded });
112
+ return c.body(null, 204);
113
+ });
84
114
  }
85
115
  /**
86
116
  * Create the service frame, with or without a repository behind it.
@@ -1 +1 @@
1
- {"version":3,"file":"PublicBoardController.js","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicBoardController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PublicBoardController.js","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicBoardController.ts"],"names":[],"mappings":"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"}