ma-pmo 0.1.0__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.
- ma_pmo-0.1.0/.gitignore +39 -0
- ma_pmo-0.1.0/CHANGELOG.md +60 -0
- ma_pmo-0.1.0/COMMERCIAL_LICENSE.md +79 -0
- ma_pmo-0.1.0/LICENSE +661 -0
- ma_pmo-0.1.0/NOTICE +25 -0
- ma_pmo-0.1.0/PKG-INFO +270 -0
- ma_pmo-0.1.0/README.ko.md +221 -0
- ma_pmo-0.1.0/README.md +221 -0
- ma_pmo-0.1.0/TRADEMARKS.md +65 -0
- ma_pmo-0.1.0/deploy/README.ko.md +90 -0
- ma_pmo-0.1.0/deploy/README.md +88 -0
- ma_pmo-0.1.0/infra/otel/README.md +29 -0
- ma_pmo-0.1.0/ma_pmo/__init__.py +3 -0
- ma_pmo-0.1.0/ma_pmo/agents/__init__.py +1 -0
- ma_pmo-0.1.0/ma_pmo/agents/allocation.py +106 -0
- ma_pmo-0.1.0/ma_pmo/agents/base.py +39 -0
- ma_pmo-0.1.0/ma_pmo/agents/cpm.py +132 -0
- ma_pmo-0.1.0/ma_pmo/agents/gates.py +162 -0
- ma_pmo-0.1.0/ma_pmo/agents/governance.py +89 -0
- ma_pmo-0.1.0/ma_pmo/agents/knowledge.py +96 -0
- ma_pmo-0.1.0/ma_pmo/agents/orchestrator.py +88 -0
- ma_pmo-0.1.0/ma_pmo/agents/orchestrator_rules.py +120 -0
- ma_pmo-0.1.0/ma_pmo/agents/planning.py +119 -0
- ma_pmo-0.1.0/ma_pmo/agents/reporting.py +134 -0
- ma_pmo-0.1.0/ma_pmo/agents/resource.py +102 -0
- ma_pmo-0.1.0/ma_pmo/agents/risk.py +158 -0
- ma_pmo-0.1.0/ma_pmo/agents/risk_signals.py +101 -0
- ma_pmo-0.1.0/ma_pmo/api/__init__.py +0 -0
- ma_pmo-0.1.0/ma_pmo/api/deps.py +12 -0
- ma_pmo-0.1.0/ma_pmo/api/main.py +99 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/__init__.py +0 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/approvals.py +29 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/evaluation.py +14 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/knowledge.py +46 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/kpi.py +46 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/messages.py +42 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/orchestrate.py +34 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/planning.py +54 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/risks.py +31 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/scenarios.py +29 -0
- ma_pmo-0.1.0/ma_pmo/api/routers/webhooks.py +38 -0
- ma_pmo-0.1.0/ma_pmo/cli.py +58 -0
- ma_pmo-0.1.0/ma_pmo/connectors/__init__.py +1 -0
- ma_pmo-0.1.0/ma_pmo/connectors/base.py +10 -0
- ma_pmo-0.1.0/ma_pmo/connectors/calendar.py +8 -0
- ma_pmo-0.1.0/ma_pmo/connectors/jira_mock.py +56 -0
- ma_pmo-0.1.0/ma_pmo/connectors/vectordb.py +85 -0
- ma_pmo-0.1.0/ma_pmo/core/__init__.py +1 -0
- ma_pmo-0.1.0/ma_pmo/core/config.py +54 -0
- ma_pmo-0.1.0/ma_pmo/core/graph.py +75 -0
- ma_pmo-0.1.0/ma_pmo/core/hitl.py +72 -0
- ma_pmo-0.1.0/ma_pmo/core/i18n.py +60 -0
- ma_pmo-0.1.0/ma_pmo/core/kpi.py +77 -0
- ma_pmo-0.1.0/ma_pmo/core/llm.py +119 -0
- ma_pmo-0.1.0/ma_pmo/core/obs.py +40 -0
- ma_pmo-0.1.0/ma_pmo/core/protocol.py +61 -0
- ma_pmo-0.1.0/ma_pmo/core/scenarios.py +601 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/__init__.py +4 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/message.py +59 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/__init__.py +35 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/allocation_v1.py +17 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/gate_review_v1.py +18 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/knowledge_v1.py +19 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/report_v1.py +22 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/risk_alert_v1.py +15 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/routing_v1.py +23 -0
- ma_pmo-0.1.0/ma_pmo/core/schemas/payloads/schedule_v1.py +19 -0
- ma_pmo-0.1.0/ma_pmo/core/state/__init__.py +4 -0
- ma_pmo-0.1.0/ma_pmo/core/state/blackboard.py +32 -0
- ma_pmo-0.1.0/ma_pmo/core/state/checkpointer.py +24 -0
- ma_pmo-0.1.0/ma_pmo/db/__init__.py +1 -0
- ma_pmo-0.1.0/ma_pmo/db/init.py +72 -0
- ma_pmo-0.1.0/ma_pmo/db/models.py +152 -0
- ma_pmo-0.1.0/ma_pmo/db/session.py +37 -0
- ma_pmo-0.1.0/ma_pmo/eval/__init__.py +1 -0
- ma_pmo-0.1.0/ma_pmo/eval/aggregate.py +23 -0
- ma_pmo-0.1.0/ma_pmo/eval/harness.py +171 -0
- ma_pmo-0.1.0/ma_pmo/eval/run.py +31 -0
- ma_pmo-0.1.0/ma_pmo/fixtures/baselines.json +7 -0
- ma_pmo-0.1.0/ma_pmo/fixtures/lessons.json +109 -0
- ma_pmo-0.1.0/ma_pmo/fixtures/risk_ground_truth.json +8 -0
- ma_pmo-0.1.0/ma_pmo/fixtures/sample_portfolio.json +47 -0
- ma_pmo-0.1.0/ma_pmo/harness/README.ko.md +69 -0
- ma_pmo-0.1.0/ma_pmo/harness/README.md +64 -0
- ma_pmo-0.1.0/ma_pmo/harness/__init__.py +20 -0
- ma_pmo-0.1.0/ma_pmo/harness/cli.py +47 -0
- ma_pmo-0.1.0/ma_pmo/harness/collectors.py +60 -0
- ma_pmo-0.1.0/ma_pmo/harness/experiments/__init__.py +15 -0
- ma_pmo-0.1.0/ma_pmo/harness/experiments/a7_ablation.py +9 -0
- ma_pmo-0.1.0/ma_pmo/harness/experiments/full_suite.py +8 -0
- ma_pmo-0.1.0/ma_pmo/harness/experiments/hypothesis_matrix.py +8 -0
- ma_pmo-0.1.0/ma_pmo/harness/reporters.py +118 -0
- ma_pmo-0.1.0/ma_pmo/harness/runner.py +89 -0
- ma_pmo-0.1.0/ma_pmo/harness/spec.py +56 -0
- ma_pmo-0.1.0/pyproject.toml +104 -0
- ma_pmo-0.1.0/tests/conftest.py +27 -0
- ma_pmo-0.1.0/tests/test_allocation.py +49 -0
- ma_pmo-0.1.0/tests/test_cpm.py +43 -0
- ma_pmo-0.1.0/tests/test_eval.py +44 -0
- ma_pmo-0.1.0/tests/test_gates.py +67 -0
- ma_pmo-0.1.0/tests/test_harness.py +51 -0
- ma_pmo-0.1.0/tests/test_hitl.py +32 -0
- ma_pmo-0.1.0/tests/test_i18n.py +63 -0
- ma_pmo-0.1.0/tests/test_knowledge.py +50 -0
- ma_pmo-0.1.0/tests/test_orchestration.py +68 -0
- ma_pmo-0.1.0/tests/test_planning_resource_smoke.py +40 -0
- ma_pmo-0.1.0/tests/test_protocol.py +34 -0
- ma_pmo-0.1.0/tests/test_reporting_smoke.py +45 -0
- ma_pmo-0.1.0/tests/test_risk_signals.py +65 -0
- ma_pmo-0.1.0/tests/test_risk_smoke.py +56 -0
- ma_pmo-0.1.0/tests/test_scenarios.py +68 -0
- ma_pmo-0.1.0/tests/test_schemas.py +35 -0
ma_pmo-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
.venv/
|
|
5
|
+
venv/
|
|
6
|
+
*.egg-info/
|
|
7
|
+
.mypy_cache/
|
|
8
|
+
.ruff_cache/
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
|
|
11
|
+
# local state (lightweight-first SQLite)
|
|
12
|
+
*.db
|
|
13
|
+
*.sqlite
|
|
14
|
+
*.sqlite-shm
|
|
15
|
+
*.sqlite-wal
|
|
16
|
+
ma_pmo*.db
|
|
17
|
+
ma_pmo*_checkpoints.sqlite
|
|
18
|
+
|
|
19
|
+
# environment
|
|
20
|
+
.env
|
|
21
|
+
|
|
22
|
+
# harness experiment outputs
|
|
23
|
+
harness/results/
|
|
24
|
+
ma_pmo/harness/results/
|
|
25
|
+
|
|
26
|
+
# Python build outputs
|
|
27
|
+
dist/
|
|
28
|
+
build/
|
|
29
|
+
|
|
30
|
+
# Node / Next.js
|
|
31
|
+
node_modules/
|
|
32
|
+
.next/
|
|
33
|
+
apps/web/next-env.d.ts
|
|
34
|
+
|
|
35
|
+
# OS
|
|
36
|
+
.DS_Store
|
|
37
|
+
|
|
38
|
+
# Claude Code local settings (personal, not shared)
|
|
39
|
+
.claude/settings.local.json
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
**English | [한국어](#변경-내역-한국어)**
|
|
4
|
+
|
|
5
|
+
All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project uses [Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.1.0] - 2026-10-29
|
|
10
|
+
|
|
11
|
+
First public release.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- Seven operational agents: A1 Orchestrator, A2 Planning (CPM), A3 Resources, A4 Risk, A5 Reporting, A6 Governance (stage gates G1–G4), A7 Knowledge (RAG with mandatory citations).
|
|
15
|
+
- Offline operation: deterministic fallbacks for every LLM step, so the full pipeline runs without an API key. LLM path through LiteLLM (Anthropic or local Ollama).
|
|
16
|
+
- Structured `.v1` message protocol with an append-only audit log and a human-in-the-loop approval queue.
|
|
17
|
+
- Five-axis KPI telemetry (time, resource, delivery, risk, cost), an H1–H5 evaluation harness and an experiment harness with ablations.
|
|
18
|
+
- 20 lifecycle scenarios with a four-phase trace (plan → execute → complete → insight) and paper-ready Markdown export.
|
|
19
|
+
- English/Korean support across the dashboard (language toggle), API responses (`?lang=`, `Accept-Language`), reports and LLM output (`MA_PMO_LANG`). Lessons-learned corpus in both languages.
|
|
20
|
+
- Next.js dashboard with KPIs, charts, scenarios and the approval queue.
|
|
21
|
+
- `ma-pmo` command-line tool (`init-db`, `serve`, `eval`, `harness`) and PyPI packaging.
|
|
22
|
+
- Docker Compose and Kubernetes manifests.
|
|
23
|
+
- Dual licensing (AGPL-3.0-or-later + commercial), trademark policy, citation metadata and community files.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Python modules now live in the `ma_pmo` package (`ma_pmo.core`, `ma_pmo.agents`, …) instead of top-level packages.
|
|
27
|
+
- Gate IDs are now `G1-initiation`, `G2-planning`, `G3-execution`, `G4-closure`. The previous Korean IDs are still accepted.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Progress bars on the dashboard did not render their fill.
|
|
31
|
+
|
|
32
|
+
[Unreleased]: https://github.com/ma-pmo/ma-pmo-ext/compare/v0.1.0...HEAD
|
|
33
|
+
[0.1.0]: https://github.com/ma-pmo/ma-pmo-ext/releases/tag/v0.1.0
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 변경 내역 (한국어)
|
|
38
|
+
|
|
39
|
+
### [0.1.0] - 2026-10-29
|
|
40
|
+
|
|
41
|
+
첫 공개 릴리스.
|
|
42
|
+
|
|
43
|
+
#### 추가
|
|
44
|
+
- 7개 실동작 에이전트: A1 오케스트레이터, A2 계획(CPM), A3 자원, A4 리스크, A5 보고, A6 거버넌스(스테이지 게이트 G1~G4), A7 지식(출처 인용 강제 RAG).
|
|
45
|
+
- 오프라인 동작: 모든 LLM 단계에 결정론적 폴백이 있어 API 키 없이 전체 파이프라인 동작. LiteLLM 경유 LLM 경로(Anthropic 또는 로컬 Ollama).
|
|
46
|
+
- 구조화 `.v1` 메시지 프로토콜, append-only 감사 로그, Human-in-the-loop 승인 큐.
|
|
47
|
+
- 5축 KPI 텔레메트리(시간·자원·전달·리스크·비용), H1~H5 검증 하네스, ablation 지원 실험 하네스.
|
|
48
|
+
- 20개 생애주기 시나리오(계획 → 수행 → 완료 → 인사이트)와 논문용 Markdown 내보내기.
|
|
49
|
+
- 영어/한국어 지원: 대시보드(언어 토글), API 응답(`?lang=`, `Accept-Language`), 보고서·LLM 출력(`MA_PMO_LANG`). 교훈 코퍼스도 두 언어로 제공.
|
|
50
|
+
- KPI·차트·시나리오·승인 큐를 갖춘 Next.js 대시보드.
|
|
51
|
+
- `ma-pmo` CLI(`init-db`, `serve`, `eval`, `harness`)와 PyPI 패키징.
|
|
52
|
+
- Docker Compose·Kubernetes 매니페스트.
|
|
53
|
+
- 듀얼 라이선스(AGPL-3.0-or-later + 상업용), 상표 정책, 인용 메타데이터, 커뮤니티 문서.
|
|
54
|
+
|
|
55
|
+
#### 변경
|
|
56
|
+
- Python 모듈을 최상위 패키지 대신 `ma_pmo` 패키지(`ma_pmo.core`, `ma_pmo.agents` 등) 아래로 이동.
|
|
57
|
+
- 게이트 ID를 `G1-initiation`, `G2-planning`, `G3-execution`, `G4-closure`로 변경. 기존 한글 ID도 계속 인식.
|
|
58
|
+
|
|
59
|
+
#### 수정
|
|
60
|
+
- 대시보드 진척률 막대가 채워지지 않던 문제.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Commercial License
|
|
2
|
+
|
|
3
|
+
**English | [한국어](#상업용-라이선스-한국어)**
|
|
4
|
+
|
|
5
|
+
MA-PMO is dual-licensed under the [GNU AGPL-3.0-or-later](LICENSE) and a separate commercial license.
|
|
6
|
+
|
|
7
|
+
## Do I need a commercial license?
|
|
8
|
+
|
|
9
|
+
You can use MA-PMO **for free under the AGPL**, including for commercial purposes, as long as you comply with its terms. In short, if you distribute MA-PMO or a modified version, **or let users interact with it over a network**, you must make the complete corresponding source code of your version available to those users under the AGPL.
|
|
10
|
+
|
|
11
|
+
You likely need a **commercial license** if you want to:
|
|
12
|
+
|
|
13
|
+
- Offer MA-PMO (or a modified version) as a hosted / SaaS service **without publishing your source code**
|
|
14
|
+
- Embed or bundle MA-PMO in a proprietary, closed-source product
|
|
15
|
+
- Keep your modifications, connectors or integrations private while serving external users
|
|
16
|
+
- Obtain warranties, indemnification, or contractual support that the AGPL does not provide
|
|
17
|
+
|
|
18
|
+
You do **not** need a commercial license for:
|
|
19
|
+
|
|
20
|
+
- Personal use, learning, academic research, paper replication
|
|
21
|
+
- Internal evaluation and prototyping
|
|
22
|
+
- Open-source projects that are themselves AGPL-compatible and publish their source
|
|
23
|
+
|
|
24
|
+
If you are unsure, just ask — we're happy to help you figure it out.
|
|
25
|
+
|
|
26
|
+
## What a commercial license can include
|
|
27
|
+
|
|
28
|
+
- Use without AGPL copyleft / source-disclosure obligations
|
|
29
|
+
- Priority support and bug fixes
|
|
30
|
+
- Deployment, integration and customization assistance
|
|
31
|
+
- Terms tailored to your organization (seats, deployments, OEM/redistribution)
|
|
32
|
+
|
|
33
|
+
## Contact
|
|
34
|
+
|
|
35
|
+
📧 **[mjinttt@gmail.com](mailto:mjinttt@gmail.com)**
|
|
36
|
+
|
|
37
|
+
Please include your organization name, intended use (SaaS, on-prem, OEM, etc.), approximate scale, and timeline.
|
|
38
|
+
|
|
39
|
+
> This page is an informational summary, not legal advice. The [LICENSE](LICENSE) text and any signed commercial agreement govern.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 상업용 라이선스 (한국어)
|
|
44
|
+
|
|
45
|
+
MA-PMO는 [GNU AGPL-3.0-or-later](LICENSE)와 별도의 상업용 라이선스로 **듀얼 라이선스** 됩니다.
|
|
46
|
+
|
|
47
|
+
### 상업용 라이선스가 필요한가요?
|
|
48
|
+
|
|
49
|
+
AGPL 조건을 지키면 **상업적 목적을 포함해 무료로** 사용할 수 있습니다. 요약하면, MA-PMO 또는 수정본을 배포하거나 **네트워크를 통해 사용자에게 서비스하는 경우**, 그 사용자에게 해당 버전의 전체 소스코드를 AGPL로 제공해야 합니다.
|
|
50
|
+
|
|
51
|
+
다음과 같은 경우 **상업용 라이선스**가 필요할 가능성이 높습니다.
|
|
52
|
+
|
|
53
|
+
- MA-PMO(또는 수정본)를 **소스 공개 없이** 호스팅/SaaS 형태로 제공
|
|
54
|
+
- 소스 비공개 상용 제품에 MA-PMO를 탑재·번들링
|
|
55
|
+
- 외부 사용자에게 서비스하면서 수정사항·커넥터·연동 코드를 비공개로 유지
|
|
56
|
+
- AGPL이 제공하지 않는 보증·면책·계약 기반 기술지원이 필요한 경우
|
|
57
|
+
|
|
58
|
+
다음 경우에는 상업용 라이선스가 **필요하지 않습니다**.
|
|
59
|
+
|
|
60
|
+
- 개인 사용, 학습, 학술 연구, 논문 재현
|
|
61
|
+
- 사내 평가 및 프로토타이핑
|
|
62
|
+
- 소스를 공개하는 AGPL 호환 오픈소스 프로젝트
|
|
63
|
+
|
|
64
|
+
판단이 어렵다면 편하게 문의주세요.
|
|
65
|
+
|
|
66
|
+
### 상업용 라이선스에 포함될 수 있는 내용
|
|
67
|
+
|
|
68
|
+
- AGPL 카피레프트/소스 공개 의무 없이 사용
|
|
69
|
+
- 우선 기술지원 및 버그 수정
|
|
70
|
+
- 배포·연동·커스터마이징 지원
|
|
71
|
+
- 조직에 맞춘 조건 (사용자 수, 배포 수, OEM/재배포 등)
|
|
72
|
+
|
|
73
|
+
### 문의
|
|
74
|
+
|
|
75
|
+
📧 **[mjinttt@gmail.com](mailto:mjinttt@gmail.com)**
|
|
76
|
+
|
|
77
|
+
회사(기관)명, 사용 목적(SaaS·온프레미스·OEM 등), 대략적인 규모, 일정을 함께 적어주시면 빠르게 안내드리겠습니다.
|
|
78
|
+
|
|
79
|
+
> 이 문서는 이해를 돕기 위한 안내이며 법률 자문이 아닙니다. 실제 조건은 [LICENSE](LICENSE) 원문과 별도 체결하는 상업 계약을 따릅니다.
|