@diff-review-system/drs 4.0.1 → 5.0.0-rc.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 (218) hide show
  1. package/.pi/agents/review/unified-reviewer.md +2 -6
  2. package/.pi/agents/task/okf-wiki-maintainer.md +72 -0
  3. package/.pi/agents/task/review-assistant.md +22 -0
  4. package/.pi/workflows/github-pr-fix-review-issues-stacked.yaml +12 -4
  5. package/.pi/workflows/github-pr-review-post.yaml +29 -20
  6. package/.pi/workflows/github-pr-review.yaml +37 -8
  7. package/.pi/workflows/github-pr-update-agents-md-stacked.yaml +2 -0
  8. package/.pi/workflows/github-pr-visual-explain.yaml +46 -1
  9. package/.pi/workflows/gitlab-mr-fix-review-issues-stacked.yaml +12 -4
  10. package/.pi/workflows/gitlab-mr-review.yaml +20 -8
  11. package/.pi/workflows/gitlab-mr-update-agents-md-stacked.yaml +2 -0
  12. package/.pi/workflows/gitlab-mr-visual-explain.yaml +46 -1
  13. package/.pi/workflows/local-fix-review-issues.yaml +13 -6
  14. package/.pi/workflows/local-review.yaml +7 -1
  15. package/.pi/workflows/local-visual-explain.yaml +46 -1
  16. package/.pi/workflows/release-changelog-finalize.yaml +10 -0
  17. package/.pi/workflows/repository-wiki-check.yaml +40 -0
  18. package/.pi/workflows/repository-wiki-sync.yaml +187 -0
  19. package/.pi/workflows/temporal-control-smoke.yaml +63 -0
  20. package/.wiki-site/.vitepress/config.mts +452 -0
  21. package/.wiki-site/.vitepress/theme/PageLead.vue +122 -0
  22. package/.wiki-site/.vitepress/theme/index.ts +12 -0
  23. package/.wiki-site/.vitepress/theme/style.css +270 -0
  24. package/README.md +77 -4
  25. package/dist/cli/index.js +87 -4
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/init.d.ts +6 -1
  28. package/dist/cli/init.d.ts.map +1 -1
  29. package/dist/cli/init.js +26 -10
  30. package/dist/cli/init.js.map +1 -1
  31. package/dist/cli/run-agent.d.ts +5 -7
  32. package/dist/cli/run-agent.d.ts.map +1 -1
  33. package/dist/cli/run-agent.js +56 -5
  34. package/dist/cli/run-agent.js.map +1 -1
  35. package/dist/cli/wiki.d.ts +3 -0
  36. package/dist/cli/wiki.d.ts.map +1 -0
  37. package/dist/cli/wiki.js +174 -0
  38. package/dist/cli/wiki.js.map +1 -0
  39. package/dist/cli/workflow-executor-selection.d.ts +3 -0
  40. package/dist/cli/workflow-executor-selection.d.ts.map +1 -0
  41. package/dist/cli/workflow-executor-selection.js +15 -0
  42. package/dist/cli/workflow-executor-selection.js.map +1 -0
  43. package/dist/cli/workflow.d.ts +40 -42
  44. package/dist/cli/workflow.d.ts.map +1 -1
  45. package/dist/cli/workflow.js +533 -868
  46. package/dist/cli/workflow.js.map +1 -1
  47. package/dist/github/client.d.ts.map +1 -1
  48. package/dist/github/client.js +2 -2
  49. package/dist/github/client.js.map +1 -1
  50. package/dist/github/platform-adapter.d.ts.map +1 -1
  51. package/dist/github/platform-adapter.js +15 -1
  52. package/dist/github/platform-adapter.js.map +1 -1
  53. package/dist/gitlab/client.d.ts +4 -0
  54. package/dist/gitlab/client.d.ts.map +1 -1
  55. package/dist/gitlab/client.js +17 -1
  56. package/dist/gitlab/client.js.map +1 -1
  57. package/dist/gitlab/platform-adapter.d.ts.map +1 -1
  58. package/dist/gitlab/platform-adapter.js +17 -1
  59. package/dist/gitlab/platform-adapter.js.map +1 -1
  60. package/dist/lib/agent-permissions.d.ts +44 -0
  61. package/dist/lib/agent-permissions.d.ts.map +1 -0
  62. package/dist/lib/agent-permissions.js +358 -0
  63. package/dist/lib/agent-permissions.js.map +1 -0
  64. package/dist/lib/agent-result.d.ts +10 -0
  65. package/dist/lib/agent-result.d.ts.map +1 -0
  66. package/dist/lib/agent-result.js +2 -0
  67. package/dist/lib/agent-result.js.map +1 -0
  68. package/dist/lib/comment-poster.d.ts +1 -1
  69. package/dist/lib/comment-poster.d.ts.map +1 -1
  70. package/dist/lib/comment-poster.js +38 -16
  71. package/dist/lib/comment-poster.js.map +1 -1
  72. package/dist/lib/config.d.ts +27 -1
  73. package/dist/lib/config.d.ts.map +1 -1
  74. package/dist/lib/config.js +17 -0
  75. package/dist/lib/config.js.map +1 -1
  76. package/dist/lib/error-comment-poster.d.ts +1 -1
  77. package/dist/lib/error-comment-poster.d.ts.map +1 -1
  78. package/dist/lib/error-comment-poster.js +15 -7
  79. package/dist/lib/error-comment-poster.js.map +1 -1
  80. package/dist/lib/okf-wiki.d.ts +65 -0
  81. package/dist/lib/okf-wiki.d.ts.map +1 -0
  82. package/dist/lib/okf-wiki.js +647 -0
  83. package/dist/lib/okf-wiki.js.map +1 -0
  84. package/dist/lib/output-paths.d.ts +0 -1
  85. package/dist/lib/output-paths.d.ts.map +1 -1
  86. package/dist/lib/output-paths.js +0 -1
  87. package/dist/lib/output-paths.js.map +1 -1
  88. package/dist/lib/platform-client.d.ts +2 -0
  89. package/dist/lib/platform-client.d.ts.map +1 -1
  90. package/dist/lib/project-setup.d.ts +7 -0
  91. package/dist/lib/project-setup.d.ts.map +1 -0
  92. package/dist/lib/project-setup.js +11 -0
  93. package/dist/lib/project-setup.js.map +1 -0
  94. package/dist/lib/review-artifact-store.d.ts +16 -0
  95. package/dist/lib/review-artifact-store.d.ts.map +1 -0
  96. package/dist/lib/review-artifact-store.js +84 -0
  97. package/dist/lib/review-artifact-store.js.map +1 -0
  98. package/dist/lib/review-artifact.d.ts +11 -1
  99. package/dist/lib/review-artifact.d.ts.map +1 -1
  100. package/dist/lib/review-artifact.js +203 -0
  101. package/dist/lib/review-artifact.js.map +1 -1
  102. package/dist/lib/review-core.d.ts +1 -0
  103. package/dist/lib/review-core.d.ts.map +1 -1
  104. package/dist/lib/review-core.js +11 -14
  105. package/dist/lib/review-core.js.map +1 -1
  106. package/dist/lib/review-orchestrator.d.ts +6 -1
  107. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  108. package/dist/lib/review-orchestrator.js +3 -1
  109. package/dist/lib/review-orchestrator.js.map +1 -1
  110. package/dist/lib/review-parser.d.ts.map +1 -1
  111. package/dist/lib/review-parser.js +15 -12
  112. package/dist/lib/review-parser.js.map +1 -1
  113. package/dist/lib/wiki-delta.d.ts +71 -0
  114. package/dist/lib/wiki-delta.d.ts.map +1 -0
  115. package/dist/lib/wiki-delta.js +524 -0
  116. package/dist/lib/wiki-delta.js.map +1 -0
  117. package/dist/lib/wiki-run-summary.d.ts +45 -0
  118. package/dist/lib/wiki-run-summary.d.ts.map +1 -0
  119. package/dist/lib/wiki-run-summary.js +168 -0
  120. package/dist/lib/wiki-run-summary.js.map +1 -0
  121. package/dist/lib/wiki-search.d.ts +24 -0
  122. package/dist/lib/wiki-search.d.ts.map +1 -0
  123. package/dist/lib/wiki-search.js +200 -0
  124. package/dist/lib/wiki-search.js.map +1 -0
  125. package/dist/lib/wiki-site-graph.d.ts +33 -0
  126. package/dist/lib/wiki-site-graph.d.ts.map +1 -0
  127. package/dist/lib/wiki-site-graph.js +446 -0
  128. package/dist/lib/wiki-site-graph.js.map +1 -0
  129. package/dist/lib/wiki-site-safety.d.ts +6 -0
  130. package/dist/lib/wiki-site-safety.d.ts.map +1 -0
  131. package/dist/lib/wiki-site-safety.js +83 -0
  132. package/dist/lib/wiki-site-safety.js.map +1 -0
  133. package/dist/lib/wiki-site-smoke.d.ts +16 -0
  134. package/dist/lib/wiki-site-smoke.d.ts.map +1 -0
  135. package/dist/lib/wiki-site-smoke.js +270 -0
  136. package/dist/lib/wiki-site-smoke.js.map +1 -0
  137. package/dist/lib/wiki-site.d.ts +26 -0
  138. package/dist/lib/wiki-site.d.ts.map +1 -0
  139. package/dist/lib/wiki-site.js +221 -0
  140. package/dist/lib/wiki-site.js.map +1 -0
  141. package/dist/lib/workflow/artifact-store.d.ts +71 -0
  142. package/dist/lib/workflow/artifact-store.d.ts.map +1 -0
  143. package/dist/lib/workflow/artifact-store.js +121 -0
  144. package/dist/lib/workflow/artifact-store.js.map +1 -0
  145. package/dist/lib/workflow/compiled-plan.d.ts +87 -0
  146. package/dist/lib/workflow/compiled-plan.d.ts.map +1 -0
  147. package/dist/lib/workflow/compiled-plan.js +62 -0
  148. package/dist/lib/workflow/compiled-plan.js.map +1 -0
  149. package/dist/lib/workflow/executor.d.ts +18 -0
  150. package/dist/lib/workflow/executor.d.ts.map +1 -0
  151. package/dist/lib/workflow/executor.js +2 -0
  152. package/dist/lib/workflow/executor.js.map +1 -0
  153. package/dist/lib/workflow/graph.d.ts +30 -0
  154. package/dist/lib/workflow/graph.d.ts.map +1 -0
  155. package/dist/lib/workflow/graph.js +139 -0
  156. package/dist/lib/workflow/graph.js.map +1 -0
  157. package/dist/lib/workflow/input.d.ts +4 -0
  158. package/dist/lib/workflow/input.d.ts.map +1 -0
  159. package/dist/lib/workflow/input.js +4 -0
  160. package/dist/lib/workflow/input.js.map +1 -0
  161. package/dist/lib/workflow/node-executor.d.ts +19 -0
  162. package/dist/lib/workflow/node-executor.d.ts.map +1 -0
  163. package/dist/lib/workflow/node-executor.js +2 -0
  164. package/dist/lib/workflow/node-executor.js.map +1 -0
  165. package/dist/lib/workflow/planning.d.ts +52 -0
  166. package/dist/lib/workflow/planning.d.ts.map +1 -0
  167. package/dist/lib/workflow/planning.js +865 -0
  168. package/dist/lib/workflow/planning.js.map +1 -0
  169. package/dist/lib/workflow/types.d.ts +71 -0
  170. package/dist/lib/workflow/types.d.ts.map +1 -0
  171. package/dist/lib/workflow/types.js +2 -0
  172. package/dist/lib/workflow/types.js.map +1 -0
  173. package/dist/lib/workflow-artifacts.d.ts.map +1 -1
  174. package/dist/lib/workflow-artifacts.js +23 -1
  175. package/dist/lib/workflow-artifacts.js.map +1 -1
  176. package/dist/lib/write-json-output.d.ts.map +1 -1
  177. package/dist/lib/write-json-output.js +3 -8
  178. package/dist/lib/write-json-output.js.map +1 -1
  179. package/dist/pi/sdk.d.ts.map +1 -1
  180. package/dist/pi/sdk.js +276 -19
  181. package/dist/pi/sdk.js.map +1 -1
  182. package/dist/runtime/client.d.ts +3 -0
  183. package/dist/runtime/client.d.ts.map +1 -1
  184. package/dist/runtime/client.js +4 -0
  185. package/dist/runtime/client.js.map +1 -1
  186. package/dist/temporal/activities.d.ts +26 -0
  187. package/dist/temporal/activities.d.ts.map +1 -0
  188. package/dist/temporal/activities.js +219 -0
  189. package/dist/temporal/activities.js.map +1 -0
  190. package/dist/temporal/config.d.ts +4 -0
  191. package/dist/temporal/config.d.ts.map +1 -0
  192. package/dist/temporal/config.js +36 -0
  193. package/dist/temporal/config.js.map +1 -0
  194. package/dist/temporal/executor.d.ts +7 -0
  195. package/dist/temporal/executor.d.ts.map +1 -0
  196. package/dist/temporal/executor.js +240 -0
  197. package/dist/temporal/executor.js.map +1 -0
  198. package/dist/temporal/retry-policy.d.ts +28 -0
  199. package/dist/temporal/retry-policy.d.ts.map +1 -0
  200. package/dist/temporal/retry-policy.js +61 -0
  201. package/dist/temporal/retry-policy.js.map +1 -0
  202. package/dist/temporal/types.d.ts +86 -0
  203. package/dist/temporal/types.d.ts.map +1 -0
  204. package/dist/temporal/types.js +2 -0
  205. package/dist/temporal/types.js.map +1 -0
  206. package/dist/temporal/worker.d.ts +3 -0
  207. package/dist/temporal/worker.d.ts.map +1 -0
  208. package/dist/temporal/worker.js +18 -0
  209. package/dist/temporal/worker.js.map +1 -0
  210. package/dist/temporal/workflow-id.d.ts +27 -0
  211. package/dist/temporal/workflow-id.d.ts.map +1 -0
  212. package/dist/temporal/workflow-id.js +53 -0
  213. package/dist/temporal/workflow-id.js.map +1 -0
  214. package/dist/temporal/workflows.d.ts +6 -0
  215. package/dist/temporal/workflows.d.ts.map +1 -0
  216. package/dist/temporal/workflows.js +355 -0
  217. package/dist/temporal/workflows.js.map +1 -0
  218. package/package.json +24 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/temporal/activities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DRSConfig } from '../lib/config.js';
2
+ import type { TemporalConfig } from './types.js';
3
+ export declare function resolveTemporalConfig(config: DRSConfig): TemporalConfig;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/temporal/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAajD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CA4BvE"}
@@ -0,0 +1,36 @@
1
+ const DEFAULT_TEMPORAL_CONFIG = {
2
+ address: 'localhost:7233',
3
+ namespace: 'default',
4
+ taskQueue: 'drs-workflows',
5
+ workflowIdPrefix: 'drs',
6
+ workspace: {
7
+ mode: 'local',
8
+ root: '/tmp/drs-temporal-workspaces',
9
+ },
10
+ };
11
+ export function resolveTemporalConfig(config) {
12
+ const configured = config.temporal ?? {};
13
+ const configuredWorkspace = configured.workspace ?? {};
14
+ const envMode = process.env.DRS_TEMPORAL_WORKSPACE_MODE;
15
+ const mode = envMode === 'managed' || envMode === 'local' ? envMode : configuredWorkspace.mode;
16
+ return {
17
+ ...DEFAULT_TEMPORAL_CONFIG,
18
+ ...configured,
19
+ address: process.env.DRS_TEMPORAL_ADDRESS ?? configured.address ?? DEFAULT_TEMPORAL_CONFIG.address,
20
+ namespace: process.env.DRS_TEMPORAL_NAMESPACE ??
21
+ configured.namespace ??
22
+ DEFAULT_TEMPORAL_CONFIG.namespace,
23
+ taskQueue: process.env.DRS_TEMPORAL_TASK_QUEUE ??
24
+ configured.taskQueue ??
25
+ DEFAULT_TEMPORAL_CONFIG.taskQueue,
26
+ workspace: {
27
+ ...DEFAULT_TEMPORAL_CONFIG.workspace,
28
+ ...configuredWorkspace,
29
+ ...(mode ? { mode } : {}),
30
+ ...(process.env.DRS_TEMPORAL_WORKSPACE_ROOT
31
+ ? { root: process.env.DRS_TEMPORAL_WORKSPACE_ROOT }
32
+ : {}),
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/temporal/config.ts"],"names":[],"mappings":"AAGA,MAAM,uBAAuB,GAAmB;IAC9C,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,eAAe;IAC1B,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE;QACT,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,8BAA8B;KACrC;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAE/F,OAAO;QACL,GAAG,uBAAuB;QAC1B,GAAG,UAAU;QACb,OAAO,EACL,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,UAAU,CAAC,OAAO,IAAI,uBAAuB,CAAC,OAAO;QAC3F,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,sBAAsB;YAClC,UAAU,CAAC,SAAS;YACpB,uBAAuB,CAAC,SAAS;QACnC,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,uBAAuB;YACnC,UAAU,CAAC,SAAS;YACpB,uBAAuB,CAAC,SAAS;QACnC,SAAS,EAAE;YACT,GAAG,uBAAuB,CAAC,SAAS;YACpC,GAAG,mBAAmB;YACtB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B;gBACzC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DRSConfig } from '../lib/config.js';
2
+ import type { WorkflowExecutor } from '../lib/workflow/executor.js';
3
+ import type { WorkflowRunOptions, WorkflowRunResult } from '../lib/workflow/types.js';
4
+ export declare class TemporalWorkflowExecutor implements WorkflowExecutor {
5
+ run(config: DRSConfig, workflowName: string, options?: WorkflowRunOptions): Promise<WorkflowRunResult>;
6
+ }
7
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/temporal/executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAmLtF,qBAAa,wBAAyB,YAAW,gBAAgB;IACzD,GAAG,CACP,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;CAgI9B"}
@@ -0,0 +1,240 @@
1
+ import { mkdir, readFile, writeFile } from 'fs/promises';
2
+ import { dirname } from 'path';
3
+ import { Connection, Client, WorkflowExecutionAlreadyStartedError } from '@temporalio/client';
4
+ import chalk from 'chalk';
5
+ import simpleGit from 'simple-git';
6
+ import { getLogger } from '../lib/logger.js';
7
+ import { resolveWithinWorkingDir } from '../lib/path-utils.js';
8
+ import { saveWorkflowArtifact } from '../lib/workflow-artifacts.js';
9
+ import { compileWorkflowPlan } from '../lib/workflow/compiled-plan.js';
10
+ import { normalizeWorkflowBooleanLike } from '../lib/workflow/planning.js';
11
+ import { formatWikiRunSummaryHuman, getWikiRunSummary } from '../lib/wiki-run-summary.js';
12
+ import { resolveTemporalConfig } from './config.js';
13
+ import { deriveTemporalWorkflowId } from './workflow-id.js';
14
+ async function writeWorkflowFile(workingDir, outputPath, content) {
15
+ const resolved = resolveWithinWorkingDir(workingDir, outputPath, 'write');
16
+ await mkdir(dirname(resolved), { recursive: true });
17
+ await writeFile(resolved, content, 'utf-8');
18
+ }
19
+ function formatWorkflowJson(result) {
20
+ return JSON.stringify(result, null, 2);
21
+ }
22
+ async function saveTemporalWorkflowTrace(workingDir, workflowName, startedAt, result, temporal, handle, options) {
23
+ const saved = await saveWorkflowArtifact(workingDir, {
24
+ kind: 'trace',
25
+ scope: {
26
+ platform: 'temporal',
27
+ projectId: workflowName,
28
+ subject: 'workflow',
29
+ },
30
+ payload: {
31
+ schemaVersion: 1,
32
+ executor: 'temporal',
33
+ workflowName,
34
+ temporal: {
35
+ workflowId: handle.workflowId,
36
+ runId: handle.firstExecutionRunId,
37
+ namespace: temporal.namespace,
38
+ taskQueue: temporal.taskQueue,
39
+ },
40
+ startedAt,
41
+ completedAt: new Date().toISOString(),
42
+ inputs: result.inputs,
43
+ nodes: result.nodes,
44
+ artifacts: result.artifacts,
45
+ loop: result.loop,
46
+ output: result.output,
47
+ },
48
+ });
49
+ if (!options.jsonOutput) {
50
+ console.log(chalk.green(`\n✓ Temporal trace saved to ${saved.latestPath}`));
51
+ }
52
+ }
53
+ function validateResolvedWorkflowInput(key, input, value) {
54
+ if (input.required === true && value.trim() === '') {
55
+ throw new Error(`Workflow input "${key}" is required.`);
56
+ }
57
+ if (input.type === 'boolean') {
58
+ if (normalizeWorkflowBooleanLike(value) === undefined) {
59
+ throw new Error(`Workflow input "${key}" must be a boolean value.`);
60
+ }
61
+ return;
62
+ }
63
+ if (input.type === 'number') {
64
+ if (value.trim() === '' || !Number.isFinite(Number(value))) {
65
+ throw new Error(`Workflow input "${key}" must be a number.`);
66
+ }
67
+ return;
68
+ }
69
+ if (input.type === 'enum') {
70
+ const allowedValues = input.values?.map(String) ?? [];
71
+ if (allowedValues.length === 0) {
72
+ throw new Error(`Workflow input "${key}" with type enum must define values.`);
73
+ }
74
+ if (!allowedValues.includes(value)) {
75
+ throw new Error(`Workflow input "${key}" must be one of: ${allowedValues.join(', ')}.`);
76
+ }
77
+ return;
78
+ }
79
+ if (input.type !== 'string') {
80
+ throw new Error(`Workflow input "${key}" has unsupported type "${input.type}".`);
81
+ }
82
+ }
83
+ async function resolveManagedWorkspaceInput(workingDir, temporal) {
84
+ if (temporal.workspace.mode !== 'managed') {
85
+ return undefined;
86
+ }
87
+ const git = simpleGit(workingDir);
88
+ const configuredRepoUrl = process.env.DRS_TEMPORAL_WORKSPACE_REPO_URL;
89
+ const repoUrl = configuredRepoUrl ?? String(await git.remote(['get-url', 'origin']));
90
+ const ref = process.env.DRS_TEMPORAL_WORKSPACE_REF ?? (await git.revparse(['HEAD']));
91
+ return {
92
+ mode: 'managed',
93
+ root: temporal.workspace.root,
94
+ repoUrl: repoUrl.trim(),
95
+ ref: ref.trim(),
96
+ };
97
+ }
98
+ async function resolveCompiledPlanInputs(inputs, options, workingDir) {
99
+ const values = {};
100
+ for (const [key, input] of Object.entries(inputs)) {
101
+ const hasValue = input.value !== undefined || input.default !== undefined;
102
+ const hasFile = input.file !== undefined;
103
+ if (hasValue && hasFile) {
104
+ throw new Error(`Workflow input "${key}" cannot define both value/default and file.`);
105
+ }
106
+ if (hasValue) {
107
+ values[key] = String(input.value ?? input.default ?? '');
108
+ }
109
+ else if (hasFile) {
110
+ const inputPath = resolveWithinWorkingDir(workingDir, input.file ?? '', 'read');
111
+ values[key] = await readFile(inputPath, 'utf-8');
112
+ }
113
+ else {
114
+ values[key] = '';
115
+ }
116
+ }
117
+ for (const [key, value] of Object.entries(options.inputs ?? {})) {
118
+ values[key] = value;
119
+ }
120
+ for (const [key, filePath] of Object.entries(options.inputFiles ?? {})) {
121
+ const resolvedPath = resolveWithinWorkingDir(workingDir, filePath, 'read');
122
+ values[key] = await readFile(resolvedPath, 'utf-8');
123
+ }
124
+ for (const [key, input] of Object.entries(inputs)) {
125
+ validateResolvedWorkflowInput(key, input, values[key] ?? '');
126
+ }
127
+ return values;
128
+ }
129
+ export class TemporalWorkflowExecutor {
130
+ async run(config, workflowName, options = {}) {
131
+ const workingDir = options.workingDir ?? process.cwd();
132
+ const temporal = resolveTemporalConfig(config);
133
+ const plan = compileWorkflowPlan(config, workflowName, { workingDir });
134
+ const inputs = await resolveCompiledPlanInputs(plan.inputs, options, workingDir);
135
+ const logger = getLogger();
136
+ const startedAt = new Date().toISOString();
137
+ const connection = await Connection.connect({ address: temporal.address });
138
+ try {
139
+ const client = new Client({ connection, namespace: temporal.namespace });
140
+ const workflowId = options.workflowId ??
141
+ deriveTemporalWorkflowId(temporal.workflowIdPrefix, workflowName, inputs);
142
+ const workspace = await resolveManagedWorkspaceInput(workingDir, temporal);
143
+ const workflowInput = {
144
+ plan,
145
+ inputs,
146
+ workingDir,
147
+ options: {
148
+ debug: options.debug,
149
+ thinkingLevel: options.thinkingLevel,
150
+ },
151
+ ...(workspace ? { workspace } : {}),
152
+ };
153
+ let handle;
154
+ let isDuplicate = false;
155
+ try {
156
+ handle = await client.workflow.start('drsWorkflow', {
157
+ taskQueue: temporal.taskQueue,
158
+ workflowId,
159
+ args: [workflowInput],
160
+ });
161
+ }
162
+ catch (error) {
163
+ if (error instanceof WorkflowExecutionAlreadyStartedError) {
164
+ isDuplicate = true;
165
+ handle = client.workflow.getHandle(workflowId);
166
+ logger.debug('Temporal workflow already running — joining existing run', {
167
+ component: 'temporal-executor',
168
+ workflow: workflowName,
169
+ workflowId,
170
+ namespace: temporal.namespace,
171
+ taskQueue: temporal.taskQueue,
172
+ });
173
+ }
174
+ else {
175
+ throw error;
176
+ }
177
+ }
178
+ const runId = handle.firstExecutionRunId ?? '';
179
+ const logContext = {
180
+ component: 'temporal-executor',
181
+ workflow: workflowName,
182
+ workflowId: handle.workflowId,
183
+ runId,
184
+ namespace: temporal.namespace,
185
+ taskQueue: temporal.taskQueue,
186
+ ...(isDuplicate ? { duplicate: true } : {}),
187
+ };
188
+ logger.debug(isDuplicate ? 'Temporal workflow already running' : 'Temporal workflow started', logContext);
189
+ if (options.wait === false) {
190
+ const result = {
191
+ timestamp: new Date().toISOString(),
192
+ workflow: workflowName,
193
+ inputs,
194
+ nodes: {},
195
+ artifacts: {},
196
+ loop: {},
197
+ output: {
198
+ workflowId: handle.workflowId,
199
+ runId,
200
+ },
201
+ };
202
+ if (options.jsonOutput) {
203
+ console.log(formatWorkflowJson(result));
204
+ }
205
+ else {
206
+ console.log(`Temporal workflow ${isDuplicate ? 'already running' : 'started'}: ${handle.workflowId}${runId ? ` (run ${runId})` : ''}`);
207
+ }
208
+ return result;
209
+ }
210
+ const result = await handle.result();
211
+ logger.debug('Temporal workflow completed', logContext);
212
+ if (options.trace) {
213
+ await saveTemporalWorkflowTrace(workingDir, workflowName, startedAt, result, temporal, { workflowId: handle.workflowId, firstExecutionRunId: runId }, options);
214
+ }
215
+ if (options.outputPath) {
216
+ await writeWorkflowFile(workingDir, options.outputPath, formatWorkflowJson(result));
217
+ if (!options.jsonOutput) {
218
+ console.log(chalk.green(`\n✓ Workflow output saved to ${options.outputPath}`));
219
+ }
220
+ }
221
+ if (options.jsonOutput) {
222
+ console.log(formatWorkflowJson(result));
223
+ }
224
+ else {
225
+ const wikiSummary = getWikiRunSummary(result.output);
226
+ if (wikiSummary) {
227
+ console.log(`\n${formatWikiRunSummaryHuman(wikiSummary)}`);
228
+ }
229
+ else if (typeof result.output === 'string' && result.output.trim()) {
230
+ console.log(`\n${result.output}`);
231
+ }
232
+ }
233
+ return result;
234
+ }
235
+ finally {
236
+ await connection.close();
237
+ }
238
+ }
239
+ }
240
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/temporal/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { WorkflowNodeConfig } from '../lib/config.js';
2
+ import type { RetryPolicy } from '@temporalio/common';
3
+ export type TemporalNodeRetryMode = 'retryable' | 'no-retry';
4
+ export declare const TEMPORAL_NO_RETRY_ACTIONS: Set<NonNullable<"write" | "git-diff" | "git-add" | "git-branch" | "git-commit" | "git-push" | "has-diff" | "stack-guard" | "review-threshold" | "save-artifact" | "load-artifact" | "artifact-exists" | "create-review-artifact" | "review-artifact-status" | "review-artifact-add-finding" | "review-artifact-update-findings" | "verify-fix" | "review-artifact-promote-finding" | "review-artifact-resolve-finding" | "create-change-request" | "create-pr" | "create-mr" | "change-source" | "review" | "review-context" | "describe" | "code-quality-report" | "plan-wiki-update" | "sync-okf-indexes" | "validate-okf-wiki" | "summarize-wiki-run" | "record-wiki-state" | "check-wiki-state" | "check-wiki-clean" | "post-comment" | "post-review-comments" | "post-fix-status" | undefined>>;
5
+ /**
6
+ * Retry policy for retryable DRS workflow activities (read-only actions and
7
+ * non-writing agent nodes).
8
+ *
9
+ * Temporal's default activity retry is effectively unlimited
10
+ * (`maximumAttempts: Infinity`) with exponential backoff. Without an explicit
11
+ * cap, a transiently failing activity (model 5xx, rate limit, network blip)
12
+ * can retry for a very long time. This policy bounds retries so a persistently
13
+ * failing activity fails the workflow in minutes rather than hours or days.
14
+ *
15
+ * - `maximumAttempts: 5` — enough to ride out transient failures, bounded.
16
+ * - `initialInterval: 1s` with `backoffCoefficient: 2` — standard exponential
17
+ * backoff (1s, 2s, 4s, 8s between attempts).
18
+ * - `maximumInterval: 1 minute` — caps backoff growth so later retries don't
19
+ * stall for too long.
20
+ * - `nonRetryableErrorTypes: ['NonRetryableProviderFailure']` —
21
+ * defense-in-depth: provider quota/auth failures are already converted to
22
+ * `ApplicationFailure.nonRetryable` in the activity, but listing the type
23
+ * here ensures Temporal never retries them even if the non-retryable flag
24
+ * is lost in serialization.
25
+ */
26
+ export declare const TEMPORAL_RETRYABLE_ACTIVITY_POLICY: RetryPolicy;
27
+ export declare function getTemporalNodeRetryMode(node: WorkflowNodeConfig): TemporalNodeRetryMode;
28
+ //# sourceMappingURL=retry-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-policy.d.ts","sourceRoot":"","sources":["../../src/temporal/retry-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,eAAO,MAAM,yBAAyB,swBAmBpC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kCAAkC,EAAE,WAMhD,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,CAexF"}
@@ -0,0 +1,61 @@
1
+ export const TEMPORAL_NO_RETRY_ACTIONS = new Set([
2
+ 'write',
3
+ 'sync-okf-indexes',
4
+ 'record-wiki-state',
5
+ 'git-add',
6
+ 'git-branch',
7
+ 'git-commit',
8
+ 'git-push',
9
+ 'save-artifact',
10
+ 'review-artifact-add-finding',
11
+ 'review-artifact-update-findings',
12
+ 'review-artifact-promote-finding',
13
+ 'review-artifact-resolve-finding',
14
+ 'create-change-request',
15
+ 'create-pr',
16
+ 'create-mr',
17
+ 'post-comment',
18
+ 'post-review-comments',
19
+ 'post-fix-status',
20
+ ]);
21
+ /**
22
+ * Retry policy for retryable DRS workflow activities (read-only actions and
23
+ * non-writing agent nodes).
24
+ *
25
+ * Temporal's default activity retry is effectively unlimited
26
+ * (`maximumAttempts: Infinity`) with exponential backoff. Without an explicit
27
+ * cap, a transiently failing activity (model 5xx, rate limit, network blip)
28
+ * can retry for a very long time. This policy bounds retries so a persistently
29
+ * failing activity fails the workflow in minutes rather than hours or days.
30
+ *
31
+ * - `maximumAttempts: 5` — enough to ride out transient failures, bounded.
32
+ * - `initialInterval: 1s` with `backoffCoefficient: 2` — standard exponential
33
+ * backoff (1s, 2s, 4s, 8s between attempts).
34
+ * - `maximumInterval: 1 minute` — caps backoff growth so later retries don't
35
+ * stall for too long.
36
+ * - `nonRetryableErrorTypes: ['NonRetryableProviderFailure']` —
37
+ * defense-in-depth: provider quota/auth failures are already converted to
38
+ * `ApplicationFailure.nonRetryable` in the activity, but listing the type
39
+ * here ensures Temporal never retries them even if the non-retryable flag
40
+ * is lost in serialization.
41
+ */
42
+ export const TEMPORAL_RETRYABLE_ACTIVITY_POLICY = {
43
+ maximumAttempts: 5,
44
+ initialInterval: '1 second',
45
+ backoffCoefficient: 2,
46
+ maximumInterval: '1 minute',
47
+ nonRetryableErrorTypes: ['NonRetryableProviderFailure'],
48
+ };
49
+ export function getTemporalNodeRetryMode(node) {
50
+ if (node.action && TEMPORAL_NO_RETRY_ACTIONS.has(node.action)) {
51
+ return 'no-retry';
52
+ }
53
+ if ((node.agent || node.agentsFrom) &&
54
+ (node.writes ||
55
+ node.permissions?.filesystem?.write !== undefined ||
56
+ node.permissions?.filesystem?.delete !== undefined)) {
57
+ return 'no-retry';
58
+ }
59
+ return 'retryable';
60
+ }
61
+ //# sourceMappingURL=retry-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-policy.js","sourceRoot":"","sources":["../../src/temporal/retry-policy.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAA4C;IAC1F,OAAO;IACP,kBAAkB;IAClB,mBAAmB;IACnB,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,eAAe;IACf,6BAA6B;IAC7B,iCAAiC;IACjC,iCAAiC;IACjC,iCAAiC;IACjC,uBAAuB;IACvB,WAAW;IACX,WAAW;IACX,cAAc;IACd,sBAAsB;IACtB,iBAAiB;CAClB,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAgB;IAC7D,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,UAAU;IAC3B,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU;IAC3B,sBAAsB,EAAE,CAAC,6BAA6B,CAAC;CACxD,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,IAAwB;IAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IACE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC;QAC/B,CAAC,IAAI,CAAC,MAAM;YACV,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,KAAK,SAAS;YACjD,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC,EACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,86 @@
1
+ import type { WorkflowNodeConfig } from '../lib/config.js';
2
+ import type { CompiledWorkflowPlan } from '../lib/workflow/compiled-plan.js';
3
+ import type { WorkflowRunOptions, WorkflowRunResult, WorkflowTemplateContext, WorkflowActivityIdempotencyContext } from '../lib/workflow/types.js';
4
+ import type { TemporalArtifactRef } from '../lib/workflow/artifact-store.js';
5
+ export interface TemporalConfig {
6
+ address: string;
7
+ namespace: string;
8
+ taskQueue: string;
9
+ workflowIdPrefix: string;
10
+ workspace: TemporalWorkspaceConfig;
11
+ }
12
+ export interface TemporalWorkspaceConfig {
13
+ mode: 'local' | 'managed';
14
+ root: string;
15
+ }
16
+ export interface TemporalManagedWorkspaceInput {
17
+ mode: 'managed';
18
+ root: string;
19
+ repoUrl: string;
20
+ ref: string;
21
+ }
22
+ export interface TemporalWorkflowInput {
23
+ plan: CompiledWorkflowPlan;
24
+ inputs: Record<string, string>;
25
+ workingDir: string;
26
+ options?: Pick<WorkflowRunOptions, 'debug' | 'thinkingLevel'>;
27
+ workspace?: TemporalManagedWorkspaceInput;
28
+ }
29
+ export interface PrepareWorkspaceActivityInput {
30
+ workspace: TemporalManagedWorkspaceInput;
31
+ workflowId: string;
32
+ runId: string;
33
+ }
34
+ export interface PrepareWorkspaceActivityResult {
35
+ workingDir: string;
36
+ }
37
+ export interface ResolveArtifactRefsActivityInput {
38
+ workingDir: string;
39
+ refs: Record<string, TemporalArtifactRef>;
40
+ }
41
+ export type ActivityIdempotencyContext = WorkflowActivityIdempotencyContext;
42
+ export type ScheduledActivityIdempotencyContext = Omit<ActivityIdempotencyContext, 'attempt'> & {
43
+ attempt?: number;
44
+ };
45
+ export interface RunWorkflowNodeActivityInput {
46
+ workingDir: string;
47
+ nodeId: string;
48
+ node: WorkflowNodeConfig;
49
+ context: WorkflowTemplateContext;
50
+ options?: Pick<WorkflowRunOptions, 'debug' | 'thinkingLevel'>;
51
+ idempotencyContext?: ScheduledActivityIdempotencyContext;
52
+ /**
53
+ * When true, the activity constructs a LocalWorkflowArtifactStore for the
54
+ * worker's working directory and offloads large node outputs as refs so
55
+ * they stay out of Temporal event history.
56
+ */
57
+ offloadArtifacts?: boolean;
58
+ /**
59
+ * Inline size threshold in bytes. Values larger than this become refs when
60
+ * offloadArtifacts is true. Defaults to 64KB.
61
+ */
62
+ artifactInlineMaxBytes?: number;
63
+ }
64
+ export type TemporalWorkflowNodeQueryStatus = 'pending' | 'running' | 'success' | 'skipped';
65
+ export interface TemporalWorkflowNodeStatusSnapshot {
66
+ id: string;
67
+ status: TemporalWorkflowNodeQueryStatus;
68
+ action?: string;
69
+ agent?: string;
70
+ control?: string;
71
+ }
72
+ export interface TemporalWorkflowStatusQueryResult {
73
+ workflow: string;
74
+ workflowId: string;
75
+ runId: string;
76
+ cancelled: boolean;
77
+ nodes: Record<string, TemporalWorkflowNodeStatusSnapshot>;
78
+ runningNodeIds: string[];
79
+ completedNodeIds: string[];
80
+ }
81
+ export interface TemporalWorkflowArtifactsQueryResult {
82
+ artifactKeys: string[];
83
+ artifactRefs: Record<string, TemporalArtifactRef>;
84
+ }
85
+ export type TemporalWorkflowResult = WorkflowRunResult;
86
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/temporal/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/temporal/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { DRSConfig } from '../lib/config.js';
2
+ export declare function runTemporalWorker(config: DRSConfig): Promise<void>;
3
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/temporal/worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE"}
@@ -0,0 +1,18 @@
1
+ import { fileURLToPath } from 'url';
2
+ import { Worker, NativeConnection } from '@temporalio/worker';
3
+ import { resolveTemporalConfig } from './config.js';
4
+ import * as activities from './activities.js';
5
+ export async function runTemporalWorker(config) {
6
+ const temporal = resolveTemporalConfig(config);
7
+ const workflowModule = import.meta.url.endsWith('.ts') ? './workflows.ts' : './workflows.js';
8
+ const connection = await NativeConnection.connect({ address: temporal.address });
9
+ const worker = await Worker.create({
10
+ connection,
11
+ namespace: temporal.namespace,
12
+ taskQueue: temporal.taskQueue,
13
+ workflowsPath: fileURLToPath(new URL(workflowModule, import.meta.url)),
14
+ activities,
15
+ });
16
+ await worker.run();
17
+ }
18
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/temporal/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAiB;IACvD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC7F,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACjC,UAAU;QACV,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,aAAa,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,UAAU;KACX,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Derive a deterministic Temporal workflow ID from the workflow name and
3
+ * resolved inputs.
4
+ *
5
+ * DRS workflows are triggered by external events whose identity is stable
6
+ * across re-deliveries (a webhook retried, a scheduler replay, a service
7
+ * restart). A deterministic workflow ID lets Temporal's built-in workflow-ID
8
+ * uniqueness deduplicate repeated triggers instead of scheduling duplicate
9
+ * work.
10
+ *
11
+ * Recognized trigger patterns (based on the standard DRS workflow inputs):
12
+ *
13
+ * - **GitHub PR** — inputs contain `owner`, `repo`, and `pr`:
14
+ * `{prefix}-{workflowName}-gh-{owner}-{repo}-pr-{pr}`
15
+ * - **GitLab MR** — inputs contain `project` and `mr`:
16
+ * `{prefix}-{workflowName}-gl-{project}-mr-{mr}`
17
+ *
18
+ * Workflows without a recognized external trigger identity (e.g. `local-review`,
19
+ * one-off CLI runs, smoke tests) fall back to a random UUID suffix so each
20
+ * dispatch is a fresh run — exactly the behavior expected for unique work.
21
+ *
22
+ * Callers that need full control (a service layer with a custom trigger
23
+ * identity) can bypass this helper by passing an explicit `workflowId` in
24
+ * {@link WorkflowRunOptions}.
25
+ */
26
+ export declare function deriveTemporalWorkflowId(prefix: string, workflowName: string, inputs: Record<string, string>): string;
27
+ //# sourceMappingURL=workflow-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-id.d.ts","sourceRoot":"","sources":["../../src/temporal/workflow-id.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAoBR"}