stoobly-agent 1.9.9__py3-none-any.whl → 1.9.10__py3-none-any.whl

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.
stoobly_agent/__init__.py CHANGED
@@ -1,2 +1,2 @@
1
1
  COMMAND = 'stoobly-agent'
2
- VERSION = '1.9.9'
2
+ VERSION = '1.9.10'
@@ -1,3 +1,4 @@
1
+ import hashlib
1
2
  import os
2
3
  import shutil
3
4
 
@@ -73,6 +74,11 @@ class App():
73
74
  def data_dir_path(self):
74
75
  return self.__data_dir_path
75
76
 
77
+ @property
78
+ def network(self):
79
+ # An app may contain one or more context dirs from which services will derive their mocks from
80
+ return hashlib.md5(self.context_dir_path.encode()).hexdigest()
81
+
76
82
  @property
77
83
  def scaffold_namespace_path(self):
78
84
  return os.path.join(self.data_dir_path, self.scaffold_namespace)
@@ -1,5 +1,5 @@
1
1
  from .config import Config
2
- from .constants import APP_NAME_ENV, APP_NETWORK_ENV, APP_UI_PORT_ENV
2
+ from .constants import APP_NAME_ENV, APP_UI_PORT_ENV
3
3
 
4
4
  class AppConfig(Config):
5
5
 
@@ -7,7 +7,7 @@ class AppConfig(Config):
7
7
  super().__init__(dir)
8
8
 
9
9
  self.__name = None
10
- self.__network = None
10
+ self.__ui_port = None
11
11
 
12
12
  self.load()
13
13
 
@@ -19,14 +19,6 @@ class AppConfig(Config):
19
19
  def name(self, v):
20
20
  self.__name = v
21
21
 
22
- @property
23
- def network(self):
24
- return self.__network
25
-
26
- @network.setter
27
- def network(self, v):
28
- self.__network = v
29
-
30
22
  @property
31
23
  def ui_port(self):
32
24
  return self.__ui_port
@@ -39,7 +31,6 @@ class AppConfig(Config):
39
31
  config = config or self.read()
40
32
 
41
33
  self.name = config.get(APP_NAME_ENV)
42
- self.network = config.get(APP_NETWORK_ENV)
43
34
  self.ui_port = config.get(APP_UI_PORT_ENV)
44
35
 
45
36
  def write(self):
@@ -48,9 +39,6 @@ class AppConfig(Config):
48
39
  if self.name:
49
40
  config[APP_NAME_ENV] = self.name
50
41
 
51
- if self.network:
52
- config[APP_NETWORK_ENV] = self.network
53
-
54
42
  if self.ui_port:
55
43
  config[APP_UI_PORT_ENV] = self.ui_port
56
44
 
@@ -19,9 +19,6 @@ class AppCreateCommand(AppCommand):
19
19
  if kwargs.get('app_name'):
20
20
  self.app_config.name = kwargs['app_name']
21
21
 
22
- if kwargs.get('network'):
23
- self.app_config.network = kwargs['network']
24
-
25
22
  if kwargs.get('ui_port'):
26
23
  self.app_config.ui_port = kwargs['ui_port']
27
24
 
@@ -29,10 +26,6 @@ class AppCreateCommand(AppCommand):
29
26
  def app_name(self):
30
27
  return self.app_config.name
31
28
 
32
- @property
33
- def app_network(self):
34
- return self.app_config.network
35
-
36
29
  @property
37
30
  def app_ui_port(self):
38
31
  return self.app_config.ui_port
@@ -21,10 +21,12 @@ NAMESERVERS_FILE = '.nameservers'
21
21
  PUBLIC_FOLDER_NAME = 'public'
22
22
  SERVICE_DETACHED = '${SERVICE_DETACHED}'
23
23
  SERVICE_DETACHED_ENV = 'SERVICE_DETACHED'
24
- SERVICE_HOSTNAME = '${SERVICE_HOSTNAME}'
25
- SERVICE_HOSTNAME_ENV = 'SERVICE_HOSTNAME'
26
24
  SERVICE_DNS = '${SERVICE_DNS}'
27
25
  SERVICE_DNS_ENV = 'SERVICE_DNS'
26
+ SERVICE_HOSTNAME = '${SERVICE_HOSTNAME}'
27
+ SERVICE_HOSTNAME_ENV = 'SERVICE_HOSTNAME'
28
+ SERVICE_ID = '${SERVICE_ID}'
29
+ SERVICE_ID_ENV = 'SERVICE_ID'
28
30
  SERVICE_NAME = '${SERVICE_NAME}'
29
31
  SERVICE_NAME_ENV = 'SERVICE_NAME'
30
32
  SERVICE_PROXY_MODE = '${SERVICE_PROXY_MODE}'
@@ -7,8 +7,12 @@ from stoobly_agent.config.data_dir import DATA_DIR_NAME
7
7
 
8
8
  from ...app_config import AppConfig
9
9
  from ...constants import (
10
- APP_DIR, DOCKER_NAMESPACE, SERVICE_NAME, SERVICE_NAME_ENV,
11
- SERVICE_HOSTNAME, SERVICE_HOSTNAME_ENV, SERVICE_NAME_ENV, SERVICE_PORT, SERVICE_PORT_ENV, SERVICE_SCHEME, SERVICE_SCHEME_ENV,
10
+ APP_DIR, DOCKER_NAMESPACE,
11
+ SERVICE_HOSTNAME, SERVICE_HOSTNAME_ENV,
12
+ SERVICE_NAME, SERVICE_NAME_ENV,
13
+ SERVICE_ID,
14
+ SERVICE_PORT, SERVICE_PORT_ENV,
15
+ SERVICE_SCHEME, SERVICE_SCHEME_ENV,
12
16
  STOOBLY_HOME_DIR, STOOBLY_HOME_DIR,
13
17
  WORKFLOW_NAME, WORKFLOW_NAME_ENV, WORKFLOW_SCRIPTS, WORKFLOW_TEMPLATE
14
18
  )
@@ -91,7 +95,7 @@ class ServiceBuilder(Builder):
91
95
  if not self.config.hostname:
92
96
  return
93
97
 
94
- service_id = self.config.id
98
+ service_id = SERVICE_ID
95
99
  environment = { **self.env_dict() }
96
100
  labels = [
97
101
  'traefik.enable=true',
@@ -7,6 +7,7 @@ from .config import Config
7
7
  from .constants import (
8
8
  SERVICE_DETACHED_ENV,
9
9
  SERVICE_HOSTNAME_ENV,
10
+ SERVICE_ID_ENV,
10
11
  SERVICE_PRIORITY_ENV,
11
12
  SERVICE_PORT_ENV,
12
13
  SERVICE_PROXY_MODE_ENV,
@@ -55,7 +56,7 @@ class ServiceConfig(Config):
55
56
 
56
57
  @property
57
58
  def id(self):
58
- return hashlib.md5(os.path.basename(self.dir).encode()).hexdigest()
59
+ return hashlib.md5(self.dir.encode()).hexdigest()
59
60
 
60
61
  @property
61
62
  def hostname(self):
@@ -171,7 +172,7 @@ class ServiceConfig(Config):
171
172
  config[SERVICE_SCHEME_ENV] = self.scheme
172
173
 
173
174
  config[SERVICE_DETACHED_ENV] = bool(self.detached)
174
-
175
+ config[SERVICE_ID_ENV] = self.id
175
176
  config[SERVICE_PROXY_MODE_ENV] = self.proxy_mode
176
177
 
177
178
  super().write(config)
@@ -116,8 +116,9 @@ class ServiceWorkflowValidateCommand(ServiceCommand, ValidateCommand):
116
116
 
117
117
  def validate_internal_hostname(self, url: str) -> None:
118
118
  print(f"Validating hostname inside Docker network, url: {url}")
119
-
120
- network = f"{self.workflow_name}.{self.app_config.network}"
119
+
120
+ # See WorkflowRunCommand for how 'network' is generated
121
+ network = f"{self.workflow_name}.{self.app.network}"
121
122
  timeout_seconds = 1
122
123
  output = self.docker_client.containers.run(
123
124
  image='curlimages/curl:8.11.0',
@@ -44,7 +44,7 @@ workflow_script=.stoobly/tmp/$(workflow_namespace)/run.sh
44
44
  certs_dir_options=--ca-certs-dir-path $(ca_certs_dir) --certs-dir-path $(certs_dir)
45
45
  working_dir_options=--app-dir-path $(app_dir) --context-dir-path $(context_dir)
46
46
 
47
- workflow_down_options=--user-id $(USER_ID) $(workflow_down_extra_options)
47
+ workflow_down_options=$(working_dir_options) --user-id $(USER_ID) $(workflow_down_extra_options)
48
48
  workflow_log_options=$(workflow_log_extra_options)
49
49
  workflow_run_options=--namespace $(workflow_namespace) --script-path $(workflow_script) $(workflow_service_options)
50
50
  workflow_up_options=$(working_dir_options) $(certs_dir_options) --user-id $(USER_ID) $(workflow_up_extra_options)
@@ -1,11 +1,9 @@
1
1
  import dns.resolver
2
+ import hashlib
2
3
  import os
3
4
  import pdb
4
5
  import subprocess
5
6
  import re
6
- import yaml
7
-
8
- from typing import TypedDict
9
7
 
10
8
  from stoobly_agent.config.data_dir import DataDir
11
9
  from stoobly_agent.lib.logger import Logger
@@ -19,26 +17,10 @@ from .constants import (
19
17
  from .docker.constants import APP_EGRESS_NETWORK_TEMPLATE, APP_INGRESS_NETWORK_TEMPLATE, DOCKERFILE_CONTEXT
20
18
  from .workflow_command import WorkflowCommand
21
19
  from .workflow_env import WorkflowEnv
20
+ from ..types.workflow_run_command import BuildOptions, ComposeOptions, DownOptions, UpOptions
22
21
 
23
22
  LOG_ID = 'WorkflowRunCommand'
24
23
 
25
- class ComposeOptions(TypedDict):
26
- namespace: str
27
- user_id: str
28
-
29
- class BuildOptions(ComposeOptions):
30
- user_id: str
31
- verbose: bool
32
-
33
- class DownOptions(ComposeOptions):
34
- extra_compose_path: str
35
- rmi: bool
36
-
37
- class UpOptions(ComposeOptions):
38
- attached: bool
39
- extra_compose_path: str
40
- pull: bool
41
-
42
24
  class WorkflowRunCommand(WorkflowCommand):
43
25
  def __init__(self, app: App, **kwargs):
44
26
  super().__init__(app, **kwargs)
@@ -48,7 +30,7 @@ class WorkflowRunCommand(WorkflowCommand):
48
30
  self.__ca_certs_dir_path = kwargs.get('ca_certs_dir_path') or app.ca_certs_dir_path
49
31
  self.__certs_dir_path = kwargs.get('certs_dir_path') or app.certs_dir_path
50
32
  self.__context_dir_path = kwargs.get('context_dir_path') or app.context_dir_path
51
- self.__network = f"{kwargs.get('network') or {self.workflow_name}}.{self.app_config.network}"
33
+ self.__network = f"{kwargs.get('namespace') or self.workflow_name}.{kwargs.get('network') or app.network}"
52
34
 
53
35
  @property
54
36
  def app_dir_path(self):
@@ -88,7 +88,6 @@ def hostname(ctx):
88
88
  help="Scaffold application"
89
89
  )
90
90
  @click.option('--app-dir-path', default=current_working_dir, help='Path to create the app scaffold.')
91
- @click.option('--network', callback=validate_network, help='App default network name. Defaults to app name.')
92
91
  @click.option('--quiet', is_flag=True, help='Disable log output.')
93
92
  @click.option('--ui-port', default=4200, type=click.IntRange(1, 65535), help='UI service port.')
94
93
  @click.argument('app_name', callback=validate_app_name)
@@ -100,9 +99,6 @@ def create(**kwargs):
100
99
  if not kwargs['quiet'] and os.path.exists(app.scaffold_namespace_path):
101
100
  print(f"{kwargs['app_dir_path']} already exists, updating scaffold maintained files...")
102
101
 
103
- if not kwargs['network']:
104
- kwargs['network'] = kwargs['app_name']
105
-
106
102
  AppCreateCommand(app, **kwargs).build()
107
103
 
108
104
  @app.command(
@@ -344,7 +340,10 @@ def copy(**kwargs):
344
340
  def down(**kwargs):
345
341
  os.environ[env_vars.LOG_LEVEL] = kwargs['log_level']
346
342
 
347
- app = App(kwargs['app_dir_path'], DOCKER_NAMESPACE, **kwargs)
343
+ containerized = kwargs['containerized']
344
+
345
+ app_dir_path = current_working_dir if containerized else kwargs['app_dir_path']
346
+ app = App(app_dir_path, DOCKER_NAMESPACE, **kwargs)
348
347
  __validate_app(app)
349
348
 
350
349
  __with_namespace_defaults(kwargs)
@@ -827,10 +826,6 @@ def __with_namespace_defaults(kwargs):
827
826
  if not kwargs.get('namespace'):
828
827
  kwargs['namespace'] = kwargs.get('workflow_name')
829
828
 
830
- # If network there was a network option, but it is not set, default network to namespace
831
- if 'network' in kwargs and not kwargs['network']:
832
- kwargs['network'] = kwargs['namespace']
833
-
834
829
  def __workflow_create(app, **kwargs):
835
830
  command = WorkflowCreateCommand(app, **kwargs)
836
831
 
@@ -0,0 +1,18 @@
1
+ from typing import TypedDict
2
+
3
+ class ComposeOptions(TypedDict):
4
+ namespace: str
5
+ user_id: str
6
+
7
+ class BuildOptions(ComposeOptions):
8
+ user_id: str
9
+ verbose: bool
10
+
11
+ class DownOptions(ComposeOptions):
12
+ extra_compose_path: str
13
+ rmi: bool
14
+
15
+ class UpOptions(ComposeOptions):
16
+ attached: bool
17
+ extra_compose_path: str
18
+ pull: bool
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stoobly-agent
3
- Version: 1.9.9
3
+ Version: 1.9.10
4
4
  Summary: Record, mock, and test HTTP(s) requests. CLI agent for Stoobly
5
5
  License: Apache-2.0
6
6
  Author: Matt Le
@@ -1,4 +1,4 @@
1
- stoobly_agent/__init__.py,sha256=ynj3t69d_GKqdl_NzWnMm4vXo8bYFLqoXtgFzDp3BXk,44
1
+ stoobly_agent/__init__.py,sha256=nIYIzLEOceTM5Bfw040WST6iw0kTxA4hWg7lKhn6tfo,45
2
2
  stoobly_agent/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  stoobly_agent/app/api/__init__.py,sha256=ctkB8KR-eXO0SFhj602huHiyvQ3PslFWd8fkcufgrAI,1000
4
4
  stoobly_agent/app/api/application_http_request_handler.py,sha256=Vvz53yB0bR7J-QqMAkLlhcZrA4P64ZEN7w8cMbgl6o0,5261
@@ -67,13 +67,13 @@ stoobly_agent/app/cli/project_cli.py,sha256=EXjeLjbnq9PhfCjvyfZ0UnJ2tejeCS0SIAo3
67
67
  stoobly_agent/app/cli/report_cli.py,sha256=ZxJw0Xkx7KFZJn9e45BSKRKon8AD0Msrwy1fbPfbv0c,2543
68
68
  stoobly_agent/app/cli/request_cli.py,sha256=THNloW111l9MLE0oPg4y7hVXL1U7OXoz760g0A1CtJ0,7747
69
69
  stoobly_agent/app/cli/scaffold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- stoobly_agent/app/cli/scaffold/app.py,sha256=bgNc_dWZtgkuDAkS9aHSCMxCrjX907Phlfb2bOasswI,3435
70
+ stoobly_agent/app/cli/scaffold/app.py,sha256=0HJm8cdyIBAdOBr18499MkZGhmEFu6I7GSZXR7pKxkw,3650
71
71
  stoobly_agent/app/cli/scaffold/app_command.py,sha256=sliaYulMNmaxbRXpJIDtBDWEBGEv5Tht4rpErzC_xxw,2368
72
- stoobly_agent/app/cli/scaffold/app_config.py,sha256=UGVJ7DVmXh-o_gYBlAAEjngNIUZPQUiXXk2oMStcsPg,1075
73
- stoobly_agent/app/cli/scaffold/app_create_command.py,sha256=0ogYliGbq1PYP5rFs-ML33q_Z4t_rAgPWjhk7rhnGw0,1153
72
+ stoobly_agent/app/cli/scaffold/app_config.py,sha256=EyFezd7oeYLHmYPEdYlQCSeGP3AM1NmFz2mT9WLp7xY,818
73
+ stoobly_agent/app/cli/scaffold/app_create_command.py,sha256=2y1W17r3mxCf-7U7uUT-44icprGPMERCfVITO2NA76w,981
74
74
  stoobly_agent/app/cli/scaffold/command.py,sha256=aoTsdkkBzyu7TkVSMdNQQGk0Gj874jNgFcjR14y3TuM,254
75
75
  stoobly_agent/app/cli/scaffold/config.py,sha256=HZU5tkvr3dkPr4JMXZtrJlu2wxxO-134Em6jReFFcq0,688
76
- stoobly_agent/app/cli/scaffold/constants.py,sha256=e0aKyB80i1heJCubAvxt8DlzykAvYH37xeAcl9UTTgI,2496
76
+ stoobly_agent/app/cli/scaffold/constants.py,sha256=ULSzqjNdrWP_-feyqpwPE-Pdt7JVDerZeZoFTpvewHY,2555
77
77
  stoobly_agent/app/cli/scaffold/containerized_app.py,sha256=dAjn4RwcZV3aEL0POUmrbF_DC-r9h6s1zx7gT2t45v0,175
78
78
  stoobly_agent/app/cli/scaffold/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
79
  stoobly_agent/app/cli/scaffold/docker/app_builder.py,sha256=7z5pk5JKlRDHx2USxY-WurttLyyUkIVYfl34_u1x9dE,501
@@ -81,7 +81,7 @@ stoobly_agent/app/cli/scaffold/docker/builder.py,sha256=uiGqhxBHEasZAqLzjKUGUs-1
81
81
  stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=1khQdgTaQ89ykGRNdTQh_ejFOdjNFGaZ_3cOGda6y7Y,692
82
82
  stoobly_agent/app/cli/scaffold/docker/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  stoobly_agent/app/cli/scaffold/docker/service/build_decorator.py,sha256=ZU7z4bkvdS3OK5O4fJhlA9_PNwnFtZW6t7vNF7V5obQ,1003
84
- stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=4cIMSYvgrkGWVuuYymiwlrR829O91qQl9ML8FhaDMj4,5857
84
+ stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=u3_YNuxX8TT4TvhzTqe5b2Zvi9fF7TLWJFepkBSXwhk,5857
85
85
  stoobly_agent/app/cli/scaffold/docker/service/configure_gateway.py,sha256=8GQ2wUBwb45uSxhzkEMloezJT1hVu8v_3PudWLTU9ig,3910
86
86
  stoobly_agent/app/cli/scaffold/docker/service/types.py,sha256=qB-yYHlu-PZDc0HYgTUvE5bWNpHxaSThC3JUG8okR1k,88
87
87
  stoobly_agent/app/cli/scaffold/docker/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -96,16 +96,16 @@ stoobly_agent/app/cli/scaffold/hosts_file_manager.py,sha256=zNX5wh6zXQ4J2BA0YYdD
96
96
  stoobly_agent/app/cli/scaffold/managed_services_docker_compose.py,sha256=-wLBXUi7DCWsfm5KzZzd_kdJKOTl1NT924XR7dyjbSY,574
97
97
  stoobly_agent/app/cli/scaffold/service.py,sha256=74JwjTRRkk6lo-k9hre1iGztbKa9zDqjPVx3Qgpze-s,699
98
98
  stoobly_agent/app/cli/scaffold/service_command.py,sha256=NxJakoq1Dy79LEIJ8QSsKEwsofIfN13GN0UGpp9i6qY,1230
99
- stoobly_agent/app/cli/scaffold/service_config.py,sha256=edL356wqpfJgFdeSrWof-CAUB1Tgi4nO1Jx9nkql9Qc,3903
99
+ stoobly_agent/app/cli/scaffold/service_config.py,sha256=igPvhcP0vENgHCYQhbRJLeltSjv0m5b5fmEq5wMGkd4,3939
100
100
  stoobly_agent/app/cli/scaffold/service_create_command.py,sha256=1B6TK3JDAjouikCV84WDrX7b0crdPMPIo1caMwhi-L8,2815
101
101
  stoobly_agent/app/cli/scaffold/service_delete_command.py,sha256=_nBDQjm8eL62MQpzSCxgUHlW04ZXKG8MDlN1BXxlqww,986
102
102
  stoobly_agent/app/cli/scaffold/service_docker_compose.py,sha256=OMUN1-ujQYIZXxDvS4XBf5C9wGalQULkwOiBBQPZbHY,820
103
103
  stoobly_agent/app/cli/scaffold/service_update_command.py,sha256=oWusBKfvjt4RnK03_V3CJYWrfsCI4_LcR7W12eLXMR4,2579
104
104
  stoobly_agent/app/cli/scaffold/service_workflow.py,sha256=sQ_Edy_wGHKMXpD0DmhnOWkGEKz7gSgEGNI8f7aXOdg,444
105
- stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py,sha256=veigidzR4EwGi8dc0v_l4Ik7cZikDBnLcvwcHNc1Wzg,11457
105
+ stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py,sha256=-hdg7RLsoEQXCI9rebIXyO3d8JbpyTxGnhpjaPQfmFk,11514
106
106
  stoobly_agent/app/cli/scaffold/templates/__init__.py,sha256=x8C_a0VoO_vUbosp4_6IC1U7Ge9NnUdVKDPpVMtMkeY,171
107
107
  stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.context,sha256=Okk4Q0Fj7Wi5NU58gQfpjpFwAL3RUBJyRe56kteQfcA,158
108
- stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=VGtO-dz0tXHfUN9MMkc3Lqfqg6Vhdb_aiz7cxiot3DE,8950
108
+ stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=bseFu3GsBlH8QEHKiALhz3V8pZr6CBJHM_nU64ZCEsE,8973
109
109
  stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=6tFqXh3ine8vaD0FCL5TMoY5NjKx2wLUR8XpW3tJtew,245
110
110
  stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.networks.yml,sha256=I4PbJpQjFHb5IbAUWNvYM6okDEtmwtKFDQg-yog05WM,141
111
111
  stoobly_agent/app/cli/scaffold/templates/app/Makefile,sha256=TEmPG7Bf0KZOnmfsgdzza3UdwcVMmM5Lj1YdLc4cgjA,79
@@ -202,9 +202,9 @@ stoobly_agent/app/cli/scaffold/workflow_copy_command.py,sha256=wi8qHH_M2e6jXIPuu
202
202
  stoobly_agent/app/cli/scaffold/workflow_create_command.py,sha256=-fwsr6_LvGT8BbBWdGY3Qd8cSQhBOSJiMr1r8s2R86w,3390
203
203
  stoobly_agent/app/cli/scaffold/workflow_env.py,sha256=x8V5pJmIiklD3f2q2-qq-CORf4YaXYq_r2JpR2MmSwk,416
204
204
  stoobly_agent/app/cli/scaffold/workflow_log_command.py,sha256=Bke4lMOMxuDUFuAx9nlXHbKgYMO4KAg9ASHvjz4aVWc,1372
205
- stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=AZhLd1N260RjXEiUSRppqfhQMwVyRnn0jpapRu4FwyM,11114
205
+ stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=stKIWnLCfpX39iobHYp4NjFgR2oFTBmyCgYUIcc22_A,10896
206
206
  stoobly_agent/app/cli/scaffold/workflow_validate_command.py,sha256=Uo_yo6rVR1ZR7xpvsQvlH48AyMBVLRupd4G-bRjzm_Q,5584
207
- stoobly_agent/app/cli/scaffold_cli.py,sha256=PmFDxe0pACL7hdyf7bPlol3xxGkOS4VES92HTAnga6Y,32622
207
+ stoobly_agent/app/cli/scaffold_cli.py,sha256=ovhlabUDEfqkuRGIVzmxdTHwkpnTceYUgzYw-2kVi0I,32367
208
208
  stoobly_agent/app/cli/scenario_cli.py,sha256=3J1EiJOvunkfWrEkOsanw-XrKkOk78ij_GjBlE9p7CE,8229
209
209
  stoobly_agent/app/cli/snapshot_cli.py,sha256=1Dw5JgDlmG6vctrawIRO7CdB73vAQk_wRBnPG2lVOrQ,11929
210
210
  stoobly_agent/app/cli/trace_cli.py,sha256=K7E-vx3JUcqEDSWOdIOi_AieKNQz7dBfmRrVvKDkzFI,4605
@@ -215,6 +215,7 @@ stoobly_agent/app/cli/types/request.py,sha256=QthojE5sfx7OvKu-vVNnSUfGk8n4pLzuBQ
215
215
  stoobly_agent/app/cli/types/scenario.py,sha256=28WxmOlbm2Bsek1uu7yc4hJGz-d5oHbYAro7LlFWRoc,81
216
216
  stoobly_agent/app/cli/types/snapshot_migration.py,sha256=4_Re46FKjsflcTOO3qhNsbWWmdEU67SFsF-XE_FKG3M,1859
217
217
  stoobly_agent/app/cli/types/test.py,sha256=1c458B7DFBWsEk5Q1CrZ2CUi84YzEzcs-W4qTcudwAk,714
218
+ stoobly_agent/app/cli/types/workflow_run_command.py,sha256=SQ5PGpoqIEQ7w9xeSQE1FBqelnVfsdlRXXaODDW4yPY,326
218
219
  stoobly_agent/app/cli/validators/scaffold.py,sha256=Y2XQrN2RFMcBh228q6inTwZGoN0K5FmXO8JfrgKVwJA,1669
219
220
  stoobly_agent/app/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
221
  stoobly_agent/app/models/adapters/__init__.py,sha256=cEEE--Bvrvk6DAsHx_uPgFhLnZJETP4zSBtWjMqyIKc,233
@@ -751,8 +752,8 @@ stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml,sha256=1W
751
752
  stoobly_agent/test/mock_data/scaffold/index.html,sha256=qJwuYajKZ4ihWZrJQ3BNObV5kf1VGnnm_vqlPJzdqLE,258
752
753
  stoobly_agent/test/mock_data/uspto.yaml,sha256=6U5se7C3o-86J4m9xpOk9Npias399f5CbfWzR87WKwE,7835
753
754
  stoobly_agent/test/test_helper.py,sha256=m_oAI7tmRYCNZdKfNqISWhMv3e44tjeYViQ3nTUfnos,1007
754
- stoobly_agent-1.9.9.dist-info/LICENSE,sha256=o93sj12cdoEOsTCjPaPFsw3Xq0SXs3pPcY-9reE2sEw,548
755
- stoobly_agent-1.9.9.dist-info/METADATA,sha256=P2fxdK2aPocPzJHjKZKqyFF4xz9zhyeERR-EylS6FLA,3087
756
- stoobly_agent-1.9.9.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
757
- stoobly_agent-1.9.9.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
758
- stoobly_agent-1.9.9.dist-info/RECORD,,
755
+ stoobly_agent-1.9.10.dist-info/LICENSE,sha256=o93sj12cdoEOsTCjPaPFsw3Xq0SXs3pPcY-9reE2sEw,548
756
+ stoobly_agent-1.9.10.dist-info/METADATA,sha256=V2dDSCdSEvRueylouQW2K4-4_TNU6Q74sqWplOHzWs0,3088
757
+ stoobly_agent-1.9.10.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
758
+ stoobly_agent-1.9.10.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
759
+ stoobly_agent-1.9.10.dist-info/RECORD,,