@haiiro/docuflow 0.0.16 → 0.0.18

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 (28) hide show
  1. package/README.md +8 -2
  2. package/manifest.json +34 -19
  3. package/package.json +1 -1
  4. package/public/app/docflow-app.js +5 -5
  5. package/src/front-components/docflow-documents.front-component.mjs +1 -1
  6. package/src/front-components/docflow-processes.front-component.mjs +35 -35
  7. package/src/front-components/docflow-processes.front-component.tsx +187 -85
  8. package/src/front-components/docflow-tasks.front-component.mjs +24 -24
  9. package/src/front-components/launch-process.front-component.mjs +19 -19
  10. package/src/front-components/launch-process.front-component.tsx +36 -60
  11. package/src/front-components/process-steps.front-component.mjs +17 -17
  12. package/src/front-components/task-form.front-component.mjs +10 -10
  13. package/src/logic-functions/bitrix-app.logic-function.mjs +1 -1
  14. package/src/logic-functions/complete-task.logic-function.mjs +39 -8
  15. package/src/logic-functions/docflow-app.logic-function.mjs +1 -1
  16. package/src/logic-functions/hand-out-form-step.logic-function.mjs +71284 -11217
  17. package/src/logic-functions/hand-out-form-step.logic-function.ts +6 -1
  18. package/src/logic-functions/launch-process.logic-function.mjs +269 -33
  19. package/src/logic-functions/launch-process.logic-function.ts +42 -37
  20. package/src/logic-functions/on-task-updated.logic-function.mjs +39 -8
  21. package/src/logic-functions/on-workflow-run-updated.logic-function.mjs +48 -9
  22. package/src/logic-functions/on-workflow-run-updated.logic-function.ts +18 -3
  23. package/src/logic-functions/process-catalog.logic-function.mjs +119726 -0
  24. package/src/logic-functions/process-catalog.logic-function.ts +84 -0
  25. package/src/logic-functions/publish-process.logic-function.mjs +218 -16
  26. package/src/logic-functions/publish-process.logic-function.ts +13 -5
  27. package/src/logic-functions/save-launch-fields.logic-function.mjs +5 -2
  28. package/src/logic-functions/save-step-settings.logic-function.mjs +5 -2
@@ -119749,7 +119749,7 @@ var getCrmUrl = () => {
119749
119749
  // package.json
119750
119750
  var package_default = {
119751
119751
  name: "@haiiro/docuflow",
119752
- version: "0.0.16",
119752
+ version: "0.0.18",
119753
119753
  description: "NorDiv \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442: \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0441 \u043F\u043E\u043B\u044F\u043C\u0438, \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0441 \u0437\u0430\u043F\u0443\u0441\u043A\u043E\u043C \u043F\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430\u043C, \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B \u0441\u043E \u0432\u0441\u0435\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439, \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0411\u0438\u0442\u0440\u0438\u043A\u044124",
119754
119754
  license: "AGPL-3.0-only",
119755
119755
  publishConfig: {
@@ -119409,12 +119409,16 @@ var readUserMessage = (value) => {
119409
119409
  }
119410
119410
  return void 0;
119411
119411
  };
119412
+ var isMissingGraphqlField = (error) => error instanceof CoreGraphqlError && /Cannot query field|Unknown type/i.test(error.message);
119412
119413
  var callCoreGraphql = async ({
119413
119414
  query,
119414
- variables
119415
+ variables,
119416
+ runAs = "person"
119415
119417
  }) => {
119416
119418
  const apiUrl = process.env.TWENTY_API_URL;
119417
- const token = process.env.TWENTY_APP_ACCESS_TOKEN;
119419
+ const personToken = process.env.TWENTY_APP_ACCESS_TOKEN;
119420
+ const applicationToken = process.env.TWENTY_APP_APPLICATION_ACCESS_TOKEN;
119421
+ const token = runAs === "person" ? personToken ?? applicationToken : applicationToken ?? personToken;
119418
119422
  if (apiUrl === void 0 || token === void 0) {
119419
119423
  throw new CoreGraphqlError(
119420
119424
  "TWENTY_API_URL or TWENTY_APP_ACCESS_TOKEN is not set",
@@ -119439,6 +119443,9 @@ var callCoreGraphql = async ({
119439
119443
  }
119440
119444
  return body.data;
119441
119445
  };
119446
+ var SUBMIT_FORM_STEP_MUTATION = `mutation SubmitFormStep($input: SubmitFormStepInput!) {
119447
+ submitFormStep(input: $input)
119448
+ }`;
119442
119449
  var ANSWER_TOOL_CALL_MUTATION = `mutation AnswerToolCall($input: AnswerToolCallInput!) {
119443
119450
  answerToolCall(input: $input) { streamId }
119444
119451
  }`;
@@ -119531,17 +119538,24 @@ var getFormStepAssignment = ({
119531
119538
  now
119532
119539
  )
119533
119540
  });
119541
+ var getStepWaitKey = ({
119542
+ workflowRunId,
119543
+ stepId,
119544
+ stepInfo
119545
+ }) => typeof stepInfo?.threadId === "string" && stepInfo.threadId.length > 0 ? stepInfo.threadId : `${workflowRunId}.${stepId}`;
119546
+ var isStepWaitingForAnswer = (stepInfo) => stepInfo?.status === "PENDING" && (stepInfo.error === void 0 || stepInfo.error === null) && (typeof stepInfo.threadId === "string" && stepInfo.threadId.length > 0 || stepInfo.wait?.type === "CALLBACK");
119534
119547
 
119535
119548
  // src/server/workflow-engine.ts
119536
119549
  var answerFormStep = async ({
119537
119550
  state,
119551
+ workflowRunId,
119538
119552
  stepId,
119539
- threadId,
119553
+ waitKey,
119540
119554
  values
119541
119555
  }) => {
119542
119556
  const step = state?.flow?.steps?.find((candidate) => candidate.id === stepId);
119543
119557
  const stepInfo = state?.stepInfos?.[stepId];
119544
- if (step === void 0 || !isFormStep(step) || stepInfo?.status !== "PENDING" || stepInfo.threadId !== threadId) {
119558
+ if (step === void 0 || !isFormStep(step) || !isStepWaitingForAnswer(stepInfo) || getStepWaitKey({ workflowRunId, stepId, stepInfo }) !== waitKey) {
119545
119559
  return { status: "NOT_WAITING" };
119546
119560
  }
119547
119561
  const fields = resolveFormStepFields(
@@ -119565,10 +119579,26 @@ var answerFormStep = async ({
119565
119579
  ),
119566
119580
  values
119567
119581
  });
119568
- await callCoreGraphql({
119569
- query: ANSWER_TOOL_CALL_MUTATION,
119570
- variables: { input: { threadId, toolCallId: stepId, response } }
119582
+ const threadId = stepInfo?.threadId;
119583
+ const submitFormStep = () => callCoreGraphql({
119584
+ query: SUBMIT_FORM_STEP_MUTATION,
119585
+ variables: { input: { stepId, workflowRunId, response } }
119571
119586
  });
119587
+ if (typeof threadId === "string" && threadId.length > 0) {
119588
+ try {
119589
+ await callCoreGraphql({
119590
+ query: ANSWER_TOOL_CALL_MUTATION,
119591
+ variables: { input: { threadId, toolCallId: stepId, response } }
119592
+ });
119593
+ } catch (error) {
119594
+ if (!isMissingGraphqlField(error)) {
119595
+ throw error;
119596
+ }
119597
+ await submitFormStep();
119598
+ }
119599
+ } else {
119600
+ await submitFormStep();
119601
+ }
119572
119602
  return { status: "ANSWERED" };
119573
119603
  };
119574
119604
 
@@ -119582,8 +119612,9 @@ var answerStepOfTask = async (task, values) => {
119582
119612
  try {
119583
119613
  const result = await answerFormStep({
119584
119614
  state: run?.state,
119615
+ workflowRunId: task.smbWorkflowRunId,
119585
119616
  stepId: task.smbWorkflowStepId,
119586
- threadId: task.smbWorkflowThreadId,
119617
+ waitKey: task.smbWorkflowThreadId,
119587
119618
  values
119588
119619
  });
119589
119620
  return result.status === "MISSING_REQUIRED" ? { status: "MISSING_REQUIRED", labels: result.labels } : void 0;
@@ -59961,7 +59961,7 @@ var AL = class {
59961
59961
  // package.json
59962
59962
  var package_default = {
59963
59963
  name: "@haiiro/docuflow",
59964
- version: "0.0.16",
59964
+ version: "0.0.18",
59965
59965
  description: "NorDiv \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442: \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0441 \u043F\u043E\u043B\u044F\u043C\u0438, \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0441 \u0437\u0430\u043F\u0443\u0441\u043A\u043E\u043C \u043F\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430\u043C, \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B \u0441\u043E \u0432\u0441\u0435\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439, \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0411\u0438\u0442\u0440\u0438\u043A\u044124",
59966
59966
  license: "AGPL-3.0-only",
59967
59967
  publishConfig: {