@memberjunction/core-actions 6.2.0-edge.1 → 6.2.0-edge.3

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 (86) hide show
  1. package/dist/custom/ai/base-find-agents.action.d.ts.map +1 -1
  2. package/dist/custom/ai/base-find-agents.action.js +2 -7
  3. package/dist/custom/ai/base-find-agents.action.js.map +1 -1
  4. package/dist/custom/ai/execute-agent.action.d.ts +10 -0
  5. package/dist/custom/ai/execute-agent.action.d.ts.map +1 -1
  6. package/dist/custom/ai/execute-agent.action.js +24 -1
  7. package/dist/custom/ai/execute-agent.action.js.map +1 -1
  8. package/dist/custom/ai/execute-ai-prompt.action.d.ts.map +1 -1
  9. package/dist/custom/ai/execute-ai-prompt.action.js +3 -0
  10. package/dist/custom/ai/execute-ai-prompt.action.js.map +1 -1
  11. package/dist/custom/ai/find-candidate-agents.action.d.ts.map +1 -1
  12. package/dist/custom/ai/find-candidate-agents.action.js +2 -1
  13. package/dist/custom/ai/find-candidate-agents.action.js.map +1 -1
  14. package/dist/custom/ai/generate-image.action.d.ts +67 -6
  15. package/dist/custom/ai/generate-image.action.d.ts.map +1 -1
  16. package/dist/custom/ai/generate-image.action.js +208 -141
  17. package/dist/custom/ai/generate-image.action.js.map +1 -1
  18. package/dist/custom/ai/run-decision.action.d.ts +45 -0
  19. package/dist/custom/ai/run-decision.action.d.ts.map +1 -0
  20. package/dist/custom/ai/run-decision.action.js +169 -0
  21. package/dist/custom/ai/run-decision.action.js.map +1 -0
  22. package/dist/custom/ai/summarize-content.action.d.ts.map +1 -1
  23. package/dist/custom/ai/summarize-content.action.js +3 -0
  24. package/dist/custom/ai/summarize-content.action.js.map +1 -1
  25. package/dist/custom/data/run-adhoc-query.action.d.ts.map +1 -1
  26. package/dist/custom/data/run-adhoc-query.action.js +3 -0
  27. package/dist/custom/data/run-adhoc-query.action.js.map +1 -1
  28. package/dist/custom/interactive-forms/_shared.d.ts +113 -31
  29. package/dist/custom/interactive-forms/_shared.d.ts.map +1 -1
  30. package/dist/custom/interactive-forms/_shared.js +198 -74
  31. package/dist/custom/interactive-forms/_shared.js.map +1 -1
  32. package/dist/custom/interactive-forms/activate-form-contribution-version.action.d.ts +23 -0
  33. package/dist/custom/interactive-forms/activate-form-contribution-version.action.d.ts.map +1 -0
  34. package/dist/custom/interactive-forms/activate-form-contribution-version.action.js +151 -0
  35. package/dist/custom/interactive-forms/activate-form-contribution-version.action.js.map +1 -0
  36. package/dist/custom/interactive-forms/activate-interactive-form-version.action.d.ts +23 -7
  37. package/dist/custom/interactive-forms/activate-interactive-form-version.action.d.ts.map +1 -1
  38. package/dist/custom/interactive-forms/activate-interactive-form-version.action.js +114 -58
  39. package/dist/custom/interactive-forms/activate-interactive-form-version.action.js.map +1 -1
  40. package/dist/custom/interactive-forms/create-form-contribution.action.d.ts +35 -0
  41. package/dist/custom/interactive-forms/create-form-contribution.action.d.ts.map +1 -0
  42. package/dist/custom/interactive-forms/create-form-contribution.action.js +149 -0
  43. package/dist/custom/interactive-forms/create-form-contribution.action.js.map +1 -0
  44. package/dist/custom/interactive-forms/get-active-form-for-entity.action.d.ts +3 -0
  45. package/dist/custom/interactive-forms/get-active-form-for-entity.action.d.ts.map +1 -1
  46. package/dist/custom/interactive-forms/get-active-form-for-entity.action.js +5 -1
  47. package/dist/custom/interactive-forms/get-active-form-for-entity.action.js.map +1 -1
  48. package/dist/custom/interactive-forms/get-form-composition-for-entity.action.d.ts +59 -0
  49. package/dist/custom/interactive-forms/get-form-composition-for-entity.action.d.ts.map +1 -0
  50. package/dist/custom/interactive-forms/get-form-composition-for-entity.action.js +313 -0
  51. package/dist/custom/interactive-forms/get-form-composition-for-entity.action.js.map +1 -0
  52. package/dist/custom/interactive-forms/get-form-contributions-for-entity.action.d.ts +47 -0
  53. package/dist/custom/interactive-forms/get-form-contributions-for-entity.action.d.ts.map +1 -0
  54. package/dist/custom/interactive-forms/get-form-contributions-for-entity.action.js +115 -0
  55. package/dist/custom/interactive-forms/get-form-contributions-for-entity.action.js.map +1 -0
  56. package/dist/custom/interactive-forms/index.d.ts +5 -0
  57. package/dist/custom/interactive-forms/index.d.ts.map +1 -1
  58. package/dist/custom/interactive-forms/index.js +5 -0
  59. package/dist/custom/interactive-forms/index.js.map +1 -1
  60. package/dist/custom/interactive-forms/modify-form-contribution.action.d.ts +36 -0
  61. package/dist/custom/interactive-forms/modify-form-contribution.action.d.ts.map +1 -0
  62. package/dist/custom/interactive-forms/modify-form-contribution.action.js +181 -0
  63. package/dist/custom/interactive-forms/modify-form-contribution.action.js.map +1 -0
  64. package/dist/custom/interactive-forms/modify-interactive-form.action.d.ts +13 -11
  65. package/dist/custom/interactive-forms/modify-interactive-form.action.d.ts.map +1 -1
  66. package/dist/custom/interactive-forms/modify-interactive-form.action.js +65 -64
  67. package/dist/custom/interactive-forms/modify-interactive-form.action.js.map +1 -1
  68. package/dist/custom/interactive-forms/revert-interactive-form.action.d.ts +12 -0
  69. package/dist/custom/interactive-forms/revert-interactive-form.action.d.ts.map +1 -1
  70. package/dist/custom/interactive-forms/revert-interactive-form.action.js +29 -4
  71. package/dist/custom/interactive-forms/revert-interactive-form.action.js.map +1 -1
  72. package/dist/custom/record-cloning/clone-record.action.d.ts +15 -0
  73. package/dist/custom/record-cloning/clone-record.action.d.ts.map +1 -0
  74. package/dist/custom/record-cloning/clone-record.action.js +125 -0
  75. package/dist/custom/record-cloning/clone-record.action.js.map +1 -0
  76. package/dist/custom/record-cloning/clone-records.action.d.ts +15 -0
  77. package/dist/custom/record-cloning/clone-records.action.d.ts.map +1 -0
  78. package/dist/custom/record-cloning/clone-records.action.js +175 -0
  79. package/dist/custom/record-cloning/clone-records.action.js.map +1 -0
  80. package/dist/custom/utilities/vectorize-entity.action.js +1 -1
  81. package/dist/custom/utilities/vectorize-entity.action.js.map +1 -1
  82. package/dist/index.d.ts +3 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -0
  85. package/dist/index.js.map +1 -1
  86. package/package.json +42 -40
@@ -1,5 +1,7 @@
1
- import { UUIDsEqual } from "@memberjunction/global";
2
- import { isFormRole } from "@memberjunction/interactive-component-types/forms";
1
+ import { LogError, RunInEntityTransaction } from "@memberjunction/core";
2
+ import { EscapeSQLString } from "@memberjunction/global";
3
+ import { ApplyContributionSpecToRow, ContributionClaimRefusal, ContributionSpecColumns, FormLifecycleComponentStatus, FormScopeWriteRefusal, InstanceConfigEngine, InteractiveFormsEngine, } from "@memberjunction/core-entities";
4
+ import { CONTRIBUTION_KEY_PATTERN, GetDeclaredFormContribution, IsFormPanelRole, isFormRole, IsPanelContributionKey, ResolveContributionWriteKey, } from "@memberjunction/interactive-component-types/forms";
3
5
  import { ComponentLinter } from "@memberjunction/react-linter";
4
6
  // ── parameter helpers ────────────────────────────────────────────────────
5
7
  export function GetParam(params, name) {
@@ -28,6 +30,11 @@ export function GetNumberParam(params, name) {
28
30
  const n = typeof v === 'number' ? v : Number(String(v));
29
31
  return Number.isFinite(n) ? n : null;
30
32
  }
33
+ /** The `Precedence` input as a whole number of zero or more, or null when absent or not one. */
34
+ export function GetPrecedenceParam(params) {
35
+ const precedence = GetNumberParam(params, "Precedence");
36
+ return precedence != null && precedence >= 0 ? Math.floor(precedence) : null;
37
+ }
31
38
  /** @deprecated Use {@link GetNumberParam}. */
32
39
  export function getNumberParam(params, name) {
33
40
  return GetNumberParam(params, name);
@@ -72,15 +79,24 @@ export function parseSpecParam(raw) {
72
79
  return ParseSpecParam(raw);
73
80
  }
74
81
  /**
75
- * Lint a form-role ComponentSpec. Returns null on success, a fail-fast
76
- * ActionResultSimple on failure. Two rules are suppressed for form-role
77
- * specs (component-props-validation, callback-event-validation) — see
78
- * lint comments in the original create-interactive-form action for the
79
- * rationale.
82
+ * Rules suppressed for both form roles. The form host (mj-react-component) creates
83
+ * `callbacks` / `utilities` / `components` / `styles` once per instance (stable refs),
84
+ * so depending on them in useEffect does not loop here; the prop and callback shape
85
+ * rules only know the generic component surface, not the host-provided one.
80
86
  */
81
- export async function LintFormSpec(spec, contextUser) {
82
- if (!isFormRole(spec)) {
83
- return Failure("LINT_FAILED", `Spec must declare componentRole='form'. Got '${spec.componentRole ?? "(unset)"}'. The InteractiveForm runtime refuses to mount any other role.`);
87
+ const ROLE_SUPPRESSED_RULES = new Set([
88
+ "component-props-validation",
89
+ "callback-event-validation",
90
+ "useeffect-unstable-dependencies",
91
+ ]);
92
+ /**
93
+ * Lint body shared by both roles. `roleCheck` decides which role the spec must
94
+ * declare; `roleLabel` names it in the failure message. Returns null on success,
95
+ * a fail-fast ActionResultSimple on failure.
96
+ */
97
+ async function lintRoleSpec(spec, contextUser, roleCheck, roleLabel) {
98
+ if (!roleCheck(spec)) {
99
+ return Failure("LINT_FAILED", `Spec must declare componentRole='${roleLabel}'. Got '${spec.componentRole ?? "(unset)"}'. The InteractiveForm runtime refuses to mount any other role.`);
84
100
  }
85
101
  if (!spec.name || spec.name.trim().length === 0) {
86
102
  return Failure("LINT_FAILED", "Spec.name is required.");
@@ -91,22 +107,13 @@ export async function LintFormSpec(spec, contextUser) {
91
107
  if (!spec.location) {
92
108
  return Failure("LINT_FAILED", "Spec.location is required (use 'embedded' for inline JSX or 'registry' to reference a published component).");
93
109
  }
94
- const FORM_ROLE_SUPPRESSED_RULES = new Set([
95
- "component-props-validation",
96
- "callback-event-validation",
97
- // The form host (mj-react-component) creates `callbacks`/`utilities`/`components`/
98
- // `styles` once per instance (stable refs), so depending on them in useEffect does
99
- // not loop here. This rule only flags those host-provided prop names, making it a
100
- // false positive on the form-role surface.
101
- "useeffect-unstable-dependencies",
102
- ]);
103
110
  try {
104
111
  const result = await ComponentLinter.lintComponent(spec.code, spec.name, spec, true, contextUser);
105
112
  const blocking = (result.violations ?? []).filter(v => {
106
113
  const isBlocking = v.severity === "critical" || v.severity === "high";
107
114
  if (!isBlocking)
108
115
  return false;
109
- if (v.rule && FORM_ROLE_SUPPRESSED_RULES.has(v.rule))
116
+ if (v.rule && ROLE_SUPPRESSED_RULES.has(v.rule))
110
117
  return false;
111
118
  return true;
112
119
  });
@@ -123,6 +130,14 @@ export async function LintFormSpec(spec, contextUser) {
123
130
  }
124
131
  return null;
125
132
  }
133
+ /** Lint a whole-form spec — `componentRole: 'form'`. */
134
+ export async function LintFormSpec(spec, contextUser) {
135
+ return lintRoleSpec(spec, contextUser, isFormRole, 'form');
136
+ }
137
+ /** Lint a form-panel spec — `componentRole: 'form-panel'`. Same rules as {@link LintFormSpec}. */
138
+ export async function LintFormPanelSpec(spec, contextUser) {
139
+ return lintRoleSpec(spec, contextUser, IsFormPanelRole, 'form-panel');
140
+ }
126
141
  /** @deprecated Use {@link LintFormSpec}. */
127
142
  export async function lintFormSpec(spec, contextUser) {
128
143
  return LintFormSpec(spec, contextUser);
@@ -148,65 +163,105 @@ export async function LoadOverride(provider, user, overrideID) {
148
163
  export async function loadOverride(provider, user, overrideID) {
149
164
  return LoadOverride(provider, user, overrideID);
150
165
  }
166
+ /** Load a Contribution entity object by primary key. */
167
+ export async function LoadContribution(provider, user, contributionID) {
168
+ const c = await provider.GetEntityObject("MJ: Entity Form Contributions", user);
169
+ const loaded = await c.Load(contributionID);
170
+ return loaded ? c : null;
171
+ }
151
172
  /**
152
- * Defense-in-depth ownership check for the override-mutation actions
153
- * (Modify / Activate / Revert).
173
+ * Filter for the `MJ: Entity Form Contributions` rows a caller may see: their own
174
+ * User-scope rows, their roles' rows, and Global rows.
154
175
  *
155
- * `Create` is naturally self-scoped — it always emits a fresh User-scope
156
- * row owned by the caller. The mutation actions, however, take an
157
- * `OverrideID` from the caller and operate on it; without this guard a
158
- * user could mutate another user's User-scope override by guessing the ID.
159
- * Row-level security may catch some of this, but we don't rely on it.
176
+ * Shared so every reader applies the same visibility. Two readers that disagree would
177
+ * show a contribution in one place and hide it in another, and the apply flow's
178
+ * duplicate check would miss a row the form is already rendering.
179
+ */
180
+ export function ContributionScopeFilter(entityID, user) {
181
+ const roleIDs = (user.UserRoles ?? [])
182
+ .map(r => r.RoleID).filter((x) => !!x);
183
+ const roleClause = roleIDs.length > 0
184
+ ? `(Scope='Role' AND RoleID IN (${roleIDs.map(id => `'${EscapeSQLString(id)}'`).join(',')}))`
185
+ : `(1=0)`;
186
+ return `EntityID='${EscapeSQLString(entityID)}' AND ((Scope='User' AND UserID='${EscapeSQLString(user.ID)}') OR ${roleClause} OR Scope='Global')`;
187
+ }
188
+ /**
189
+ * Whether metadata contributions are on for a server answer.
160
190
  *
161
- * Rules:
162
- * - `Scope='User'` → caller must be the owning user.
163
- * - `Scope='Role'` → caller must be a member of the override's role.
164
- * - `Scope='Global'` → caller must be a system admin (`UserInfo.Type==='Owner'`).
191
+ * Off when the Node switch is off (`MJ_FORMS_METADATA_CONTRIBUTIONS=false`, read into
192
+ * `InteractiveFormsEngine.MetadataContributionsEnabled`), or when the instance configuration
193
+ * Explorer reads (`Forms.MetadataContributions.Enabled`) is `false`. The instance configuration
194
+ * comes from the cached `InstanceConfigEngine`, which is refreshed after a save in the same
195
+ * process or by cross-server cache invalidation, so setting it back to `true` turns the answer
196
+ * back on once the cache has the new value. When Instance Config cannot load, only the Node
197
+ * switch counts.
198
+ */
199
+ export async function MetadataContributionsOn(provider, user) {
200
+ if (!InteractiveFormsEngine.MetadataContributionsEnabled)
201
+ return false;
202
+ try {
203
+ const config = InstanceConfigEngine.Instance;
204
+ await config.Config(false, user, provider);
205
+ return config.GetBoolean(InteractiveFormsEngine.MetadataContributionsConfigKey, true);
206
+ }
207
+ catch (err) {
208
+ LogError(`Instance Config did not load, so form contributions stay on: ${err instanceof Error ? err.message : String(err)}`);
209
+ return true;
210
+ }
211
+ }
212
+ /**
213
+ * Why an action may not change this form or panel, as a `FORBIDDEN` result, or null.
165
214
  *
166
- * Returns `null` on success; a `FORBIDDEN` failure result on rejection.
215
+ * Actions change the caller's own personal forms and panels only. A row whose Scope is not
216
+ * `User` is refused for every caller, a Manage Form Defaults holder included: shared forms and
217
+ * panels are managed by people, from Form Builder or the form's Manage drawer. A `User` row is
218
+ * then checked with `FormScopeWriteRefusal`, the rule the server entity applies on save, which
219
+ * refuses a row that belongs to someone else.
167
220
  */
168
- export function CheckOverrideOwnership(override, user) {
169
- const ID = override.ID;
170
- switch (override.Scope) {
171
- case 'User': {
172
- if (!UUIDsEqual(override.UserID, user.ID)) {
173
- return Failure("FORBIDDEN", `Override ${ID} is User-scoped to a different user. Only the owning user can mutate it.`);
174
- }
175
- return null;
176
- }
177
- case 'Role': {
178
- const userRoleIds = (user.UserRoles ?? [])
179
- .map(r => r.RoleID).filter((x) => !!x);
180
- if (!override.RoleID || !userRoleIds.includes(override.RoleID)) {
181
- return Failure("FORBIDDEN", `Override ${ID} is Role-scoped (${override.RoleID}). Only members of that role can mutate it.`);
182
- }
183
- return null;
184
- }
185
- case 'Global': {
186
- // `UserInfo.Type === 'Owner'` is MJ's canonical admin marker —
187
- // see packages/MJCore/src/userInfo.ts (Type is a Pick from the
188
- // generated entity field). Owners can manage Global overrides;
189
- // everyone else is rejected.
190
- const isOwner = (user.Type ?? '').toLowerCase() === 'owner';
191
- if (!isOwner) {
192
- return Failure("FORBIDDEN", `Override ${ID} is Global. Only Owner-type users can mutate Global overrides; promote / demote them via Component Studio with appropriate privileges.`);
193
- }
194
- return null;
195
- }
196
- default:
197
- return Failure("FORBIDDEN", `Override ${ID} has an unrecognized Scope ('${override.Scope}').`);
221
+ export function CheckPersonalWrite(row, user) {
222
+ if (row.Scope !== 'User') {
223
+ return Failure("FORBIDDEN", `${row.ID} is shared (Scope '${row.Scope}'). Actions change only your own personal forms and panels; ` +
224
+ `shared ones are managed from Form Builder or the form's Manage drawer.`);
225
+ }
226
+ const refusal = FormScopeWriteRefusal({
227
+ Operation: 'update',
228
+ PriorScope: row.Scope, PriorUserID: row.UserID,
229
+ NextScope: row.Scope, NextUserID: row.UserID,
230
+ CallerID: user.ID,
231
+ // A User row needs no grant, so only the ownership half of the rule can refuse it.
232
+ CallerHoldsGrant: false,
233
+ });
234
+ return refusal ? Failure("FORBIDDEN", refusal) : null;
235
+ }
236
+ /** Carries a failed write step out of the transaction, so the transaction rolls back. */
237
+ class RolledBackWrite extends Error {
238
+ constructor(Outcome) {
239
+ super(Outcome.error.Message);
240
+ this.Outcome = Outcome;
198
241
  }
199
242
  }
200
- /** @deprecated Use {@link CheckOverrideOwnership}. */
201
- export function checkOverrideOwnership(override, user) {
202
- return CheckOverrideOwnership(override, user);
243
+ /**
244
+ * Runs `work` in one entity transaction. When `work` returns an `{ error }` result, every write
245
+ * it made is rolled back and that result is returned; anything `work` throws also rolls back and
246
+ * is rethrown. A provider without entity transactions runs `work` without one.
247
+ */
248
+ export async function WriteAtomically(provider, work) {
249
+ try {
250
+ return await RunInEntityTransaction(provider, async () => {
251
+ const outcome = await work();
252
+ if ('error' in outcome)
253
+ throw new RolledBackWrite(outcome);
254
+ return outcome;
255
+ });
256
+ }
257
+ catch (err) {
258
+ if (err instanceof RolledBackWrite)
259
+ return err.Outcome;
260
+ throw err;
261
+ }
203
262
  }
204
263
  export function MapToComponentStatus(lifecycle) {
205
- switch (lifecycle) {
206
- case 'Active': return 'Published';
207
- case 'Pending': return 'Draft';
208
- case 'Inactive': return 'Deprecated';
209
- }
264
+ return FormLifecycleComponentStatus(lifecycle);
210
265
  }
211
266
  /** @deprecated Use {@link MapToComponentStatus}. */
212
267
  export function mapToComponentStatus(lifecycle) {
@@ -242,7 +297,7 @@ export async function InsertComponent(opts) {
242
297
  component.Name = spec.name ?? fallbackName;
243
298
  component.Title = spec.title ?? fallbackName;
244
299
  component.Description = description ?? spec.description ?? null;
245
- component.Type = "Form";
300
+ component.Type = opts.componentType ?? "Form";
246
301
  component.Status = MapToComponentStatus(componentStatus);
247
302
  component.Version = version;
248
303
  component.VersionSequence = versionSequence;
@@ -259,9 +314,9 @@ export async function insertComponent(opts) {
259
314
  return InsertComponent(opts);
260
315
  }
261
316
  /**
262
- * Insert a new EntityFormOverride row. Always User-scoped (security clamp)
263
- * unless `allowGlobalOrRole` is explicitly true — which is reserved for the
264
- * future "promote variant" UI path, not the agent.
317
+ * Insert a new EntityFormOverride row, always User-scoped to the caller. Actions
318
+ * write personal forms only; sharing a form with a role or everyone is done from
319
+ * Form Builder or the form's Manage drawer.
265
320
  */
266
321
  export async function InsertOverride(opts) {
267
322
  const { provider, user, entityID, componentID, name, description, notes, status, priority } = opts;
@@ -382,4 +437,73 @@ export function ParseVersionBumpKind(raw) {
382
437
  export function parseVersionBumpKind(raw) {
383
438
  return ParseVersionBumpKind(raw);
384
439
  }
440
+ /**
441
+ * Reads the `formContribution` block of a linted form-panel spec, resolves the related entity it
442
+ * claims to its registered name and ID, and derives the row's key with
443
+ * `ResolveContributionWriteKey`, seeding a panel key from `spec.name`.
444
+ *
445
+ * Fails with `LINT_FAILED` when the block cannot be read, `RELATED_ENTITY_NOT_FOUND` when the
446
+ * related entity is not registered, `INVALID_CLAIM` when the row the spec maps to breaks a claim
447
+ * rule the database enforces (`ContributionClaimRefusal`), and `INVALID_CONTRIBUTION_KEY` when the
448
+ * key does not match `CONTRIBUTION_KEY_PATTERN`. Callers run it before any write.
449
+ *
450
+ * @param currentKey The key of the row being modified; omit for a new row. When the spec names
451
+ * no key and claims no grid, a panel key here is kept, so renaming the component does not change
452
+ * the contribution's identity.
453
+ */
454
+ export function ResolveContributionRegistration(provider, spec, currentKey = null) {
455
+ const contribution = GetDeclaredFormContribution(spec);
456
+ if (!contribution)
457
+ return { error: Failure("LINT_FAILED", "Spec.formContribution could not be read.") };
458
+ let relatedEntityID = null;
459
+ if (contribution.relatedEntity) {
460
+ const related = provider.EntityByName(contribution.relatedEntity);
461
+ if (!related) {
462
+ return { error: Failure("RELATED_ENTITY_NOT_FOUND", `Related entity '${contribution.relatedEntity}' is not registered.`) };
463
+ }
464
+ relatedEntityID = related.ID;
465
+ // The registered casing keeps the derived key stable.
466
+ contribution.relatedEntity = related.Name;
467
+ }
468
+ const relatedEntityName = contribution.relatedEntity ?? null;
469
+ if (!contribution.contributionKey && !relatedEntityName && IsPanelContributionKey(currentKey)) {
470
+ contribution.contributionKey = currentKey;
471
+ }
472
+ const componentName = spec.name?.trim() || null;
473
+ const rowOptions = { relatedEntityID, relatedEntityName, componentName };
474
+ const claimRefusal = ContributionClaimRefusal(ContributionSpecColumns(contribution, rowOptions));
475
+ if (claimRefusal)
476
+ return { error: Failure("INVALID_CLAIM", claimRefusal) };
477
+ const writeKey = ResolveContributionWriteKey(contribution, relatedEntityName, componentName);
478
+ if (writeKey && !CONTRIBUTION_KEY_PATTERN.test(writeKey)) {
479
+ return { error: Failure("INVALID_CONTRIBUTION_KEY", `Contribution key '${writeKey}' must match ${CONTRIBUTION_KEY_PATTERN.source}.`) };
480
+ }
481
+ return { Contribution: contribution, RowOptions: rowOptions, WriteKey: writeKey };
482
+ }
483
+ /**
484
+ * Insert a new EntityFormContribution row. Always User-scoped — promotion to Role or
485
+ * Global is a deliberate human act, not something an agent write path can reach.
486
+ */
487
+ export async function InsertContribution(opts) {
488
+ const { provider, user, entityID, componentID, name, description, notes, registration, status, precedence } = opts;
489
+ const row = await provider.GetEntityObject("MJ: Entity Form Contributions", user);
490
+ row.NewRecord();
491
+ row.EntityID = entityID;
492
+ row.ComponentID = componentID;
493
+ row.Name = name;
494
+ row.Description = description;
495
+ row.Notes = notes ?? null;
496
+ ApplyContributionSpecToRow(row, registration.Contribution, registration.RowOptions);
497
+ // Security clamp: agents write User scope only. Promotion is a human act.
498
+ row.Scope = "User";
499
+ row.UserID = user.ID;
500
+ row.RoleID = null;
501
+ row.Precedence = precedence;
502
+ row.Status = status;
503
+ const saved = await row.Save();
504
+ if (!saved) {
505
+ return { error: Failure("PERSIST_FAILED", `Contribution insert failed: ${row.LatestResult?.CompleteMessage ?? "unknown error"}`) };
506
+ }
507
+ return { id: row.ID };
508
+ }
385
509
  //# sourceMappingURL=_shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/custom/interactive-forms/_shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/custom/interactive-forms/_shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
2
+ import { BaseAction } from "@memberjunction/actions";
3
+ /**
4
+ * Promote one of the caller's own Pending contributions to Active and demote the caller's Active
5
+ * row that shares its EntityID and ContributionKey.
6
+ *
7
+ * Only the caller's own User-scope rows can be activated; a Role or Global row, or another user's
8
+ * row, returns `FORBIDDEN` (shared panels are managed from the form's Manage drawer or Form
9
+ * Builder). A row with no ContributionKey is unique by construction and has no sibling to demote.
10
+ * Activating a row that is already Active is a no-op success, so the apply flow can retry
11
+ * safely. An Inactive row returns `NOT_PENDING` — branch a new Pending version from it
12
+ * with `Modify Form Contribution` first.
13
+ */
14
+ export declare class ActivateFormContributionVersionAction extends BaseAction {
15
+ protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
16
+ /**
17
+ * The Active rows sharing the target's key and audience, which `ActiveContributionSiblings`
18
+ * decides, as the Manage drawer does. Empty for a keyless row.
19
+ */
20
+ private findPriorActive;
21
+ }
22
+ export declare function LoadActivateFormContributionVersionAction(): void;
23
+ //# sourceMappingURL=activate-form-contribution-version.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate-form-contribution-version.action.d.ts","sourceRoot":"","sources":["../../../src/custom/interactive-forms/activate-form-contribution-version.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAqBrD;;;;;;;;;;GAUG;AACH,qBACa,qCAAsC,SAAQ,UAAU;cAEjD,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4FvF;;;OAGG;YACW,eAAe;CAyBhC;AAED,wBAAgB,yCAAyC,IAAI,IAAI,CAEhE"}
@@ -0,0 +1,151 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseAction } from "@memberjunction/actions";
8
+ import { Metadata, LogError, RunView, RunInEntityTransaction } from "@memberjunction/core";
9
+ import { EscapeSQLString, RegisterClass } from "@memberjunction/global";
10
+ import { ActiveContributionSiblings } from "@memberjunction/core-entities";
11
+ import { CONTRIBUTION_KEY_PATTERN } from "@memberjunction/interactive-component-types/forms";
12
+ import { AddOutput, CheckPersonalWrite, Failure, GetStringParam, LoadComponent, LoadContribution, MapToComponentStatus, } from "./_shared.js";
13
+ /**
14
+ * Promote one of the caller's own Pending contributions to Active and demote the caller's Active
15
+ * row that shares its EntityID and ContributionKey.
16
+ *
17
+ * Only the caller's own User-scope rows can be activated; a Role or Global row, or another user's
18
+ * row, returns `FORBIDDEN` (shared panels are managed from the form's Manage drawer or Form
19
+ * Builder). A row with no ContributionKey is unique by construction and has no sibling to demote.
20
+ * Activating a row that is already Active is a no-op success, so the apply flow can retry
21
+ * safely. An Inactive row returns `NOT_PENDING` — branch a new Pending version from it
22
+ * with `Modify Form Contribution` first.
23
+ */
24
+ let ActivateFormContributionVersionAction = class ActivateFormContributionVersionAction extends BaseAction {
25
+ async InternalRunAction(params) {
26
+ try {
27
+ const contributionID = GetStringParam(params, "ContributionID");
28
+ if (!contributionID)
29
+ return Failure("MISSING_PARAMETER", "Parameter 'ContributionID' is required.");
30
+ const provider = params.Provider ?? Metadata.Provider;
31
+ if (!provider)
32
+ return Failure("NO_PROVIDER", "No metadata provider available.");
33
+ const user = params.ContextUser;
34
+ if (!user)
35
+ return Failure("NO_USER", "Action requires a ContextUser.");
36
+ const target = await LoadContribution(provider, user, contributionID);
37
+ if (!target)
38
+ return Failure("CONTRIBUTION_NOT_FOUND", `Contribution '${contributionID}' not found.`);
39
+ const forbidden = CheckPersonalWrite(target, user);
40
+ if (forbidden)
41
+ return forbidden;
42
+ if (target.Status === 'Active') {
43
+ AddOutput(params, "ContributionID", target.ID);
44
+ AddOutput(params, "ComponentID", target.ComponentID);
45
+ AddOutput(params, "PreviousActiveContributionID", null);
46
+ return {
47
+ Success: true, ResultCode: "SUCCESS",
48
+ Message: JSON.stringify({ noop: true, ContributionID: target.ID, ComponentID: target.ComponentID }),
49
+ };
50
+ }
51
+ if (target.Status === 'Inactive') {
52
+ return Failure("NOT_PENDING", `Contribution ${contributionID} is Inactive. Modify it with a version bump to branch a new Pending version first.`);
53
+ }
54
+ const priors = await this.findPriorActive(params, target);
55
+ if ('error' in priors)
56
+ return priors.error;
57
+ const component = await LoadComponent(provider, user, target.ComponentID);
58
+ if (!component) {
59
+ return Failure("COMPONENT_NOT_FOUND", `Contribution ${contributionID} points at Component ${target.ComponentID} which no longer exists.`);
60
+ }
61
+ // Demote BEFORE promoting. `UQ_EntityFormContribution_Key` is unique over
62
+ // (EntityID, ContributionKey, Scope, UserID, RoleID) filtered to Status='Active',
63
+ // so promoting first means two Active rows share the key for one statement and the
64
+ // index refuses the write. Both steps run in one transaction where the provider
65
+ // supports it, so a failure mid-way cannot leave the form with no Active row.
66
+ let firstPriorID = null;
67
+ try {
68
+ await RunInEntityTransaction(provider, async () => {
69
+ for (const prior of priors.rows) {
70
+ firstPriorID ??= prior.ID;
71
+ const priorRow = await LoadContribution(provider, user, prior.ID);
72
+ const priorComponent = await LoadComponent(provider, user, prior.ComponentID);
73
+ if (priorRow) {
74
+ priorRow.Status = 'Inactive';
75
+ if (!(await priorRow.Save())) {
76
+ throw new Error(`Could not demote prior contribution ${prior.ID}: ${priorRow.LatestResult?.CompleteMessage ?? 'unknown error'}`);
77
+ }
78
+ }
79
+ if (priorComponent) {
80
+ priorComponent.Status = MapToComponentStatus('Inactive');
81
+ if (!(await priorComponent.Save())) {
82
+ throw new Error(`Could not deprecate prior component ${prior.ComponentID}: ${priorComponent.LatestResult?.CompleteMessage ?? 'unknown error'}`);
83
+ }
84
+ }
85
+ }
86
+ component.Status = MapToComponentStatus('Active');
87
+ if (!(await component.Save())) {
88
+ throw new Error(`Could not flip Component to Published: ${component.LatestResult?.CompleteMessage ?? 'unknown error'}`);
89
+ }
90
+ target.Status = 'Active';
91
+ if (!(await target.Save())) {
92
+ throw new Error(`Could not flip Contribution to Active: ${target.LatestResult?.CompleteMessage ?? 'unknown error'}`);
93
+ }
94
+ });
95
+ }
96
+ catch (err) {
97
+ return Failure("PERSIST_FAILED", err instanceof Error ? err.message : String(err));
98
+ }
99
+ AddOutput(params, "ContributionID", target.ID);
100
+ AddOutput(params, "ComponentID", target.ComponentID);
101
+ AddOutput(params, "PreviousActiveContributionID", firstPriorID);
102
+ return {
103
+ Success: true, ResultCode: "SUCCESS",
104
+ Message: JSON.stringify({
105
+ ContributionID: target.ID, ComponentID: target.ComponentID,
106
+ PreviousActiveContributionID: firstPriorID, DemotedCount: priors.rows.length,
107
+ }),
108
+ };
109
+ }
110
+ catch (err) {
111
+ const message = err instanceof Error ? err.message : String(err);
112
+ LogError(`ActivateFormContributionVersionAction: ${message}`);
113
+ return Failure("UNEXPECTED_ERROR", message);
114
+ }
115
+ }
116
+ /**
117
+ * The Active rows sharing the target's key and audience, which `ActiveContributionSiblings`
118
+ * decides, as the Manage drawer does. Empty for a keyless row.
119
+ */
120
+ async findPriorActive(params, target) {
121
+ if (!target.ContributionKey)
122
+ return { rows: [] };
123
+ // Keys are constrained on write (CONTRIBUTION_KEY_PATTERN), so a stored key cannot
124
+ // contain a quote. Re-assert it rather than trusting the write path alone: a row that
125
+ // predates the constraint should fail loudly, not build a filter.
126
+ if (!CONTRIBUTION_KEY_PATTERN.test(target.ContributionKey)) {
127
+ return { error: Failure("INVALID_CONTRIBUTION_KEY", `Stored contribution key '${target.ContributionKey}' is not a legal key.`) };
128
+ }
129
+ const rv = RunView.FromMetadataProvider(params.Provider ?? Metadata.Provider);
130
+ const result = await rv.RunView({
131
+ EntityName: "MJ: Entity Form Contributions",
132
+ ExtraFilter: `EntityID='${EscapeSQLString(target.EntityID)}' AND ContributionKey='${EscapeSQLString(target.ContributionKey)}' AND Status='Active'`,
133
+ Fields: ['ID', 'EntityID', 'Status', 'Scope', 'UserID', 'RoleID', 'ContributionKey', 'ComponentID'],
134
+ ResultType: 'simple',
135
+ }, params.ContextUser);
136
+ if (!result.Success) {
137
+ return { error: Failure("QUERY_FAILED", `Prior-active lookup failed: ${result.ErrorMessage ?? 'unknown error'}`) };
138
+ }
139
+ return { rows: ActiveContributionSiblings(result.Results ?? [], target) };
140
+ }
141
+ };
142
+ ActivateFormContributionVersionAction = __decorate([
143
+ RegisterClass(BaseAction, "__ActivateFormContributionVersion")
144
+ ], ActivateFormContributionVersionAction);
145
+ export { ActivateFormContributionVersionAction };
146
+ export function LoadActivateFormContributionVersionAction() {
147
+ if (false) {
148
+ const _ = ActivateFormContributionVersionAction;
149
+ }
150
+ }
151
+ //# sourceMappingURL=activate-form-contribution-version.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate-form-contribution-version.action.js","sourceRoot":"","sources":["../../../src/custom/interactive-forms/activate-form-contribution-version.action.ts"],"names":[],"mappings":"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"}