relay-flow 0.2.4-alpha → 0.2.6-alpha
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.
- package/README.md +29 -18
- package/cmd/relay-flow/backend_selection_test.go +149 -0
- package/cmd/relay-flow/beads_composition_test.go +3 -3
- package/cmd/relay-flow/main.go +94 -13
- package/cmd/relay-flow/scenario_test.go +19 -2
- package/cmd/relay-flow/serve.go +98 -19
- package/cmd/relay-flow/serve_recovery_test.go +100 -0
- package/cmd/relay-flow/temporal_init.go +170 -0
- package/cmd/relay-flow/temporal_init_test.go +217 -0
- package/cmd/relay-flow/temporal_report_test.go +733 -0
- package/examples/beads-workflow.yaml +3 -0
- package/examples/config-reference.yaml +7 -3
- package/examples/minimal-beads-task-workflow.yaml +2 -1
- package/examples/workflow-reference.yaml +2 -1
- package/go.mod +37 -16
- package/go.sum +129 -61
- package/internal/config/machine.go +33 -1
- package/internal/config/machine_test.go +76 -0
- package/internal/execution/goworkflows/activities.go +19 -0
- package/internal/execution/goworkflows/engine.go +13 -38
- package/internal/execution/goworkflows/engine_test.go +1 -1
- package/internal/execution/goworkflows/node_runtime_test.go +113 -4
- package/internal/execution/goworkflows/projection.go +47 -464
- package/internal/execution/projection/projection.go +867 -0
- package/internal/execution/projection/projection_test.go +347 -0
- package/internal/execution/temporal/activities.go +586 -0
- package/internal/execution/temporal/engine.go +384 -0
- package/internal/execution/temporal/engine_test.go +277 -0
- package/internal/execution/temporal/interpreter.go +736 -0
- package/internal/execution/temporal/operations.go +455 -0
- package/internal/execution/temporal/operations_test.go +101 -0
- package/internal/execution/temporal/recovery.go +194 -0
- package/internal/execution/temporal/recovery_runtime.go +41 -0
- package/internal/execution/temporal/recovery_test.go +102 -0
- package/internal/execution/temporal/snapshot_restart_test.go +72 -0
- package/internal/execution/temporal/spike_test.go +934 -0
- package/internal/execution/temporal/visibility_lag_test.go +415 -0
- package/internal/harness/harness.go +5 -0
- package/internal/harness/opencode/opencode.go +14 -3
- package/internal/harness/opencode/opencode_test.go +1 -1
- package/internal/harness/opencode/repo_setup.go +1 -1
- package/internal/harness/opencode/task_env_test.go +57 -0
- package/internal/harness/pi/pi.go +58 -47
- package/internal/harness/pi/pi_test.go +26 -10
- package/internal/harness/pi/prompt_test.go +30 -1
- package/internal/harness/pi/task_env_test.go +51 -0
- package/internal/harness/pi/validation_test.go +27 -51
- package/internal/repo/service.go +18 -8
- package/internal/runner/herdr/herdr.go +14 -0
- package/internal/runner/herdr/herdr_test.go +20 -0
- package/internal/runner/orca/orca.go +33 -0
- package/internal/runner/orca/orca_test.go +33 -4
- package/internal/runner/runner.go +8 -0
- package/internal/task/beads/agent_env_test.go +52 -0
- package/internal/task/beads/beads.go +87 -7
- package/internal/task/beads/beads_test.go +78 -9
- package/internal/task/beads/repo_composition_test.go +47 -3
- package/internal/task/factory.go +31 -2
- package/internal/task/task.go +10 -0
- package/package.json +1 -1
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
# relay-flow repo register --name payments --path /work/payments \
|
|
5
5
|
# --set beadsDir=/work/payments/.beads
|
|
6
6
|
#
|
|
7
|
+
# Relay-flow derives the reserved repo:payments label from the registered
|
|
8
|
+
# repository name. Parents without exactly one matching repo: label are
|
|
9
|
+
# ignored before workflow filters; wf:<workflow> remains a separate claim.
|
|
7
10
|
# The Beads prefix is optional and is not a workspace/component selector.
|
|
8
11
|
name: beadsStoryFlow
|
|
9
12
|
repos:
|
|
@@ -118,7 +118,11 @@ repos:
|
|
|
118
118
|
#
|
|
119
119
|
# Beads uses the shared taskConfig fields (filters, assignee, transitionTo,
|
|
120
120
|
# templates) but does not accept Jira-only project/component fields. beadsDir
|
|
121
|
-
# is required at repo scope and must not be supplied only at root scope.
|
|
121
|
+
# is required at repo scope and must not be supplied only at root scope. The
|
|
122
|
+
# registered code path is the bd working directory; beadsDir selects the
|
|
123
|
+
# workspace/database. Shared workspaces isolate parents with the derived
|
|
124
|
+
# reserved repo:<lowercase-repo-name> label (the registered name may be at
|
|
125
|
+
# most 250 ASCII characters), not with workflow labels.
|
|
122
126
|
#
|
|
123
127
|
# Pi variant:
|
|
124
128
|
# harnessPlugin: pi
|
|
@@ -132,8 +136,8 @@ repos:
|
|
|
132
136
|
# New feedback was added to the comments section of your mailbox subtask {{mailbox}}. Read it.
|
|
133
137
|
#
|
|
134
138
|
# Pi accepts only initial and feedback harness templates. Pi workflow nodes
|
|
135
|
-
# may use agent: default or a
|
|
136
|
-
# approval is provided by Pi's host UI.
|
|
139
|
+
# may use agent: default or a native project prompt template in
|
|
140
|
+
# .pi/prompts/<agent>.md; HITL approval is provided by Pi's host UI.
|
|
137
141
|
#
|
|
138
142
|
# Herdr variant:
|
|
139
143
|
# runnerPlugin: herdr
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Smallest Beads Task workflow.
|
|
2
2
|
# Register the code repository with a repo-scoped beadsDir before submitting.
|
|
3
|
-
# For Pi, use default or a
|
|
3
|
+
# For Pi, use default or a native project prompt template from
|
|
4
|
+
# .pi/prompts/<agent>.md.
|
|
4
5
|
name: minimalBeadsTaskFlow
|
|
5
6
|
|
|
6
7
|
repos:
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
#
|
|
3
3
|
# This example uses Jira-native values and the OpenCode agent names build and
|
|
4
4
|
# plan. For Beads, use provider-native values: open, task, in_progress, and
|
|
5
|
-
# closed. For Pi, use default or a
|
|
5
|
+
# closed. For Pi, use default or a native project prompt template from
|
|
6
|
+
# .pi/prompts/<agent>.md.
|
|
6
7
|
|
|
7
8
|
name: referenceFlow
|
|
8
9
|
|
package/go.mod
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
module github.com/rajpopat27/relay-flow
|
|
2
2
|
|
|
3
|
-
go 1.
|
|
3
|
+
go 1.26.0
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
require (
|
|
6
6
|
github.com/cschleiden/go-workflows v1.4.2
|
|
7
7
|
github.com/google/renameio/v2 v2.0.1
|
|
8
8
|
github.com/google/uuid v1.6.0
|
|
9
9
|
github.com/yuin/goldmark v1.7.13
|
|
10
|
+
go.temporal.io/api v1.63.4
|
|
11
|
+
go.temporal.io/sdk v1.48.0
|
|
12
|
+
google.golang.org/protobuf v1.36.12
|
|
10
13
|
gopkg.in/yaml.v3 v3.0.1
|
|
14
|
+
modernc.org/sqlite v1.27.0
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
require (
|
|
18
|
+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
19
|
+
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
|
20
|
+
google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5 // indirect
|
|
21
|
+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5 // indirect
|
|
11
22
|
)
|
|
12
23
|
|
|
13
24
|
require (
|
|
@@ -19,7 +30,7 @@ require (
|
|
|
19
30
|
github.com/charmbracelet/bubbles v0.21.1-0.20250623103423-23b8fd6302d7 // indirect
|
|
20
31
|
github.com/charmbracelet/bubbletea v1.3.6 // indirect
|
|
21
32
|
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
|
|
22
|
-
github.com/charmbracelet/huh v1.0.0
|
|
33
|
+
github.com/charmbracelet/huh v1.0.0
|
|
23
34
|
github.com/charmbracelet/lipgloss v1.1.0 // indirect
|
|
24
35
|
github.com/charmbracelet/x/ansi v0.9.3 // indirect
|
|
25
36
|
github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
|
|
@@ -28,38 +39,49 @@ require (
|
|
|
28
39
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
29
40
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
30
41
|
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
|
|
42
|
+
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a // indirect
|
|
31
43
|
github.com/go-errors/errors v1.4.2 // indirect
|
|
32
|
-
github.com/go-logr/logr v1.4.
|
|
44
|
+
github.com/go-logr/logr v1.4.3 // indirect
|
|
33
45
|
github.com/go-logr/stdr v1.2.2 // indirect
|
|
46
|
+
github.com/gogo/protobuf v1.3.2 // indirect
|
|
34
47
|
github.com/golang-migrate/migrate/v4 v4.16.2 // indirect
|
|
48
|
+
github.com/golang/mock v1.6.0 // indirect
|
|
49
|
+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 // indirect
|
|
50
|
+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
|
|
35
51
|
github.com/hashicorp/errwrap v1.1.0 // indirect
|
|
36
52
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
|
37
53
|
github.com/jellydator/ttlcache/v3 v3.0.0 // indirect
|
|
38
54
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
|
39
55
|
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
|
40
|
-
github.com/mattn/go-isatty v0.0.20
|
|
56
|
+
github.com/mattn/go-isatty v0.0.20
|
|
41
57
|
github.com/mattn/go-localereader v0.0.1 // indirect
|
|
42
58
|
github.com/mattn/go-runewidth v0.0.16 // indirect
|
|
43
59
|
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
|
|
44
60
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
|
45
61
|
github.com/muesli/cancelreader v0.2.2 // indirect
|
|
46
62
|
github.com/muesli/termenv v0.16.0 // indirect
|
|
63
|
+
github.com/nexus-rpc/nexus-proto-annotations v0.1.0 // indirect
|
|
64
|
+
github.com/nexus-rpc/sdk-go v0.7.0 // indirect
|
|
47
65
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
48
66
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
49
67
|
github.com/rivo/uniseg v0.4.7 // indirect
|
|
68
|
+
github.com/robfig/cron v1.2.0 // indirect
|
|
50
69
|
github.com/stretchr/objx v0.5.2 // indirect
|
|
51
|
-
github.com/stretchr/testify v1.
|
|
70
|
+
github.com/stretchr/testify v1.11.1 // indirect
|
|
52
71
|
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
|
|
53
|
-
go.opentelemetry.io/otel v1.
|
|
54
|
-
go.opentelemetry.io/otel/metric v1.
|
|
55
|
-
go.opentelemetry.io/otel/sdk v1.
|
|
56
|
-
go.opentelemetry.io/otel/trace v1.
|
|
72
|
+
go.opentelemetry.io/otel v1.43.0 // indirect
|
|
73
|
+
go.opentelemetry.io/otel/metric v1.43.0 // indirect
|
|
74
|
+
go.opentelemetry.io/otel/sdk v1.43.0 // indirect
|
|
75
|
+
go.opentelemetry.io/otel/trace v1.43.0 // indirect
|
|
57
76
|
go.uber.org/atomic v1.11.0 // indirect
|
|
58
|
-
golang.org/x/mod v0.
|
|
59
|
-
golang.org/x/
|
|
60
|
-
golang.org/x/
|
|
61
|
-
golang.org/x/
|
|
62
|
-
golang.org/x/
|
|
77
|
+
golang.org/x/mod v0.37.0 // indirect
|
|
78
|
+
golang.org/x/net v0.56.0 // indirect
|
|
79
|
+
golang.org/x/sync v0.22.0 // indirect
|
|
80
|
+
golang.org/x/sys v0.47.0 // indirect
|
|
81
|
+
golang.org/x/text v0.40.0 // indirect
|
|
82
|
+
golang.org/x/time v0.3.0 // indirect
|
|
83
|
+
golang.org/x/tools v0.47.0 // indirect
|
|
84
|
+
google.golang.org/grpc v1.82.1 // indirect
|
|
63
85
|
lukechampine.com/uint128 v1.2.0 // indirect
|
|
64
86
|
modernc.org/cc/v3 v3.40.0 // indirect
|
|
65
87
|
modernc.org/ccgo/v3 v3.16.13 // indirect
|
|
@@ -67,7 +89,6 @@ require (
|
|
|
67
89
|
modernc.org/mathutil v1.6.0 // indirect
|
|
68
90
|
modernc.org/memory v1.7.2 // indirect
|
|
69
91
|
modernc.org/opt v0.1.3 // indirect
|
|
70
|
-
modernc.org/sqlite v1.27.0 // indirect
|
|
71
92
|
modernc.org/strutil v1.1.3 // indirect
|
|
72
93
|
modernc.org/token v1.0.1 // indirect
|
|
73
94
|
)
|
package/go.sum
CHANGED
|
@@ -1,42 +1,49 @@
|
|
|
1
|
+
github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
|
|
2
|
+
github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
|
|
1
3
|
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
|
2
4
|
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
|
3
|
-
github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
|
|
4
5
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
|
5
6
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
|
|
7
|
+
github.com/aymanbagabas/go-udiff v0.3.1 h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY=
|
|
8
|
+
github.com/aymanbagabas/go-udiff v0.3.1/go.mod h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E=
|
|
6
9
|
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
|
|
7
10
|
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
|
8
11
|
github.com/catppuccin/go v0.3.0 h1:d+0/YicIq+hSTo5oPuRi5kOpqkVA5tAsU6dNhvRu+aY=
|
|
9
12
|
github.com/catppuccin/go v0.3.0/go.mod h1:8IHJuMGaUUjQM82qBrGNBv7LFq6JI3NnQCF6MOlZjpc=
|
|
10
13
|
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
|
|
11
14
|
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
|
12
|
-
github.com/
|
|
13
|
-
github.com/
|
|
15
|
+
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
|
16
|
+
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
|
14
17
|
github.com/charmbracelet/bubbles v0.21.1-0.20250623103423-23b8fd6302d7 h1:JFgG/xnwFfbezlUnFMJy0nusZvytYysV4SCS2cYbvws=
|
|
15
18
|
github.com/charmbracelet/bubbles v0.21.1-0.20250623103423-23b8fd6302d7/go.mod h1:ISC1gtLcVilLOf23wvTfoQuYbW2q0JevFxPfUzZ9Ybw=
|
|
16
|
-
github.com/charmbracelet/bubbletea v0.23.1/go.mod h1:JAfGK/3/pPKHTnAS8JIE2u9f61BjWTQY57RbT25aMXU=
|
|
17
|
-
github.com/charmbracelet/bubbletea v0.27.0 h1:Mznj+vvYuYagD9Pn2mY7fuelGvP0HAXtZYGgRBCbHvU=
|
|
18
|
-
github.com/charmbracelet/bubbletea v0.27.0/go.mod h1:5MdP9XH6MbQkgGhnlxUqCNmBXf9I74KRQ8HIidRxV1Y=
|
|
19
19
|
github.com/charmbracelet/bubbletea v1.3.6 h1:VkHIxPJQeDt0aFJIsVxw8BQdh/F/L2KKZGsK6et5taU=
|
|
20
20
|
github.com/charmbracelet/bubbletea v1.3.6/go.mod h1:oQD9VCRQFF8KplacJLo28/jofOI2ToOfGYeFgBBxHOc=
|
|
21
21
|
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
|
|
22
22
|
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
|
|
23
|
-
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
|
|
24
23
|
github.com/charmbracelet/huh v1.0.0 h1:wOnedH8G4qzJbmhftTqrpppyqHakl/zbbNdXIWJyIxw=
|
|
25
24
|
github.com/charmbracelet/huh v1.0.0/go.mod h1:5YVc+SlZ1IhQALxRPpkGwwEKftN/+OlJlnJYlDRFqN4=
|
|
26
|
-
github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk=
|
|
27
|
-
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
|
|
28
|
-
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
|
|
29
25
|
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
|
|
30
26
|
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
|
|
31
27
|
github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0=
|
|
32
28
|
github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
|
|
33
29
|
github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k=
|
|
34
30
|
github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
|
|
31
|
+
github.com/charmbracelet/x/conpty v0.1.0 h1:4zc8KaIcbiL4mghEON8D72agYtSeIgq8FSThSPQIb+U=
|
|
32
|
+
github.com/charmbracelet/x/conpty v0.1.0/go.mod h1:rMFsDJoDwVmiYM10aD4bH2XiRgwI7NYJtQgl5yskjEQ=
|
|
33
|
+
github.com/charmbracelet/x/errors v0.0.0-20240508181413-e8d8b6e2de86 h1:JSt3B+U9iqk37QUU2Rvb6DSBYRLtWqFqfxf8l5hOZUA=
|
|
34
|
+
github.com/charmbracelet/x/errors v0.0.0-20240508181413-e8d8b6e2de86/go.mod h1:2P0UgXMEa6TsToMSuFqKFQR+fZTO9CNGUNokkPatT/0=
|
|
35
|
+
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ=
|
|
36
|
+
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
|
|
35
37
|
github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 h1:qko3AQ4gK1MTS/de7F5hPGx6/k1u0w4TeYmBFwzYVP4=
|
|
36
38
|
github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0/go.mod h1:pBhA0ybfXv6hDjQUZ7hk1lVxBiUbupdw5R31yPUViVQ=
|
|
37
39
|
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
|
|
38
40
|
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
|
|
39
|
-
github.com/
|
|
41
|
+
github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY=
|
|
42
|
+
github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo=
|
|
43
|
+
github.com/charmbracelet/x/xpty v0.1.2 h1:Pqmu4TEJ8KeA9uSkISKMU3f+C1F6OGBn8ABuGlqCbtI=
|
|
44
|
+
github.com/charmbracelet/x/xpty v0.1.2/go.mod h1:XK2Z0id5rtLWcpeNiMYBccNNBrP2IJnzHI0Lq13Xzq4=
|
|
45
|
+
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
|
46
|
+
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
|
40
47
|
github.com/cschleiden/go-workflows v1.4.2 h1:s7wgx3iKvFmwJVzB7wSuUFqbplcpCUGrn8u1J4/T+2c=
|
|
41
48
|
github.com/cschleiden/go-workflows v1.4.2/go.mod h1:er1QSQQfwyP0+mMfW6ajUNVRjUx/R7mEcAReQhACgCA=
|
|
42
49
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
@@ -45,23 +52,35 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp
|
|
|
45
52
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
|
46
53
|
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
|
|
47
54
|
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
|
|
55
|
+
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a h1:yDWHCSQ40h88yih2JAcL6Ls/kVkSE8GFACTGVnMPruw=
|
|
56
|
+
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a/go.mod h1:7Ga40egUymuWXxAe151lTNnCv97MddSOVsjpPPkityA=
|
|
48
57
|
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
|
|
49
58
|
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
|
50
59
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
|
51
|
-
github.com/go-logr/logr v1.4.
|
|
52
|
-
github.com/go-logr/logr v1.4.
|
|
60
|
+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
|
61
|
+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
|
53
62
|
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
|
54
63
|
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
|
64
|
+
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
|
65
|
+
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
|
55
66
|
github.com/golang-migrate/migrate/v4 v4.16.2 h1:8coYbMKUyInrFk1lfGfRovTLAW7PhWp8qQDT2iKfuoA=
|
|
56
67
|
github.com/golang-migrate/migrate/v4 v4.16.2/go.mod h1:pfcJX4nPHaVdc5nmdCikFBWtm+UBpiZjRNNsyBbp0/o=
|
|
57
|
-
github.com/
|
|
58
|
-
github.com/
|
|
68
|
+
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
|
|
69
|
+
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
|
70
|
+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
|
71
|
+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
|
72
|
+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|
73
|
+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
|
59
74
|
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
|
|
60
75
|
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
|
|
61
76
|
github.com/google/renameio/v2 v2.0.1 h1:HyOM6qd9gF9sf15AvhbptGHUnaLTpEI9akAFFU3VyW0=
|
|
62
77
|
github.com/google/renameio/v2 v2.0.1/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4=
|
|
63
78
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
|
64
79
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
80
|
+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 h1:sGm2vDRFUrQJO/Veii4h4zG2vvqG6uWNkBHSTqXOZk0=
|
|
81
|
+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2/go.mod h1:wd1YpapPLivG6nQgbf7ZkG1hhSOXDhhn4MLTknx2aAc=
|
|
82
|
+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
|
|
83
|
+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
|
|
65
84
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
|
66
85
|
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
|
|
67
86
|
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
|
@@ -71,93 +90,142 @@ github.com/jellydator/ttlcache/v3 v3.0.0 h1:zmFhqrB/4sKiEiJHhtseJsNRE32IMVmJSs4+
|
|
|
71
90
|
github.com/jellydator/ttlcache/v3 v3.0.0/go.mod h1:WwTaEmcXQ3MTjOm4bsZoDFiCu/hMvNWLO1w67RXz6h4=
|
|
72
91
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
|
73
92
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
|
74
|
-
github.com/
|
|
93
|
+
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
|
94
|
+
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
|
95
|
+
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
|
96
|
+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
|
97
|
+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|
98
|
+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
|
75
99
|
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
|
76
100
|
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
|
77
101
|
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
|
|
78
102
|
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
|
79
|
-
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
|
80
|
-
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
|
81
|
-
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
|
82
|
-
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
|
83
103
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
|
84
104
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
|
85
105
|
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
|
|
86
106
|
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
|
|
87
|
-
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
|
88
|
-
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
|
89
|
-
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
|
90
|
-
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
|
91
107
|
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
|
92
108
|
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
|
93
109
|
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
|
|
94
110
|
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
|
95
111
|
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
|
|
96
112
|
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
|
|
97
|
-
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
|
|
98
113
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
|
|
99
114
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
|
|
100
115
|
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
|
|
101
116
|
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
|
|
102
|
-
github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ=
|
|
103
|
-
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
|
|
104
|
-
github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs=
|
|
105
|
-
github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc=
|
|
106
|
-
github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
|
|
107
|
-
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
|
|
108
117
|
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
|
|
109
118
|
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
|
|
119
|
+
github.com/nexus-rpc/nexus-proto-annotations v0.1.0 h1:2fELd+9sqUtNu6Fg//pw8YFsxOvp8vZ8hfP0nHhNI80=
|
|
120
|
+
github.com/nexus-rpc/nexus-proto-annotations v0.1.0/go.mod h1:n3UjF1bPCW8llR8tHvbxJ+27yPWrhpo8w/Yg1IOuY0Y=
|
|
121
|
+
github.com/nexus-rpc/sdk-go v0.7.0 h1:38NrfY5rLnZAiMMs2ZfCKI/CSDzdfJG+27iAgfA8bUI=
|
|
122
|
+
github.com/nexus-rpc/sdk-go v0.7.0/go.mod h1:FHdPfVQwRuJFZFTF0Y2GOAxCrbIBNrcPna9slkGKPYk=
|
|
110
123
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
|
111
124
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
112
125
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
|
113
126
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
|
114
|
-
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
|
115
127
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
|
116
128
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
|
117
129
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
|
118
|
-
github.com/
|
|
130
|
+
github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
|
|
131
|
+
github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
|
|
132
|
+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
|
133
|
+
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
|
119
134
|
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
|
120
135
|
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
|
121
|
-
github.com/stretchr/testify v1.
|
|
122
|
-
github.com/stretchr/testify v1.
|
|
136
|
+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
|
137
|
+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
|
123
138
|
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
|
|
124
139
|
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
|
|
140
|
+
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
|
141
|
+
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
|
142
|
+
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
|
125
143
|
github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA=
|
|
126
144
|
github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
|
|
127
|
-
go.opentelemetry.io/
|
|
128
|
-
go.opentelemetry.io/
|
|
129
|
-
go.opentelemetry.io/otel
|
|
130
|
-
go.opentelemetry.io/otel
|
|
131
|
-
go.opentelemetry.io/otel/
|
|
132
|
-
go.opentelemetry.io/otel/
|
|
133
|
-
go.opentelemetry.io/otel/
|
|
134
|
-
go.opentelemetry.io/otel/
|
|
145
|
+
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
|
146
|
+
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
|
147
|
+
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
|
|
148
|
+
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
|
|
149
|
+
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
|
|
150
|
+
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
|
|
151
|
+
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
|
|
152
|
+
go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
|
|
153
|
+
go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
|
|
154
|
+
go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
|
|
155
|
+
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
|
|
156
|
+
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
|
|
157
|
+
go.temporal.io/api v1.63.4 h1:p4dVIAP3dJop0MfcyH9QSzjU7+V/ttLDhxFhSRUar58=
|
|
158
|
+
go.temporal.io/api v1.63.4/go.mod h1:SrlW2JMwVlDP4nRWSNznUFqnSHd+YeMDS1BkYo63HCQ=
|
|
159
|
+
go.temporal.io/sdk v1.48.0 h1:WDctKDVuh0Z8Nf7euAyqs/EwcPg1JTIIq1Fut8Tq118=
|
|
160
|
+
go.temporal.io/sdk v1.48.0/go.mod h1:SHv3+fLzD0GGZAwf0xNSvu8UmO1nFgG9WBSYoowApIk=
|
|
135
161
|
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
|
136
162
|
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
|
137
163
|
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
|
138
164
|
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
|
139
|
-
golang.org/x/
|
|
140
|
-
golang.org/x/
|
|
141
|
-
golang.org/x/
|
|
142
|
-
golang.org/x/
|
|
143
|
-
golang.org/x/
|
|
144
|
-
golang.org/x/
|
|
145
|
-
golang.org/x/
|
|
165
|
+
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
166
|
+
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
167
|
+
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
168
|
+
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
|
|
169
|
+
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
|
|
170
|
+
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
171
|
+
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
172
|
+
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
173
|
+
golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ=
|
|
174
|
+
golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0=
|
|
175
|
+
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
176
|
+
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
177
|
+
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
178
|
+
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
|
179
|
+
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
|
180
|
+
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
|
|
181
|
+
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
|
|
182
|
+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
183
|
+
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
184
|
+
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
185
|
+
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
186
|
+
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
|
|
187
|
+
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
|
188
|
+
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
189
|
+
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
190
|
+
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
191
|
+
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
192
|
+
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
193
|
+
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
146
194
|
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
147
|
-
golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
148
|
-
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
149
195
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
150
|
-
golang.org/x/sys v0.
|
|
151
|
-
golang.org/x/sys v0.
|
|
152
|
-
golang.org/x/term v0.0.0-
|
|
153
|
-
golang.org/x/text v0.3.
|
|
154
|
-
golang.org/x/text v0.
|
|
155
|
-
golang.org/x/text v0.
|
|
196
|
+
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
|
|
197
|
+
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
|
198
|
+
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
|
199
|
+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
200
|
+
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
201
|
+
golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
|
|
202
|
+
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
|
|
203
|
+
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
|
|
204
|
+
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
|
156
205
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
157
|
-
golang.org/x/tools v0.
|
|
158
|
-
golang.org/x/tools v0.
|
|
159
|
-
|
|
206
|
+
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
207
|
+
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
208
|
+
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
|
209
|
+
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
|
210
|
+
golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q=
|
|
211
|
+
golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA=
|
|
212
|
+
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
213
|
+
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
214
|
+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
215
|
+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
216
|
+
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
|
|
217
|
+
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
|
|
218
|
+
google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5 h1:izFU9hz7aeLI/Mi1J0991ae+xcwRLr7hTqWnB/9aIIU=
|
|
219
|
+
google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5/go.mod h1:3LhxRw4YYkf+ylAfgaY9JlVLFKhokkCV8duhLLe7+t0=
|
|
220
|
+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5 h1:1VUiZAXyC+zmiFYi+WLtBzr68Cj8wOofHjjrA/kkizc=
|
|
221
|
+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5/go.mod h1:DjtHYE8FKJLivXcBEjGwndXfIC23G0VpXiXKqG179uA=
|
|
222
|
+
google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE=
|
|
223
|
+
google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA=
|
|
224
|
+
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
|
|
225
|
+
google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
|
160
226
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
227
|
+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
|
228
|
+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
|
161
229
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
162
230
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
163
231
|
lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
|
|
@@ -4,6 +4,7 @@ import (
|
|
|
4
4
|
"bytes"
|
|
5
5
|
"fmt"
|
|
6
6
|
"os"
|
|
7
|
+
"strings"
|
|
7
8
|
|
|
8
9
|
"gopkg.in/yaml.v3"
|
|
9
10
|
)
|
|
@@ -14,6 +15,9 @@ type Machine struct {
|
|
|
14
15
|
CompletedRunRetentionDays int `yaml:"completedRunRetentionDays,omitempty"`
|
|
15
16
|
KeepTerminalsAlive bool `yaml:"keepTerminalsAlive"`
|
|
16
17
|
KeepSessionsAlive bool `yaml:"keepSessionsAlive"`
|
|
18
|
+
ExecutorPlugin string `yaml:"executorPlugin,omitempty"`
|
|
19
|
+
TemporalAddress string `yaml:"temporalAddress,omitempty"`
|
|
20
|
+
TemporalNamespace string `yaml:"temporalNamespace,omitempty"`
|
|
17
21
|
TaskPlugin string `yaml:"taskPlugin"`
|
|
18
22
|
TaskConfig RawValues `yaml:"taskConfig,omitempty"`
|
|
19
23
|
RunnerPlugin string `yaml:"runnerPlugin"`
|
|
@@ -32,6 +36,8 @@ type Repo struct {
|
|
|
32
36
|
const (
|
|
33
37
|
defaultPollIntervalSeconds = 15
|
|
34
38
|
defaultCompletedRunRetentionDays = 30
|
|
39
|
+
defaultExecutorPlugin = "goworkflows"
|
|
40
|
+
defaultTemporalAddress = "localhost:7233"
|
|
35
41
|
)
|
|
36
42
|
|
|
37
43
|
// LoadMachine loads and validates the machine config at path, applying
|
|
@@ -63,7 +69,7 @@ func LoadMachine(path string) (*Machine, error) {
|
|
|
63
69
|
return nil, fmt.Errorf("machine config %s: completedRunRetentionDays must be positive, got %v", path, v)
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
|
-
for _, key := range []string{"taskConfig", "runnerConfig", "harnessConfig"} {
|
|
72
|
+
for _, key := range []string{"taskConfig", "runnerConfig", "harnessConfig", "executorPlugin", "temporalAddress", "temporalNamespace"} {
|
|
67
73
|
if v, present := raw[key]; present && v == nil {
|
|
68
74
|
return nil, fmt.Errorf("machine config %s: %s: explicit null is not allowed", path, key)
|
|
69
75
|
}
|
|
@@ -90,6 +96,32 @@ func LoadMachine(path string) (*Machine, error) {
|
|
|
90
96
|
if cfg.CompletedRunRetentionDays == 0 {
|
|
91
97
|
cfg.CompletedRunRetentionDays = defaultCompletedRunRetentionDays
|
|
92
98
|
}
|
|
99
|
+
if cfg.ExecutorPlugin == "" {
|
|
100
|
+
if _, present := raw["executorPlugin"]; present {
|
|
101
|
+
return nil, fmt.Errorf("machine config %s: executorPlugin must not be empty", path)
|
|
102
|
+
}
|
|
103
|
+
cfg.ExecutorPlugin = defaultExecutorPlugin
|
|
104
|
+
}
|
|
105
|
+
cfg.TemporalAddress = strings.TrimSpace(cfg.TemporalAddress)
|
|
106
|
+
cfg.TemporalNamespace = strings.TrimSpace(cfg.TemporalNamespace)
|
|
107
|
+
switch cfg.ExecutorPlugin {
|
|
108
|
+
case "goworkflows":
|
|
109
|
+
if cfg.TemporalAddress != "" || cfg.TemporalNamespace != "" {
|
|
110
|
+
return nil, fmt.Errorf("machine config %s: Temporal address/namespace are only valid with executorPlugin temporal", path)
|
|
111
|
+
}
|
|
112
|
+
case "temporal":
|
|
113
|
+
if cfg.TemporalAddress == "" {
|
|
114
|
+
cfg.TemporalAddress = defaultTemporalAddress
|
|
115
|
+
}
|
|
116
|
+
if cfg.TemporalNamespace == "" {
|
|
117
|
+
return nil, fmt.Errorf("machine config %s: temporalNamespace is required for executorPlugin temporal", path)
|
|
118
|
+
}
|
|
119
|
+
if cfg.TemporalNamespace == "default" {
|
|
120
|
+
return nil, fmt.Errorf("machine config %s: temporalNamespace must be a dedicated named namespace, not %q", path, cfg.TemporalNamespace)
|
|
121
|
+
}
|
|
122
|
+
default:
|
|
123
|
+
return nil, fmt.Errorf("machine config %s: unknown executorPlugin %q (want goworkflows or temporal)", path, cfg.ExecutorPlugin)
|
|
124
|
+
}
|
|
93
125
|
if _, ok := raw["keepSessionsAlive"]; !ok {
|
|
94
126
|
cfg.KeepSessionsAlive = true
|
|
95
127
|
}
|
|
@@ -14,6 +14,82 @@ import (
|
|
|
14
14
|
// stores global settings and registered repos" and "Global defaults are
|
|
15
15
|
// deterministic".
|
|
16
16
|
|
|
17
|
+
func TestExecutorConfigDefaultsToGoworkflows(t *testing.T) {
|
|
18
|
+
path := filepath.Join(t.TempDir(), "config.yaml")
|
|
19
|
+
if err := os.WriteFile(path, []byte("taskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n"), 0600); err != nil {
|
|
20
|
+
t.Fatal(err)
|
|
21
|
+
}
|
|
22
|
+
cfg, err := config.LoadMachine(path)
|
|
23
|
+
if err != nil {
|
|
24
|
+
t.Fatal(err)
|
|
25
|
+
}
|
|
26
|
+
if cfg.ExecutorPlugin != "goworkflows" {
|
|
27
|
+
t.Fatalf("ExecutorPlugin = %q, want goworkflows", cfg.ExecutorPlugin)
|
|
28
|
+
}
|
|
29
|
+
if cfg.TemporalAddress != "" || cfg.TemporalNamespace != "" {
|
|
30
|
+
t.Fatalf("legacy embedded config unexpectedly has Temporal identity: %+v", cfg)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
func TestTemporalMachineConfigDefaultsAddressAndRequiresNamespace(t *testing.T) {
|
|
35
|
+
path := filepath.Join(t.TempDir(), "config.yaml")
|
|
36
|
+
valid := "executorPlugin: temporal\ntemporalNamespace: relay-flow-team\ntaskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n"
|
|
37
|
+
if err := os.WriteFile(path, []byte(valid), 0600); err != nil {
|
|
38
|
+
t.Fatal(err)
|
|
39
|
+
}
|
|
40
|
+
cfg, err := config.LoadMachine(path)
|
|
41
|
+
if err != nil {
|
|
42
|
+
t.Fatalf("valid Temporal config rejected: %v", err)
|
|
43
|
+
}
|
|
44
|
+
if cfg.ExecutorPlugin != "temporal" || cfg.TemporalAddress != "localhost:7233" || cfg.TemporalNamespace != "relay-flow-team" {
|
|
45
|
+
t.Fatalf("Temporal config defaults = %+v", cfg)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for name, yaml := range map[string]string{
|
|
49
|
+
"missing namespace": "executorPlugin: temporal\ntaskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n",
|
|
50
|
+
"empty namespace": "executorPlugin: temporal\ntemporalNamespace: ''\ntaskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n",
|
|
51
|
+
"default namespace": "executorPlugin: temporal\ntemporalNamespace: default\ntaskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n",
|
|
52
|
+
} {
|
|
53
|
+
t.Run(name, func(t *testing.T) {
|
|
54
|
+
if err := os.WriteFile(path, []byte(yaml), 0600); err != nil {
|
|
55
|
+
t.Fatal(err)
|
|
56
|
+
}
|
|
57
|
+
if _, err := config.LoadMachine(path); err == nil || !strings.Contains(err.Error(), "temporalNamespace") {
|
|
58
|
+
t.Fatalf("missing namespace error = %v", err)
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
func TestEmbeddedMachineConfigRejectsTemporalIdentityFields(t *testing.T) {
|
|
65
|
+
path := filepath.Join(t.TempDir(), "config.yaml")
|
|
66
|
+
for name, fields := range map[string]string{
|
|
67
|
+
"address": "temporalAddress: remote:7233\n",
|
|
68
|
+
"namespace": "temporalNamespace: relay-flow-team\n",
|
|
69
|
+
} {
|
|
70
|
+
t.Run(name, func(t *testing.T) {
|
|
71
|
+
yaml := "executorPlugin: goworkflows\n" + fields + "taskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n"
|
|
72
|
+
if err := os.WriteFile(path, []byte(yaml), 0600); err != nil {
|
|
73
|
+
t.Fatal(err)
|
|
74
|
+
}
|
|
75
|
+
if _, err := config.LoadMachine(path); err == nil || !strings.Contains(err.Error(), "Temporal") {
|
|
76
|
+
t.Fatalf("embedded Temporal field error = %v", err)
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
func TestMachineConfigRejectsUnknownExecutor(t *testing.T) {
|
|
83
|
+
path := filepath.Join(t.TempDir(), "config.yaml")
|
|
84
|
+
yaml := "executorPlugin: unknown\ntaskPlugin: jira\nrunnerPlugin: orca\nharnessPlugin: opencode\n"
|
|
85
|
+
if err := os.WriteFile(path, []byte(yaml), 0600); err != nil {
|
|
86
|
+
t.Fatal(err)
|
|
87
|
+
}
|
|
88
|
+
if _, err := config.LoadMachine(path); err == nil || !strings.Contains(err.Error(), "executorPlugin") {
|
|
89
|
+
t.Fatalf("unknown executor error = %v", err)
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
17
93
|
func TestLoadMachineDefaults(t *testing.T) {
|
|
18
94
|
dir := t.TempDir()
|
|
19
95
|
path := filepath.Join(dir, "config.yaml")
|