@stigmer/server 3.38.3 → 3.39.1-dev.20260928194002

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 (120) hide show
  1. package/dist/domain/agent/controller.d.ts +2 -2
  2. package/dist/domain/agent/controller.d.ts.map +1 -1
  3. package/dist/domain/agent/controller.js +7 -3
  4. package/dist/domain/agent/controller.js.map +1 -1
  5. package/dist/domain/agentchannel/controller.d.ts +2 -2
  6. package/dist/domain/agentchannel/controller.d.ts.map +1 -1
  7. package/dist/domain/agentchannel/controller.js +10 -5
  8. package/dist/domain/agentchannel/controller.js.map +1 -1
  9. package/dist/domain/agentinstance/controller.d.ts +2 -2
  10. package/dist/domain/agentinstance/controller.d.ts.map +1 -1
  11. package/dist/domain/agentinstance/controller.js +7 -3
  12. package/dist/domain/agentinstance/controller.js.map +1 -1
  13. package/dist/domain/agentinstance/steps.d.ts +3 -1
  14. package/dist/domain/agentinstance/steps.d.ts.map +1 -1
  15. package/dist/domain/agentinstance/steps.js +12 -6
  16. package/dist/domain/agentinstance/steps.js.map +1 -1
  17. package/dist/domain/agentshare/controller.d.ts +2 -2
  18. package/dist/domain/agentshare/controller.d.ts.map +1 -1
  19. package/dist/domain/agentshare/controller.js +7 -3
  20. package/dist/domain/agentshare/controller.js.map +1 -1
  21. package/dist/domain/organization/controller.d.ts.map +1 -1
  22. package/dist/domain/organization/controller.js +33 -14
  23. package/dist/domain/organization/controller.js.map +1 -1
  24. package/dist/domain/organization/slug-ledger.d.ts +86 -0
  25. package/dist/domain/organization/slug-ledger.d.ts.map +1 -0
  26. package/dist/domain/organization/slug-ledger.js +128 -0
  27. package/dist/domain/organization/slug-ledger.js.map +1 -0
  28. package/dist/domain/organization/steps.d.ts +12 -3
  29. package/dist/domain/organization/steps.d.ts.map +1 -1
  30. package/dist/domain/organization/steps.js +28 -6
  31. package/dist/domain/organization/steps.js.map +1 -1
  32. package/dist/domain/plugin/controller.d.ts.map +1 -1
  33. package/dist/domain/plugin/controller.js +10 -5
  34. package/dist/domain/plugin/controller.js.map +1 -1
  35. package/dist/domain/skill/controller.d.ts.map +1 -1
  36. package/dist/domain/skill/controller.js +7 -3
  37. package/dist/domain/skill/controller.js.map +1 -1
  38. package/dist/domain/workflow/controller.js +6 -3
  39. package/dist/domain/workflow/controller.js.map +1 -1
  40. package/dist/domain/workflowinstance/controller.d.ts +2 -2
  41. package/dist/domain/workflowinstance/controller.d.ts.map +1 -1
  42. package/dist/domain/workflowinstance/controller.js +10 -5
  43. package/dist/domain/workflowinstance/controller.js.map +1 -1
  44. package/dist/domain/workflowinstance/steps.d.ts +5 -3
  45. package/dist/domain/workflowinstance/steps.d.ts.map +1 -1
  46. package/dist/domain/workflowinstance/steps.js +14 -9
  47. package/dist/domain/workflowinstance/steps.js.map +1 -1
  48. package/dist/extensions/gate-slots.d.ts +7 -5
  49. package/dist/extensions/gate-slots.d.ts.map +1 -1
  50. package/dist/extensions/gate-slots.js.map +1 -1
  51. package/dist/index.d.ts +3 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +2 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/pipeline/errors.d.ts +8 -0
  56. package/dist/pipeline/errors.d.ts.map +1 -1
  57. package/dist/pipeline/errors.js +19 -0
  58. package/dist/pipeline/errors.js.map +1 -1
  59. package/dist/store/interface.d.ts +67 -0
  60. package/dist/store/interface.d.ts.map +1 -1
  61. package/dist/store/interface.js.map +1 -1
  62. package/dist/store/organization-slug-history.d.ts +71 -0
  63. package/dist/store/organization-slug-history.d.ts.map +1 -0
  64. package/dist/store/organization-slug-history.js +88 -0
  65. package/dist/store/organization-slug-history.js.map +1 -0
  66. package/dist/store/postgres/migrations.d.ts +3 -1
  67. package/dist/store/postgres/migrations.d.ts.map +1 -1
  68. package/dist/store/postgres/migrations.js +69 -1
  69. package/dist/store/postgres/migrations.js.map +1 -1
  70. package/dist/store/postgres/store.d.ts +2 -1
  71. package/dist/store/postgres/store.d.ts.map +1 -1
  72. package/dist/store/postgres/store.js +49 -0
  73. package/dist/store/postgres/store.js.map +1 -1
  74. package/dist/store/sqlite/migrations.d.ts +3 -1
  75. package/dist/store/sqlite/migrations.d.ts.map +1 -1
  76. package/dist/store/sqlite/migrations.js +54 -1
  77. package/dist/store/sqlite/migrations.js.map +1 -1
  78. package/dist/store/sqlite/store.d.ts +2 -1
  79. package/dist/store/sqlite/store.d.ts.map +1 -1
  80. package/dist/store/sqlite/store.js +55 -0
  81. package/dist/store/sqlite/store.js.map +1 -1
  82. package/package.json +6 -6
  83. package/src/domain/agent/__tests__/store-faults.test.ts +105 -0
  84. package/src/domain/agent/controller.ts +9 -5
  85. package/src/domain/agentchannel/__tests__/store-faults.test.ts +126 -0
  86. package/src/domain/agentchannel/controller.ts +12 -7
  87. package/src/domain/agentinstance/__tests__/store-faults.test.ts +161 -0
  88. package/src/domain/agentinstance/controller.ts +9 -5
  89. package/src/domain/agentinstance/steps.ts +12 -6
  90. package/src/domain/agentshare/__tests__/store-faults.test.ts +101 -0
  91. package/src/domain/agentshare/controller.ts +9 -5
  92. package/src/domain/organization/__tests__/organization-delete.test.ts +73 -18
  93. package/src/domain/organization/__tests__/organization-slugs.test.ts +386 -0
  94. package/src/domain/organization/controller.ts +36 -14
  95. package/src/domain/organization/slug-ledger.ts +209 -0
  96. package/src/domain/organization/steps.ts +28 -6
  97. package/src/domain/plugin/__tests__/store-faults.test.ts +104 -0
  98. package/src/domain/plugin/controller.ts +10 -5
  99. package/src/domain/skill/__tests__/store-faults.test.ts +103 -0
  100. package/src/domain/skill/controller.ts +7 -3
  101. package/src/domain/workflow/__tests__/store-faults.test.ts +107 -0
  102. package/src/domain/workflow/controller.ts +6 -3
  103. package/src/domain/workflowinstance/__tests__/store-faults.test.ts +172 -0
  104. package/src/domain/workflowinstance/controller.ts +12 -7
  105. package/src/domain/workflowinstance/steps.ts +14 -10
  106. package/src/extensions/gate-slots.ts +7 -5
  107. package/src/index.ts +11 -0
  108. package/src/pipeline/__tests__/blind-not-found.test.ts +4 -24
  109. package/src/pipeline/errors.ts +23 -0
  110. package/src/store/__tests__/organization-slug-history.test.ts +109 -0
  111. package/src/store/__tests__/store-contract.ts +86 -1
  112. package/src/store/interface.ts +70 -0
  113. package/src/store/organization-slug-history.ts +159 -0
  114. package/src/store/postgres/__tests__/migrations.test.ts +138 -2
  115. package/src/store/postgres/__tests__/store-contract.test.ts +1 -0
  116. package/src/store/postgres/migrations.ts +84 -1
  117. package/src/store/postgres/store.ts +84 -0
  118. package/src/store/sqlite/__tests__/migrations.test.ts +139 -10
  119. package/src/store/sqlite/migrations.ts +69 -1
  120. package/src/store/sqlite/store.ts +84 -0
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/domain/organization/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAuBzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAiDjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAQtD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kHAAkH;IAClH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,oFAAoF;IACpF,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,qGAAqG;IACrG,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC5E,kFAAkF;IAClF,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACnE;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,0BAA0B,GAC/B,IAAI,CA4BN"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/domain/organization/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAuBzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAiDjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAatD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kHAAkH;IAClH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,oFAAoF;IACpF,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,qGAAqG;IACrG,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC5E,kFAAkF;IAClF,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACnE;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,0BAA0B,GAC/B,IAAI,CA4BN"}
@@ -30,6 +30,7 @@ import { newValidateProtoStep } from "../../pipeline/steps/validation.js";
30
30
  import { newValidateVisibilityStep } from "../../pipeline/steps/validate-visibility.js";
31
31
  import { ResourceNotFoundError } from "../../store/interface.js";
32
32
  import { organizationSearchExtractor } from "./search-extractor.js";
33
+ import { newClaimOrganizationSlugStep, newRetireOrganizationSlugStep, releaseSlugClaimAfterFailure, } from "./slug-ledger.js";
33
34
  import { newCheckOrgDuplicateStep, newCopySlugToIdStep, newRevokeOrganizationPoliciesStep, } from "./steps.js";
34
35
  /** Registers both organization services on the router (routes stage). */
35
36
  export function registerOrganizationServices(router, deps) {
@@ -68,6 +69,13 @@ function kindOf(ctx) {
68
69
  * refusal there leaves no organization behind. It is where a limit on
69
70
  * which organizations may exist is enforced.
70
71
  *
72
+ * ClaimOrganizationSlug follows the slot, immediately before Persist: the
73
+ * slug is claimed in the ledger atomically, so of two concurrent creates of
74
+ * one slug exactly one proceeds, and a slug any organization ever held is
75
+ * refused (slug-ledger.ts). When the chain fails after the claim and the
76
+ * organization was never stored, the claim is released so a retry can take
77
+ * the slug.
78
+ *
71
79
  * The post-persist gate slot splices after Persist, before IndexSearch —
72
80
  * the verified Java OrganizationCreateHandler ordering (FGA tuple
73
81
  * seeding, billing account getOrCreate: synchronous, a failure fails the
@@ -91,6 +99,7 @@ async function createOrganization(deps, org, ctx) {
91
99
  builder.addStep(step);
92
100
  }
93
101
  builder
102
+ .addStep(newClaimOrganizationSlugStep(deps.store))
94
103
  .addStep(newPersistStep(deps.store))
95
104
  // The C2 tuple step runs BEFORE the post-persist slot — the verified
96
105
  // Java order (createAuthorizationTuples → linkManagedOrgToIdentityProvider
@@ -101,10 +110,16 @@ async function createOrganization(deps, org, ctx) {
101
110
  for (const step of stepsForSlot(deps.gateSteps, "org-create:post-persist")) {
102
111
  builder.addStep(step);
103
112
  }
104
- await builder
113
+ const pipeline = builder
105
114
  .addStep(newIndexSearchStep(deps.store, organizationSearchExtractor, deps.logger))
106
- .build()
107
- .execute(reqCtx);
115
+ .build();
116
+ try {
117
+ await pipeline.execute(reqCtx);
118
+ }
119
+ catch (error) {
120
+ await releaseSlugClaimAfterFailure(deps.store, deps.logger, reqCtx);
121
+ throw error;
122
+ }
108
123
  return reqCtx.newState;
109
124
  }
110
125
  /** Update — chain per Go buildUpdatePipeline. */
@@ -149,21 +164,24 @@ async function apply(deps, org, ctx) {
149
164
  /**
150
165
  * Delete — returns the deleted organization (gRPC audit-trail convention).
151
166
  *
152
- * Everything that names the organization goes before its row, and a fault
153
- * stops the delete with the organization intact: an organization's id is
154
- * its slug, the delete frees the slug for anyone, and whatever outlived
155
- * the row would belong to the slug's next holder. So, after the load:
167
+ * An organization's id is its slug, and a slug is never taken again
168
+ * (slug-ledger.ts), so whatever outlives the row can never pass to a new
169
+ * holder of the slug. Everything that grants on the organization still
170
+ * goes before its row, and a fault stops the delete with the organization
171
+ * intact, so nothing it granted outlives it. After the load:
156
172
  *
157
- * 1. the `org-delete:pre-delete` slot, where an edition refuses or
173
+ * 1. RetireOrganizationSlug, the slug marked retired in the ledger, so it
174
+ * is retired before the row can go;
175
+ * 2. the `org-delete:pre-delete` slot, where an edition refuses or
158
176
  * removes the rows it keeps for the organization (empty in OSS);
159
- * 2. RevokeOrganizationPolicies, every policy row naming the
177
+ * 3. RevokeOrganizationPolicies, every policy row naming the
160
178
  * organization, through the grant path, never caught;
161
- * 3. the row;
162
- * 4. CleanupIamPolicies, the lifecycle's post-delete event: best-effort
179
+ * 4. the row;
180
+ * 5. CleanupIamPolicies, the lifecycle's post-delete event: best-effort
163
181
  * like every delete chain's, it revokes whatever a concurrent write
164
- * named the organization with after step 2, and runs a composed
182
+ * named the organization with after step 3, and runs a composed
165
183
  * driver's post-delete companions;
166
- * 5. the search entry.
184
+ * 6. the search entry.
167
185
  */
168
186
  async function deleteOrganization(deps, orgId, ctx) {
169
187
  const reqCtx = new RequestContext(OrganizationCommandController.method.delete.input, orgId, callerIdentityOf(ctx), kindOf(ctx));
@@ -171,7 +189,8 @@ async function deleteOrganization(deps, orgId, ctx) {
171
189
  .addStep(newAuthorizeStep(OrganizationCommandController.method.delete, deps.authorizer))
172
190
  .addStep(newValidateProtoStep())
173
191
  .addStep(newExtractResourceIdStep())
174
- .addStep(newLoadExistingForDeleteStep(deps.store, OrganizationSchema));
192
+ .addStep(newLoadExistingForDeleteStep(deps.store, OrganizationSchema))
193
+ .addStep(newRetireOrganizationSlugStep(deps.store));
175
194
  // The pre-delete gate slot (see the doc comment above). Empty in OSS.
176
195
  for (const step of stepsForSlot(deps.gateSteps, "org-delete:pre-delete")) {
177
196
  builder.addStep(step);
@@ -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":"AA4BA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAEtH,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,0DAA0D,CAAC;AAWlE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAI/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAiBpB,yEAAyE;AACzE,MAAM,UAAU,4BAA4B,CAC1C,MAAqB,EACrB,IAAgC;IAEhC,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE;QAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QACxD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;KAC7D,CAAC,CAAC;IACH,wEAAwE;IACxE,qEAAqE;IACrE,mEAAmE;IACnE,iDAAiD;IACjD,MAAM,cAAc,GAClB,IAAI,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,IAAI,CAC1D,IAAI,CAAC,qBAAqB,CAC3B,CAAC;IACJ,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE;QAC1C,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QAC1C,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QACxC,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC;QAC/D,GAAG,CAAC,cAAc,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,kBAAkB,EAAE,CAClB,MAAkC,EAClC,GAAmB,EACnB,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC;aAC3D,CAAC;KACP,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,GAAmB;IACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAgC,EAChC,GAAiB,EACjB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,kBAAkB,EAClB,GAAG,EACH,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CACzB,qBAAqB,EACrB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CACd,6BAA6B,CAAC,MAAM,CAAC,MAAM,EAC3C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAC7B,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,yBAAyB,EAAE,CAAC;SACpC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClC,2EAA2E;IAC3E,KAAK,MAAM,IAAI,IAAI,YAAY,CAC7B,IAAI,CAAC,SAAS,EACd,iCAAiC,CAClC,EAAE,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO;SACJ,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,qEAAqE;QACrE,2EAA2E;QAC3E,6DAA6D;SAC5D,OAAO,CACN,gCAAgC,CAC9B,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,MAAM,CACZ,CACF,CAAC;IACJ,sEAAsE;IACtE,wEAAwE;IACxE,KAAK,MAAM,IAAI,IAAI,YAAY,CAC7B,IAAI,CAAC,SAAS,EACd,yBAAyB,CAC1B,EAAE,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CACN,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,CAAC,MAAM,CAAC,CACzE;SACA,KAAK,EAAE,CAAC;IACX,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED,iDAAiD;AACjD,KAAK,UAAU,MAAM,CACnB,IAAgC,EAChC,GAAiB,EACjB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,kBAAkB,EAClB,GAAG,EACH,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CACf,qBAAqB,EACrB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CACd,6BAA6B,CAAC,MAAM,CAAC,MAAM,EAC3C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAC7B,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxC,OAAO,CAAC,uBAAuB,EAAE,CAAC;SAClC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC,OAAO,CACN,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,CAAC,MAAM,CAAC,CACzE;SACA,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,KAAK,CAClB,IAAgC,EAChC,GAAiB,EACjB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,kBAAkB,EAClB,GAAG,EACH,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CACf,oBAAoB,EACpB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CACd,6BAA6B,CAAC,MAAM,CAAC,KAAK,EAC1C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAC7B,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxC,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnD,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,aAAa,CACjB,IAAI,KAAK,CAAC,8CAA8C,CAAC,EACzD,sDAAsD,CACvD,CAAC;IACJ,CAAC;IACD,OAAO,YAAY;QACjB,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAgC,EAChC,KAAqB,EACrB,GAAmB;IAGnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EACjD,KAAK,EACL,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAc,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC;SACzE,OAAO,CACN,gBAAgB,CACd,6BAA6B,CAAC,MAAM,CAAC,MAAM,EAC3C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,wBAAwB,EAAE,CAAC;SACnC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;SACrE,OAAO,CAAC,6BAA6B,CAAc,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,sEAAsE;IACtE,KAAK,MAAM,IAAI,IAAI,YAAY,CAC7B,IAAI,CAAC,SAAS,EACd,uBAAuB,CACxB,EAAE,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,OAAO;SACV,OAAO,CAAC,iCAAiC,CAAc,IAAI,CAAC,SAAS,CAAC,CAAC;SACvE,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1C,OAAO,CACN,yBAAyB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,CACpE;SACA,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1D,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,aAAa,CACjB,IAAI,KAAK,CAAC,2CAA2C,CAAC,EACtD,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,OAAuB,CAAC;AACjC,CAAC;AAED,oDAAoD;AACpD,KAAK,UAAU,GAAG,CAChB,IAAgC,EAChC,KAAqB,EACrB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAC5C,KAAK,EACL,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CACf,kBAAkB,EAClB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CAAC,2BAA2B,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAC1E;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;SAC1D,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAiB,CAAC;AACzD,CAAC;AAED,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC;;;;;;;;GAQG;AACH,KAAK,UAAU,IAAI,CACjB,IAAgC,EAChC,GAA4B,EAC5B,GAAmB;IAEnB,IAAI,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,YAAY,CACpB,wFAAwF,EACxF,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAC7C,GAAG,EACH,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CACf,mBAAmB,EACnB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CACd,2BAA2B,CAAC,MAAM,CAAC,IAAI,EACvC,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChD,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAqB,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAClC,KAAY;IAEZ,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,KAAK,CAAC,OAAO,CACX,GAAyE;YAEzE,IAAI,IAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,IAAI,GAAmB,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS,CAAC,kCAAkC;gBAC9C,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5B,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACtB,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;oBACrB,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5B,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAClB,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;YACD,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;gBACnB,QAAQ,GAAG,GAAG,CAAC;YACjB,CAAC;YACD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;YAC1C,MAAM,OAAO,GACX,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;YAElE,GAAG,CAAC,GAAG,CACL,eAAe,EACf,MAAM,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAChC,IAAgC,EAChC,GAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAC7C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,qBAAqB,CACtD,gBAAgB,CAAC,GAAG,CAAC,CACtB,CAAC;QACF,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAC1B,eAAe,CAAC,YAAY,EAC5B,EAAE,EACF,kBAAkB,CACnB,CACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;wBAC3C,SAAS;oBACX,CAAC;oBACD,MAAM,aAAa,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,IAAI,IAAkB,CAAC;IACvB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAgC,EAChC,MAAwE,EACxE,KAAiC,EACjC,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,2BAA2B,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAC3D,KAAK,EACL,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CAEf,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC;SAClD,OAAO,CACN,gBAAgB,CACd,2BAA2B,CAAC,MAAM,CAAC,kBAAkB,EACrD,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,MAAM,CACxB;QACE,GAAG,EAAE,KAAK,CAAC,mBAAmB,EAAE,GAAG,IAAI,EAAE;QACzC,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,IAAI,EAAE;KAC5C,EACD,KAAK,CAAC,aAAa,CACpB,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC1C,MAAM,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,yBAAyB,CAC7B,IAAI,CAAC,UAAU,EACf,MAAM,CAAC,cAAc,EACrB;QACE,UAAU,EAAE,aAAa,CAAC,QAAQ;QAClC,YAAY,EAAE,eAAe,CAAC,iBAAiB;QAC/C,UAAU,EAAE,KAAK,CAAC,kBAAkB;KACrC,EACD,8BAA8B,CAC/B,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CACjC,eAAe,CAAC,YAAY,EAC5B,KAAK,EACL,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,aAAa,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,8BAA8B,GAAG,wCAAwC,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The organization domain's use of the slug ledger (the Store's
3
+ * `organizationSlugs`; store/interface.ts states its guarantees): an
4
+ * organization's slug is its for good.
5
+ *
6
+ * An organization's id is its slug, and the delete removes the row. Rows
7
+ * that name the organization can outlive it (every organization-scoped
8
+ * resource names it in `metadata.org`, and an edition may keep its own rows
9
+ * by the id), so a slug taken again would hand them all to the new holder.
10
+ * The ledger closes that: the create claims the slug atomically, the delete
11
+ * retires it, and nothing ever frees a retired slug.
12
+ *
13
+ * The create touches the ledger twice. CheckDuplicate reads it first, so a
14
+ * taken slug is refused before any gate runs (steps.ts). ClaimOrganizationSlug
15
+ * then claims it immediately before Persist, after the pre-side-effect gate
16
+ * slot, so a gate's refusal still leaves nothing written; of two concurrent
17
+ * creates of one slug, exactly one claim wins, which the row alone cannot
18
+ * give because `saveResource` upserts. A create that fails after its claim
19
+ * and before its row is stored releases the claim, so the caller's retry
20
+ * can take the slug again; a create that fails after the row keeps it,
21
+ * because the organization exists.
22
+ *
23
+ * The refusal says why. A retired slug answers AlreadyExists carrying the
24
+ * ORGANIZATION_SLUG_RESERVED reason (the organization create's contract
25
+ * documents it), so the CLI and the console can tell a person the slug
26
+ * belonged to a deleted organization. A held slug keeps the existing copy
27
+ * with no reason: it covers a live organization and also a create between
28
+ * its claim and its row, which must never read as "deleted". Both keep the
29
+ * AlreadyExists code, which the personal-organization retry keys on.
30
+ *
31
+ * Proven by __tests__/organization-slugs.test.ts and the organization
32
+ * conformance suite.
33
+ */
34
+ import type { DescMessage } from "@bufbuild/protobuf";
35
+ import type { ConnectError } from "@connectrpc/connect";
36
+ import type { Logger } from "../../boot/logger.js";
37
+ import type { OrganizationSlugEntry, Store } from "../../store/interface.js";
38
+ import type { PipelineStep } from "../../pipeline/pipeline.js";
39
+ import type { RequestContext } from "../../pipeline/request-context.js";
40
+ import { OrganizationSchema } from "@stigmer/protos/ai/stigmer/tenancy/organization/v1/api_pb";
41
+ /**
42
+ * The ErrorInfo reason a create of a retired slug carries: a deleted
43
+ * organization held the slug, and a slug is never reused. Wire contract,
44
+ * documented on OrganizationCommandController.create; metadata `slug`.
45
+ */
46
+ export declare const ORGANIZATION_SLUG_RESERVED = "ORGANIZATION_SLUG_RESERVED";
47
+ /** The copy of a retired slug's refusal. */
48
+ export declare function organizationSlugReservedMessage(slug: string): string;
49
+ /**
50
+ * The refusal for a slug an entry already holds: the reserved refusal for a
51
+ * retired entry, the existing duplicate copy for one still held.
52
+ */
53
+ export declare function refusalForHeldSlug(entry: OrganizationSlugEntry): ConnectError;
54
+ /**
55
+ * Claims the new organization's slug, immediately before Persist. A lost
56
+ * claim is refused by the entry that holds the slug; a won claim is left in
57
+ * the request for releaseSlugClaimAfterFailure.
58
+ */
59
+ export declare function newClaimOrganizationSlugStep(store: Store): PipelineStep<typeof OrganizationSchema>;
60
+ /**
61
+ * Frees the slug a failed create claimed, when its organization was never
62
+ * stored, so the caller's retry can take the slug again. Called by the
63
+ * create around its chain, as send-signal.ts releases a dedupe claim.
64
+ *
65
+ * Whether the row exists decides, rather than which step failed: a Persist
66
+ * that stored the row and then failed keeps the claim, as it must, because
67
+ * the organization exists. Any fault here is logged and leaves the slug
68
+ * claimed with no organization, which nothing can then take; that is a
69
+ * hand's to resolve, and far rarer than the failure it follows.
70
+ */
71
+ export declare function releaseSlugClaimAfterFailure(store: Store, logger: Logger, ctx: RequestContext<typeof OrganizationSchema>): Promise<void>;
72
+ /**
73
+ * Retires the organization's slug before anything else the delete does,
74
+ * right after the organization is loaded. Its entry may not exist yet (an
75
+ * organization created before the ledger, or by an older binary during a
76
+ * rolling upgrade), and retire records it either way, so the slug is
77
+ * retired before the row can go.
78
+ *
79
+ * A fault fails the delete with the organization intact. A delete that
80
+ * fails later (an edition's refusal on the pre-delete slot, a revocation
81
+ * fault) leaves a live organization whose slug reads as retired; nothing
82
+ * observes that, because a create of the slug is refused either way, and a
83
+ * retry of the delete resumes.
84
+ */
85
+ export declare function newRetireOrganizationSlugStep<Desc extends DescMessage>(store: Store): PipelineStep<Desc>;
86
+ //# sourceMappingURL=slug-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-ledger.d.ts","sourceRoot":"","sources":["../../../src/domain/organization/slug-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAM7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAE/F;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAKvE,4CAA4C;AAC5C,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAQ7E;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,KAAK,GACX,YAAY,CAAC,OAAO,kBAAkB,CAAC,CA2BzC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,SAAS,WAAW,EACpE,KAAK,EAAE,KAAK,GACX,YAAY,CAAC,IAAI,CAAC,CAuBpB"}
@@ -0,0 +1,128 @@
1
+ import { ResourceNotFoundError } from "../../store/interface.js";
2
+ import { alreadyExistsError, alreadyExistsWithReasonError, internalError, } from "../../pipeline/errors.js";
3
+ import { EXISTING_RESOURCE_KEY } from "../../pipeline/steps/load-existing.js";
4
+ import { metadataOf } from "../../pipeline/steps/shapes.js";
5
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
6
+ import { OrganizationSchema } from "@stigmer/protos/ai/stigmer/tenancy/organization/v1/api_pb";
7
+ /**
8
+ * The ErrorInfo reason a create of a retired slug carries: a deleted
9
+ * organization held the slug, and a slug is never reused. Wire contract,
10
+ * documented on OrganizationCommandController.create; metadata `slug`.
11
+ */
12
+ export const ORGANIZATION_SLUG_RESERVED = "ORGANIZATION_SLUG_RESERVED";
13
+ /** Where ClaimOrganizationSlug leaves the entry it won, for the release after a failure. */
14
+ const CLAIMED_SLUG_KEY = "organizationSlugClaim";
15
+ /** The copy of a retired slug's refusal. */
16
+ export function organizationSlugReservedMessage(slug) {
17
+ return `Organization slug '${slug}' belonged to an organization that was deleted, and a slug is never reused`;
18
+ }
19
+ /**
20
+ * The refusal for a slug an entry already holds: the reserved refusal for a
21
+ * retired entry, the existing duplicate copy for one still held.
22
+ */
23
+ export function refusalForHeldSlug(entry) {
24
+ if (entry.retiredAt !== "") {
25
+ return alreadyExistsWithReasonError(organizationSlugReservedMessage(entry.slug), { reason: ORGANIZATION_SLUG_RESERVED, metadata: { slug: entry.slug } });
26
+ }
27
+ return alreadyExistsError("Organization", `slug '${entry.slug}'`);
28
+ }
29
+ /**
30
+ * Claims the new organization's slug, immediately before Persist. A lost
31
+ * claim is refused by the entry that holds the slug; a won claim is left in
32
+ * the request for releaseSlugClaimAfterFailure.
33
+ */
34
+ export function newClaimOrganizationSlugStep(store) {
35
+ return {
36
+ name: "ClaimOrganizationSlug",
37
+ async execute(ctx) {
38
+ const slug = metadataOf(ctx.newState)?.slug ?? "";
39
+ // ResolveSlug and CheckDuplicate run first, so an empty slug here is
40
+ // a server-side ordering bug, not bad client input.
41
+ if (slug === "") {
42
+ throw internalError(new Error("organization slug is empty"), "failed to claim the organization slug");
43
+ }
44
+ let claim;
45
+ try {
46
+ claim = await store.organizationSlugs.claim(slug);
47
+ }
48
+ catch (error) {
49
+ throw internalError(error, "failed to claim the organization slug");
50
+ }
51
+ if (!claim.claimed) {
52
+ throw refusalForHeldSlug(claim.entry);
53
+ }
54
+ ctx.set(CLAIMED_SLUG_KEY, claim.entry);
55
+ },
56
+ };
57
+ }
58
+ /**
59
+ * Frees the slug a failed create claimed, when its organization was never
60
+ * stored, so the caller's retry can take the slug again. Called by the
61
+ * create around its chain, as send-signal.ts releases a dedupe claim.
62
+ *
63
+ * Whether the row exists decides, rather than which step failed: a Persist
64
+ * that stored the row and then failed keeps the claim, as it must, because
65
+ * the organization exists. Any fault here is logged and leaves the slug
66
+ * claimed with no organization, which nothing can then take; that is a
67
+ * hand's to resolve, and far rarer than the failure it follows.
68
+ */
69
+ export async function releaseSlugClaimAfterFailure(store, logger, ctx) {
70
+ const entry = ctx.get(CLAIMED_SLUG_KEY);
71
+ if (entry === undefined) {
72
+ return;
73
+ }
74
+ try {
75
+ await store.getResource(ApiResourceKind.organization, entry.slug, OrganizationSchema);
76
+ return; // stored: the organization exists and keeps its slug
77
+ }
78
+ catch (error) {
79
+ if (!(error instanceof ResourceNotFoundError)) {
80
+ logger.error("organization create failed and its slug claim could not be checked; the slug stays claimed", {
81
+ slug: entry.slug,
82
+ error: error instanceof Error ? error.message : String(error),
83
+ });
84
+ return;
85
+ }
86
+ }
87
+ try {
88
+ await store.organizationSlugs.release(entry);
89
+ }
90
+ catch (error) {
91
+ logger.error("organization create failed and its slug claim could not be released; the slug stays claimed", {
92
+ slug: entry.slug,
93
+ error: error instanceof Error ? error.message : String(error),
94
+ });
95
+ }
96
+ }
97
+ /**
98
+ * Retires the organization's slug before anything else the delete does,
99
+ * right after the organization is loaded. Its entry may not exist yet (an
100
+ * organization created before the ledger, or by an older binary during a
101
+ * rolling upgrade), and retire records it either way, so the slug is
102
+ * retired before the row can go.
103
+ *
104
+ * A fault fails the delete with the organization intact. A delete that
105
+ * fails later (an edition's refusal on the pre-delete slot, a revocation
106
+ * fault) leaves a live organization whose slug reads as retired; nothing
107
+ * observes that, because a create of the slug is refused either way, and a
108
+ * retry of the delete resumes.
109
+ */
110
+ export function newRetireOrganizationSlugStep(store) {
111
+ return {
112
+ name: "RetireOrganizationSlug",
113
+ async execute(ctx) {
114
+ const organization = ctx.get(EXISTING_RESOURCE_KEY);
115
+ const id = organization?.metadata?.id ?? "";
116
+ if (id === "") {
117
+ throw internalError(new Error("organization delete reached RetireOrganizationSlug without its loaded row"), "failed to retire the organization slug");
118
+ }
119
+ try {
120
+ await store.organizationSlugs.retire(id);
121
+ }
122
+ catch (error) {
123
+ throw internalError(error, "failed to retire the organization slug");
124
+ }
125
+ },
126
+ };
127
+ }
128
+ //# sourceMappingURL=slug-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-ledger.js","sourceRoot":"","sources":["../../../src/domain/organization/slug-ledger.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,13 @@ import { OrganizationSchema } from "@stigmer/protos/ai/stigmer/tenancy/organizat
17
17
  * organization. Checking existence by id (== the resolved slug) closes
18
18
  * that hole and mirrors cloud's OrganizationCreateHandler.CheckDuplicate.
19
19
  *
20
+ * A slug is taken for good (slug-ledger.ts), so the slug ledger is read
21
+ * first: a retired slug is refused with the reserved reason, a held one
22
+ * with the duplicate copy. The row is read after it for an organization no
23
+ * ledger entry records yet, one an older binary created during a rolling
24
+ * upgrade. This read is the early refusal, before any gate; the atomic
25
+ * guarantee is ClaimOrganizationSlug's, immediately before Persist.
26
+ *
20
27
  * Runs after ResolveSlug (slug is set) and before BuildNewState/
21
28
  * CopySlugToId (the id is not yet minted), so it keys on the slug value
22
29
  * that will become the id.
@@ -38,9 +45,11 @@ export declare function newCopySlugToIdStep(): PipelineStep<typeof OrganizationS
38
45
  *
39
46
  * The generic delete chains clean up after the row and log a fault,
40
47
  * because a deleted resource's rows grant nothing once it is gone. An
41
- * organization is the exception: its id is its slug, the delete frees the
42
- * slug, and a row left behind would grant whoever creates the slug next.
43
- * So this step does not catch. A fault fails the delete with the
48
+ * organization is the exception: its rows are the grants on the tenancy
49
+ * root itself, and the scope link of every resource under it. The slug is
50
+ * never taken again (slug-ledger.ts), so they cannot pass to a new holder,
51
+ * but a row left behind would still be a grant nobody administers. So this
52
+ * step does not catch. A fault fails the delete with the
44
53
  * organization in place, and a retry resumes where the revocation stopped
45
54
  * (the grant path revokes the organization's owners last, so the owner
46
55
  * who retries still can). The grant path fires the composed driver's
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../../src/domain/organization/steps.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAKrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAE/F;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,GACX,YAAY,CAAC,OAAO,kBAAkB,CAAC,CA+BzC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAgB7E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,SAAS,WAAW,EACxE,SAAS,EAAE,kBAAkB,GAC5B,YAAY,CAAC,IAAI,CAAC,CA6BpB"}
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../../src/domain/organization/steps.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAMrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,GACX,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAyCzC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAgB7E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,SAAS,WAAW,EACxE,SAAS,EAAE,kBAAkB,GAC5B,YAAY,CAAC,IAAI,CAAC,CA6BpB"}
@@ -10,9 +10,11 @@
10
10
  * uniqueness guarantee, mirroring cloud's OrganizationCreateHandler
11
11
  * (CheckDuplicate + CopySlugToId) step-for-step.
12
12
  *
13
- * The same deviation shapes the delete: a freed slug is anyone's to take,
14
- * so newRevokeOrganizationPoliciesStep revokes the organization's policy
15
- * rows BEFORE its row is deleted, and fails the delete when it cannot.
13
+ * The same deviation shapes the delete. A slug is never taken twice
14
+ * (slug-ledger.ts), and newRevokeOrganizationPoliciesStep still revokes
15
+ * the organization's policy rows BEFORE its row is deleted, and fails the
16
+ * delete when it cannot, so nothing that grants on the organization
17
+ * outlives it.
16
18
  *
17
19
  * Proven by organization.conformance.test.ts (CONFORMANCE_TARGET=local),
18
20
  * __tests__/organization.test.ts and __tests__/organization-delete.test.ts.
@@ -22,6 +24,7 @@ import { ResourceNotFoundError } from "../../store/interface.js";
22
24
  import { alreadyExistsError, internalError } from "../../pipeline/errors.js";
23
25
  import { EXISTING_RESOURCE_KEY } from "../../pipeline/steps/load-existing.js";
24
26
  import { metadataOf } from "../../pipeline/steps/shapes.js";
27
+ import { refusalForHeldSlug } from "./slug-ledger.js";
25
28
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
26
29
  import { ApiResourceRefSchema } from "@stigmer/protos/ai/stigmer/iam/iampolicy/v1/spec_pb";
27
30
  import { OrganizationSchema } from "@stigmer/protos/ai/stigmer/tenancy/organization/v1/api_pb";
@@ -39,6 +42,13 @@ import { OrganizationSchema } from "@stigmer/protos/ai/stigmer/tenancy/organizat
39
42
  * organization. Checking existence by id (== the resolved slug) closes
40
43
  * that hole and mirrors cloud's OrganizationCreateHandler.CheckDuplicate.
41
44
  *
45
+ * A slug is taken for good (slug-ledger.ts), so the slug ledger is read
46
+ * first: a retired slug is refused with the reserved reason, a held one
47
+ * with the duplicate copy. The row is read after it for an organization no
48
+ * ledger entry records yet, one an older binary created during a rolling
49
+ * upgrade. This read is the early refusal, before any gate; the atomic
50
+ * guarantee is ClaimOrganizationSlug's, immediately before Persist.
51
+ *
42
52
  * Runs after ResolveSlug (slug is set) and before BuildNewState/
43
53
  * CopySlugToId (the id is not yet minted), so it keys on the slug value
44
54
  * that will become the id.
@@ -58,6 +68,16 @@ export function newCheckOrgDuplicateStep(store) {
58
68
  if (metadata.slug === "") {
59
69
  throw internalError(new Error("organization slug is empty"), "duplicate check");
60
70
  }
71
+ let entry;
72
+ try {
73
+ entry = await store.organizationSlugs.find(metadata.slug);
74
+ }
75
+ catch (error) {
76
+ throw internalError(error, "failed to check for duplicate organization");
77
+ }
78
+ if (entry !== undefined) {
79
+ throw refusalForHeldSlug(entry);
80
+ }
61
81
  try {
62
82
  await store.getResource(ctx.apiResourceKind, metadata.slug, OrganizationSchema);
63
83
  }
@@ -103,9 +123,11 @@ export function newCopySlugToIdStep() {
103
123
  *
104
124
  * The generic delete chains clean up after the row and log a fault,
105
125
  * because a deleted resource's rows grant nothing once it is gone. An
106
- * organization is the exception: its id is its slug, the delete frees the
107
- * slug, and a row left behind would grant whoever creates the slug next.
108
- * So this step does not catch. A fault fails the delete with the
126
+ * organization is the exception: its rows are the grants on the tenancy
127
+ * root itself, and the scope link of every resource under it. The slug is
128
+ * never taken again (slug-ledger.ts), so they cannot pass to a new holder,
129
+ * but a row left behind would still be a grant nobody administers. So this
130
+ * step does not catch. A fault fails the delete with the
109
131
  * organization in place, and a retry resumes where the revocation stopped
110
132
  * (the grant path revokes the organization's owners last, so the owner
111
133
  * who retries still can). The grant path fires the composed driver's
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../src/domain/organization/steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../src/domain/organization/steps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/domain/plugin/controller.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAgCzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAgDjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AA+BzE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,eAAe,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAC1D,yHAAyH;IACzH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,oBAAoB,GACzB,IAAI,CAcN"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/domain/plugin/controller.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAgCzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAiDjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AA+BzE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,eAAe,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAC1D,yHAAyH;IACzH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,oBAAoB,GACzB,IAAI,CAcN"}
@@ -16,8 +16,9 @@
16
16
  * in-process clients it rides exist only after the routes this controller
17
17
  * is registered in.
18
18
  *
19
- * Proven by __tests__/plugin.test.ts (composed-server round-trips) and
20
- * plugin.conformance.test.ts (CONFORMANCE_TARGET=local, local-postgres).
19
+ * Proven by __tests__/plugin.test.ts (composed-server round-trips),
20
+ * __tests__/store-faults.test.ts and plugin.conformance.test.ts
21
+ * (CONFORMANCE_TARGET=local, local-postgres).
21
22
  */
22
23
  import { create, fromBinary } from "@bufbuild/protobuf";
23
24
  import { AgentSchema } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
@@ -48,6 +49,7 @@ import { newDeleteVersionArchivesStep } from "../../pipeline/steps/version-archi
48
49
  import { LIST_VERSIONS_RESPONSE_KEY, newLoadAndMapVersionsStep, newLoadByReferenceWithVersionStep, newResolveBySlugForVersionsStep, versionHistoryTarget, } from "../../pipeline/steps/version-history.js";
49
50
  import { loadedTargetAsMethod, newAuthorizeResolvedTargetStep, } from "../../pipeline/steps/authorize-resolved-target.js";
50
51
  import { metadataOf } from "../../pipeline/steps/shapes.js";
52
+ import { ResourceNotFoundError } from "../../store/interface.js";
51
53
  import { TRANSFER_LANE_NOT_CONFIGURED } from "./constants.js";
52
54
  import { findMembers } from "./members.js";
53
55
  import { PLUGIN_CONVERGED_KEY, PLUGIN_KEY, EXISTING_PLUGIN_KEY, newArchiveCurrentPluginStep, newBuildInitialPluginStep, newCheckAndStoreArtifactStep, newFinalizePluginStatusStep, newFindExistingPluginBySlugStep, newGateAndHashArchiveStep, newGeneratePluginIdIfNeededStep, newGuardPluginVisibilityStep, newIndexPluginSearchStep, newMaterializeMembersStep, newParseOverlayDocumentsStep, newPlanMaterializationStep, newPluginPushAuthorizationTuplesStep, newPopulatePluginFieldsStep, newReadPluginPackageStep, newRemoveDroppedMembersStep, newResolveConvergenceStep, newSanitizePluginMetadataStep, newStorePluginStep, orderForDeletion, pluginLiveTag, } from "./push.js";
@@ -175,7 +177,7 @@ async function updateVisibility(deps, input, ctx) {
175
177
  .execute(reqCtx);
176
178
  return reqCtx.get(UPDATE_VISIBILITY_PLUGIN_KEY);
177
179
  }
178
- /** Loads the plugin by resource_id; ANY load failure → NotFound. */
180
+ /** Loads the plugin by resource_id; a missing one answers NotFound, a store fault Internal. */
179
181
  function newLoadPluginByIdStep(store, key) {
180
182
  return {
181
183
  name: "LoadPluginForVisibilityUpdate",
@@ -184,8 +186,11 @@ function newLoadPluginByIdStep(store, key) {
184
186
  try {
185
187
  plugin = await store.getResource(ctx.apiResourceKind, ctx.input.resourceId, PluginSchema);
186
188
  }
187
- catch {
188
- throw notFoundError("plugin", ctx.input.resourceId);
189
+ catch (error) {
190
+ if (error instanceof ResourceNotFoundError) {
191
+ throw notFoundError("plugin", ctx.input.resourceId);
192
+ }
193
+ throw internalError(error, "failed to load plugin");
189
194
  }
190
195
  ctx.set(key, plugin);
191
196
  },