@cat-factory/server 0.226.0 → 0.227.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 (87) hide show
  1. package/dist/app.d.ts +29 -0
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +131 -88
  4. package/dist/app.js.map +1 -1
  5. package/dist/http/workspaceAccess.d.ts +65 -40
  6. package/dist/http/workspaceAccess.d.ts.map +1 -1
  7. package/dist/http/workspaceAccess.js +84 -44
  8. package/dist/http/workspaceAccess.js.map +1 -1
  9. package/dist/modules/agentPrompts/AgentPromptController.js +2 -2
  10. package/dist/modules/agentPrompts/AgentPromptController.js.map +1 -1
  11. package/dist/modules/agentSettings/WorkspaceAgentSettingsController.js +2 -2
  12. package/dist/modules/agentSettings/WorkspaceAgentSettingsController.js.map +1 -1
  13. package/dist/modules/bootstrap/BootstrapController.js +2 -2
  14. package/dist/modules/bootstrap/BootstrapController.js.map +1 -1
  15. package/dist/modules/capabilityCredentials/CapabilityCredentialsController.d.ts +2 -2
  16. package/dist/modules/capabilityCredentials/CapabilityCredentialsController.d.ts.map +1 -1
  17. package/dist/modules/capabilityCredentials/CapabilityCredentialsController.js +4 -11
  18. package/dist/modules/capabilityCredentials/CapabilityCredentialsController.js.map +1 -1
  19. package/dist/modules/consensus/ConsensusGroupController.js +2 -2
  20. package/dist/modules/consensus/ConsensusGroupController.js.map +1 -1
  21. package/dist/modules/documents/DocumentSourceController.d.ts +10 -0
  22. package/dist/modules/documents/DocumentSourceController.d.ts.map +1 -1
  23. package/dist/modules/documents/DocumentSourceController.js +37 -4
  24. package/dist/modules/documents/DocumentSourceController.js.map +1 -1
  25. package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
  26. package/dist/modules/environments/EnvironmentController.js +6 -2
  27. package/dist/modules/environments/EnvironmentController.js.map +1 -1
  28. package/dist/modules/foundationalServices/FoundationalServiceController.d.ts.map +1 -1
  29. package/dist/modules/foundationalServices/FoundationalServiceController.js +14 -13
  30. package/dist/modules/foundationalServices/FoundationalServiceController.js.map +1 -1
  31. package/dist/modules/fragmentLibrary/FragmentLibraryController.d.ts.map +1 -1
  32. package/dist/modules/fragmentLibrary/FragmentLibraryController.js +17 -11
  33. package/dist/modules/fragmentLibrary/FragmentLibraryController.js.map +1 -1
  34. package/dist/modules/github/GitHubController.js +3 -3
  35. package/dist/modules/github/GitHubController.js.map +1 -1
  36. package/dist/modules/gitlab/GitLabController.js +2 -2
  37. package/dist/modules/gitlab/GitLabController.js.map +1 -1
  38. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js +2 -2
  39. package/dist/modules/incidentEnrichment/IncidentEnrichmentController.js.map +1 -1
  40. package/dist/modules/merge/RiskPolicyController.js +2 -2
  41. package/dist/modules/merge/RiskPolicyController.js.map +1 -1
  42. package/dist/modules/modelPresets/ModelPresetController.js +2 -2
  43. package/dist/modules/modelPresets/ModelPresetController.js.map +1 -1
  44. package/dist/modules/notificationWebhook/NotificationWebhookController.js +2 -2
  45. package/dist/modules/notificationWebhook/NotificationWebhookController.js.map +1 -1
  46. package/dist/modules/packageRegistries/PackageRegistriesController.js +2 -2
  47. package/dist/modules/packageRegistries/PackageRegistriesController.js.map +1 -1
  48. package/dist/modules/preview/PreviewController.js +2 -2
  49. package/dist/modules/preview/PreviewController.js.map +1 -1
  50. package/dist/modules/providers/ApiKeyController.js +2 -2
  51. package/dist/modules/providers/ApiKeyController.js.map +1 -1
  52. package/dist/modules/providers/VendorCredentialController.js +2 -2
  53. package/dist/modules/providers/VendorCredentialController.js.map +1 -1
  54. package/dist/modules/publicApi/PublicApiKeyController.js +2 -2
  55. package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -1
  56. package/dist/modules/recurring/TrackerSettingsController.js +2 -2
  57. package/dist/modules/recurring/TrackerSettingsController.js.map +1 -1
  58. package/dist/modules/releaseHealth/ReleaseHealthController.js +2 -2
  59. package/dist/modules/releaseHealth/ReleaseHealthController.js.map +1 -1
  60. package/dist/modules/runners/RunnerPoolController.js +2 -2
  61. package/dist/modules/runners/RunnerPoolController.js.map +1 -1
  62. package/dist/modules/sandbox/SandboxController.js +2 -2
  63. package/dist/modules/sandbox/SandboxController.js.map +1 -1
  64. package/dist/modules/settings/WorkspaceSettingsController.js +2 -2
  65. package/dist/modules/settings/WorkspaceSettingsController.js.map +1 -1
  66. package/dist/modules/sharedStack/SharedStackController.js +2 -2
  67. package/dist/modules/sharedStack/SharedStackController.js.map +1 -1
  68. package/dist/modules/slack/SlackController.js +2 -2
  69. package/dist/modules/slack/SlackController.js.map +1 -1
  70. package/dist/modules/tasks/TaskSourceController.js +2 -2
  71. package/dist/modules/tasks/TaskSourceController.js.map +1 -1
  72. package/dist/modules/testSecrets/TestSecretsController.js +2 -2
  73. package/dist/modules/testSecrets/TestSecretsController.js.map +1 -1
  74. package/dist/modules/toolServers/ToolServerController.d.ts +1 -1
  75. package/dist/modules/toolServers/ToolServerController.d.ts.map +1 -1
  76. package/dist/modules/toolServers/ToolServerController.js +3 -9
  77. package/dist/modules/toolServers/ToolServerController.js.map +1 -1
  78. package/dist/modules/tutorial/TutorialController.js +1 -1
  79. package/dist/modules/tutorial/TutorialController.js.map +1 -1
  80. package/dist/modules/validation/ValidationConfigController.d.ts.map +1 -1
  81. package/dist/modules/validation/ValidationConfigController.js +5 -2
  82. package/dist/modules/validation/ValidationConfigController.js.map +1 -1
  83. package/dist/modules/vcs/VcsConnectController.d.ts +9 -1
  84. package/dist/modules/vcs/VcsConnectController.d.ts.map +1 -1
  85. package/dist/modules/vcs/VcsConnectController.js +11 -3
  86. package/dist/modules/vcs/VcsConnectController.js.map +1 -1
  87. package/package.json +5 -5
@@ -3,7 +3,7 @@ import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
4
  import { detectValidationChecksFromRepo } from '@cat-factory/integrations';
5
5
  import { describeError } from '@cat-factory/kernel';
6
- import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
6
+ import { mountWorkspacePermission } from '../../http/workspaceAccess.js';
7
7
  import { param } from '../../http/params.js';
8
8
  import { requireCapability } from '../../http/guards.js';
9
9
  /** Resolve the validation-config service, or refuse with a 503 naming what isn't wired. */
@@ -19,7 +19,10 @@ function requireValidationConfig(c) {
19
19
  */
20
20
  export function validationConfigController() {
21
21
  const app = new Hono();
22
- app.use('*', requireWorkspacePermission('settings.manage'));
22
+ mountWorkspacePermission(app, 'settings.manage', [
23
+ '/validation-checks',
24
+ '/services/:blockId/validation-checks',
25
+ ]);
23
26
  buildHonoRoute(app, listServiceValidationConfigsContract, async (c) => {
24
27
  const svc = requireValidationConfig(c);
25
28
  return c.json(await svc.list(param(c, 'workspaceId')), 200);
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationConfigController.js","sourceRoot":"","sources":["../../../src/modules/validation/ValidationConfigController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidationConfigController.js","sourceRoot":"","sources":["../../../src/modules/validation/ValidationConfigController.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,15 @@ import type { AppEnv } from '../../http/env.js';
10
10
  * Capability only: it reports what CAN be connected, never what IS connected (that stays
11
11
  * `GET /github/connection`, whose `provider` discriminator the SPA switches presentation on).
12
12
  * Guarded by `integrations.manage`, exactly like the GitHub + GitLab connect controllers it
13
- * fronts a caller who may not connect has no use for the option list.
13
+ * fronts, because a caller who may not connect has no use for the option list.
14
+ *
15
+ * That takes the INCLUDING-READS mount, and this controller is the one place where the writes-only
16
+ * variant is provably inert rather than merely lenient: the single route it serves is a GET, which
17
+ * that variant passes through, so `integrations.manage` here gated nothing whatsoever. It read as
18
+ * enforcement for a release because the wholesale `'*'` mount it used to share DID refuse callers,
19
+ * just on sibling controllers' routes instead of its own. Both halves of the SPA already expect the
20
+ * refusal: `loadConnectOptions` degrades a 403 to an empty option list, under a store test that
21
+ * names a member without `integrations.manage` as the caller it is modelling.
14
22
  */
15
23
  export declare function vcsConnectController(): Hono<AppEnv>;
16
24
  //# sourceMappingURL=VcsConnectController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VcsConnectController.d.ts","sourceRoot":"","sources":["../../../src/modules/vcs/VcsConnectController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqBnD"}
1
+ {"version":3,"file":"VcsConnectController.d.ts","sourceRoot":"","sources":["../../../src/modules/vcs/VcsConnectController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqBnD"}
@@ -1,7 +1,7 @@
1
1
  import { listVcsConnectOptionsContract } from '@cat-factory/contracts';
2
2
  import { buildHonoRoute } from '@toad-contracts/hono';
3
3
  import { Hono } from 'hono';
4
- import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
4
+ import { mountWorkspacePermissionIncludingReads } from '../../http/workspaceAccess.js';
5
5
  /**
6
6
  * Provider-neutral VCS connect capability: which connect surfaces this deployment can actually
7
7
  * serve. The `github` module builds for EITHER a GitHub App or a per-workspace GitLab PAT
@@ -12,11 +12,19 @@ import { requireWorkspacePermission } from '../../http/workspaceAccess.js';
12
12
  * Capability only: it reports what CAN be connected, never what IS connected (that stays
13
13
  * `GET /github/connection`, whose `provider` discriminator the SPA switches presentation on).
14
14
  * Guarded by `integrations.manage`, exactly like the GitHub + GitLab connect controllers it
15
- * fronts a caller who may not connect has no use for the option list.
15
+ * fronts, because a caller who may not connect has no use for the option list.
16
+ *
17
+ * That takes the INCLUDING-READS mount, and this controller is the one place where the writes-only
18
+ * variant is provably inert rather than merely lenient: the single route it serves is a GET, which
19
+ * that variant passes through, so `integrations.manage` here gated nothing whatsoever. It read as
20
+ * enforcement for a release because the wholesale `'*'` mount it used to share DID refuse callers,
21
+ * just on sibling controllers' routes instead of its own. Both halves of the SPA already expect the
22
+ * refusal: `loadConnectOptions` degrades a 403 to an empty option list, under a store test that
23
+ * names a member without `integrations.manage` as the caller it is modelling.
16
24
  */
17
25
  export function vcsConnectController() {
18
26
  const app = new Hono();
19
- app.use('*', requireWorkspacePermission('integrations.manage'));
27
+ mountWorkspacePermissionIncludingReads(app, 'integrations.manage', ['/vcs']);
20
28
  buildHonoRoute(app, listVcsConnectOptionsContract, (c) => {
21
29
  const container = c.get('container');
22
30
  const options = [];
@@ -1 +1 @@
1
- {"version":3,"file":"VcsConnectController.js","sourceRoot":"","sources":["../../../src/modules/vcs/VcsConnectController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAyB,MAAM,wBAAwB,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAE1E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAE/D,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,CAAC,CAAC,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,OAAO,GAAuB,EAAE,CAAA;QACtC,0FAA0F;QAC1F,6FAA6F;QAC7F,8DAA8D;QAC9D,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,0FAA0F;QAC1F,mFAAmF;QACnF,MAAM,GAAG,GAAG,SAAS,CAAC,oBAAoB,CAAA;QAC1C,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAChE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"VcsConnectController.js","sourceRoot":"","sources":["../../../src/modules/vcs/VcsConnectController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAyB,MAAM,wBAAwB,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,sCAAsC,EAAE,MAAM,+BAA+B,CAAA;AAEtF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAC9B,sCAAsC,CAAC,GAAG,EAAE,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAE5E,cAAc,CAAC,GAAG,EAAE,6BAA6B,EAAE,CAAC,CAAC,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,OAAO,GAAuB,EAAE,CAAA;QACtC,0FAA0F;QAC1F,6FAA6F;QAC7F,8DAA8D;QAC9D,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,0FAA0F;QAC1F,mFAAmF;QACnF,MAAM,GAAG,GAAG,SAAS,CAAC,oBAAoB,CAAA;QAC1C,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAChE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/server",
3
- "version": "0.226.0",
3
+ "version": "0.227.0",
4
4
  "description": "Runtime-neutral HTTP layer for the Agent Architecture Board: the Hono controllers, middleware (auth/authz/CORS/error), request helpers and the gateway seams shared by every deployment facade (Cloudflare Worker, Node service).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,12 +33,12 @@
33
33
  "valibot": "^1.4.2",
34
34
  "@cat-factory/agents": "0.114.2",
35
35
  "@cat-factory/contracts": "0.249.0",
36
- "@cat-factory/integrations": "0.133.0",
37
36
  "@cat-factory/kernel": "0.247.0",
37
+ "@cat-factory/integrations": "0.134.0",
38
38
  "@cat-factory/mcp-server": "0.13.0",
39
- "@cat-factory/orchestration": "0.216.0",
40
- "@cat-factory/prompt-fragments": "0.15.75",
41
- "@cat-factory/spend": "0.15.12"
39
+ "@cat-factory/orchestration": "0.216.1",
40
+ "@cat-factory/spend": "0.15.12",
41
+ "@cat-factory/prompt-fragments": "0.15.75"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/node": "^26.1.2",