@stigmer/server 3.33.0 → 3.34.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.
@@ -14,6 +14,7 @@
14
14
  "can_manage_cursor_accounts": {},
15
15
  "can_manage_identity_accounts": {},
16
16
  "can_manage_model_pricing": {},
17
+ "can_manage_plans": {},
17
18
  "can_update_usage": {},
18
19
  "can_view_access": {},
19
20
  "can_view_provider_standing": {},
@@ -94,6 +95,11 @@
94
95
  "relation": "operator"
95
96
  }
96
97
  },
98
+ "can_manage_plans": {
99
+ "computedUserset": {
100
+ "relation": "operator"
101
+ }
102
+ },
97
103
  "can_update_usage": {
98
104
  "computedUserset": {
99
105
  "relation": "operator"
@@ -62,6 +62,11 @@ function kindOf(ctx) {
62
62
  * ValidateProto so clients can omit the slug and have it derived before
63
63
  * field constraints (slug pattern, 2–15 chars) are checked.
64
64
  *
65
+ * The pre-side-effect gate slot splices before Persist, after the last pure
66
+ * step, the session chain's position: every step above it only reads, so a
67
+ * refusal there leaves no organization behind. It is where a limit on
68
+ * which organizations may exist is enforced.
69
+ *
65
70
  * The post-persist gate slot splices after Persist, before IndexSearch —
66
71
  * the verified Java OrganizationCreateHandler ordering (FGA tuple
67
72
  * seeding, billing account getOrCreate: synchronous, a failure fails the
@@ -79,11 +84,16 @@ async function createOrganization(deps, org, ctx) {
79
84
  .addStep(newCheckOrgDuplicateStep(deps.store))
80
85
  .addStep(newBuildNewStateStep())
81
86
  .addStep(newGuardReservedLabelsStep(deps.authorizer))
82
- .addStep(newCopySlugToIdStep())
87
+ .addStep(newCopySlugToIdStep());
88
+ // The pre-side-effect gate slot (see the doc comment above). Empty in OSS.
89
+ for (const step of stepsForSlot(deps.gateSteps, "org-create:pre-side-effect-gate")) {
90
+ builder.addStep(step);
91
+ }
92
+ builder
83
93
  .addStep(newPersistStep(deps.store))
84
- // The C2 tuple step runs BEFORE the slot — the verified Java order
85
- // (createAuthorizationTuples → linkManagedOrgToIdentityProvider →
86
- // provisionBillingAccount). No-op with no driver composed.
94
+ // The C2 tuple step runs BEFORE the post-persist slot — the verified
95
+ // Java order (createAuthorizationTuples → linkManagedOrgToIdentityProvider
96
+ // → provisionBillingAccount). No-op with no driver composed.
87
97
  .addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle, deps.logger));
88
98
  // The ratified post-persist gate slot (blueprint 03 §3a; O4 — see the
89
99
  // doc comment above for the inherited failure semantics). Empty in OSS.
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/domain/organization/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/domain/organization/controller.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,16 @@
43
43
  * resource, and a team member who is not one of the organization's
44
44
  * viewers. Never on `bootstrapPolicy`, the platform's structural lane.
45
45
  *
46
+ * The ninth, `org-create:pre-side-effect-gate`: the organization create
47
+ * chain after its last pure step (CopySlugToId) and before Persist, the
48
+ * position the session chain's slot holds. It exists for a refusal that
49
+ * must leave nothing behind: `org-create:post-persist` runs after the row
50
+ * is written, so a limit enforced there would leave the organization it
51
+ * refused. The Cloud refuses a platform-managed organization its
52
+ * integrator's plan does not admit; a licensed deployment's organization
53
+ * limit belongs here too. `apply` delegates to create on its create arm,
54
+ * so the slot fires there as well.
55
+ *
46
56
  * Two enforcement layers, deliberately redundant, both derived from the
47
57
  * ONE literal tuple below (lockstep by construction):
48
58
  * - GateSlotName (compile time): the union of declared slot literals.
@@ -70,7 +80,7 @@ import type { PipelineStep } from "../pipeline/pipeline.js";
70
80
  * owner-visible slot additions — each entry cites its chain position in
71
81
  * the guidelines' slot table, which must match the splice sites exactly.
72
82
  */
73
- export declare const GATE_SLOT_NAMES: readonly ["agent-execution-create:pre-side-effect-gate", "agent-execution-recover:pre-side-effect-gate", "agent-execution-submit-approval:gate", "session-create:pre-side-effect-gate", "org-create:post-persist", "sandbox-acquisition:gate", "identity-account-provision:post-persist", "iam-policy-create:pre-side-effect-gate"];
83
+ export declare const GATE_SLOT_NAMES: readonly ["agent-execution-create:pre-side-effect-gate", "agent-execution-recover:pre-side-effect-gate", "agent-execution-submit-approval:gate", "session-create:pre-side-effect-gate", "org-create:post-persist", "sandbox-acquisition:gate", "identity-account-provision:post-persist", "iam-policy-create:pre-side-effect-gate", "org-create:pre-side-effect-gate"];
74
84
  /** The declared slot-name union — a registration outside it fails tsc. */
75
85
  export type GateSlotName = (typeof GATE_SLOT_NAMES)[number];
76
86
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gate-slots.d.ts","sourceRoot":"","sources":["../../src/extensions/gate-slots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,eAAe,qUASlB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAEnD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,CACzC,MAAM,EACN,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CACzC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,WAAW,EACnD,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,YAAY,GACjB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAOnC"}
1
+ {"version":3,"file":"gate-slots.d.ts","sourceRoot":"","sources":["../../src/extensions/gate-slots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,eAAe,wWAUlB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAEnD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,CACzC,MAAM,EACN,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CACzC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,WAAW,EACnD,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,YAAY,GACjB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAOnC"}
@@ -12,6 +12,7 @@ export const GATE_SLOT_NAMES = [
12
12
  "sandbox-acquisition:gate",
13
13
  "identity-account-provision:post-persist",
14
14
  "iam-policy-create:pre-side-effect-gate",
15
+ "org-create:pre-side-effect-gate",
15
16
  ];
16
17
  /**
17
18
  * The boot-time declared-slot set — resolveExtensions validates every
@@ -1 +1 @@
1
- {"version":3,"file":"gate-slots.js","sourceRoot":"","sources":["../../src/extensions/gate-slots.ts"],"names":[],"mappings":"AAqEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,6CAA6C;IAC7C,8CAA8C;IAC9C,sCAAsC;IACtC,qCAAqC;IACrC,yBAAyB;IACzB,0BAA0B;IAC1B,yCAAyC;IACzC,wCAAwC;CAChC,CAAC;AAKX;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAC7D,eAAe,CAChB,CAAC;AAWF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,SAA4B,EAC5B,IAAkB;IAElB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACxC,kDAAkD;IAClD,oEAAoE;IACpE,sEAAsE;IACtE,cAAc;IACd,OAAO,KAA0C,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"gate-slots.js","sourceRoot":"","sources":["../../src/extensions/gate-slots.ts"],"names":[],"mappings":"AA+EA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,6CAA6C;IAC7C,8CAA8C;IAC9C,sCAAsC;IACtC,qCAAqC;IACrC,yBAAyB;IACzB,0BAA0B;IAC1B,yCAAyC;IACzC,wCAAwC;IACxC,iCAAiC;CACzB,CAAC;AAKX;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAC7D,eAAe,CAChB,CAAC;AAWF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,SAA4B,EAC5B,IAAkB;IAElB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACxC,kDAAkD;IAClD,oEAAoE;IACpE,sEAAsE;IACtE,cAAc;IACd,OAAO,KAA0C,CAAC;AACpD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/server",
3
- "version": "3.33.0",
3
+ "version": "3.34.0",
4
4
  "description": "The Stigmer OSS control plane as a composable library: composeServer, the extension registry and the driver seams a composition builds on. The self-contained deployable of the same server is @stigmer/server-slim.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -63,11 +63,11 @@
63
63
  "@connectrpc/connect-node": "^2.0.0",
64
64
  "@kubernetes/client-node": "2.0.0",
65
65
  "@opentelemetry/api": "^1.9.0",
66
- "@stigmer/outbound": "3.33.0",
67
- "@stigmer/plugin-package": "3.33.0",
68
- "@stigmer/protos": "3.33.0",
69
- "@stigmer/temporal-codecs": "3.33.0",
70
- "@stigmer/zip-structure": "3.33.0",
66
+ "@stigmer/outbound": "3.34.0",
67
+ "@stigmer/plugin-package": "3.34.0",
68
+ "@stigmer/protos": "3.34.0",
69
+ "@stigmer/temporal-codecs": "3.34.0",
70
+ "@stigmer/zip-structure": "3.34.0",
71
71
  "@temporalio/activity": "1.16.2",
72
72
  "@temporalio/client": "1.16.2",
73
73
  "@temporalio/common": "1.16.2",
@@ -65,6 +65,7 @@ const DOCUMENTS = [
65
65
  "org-admin-owner-inheritance.fga.yaml",
66
66
  "org-shared-environment.fga.yaml",
67
67
  "organization-role-assignment.fga.yaml",
68
+ "plan-catalog-manager.fga.yaml",
68
69
  "platform-visibility.fga.yaml",
69
70
  "plugin-owner.fga.yaml",
70
71
  "provider-standing-viewer.fga.yaml",
@@ -63,12 +63,6 @@ import { builtInModel } from "../model/index.js";
63
63
  * until its line is removed here.
64
64
  */
65
65
  const KNOWN_GAPS: ReadonlyArray<string> = [
66
- // Contract ahead of model, on purpose: Plan's proto says the relation
67
- // lands in the model with the entry that serves the kind
68
- // (apis/ai/stigmer/billing/plan/v1/command.proto), and no edition serves
69
- // Plan yet.
70
- "ai.stigmer.billing.plan.v1.PlanCommandController/create asks can_manage_plans on platform",
71
- "ai.stigmer.billing.plan.v1.PlanCommandController/retire asks can_manage_plans on platform",
72
66
  // Artifacts are grantable in kind_meta, but the model defines no access
73
67
  // relations on them: https://github.com/stigmer/stigmer/issues/1268.
74
68
  "the resource_kind_path lanes ask can_grant_access on artifact",
@@ -14,6 +14,7 @@
14
14
  "can_manage_cursor_accounts": {},
15
15
  "can_manage_identity_accounts": {},
16
16
  "can_manage_model_pricing": {},
17
+ "can_manage_plans": {},
17
18
  "can_update_usage": {},
18
19
  "can_view_access": {},
19
20
  "can_view_provider_standing": {},
@@ -94,6 +95,11 @@
94
95
  "relation": "operator"
95
96
  }
96
97
  },
98
+ "can_manage_plans": {
99
+ "computedUserset": {
100
+ "relation": "operator"
101
+ }
102
+ },
97
103
  "can_update_usage": {
98
104
  "computedUserset": {
99
105
  "relation": "operator"
@@ -156,6 +156,11 @@ function kindOf(ctx: HandlerContext): ApiResourceKind {
156
156
  * ValidateProto so clients can omit the slug and have it derived before
157
157
  * field constraints (slug pattern, 2–15 chars) are checked.
158
158
  *
159
+ * The pre-side-effect gate slot splices before Persist, after the last pure
160
+ * step, the session chain's position: every step above it only reads, so a
161
+ * refusal there leaves no organization behind. It is where a limit on
162
+ * which organizations may exist is enforced.
163
+ *
159
164
  * The post-persist gate slot splices after Persist, before IndexSearch —
160
165
  * the verified Java OrganizationCreateHandler ordering (FGA tuple
161
166
  * seeding, billing account getOrCreate: synchronous, a failure fails the
@@ -190,11 +195,19 @@ async function createOrganization(
190
195
  .addStep(newCheckOrgDuplicateStep(deps.store))
191
196
  .addStep(newBuildNewStateStep())
192
197
  .addStep(newGuardReservedLabelsStep(deps.authorizer))
193
- .addStep(newCopySlugToIdStep())
198
+ .addStep(newCopySlugToIdStep());
199
+ // The pre-side-effect gate slot (see the doc comment above). Empty in OSS.
200
+ for (const step of stepsForSlot<typeof OrganizationSchema>(
201
+ deps.gateSteps,
202
+ "org-create:pre-side-effect-gate",
203
+ )) {
204
+ builder.addStep(step);
205
+ }
206
+ builder
194
207
  .addStep(newPersistStep(deps.store))
195
- // The C2 tuple step runs BEFORE the slot — the verified Java order
196
- // (createAuthorizationTuples → linkManagedOrgToIdentityProvider →
197
- // provisionBillingAccount). No-op with no driver composed.
208
+ // The C2 tuple step runs BEFORE the post-persist slot — the verified
209
+ // Java order (createAuthorizationTuples → linkManagedOrgToIdentityProvider
210
+ // → provisionBillingAccount). No-op with no driver composed.
198
211
  .addStep(
199
212
  newCreateAuthorizationTuplesStep(
200
213
  deps.authorizationLifecycle,
@@ -736,9 +736,10 @@ describe("extension composition (O5 driver substitution)", () => {
736
736
  /**
737
737
  * The O4 gate-slot + status-hook arms: an extension gate spliced into a
738
738
  * declared slot refuses with its own ConnectError code and copy — before
739
- * the side effect on the pre-side-effect slot (nothing persisted), after
740
- * it on the post-persist slot (the row survives the failed request, the
741
- * inherited Java semantics — O4 verification V1); the status observers
739
+ * the side effect on a pre-side-effect slot (nothing persisted: the
740
+ * session and organization chains), after it on the post-persist slot
741
+ * (the row survives the failed request, the inherited Java semantics — O4
742
+ * verification V1); the status observers
742
743
  * see the terminal updateStatus transition exactly once (the Q4
743
744
  * phase-change rule) and the response decorator contributes the control
744
745
  * signal on the shared reply schema.
@@ -746,6 +747,7 @@ describe("extension composition (O5 driver substitution)", () => {
746
747
  describe("extension composition (O4 gate slots + status hooks)", () => {
747
748
  const REFUSED_SESSION = "o4-refused-session";
748
749
  const REFUSED_ORG_SLUG = "o4refusedorg";
750
+ const PRE_REFUSED_ORG_SLUG = "prerefusedorg";
749
751
  let server: ComposedServer;
750
752
  let dir: string;
751
753
  let portTransport: Transport;
@@ -777,11 +779,25 @@ describe("extension composition (O4 gate slots + status hooks)", () => {
777
779
  },
778
780
  };
779
781
 
782
+ const orgPreSideEffectGate: PipelineStep<DescMessage> = {
783
+ name: "FakeOrgPreSideEffectGate",
784
+ execute: (ctx) => {
785
+ const org = ctx.newState as { metadata?: { slug?: string } };
786
+ if (org.metadata?.slug === PRE_REFUSED_ORG_SLUG) {
787
+ throw new ConnectError(
788
+ "fake organization limit reached",
789
+ Code.FailedPrecondition,
790
+ );
791
+ }
792
+ },
793
+ };
794
+
780
795
  const gateExtension: ServerExtension = {
781
796
  name: "fake-gates-and-hooks",
782
797
  gateSteps: new Map<GateSlotName, ReadonlyArray<PipelineStep<DescMessage>>>([
783
798
  ["session-create:pre-side-effect-gate", [sessionGate]],
784
799
  ["org-create:post-persist", [orgPostPersistGate]],
800
+ ["org-create:pre-side-effect-gate", [orgPreSideEffectGate]],
785
801
  ]),
786
802
  statusTransitionHooks: {
787
803
  observers: [
@@ -892,6 +908,36 @@ describe("extension composition (O4 gate slots + status hooks)", () => {
892
908
  expect(org.metadata?.slug).toBe(REFUSED_ORG_SLUG);
893
909
  });
894
910
 
911
+ it("a pre-side-effect gate refusal aborts organization create with no row written", async () => {
912
+ const command = createClient(OrganizationCommandController, portTransport);
913
+ const query = createClient(OrganizationQueryController, portTransport);
914
+
915
+ let refused: ConnectError | undefined;
916
+ try {
917
+ await command.create(
918
+ create(OrganizationSchema, {
919
+ apiVersion: "tenancy.stigmer.ai/v1",
920
+ kind: "Organization",
921
+ metadata: { name: "Pre Refused Org", slug: PRE_REFUSED_ORG_SLUG },
922
+ }),
923
+ );
924
+ } catch (error) {
925
+ refused = ConnectError.from(error);
926
+ }
927
+ expect(refused?.code).toBe(Code.FailedPrecondition);
928
+ expect(refused?.rawMessage).toBe("fake organization limit reached");
929
+
930
+ // The slot sits BEFORE Persist: the refused organization was never
931
+ // written, which is the whole reason the slot exists.
932
+ let getError: ConnectError | undefined;
933
+ try {
934
+ await query.get({ value: PRE_REFUSED_ORG_SLUG });
935
+ } catch (error) {
936
+ getError = ConnectError.from(error);
937
+ }
938
+ expect(getError?.code).toBe(Code.NotFound);
939
+ });
940
+
895
941
  it("observers see the terminal updateStatus transition once and the decorator contributes the signal", async () => {
896
942
  const executionId = "aexec_o4_hooks";
897
943
  await server.store.saveResource(
@@ -488,6 +488,9 @@ describe("resolveExtensions — loud-fail throws (DD-006 §2b)", () => {
488
488
  // personal-organization ensure and backfill ride it).
489
489
  "identity-account-provision:post-persist",
490
490
  "org-create:post-persist",
491
+ // The ninth: the organization create chain before Persist, where a
492
+ // limit on which organizations may exist refuses with nothing written.
493
+ "org-create:pre-side-effect-gate",
491
494
  "sandbox-acquisition:gate",
492
495
  "session-create:pre-side-effect-gate",
493
496
  ]);
@@ -43,6 +43,16 @@
43
43
  * resource, and a team member who is not one of the organization's
44
44
  * viewers. Never on `bootstrapPolicy`, the platform's structural lane.
45
45
  *
46
+ * The ninth, `org-create:pre-side-effect-gate`: the organization create
47
+ * chain after its last pure step (CopySlugToId) and before Persist, the
48
+ * position the session chain's slot holds. It exists for a refusal that
49
+ * must leave nothing behind: `org-create:post-persist` runs after the row
50
+ * is written, so a limit enforced there would leave the organization it
51
+ * refused. The Cloud refuses a platform-managed organization its
52
+ * integrator's plan does not admit; a licensed deployment's organization
53
+ * limit belongs here too. `apply` delegates to create on its create arm,
54
+ * so the slot fires there as well.
55
+ *
46
56
  * Two enforcement layers, deliberately redundant, both derived from the
47
57
  * ONE literal tuple below (lockstep by construction):
48
58
  * - GateSlotName (compile time): the union of declared slot literals.
@@ -81,6 +91,7 @@ export const GATE_SLOT_NAMES = [
81
91
  "sandbox-acquisition:gate",
82
92
  "identity-account-provision:post-persist",
83
93
  "iam-policy-create:pre-side-effect-gate",
94
+ "org-create:pre-side-effect-gate",
84
95
  ] as const;
85
96
 
86
97
  /** The declared slot-name union — a registration outside it fails tsc. */