@solidactions/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/.claude/settings.local.json +7 -0
  2. package/.clavix/outputs/dbos-http-sdk/full-prd.md +142 -0
  3. package/.clavix/outputs/dbos-http-sdk/quick-prd.md +12 -0
  4. package/.clavix/outputs/dbos-http-sdk/tasks.md +630 -0
  5. package/.clavix/outputs/prompts/dbos-http-api-20260110-033219.md +91 -0
  6. package/.husky/pre-commit +1 -0
  7. package/.prettierignore +3 -0
  8. package/.prettierrc +9 -0
  9. package/CODE_OF_CONDUCT.md +49 -0
  10. package/CONTRIBUTING.md +47 -0
  11. package/LICENSE +21 -0
  12. package/README.md +172 -0
  13. package/dist/dbos-config.schema.json +132 -0
  14. package/dist/schemas/system_db_schema.d.ts +73 -0
  15. package/dist/schemas/system_db_schema.d.ts.map +1 -0
  16. package/dist/schemas/system_db_schema.js +3 -0
  17. package/dist/schemas/system_db_schema.js.map +1 -0
  18. package/dist/src/adminserver.d.ts +79 -0
  19. package/dist/src/adminserver.d.ts.map +1 -0
  20. package/dist/src/adminserver.js +495 -0
  21. package/dist/src/adminserver.js.map +1 -0
  22. package/dist/src/authdecorators.d.ts +2 -0
  23. package/dist/src/authdecorators.d.ts.map +1 -0
  24. package/dist/src/authdecorators.js +48 -0
  25. package/dist/src/authdecorators.js.map +1 -0
  26. package/dist/src/cli/cli.d.ts +9 -0
  27. package/dist/src/cli/cli.d.ts.map +1 -0
  28. package/dist/src/cli/cli.js +116 -0
  29. package/dist/src/cli/cli.js.map +1 -0
  30. package/dist/src/cli/commands.d.ts +3 -0
  31. package/dist/src/cli/commands.d.ts.map +1 -0
  32. package/dist/src/cli/commands.js +46 -0
  33. package/dist/src/cli/commands.js.map +1 -0
  34. package/dist/src/client.d.ts +85 -0
  35. package/dist/src/client.d.ts.map +1 -0
  36. package/dist/src/client.js +186 -0
  37. package/dist/src/client.js.map +1 -0
  38. package/dist/src/conductor/conductor.d.ts +28 -0
  39. package/dist/src/conductor/conductor.d.ts.map +1 -0
  40. package/dist/src/conductor/conductor.js +376 -0
  41. package/dist/src/conductor/conductor.js.map +1 -0
  42. package/dist/src/conductor/protocol.d.ts +238 -0
  43. package/dist/src/conductor/protocol.d.ts.map +1 -0
  44. package/dist/src/conductor/protocol.js +353 -0
  45. package/dist/src/conductor/protocol.js.map +1 -0
  46. package/dist/src/config.d.ts +91 -0
  47. package/dist/src/config.d.ts.map +1 -0
  48. package/dist/src/config.js +199 -0
  49. package/dist/src/config.js.map +1 -0
  50. package/dist/src/context.d.ts +62 -0
  51. package/dist/src/context.d.ts.map +1 -0
  52. package/dist/src/context.js +118 -0
  53. package/dist/src/context.js.map +1 -0
  54. package/dist/src/database_utils.d.ts +17 -0
  55. package/dist/src/database_utils.d.ts.map +1 -0
  56. package/dist/src/database_utils.js +53 -0
  57. package/dist/src/database_utils.js.map +1 -0
  58. package/dist/src/datasource.d.ts +109 -0
  59. package/dist/src/datasource.d.ts.map +1 -0
  60. package/dist/src/datasource.js +204 -0
  61. package/dist/src/datasource.js.map +1 -0
  62. package/dist/src/dbos-executor.d.ts +189 -0
  63. package/dist/src/dbos-executor.d.ts.map +1 -0
  64. package/dist/src/dbos-executor.js +817 -0
  65. package/dist/src/dbos-executor.js.map +1 -0
  66. package/dist/src/dbos.d.ts +519 -0
  67. package/dist/src/dbos.d.ts.map +1 -0
  68. package/dist/src/dbos.js +1282 -0
  69. package/dist/src/dbos.js.map +1 -0
  70. package/dist/src/debouncer.d.ts +33 -0
  71. package/dist/src/debouncer.d.ts.map +1 -0
  72. package/dist/src/debouncer.js +170 -0
  73. package/dist/src/debouncer.js.map +1 -0
  74. package/dist/src/debugpoint.d.ts +26 -0
  75. package/dist/src/debugpoint.d.ts.map +1 -0
  76. package/dist/src/debugpoint.js +65 -0
  77. package/dist/src/debugpoint.js.map +1 -0
  78. package/dist/src/decorators.d.ts +219 -0
  79. package/dist/src/decorators.d.ts.map +1 -0
  80. package/dist/src/decorators.js +873 -0
  81. package/dist/src/decorators.js.map +1 -0
  82. package/dist/src/error.d.ts +130 -0
  83. package/dist/src/error.d.ts.map +1 -0
  84. package/dist/src/error.js +290 -0
  85. package/dist/src/error.js.map +1 -0
  86. package/dist/src/http_client.d.ts +82 -0
  87. package/dist/src/http_client.d.ts.map +1 -0
  88. package/dist/src/http_client.js +286 -0
  89. package/dist/src/http_client.js.map +1 -0
  90. package/dist/src/http_system_database.d.ts +84 -0
  91. package/dist/src/http_system_database.d.ts.map +1 -0
  92. package/dist/src/http_system_database.js +429 -0
  93. package/dist/src/http_system_database.js.map +1 -0
  94. package/dist/src/index.d.ts +14 -0
  95. package/dist/src/index.d.ts.map +1 -0
  96. package/dist/src/index.js +53 -0
  97. package/dist/src/index.js.map +1 -0
  98. package/dist/src/scheduler/crontab.d.ts +14 -0
  99. package/dist/src/scheduler/crontab.d.ts.map +1 -0
  100. package/dist/src/scheduler/crontab.js +308 -0
  101. package/dist/src/scheduler/crontab.js.map +1 -0
  102. package/dist/src/scheduler/scheduler.d.ts +41 -0
  103. package/dist/src/scheduler/scheduler.d.ts.map +1 -0
  104. package/dist/src/scheduler/scheduler.js +165 -0
  105. package/dist/src/scheduler/scheduler.js.map +1 -0
  106. package/dist/src/serialization.d.ts +57 -0
  107. package/dist/src/serialization.d.ts.map +1 -0
  108. package/dist/src/serialization.js +306 -0
  109. package/dist/src/serialization.js.map +1 -0
  110. package/dist/src/solidactions-executor.d.ts +177 -0
  111. package/dist/src/solidactions-executor.d.ts.map +1 -0
  112. package/dist/src/solidactions-executor.js +817 -0
  113. package/dist/src/solidactions-executor.js.map +1 -0
  114. package/dist/src/solidactions.d.ts +519 -0
  115. package/dist/src/solidactions.d.ts.map +1 -0
  116. package/dist/src/solidactions.js +1284 -0
  117. package/dist/src/solidactions.js.map +1 -0
  118. package/dist/src/step.d.ts +16 -0
  119. package/dist/src/step.d.ts.map +1 -0
  120. package/dist/src/step.js +3 -0
  121. package/dist/src/step.js.map +1 -0
  122. package/dist/src/system_database.d.ts +141 -0
  123. package/dist/src/system_database.d.ts.map +1 -0
  124. package/dist/src/system_database.js +25 -0
  125. package/dist/src/system_database.js.map +1 -0
  126. package/dist/src/telemetry/collector.d.ts +13 -0
  127. package/dist/src/telemetry/collector.d.ts.map +1 -0
  128. package/dist/src/telemetry/collector.js +63 -0
  129. package/dist/src/telemetry/collector.js.map +1 -0
  130. package/dist/src/telemetry/exporters.d.ts +13 -0
  131. package/dist/src/telemetry/exporters.d.ts.map +1 -0
  132. package/dist/src/telemetry/exporters.js +101 -0
  133. package/dist/src/telemetry/exporters.js.map +1 -0
  134. package/dist/src/telemetry/logs.d.ts +52 -0
  135. package/dist/src/telemetry/logs.d.ts.map +1 -0
  136. package/dist/src/telemetry/logs.js +287 -0
  137. package/dist/src/telemetry/logs.js.map +1 -0
  138. package/dist/src/telemetry/traces.d.ts +52 -0
  139. package/dist/src/telemetry/traces.d.ts.map +1 -0
  140. package/dist/src/telemetry/traces.js +150 -0
  141. package/dist/src/telemetry/traces.js.map +1 -0
  142. package/dist/src/utils.d.ts +26 -0
  143. package/dist/src/utils.d.ts.map +1 -0
  144. package/dist/src/utils.js +136 -0
  145. package/dist/src/utils.js.map +1 -0
  146. package/dist/src/wfqueue.d.ts +64 -0
  147. package/dist/src/wfqueue.d.ts.map +1 -0
  148. package/dist/src/wfqueue.js +147 -0
  149. package/dist/src/wfqueue.js.map +1 -0
  150. package/dist/src/workflow.d.ts +154 -0
  151. package/dist/src/workflow.d.ts.map +1 -0
  152. package/dist/src/workflow.js +99 -0
  153. package/dist/src/workflow.js.map +1 -0
  154. package/dist/src/workflow_management.d.ts +15 -0
  155. package/dist/src/workflow_management.d.ts.map +1 -0
  156. package/dist/src/workflow_management.js +87 -0
  157. package/dist/src/workflow_management.js.map +1 -0
  158. package/dist/tsconfig.tsbuildinfo +1 -0
  159. package/docs/api-schema.md +1441 -0
  160. package/docs/migration-guide.md +460 -0
  161. package/docs/phase-14-changes.md +156 -0
  162. package/docs/solidsteps-ai-prompt.md +534 -0
  163. package/eslint.config.cjs +50 -0
  164. package/package.json +84 -0
  165. package/solidactions-ai-prompt.md +1504 -0
  166. package/solidactions-config.schema.json +132 -0
  167. package/solidactions-test-config.yaml +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authdecorators.js","sourceRoot":"","sources":["../../src/authdecorators.ts"],"names":[],"mappings":";;;AAAA,uCAAmD;AACnD,iDAA8C;AAC9C,6CAOsB;AACtB,mCAAyD;AAEzD,SAAS,eAAe,CAAC,OAA+B,EAAE,IAAe;IACvE,+DAA+D;IAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACjD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,2BAAY,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,2BAAY,CAAC,kBAAkB,CAAC;QACjD,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,IAAA,gCAAsB,GAAE,EAAE,CAAC;oBAC7B,IAAA,gCAAsB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC/C,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,IAAI,sCAA8B,CAC5C,qDAAqD,OAAO,CAAC,IAAI,EAAE,EACnE,GAAG,CACJ,CAAC;YACF,2BAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,gCAAgC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,WAAW;IACf,iBAAiB,CAAC,OAA+B;QAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,8BAAiB,CAAsB,CAAC;QAC/F,MAAM,UAAU,GAAG,OAAO,EAAE,iBAAiB,CAAC,8BAAiB,CAAe,CAAC;QAE/E,MAAM,WAAW,GAAG,SAAS,EAAE,YAAY,KAAK,SAAS,IAAI,UAAU,EAAE,YAAY,KAAK,SAAS,CAAC;QAEpG,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,SAAgB,mBAAmB;IACjC,IAAA,wCAA2B,EAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AAFD,kDAEC"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SolidActions SDK CLI - HTTP-only version
4
+ *
5
+ * This CLI provides commands for:
6
+ * - Managing workflows via HTTP API
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * SolidActions SDK CLI - HTTP-only version
5
+ *
6
+ * This CLI provides commands for:
7
+ * - Managing workflows via HTTP API
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const commander_1 = require("commander");
11
+ const __1 = require("..");
12
+ const node_process_1 = require("node:process");
13
+ const utils_1 = require("../utils");
14
+ const program = new commander_1.Command();
15
+ program.version(utils_1.globalParams.solidActionsVersion);
16
+ /////////////////////////
17
+ /* WORKFLOW MANAGEMENT */
18
+ /////////////////////////
19
+ const workflowCommands = program
20
+ .command('workflow')
21
+ .alias('workflows')
22
+ .alias('wf')
23
+ .description('Manage SolidActions workflows');
24
+ workflowCommands
25
+ .command('list')
26
+ .description('List workflows from your application')
27
+ .option('-n, --name <string>', 'Retrieve functions with this name')
28
+ .option('-l, --limit <number>', 'Limit the results returned', '10')
29
+ .option('-u, --user <string>', 'Retrieve workflows run by this user')
30
+ .option('-t, --start-time <string>', 'Retrieve workflows starting after this timestamp (ISO 8601 format)')
31
+ .option('-e, --end-time <string>', 'Retrieve workflows starting before this timestamp (ISO 8601 format)')
32
+ .option('-S, --status <string>', 'Retrieve workflows with this status (PENDING, SUCCESS, ERROR, ENQUEUED, CANCELLED, or MAX_RECOVERY_ATTEMPTS_EXCEEDED)')
33
+ .option('-v, --application-version <string>', 'Retrieve workflows with this application version')
34
+ .action(async (options) => {
35
+ const validStatuses = Object.values(__1.StatusString);
36
+ if (options.status && !validStatuses.includes(options.status)) {
37
+ console.error('Invalid status: ', options.status);
38
+ (0, node_process_1.exit)(1);
39
+ }
40
+ const input = {
41
+ workflowName: options.name,
42
+ limit: Number(options.limit),
43
+ authenticatedUser: options.user,
44
+ startTime: options.startTime,
45
+ endTime: options.endTime,
46
+ status: options.status,
47
+ applicationVersion: options.applicationVersion,
48
+ };
49
+ const client = await __1.SolidActionsClient.create();
50
+ try {
51
+ const output = await client.listWorkflows(input);
52
+ console.log(JSON.stringify(output));
53
+ }
54
+ finally {
55
+ await client.destroy();
56
+ }
57
+ });
58
+ workflowCommands
59
+ .command('get')
60
+ .description('Retrieve the status of a workflow')
61
+ .argument('<workflowID>', 'Target workflow ID')
62
+ .action(async (workflowID) => {
63
+ const client = await __1.SolidActionsClient.create();
64
+ try {
65
+ const output = await client.getWorkflow(workflowID);
66
+ console.log(JSON.stringify(output));
67
+ }
68
+ finally {
69
+ await client.destroy();
70
+ }
71
+ });
72
+ workflowCommands
73
+ .command('steps')
74
+ .description('List the steps of a workflow')
75
+ .argument('<workflowID>', 'Target workflow ID')
76
+ .action(async (workflowID) => {
77
+ const client = await __1.SolidActionsClient.create();
78
+ try {
79
+ const output = await client.listWorkflowSteps(workflowID);
80
+ console.log(JSON.stringify(output));
81
+ }
82
+ finally {
83
+ await client.destroy();
84
+ }
85
+ });
86
+ workflowCommands
87
+ .command('cancel')
88
+ .description('Cancel a workflow so it is no longer automatically retried or restarted')
89
+ .argument('<workflowID>', 'Target workflow ID')
90
+ .action(async (workflowID) => {
91
+ const client = await __1.SolidActionsClient.create();
92
+ try {
93
+ await client.cancelWorkflow(workflowID);
94
+ console.log(`Workflow ${workflowID} cancelled`);
95
+ }
96
+ finally {
97
+ await client.destroy();
98
+ }
99
+ });
100
+ workflowCommands
101
+ .command('resume')
102
+ .description('Resume a cancelled workflow')
103
+ .argument('<workflowID>', 'Target workflow ID')
104
+ .action(async (workflowID) => {
105
+ const client = await __1.SolidActionsClient.create();
106
+ try {
107
+ await client.resumeWorkflow(workflowID);
108
+ console.log(`Workflow ${workflowID} resumed`);
109
+ }
110
+ finally {
111
+ await client.destroy();
112
+ }
113
+ });
114
+ // Parse command line arguments
115
+ program.parse(process.argv);
116
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { GlobalLogger } from '../telemetry/logs';
2
+ export declare function runCommand(command: string, logger: GlobalLogger): Promise<number>;
3
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CjF"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runCommand = void 0;
4
+ const child_process_1 = require("child_process");
5
+ // Run the "start" command provided by users in their dbos-config.yaml
6
+ function runCommand(command, logger) {
7
+ return new Promise((resolve, reject) => {
8
+ // Split the command into the executable and its arguments
9
+ const [executable, ...args] = command.split(' ');
10
+ // Spawn a child process
11
+ const child = (0, child_process_1.spawn)(executable, args, {
12
+ stdio: 'inherit', // Forward stdin, stdout, stderr
13
+ shell: true, // Use the shell to interpret the command
14
+ });
15
+ // Handle parent signals and forward to child
16
+ const handleSignal = (signal) => {
17
+ logger.debug(`Received ${signal}, forwarding to process...`);
18
+ if (child.pid) {
19
+ process.kill(child.pid, signal);
20
+ }
21
+ };
22
+ process.on('SIGTERM', () => handleSignal('SIGTERM'));
23
+ process.on('SIGINT', () => handleSignal('SIGINT'));
24
+ // Cleanup when child exits
25
+ child.on('exit', (code, signal) => {
26
+ if (code === 0 || signal === 'SIGTERM' || signal === 'SIGINT') {
27
+ logger.info(`Process exited successfully with code ${code ?? 'unknown'} or signal ${signal ?? 'unknown'}`);
28
+ resolve(0);
29
+ }
30
+ else {
31
+ const errorMsg = `Process exited with code ${code ?? 'unknown'} or signal ${signal ?? 'unknown'}`;
32
+ logger.error(errorMsg);
33
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
34
+ reject(code);
35
+ }
36
+ });
37
+ // Must be caught by the caller
38
+ child.on('error', (error) => {
39
+ logger.error(`Failed to start process: ${error.message}`);
40
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
41
+ reject(1);
42
+ });
43
+ });
44
+ }
45
+ exports.runCommand = runCommand;
46
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AAGtC,sEAAsE;AACtE,SAAgB,UAAU,CAAC,OAAe,EAAE,MAAoB;IAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,0DAA0D;QAC1D,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjD,wBAAwB;QACxB,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,UAAU,EAAE,IAAI,EAAE;YACpC,KAAK,EAAE,SAAS,EAAE,gCAAgC;YAClD,KAAK,EAAE,IAAI,EAAE,yCAAyC;SACvD,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;YAC9C,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,6BAA6B,CAAC,CAAC;YAC9D,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEnD,2BAA2B;QAC3B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC,yCAAyC,IAAI,IAAI,SAAS,cAAc,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;gBAC3G,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,4BAA4B,IAAI,IAAI,SAAS,cAAc,MAAM,IAAI,SAAS,EAAE,CAAC;gBAClG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvB,2EAA2E;gBAC3E,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,+BAA+B;QAC/B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,2EAA2E;YAC3E,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA1CD,gCA0CC"}
@@ -0,0 +1,85 @@
1
+ import { type SystemDatabase } from './system_database';
2
+ import { SolidActionsHttpConfig } from './config';
3
+ import { type GetWorkflowsInput, type StepInfo, type WorkflowHandle, type WorkflowStatus } from './workflow';
4
+ import { SolidActionsSerializer } from './serialization';
5
+ export declare class ClientHandle<R> implements WorkflowHandle<R> {
6
+ readonly systemDatabase: SystemDatabase;
7
+ readonly workflowUUID: string;
8
+ constructor(systemDatabase: SystemDatabase, workflowUUID: string);
9
+ getWorkflowUUID(): string;
10
+ get workflowID(): string;
11
+ getStatus(): Promise<WorkflowStatus | null>;
12
+ getResult(): Promise<R>;
13
+ getWorkflowInputs<T extends unknown[]>(): Promise<T>;
14
+ }
15
+ /**
16
+ * SolidActionsClient is the main entry point for interacting with the SolidActions system.
17
+ */
18
+ export declare class SolidActionsClient {
19
+ readonly serializer: SolidActionsSerializer;
20
+ private readonly logger;
21
+ private readonly systemDatabase;
22
+ private constructor();
23
+ /**
24
+ * Creates a new instance of the SolidActionsClient.
25
+ * Uses HTTP API to communicate with the backend.
26
+ * @param options - Configuration options
27
+ * @param options.httpConfig - HTTP API configuration - if not provided, reads from environment (SOLIDACTIONS_API_URL, SOLIDACTIONS_API_KEY)
28
+ * @param options.serializer - Custom serializer to use (optional)
29
+ * @returns The SolidActionsClient instance.
30
+ */
31
+ static create({ httpConfig, serializer, }?: {
32
+ httpConfig?: SolidActionsHttpConfig;
33
+ serializer?: SolidActionsSerializer;
34
+ }): SolidActionsClient;
35
+ /**
36
+ * Destroys the underlying database connection.
37
+ * This should be called when the client is no longer needed to clean up resources.
38
+ * @returns A Promise that resolves when database connection is destroyed.
39
+ */
40
+ destroy(): Promise<void>;
41
+ /**
42
+ * Sends a message to a workflow, identified by destinationID.
43
+ * @param destinationID - The ID of the destination workflow.
44
+ * @param message - The message to send. This can be any serializable object.
45
+ * @param topic - An optional topic to send the message to. If not provided, the default topic will be used.
46
+ * @param idempotencyKey - An optional idempotency key to ensure that the message is only sent once.
47
+ * @returns A Promise that resolves when the message has been sent.
48
+ */
49
+ send<T>(destinationID: string, message: T, topic?: string, idempotencyKey?: string): Promise<void>;
50
+ /**
51
+ * Retrieves an event published by workflowID for a given key.
52
+ * @param workflowID - The ID of the workflow that published the event.
53
+ * @param key - The key associated with the event you want to retrieve.
54
+ * @param timeoutSeconds - Optional timeout in seconds for how long to wait for the event to be available.
55
+ * @returns A Promise that resolves with the event payload.
56
+ */
57
+ getEvent<T>(workflowID: string, key: string, timeoutSeconds?: number): Promise<T | null>;
58
+ /**
59
+ * Retrieves a single workflow by its id.
60
+ * @param workflowID - The ID of the workflow to retrieve.
61
+ * @returns a WorkflowHandle that represents the retrieved workflow.
62
+ */
63
+ retrieveWorkflow<T = unknown>(workflowID: string): WorkflowHandle<Awaited<T>>;
64
+ cancelWorkflow(workflowID: string): Promise<void>;
65
+ resumeWorkflow(workflowID: string): Promise<void>;
66
+ forkWorkflow(workflowID: string, startStep: number, options?: {
67
+ newWorkflowID?: string;
68
+ applicationVersion?: string;
69
+ timeoutMS?: number;
70
+ }): Promise<string>;
71
+ getWorkflow(workflowID: string): Promise<WorkflowStatus | undefined>;
72
+ listWorkflows(input: GetWorkflowsInput): Promise<WorkflowStatus[]>;
73
+ listQueuedWorkflows(input: GetWorkflowsInput): Promise<WorkflowStatus[]>;
74
+ listWorkflowSteps(workflowID: string): Promise<StepInfo[] | undefined>;
75
+ /**
76
+ * Read values from a stream as an async generator.
77
+ * This function reads values from a stream identified by the workflowID and key,
78
+ * yielding each value in order until the stream is closed or the workflow terminates.
79
+ * @param workflowID - The ID of the workflow that wrote to the stream
80
+ * @param key - The stream key to read from
81
+ * @returns An async generator that yields each value in the stream until the stream is closed
82
+ */
83
+ readStream<T>(workflowID: string, key: string): AsyncGenerator<T, void, unknown>;
84
+ }
85
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolidActionsClient = exports.ClientHandle = void 0;
4
+ const system_database_1 = require("./system_database");
5
+ const config_1 = require("./config");
6
+ const logs_1 = require("./telemetry/logs");
7
+ const node_crypto_1 = require("node:crypto");
8
+ const workflow_1 = require("./workflow");
9
+ const utils_1 = require("./utils");
10
+ const serialization_1 = require("./serialization");
11
+ const workflow_management_1 = require("./workflow_management");
12
+ const solidactions_executor_1 = require("./solidactions-executor");
13
+ const error_1 = require("./error");
14
+ class ClientHandle {
15
+ systemDatabase;
16
+ workflowUUID;
17
+ constructor(systemDatabase, workflowUUID) {
18
+ this.systemDatabase = systemDatabase;
19
+ this.workflowUUID = workflowUUID;
20
+ }
21
+ getWorkflowUUID() {
22
+ return this.workflowUUID;
23
+ }
24
+ get workflowID() {
25
+ return this.workflowUUID;
26
+ }
27
+ async getStatus() {
28
+ const status = await this.systemDatabase.getWorkflowStatus(this.workflowUUID);
29
+ return status ? (0, workflow_management_1.toWorkflowStatus)(status, this.systemDatabase.getSerializer()) : null;
30
+ }
31
+ async getResult() {
32
+ const res = await this.systemDatabase.awaitWorkflowResult(this.workflowID);
33
+ if (res?.cancelled) {
34
+ throw new error_1.SolidActionsAwaitedWorkflowCancelledError(this.workflowID);
35
+ }
36
+ return solidactions_executor_1.SolidActionsExecutor.reviveResultOrError(res, this.systemDatabase.getSerializer());
37
+ }
38
+ async getWorkflowInputs() {
39
+ const status = (await this.systemDatabase.getWorkflowStatus(this.workflowUUID));
40
+ return this.systemDatabase.getSerializer().parse(status.input);
41
+ }
42
+ }
43
+ exports.ClientHandle = ClientHandle;
44
+ /**
45
+ * SolidActionsClient is the main entry point for interacting with the SolidActions system.
46
+ */
47
+ class SolidActionsClient {
48
+ serializer;
49
+ logger;
50
+ systemDatabase;
51
+ constructor(systemDatabase, serializer) {
52
+ this.serializer = serializer;
53
+ this.logger = new logs_1.GlobalLogger();
54
+ this.systemDatabase = systemDatabase;
55
+ }
56
+ /**
57
+ * Creates a new instance of the SolidActionsClient.
58
+ * Uses HTTP API to communicate with the backend.
59
+ * @param options - Configuration options
60
+ * @param options.httpConfig - HTTP API configuration - if not provided, reads from environment (SOLIDACTIONS_API_URL, SOLIDACTIONS_API_KEY)
61
+ * @param options.serializer - Custom serializer to use (optional)
62
+ * @returns The SolidActionsClient instance.
63
+ */
64
+ static create({ httpConfig, serializer, } = {}) {
65
+ const logger = new logs_1.GlobalLogger();
66
+ const effectiveSerializer = serializer ?? serialization_1.SolidActionsJSON;
67
+ const config = httpConfig ?? (0, config_1.getHttpConfig)();
68
+ const systemDatabase = new system_database_1.HttpSystemDatabase(config, utils_1.globalParams.executorID, utils_1.globalParams.appVersion, logger, effectiveSerializer);
69
+ return new SolidActionsClient(systemDatabase, effectiveSerializer);
70
+ }
71
+ /**
72
+ * Destroys the underlying database connection.
73
+ * This should be called when the client is no longer needed to clean up resources.
74
+ * @returns A Promise that resolves when database connection is destroyed.
75
+ */
76
+ async destroy() {
77
+ await this.systemDatabase.destroy();
78
+ }
79
+ /**
80
+ * Sends a message to a workflow, identified by destinationID.
81
+ * @param destinationID - The ID of the destination workflow.
82
+ * @param message - The message to send. This can be any serializable object.
83
+ * @param topic - An optional topic to send the message to. If not provided, the default topic will be used.
84
+ * @param idempotencyKey - An optional idempotency key to ensure that the message is only sent once.
85
+ * @returns A Promise that resolves when the message has been sent.
86
+ */
87
+ async send(destinationID, message, topic, idempotencyKey) {
88
+ idempotencyKey ??= (0, node_crypto_1.randomUUID)();
89
+ const internalStatus = {
90
+ workflowUUID: `${destinationID}-${idempotencyKey}`,
91
+ status: workflow_1.StatusString.SUCCESS,
92
+ workflowName: 'temp_workflow-send-client',
93
+ workflowClassName: '',
94
+ workflowConfigName: '',
95
+ authenticatedUser: '',
96
+ output: null,
97
+ error: null,
98
+ assumedRole: '',
99
+ authenticatedRoles: [],
100
+ request: {},
101
+ executorId: '',
102
+ applicationID: utils_1.globalParams.appID,
103
+ createdAt: Date.now(),
104
+ input: this.serializer.stringify([destinationID, message, topic]),
105
+ deduplicationID: undefined,
106
+ priority: 0,
107
+ queuePartitionKey: undefined,
108
+ };
109
+ await this.systemDatabase.initWorkflowStatus(internalStatus, null);
110
+ await this.systemDatabase.send(internalStatus.workflowUUID, 0, destinationID, this.serializer.stringify(message), topic);
111
+ }
112
+ /**
113
+ * Retrieves an event published by workflowID for a given key.
114
+ * @param workflowID - The ID of the workflow that published the event.
115
+ * @param key - The key associated with the event you want to retrieve.
116
+ * @param timeoutSeconds - Optional timeout in seconds for how long to wait for the event to be available.
117
+ * @returns A Promise that resolves with the event payload.
118
+ */
119
+ async getEvent(workflowID, key, timeoutSeconds) {
120
+ return this.serializer.parse(await this.systemDatabase.getEvent(workflowID, key, timeoutSeconds ?? 60));
121
+ }
122
+ /**
123
+ * Retrieves a single workflow by its id.
124
+ * @param workflowID - The ID of the workflow to retrieve.
125
+ * @returns a WorkflowHandle that represents the retrieved workflow.
126
+ */
127
+ retrieveWorkflow(workflowID) {
128
+ return new ClientHandle(this.systemDatabase, workflowID);
129
+ }
130
+ cancelWorkflow(workflowID) {
131
+ return this.systemDatabase.cancelWorkflow(workflowID);
132
+ }
133
+ resumeWorkflow(workflowID) {
134
+ return this.systemDatabase.resumeWorkflow(workflowID);
135
+ }
136
+ forkWorkflow(workflowID, startStep, options) {
137
+ return (0, workflow_management_1.forkWorkflow)(this.systemDatabase, workflowID, startStep, options);
138
+ }
139
+ getWorkflow(workflowID) {
140
+ return (0, workflow_management_1.getWorkflow)(this.systemDatabase, workflowID);
141
+ }
142
+ listWorkflows(input) {
143
+ return (0, workflow_management_1.listWorkflows)(this.systemDatabase, input);
144
+ }
145
+ listQueuedWorkflows(input) {
146
+ return (0, workflow_management_1.listQueuedWorkflows)(this.systemDatabase, input);
147
+ }
148
+ listWorkflowSteps(workflowID) {
149
+ return (0, workflow_management_1.listWorkflowSteps)(this.systemDatabase, workflowID);
150
+ }
151
+ /**
152
+ * Read values from a stream as an async generator.
153
+ * This function reads values from a stream identified by the workflowID and key,
154
+ * yielding each value in order until the stream is closed or the workflow terminates.
155
+ * @param workflowID - The ID of the workflow that wrote to the stream
156
+ * @param key - The stream key to read from
157
+ * @returns An async generator that yields each value in the stream until the stream is closed
158
+ */
159
+ async *readStream(workflowID, key) {
160
+ let offset = 0;
161
+ while (true) {
162
+ try {
163
+ const value = await this.systemDatabase.readStream(workflowID, key, offset);
164
+ if (value === system_database_1.SOLIDACTIONS_STREAM_CLOSED_SENTINEL) {
165
+ break;
166
+ }
167
+ yield value;
168
+ offset += 1;
169
+ }
170
+ catch (error) {
171
+ if (error instanceof Error && error.message.includes('No value found')) {
172
+ // Poll the offset until a value arrives or the workflow terminates
173
+ const status = await this.getWorkflow(workflowID);
174
+ if (!status || !(0, workflow_1.isWorkflowActive)(status.status)) {
175
+ break;
176
+ }
177
+ await (0, utils_1.sleepms)(1000); // 1 second polling interval
178
+ continue;
179
+ }
180
+ throw error;
181
+ }
182
+ }
183
+ }
184
+ }
185
+ exports.SolidActionsClient = SolidActionsClient;
186
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /// <reference types="node" />
2
+ import { SolidActionsExecutor } from '../solidactions-executor';
3
+ import WebSocket from 'ws';
4
+ interface IntervalTimeout {
5
+ interval: NodeJS.Timeout | undefined;
6
+ timeout: NodeJS.Timeout | undefined;
7
+ }
8
+ export declare class Conductor {
9
+ readonly solidActionsExec: SolidActionsExecutor;
10
+ readonly conductorKey: string;
11
+ readonly conductorURL: string;
12
+ url: string;
13
+ websocket: WebSocket | undefined;
14
+ isShuttingDown: boolean;
15
+ isClosed: boolean;
16
+ pingPeriodMs: number;
17
+ pingTimeoutMs: number;
18
+ pingIntervalTimeout: IntervalTimeout | undefined;
19
+ reconnectDelayMs: number;
20
+ reconnectTimeout: NodeJS.Timeout | undefined;
21
+ constructor(solidActionsExec: SolidActionsExecutor, conductorKey: string, conductorURL: string);
22
+ resetWebsocket(currWebsocket?: WebSocket, currPing?: IntervalTimeout): void;
23
+ setPingInterval(currWebsocket: WebSocket, currPing: IntervalTimeout): void;
24
+ dispatchLoop(): void;
25
+ stop(): void;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=conductor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conductor.d.ts","sourceRoot":"","sources":["../../../src/conductor/conductor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,SAAS,MAAM,IAAI,CAAC;AAO3B,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,SAAS;IAYlB,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM;IAb/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,SAAS,GAAG,SAAS,CAAa;IAC7C,cAAc,UAAS;IACvB,QAAQ,UAAS;IACjB,YAAY,SAAS;IACrB,aAAa,SAAS;IACtB,mBAAmB,EAAE,eAAe,GAAG,SAAS,CAAa;IAC7D,gBAAgB,SAAQ;IACxB,gBAAgB,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAa;gBAG9C,gBAAgB,EAAE,oBAAoB,EACtC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM;IAQ/B,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,eAAe;IAoBpE,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe;IAuBnE,YAAY;IAmTZ,IAAI;CAUL"}