donna 0.2.0__py3-none-any.whl → 0.2.1__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.
- donna/artifacts/intro.md +39 -0
- donna/artifacts/research/specs/report.md +163 -0
- donna/artifacts/research/work/research.md +198 -0
- donna/artifacts/rfc/specs/request_for_change.md +271 -0
- donna/artifacts/rfc/work/create.md +120 -0
- donna/artifacts/rfc/work/do.md +109 -0
- donna/artifacts/rfc/work/plan.md +68 -0
- donna/artifacts/usage/artifacts.md +41 -6
- donna/artifacts/usage/cli.md +106 -37
- donna/artifacts/usage/worlds.md +8 -2
- donna/cli/__main__.py +1 -1
- donna/cli/commands/artifacts.py +104 -17
- donna/cli/commands/sessions.py +7 -7
- donna/cli/commands/workspaces.py +42 -0
- donna/cli/errors.py +18 -0
- donna/cli/types.py +16 -9
- donna/cli/utils.py +2 -2
- donna/core/errors.py +1 -11
- donna/core/result.py +5 -8
- donna/core/utils.py +0 -3
- donna/lib/__init__.py +4 -0
- donna/lib/sources.py +1 -1
- donna/lib/worlds.py +2 -2
- donna/machine/action_requests.py +0 -5
- donna/machine/artifacts.py +8 -6
- donna/machine/primitives.py +4 -4
- donna/machine/sessions.py +12 -4
- donna/machine/state.py +2 -2
- donna/machine/tasks.py +4 -18
- donna/machine/templates.py +4 -2
- donna/primitives/artifacts/specification.py +13 -2
- donna/primitives/artifacts/workflow.py +11 -2
- donna/primitives/directives/list.py +86 -0
- donna/primitives/directives/view.py +52 -11
- donna/primitives/operations/finish_workflow.py +13 -2
- donna/primitives/operations/output.py +87 -0
- donna/primitives/operations/request_action.py +3 -9
- donna/primitives/operations/run_script.py +2 -2
- donna/protocol/utils.py +22 -0
- donna/workspaces/artifacts.py +238 -0
- donna/{world → workspaces}/artifacts_discovery.py +1 -1
- donna/{world → workspaces}/config.py +13 -6
- donna/{world → workspaces}/errors.py +55 -45
- donna/workspaces/initialization.py +78 -0
- donna/{world → workspaces}/markdown.py +21 -26
- donna/{world → workspaces}/sources/base.py +2 -2
- donna/{world → workspaces}/sources/markdown.py +7 -6
- donna/{world → workspaces}/templates.py +4 -4
- donna/{world → workspaces}/tmp.py +19 -1
- donna/{world → workspaces}/worlds/base.py +5 -2
- donna/{world → workspaces}/worlds/filesystem.py +23 -9
- donna/{world → workspaces}/worlds/python.py +12 -9
- {donna-0.2.0.dist-info → donna-0.2.1.dist-info}/METADATA +4 -1
- donna-0.2.1.dist-info/RECORD +92 -0
- {donna-0.2.0.dist-info → donna-0.2.1.dist-info}/WHEEL +1 -1
- donna/artifacts/work/do_it.md +0 -142
- donna/artifacts/work/do_it_fast.md +0 -98
- donna/artifacts/work/planning.md +0 -245
- donna/cli/commands/projects.py +0 -49
- donna/world/artifacts.py +0 -122
- donna/world/initialization.py +0 -42
- donna/world/worlds/__init__.py +0 -0
- donna-0.2.0.dist-info/RECORD +0 -85
- /donna/{artifacts/work → workspaces}/__init__.py +0 -0
- /donna/{world → workspaces}/sources/__init__.py +0 -0
- /donna/{world → workspaces/worlds}/__init__.py +0 -0
- {donna-0.2.0.dist-info → donna-0.2.1.dist-info}/entry_points.txt +0 -0
- {donna-0.2.0.dist-info → donna-0.2.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -7,14 +7,14 @@ from donna.core.errors import ErrorsList
|
|
|
7
7
|
from donna.core.result import Err, Ok, Result, unwrap_to_error
|
|
8
8
|
from donna.domain.ids import ArtifactId, FullArtifactId, FullArtifactIdPattern, WorldId
|
|
9
9
|
from donna.machine.artifacts import Artifact
|
|
10
|
-
from donna.
|
|
11
|
-
from donna.
|
|
12
|
-
from donna.
|
|
13
|
-
from donna.
|
|
14
|
-
from donna.
|
|
10
|
+
from donna.workspaces import errors as world_errors
|
|
11
|
+
from donna.workspaces.artifacts import ArtifactRenderContext
|
|
12
|
+
from donna.workspaces.artifacts_discovery import ArtifactListingNode, list_artifacts_by_pattern
|
|
13
|
+
from donna.workspaces.worlds.base import World as BaseWorld
|
|
14
|
+
from donna.workspaces.worlds.base import WorldConstructor
|
|
15
15
|
|
|
16
16
|
if TYPE_CHECKING:
|
|
17
|
-
from donna.
|
|
17
|
+
from donna.workspaces.config import SourceConfigValue, WorldConfig
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class Python(BaseWorld):
|
|
@@ -59,7 +59,7 @@ class Python(BaseWorld):
|
|
|
59
59
|
if not resource_dir.is_dir():
|
|
60
60
|
return Ok(None)
|
|
61
61
|
|
|
62
|
-
from donna.
|
|
62
|
+
from donna.workspaces.config import config
|
|
63
63
|
|
|
64
64
|
supported_extensions = config().supported_extensions()
|
|
65
65
|
matches = [
|
|
@@ -81,7 +81,7 @@ class Python(BaseWorld):
|
|
|
81
81
|
def _get_source_by_filename(
|
|
82
82
|
self, artifact_id: ArtifactId, filename: str
|
|
83
83
|
) -> Result["SourceConfigValue", ErrorsList]:
|
|
84
|
-
from donna.
|
|
84
|
+
from donna.workspaces.config import config
|
|
85
85
|
|
|
86
86
|
extension = pathlib.Path(filename).suffix
|
|
87
87
|
source_config = config().find_source_for_extension(extension)
|
|
@@ -115,7 +115,7 @@ class Python(BaseWorld):
|
|
|
115
115
|
full_id = FullArtifactId((self.id, artifact_id))
|
|
116
116
|
|
|
117
117
|
extension = pathlib.Path(resource_path.name).suffix
|
|
118
|
-
from donna.
|
|
118
|
+
from donna.workspaces.config import config
|
|
119
119
|
|
|
120
120
|
source_config = config().find_source_for_extension(extension)
|
|
121
121
|
if source_config is None:
|
|
@@ -142,6 +142,9 @@ class Python(BaseWorld):
|
|
|
142
142
|
def update(self, artifact_id: ArtifactId, content: bytes, extension: str) -> Result[None, ErrorsList]:
|
|
143
143
|
return Err([world_errors.WorldReadonly(world_id=self.id)])
|
|
144
144
|
|
|
145
|
+
def remove(self, artifact_id: ArtifactId) -> Result[None, ErrorsList]:
|
|
146
|
+
return Err([world_errors.WorldReadonly(world_id=self.id)])
|
|
147
|
+
|
|
145
148
|
@unwrap_to_error
|
|
146
149
|
def file_extension_for(self, artifact_id: ArtifactId) -> Result[str, ErrorsList]:
|
|
147
150
|
resource_path = self._resolve_artifact_file(artifact_id).unwrap()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: donna
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A deterministic workflow and state orchestration engine for LLM agents.
|
|
5
5
|
License-Expression: BSD-3-Clause
|
|
6
6
|
License-File: LICENSE
|
|
@@ -11,6 +11,7 @@ Requires-Python: >=3.12,<4.0
|
|
|
11
11
|
Classifier: Development Status :: 3 - Alpha
|
|
12
12
|
Classifier: Environment :: Console
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
14
15
|
Classifier: Programming Language :: Python :: 3
|
|
15
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
17
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
@@ -20,7 +21,9 @@ Requires-Dist: jinja2 (>=3.1,<3.2)
|
|
|
20
21
|
Requires-Dist: markdown-it-py (>=4.0,<4.1)
|
|
21
22
|
Requires-Dist: mdformat (>=1.0.0,<1.1.0)
|
|
22
23
|
Requires-Dist: pydantic (>=2.12,<2.13)
|
|
24
|
+
Requires-Dist: tomli-w (>=1.2,<1.3)
|
|
23
25
|
Requires-Dist: typer (>=0.20,<0.21)
|
|
26
|
+
Project-URL: Changelog, https://github.com/Tiendil/donna/blob/main/CHANGELOG.md
|
|
24
27
|
Project-URL: Homepage, https://github.com/Tiendil/donna
|
|
25
28
|
Project-URL: Issues, https://github.com/Tiendil/donna/issues
|
|
26
29
|
Project-URL: Repository, https://github.com/Tiendil/donna
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
donna/__init__.py,sha256=lEC7l3wDCBiC5gw56XkAeBW1XJA52pck7SFR1_CUals,41
|
|
2
|
+
donna/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
donna/artifacts/intro.md,sha256=sWkuHnYLiScoux6XNeFeC8PIfZbhpLT0mk6LmKLe8MA,2141
|
|
4
|
+
donna/artifacts/research/specs/report.md,sha256=yg1rrLGjzgAr5ZbezTGXbKfHshsd23mTJAZb4ZkUFDY,8576
|
|
5
|
+
donna/artifacts/research/work/research.md,sha256=TacNXHhKDo2HFLigqTZJyKwgarAyIBHThUdH4Nuc4Os,7082
|
|
6
|
+
donna/artifacts/rfc/specs/request_for_change.md,sha256=IXkQWfVG1l-oUvlOpWTIINoxykPzaYp8C4ZQolq_28s,12980
|
|
7
|
+
donna/artifacts/rfc/work/create.md,sha256=f8bOggAQa22aIkS0i8z7rHdyqxy-SBls-ZLpMxT5PAQ,3761
|
|
8
|
+
donna/artifacts/rfc/work/do.md,sha256=tifHYbwTHybjZgJ3pJBs0A748ACcITA8SKkRW5hWvp4,2949
|
|
9
|
+
donna/artifacts/rfc/work/plan.md,sha256=DD4qU9aJOlJkkDAa8I1j4a6AqLCEY36xU3DqFt48-g8,2532
|
|
10
|
+
donna/artifacts/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
donna/artifacts/usage/artifacts.md,sha256=ZDkUnzgr583suhDFe8f2lup7VC8ocJCuDRfGKL-mWt0,13531
|
|
12
|
+
donna/artifacts/usage/cli.md,sha256=hyfCtMiwN-nJUoJEpuh8goecOlk85ZAjDww0CstHn9w,10578
|
|
13
|
+
donna/artifacts/usage/worlds.md,sha256=iA61-ZzS29NLxrdVQhdSF-2hpS6wGO1stlWkMkHnNDU,2078
|
|
14
|
+
donna/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
donna/cli/__main__.py,sha256=_zo9JRR0m_ggVlrSaCpwo84bo0-cR9DgnJFup1AcH5U,224
|
|
16
|
+
donna/cli/application.py,sha256=rIEseTvPZgX4tZ23fTX49LF0XLfyzTO8gtpA8G80MTI,466
|
|
17
|
+
donna/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
donna/cli/commands/artifacts.py,sha256=qakcdQ_9h4ZE1Yw0xxNfA5vhxWEPRsZjA0DjJdsNvp0,6416
|
|
19
|
+
donna/cli/commands/sessions.py,sha256=CqE8EocRmay3_CQGAgBwPtNffQ9KjpD7IXOOYxVW33Y,2142
|
|
20
|
+
donna/cli/commands/workspaces.py,sha256=ZFTFCojhi14njRFsCIpXjUWYY_aYyLH06xLFNTRDrk4,1078
|
|
21
|
+
donna/cli/errors.py,sha256=9UzGo4tINr3EEwhOu361M7ulGS-bEe7wGgVivu07Z1o,524
|
|
22
|
+
donna/cli/types.py,sha256=ZWALGkmfZQ62C8Sb6nGRkSLi0g79cEM0cAUQoITn1v0,3692
|
|
23
|
+
donna/cli/utils.py,sha256=rtgtCttr-txPVp1BNJYF9Nfb8zMAnBFsZ7ORsYaLsRw,1418
|
|
24
|
+
donna/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
donna/core/entities.py,sha256=Y3udcI1ykWDI_yPqCX6JTuDmF81BxO0PnnJzzD5uMoM,753
|
|
26
|
+
donna/core/errors.py,sha256=jkblzdC1bk0-E5eSGiiPSSIEHPbUbz88CXPvrHdLVuU,3313
|
|
27
|
+
donna/core/result.py,sha256=3QLzoRWs9ph_oGcWYbephbZjx97M_0Ayx_yFhweOcFo,2374
|
|
28
|
+
donna/core/utils.py,sha256=lviOkI-aFGWMy-3_VWVdf7iKGdOsIZtEzEa-5f618mk,1141
|
|
29
|
+
donna/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
+
donna/domain/errors.py,sha256=jewM3wYUCGLwNb8tvHkJ35-Y59ezJKgWy7pr_Utk7iA,1253
|
|
31
|
+
donna/domain/ids.py,sha256=CMEBRj6i2vjVi74TtUcjLTALn3MqKsEbs-Iv463mjVg,14678
|
|
32
|
+
donna/lib/__init__.py,sha256=01wddMlBwKz3gtcWiSD1rAKfhMMtsp_n90DHCplWRzI,987
|
|
33
|
+
donna/lib/sources.py,sha256=VvnAsIm7V_CnQeEN7KqB5Z-5yzQOmz3TTAYpB6MxZZk,182
|
|
34
|
+
donna/lib/worlds.py,sha256=w6QmpSx3gF0q71GyTdWQAKgMwT5VaMHAa_0FdNiyOnI,286
|
|
35
|
+
donna/machine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
donna/machine/action_requests.py,sha256=BRJHHex3O0-3MT2hf66QdkaSrjCA84wKBXscr1zwVtk,1249
|
|
37
|
+
donna/machine/artifacts.py,sha256=IpwVDUV3lUEuA80hHDSoRd3qcjYoDbZpPF7EO4VFi-o,6627
|
|
38
|
+
donna/machine/changes.py,sha256=TlgMA70u0ffRvwKVBwXEgEk1bp4m9w9MsVxtishX9Sw,2463
|
|
39
|
+
donna/machine/errors.py,sha256=45EPNC12rRT2pdgd2b9HMXCP0aon4sxo9DdUfxXeMnQ,4956
|
|
40
|
+
donna/machine/operations.py,sha256=CHXPy8hDYNqE5woVMj_lu2p4wgl7fqRxO0Dz0v1t4zI,761
|
|
41
|
+
donna/machine/primitives.py,sha256=ptPIO1yu4xXBNuVcnhKlOSPHfFj3Fo2kr_I8cbEbF04,3287
|
|
42
|
+
donna/machine/sessions.py,sha256=TSwNP_ELAjvnPBfHdNOVi4FguZYlf3UIhcRB0qXgK5Y,7135
|
|
43
|
+
donna/machine/state.py,sha256=W8mlxlH0cL91zNgOJ4dSngg-pUS7RO9J4R1ALkN782U,8121
|
|
44
|
+
donna/machine/tasks.py,sha256=2dfz5AoXC0pBH7t7x2SXSfZTM7_3tMYXRjJClGJY_Xc,2175
|
|
45
|
+
donna/machine/templates.py,sha256=oIlvYgpeuofq52sKtGvhlB850FQeuBIuwCkphoaOvss,2535
|
|
46
|
+
donna/primitives/__init__.py,sha256=CfJhz3TLdFxYbqCXioWVAIKGQ2tAMwXwL_Fg3A68Dqo,53
|
|
47
|
+
donna/primitives/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
|
+
donna/primitives/artifacts/specification.py,sha256=SYqRHJwfIvSVd0PTrrLG_Q0IdNy2mbdeK73Y1bt80_o,844
|
|
49
|
+
donna/primitives/artifacts/workflow.py,sha256=4u4Y9Le8ICKqWJR6qmC-flXKMers9Udm4vzKCHHLMME,7939
|
|
50
|
+
donna/primitives/directives/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
+
donna/primitives/directives/goto.py,sha256=uJdMJe3leJPSl_0PU4jd2AbHFJsJkf-x6rKhn4hKZd8,1679
|
|
52
|
+
donna/primitives/directives/list.py,sha256=VgpUdZyGFQJbuhbMxNqRBWGn0_75u9lEzgjjKTqFKZY,3198
|
|
53
|
+
donna/primitives/directives/task_variable.py,sha256=KvxY8ZOKFh6alkBhgDvkWzIJBfRNP4oYKRJ0SgHzO_g,2959
|
|
54
|
+
donna/primitives/directives/view.py,sha256=-FvVKksxTx8WyyZgsh2jkauqQOWf7b5LL201dbv_hac,3198
|
|
55
|
+
donna/primitives/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
donna/primitives/operations/finish_workflow.py,sha256=-3vaYAjj6oN93JWeQIoV9TOqzDjv-2ch_Wp4pXcOHvs,1846
|
|
57
|
+
donna/primitives/operations/output.py,sha256=30gAqmCdgh0UqkQIrOevpiAlONW3rT4wgOrdEtXv4nU,3271
|
|
58
|
+
donna/primitives/operations/request_action.py,sha256=aovOrEIfyzaiqiLEvR-dUNgCEaIEX2x1uHPEDUMQtq4,2893
|
|
59
|
+
donna/primitives/operations/run_script.py,sha256=R72TCPv-vsI9sZzkyikw6dulmW4iSIKWT4vEGYU4vjc,9348
|
|
60
|
+
donna/protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
donna/protocol/cell_shortcuts.py,sha256=dZVCzoaPu09IYEA5g5gYPhR-q8MpgmehcYti1z9BBuI,385
|
|
62
|
+
donna/protocol/cells.py,sha256=jQCM-l31Kt7gEBXgvb7Ph5Fstbz9lf0lEUbH0bgNlWg,1348
|
|
63
|
+
donna/protocol/errors.py,sha256=u54fxMtJMWL8cbOLWU0acrmxV7Q8uHnyT1NFw959SMI,486
|
|
64
|
+
donna/protocol/formatters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
+
donna/protocol/formatters/automation.py,sha256=I_I-b8bixuXBlKqn2ryHDKSdRJy77FzDATJi-jhEPWI,928
|
|
66
|
+
donna/protocol/formatters/base.py,sha256=PGrAgxiEtZKyg1wPePQMt5syOr6IpC4ydh5rMElaojE,405
|
|
67
|
+
donna/protocol/formatters/human.py,sha256=WvoZVYlD4H3MftDkpEEP_RtyZnzJhUWKNecKgm3FoXg,1168
|
|
68
|
+
donna/protocol/formatters/llm.py,sha256=z_2djZFaVVHjLYFMneUrYp5sA-EvtPuHUDzGKV1ogu4,1266
|
|
69
|
+
donna/protocol/modes.py,sha256=vFDjciPdPy26XlLBGrgAn1kAVW7EJAHrccGcJrK7vUo,960
|
|
70
|
+
donna/protocol/nodes.py,sha256=aP5IVOouZe6akSdfzPpfcGuZLbxkEieTE6j6SuVuTUU,1974
|
|
71
|
+
donna/protocol/utils.py,sha256=GMiqGH2vawKu8_MmofWhCljI7AqoYDI0w19I-21t02g,663
|
|
72
|
+
donna/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
donna/workspaces/artifacts.py,sha256=co6MBjIX2kV91WgNqCnDiK01hqUeB5cGPhE_ftJMl8U,8254
|
|
74
|
+
donna/workspaces/artifacts_discovery.py,sha256=JEf5ZVLaK2wwhx5mVE4ulOdmC2lApCdyfpfv2vBB_DE,2803
|
|
75
|
+
donna/workspaces/config.py,sha256=p7ujpAeOewikSWrfLLc64JeDsyrXBRCI7QLNMGng18w,6507
|
|
76
|
+
donna/workspaces/errors.py,sha256=ZK77AKjnRLc0-Qnu-NKztliSbCYBDmzr71fo1soWDrg,8276
|
|
77
|
+
donna/workspaces/initialization.py,sha256=d2oRwU4YEhhDeB1UtcOhqT0LD08QJoWEtvmSoQ6QwMg,2456
|
|
78
|
+
donna/workspaces/markdown.py,sha256=Aom9AnnpGHXI8LndmizwwG5r6aIFlosHjCvw-juL85Q,7214
|
|
79
|
+
donna/workspaces/sources/__init__.py,sha256=IRwKWnqQKh1ase742jhdadBcS4E9Hxr6j_l9Li6wwfw,70
|
|
80
|
+
donna/workspaces/sources/base.py,sha256=y6CawcOSBUX3oMO8YXlxE6p_NMJ713ukTZhgNKKBl94,2020
|
|
81
|
+
donna/workspaces/sources/markdown.py,sha256=vfNXIjDYOE40h8Thj0U593LYK874FiaFurLm6q0EFEY,9741
|
|
82
|
+
donna/workspaces/templates.py,sha256=tovUVXCHKfHDymr7jxPO_nN-7r_-K_pcmzkdBa9FEes,6092
|
|
83
|
+
donna/workspaces/tmp.py,sha256=q-ZPPTrssRjNNBJlP3wua7JjvLnXqOmYrcn2rUnhleo,1330
|
|
84
|
+
donna/workspaces/worlds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
|
+
donna/workspaces/worlds/base.py,sha256=8Wt70dTlMzuO1Mmjll4reUgB_-hem9-rx_cAwaSyFVM,2589
|
|
86
|
+
donna/workspaces/worlds/filesystem.py,sha256=cInj9GE65OCA4Ax27uYDuPMKJ4nlTcZ1JVZe51JSkQw,7055
|
|
87
|
+
donna/workspaces/worlds/python.py,sha256=dRPS4jHIMRqdecCAmF7FuC6IwH3__nfWaf2cMSc7Txk,7223
|
|
88
|
+
donna-0.2.1.dist-info/METADATA,sha256=_NTdFT_tdpPEQqVozdqt1vyHKUHe8E6DKgxYQokDJaA,2179
|
|
89
|
+
donna-0.2.1.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
|
|
90
|
+
donna-0.2.1.dist-info/entry_points.txt,sha256=r2W_yOzauooYCu312OQwCycIN1UjVnO5paPpS2EDZqo,48
|
|
91
|
+
donna-0.2.1.dist-info/licenses/LICENSE,sha256=KiF6_RVxH0MLeHZZtc8ag497X-c6oPmk-0OOf9qQDDk,1504
|
|
92
|
+
donna-0.2.1.dist-info/RECORD,,
|
donna/artifacts/work/do_it.md
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# Meta Work Loop
|
|
2
|
-
|
|
3
|
-
```toml donna
|
|
4
|
-
kind = "donna.lib.workflow"
|
|
5
|
-
start_operation_id = "start"
|
|
6
|
-
```
|
|
7
|
-
|
|
8
|
-
General purpose work planning and execution workflow. Use it when you need to do complex work and there is no more specific workflow available.
|
|
9
|
-
|
|
10
|
-
## Start Work
|
|
11
|
-
|
|
12
|
-
```toml donna
|
|
13
|
-
id = "start"
|
|
14
|
-
kind = "donna.lib.request_action"
|
|
15
|
-
fsm_mode = "start"
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
19
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
20
|
-
3. If the developer hasn't provided you a description of the work for this session, ask them to provide it.
|
|
21
|
-
4. Create new session-level specification `session:work_scope` with developer-provided description of the work to be done.
|
|
22
|
-
5. `{{ donna.lib.goto("create_work_description") }}`
|
|
23
|
-
|
|
24
|
-
## Create Work Description
|
|
25
|
-
|
|
26
|
-
```toml donna
|
|
27
|
-
id = "create_work_description"
|
|
28
|
-
kind = "donna.lib.request_action"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
32
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
33
|
-
3. Formulate a concise high-level description of the work to be done, based on the developer-provided description.
|
|
34
|
-
4. Add this description to the `session:work_scope`.
|
|
35
|
-
5. `{{ donna.lib.goto("list_primary_goals") }}`
|
|
36
|
-
|
|
37
|
-
## List Primary Goals
|
|
38
|
-
|
|
39
|
-
```toml donna
|
|
40
|
-
id = "list_primary_goals"
|
|
41
|
-
kind = "donna.lib.request_action"
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
45
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
46
|
-
3. If you can add more goals based on existing `{{ donna.lib.view("session:work_scope") }}` add them to the specification.
|
|
47
|
-
4. If you can polish the existing goals according to the quality criteria in the `{{ donna.lib.view("donna:work:planning") }}` do it.
|
|
48
|
-
5. `{{ donna.lib.goto("list_objectives") }}`
|
|
49
|
-
|
|
50
|
-
## List Objectives
|
|
51
|
-
|
|
52
|
-
```toml donna
|
|
53
|
-
id = "list_objectives"
|
|
54
|
-
kind = "donna.lib.request_action"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
You MUST list objectives that need to be achieved to complete each goal.
|
|
58
|
-
|
|
59
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
60
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
61
|
-
3. If you can add more objectives based on existing `{{ donna.lib.view("session:work_scope") }}` add them to the specification.
|
|
62
|
-
4. If you can polish the existing objectives according to the quality criteria in the `{{ donna.lib.view("donna:work:planning") }}` do it.
|
|
63
|
-
5. `{{ donna.lib.goto("list_constraints") }}`
|
|
64
|
-
|
|
65
|
-
## List Constraints
|
|
66
|
-
|
|
67
|
-
```toml donna
|
|
68
|
-
id = "list_constraints"
|
|
69
|
-
kind = "donna.lib.request_action"
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
73
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
74
|
-
3. If you can add more constraints based on existing `{{ donna.lib.view("session:work_scope") }}` add them to the specification.
|
|
75
|
-
4. If you can polish the existing constraints according to the quality criteria in the `{{ donna.lib.view("donna:work:planning") }}` do it.
|
|
76
|
-
5. `{{ donna.lib.goto("list_acceptance_criteria") }}`
|
|
77
|
-
|
|
78
|
-
## List Acceptance Criteria
|
|
79
|
-
|
|
80
|
-
```toml donna
|
|
81
|
-
id = "list_acceptance_criteria"
|
|
82
|
-
kind = "donna.lib.request_action"
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
86
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
87
|
-
3. If you can add more acceptance criteria based on existing `{{ donna.lib.view("session:work_scope") }}` add them to the specification.
|
|
88
|
-
4. If you can polish the existing acceptance criteria according to the quality criteria in the `{{ donna.lib.view("donna:work:planning") }}` do it.
|
|
89
|
-
5. `{{ donna.lib.goto("list_deliverables") }}`
|
|
90
|
-
|
|
91
|
-
## List Deliverables
|
|
92
|
-
|
|
93
|
-
```toml donna
|
|
94
|
-
id = "list_deliverables"
|
|
95
|
-
kind = "donna.lib.request_action"
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
99
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
100
|
-
3. If you can list more deliverables based on existing `{{ donna.lib.view("session:work_scope") }}` add them to the specification.
|
|
101
|
-
4. If you can polish the existing deliverables according to the quality criteria in the `{{ donna.lib.view("donna:work:planning") }}` do it.
|
|
102
|
-
5. `{{ donna.lib.goto("prepare_plan") }}`
|
|
103
|
-
|
|
104
|
-
## Prepare Work Plan
|
|
105
|
-
|
|
106
|
-
```toml donna
|
|
107
|
-
id = "prepare_plan"
|
|
108
|
-
kind = "donna.lib.request_action"
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
1. Read the specification `{{ donna.lib.view("donna:work:planning") }}` if you haven't done it yet.
|
|
112
|
-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
|
|
113
|
-
3. Read the specification `{{ donna.lib.view("session:work_scope") }}` if you haven't done it yet.
|
|
114
|
-
4. Create new session-level workflow `session:work_execution` according to the scope of work you have defined.
|
|
115
|
-
5. `{{ donna.lib.goto("execute_plan") }}`
|
|
116
|
-
|
|
117
|
-
## Execute Plan
|
|
118
|
-
|
|
119
|
-
```toml donna
|
|
120
|
-
id = "execute_plan"
|
|
121
|
-
kind = "donna.lib.request_action"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
1. Run workflow `session:work_execution` to execute the work according to the plan.
|
|
125
|
-
2. `{{ donna.lib.goto("groom_work") }}`
|
|
126
|
-
|
|
127
|
-
## Groom Work
|
|
128
|
-
|
|
129
|
-
```toml donna
|
|
130
|
-
id = "groom_work"
|
|
131
|
-
kind = "donna.lib.request_action"
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
1. Run the grooming workflow to ensure that the result is polished, clean, and ready for review.
|
|
135
|
-
2. `{{ donna.lib.goto("finish") }}`
|
|
136
|
-
|
|
137
|
-
## Finish
|
|
138
|
-
|
|
139
|
-
```toml donna
|
|
140
|
-
id = "finish"
|
|
141
|
-
kind = "donna.lib.finish"
|
|
142
|
-
```
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# Show Workflow Spec + Schema
|
|
2
|
-
|
|
3
|
-
```toml donna
|
|
4
|
-
kind = "donna.lib.workflow"
|
|
5
|
-
start_operation_id = "read_workflow_source"
|
|
6
|
-
```
|
|
7
|
-
|
|
8
|
-
<!-- This is a temporary worflow, later Donna should have a specialized command to display the spec -->
|
|
9
|
-
|
|
10
|
-
This workflow guides an agent through loading a workflow artifact source, choosing the correct FSM graph DSL, and producing a concise schema summary with a graph and per-operation descriptions.
|
|
11
|
-
|
|
12
|
-
## Read workflow source
|
|
13
|
-
|
|
14
|
-
```toml donna
|
|
15
|
-
id = "read_workflow_source"
|
|
16
|
-
kind = "donna.lib.request_action"
|
|
17
|
-
fsm_mode = "start"
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
1. Identify the full workflow artifact id to summarize from the developer request (for example: `project:work:grooming`).
|
|
21
|
-
2. If the workflow id is missing or ambiguous, ask the developer to provide the exact id, then repeat this operation.
|
|
22
|
-
3. Fetch the workflow artifact source with:
|
|
23
|
-
- `./bin/donna.sh artifacts fetch '<workflow-id>'`
|
|
24
|
-
4. Read the fetched source from the path printed by the command to capture:
|
|
25
|
-
- Workflow name (H1 title) and short description.
|
|
26
|
-
- The start operation (from `start_operation_id` in the workflow head config, which must be marked with `fsm_mode = "start"`).
|
|
27
|
-
- Each operation `id`, `kind`, and any {% raw %}`{{ donna.lib.goto(...) }}`{% endraw %} transitions in its body.
|
|
28
|
-
5. Continue to {{ donna.lib.goto("select_fsm_dsl") }}.
|
|
29
|
-
|
|
30
|
-
## Select FSM graph DSL
|
|
31
|
-
|
|
32
|
-
```toml donna
|
|
33
|
-
id = "select_fsm_dsl"
|
|
34
|
-
kind = "donna.lib.request_action"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
1. Determine whether the developer requested a specific FSM graph DSL (from the original request or provided inputs).
|
|
38
|
-
2. If a DSL is specified, record it verbatim for rendering.
|
|
39
|
-
3. If no DSL is specified, select Mermaid DSL.
|
|
40
|
-
4. Continue to {{ donna.lib.goto("render_schema") }}.
|
|
41
|
-
|
|
42
|
-
## Render short schema
|
|
43
|
-
|
|
44
|
-
```toml donna
|
|
45
|
-
id = "render_schema"
|
|
46
|
-
kind = "donna.lib.request_action"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
1. Produce the schema output in the exact meta format below, using the selected DSL for the FSM graph:
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
# <workflow name>
|
|
53
|
-
|
|
54
|
-
<very short one sentence description of what it does>
|
|
55
|
-
|
|
56
|
-
<FSM graph description in some DSL>
|
|
57
|
-
|
|
58
|
-
<list of operations: `<id>` — <short one sentence description of what it does>
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
2. Ensure the FSM graph includes all operations and transitions, and clearly marks the start and finish operations.
|
|
62
|
-
3. For Mermaid, use a `stateDiagram-v2` or `flowchart` representation and keep node ids aligned with operation ids.
|
|
63
|
-
4. For each operation list entry, write a single concise sentence that is clean, complete, and faithful to the operation body.
|
|
64
|
-
5. Continue to {{ donna.lib.goto("refine_schema") }}.
|
|
65
|
-
|
|
66
|
-
## Refine schema output
|
|
67
|
-
|
|
68
|
-
```toml donna
|
|
69
|
-
id = "refine_schema"
|
|
70
|
-
kind = "donna.lib.request_action"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
1. Re-read the produced schema and improve clarity and correctness without changing the required format.
|
|
74
|
-
2. Tighten wording to keep each description to a single clean sentence while still being thorough and accurate.
|
|
75
|
-
3. Ensure the DSL selection rule is reflected in the graph and described output.
|
|
76
|
-
4. Continue to {{ donna.lib.goto("validate_schema") }}.
|
|
77
|
-
|
|
78
|
-
## Validate schema output
|
|
79
|
-
|
|
80
|
-
```toml donna
|
|
81
|
-
id = "validate_schema"
|
|
82
|
-
kind = "donna.lib.request_action"
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
1. Verify the output contains the title, one-sentence description, FSM graph, and operation list in the required order.
|
|
86
|
-
2. Confirm the chosen DSL is correct (developer-specified or Mermaid by default).
|
|
87
|
-
3. Confirm each operation description is a single sentence and matches the operation purpose.
|
|
88
|
-
4. If any check fails, return to {{ donna.lib.goto("refine_schema") }}.
|
|
89
|
-
5. If all checks pass, proceed to {{ donna.lib.goto("finish") }}.
|
|
90
|
-
|
|
91
|
-
## Finish
|
|
92
|
-
|
|
93
|
-
```toml donna
|
|
94
|
-
id = "finish"
|
|
95
|
-
kind = "donna.lib.finish"
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Workflow complete.
|