@codemation/host 0.1.7 → 0.2.1

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 (67) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/{AppConfigFactory-ByT1D8dM.js → AppConfigFactory-CqKWXqOm.js} +2 -2
  3. package/dist/{AppConfigFactory-ByT1D8dM.js.map → AppConfigFactory-CqKWXqOm.js.map} +1 -1
  4. package/dist/{AppConfigFactory-BBEn2B-i.d.ts → AppConfigFactory-j1Mc-dIX.d.ts} +3 -3
  5. package/dist/{AppContainerFactory-CeKsjo8L.js → AppContainerFactory-CcSGFNLW.js} +53 -16
  6. package/dist/AppContainerFactory-CcSGFNLW.js.map +1 -0
  7. package/dist/{CodemationConfig-9PkOBCh-.d.ts → CodemationAppContext-Vtn0U2Ga.d.ts} +80 -80
  8. package/dist/CodemationAuthoring.types-CXubuYvd.d.ts +196 -0
  9. package/dist/CodemationAuthoring.types-SxVJ1qu5.js +86 -0
  10. package/dist/CodemationAuthoring.types-SxVJ1qu5.js.map +1 -0
  11. package/dist/{CodemationConfigNormalizer-DIc-LYqW.d.ts → CodemationConfigNormalizer-kJmyHNDp.d.ts} +2 -2
  12. package/dist/{CodemationConsumerConfigLoader-CeW4bnOg.d.ts → CodemationConsumerConfigLoader-BvTE-7tX.d.ts} +2 -2
  13. package/dist/{CodemationConsumerConfigLoader-D6LFSlp5.js → CodemationConsumerConfigLoader-DovlxZNb.js} +2 -2
  14. package/dist/{CodemationConsumerConfigLoader-D6LFSlp5.js.map → CodemationConsumerConfigLoader-DovlxZNb.js.map} +1 -1
  15. package/dist/{CodemationPluginListMerger-Cv7CaM5_.d.ts → CodemationPluginListMerger-DegwsxrS.d.ts} +6 -6
  16. package/dist/{CodemationPluginListMerger-CGwOTdZ7.js → CodemationPluginListMerger-_lZaa6gO.js} +1 -1
  17. package/dist/{CodemationPluginListMerger-CGwOTdZ7.js.map → CodemationPluginListMerger-_lZaa6gO.js.map} +1 -1
  18. package/dist/{CodemationAuthConfig-7hEfICPf.d.ts → CodemationWhitelabelConfig-D5rYcLlj.d.ts} +33 -33
  19. package/dist/{ConsoleLogger-ClPU7jtc.js → ConsoleLogger-DuStfHe0.js} +1 -1
  20. package/dist/{ConsoleLogger-ClPU7jtc.js.map → ConsoleLogger-DuStfHe0.js.map} +1 -1
  21. package/dist/{CredentialServices-xVxVA9Tq.js → CredentialServices-BPKUF8Xs.js} +42 -8
  22. package/dist/CredentialServices-BPKUF8Xs.js.map +1 -0
  23. package/dist/{CredentialServices-Dp_jXTJo.d.ts → CredentialServices-GlBk2nL7.d.ts} +14 -5
  24. package/dist/{LogLevelPolicy-9IcPGZFk.d.ts → LogLevelPolicy-CkiJAH75.d.ts} +2 -2
  25. package/dist/{PublicFrontendBootstrap-DCniMBGu.d.ts → PublicFrontendBootstrap-ci0Vwxrb.d.ts} +2 -2
  26. package/dist/{PublicFrontendBootstrapFactory-SQVHMxLg.d.ts → PublicFrontendBootstrapFactory-r61MeSpZ.d.ts} +4 -4
  27. package/dist/{PublicFrontendBootstrapJsonCodec-BdiVGG5R.js → PublicFrontendBootstrapJsonCodec-BZgQ_FnW.js} +1 -1
  28. package/dist/{PublicFrontendBootstrapJsonCodec-BdiVGG5R.js.map → PublicFrontendBootstrapJsonCodec-BZgQ_FnW.js.map} +1 -1
  29. package/dist/{PublicFrontendBootstrapJsonCodec-BE0mhe1v.d.ts → PublicFrontendBootstrapJsonCodec-Ja0GQgpp.d.ts} +2 -2
  30. package/dist/{ServerLoggerFactory-BltIIDfQ.js → ServerLoggerFactory-CsNW5qhz.js} +4 -4
  31. package/dist/{ServerLoggerFactory-BltIIDfQ.js.map → ServerLoggerFactory-CsNW5qhz.js.map} +1 -1
  32. package/dist/authoring.d.ts +5 -0
  33. package/dist/authoring.js +4 -0
  34. package/dist/client.d.ts +4 -4
  35. package/dist/client.js +2 -2
  36. package/dist/consumer.d.ts +5 -5
  37. package/dist/consumer.js +5 -5
  38. package/dist/credentials.d.ts +4 -4
  39. package/dist/credentials.js +3 -3
  40. package/dist/devServerSidecar.d.ts +1 -1
  41. package/dist/{index-CLRTQLAp.d.ts → index-SKC6oys-.d.ts} +9 -1
  42. package/dist/index.d.ts +14 -203
  43. package/dist/index.js +14 -98
  44. package/dist/nextServer.d.ts +12 -11
  45. package/dist/nextServer.js +8 -8
  46. package/dist/{persistenceServer-Dv7fg_Jf.d.ts → persistenceServer-D89nDslh.d.ts} +2 -2
  47. package/dist/{persistenceServer-DMvIOGW8.js → persistenceServer-DKbFDxoS.js} +2 -2
  48. package/dist/{persistenceServer-DMvIOGW8.js.map → persistenceServer-DKbFDxoS.js.map} +1 -1
  49. package/dist/persistenceServer.d.ts +6 -6
  50. package/dist/persistenceServer.js +3 -3
  51. package/dist/{server-CioY8PP3.js → server-CFpgKuVE.js} +5 -5
  52. package/dist/{server-CioY8PP3.js.map → server-CFpgKuVE.js.map} +1 -1
  53. package/dist/{server-C5oqDnZQ.d.ts → server-CUo7My6x.d.ts} +5 -5
  54. package/dist/server.d.ts +11 -11
  55. package/dist/server.js +11 -11
  56. package/package.json +14 -7
  57. package/src/application/commands/StartWorkflowRunCommandHandler.ts +64 -2
  58. package/src/authoring.ts +31 -0
  59. package/src/domain/credentials/CredentialInstanceService.ts +8 -1
  60. package/src/domain/credentials/CredentialOAuth2ScopeResolver.ts +61 -0
  61. package/src/domain/credentials/CredentialServices.ts +1 -0
  62. package/src/domain/credentials/OAuth2ConnectServiceFactory.ts +9 -2
  63. package/dist/AppContainerFactory-CeKsjo8L.js.map +0 -1
  64. package/dist/CredentialServices-xVxVA9Tq.js.map +0 -1
  65. package/dist/index.js.map +0 -1
  66. /package/dist/{decorate-B0PP651O.js → decorate-Dq0XLibd.js} +0 -0
  67. /package/dist/{decorateParam-DrsXNPuw.js → decorateParam-D7WPDFAf.js} +0 -0
@@ -1,5 +1,5 @@
1
- import { _ as AppPersistenceConfig, g as AppConfig } from "./CodemationConfig-9PkOBCh-.js";
2
- import { t as NormalizedCodemationConfig } from "./CodemationConfigNormalizer-DIc-LYqW.js";
1
+ import { i as AppPersistenceConfig, r as AppConfig } from "./CodemationAppContext-Vtn0U2Ga.js";
2
+ import { t as NormalizedCodemationConfig } from "./CodemationConfigNormalizer-kJmyHNDp.js";
3
3
  import { AnyNull, AnyNullClass, DbNull, DbNullClass, Decimal, JsonNull, JsonNullClass, NullTypes as NullTypes$1, ObjectEnumValue, PrismaClientInitializationError, PrismaClientKnownRequestError, PrismaClientRustPanicError, PrismaClientUnknownRequestError, PrismaClientValidationError, RawValue, Sql, Value, empty, isAnyNull, isDbNull, isJsonNull, isObjectEnumValue, join, raw, sql as sqltag } from "@prisma/client-runtime-utils";
4
4
 
5
5
  //#region src/infrastructure/persistence/generated/prisma-postgresql-client/runtime/client.d.ts
@@ -28903,4 +28903,4 @@ declare class AppConfigFactory {
28903
28903
  }
28904
28904
  //#endregion
28905
28905
  export { PrismaClient as i, PrismaMigrationDeployer as n, PrismaDatabaseClient as r, AppConfigFactory as t };
28906
- //# sourceMappingURL=AppConfigFactory-BBEn2B-i.d.ts.map
28906
+ //# sourceMappingURL=AppConfigFactory-j1Mc-dIX.d.ts.map
@@ -1,9 +1,10 @@
1
1
  import { i as __toESM, r as __require, t as __commonJS } from "./chunk-7V6ThxGB.js";
2
- import { o as LogLevelPolicyFactory, s as logLevelPolicyFactory, t as ServerLoggerFactory } from "./ServerLoggerFactory-BltIIDfQ.js";
3
- import { n as __decorateMetadata, t as __decorateParam } from "./decorateParam-DrsXNPuw.js";
4
- import { t as __decorate } from "./decorate-B0PP651O.js";
5
- import { a as CredentialInstanceService, c as CredentialFieldEnvOverlayService, d as ApplicationRequestError, f as CredentialTypeRegistryImpl, i as CredentialBindingService, l as WorkflowCredentialNodeResolver, m as OpenAiApiKeyCredentialHealthTester, n as CredentialSessionServiceImpl, o as CredentialMaterialResolver, p as OpenAiApiKeyCredentialTypeFactory, r as CredentialRuntimeMaterialService, s as CredentialSecretCipher, t as CredentialTestService, u as ApplicationTokens } from "./CredentialServices-xVxVA9Tq.js";
6
- import { i as require_client$2, r as PrismaMigrationDeployer } from "./AppConfigFactory-ByT1D8dM.js";
2
+ import { o as LogLevelPolicyFactory, s as logLevelPolicyFactory, t as ServerLoggerFactory } from "./ServerLoggerFactory-CsNW5qhz.js";
3
+ import { n as __decorateMetadata, t as __decorateParam } from "./decorateParam-D7WPDFAf.js";
4
+ import { t as __decorate } from "./decorate-Dq0XLibd.js";
5
+ import { a as CredentialInstanceService, c as CredentialSecretCipher, d as ApplicationTokens, f as ApplicationRequestError, h as OpenAiApiKeyCredentialHealthTester, i as CredentialBindingService, l as CredentialFieldEnvOverlayService, m as OpenAiApiKeyCredentialTypeFactory, n as CredentialSessionServiceImpl, o as CredentialOAuth2ScopeResolver, p as CredentialTypeRegistryImpl, r as CredentialRuntimeMaterialService, s as CredentialMaterialResolver, t as CredentialTestService, u as WorkflowCredentialNodeResolver } from "./CredentialServices-BPKUF8Xs.js";
6
+ import { i as require_client$2, r as PrismaMigrationDeployer } from "./AppConfigFactory-CqKWXqOm.js";
7
+ import { AIAgentConnectionWorkflowExpander, ConnectionCredentialNodeConfigFactory, ManualTriggerNode } from "@codemation/core-nodes";
7
8
  import { mkdir, rm, stat } from "node:fs/promises";
8
9
  import path from "node:path";
9
10
  import { pathToFileURL } from "node:url";
@@ -11,7 +12,6 @@ import { AgentConfigInspector, AgentConnectionNodeCollector, CoreTokens, Default
11
12
  import { createHash, randomBytes } from "node:crypto";
12
13
  import "reflect-metadata";
13
14
  import { ConfigDrivenOffloadPolicy, DefaultDrivingScheduler, DefaultExecutionContextFactory, Engine, EngineRuntimeRegistrar, InMemoryBinaryStorage, InMemoryRunDataFactory, InlineDrivingScheduler, MissingRuntimeTriggerToken, PersistedWorkflowTokenRegistry, RunIntentService, RunSummaryMapper, WorkflowRepositoryWebhookTriggerMatcher } from "@codemation/core/bootstrap";
14
- import { AIAgentConnectionWorkflowExpander, ConnectionCredentialNodeConfigFactory, ManualTriggerNode } from "@codemation/core-nodes";
15
15
  import { compare, hash } from "bcryptjs";
16
16
  import sanitizeFilename from "sanitize-filename";
17
17
  import { WebSocket, WebSocketServer } from "ws";
@@ -1226,12 +1226,19 @@ let StartWorkflowRunCommandHandler = class StartWorkflowRunCommandHandler$1 exte
1226
1226
  sourceState,
1227
1227
  debuggerOverlay
1228
1228
  });
1229
+ const synthesizeTriggerItems = this.resolveSynthesizeTriggerItems({
1230
+ workflow,
1231
+ mode: body.mode,
1232
+ requestedItems,
1233
+ requestedSynthesizeTriggerItems: body.synthesizeTriggerItems,
1234
+ currentState
1235
+ });
1229
1236
  const result = legacyStartNodeId && this.hasReusableCurrentState(currentState) && !clearFromNodeId ? await this.runIntentService.rerunFromNode({
1230
1237
  workflow,
1231
1238
  nodeId: legacyStartNodeId,
1232
1239
  currentState,
1233
1240
  items: requestedItems,
1234
- synthesizeTriggerItems: body.synthesizeTriggerItems,
1241
+ synthesizeTriggerItems,
1235
1242
  executionOptions,
1236
1243
  workflowSnapshot: sourceState?.workflowSnapshot,
1237
1244
  mutableState: this.cloneMutableState(currentState.mutableState)
@@ -1239,7 +1246,7 @@ let StartWorkflowRunCommandHandler = class StartWorkflowRunCommandHandler$1 exte
1239
1246
  workflow,
1240
1247
  startAt: legacyStartNodeId && !body.sourceRunId && !body.stopAt ? legacyStartNodeId : void 0,
1241
1248
  items,
1242
- synthesizeTriggerItems: body.synthesizeTriggerItems,
1249
+ synthesizeTriggerItems,
1243
1250
  executionOptions,
1244
1251
  workflowSnapshot: sourceState?.workflowSnapshot,
1245
1252
  mutableState: this.cloneMutableState(currentState.mutableState),
@@ -1319,6 +1326,32 @@ let StartWorkflowRunCommandHandler = class StartWorkflowRunCommandHandler$1 exte
1319
1326
  hasReusableCurrentState(currentState) {
1320
1327
  return Object.keys(currentState.outputsByNode).length > 0 || Object.keys(currentState.nodeSnapshotsByNodeId).length > 0 || Object.keys(currentState.mutableState?.nodesById ?? {}).length > 0;
1321
1328
  }
1329
+ resolveSynthesizeTriggerItems(args) {
1330
+ if (this.hasNonEmptyItems(args.requestedItems)) return false;
1331
+ if (args.requestedSynthesizeTriggerItems === true) return true;
1332
+ if (args.mode !== "manual") return args.requestedSynthesizeTriggerItems ?? false;
1333
+ if (!this.workflowHasTrigger(args.workflow)) return args.requestedSynthesizeTriggerItems ?? false;
1334
+ if (this.currentStateHasTriggerData(args.workflow, args.currentState)) return args.requestedSynthesizeTriggerItems ?? false;
1335
+ return true;
1336
+ }
1337
+ workflowHasTrigger(workflow) {
1338
+ return workflow.nodes.some((node) => node.kind === "trigger");
1339
+ }
1340
+ currentStateHasTriggerData(workflow, currentState) {
1341
+ const triggerNodeIds = workflow.nodes.filter((node) => node.kind === "trigger").map((node) => node.id);
1342
+ for (const triggerNodeId of triggerNodeIds) {
1343
+ if (this.hasOutputItems(currentState.outputsByNode[triggerNodeId])) return true;
1344
+ if (this.hasOutputItems(currentState.mutableState?.nodesById?.[triggerNodeId]?.pinnedOutputsByPort)) return true;
1345
+ }
1346
+ return false;
1347
+ }
1348
+ hasOutputItems(outputsByPort) {
1349
+ if (!outputsByPort) return false;
1350
+ return Object.values(outputsByPort).some((items) => this.hasNonEmptyItems(items));
1351
+ }
1352
+ hasNonEmptyItems(items) {
1353
+ return (items?.length ?? 0) > 0;
1354
+ }
1322
1355
  };
1323
1356
  StartWorkflowRunCommandHandler = __decorate([
1324
1357
  HandlesCommand.forCommand(StartWorkflowRunCommand),
@@ -2080,13 +2113,13 @@ OAuth2ProviderRegistry = _OAuth2ProviderRegistry = __decorate([injectable()], OA
2080
2113
 
2081
2114
  //#endregion
2082
2115
  //#region src/domain/credentials/OAuth2ConnectServiceFactory.ts
2083
- var _ref$33, _ref2$9, _ref3$4, _ref4$2, _ref5$1, _ref6, _ref7, _OAuth2ConnectService;
2116
+ var _ref$33, _ref2$9, _ref3$4, _ref4$2, _ref5$1, _ref6, _ref7, _ref8, _OAuth2ConnectService;
2084
2117
  let OAuth2ConnectService = class OAuth2ConnectService$1 {
2085
2118
  static {
2086
2119
  _OAuth2ConnectService = this;
2087
2120
  }
2088
2121
  static stateTtlMs = 600 * 1e3;
2089
- constructor(credentialStore, credentialInstanceService, credentialTypeRegistry, credentialRuntimeMaterialService, credentialFieldEnvOverlayService, credentialMaterialResolver, credentialSecretCipher, oauth2ProviderRegistry, appConfig) {
2122
+ constructor(credentialStore, credentialInstanceService, credentialTypeRegistry, credentialRuntimeMaterialService, credentialFieldEnvOverlayService, credentialMaterialResolver, credentialSecretCipher, credentialOAuth2ScopeResolver, oauth2ProviderRegistry, appConfig) {
2090
2123
  this.credentialStore = credentialStore;
2091
2124
  this.credentialInstanceService = credentialInstanceService;
2092
2125
  this.credentialTypeRegistry = credentialTypeRegistry;
@@ -2094,6 +2127,7 @@ let OAuth2ConnectService = class OAuth2ConnectService$1 {
2094
2127
  this.credentialFieldEnvOverlayService = credentialFieldEnvOverlayService;
2095
2128
  this.credentialMaterialResolver = credentialMaterialResolver;
2096
2129
  this.credentialSecretCipher = credentialSecretCipher;
2130
+ this.credentialOAuth2ScopeResolver = credentialOAuth2ScopeResolver;
2097
2131
  this.oauth2ProviderRegistry = oauth2ProviderRegistry;
2098
2132
  this.appConfig = appConfig;
2099
2133
  }
@@ -2107,6 +2141,7 @@ let OAuth2ConnectService = class OAuth2ConnectService$1 {
2107
2141
  material: emptyMaterial
2108
2142
  });
2109
2143
  const provider = this.oauth2ProviderRegistry.resolve(credentialType.definition, resolvedPublicConfig);
2144
+ const requestedScopes = this.credentialOAuth2ScopeResolver.resolveRequestedScopes(credentialType.definition.auth, resolvedPublicConfig);
2110
2145
  const redirectUri = this.getRedirectUri(requestOrigin);
2111
2146
  const state = this.createOpaqueValue();
2112
2147
  const codeVerifier = this.createOpaqueValue();
@@ -2118,7 +2153,7 @@ let OAuth2ConnectService = class OAuth2ConnectService$1 {
2118
2153
  instanceId,
2119
2154
  codeVerifier,
2120
2155
  providerId: provider.providerId,
2121
- requestedScopes: credentialType.definition.auth.scopes,
2156
+ requestedScopes,
2122
2157
  createdAt: createdAt.toISOString(),
2123
2158
  expiresAt: expiresAt.toISOString()
2124
2159
  });
@@ -2126,7 +2161,7 @@ let OAuth2ConnectService = class OAuth2ConnectService$1 {
2126
2161
  authorizeUrl.searchParams.set("response_type", "code");
2127
2162
  authorizeUrl.searchParams.set("client_id", this.oauth2ProviderRegistry.resolveClientId(credentialType.definition.auth, resolvedPublicConfig));
2128
2163
  authorizeUrl.searchParams.set("redirect_uri", redirectUri);
2129
- authorizeUrl.searchParams.set("scope", credentialType.definition.auth.scopes.join(" "));
2164
+ authorizeUrl.searchParams.set("scope", requestedScopes.join(" "));
2130
2165
  authorizeUrl.searchParams.set("state", state);
2131
2166
  authorizeUrl.searchParams.set("code_challenge", codeChallenge);
2132
2167
  authorizeUrl.searchParams.set("code_challenge_method", "S256");
@@ -2324,8 +2359,9 @@ OAuth2ConnectService = _OAuth2ConnectService = __decorate([
2324
2359
  __decorateParam(4, inject(CredentialFieldEnvOverlayService)),
2325
2360
  __decorateParam(5, inject(CredentialMaterialResolver)),
2326
2361
  __decorateParam(6, inject(CredentialSecretCipher)),
2327
- __decorateParam(7, inject(OAuth2ProviderRegistry)),
2328
- __decorateParam(8, inject(ApplicationTokens.AppConfig)),
2362
+ __decorateParam(7, inject(CredentialOAuth2ScopeResolver)),
2363
+ __decorateParam(8, inject(OAuth2ProviderRegistry)),
2364
+ __decorateParam(9, inject(ApplicationTokens.AppConfig)),
2329
2365
  __decorateMetadata("design:paramtypes", [
2330
2366
  Object,
2331
2367
  typeof (_ref$33 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$33 : Object,
@@ -2334,7 +2370,8 @@ OAuth2ConnectService = _OAuth2ConnectService = __decorate([
2334
2370
  typeof (_ref4$2 = typeof CredentialFieldEnvOverlayService !== "undefined" && CredentialFieldEnvOverlayService) === "function" ? _ref4$2 : Object,
2335
2371
  typeof (_ref5$1 = typeof CredentialMaterialResolver !== "undefined" && CredentialMaterialResolver) === "function" ? _ref5$1 : Object,
2336
2372
  typeof (_ref6 = typeof CredentialSecretCipher !== "undefined" && CredentialSecretCipher) === "function" ? _ref6 : Object,
2337
- typeof (_ref7 = typeof OAuth2ProviderRegistry !== "undefined" && OAuth2ProviderRegistry) === "function" ? _ref7 : Object,
2373
+ typeof (_ref7 = typeof CredentialOAuth2ScopeResolver !== "undefined" && CredentialOAuth2ScopeResolver) === "function" ? _ref7 : Object,
2374
+ typeof (_ref8 = typeof OAuth2ProviderRegistry !== "undefined" && OAuth2ProviderRegistry) === "function" ? _ref8 : Object,
2338
2375
  Object
2339
2376
  ])
2340
2377
  ], OAuth2ConnectService);
@@ -15333,4 +15370,4 @@ var AppContainerFactory = class AppContainerFactory {
15333
15370
 
15334
15371
  //#endregion
15335
15372
  export { GetWorkflowDetailQuery as C, ListUserAccountsQuery as E, GetWorkflowSummariesQuery as S, UpsertLocalBootstrapUserCommand as T, CodemationFrontendAuthSnapshotFactory as _, AppContainerLifecycle as a, WorkflowDefinitionMapper as b, RequestToWebhookItemMapper as c, CredentialHttpRouteHandler as d, CodemationHonoApiApp as f, FrontendAppConfigFactory as g, InternalAuthBootstrapFactory as h, DatabaseMigrations as i, RunHttpRouteHandler as l, PublicFrontendBootstrapFactory as m, WorkerRuntime as n, WorkflowHttpRouteHandler as o, BinaryHttpRouteHandler as p, FrontendRuntime as r, WebhookHttpRouteHandler as s, AppContainerFactory as t, OAuth2HttpRouteHandler as u, WorkflowWebsocketServer as v, RunBinaryAttachmentLookupService as w, WorkflowPolicyUiPresentationFactory as x, ApiPaths as y };
15336
- //# sourceMappingURL=AppContainerFactory-CeKsjo8L.js.map
15373
+ //# sourceMappingURL=AppContainerFactory-CcSGFNLW.js.map