impliforge 0.1.1__tar.gz
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.
- impliforge-0.1.1/.gitignore +24 -0
- impliforge-0.1.1/.rules +1 -0
- impliforge-0.1.1/Formula/impliforge.rb +159 -0
- impliforge-0.1.1/LICENSE +21 -0
- impliforge-0.1.1/Makefile +25 -0
- impliforge-0.1.1/PKG-INFO +174 -0
- impliforge-0.1.1/README.ja.md +129 -0
- impliforge-0.1.1/README.md +131 -0
- impliforge-0.1.1/docs/design.md +148 -0
- impliforge-0.1.1/docs/final-summary.md +69 -0
- impliforge-0.1.1/docs/fix-report.md +76 -0
- impliforge-0.1.1/docs/implementation-plan.md +1190 -0
- impliforge-0.1.1/docs/review-report.md +60 -0
- impliforge-0.1.1/docs/runbook.md +82 -0
- impliforge-0.1.1/docs/test-plan.md +121 -0
- impliforge-0.1.1/docs/test-results.md +61 -0
- impliforge-0.1.1/pyproject.toml +44 -0
- impliforge-0.1.1/src/impliforge/__init__.py +5 -0
- impliforge-0.1.1/src/impliforge/__main__.py +6 -0
- impliforge-0.1.1/src/impliforge/agents/base.py +135 -0
- impliforge-0.1.1/src/impliforge/agents/documentation.py +355 -0
- impliforge-0.1.1/src/impliforge/agents/fixer.py +529 -0
- impliforge-0.1.1/src/impliforge/agents/implementation.py +319 -0
- impliforge-0.1.1/src/impliforge/agents/planner.py +142 -0
- impliforge-0.1.1/src/impliforge/agents/requirements.py +213 -0
- impliforge-0.1.1/src/impliforge/agents/reviewer.py +553 -0
- impliforge-0.1.1/src/impliforge/agents/test_design.py +443 -0
- impliforge-0.1.1/src/impliforge/agents/test_execution.py +371 -0
- impliforge-0.1.1/src/impliforge/main.py +1315 -0
- impliforge-0.1.1/src/impliforge/models/routing.py +386 -0
- impliforge-0.1.1/src/impliforge/orchestration/artifact_writer.py +932 -0
- impliforge-0.1.1/src/impliforge/orchestration/edit_phase.py +706 -0
- impliforge-0.1.1/src/impliforge/orchestration/orchestrator.py +409 -0
- impliforge-0.1.1/src/impliforge/orchestration/runtime_support.py +161 -0
- impliforge-0.1.1/src/impliforge/orchestration/session_manager.py +375 -0
- impliforge-0.1.1/src/impliforge/orchestration/state_store.py +197 -0
- impliforge-0.1.1/src/impliforge/orchestration/workflow.py +416 -0
- impliforge-0.1.1/src/impliforge/runtime/code_editing.py +585 -0
- impliforge-0.1.1/src/impliforge/runtime/copilot_client.py +733 -0
- impliforge-0.1.1/src/impliforge/runtime/editor.py +678 -0
- impliforge-0.1.1/tests/orchestration_test_helpers.py +196 -0
- impliforge-0.1.1/tests/test_agents_documentation.py +304 -0
- impliforge-0.1.1/tests/test_agents_fixer.py +548 -0
- impliforge-0.1.1/tests/test_agents_implementation.py +345 -0
- impliforge-0.1.1/tests/test_agents_planner.py +218 -0
- impliforge-0.1.1/tests/test_agents_requirements.py +181 -0
- impliforge-0.1.1/tests/test_agents_reviewer.py +322 -0
- impliforge-0.1.1/tests/test_agents_test_design.py +279 -0
- impliforge-0.1.1/tests/test_agents_test_execution.py +447 -0
- impliforge-0.1.1/tests/test_main_orchestrator.py +2674 -0
- impliforge-0.1.1/tests/test_models_routing.py +356 -0
- impliforge-0.1.1/tests/test_module_entrypoint.py +35 -0
- impliforge-0.1.1/tests/test_orchestration_artifact_writer.py +1608 -0
- impliforge-0.1.1/tests/test_orchestration_edit_phase.py +373 -0
- impliforge-0.1.1/tests/test_orchestration_helpers.py +4 -0
- impliforge-0.1.1/tests/test_orchestration_orchestrator.py +750 -0
- impliforge-0.1.1/tests/test_orchestration_runtime_support.py +364 -0
- impliforge-0.1.1/tests/test_orchestration_session_manager.py +480 -0
- impliforge-0.1.1/tests/test_orchestration_state_store.py +216 -0
- impliforge-0.1.1/tests/test_runtime_code_editing.py +929 -0
- impliforge-0.1.1/tests/test_runtime_copilot_client.py +885 -0
- impliforge-0.1.1/tests/test_runtime_editor.py +511 -0
- impliforge-0.1.1/uv.lock +758 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv
|
|
11
|
+
|
|
12
|
+
.env
|
|
13
|
+
.envrc
|
|
14
|
+
|
|
15
|
+
# Local environment
|
|
16
|
+
.python-version
|
|
17
|
+
|
|
18
|
+
# Generated workflow artifacts
|
|
19
|
+
artifacts/
|
|
20
|
+
|
|
21
|
+
# Coverage data
|
|
22
|
+
.coverage
|
|
23
|
+
|
|
24
|
+
.pytest_cache/
|
impliforge-0.1.1/.rules
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
../ctxledger/.rules
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
class Impliforge < Formula
|
|
2
|
+
include Language::Python::Virtualenv
|
|
3
|
+
|
|
4
|
+
desc "Orchestrator-centric multi-agent workflow runner built on the GitHub Copilot SDK"
|
|
5
|
+
homepage "https://pypi.org/project/impliforge/"
|
|
6
|
+
url "https://github.com/rioriost/impliforge/releases/download/0.1.1/impliforge-0.1.1.tar.gz"
|
|
7
|
+
sha256 "f03f757eb5bb5fe66b52d1a5afdb713b82d6dd3bb285c53c66d247ef23ef0021"
|
|
8
|
+
license "MIT"
|
|
9
|
+
|
|
10
|
+
depends_on "python@3.14"
|
|
11
|
+
resource "annotated-types" do
|
|
12
|
+
url "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl"
|
|
13
|
+
sha256 "1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"
|
|
14
|
+
end
|
|
15
|
+
resource "github-copilot-sdk" do
|
|
16
|
+
if OS.mac? && Hardware::CPU.arm?
|
|
17
|
+
url "https://files.pythonhosted.org/packages/04/04/d2e8bf4587c4da270ccb9cbd5ab8a2c4b41217c2bf04a43904be8a27ae20/github_copilot_sdk-0.2.1-py3-none-macosx_11_0_arm64.whl"
|
|
18
|
+
sha256 "ef7ff68eb8960515e1a2e199ac0ffb9a17cd3325266461e6edd7290e43dcf012"
|
|
19
|
+
elsif OS.mac? && Hardware::CPU.intel?
|
|
20
|
+
url "https://files.pythonhosted.org/packages/67/41/76a9d50d7600bf8d26c659dc113be62e4e56e00a5cbfd544e1b5b200f45c/github_copilot_sdk-0.2.1-py3-none-macosx_10_9_x86_64.whl"
|
|
21
|
+
sha256 "c0823150f3b73431f04caee43d1dbafac22ae7e8bd1fc83727ee8363089ee038"
|
|
22
|
+
elsif OS.linux?
|
|
23
|
+
url "https://files.pythonhosted.org/packages/cf/ee/facf04e22e42d4bdd4fe3d356f3a51180a6ea769ae2ac306d0897f9bf9d9/github_copilot_sdk-0.2.1-py3-none-manylinux_2_28_x86_64.whl"
|
|
24
|
+
sha256 "6502be0b9ececacbda671835e5f61c7aaa906c6b8657ee252cad6cc8335cac8e"
|
|
25
|
+
else
|
|
26
|
+
url "https://files.pythonhosted.org/packages/04/04/d2e8bf4587c4da270ccb9cbd5ab8a2c4b41217c2bf04a43904be8a27ae20/github_copilot_sdk-0.2.1-py3-none-macosx_11_0_arm64.whl"
|
|
27
|
+
sha256 "ef7ff68eb8960515e1a2e199ac0ffb9a17cd3325266461e6edd7290e43dcf012"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
resource "pydantic" do
|
|
31
|
+
url "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl"
|
|
32
|
+
sha256 "e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"
|
|
33
|
+
end
|
|
34
|
+
resource "pydantic-core" do
|
|
35
|
+
if OS.mac? && Hardware::CPU.arm?
|
|
36
|
+
url "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl"
|
|
37
|
+
sha256 "1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14"
|
|
38
|
+
elsif OS.mac? && Hardware::CPU.intel?
|
|
39
|
+
url "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl"
|
|
40
|
+
sha256 "3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a"
|
|
41
|
+
elsif OS.linux?
|
|
42
|
+
url "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
|
|
43
|
+
sha256 "22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375"
|
|
44
|
+
else
|
|
45
|
+
url "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl"
|
|
46
|
+
sha256 "1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
resource "python-dateutil" do
|
|
50
|
+
url "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"
|
|
51
|
+
sha256 "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
|
|
52
|
+
end
|
|
53
|
+
resource "six" do
|
|
54
|
+
url "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"
|
|
55
|
+
sha256 "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"
|
|
56
|
+
end
|
|
57
|
+
resource "typing-extensions" do
|
|
58
|
+
url "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl"
|
|
59
|
+
sha256 "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"
|
|
60
|
+
end
|
|
61
|
+
resource "typing-inspection" do
|
|
62
|
+
url "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl"
|
|
63
|
+
sha256 "4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def install
|
|
67
|
+
if OS.mac?
|
|
68
|
+
ENV.append "LDFLAGS", "-Wl,-headerpad_max_install_names"
|
|
69
|
+
ENV.append "RUSTFLAGS", "-C link-arg=-Wl,-headerpad_max_install_names"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
venv = virtualenv_create(libexec, "python3.14")
|
|
73
|
+
|
|
74
|
+
resource("annotated-types").stage do
|
|
75
|
+
wheel = Dir["*.whl"].first
|
|
76
|
+
if wheel
|
|
77
|
+
venv.pip_install Pathname(wheel)
|
|
78
|
+
else
|
|
79
|
+
venv.pip_install Pathname.pwd
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
resource("github-copilot-sdk").stage do
|
|
84
|
+
if OS.mac? && Hardware::CPU.arm?
|
|
85
|
+
venv.pip_install Pathname(Dir["*.whl"].first)
|
|
86
|
+
elsif OS.mac? && Hardware::CPU.intel?
|
|
87
|
+
venv.pip_install Pathname(Dir["*.whl"].first)
|
|
88
|
+
elsif OS.linux?
|
|
89
|
+
venv.pip_install Pathname(Dir["*.whl"].first)
|
|
90
|
+
else
|
|
91
|
+
venv.pip_install Pathname.pwd
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
resource("pydantic").stage do
|
|
96
|
+
wheel = Dir["*.whl"].first
|
|
97
|
+
if wheel
|
|
98
|
+
venv.pip_install Pathname(wheel)
|
|
99
|
+
else
|
|
100
|
+
venv.pip_install Pathname.pwd
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
resource("pydantic-core").stage do
|
|
105
|
+
if OS.mac? && Hardware::CPU.arm?
|
|
106
|
+
venv.pip_install Pathname(Dir["*.whl"].first)
|
|
107
|
+
elsif OS.mac? && Hardware::CPU.intel?
|
|
108
|
+
venv.pip_install Pathname(Dir["*.whl"].first)
|
|
109
|
+
elsif OS.linux?
|
|
110
|
+
venv.pip_install Pathname(Dir["*.whl"].first)
|
|
111
|
+
else
|
|
112
|
+
venv.pip_install Pathname.pwd
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
resource("python-dateutil").stage do
|
|
117
|
+
wheel = Dir["*.whl"].first
|
|
118
|
+
if wheel
|
|
119
|
+
venv.pip_install Pathname(wheel)
|
|
120
|
+
else
|
|
121
|
+
venv.pip_install Pathname.pwd
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
resource("six").stage do
|
|
126
|
+
wheel = Dir["*.whl"].first
|
|
127
|
+
if wheel
|
|
128
|
+
venv.pip_install Pathname(wheel)
|
|
129
|
+
else
|
|
130
|
+
venv.pip_install Pathname.pwd
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
resource("typing-extensions").stage do
|
|
135
|
+
wheel = Dir["*.whl"].first
|
|
136
|
+
if wheel
|
|
137
|
+
venv.pip_install Pathname(wheel)
|
|
138
|
+
else
|
|
139
|
+
venv.pip_install Pathname.pwd
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
resource("typing-inspection").stage do
|
|
144
|
+
wheel = Dir["*.whl"].first
|
|
145
|
+
if wheel
|
|
146
|
+
venv.pip_install Pathname(wheel)
|
|
147
|
+
else
|
|
148
|
+
venv.pip_install Pathname.pwd
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
venv.pip_install buildpath
|
|
153
|
+
bin.install_symlink libexec/"bin/impliforge"
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
test do
|
|
157
|
+
system "#{bin}/impliforge", "--help"
|
|
158
|
+
end
|
|
159
|
+
end
|
impliforge-0.1.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Rio Fujita
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
SHELL := /bin/sh
|
|
2
|
+
|
|
3
|
+
REPO_ROOT := $(CURDIR)
|
|
4
|
+
UV ?= uv
|
|
5
|
+
DIST_DIR := $(REPO_ROOT)/dist
|
|
6
|
+
FORMULA_DIR := $(REPO_ROOT)/Formula
|
|
7
|
+
FORMULA_FILE := $(FORMULA_DIR)/impliforge.rb
|
|
8
|
+
|
|
9
|
+
.PHONY: release-artifacts sync build formula
|
|
10
|
+
|
|
11
|
+
release-artifacts: sync build formula
|
|
12
|
+
|
|
13
|
+
sync:
|
|
14
|
+
$(UV) sync --extra test --group dev
|
|
15
|
+
|
|
16
|
+
build:
|
|
17
|
+
rm -rf "$(DIST_DIR)"
|
|
18
|
+
$(UV) build
|
|
19
|
+
|
|
20
|
+
formula:
|
|
21
|
+
mkdir -p "$(FORMULA_DIR)"
|
|
22
|
+
genformula \
|
|
23
|
+
--source-subdir . \
|
|
24
|
+
--pyproject "$(REPO_ROOT)/pyproject.toml" \
|
|
25
|
+
--output "$(FORMULA_FILE)"
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: impliforge
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Orchestrator-centric multi-agent workflow runner built on the GitHub Copilot SDK
|
|
5
|
+
Author-email: Rio Fujita <rio_github@rio.st>
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 Rio Fujita
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Keywords: agents,automation,copilot,orchestrator,workflow
|
|
29
|
+
Classifier: Development Status :: 3 - Alpha
|
|
30
|
+
Classifier: Intended Audience :: Developers
|
|
31
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
32
|
+
Classifier: Programming Language :: Python :: 3
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
34
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
35
|
+
Classifier: Topic :: Software Development :: Testing
|
|
36
|
+
Requires-Python: >=3.14
|
|
37
|
+
Requires-Dist: github-copilot-sdk>=0.2.1
|
|
38
|
+
Provides-Extra: test
|
|
39
|
+
Requires-Dist: bandit>=1.7.10; extra == 'test'
|
|
40
|
+
Requires-Dist: pytest-cov>=7; extra == 'test'
|
|
41
|
+
Requires-Dist: pytest>=9; extra == 'test'
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
44
|
+
# impliforge
|
|
45
|
+
|
|
46
|
+
`impliforge` is an orchestrator-centric multi-agent workflow tool built on top of the GitHub Copilot SDK.
|
|
47
|
+
|
|
48
|
+
It treats requirement analysis, planning, documentation generation, implementation proposals, test design and execution, review, fix loops, and artifact persistence as one end-to-end workflow.
|
|
49
|
+
|
|
50
|
+
## License
|
|
51
|
+
|
|
52
|
+
This project is licensed under the MIT License. See `LICENSE` for details.
|
|
53
|
+
|
|
54
|
+
## Features
|
|
55
|
+
|
|
56
|
+
- Multi-agent workflow covering requirements, planning, documentation, implementation, test design, test execution, review, and fix loops
|
|
57
|
+
- Session snapshot, restore, and rotation support
|
|
58
|
+
- Task-aware model routing
|
|
59
|
+
- Operator-facing run summaries, final summaries, review reports, and fix reports
|
|
60
|
+
- Acceptance gating and completion evidence
|
|
61
|
+
- Approval-aware safe edit orchestration
|
|
62
|
+
|
|
63
|
+
## Installation
|
|
64
|
+
|
|
65
|
+
This project uses `uv` for dependency management and execution.
|
|
66
|
+
|
|
67
|
+
Install the default dependencies:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
uv sync
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Install test dependencies as well:
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
uv sync --extra test
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## CLI Usage
|
|
80
|
+
|
|
81
|
+
`impliforge` accepts a **requirement file path** as its positional argument, not an inline requirement string.
|
|
82
|
+
|
|
83
|
+
### Basic usage
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
uv run impliforge requirements/sample-requirement.md
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Or run it as a module:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
uv run python -m impliforge requirements/sample-requirement.md
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### With options
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
uv run impliforge requirements/sample-requirement.md \
|
|
99
|
+
--model gpt-5.4 \
|
|
100
|
+
--routing-mode quality \
|
|
101
|
+
--token-usage-ratio 0.35 \
|
|
102
|
+
--artifacts-dir artifacts \
|
|
103
|
+
--docs-dir docs
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Requirement File Format
|
|
107
|
+
|
|
108
|
+
Requirement files are expected to be plain text or Markdown. Multi-line requirements are supported and recommended.
|
|
109
|
+
|
|
110
|
+
Example:
|
|
111
|
+
|
|
112
|
+
```md
|
|
113
|
+
Build a multi-agent environment using the GitHub Copilot SDK
|
|
114
|
+
|
|
115
|
+
- Support session persistence
|
|
116
|
+
- Include review and fix loops
|
|
117
|
+
- Persist outputs under docs/ and artifacts/
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Error Handling
|
|
121
|
+
|
|
122
|
+
The CLI exits with an error when:
|
|
123
|
+
|
|
124
|
+
- The specified requirement file does not exist
|
|
125
|
+
- The requirement file is empty
|
|
126
|
+
- The requirement file cannot be read
|
|
127
|
+
|
|
128
|
+
Example:
|
|
129
|
+
|
|
130
|
+
```sh
|
|
131
|
+
uv run impliforge requirements/missing.md
|
|
132
|
+
# error: requirement file not found: requirements/missing.md
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Generated Outputs
|
|
136
|
+
|
|
137
|
+
The workflow primarily generates the following outputs.
|
|
138
|
+
|
|
139
|
+
### Documentation outputs
|
|
140
|
+
|
|
141
|
+
- `docs/design.md`
|
|
142
|
+
- `docs/runbook.md`
|
|
143
|
+
- `docs/test-plan.md`
|
|
144
|
+
- `docs/test-results.md`
|
|
145
|
+
- `docs/review-report.md`
|
|
146
|
+
- `docs/fix-report.md`
|
|
147
|
+
- `docs/final-summary.md`
|
|
148
|
+
|
|
149
|
+
### Artifact outputs
|
|
150
|
+
|
|
151
|
+
- `artifacts/workflow-state.json`
|
|
152
|
+
- `artifacts/sessions/<session_id>/session-snapshot.json`
|
|
153
|
+
- `artifacts/workflows/<workflow_id>/workflow-details.json`
|
|
154
|
+
- `artifacts/summaries/<workflow_id>/run-summary.json`
|
|
155
|
+
|
|
156
|
+
## Validation
|
|
157
|
+
|
|
158
|
+
Run the full test suite:
|
|
159
|
+
|
|
160
|
+
```sh
|
|
161
|
+
uv run pytest -q tests
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Run tests with coverage:
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
uv run pytest --cov=src/impliforge --cov-report=term-missing:skip-covered -q tests
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Notes
|
|
171
|
+
|
|
172
|
+
- Generated outputs under `docs/` and `artifacts/` are treated as normal workflow outputs
|
|
173
|
+
- Source edits are expected to go through approval-aware paths
|
|
174
|
+
- Open questions should be treated as either resolved or explicitly deferred
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# impliforge
|
|
2
|
+
|
|
3
|
+
`impliforge` は、GitHub Copilot SDK を基盤にした orchestrator-centric なマルチエージェント実行ツール。
|
|
4
|
+
|
|
5
|
+
要件分析、計画、ドキュメント生成、実装提案、テスト設計・実行、レビュー、修正ループ、成果物保存までを一連の workflow として扱う。
|
|
6
|
+
|
|
7
|
+
## ライセンス
|
|
8
|
+
|
|
9
|
+
このプロジェクトは MIT License の下で提供される。詳細は `LICENSE` を参照。
|
|
10
|
+
|
|
11
|
+
## 主な機能
|
|
12
|
+
|
|
13
|
+
- requirements / planning / documentation / implementation / test_design / test_execution / review / fix loop を持つ workflow
|
|
14
|
+
- session snapshot / restore / rotation
|
|
15
|
+
- task-aware model routing
|
|
16
|
+
- operator-facing run summary / final summary / review / fix artifacts
|
|
17
|
+
- acceptance gating と completion evidence
|
|
18
|
+
- approval-aware safe edit orchestration
|
|
19
|
+
|
|
20
|
+
## インストール
|
|
21
|
+
|
|
22
|
+
依存解決と実行は `uv` 前提。
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
uv sync
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
テスト依存も入れる場合:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
uv sync --extra test
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## CLI の使い方
|
|
35
|
+
|
|
36
|
+
`impliforge` は**要件文字列そのものではなく、要件を書いたファイルパス**を位置引数として受け取る。
|
|
37
|
+
|
|
38
|
+
### 基本
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
uv run impliforge requirements/sample-requirement.md
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
または module 実行:
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
uv run python -m impliforge requirements/sample-requirement.md
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### オプション付き
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
uv run impliforge requirements/sample-requirement.md \
|
|
54
|
+
--model gpt-5.4 \
|
|
55
|
+
--routing-mode quality \
|
|
56
|
+
--token-usage-ratio 0.35 \
|
|
57
|
+
--artifacts-dir artifacts \
|
|
58
|
+
--docs-dir docs
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 要件ファイルの形式
|
|
62
|
+
|
|
63
|
+
要件ファイルは plain text / markdown を想定。複数行で書いてよい。
|
|
64
|
+
|
|
65
|
+
例:
|
|
66
|
+
|
|
67
|
+
```md
|
|
68
|
+
GitHub Copilot SDK を用いたマルチエージェント環境を構築する
|
|
69
|
+
|
|
70
|
+
- session persistence を持つこと
|
|
71
|
+
- review と fix loop を含むこと
|
|
72
|
+
- docs/ と artifacts/ に成果物を保存すること
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## エラーハンドリング
|
|
76
|
+
|
|
77
|
+
次の場合はエラー終了する。
|
|
78
|
+
|
|
79
|
+
- 指定した要件ファイルが存在しない
|
|
80
|
+
- 要件ファイルが空
|
|
81
|
+
- 要件ファイルを読み取れない
|
|
82
|
+
|
|
83
|
+
例:
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
uv run impliforge requirements/missing.md
|
|
87
|
+
# error: requirement file not found: requirements/missing.md
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 生成物
|
|
91
|
+
|
|
92
|
+
主に以下を生成する。
|
|
93
|
+
|
|
94
|
+
### docs
|
|
95
|
+
|
|
96
|
+
- `docs/design.md`
|
|
97
|
+
- `docs/runbook.md`
|
|
98
|
+
- `docs/test-plan.md`
|
|
99
|
+
- `docs/test-results.md`
|
|
100
|
+
- `docs/review-report.md`
|
|
101
|
+
- `docs/fix-report.md`
|
|
102
|
+
- `docs/final-summary.md`
|
|
103
|
+
|
|
104
|
+
### artifacts
|
|
105
|
+
|
|
106
|
+
- `artifacts/workflow-state.json`
|
|
107
|
+
- `artifacts/sessions/<session_id>/session-snapshot.json`
|
|
108
|
+
- `artifacts/workflows/<workflow_id>/workflow-details.json`
|
|
109
|
+
- `artifacts/summaries/<workflow_id>/run-summary.json`
|
|
110
|
+
|
|
111
|
+
## 検証
|
|
112
|
+
|
|
113
|
+
全体テスト:
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
uv run pytest -q tests
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
coverage:
|
|
120
|
+
|
|
121
|
+
```sh
|
|
122
|
+
uv run pytest --cov=src/impliforge --cov-report=term-missing:skip-covered -q tests
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 補足
|
|
126
|
+
|
|
127
|
+
- `docs/` と `artifacts/` への生成物保存は通常運用として扱う
|
|
128
|
+
- source edit は approval-aware な経路を通す前提
|
|
129
|
+
- unresolved open questions は resolved または explicitly deferred として扱う
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# impliforge
|
|
2
|
+
|
|
3
|
+
`impliforge` is an orchestrator-centric multi-agent workflow tool built on top of the GitHub Copilot SDK.
|
|
4
|
+
|
|
5
|
+
It treats requirement analysis, planning, documentation generation, implementation proposals, test design and execution, review, fix loops, and artifact persistence as one end-to-end workflow.
|
|
6
|
+
|
|
7
|
+
## License
|
|
8
|
+
|
|
9
|
+
This project is licensed under the MIT License. See `LICENSE` for details.
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- Multi-agent workflow covering requirements, planning, documentation, implementation, test design, test execution, review, and fix loops
|
|
14
|
+
- Session snapshot, restore, and rotation support
|
|
15
|
+
- Task-aware model routing
|
|
16
|
+
- Operator-facing run summaries, final summaries, review reports, and fix reports
|
|
17
|
+
- Acceptance gating and completion evidence
|
|
18
|
+
- Approval-aware safe edit orchestration
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
This project uses `uv` for dependency management and execution.
|
|
23
|
+
|
|
24
|
+
Install the default dependencies:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
uv sync
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Install test dependencies as well:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
uv sync --extra test
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## CLI Usage
|
|
37
|
+
|
|
38
|
+
`impliforge` accepts a **requirement file path** as its positional argument, not an inline requirement string.
|
|
39
|
+
|
|
40
|
+
### Basic usage
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
uv run impliforge requirements/sample-requirement.md
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or run it as a module:
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
uv run python -m impliforge requirements/sample-requirement.md
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### With options
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
uv run impliforge requirements/sample-requirement.md \
|
|
56
|
+
--model gpt-5.4 \
|
|
57
|
+
--routing-mode quality \
|
|
58
|
+
--token-usage-ratio 0.35 \
|
|
59
|
+
--artifacts-dir artifacts \
|
|
60
|
+
--docs-dir docs
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Requirement File Format
|
|
64
|
+
|
|
65
|
+
Requirement files are expected to be plain text or Markdown. Multi-line requirements are supported and recommended.
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
|
|
69
|
+
```md
|
|
70
|
+
Build a multi-agent environment using the GitHub Copilot SDK
|
|
71
|
+
|
|
72
|
+
- Support session persistence
|
|
73
|
+
- Include review and fix loops
|
|
74
|
+
- Persist outputs under docs/ and artifacts/
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Error Handling
|
|
78
|
+
|
|
79
|
+
The CLI exits with an error when:
|
|
80
|
+
|
|
81
|
+
- The specified requirement file does not exist
|
|
82
|
+
- The requirement file is empty
|
|
83
|
+
- The requirement file cannot be read
|
|
84
|
+
|
|
85
|
+
Example:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
uv run impliforge requirements/missing.md
|
|
89
|
+
# error: requirement file not found: requirements/missing.md
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Generated Outputs
|
|
93
|
+
|
|
94
|
+
The workflow primarily generates the following outputs.
|
|
95
|
+
|
|
96
|
+
### Documentation outputs
|
|
97
|
+
|
|
98
|
+
- `docs/design.md`
|
|
99
|
+
- `docs/runbook.md`
|
|
100
|
+
- `docs/test-plan.md`
|
|
101
|
+
- `docs/test-results.md`
|
|
102
|
+
- `docs/review-report.md`
|
|
103
|
+
- `docs/fix-report.md`
|
|
104
|
+
- `docs/final-summary.md`
|
|
105
|
+
|
|
106
|
+
### Artifact outputs
|
|
107
|
+
|
|
108
|
+
- `artifacts/workflow-state.json`
|
|
109
|
+
- `artifacts/sessions/<session_id>/session-snapshot.json`
|
|
110
|
+
- `artifacts/workflows/<workflow_id>/workflow-details.json`
|
|
111
|
+
- `artifacts/summaries/<workflow_id>/run-summary.json`
|
|
112
|
+
|
|
113
|
+
## Validation
|
|
114
|
+
|
|
115
|
+
Run the full test suite:
|
|
116
|
+
|
|
117
|
+
```sh
|
|
118
|
+
uv run pytest -q tests
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Run tests with coverage:
|
|
122
|
+
|
|
123
|
+
```sh
|
|
124
|
+
uv run pytest --cov=src/impliforge --cov-report=term-missing:skip-covered -q tests
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Notes
|
|
128
|
+
|
|
129
|
+
- Generated outputs under `docs/` and `artifacts/` are treated as normal workflow outputs
|
|
130
|
+
- Source edits are expected to go through approval-aware paths
|
|
131
|
+
- Open questions should be treated as either resolved or explicitly deferred
|