product-forge 0.2.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.
- product_forge-0.2.0/.agents/agents/agent-ops-coordinator.md +17 -0
- product_forge-0.2.0/.agents/agents/data-analyst-coordinator.md +18 -0
- product_forge-0.2.0/.agents/agents/executors/pf-extractor.md +16 -0
- product_forge-0.2.0/.agents/agents/executors/pf-judge.md +16 -0
- product_forge-0.2.0/.agents/agents/executors/pf-synthesizer.md +14 -0
- product_forge-0.2.0/.agents/agents/executors/pf-verifier.md +14 -0
- product_forge-0.2.0/.agents/agents/integration-coordinator.md +16 -0
- product_forge-0.2.0/.agents/agents/planning-coordinator.md +17 -0
- product_forge-0.2.0/.agents/agents/product-intel-coordinator.md +19 -0
- product_forge-0.2.0/.agents/skills/pf-agent-factory/SKILL.md +45 -0
- product_forge-0.2.0/.agents/skills/pf-agent-factory/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-analytics/SKILL.md +43 -0
- product_forge-0.2.0/.agents/skills/pf-analytics/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-apis/SKILL.md +40 -0
- product_forge-0.2.0/.agents/skills/pf-apis/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-aws/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-aws/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-azure/SKILL.md +38 -0
- product_forge-0.2.0/.agents/skills/pf-azure/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-dashboards/SKILL.md +42 -0
- product_forge-0.2.0/.agents/skills/pf-dashboards/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-data-products/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-data-products/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-finops/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-finops/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-governance/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-governance/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-knowledge/SKILL.md +41 -0
- product_forge-0.2.0/.agents/skills/pf-knowledge/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-prioritization/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-prioritization/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-product-discovery/SKILL.md +42 -0
- product_forge-0.2.0/.agents/skills/pf-product-discovery/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-product-strategy/SKILL.md +44 -0
- product_forge-0.2.0/.agents/skills/pf-product-strategy/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-reporting/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-reporting/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-requirements/SKILL.md +39 -0
- product_forge-0.2.0/.agents/skills/pf-requirements/agents/openai.yaml +4 -0
- product_forge-0.2.0/.agents/skills/pf-sql/SKILL.md +45 -0
- product_forge-0.2.0/.agents/skills/pf-sql/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-agent-factory/SKILL.md +45 -0
- product_forge-0.2.0/.devin/skills/pf-agent-factory/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-analytics/SKILL.md +43 -0
- product_forge-0.2.0/.devin/skills/pf-analytics/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-apis/SKILL.md +40 -0
- product_forge-0.2.0/.devin/skills/pf-apis/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-aws/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-aws/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-azure/SKILL.md +38 -0
- product_forge-0.2.0/.devin/skills/pf-azure/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-dashboards/SKILL.md +42 -0
- product_forge-0.2.0/.devin/skills/pf-dashboards/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-data-products/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-data-products/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-finops/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-finops/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-governance/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-governance/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-knowledge/SKILL.md +41 -0
- product_forge-0.2.0/.devin/skills/pf-knowledge/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-prioritization/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-prioritization/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-product-discovery/SKILL.md +42 -0
- product_forge-0.2.0/.devin/skills/pf-product-discovery/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-product-strategy/SKILL.md +44 -0
- product_forge-0.2.0/.devin/skills/pf-product-strategy/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-reporting/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-reporting/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-requirements/SKILL.md +39 -0
- product_forge-0.2.0/.devin/skills/pf-requirements/agents/openai.yaml +4 -0
- product_forge-0.2.0/.devin/skills/pf-sql/SKILL.md +45 -0
- product_forge-0.2.0/.devin/skills/pf-sql/agents/openai.yaml +4 -0
- product_forge-0.2.0/.gitignore +11 -0
- product_forge-0.2.0/AGENTS.md +68 -0
- product_forge-0.2.0/CHANGELOG.md +57 -0
- product_forge-0.2.0/CLAUDE.md +33 -0
- product_forge-0.2.0/LICENSE +182 -0
- product_forge-0.2.0/PKG-INFO +175 -0
- product_forge-0.2.0/README.md +114 -0
- product_forge-0.2.0/agents/agent-ops-coordinator.md +17 -0
- product_forge-0.2.0/agents/data-analyst-coordinator.md +18 -0
- product_forge-0.2.0/agents/executors/pf-extractor.md +16 -0
- product_forge-0.2.0/agents/executors/pf-judge.md +16 -0
- product_forge-0.2.0/agents/executors/pf-synthesizer.md +14 -0
- product_forge-0.2.0/agents/executors/pf-verifier.md +14 -0
- product_forge-0.2.0/agents/integration-coordinator.md +16 -0
- product_forge-0.2.0/agents/planning-coordinator.md +17 -0
- product_forge-0.2.0/agents/product-intel-coordinator.md +19 -0
- product_forge-0.2.0/docs/API.md +145 -0
- product_forge-0.2.0/docs/AUTHZ.md +48 -0
- product_forge-0.2.0/docs/BEDROCK_SSO.md +50 -0
- product_forge-0.2.0/docs/INSTALL.md +165 -0
- product_forge-0.2.0/docs/MCP.md +40 -0
- product_forge-0.2.0/docs/adr/ADR-001-architecture-and-persistence.md +33 -0
- product_forge-0.2.0/docs/assets/logo.png +0 -0
- product_forge-0.2.0/docs/audit/CYCLE13_BASELINE_AUDIT.md +41 -0
- product_forge-0.2.0/docs/audit/DEPENDENCY_RISK_REGISTER.md +21 -0
- product_forge-0.2.0/docs/audit/FORGE_ECOSYSTEM_AUDIT.md +35 -0
- product_forge-0.2.0/docs/audit/IMPLEMENTATION_GAP_MATRIX.md +92 -0
- product_forge-0.2.0/docs/audit/INTEGRATION_CONTRACTS.md +43 -0
- product_forge-0.2.0/docs/audit/PRODUCT_FORGE_ARCHITECTURE.md +35 -0
- product_forge-0.2.0/docs/audit/PRODUCT_FORGE_PRODUCTION_READINESS_REPORT.md +74 -0
- product_forge-0.2.0/docs/audit/REUSE_COMPATIBILITY_MATRIX.md +24 -0
- product_forge-0.2.0/docs/audits/CRITICAL_GAPS_REGISTER.md +36 -0
- product_forge-0.2.0/docs/audits/CROSS_REPO_COMPATIBILITY_MATRIX.md +42 -0
- product_forge-0.2.0/docs/audits/ECOSYSTEM_CYCLE25_BASELINE.md +56 -0
- product_forge-0.2.0/docs/audits/PRODUCT_ECOSYSTEM_DEFINITIVE_CYCLE49_58.md +51 -0
- product_forge-0.2.0/docs/audits/PRODUCT_FINAL_CYCLE_2026-11-02.md +38 -0
- product_forge-0.2.0/docs/audits/RELEASE_READINESS_BASELINE.md +22 -0
- product_forge-0.2.0/docs/audits/portal-full-audit-2026-11-02.md +152 -0
- product_forge-0.2.0/docs/audits/three-repo-review-2026-11-02.md +94 -0
- product_forge-0.2.0/docs/audits/ui-ux-graph-audit-2026-11-02.md +53 -0
- product_forge-0.2.0/docs/codebase/.codebase-scan.txt +381 -0
- product_forge-0.2.0/docs/codebase/ARCHITECTURE.md +58 -0
- product_forge-0.2.0/docs/codebase/CONCERNS.md +58 -0
- product_forge-0.2.0/docs/codebase/CONVENTIONS.md +43 -0
- product_forge-0.2.0/docs/codebase/INTEGRATIONS.md +45 -0
- product_forge-0.2.0/docs/codebase/STACK.md +53 -0
- product_forge-0.2.0/docs/codebase/STRUCTURE.md +45 -0
- product_forge-0.2.0/docs/codebase/TESTING.md +48 -0
- product_forge-0.2.0/docs/design/product-portal-design-contract.md +33 -0
- product_forge-0.2.0/factory/README.md +20 -0
- product_forge-0.2.0/factory/prompts/deep-regression-suite.implement.claude.md +56 -0
- product_forge-0.2.0/factory/prompts/deep-regression-suite.review.codex.md +54 -0
- product_forge-0.2.0/factory/prompts/ecosystem-p0-hardening.implement.codex.md +82 -0
- product_forge-0.2.0/factory/prompts/ecosystem-p0-hardening.review.codex.md +72 -0
- product_forge-0.2.0/factory/reviews/2026-11-02-deep-regression-suite-codex.md +32 -0
- product_forge-0.2.0/factory/reviews/2026-11-02-ecosystem-baseline.md +29 -0
- product_forge-0.2.0/factory/reviews/2026-11-02-release-gate-closure.md +28 -0
- product_forge-0.2.0/factory/reviews/2026-loop-pass-1.md +39 -0
- product_forge-0.2.0/factory/runs/2026-10-30T115216Z0000.deep-regression-suite.json +15 -0
- product_forge-0.2.0/factory/runs/2026-11-02T155508Z0000.ecosystem-p0-hardening.json +15 -0
- product_forge-0.2.0/factory/specs/active/ecosystem-p0-hardening.md +73 -0
- product_forge-0.2.0/factory/specs/archive/2026-11-02/deep-regression-suite.md +49 -0
- product_forge-0.2.0/factory/specs/archive/2026-11-02/notification-delivery.md +36 -0
- product_forge-0.2.0/factory/specs/archive/2026-11-02/portal-angular-module.md +41 -0
- product_forge-0.2.0/factory/specs/archive/2026-11-02/postgres-backend.md +34 -0
- product_forge-0.2.0/factory/specs/archive/2026-11-02/unified-local-runtime.md +48 -0
- product_forge-0.2.0/factory/specs/archive/2026-11-02/unified-workspace-surface.md +41 -0
- product_forge-0.2.0/factory/specs/archive/inter-forge-delegation.md +44 -0
- product_forge-0.2.0/factory/specs/archive/llm-gateway-integration.md +34 -0
- product_forge-0.2.0/factory/specs/archive/mcp-http-transport.md +32 -0
- product_forge-0.2.0/factory/specs/archive/native-agent-templates.md +32 -0
- product_forge-0.2.0/factory/specs/inbox/live-provider-homologation.md +47 -0
- product_forge-0.2.0/factory/specs/inbox/real-authz-multi-tenant.md +47 -0
- product_forge-0.2.0/factory/specs/inbox/real-provider-system-harness.md +40 -0
- product_forge-0.2.0/forge.agentic.json +41 -0
- product_forge-0.2.0/forge.json +25 -0
- product_forge-0.2.0/pyproject.toml +129 -0
- product_forge-0.2.0/rules/catalog/pf-agent.yaml +21 -0
- product_forge-0.2.0/rules/catalog/pf-cloud.yaml +21 -0
- product_forge-0.2.0/rules/catalog/pf-know.yaml +21 -0
- product_forge-0.2.0/rules/catalog/pf-sql.yaml +21 -0
- product_forge-0.2.0/skills/index.json +70 -0
- product_forge-0.2.0/skills/pf-agent-factory/SKILL.md +45 -0
- product_forge-0.2.0/skills/pf-agent-factory/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-analytics/SKILL.md +43 -0
- product_forge-0.2.0/skills/pf-analytics/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-apis/SKILL.md +40 -0
- product_forge-0.2.0/skills/pf-apis/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-aws/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-aws/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-azure/SKILL.md +38 -0
- product_forge-0.2.0/skills/pf-azure/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-dashboards/SKILL.md +42 -0
- product_forge-0.2.0/skills/pf-dashboards/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-data-products/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-data-products/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-finops/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-finops/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-governance/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-governance/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-knowledge/SKILL.md +41 -0
- product_forge-0.2.0/skills/pf-knowledge/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-prioritization/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-prioritization/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-product-discovery/SKILL.md +42 -0
- product_forge-0.2.0/skills/pf-product-discovery/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-product-strategy/SKILL.md +44 -0
- product_forge-0.2.0/skills/pf-product-strategy/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-reporting/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-reporting/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-requirements/SKILL.md +39 -0
- product_forge-0.2.0/skills/pf-requirements/agents/openai.yaml +4 -0
- product_forge-0.2.0/skills/pf-sql/SKILL.md +45 -0
- product_forge-0.2.0/skills/pf-sql/agents/openai.yaml +4 -0
- product_forge-0.2.0/src/forge_agent_bridge/__init__.py +11 -0
- product_forge-0.2.0/src/forge_agent_bridge/acp.py +171 -0
- product_forge-0.2.0/src/forge_agent_bridge/adapter.py +57 -0
- product_forge-0.2.0/src/forge_agent_bridge/approvals.py +113 -0
- product_forge-0.2.0/src/forge_agent_bridge/backup.py +67 -0
- product_forge-0.2.0/src/forge_agent_bridge/broker.py +103 -0
- product_forge-0.2.0/src/forge_agent_bridge/budgets.py +104 -0
- product_forge-0.2.0/src/forge_agent_bridge/cli.py +191 -0
- product_forge-0.2.0/src/forge_agent_bridge/collab.py +133 -0
- product_forge-0.2.0/src/forge_agent_bridge/context.py +254 -0
- product_forge-0.2.0/src/forge_agent_bridge/contracts.py +113 -0
- product_forge-0.2.0/src/forge_agent_bridge/events.py +209 -0
- product_forge-0.2.0/src/forge_agent_bridge/files.py +134 -0
- product_forge-0.2.0/src/forge_agent_bridge/install/__init__.py +1 -0
- product_forge-0.2.0/src/forge_agent_bridge/install/cli.py +99 -0
- product_forge-0.2.0/src/forge_agent_bridge/install/lifecycle.py +254 -0
- product_forge-0.2.0/src/forge_agent_bridge/integrity.py +112 -0
- product_forge-0.2.0/src/forge_agent_bridge/intelligence.py +261 -0
- product_forge-0.2.0/src/forge_agent_bridge/local_bridge.py +1430 -0
- product_forge-0.2.0/src/forge_agent_bridge/metadata.py +72 -0
- product_forge-0.2.0/src/forge_agent_bridge/orchestrator.py +126 -0
- product_forge-0.2.0/src/forge_agent_bridge/pairing.py +144 -0
- product_forge-0.2.0/src/forge_agent_bridge/pf_context.py +122 -0
- product_forge-0.2.0/src/forge_agent_bridge/providers/__init__.py +0 -0
- product_forge-0.2.0/src/forge_agent_bridge/providers/acp_adapter.py +233 -0
- product_forge-0.2.0/src/forge_agent_bridge/providers/claude.py +292 -0
- product_forge-0.2.0/src/forge_agent_bridge/providers/codex.py +223 -0
- product_forge-0.2.0/src/forge_agent_bridge/providers/copilot.py +116 -0
- product_forge-0.2.0/src/forge_agent_bridge/providers/fake.py +88 -0
- product_forge-0.2.0/src/forge_agent_bridge/recovery.py +44 -0
- product_forge-0.2.0/src/forge_agent_bridge/registry.py +189 -0
- product_forge-0.2.0/src/forge_agent_bridge/runners.py +111 -0
- product_forge-0.2.0/src/forge_agent_bridge/secrets.py +116 -0
- product_forge-0.2.0/src/forge_agent_bridge/ssrf.py +108 -0
- product_forge-0.2.0/src/forge_agent_bridge/ui/__init__.py +29 -0
- product_forge-0.2.0/src/forge_agent_bridge/ui/i18n.py +143 -0
- product_forge-0.2.0/src/forge_agent_bridge/ui/kit.py +689 -0
- product_forge-0.2.0/src/forge_agent_bridge/ui/wizard.py +317 -0
- product_forge-0.2.0/src/product_forge/__init__.py +13 -0
- product_forge-0.2.0/src/product_forge/__main__.py +4 -0
- product_forge-0.2.0/src/product_forge/_forge_portal.py +1165 -0
- product_forge-0.2.0/src/product_forge/_installkit.py +1825 -0
- product_forge-0.2.0/src/product_forge/agents/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/agents/bedrock_provider.py +120 -0
- product_forge-0.2.0/src/product_forge/agents/evals.py +53 -0
- product_forge-0.2.0/src/product_forge/agents/llm_runtime.py +143 -0
- product_forge-0.2.0/src/product_forge/agents/policy.py +108 -0
- product_forge-0.2.0/src/product_forge/agents/routing.py +54 -0
- product_forge-0.2.0/src/product_forge/agents/runtime.py +139 -0
- product_forge-0.2.0/src/product_forge/agents/tools.py +155 -0
- product_forge-0.2.0/src/product_forge/agents/workflows.py +98 -0
- product_forge-0.2.0/src/product_forge/analytics/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/analytics/connectors.py +204 -0
- product_forge-0.2.0/src/product_forge/analytics/engine.py +163 -0
- product_forge-0.2.0/src/product_forge/analytics/metrics.py +70 -0
- product_forge-0.2.0/src/product_forge/analytics/sqlvalidate.py +150 -0
- product_forge-0.2.0/src/product_forge/api/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/api/app.py +1625 -0
- product_forge-0.2.0/src/product_forge/cli/__init__.py +706 -0
- product_forge-0.2.0/src/product_forge/config.py +120 -0
- product_forge-0.2.0/src/product_forge/dashboards/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/dashboards/render.py +70 -0
- product_forge-0.2.0/src/product_forge/delegates/__init__.py +1 -0
- product_forge-0.2.0/src/product_forge/delegates/catalog.py +45 -0
- product_forge-0.2.0/src/product_forge/delegates/runner.py +66 -0
- product_forge-0.2.0/src/product_forge/domain/__init__.py +1 -0
- product_forge-0.2.0/src/product_forge/domain/models.py +365 -0
- product_forge-0.2.0/src/product_forge/errors.py +68 -0
- product_forge-0.2.0/src/product_forge/gateway/__init__.py +1 -0
- product_forge-0.2.0/src/product_forge/gateway/synthesis.py +85 -0
- product_forge-0.2.0/src/product_forge/install/__init__.py +1 -0
- product_forge-0.2.0/src/product_forge/install/cli.py +89 -0
- product_forge-0.2.0/src/product_forge/install/lifecycle.py +348 -0
- product_forge-0.2.0/src/product_forge/install/managed_runtime.py +192 -0
- product_forge-0.2.0/src/product_forge/integrations/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/integrations/apispec.py +115 -0
- product_forge-0.2.0/src/product_forge/integrations/aws.py +155 -0
- product_forge-0.2.0/src/product_forge/integrations/azure.py +100 -0
- product_forge-0.2.0/src/product_forge/integrations/datacontract.py +71 -0
- product_forge-0.2.0/src/product_forge/intel/__init__.py +1 -0
- product_forge-0.2.0/src/product_forge/intel/experiments.py +74 -0
- product_forge-0.2.0/src/product_forge/intel/health.py +116 -0
- product_forge-0.2.0/src/product_forge/intel/notebooks.py +58 -0
- product_forge-0.2.0/src/product_forge/jobs/__init__.py +1 -0
- product_forge-0.2.0/src/product_forge/jobs/registry.py +140 -0
- product_forge-0.2.0/src/product_forge/knowledge/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/knowledge/extract.py +88 -0
- product_forge-0.2.0/src/product_forge/knowledge/graph.py +41 -0
- product_forge-0.2.0/src/product_forge/knowledge/ingest.py +46 -0
- product_forge-0.2.0/src/product_forge/mcp/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/mcp/server.py +197 -0
- product_forge-0.2.0/src/product_forge/notifications.py +86 -0
- product_forge-0.2.0/src/product_forge/operations/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/operations/approvals.py +46 -0
- product_forge-0.2.0/src/product_forge/operations/proposals.py +90 -0
- product_forge-0.2.0/src/product_forge/operations/reports.py +57 -0
- product_forge-0.2.0/src/product_forge/operations/watches.py +98 -0
- product_forge-0.2.0/src/product_forge/planning/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/planning/prd.py +54 -0
- product_forge-0.2.0/src/product_forge/planning/prioritize.py +41 -0
- product_forge-0.2.0/src/product_forge/planning/roadmap.py +34 -0
- product_forge-0.2.0/src/product_forge/portal/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/portal/adapter.py +1030 -0
- product_forge-0.2.0/src/product_forge/portal/runtime.py +519 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/3rdpartylicenses.txt +378 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-1Rc4lGsF.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-3CbjAJ_e.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-6Q7VGqCu.js +5 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-7Pu1Blam.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-9tQEpXMK.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-B3Nny4Hq.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-B57_NLXQ.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BB5JZCTs.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BE-Wy_fS.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BF7hAyQJ.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BUHV7CDc.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BXHyUfJw.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BYYLUO5t.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BabKVLA2.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BaebHyDv.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BcvxjRzt.js +6 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BpaNj9LV.js +5 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Bsd27yxw.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BuoTaa1i.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-BvumviSm.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Bx56UW4B.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C-syDP2A.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C0Y1QJAk.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C0nXO1-7.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C18uha2k.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CBAf-gZm.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CFk9O-Id.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CI7NSb1M.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CLPLzFYs.js +322 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-COrc5dSH.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CSXp8raW.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CTSic6yw.js +5 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-C_7Rm93G.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Cbyie2QS.js +3 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Ci5zXqV6.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CkDgYK04.js +5 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-CsgUuQ0S.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Ct1MVd7z.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Cut2Ourb.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-D-7Jr8A3.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DJsvMftW.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DUq33ZpV.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DaUeWbRk.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DfrvIVuy.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DicAb5_-.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DixPCieV.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DtpQQeVl.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DuZy_X7l.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-DvwzUgSZ.js +3 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-EiSuk_kZ.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-H_dZuloj.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-JrAEILC6.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-S0yVTZM9.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Tfobdq9w.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-Wd_5yY1t.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-X_IBVudt.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-XtegKBNb.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-jdQ8jbI8.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-k_4TaJG-.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-kwRnGzdM.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-nGNTa8fb.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/chunk-nf7vIxR7.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/favicon.ico +0 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/index.html +13 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/main-SCGIMYBN.js +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/manifest.json +11 -0
- product_forge-0.2.0/src/product_forge/portal_assets/angular/browser/styles-WNQNXSWU.css +1 -0
- product_forge-0.2.0/src/product_forge/portal_assets/app.js +16 -0
- product_forge-0.2.0/src/product_forge/portal_assets/index.html +28 -0
- product_forge-0.2.0/src/product_forge/portal_assets/style.css +7 -0
- product_forge-0.2.0/src/product_forge/reports/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/security.py +158 -0
- product_forge-0.2.0/src/product_forge/services/__init__.py +0 -0
- product_forge-0.2.0/src/product_forge/store/__init__.py +3 -0
- product_forge-0.2.0/src/product_forge/store/postgres.py +265 -0
- product_forge-0.2.0/src/product_forge/store/sqlite.py +373 -0
- product_forge-0.2.0/src/product_forge/ui/__init__.py +29 -0
- product_forge-0.2.0/src/product_forge/ui/i18n.py +143 -0
- product_forge-0.2.0/src/product_forge/ui/kit.py +689 -0
- product_forge-0.2.0/src/product_forge/ui/wizard.py +282 -0
- product_forge-0.2.0/tests/system/test_installed_composition.py +122 -0
- product_forge-0.2.0/tests/test_context_api.py +100 -0
- product_forge-0.2.0/tests/test_contract_sweep.py +70 -0
- product_forge-0.2.0/tests/test_core.py +140 -0
- product_forge-0.2.0/tests/test_cycle1011.py +131 -0
- product_forge-0.2.0/tests/test_cycle13.py +247 -0
- product_forge-0.2.0/tests/test_cycle15.py +99 -0
- product_forge-0.2.0/tests/test_cycle18.py +187 -0
- product_forge-0.2.0/tests/test_cycle3.py +86 -0
- product_forge-0.2.0/tests/test_cycle4.py +133 -0
- product_forge-0.2.0/tests/test_cycle5.py +151 -0
- product_forge-0.2.0/tests/test_cycle67.py +125 -0
- product_forge-0.2.0/tests/test_cycle89.py +166 -0
- product_forge-0.2.0/tests/test_delegates.py +106 -0
- product_forge-0.2.0/tests/test_gateway.py +91 -0
- product_forge-0.2.0/tests/test_homologation.py +217 -0
- product_forge-0.2.0/tests/test_install.py +143 -0
- product_forge-0.2.0/tests/test_mcp_http.py +69 -0
- product_forge-0.2.0/tests/test_negative.py +104 -0
- product_forge-0.2.0/tests/test_notifications.py +18 -0
- product_forge-0.2.0/tests/test_oidc_isolation.py +49 -0
- product_forge-0.2.0/tests/test_portal_adapter.py +478 -0
- product_forge-0.2.0/tests/test_portal_runtime.py +109 -0
- product_forge-0.2.0/tests/test_regression_methods.py +310 -0
- product_forge-0.2.0/tests/test_skills.py +44 -0
- product_forge-0.2.0/tests/test_templates.py +65 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-ops-coordinator
|
|
3
|
+
description: Coordinator for agent lifecycle and product operations — evals, publishing, watches, alerts, approvals. Use for "publish agent", "agent eval", "watch", "alert", "approval".
|
|
4
|
+
rule_areas: [PF-AGENT, PF-OPS]
|
|
5
|
+
skills: [pf-agent-factory, pf-governance, pf-reporting]
|
|
6
|
+
---
|
|
7
|
+
# Agent Ops Coordinator
|
|
8
|
+
|
|
9
|
+
## Playbook
|
|
10
|
+
|
|
11
|
+
1. `pf-extractor` — agent definitions, eval scores, runs, watches, alerts, approvals.
|
|
12
|
+
2. `pf-judge` — PF-AGENT (tools_allowed, eval >= 0.5, injection policy) and PF-OPS (watch breach → alert, approval gate).
|
|
13
|
+
3. `pf-verifier` — run eval/publish/watch as evidence.
|
|
14
|
+
4. `pf-synthesizer` — report with run/eval/alert ids.
|
|
15
|
+
|
|
16
|
+
## Não faz
|
|
17
|
+
- Does not publish below-gate agents; does not fire alerts without a breach.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-analyst-coordinator
|
|
3
|
+
description: Coordinator for analytics work — sources, schemas, queries, dashboards. Use for "explore this data", "why this metric", "build a query/dashboard".
|
|
4
|
+
rule_areas: [PF-SQL, PF-SRC, PF-DASH]
|
|
5
|
+
skills: [pf-sql, pf-analytics, pf-dashboards]
|
|
6
|
+
---
|
|
7
|
+
# Data Analyst Coordinator
|
|
8
|
+
|
|
9
|
+
## Playbook
|
|
10
|
+
|
|
11
|
+
1. `pf-extractor` — verify sources, pull schemas, inspect stored query runs.
|
|
12
|
+
2. `pf-judge` — PF-SQL (read-only, limits), PF-SRC (healthy vs unverified), PF-DASH (widget→run bindings).
|
|
13
|
+
3. `pf-verifier` — execute the validated query / render the dashboard as evidence.
|
|
14
|
+
4. `pf-synthesizer` — answer with run ids and row counts, never invented numbers.
|
|
15
|
+
|
|
16
|
+
## Não faz
|
|
17
|
+
- Never executes write/multi-statement SQL; rejected statements stay rejected.
|
|
18
|
+
- Never reports unverified sources as healthy.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-extractor
|
|
3
|
+
description: Collects facts from the Product Forge store/API — never judges. Use as first executor in any coordinator playbook.
|
|
4
|
+
---
|
|
5
|
+
# pf-extractor
|
|
6
|
+
|
|
7
|
+
Collects `Fact`s: context packages, entity graphs, source schemas, query runs, eval scores, audit events.
|
|
8
|
+
|
|
9
|
+
## Pressupõe
|
|
10
|
+
- Store/API reachable; product_id known.
|
|
11
|
+
|
|
12
|
+
## Entrega
|
|
13
|
+
- Structured facts with ids and raw fields only — no interpretation.
|
|
14
|
+
|
|
15
|
+
## Não faz
|
|
16
|
+
- No judgments, no thresholds, no recommendations. Numbers without interpretation.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-judge
|
|
3
|
+
description: Applies rules/catalog/*.yaml to extracted facts — emits Findings with fact_id evidence. Use after pf-extractor.
|
|
4
|
+
---
|
|
5
|
+
# pf-judge
|
|
6
|
+
|
|
7
|
+
Every `Finding` carries `rule_id` + non-empty `evidence[]` of fact_ids.
|
|
8
|
+
|
|
9
|
+
## Pressupõe
|
|
10
|
+
- Facts from pf-extractor; catalog under `rules/catalog/`.
|
|
11
|
+
|
|
12
|
+
## Entrega
|
|
13
|
+
- findings[] {rule_id, severity, evidence, area} — sorted deterministically.
|
|
14
|
+
|
|
15
|
+
## Não faz
|
|
16
|
+
- No rules not in the catalog; no findings with empty evidence; no cost estimates.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-synthesizer
|
|
3
|
+
description: Composes the final answer from facts+findings+evidence — with citations and ids, advisory tone. Use last.
|
|
4
|
+
---
|
|
5
|
+
# pf-synthesizer
|
|
6
|
+
|
|
7
|
+
## Pressupõe
|
|
8
|
+
- Facts, findings, verification evidence.
|
|
9
|
+
|
|
10
|
+
## Entrega
|
|
11
|
+
- Answer citing entity ids, rule_ids, run ids; marks uncertain items `unresolved`.
|
|
12
|
+
|
|
13
|
+
## Não faz
|
|
14
|
+
- No new facts; no silent promotion of `inferred` to `observed`; no invented metrics.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-verifier
|
|
3
|
+
description: Runs the real command to prove a claim — executes query, renders dashboard, runs eval, fires watch. Use before any "it works" statement.
|
|
4
|
+
---
|
|
5
|
+
# pf-verifier
|
|
6
|
+
|
|
7
|
+
## Pressupõe
|
|
8
|
+
- A concrete claim and the verb that proves it.
|
|
9
|
+
|
|
10
|
+
## Entrega
|
|
11
|
+
- Evidence block: command, run_id, status, output hash/rows.
|
|
12
|
+
|
|
13
|
+
## Não faz
|
|
14
|
+
- Never claims success without an execution result; never weakens criteria to pass.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: integration-coordinator
|
|
3
|
+
description: Coordinator for AWS/Azure/API/data-contract intelligence. Use for "AWS inventory", "Azure resources", "API diff", "breaking change", "data contract".
|
|
4
|
+
rule_areas: [PF-CLOUD, PF-API, PF-CONTRACT]
|
|
5
|
+
skills: [pf-aws, pf-azure, pf-apis, pf-data-products]
|
|
6
|
+
---
|
|
7
|
+
# Integration Coordinator
|
|
8
|
+
|
|
9
|
+
## Playbook
|
|
10
|
+
|
|
11
|
+
1. `pf-extractor` — cloud inventory states, imported API specs, contracts.
|
|
12
|
+
2. `pf-judge` — PF-CLOUD (ok/unverified/error honesty), PF-API (breaking changes), PF-CONTRACT (validation errors).
|
|
13
|
+
3. `pf-synthesizer` — report each item with its actual status field.
|
|
14
|
+
|
|
15
|
+
## Não faz
|
|
16
|
+
- NEVER fabricates cloud resources — missing credentials produce `unverified`, not inventory.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: planning-coordinator
|
|
3
|
+
description: Coordinator for discovery, prioritization, PRDs, roadmaps, decisions. Use for "prioritize", "write PRD", "roadmap", "opportunity".
|
|
4
|
+
rule_areas: [PF-PLAN, PF-DEC]
|
|
5
|
+
skills: [pf-prioritization, pf-requirements, pf-reporting]
|
|
6
|
+
---
|
|
7
|
+
# Planning Coordinator
|
|
8
|
+
|
|
9
|
+
## Playbook
|
|
10
|
+
|
|
11
|
+
1. `pf-extractor` — initiatives, hypotheses, decisions, knowledge citations.
|
|
12
|
+
2. `pf-judge` — PF-PLAN (score inputs present, PRD citations) and PF-DEC (decisions linked to evidence).
|
|
13
|
+
3. `pf-verifier` — run prioritize/PRD/roadmap and check output contract fields.
|
|
14
|
+
4. `pf-synthesizer` — report with initiative/decision ids.
|
|
15
|
+
|
|
16
|
+
## Não faz
|
|
17
|
+
- Does not pick priorities by intuition — deterministic scoring only.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-intel-coordinator
|
|
3
|
+
description: Coordinator for product intelligence questions — decides which executor runs next. Use for "understand this product", "product context", "product health".
|
|
4
|
+
rule_areas: [PF-KNOW, PF-CTX, PF-HEALTH]
|
|
5
|
+
skills: [pf-knowledge, pf-product-strategy, pf-product-discovery]
|
|
6
|
+
---
|
|
7
|
+
# Product Intelligence Coordinator
|
|
8
|
+
|
|
9
|
+
Routes work to executors. Never executes itself.
|
|
10
|
+
|
|
11
|
+
## Playbook
|
|
12
|
+
|
|
13
|
+
1. `pf-extractor` — pull context package, knowledge stats, entity graph.
|
|
14
|
+
2. `pf-judge` — apply PF-KNOW/PF-HEALTH rules (coverage, orphan entities, stale docs).
|
|
15
|
+
3. `pf-synthesizer` — compose the answer with citations.
|
|
16
|
+
|
|
17
|
+
## Não faz
|
|
18
|
+
- Does not query data sources or run SQL (that is data-analyst-coordinator).
|
|
19
|
+
- Does not invent coverage: absent knowledge is reported as absent.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-agent-factory
|
|
3
|
+
description: Create, evaluate and publish product agents. Use for 'create agent', 'run agent', 'agent eval', 'publish agent', 'Agent Factory'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Agent Factory
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Build product-scoped agents with declared tools, pass evals, gate publication.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Product exists; knowledge imported for knowledge-backed agents
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Create: `productforge agent create <pid> '<name>' --tools knowledge_query`.
|
|
19
|
+
2. Run: `productforge agent run <pid> <aid> '<input>'` — deterministic + policy-checked.
|
|
20
|
+
3. Eval: `productforge agent eval <pid> <aid>` → persisted score.
|
|
21
|
+
4. Publish: `productforge agent publish` — requires tools_allowed AND eval score ≥ 0.5.
|
|
22
|
+
|
|
23
|
+
## Ferramentas
|
|
24
|
+
- `productforge agent create|run|eval|publish`
|
|
25
|
+
- `GET /agents/{aid}/runs`
|
|
26
|
+
- `POST /runs/{rid}/cancel`
|
|
27
|
+
- `POST /workflows/run` (multi-agent)
|
|
28
|
+
|
|
29
|
+
## Exemplos
|
|
30
|
+
- Agent w/ knowledge_query → run 'summarize onboarding' → cited template output.
|
|
31
|
+
|
|
32
|
+
## Limitações
|
|
33
|
+
- Injection attempts → run status=blocked (policy engine).
|
|
34
|
+
- Default runtime is deterministic template; real LLM loop (`llm_runtime.py`)
|
|
35
|
+
activates only with a configured provider subprocess — tool calls remain
|
|
36
|
+
policy-gated, tokens land in the budget ledger, no provider → honest
|
|
37
|
+
deterministic fallback (never simulated).
|
|
38
|
+
|
|
39
|
+
## Evals
|
|
40
|
+
- No tools_allowed → publish 400; eval 0.3 → publish rejected; score 0.7 → ok.
|
|
41
|
+
|
|
42
|
+
## Referências
|
|
43
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
44
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
45
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-analytics
|
|
3
|
+
description: Explore product data sources, schemas and analytical queries without deep SQL. Use for 'explore data', 'what tables', 'metrics', 'analytics'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Analytics
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Let a PM/PA answer data questions via schema explorer + compiled/NL queries.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Data source registered and verified (`POST /data-sources/{sid}/verify` → healthy)
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Verify connectivity: `POST /data-sources/{sid}/verify`.
|
|
19
|
+
2. Check the metric catalog first: `GET /products/{pid}/metrics` — reuse
|
|
20
|
+
governed metrics instead of re-deriving KPIs.
|
|
21
|
+
3. Browse schema: `GET /data-sources/{sid}/schema` → tables/columns/types.
|
|
22
|
+
4. Ask in NL: `POST /queries/nl` — `via: semantic-catalog` (metric match) or
|
|
23
|
+
`deterministic-nl` fallback → review → execute.
|
|
24
|
+
5. Persist useful runs — every execution stores a query run with provenance.
|
|
25
|
+
|
|
26
|
+
## Ferramentas
|
|
27
|
+
- `productforge source list|add|verify|schema`
|
|
28
|
+
- `POST /queries/nl|compile|execute`
|
|
29
|
+
|
|
30
|
+
## Exemplos
|
|
31
|
+
- 'revenue by month' → NL scaffold SQL → execute → rows + run id.
|
|
32
|
+
|
|
33
|
+
## Limitações
|
|
34
|
+
- NL translation is deterministic scaffolding — always review generated SQL before execute.
|
|
35
|
+
- Missing/unreachable sources report error status, never fake rows.
|
|
36
|
+
|
|
37
|
+
## Evals
|
|
38
|
+
- Empty table → `rows: 0` honest result; bad locator → status=error.
|
|
39
|
+
|
|
40
|
+
## Referências
|
|
41
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
42
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
43
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-apis
|
|
3
|
+
description: API intelligence — import OpenAPI/AsyncAPI, diff versions, detect breaking changes. Use for 'API spec', 'breaking change', 'API diff', 'import OpenAPI'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Apis
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Turn API specs into knowledge-graph entities + flag breaking changes across versions.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- OpenAPI/AsyncAPI spec file or URL
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Import: `POST /products/{pid}/apis/import` {name, spec} → operations parsed to entities.
|
|
19
|
+
2. List: `GET /products/{pid}/apis`.
|
|
20
|
+
3. Diff: `POST /apis/{aid}/diff` {spec:new_version} → added/removed/breaking arrays.
|
|
21
|
+
|
|
22
|
+
## Ferramentas
|
|
23
|
+
- `POST /apis/import`
|
|
24
|
+
- `GET /apis`
|
|
25
|
+
- `POST /apis/{aid}/diff`
|
|
26
|
+
- `GET /impact/{eid}`
|
|
27
|
+
|
|
28
|
+
## Exemplos
|
|
29
|
+
- v2 removes `POST /charge` → diff flags breaking removal + impact lists dependents.
|
|
30
|
+
|
|
31
|
+
## Limitações
|
|
32
|
+
- JSON/YAML OpenAPI 3.x + AsyncAPI 2.x; exotic $ref forms flagged, not guessed.
|
|
33
|
+
|
|
34
|
+
## Evals
|
|
35
|
+
- Removed endpoint → appears in `breaking`; added → `added`; graph gains operation entities.
|
|
36
|
+
|
|
37
|
+
## Referências
|
|
38
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
39
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
40
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-aws
|
|
3
|
+
description: AWS product intelligence — inventory, Athena/Glue/QuickSight states. Use for 'AWS resources', 'Athena', 'Glue catalog', 'QuickSight', 'AWS cost'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Aws
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Report AWS integration state honestly: real inventory when configured, `unverified` when not.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- AWS config/credentials present for real data
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Inventory: `GET /products/{pid}/cloud/aws/inventory` — services grouped by provider.
|
|
19
|
+
2. Check each service status field: `ok|unverified|error` — never present unverified as fact.
|
|
20
|
+
3. On unverified: surface exactly which config is missing.
|
|
21
|
+
|
|
22
|
+
## Ferramentas
|
|
23
|
+
- `GET /products/{pid}/cloud/aws/inventory`
|
|
24
|
+
- `GET /cloud/aws/{service}`
|
|
25
|
+
|
|
26
|
+
## Exemplos
|
|
27
|
+
- No creds → `{status:'unverified', missing:['AWS_PROFILE']}`.
|
|
28
|
+
|
|
29
|
+
## Limitações
|
|
30
|
+
- NEVER fabricate resources — absent creds = unverified. This is a hard invariant.
|
|
31
|
+
- Read-only discovery; no provisioning/mutation.
|
|
32
|
+
|
|
33
|
+
## Evals
|
|
34
|
+
- Without creds → unverified; with bad creds → error; both recorded in audit.
|
|
35
|
+
|
|
36
|
+
## Referências
|
|
37
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
38
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
39
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-azure
|
|
3
|
+
description: Azure product intelligence — Fabric, Power BI, KQL workspaces. Use for 'Azure resources', 'Fabric', 'Power BI', 'KQL', 'Log Analytics'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Azure
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Report Azure/Fabric/PowerBI/KQL state honestly — configured vs unverified vs error.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Azure tenant/subscription configured for real data
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Inventory: `GET /products/{pid}/cloud/azure/inventory`.
|
|
19
|
+
2. Per-service probes surface structured `status` + `missing` fields.
|
|
20
|
+
3. Never present unverified items as discovered resources.
|
|
21
|
+
|
|
22
|
+
## Ferramentas
|
|
23
|
+
- `GET /products/{pid}/cloud/azure/inventory`
|
|
24
|
+
- `GET /cloud/azure/{service}`
|
|
25
|
+
|
|
26
|
+
## Exemplos
|
|
27
|
+
- Missing tenant → `unverified` + which env vars to set.
|
|
28
|
+
|
|
29
|
+
## Limitações
|
|
30
|
+
- Same honesty invariant as AWS — no fabricated inventory.
|
|
31
|
+
|
|
32
|
+
## Evals
|
|
33
|
+
- No config → unverified with missing list; audit event recorded.
|
|
34
|
+
|
|
35
|
+
## Referências
|
|
36
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
37
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
38
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-dashboards
|
|
3
|
+
description: Build and render product dashboards from real query runs. Use for 'create dashboard', 'KPI card', 'chart', 'dashboard'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Dashboards
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Compose KPI/chart widgets bound to executed query runs — rendered data is real data.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- ≥1 completed query run for the product
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Prefer catalog metrics for KPIs — `GET /products/{pid}/metrics` gives
|
|
19
|
+
governed names + SQL; never invent a KPI formula when a catalog metric exists.
|
|
20
|
+
2. Create: `POST /products/{pid}/dashboards` with widgets [{type,title,query_run_id,config}].
|
|
21
|
+
3. Render: `POST /dashboards/{did}/render` → each widget resolved against its stored run.
|
|
22
|
+
4. Types: `kpi`, `line`, `bar`, `table`; filters in config.
|
|
23
|
+
|
|
24
|
+
## Ferramentas
|
|
25
|
+
- `productforge dashboard create|list`
|
|
26
|
+
- `POST /dashboards`
|
|
27
|
+
- `POST /dashboards/{did}/render`
|
|
28
|
+
|
|
29
|
+
## Exemplos
|
|
30
|
+
- KPI 'MAU' bound to run q_abc → render returns value + refreshed_at.
|
|
31
|
+
|
|
32
|
+
## Limitações
|
|
33
|
+
- Widgets render from stored runs only — no live source hits at render time.
|
|
34
|
+
- Missing run → widget error state, not zeros.
|
|
35
|
+
|
|
36
|
+
## Evals
|
|
37
|
+
- Render of 2 widgets → 2 resolved blocks; deleted run → widget shows error.
|
|
38
|
+
|
|
39
|
+
## Referências
|
|
40
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
41
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
42
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-data-products
|
|
3
|
+
description: Data product contracts — define schemas, validate payloads, lineage/impact. Use for 'data contract', 'schema validation', 'lineage', 'data product'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Data Products
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Enforce declared data contracts and trace impact through the knowledge graph.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Product exists
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Define: `POST /products/{pid}/contracts` {name, schema{fields:[{name,type,required}]}}.
|
|
19
|
+
2. Validate payload: `POST /contracts/{cid}/validate` {payload} → errors[] field-level.
|
|
20
|
+
3. Impact: `GET /products/{pid}/impact/{eid}` → graph traversal of dependents.
|
|
21
|
+
|
|
22
|
+
## Ferramentas
|
|
23
|
+
- `POST /contracts`
|
|
24
|
+
- `POST /contracts/{cid}/validate`
|
|
25
|
+
- `GET /impact/{eid}`
|
|
26
|
+
|
|
27
|
+
## Exemplos
|
|
28
|
+
- Contract requires `user_id:string` → payload missing it → explicit error entry.
|
|
29
|
+
|
|
30
|
+
## Limitações
|
|
31
|
+
- Validation is structural (types/required); semantic rules are advisory.
|
|
32
|
+
|
|
33
|
+
## Evals
|
|
34
|
+
- Type mismatch → error naming field+expected; valid payload → `{valid:true}`
|
|
35
|
+
|
|
36
|
+
## Referências
|
|
37
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
38
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
39
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-finops
|
|
3
|
+
description: Product FinOps — agent run budgets, cloud cost honesty. Use for 'cost', 'budget', 'FinOps', 'spend'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Finops
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Track agent/token budgets in the ledger and report cloud costs only when verifiable.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Agents running (ledger auto-records); cloud config for cost probes
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Budgets: `GET /products/{pid}/budgets` → ledger of per-run token/cost estimates.
|
|
19
|
+
2. Cloud cost: via `GET /cloud/{aws|azure}/cost` — unverified without creds.
|
|
20
|
+
3. Set routing profile so expensive models are chosen only for complex task classes.
|
|
21
|
+
|
|
22
|
+
## Ferramentas
|
|
23
|
+
- `GET /products/{pid}/budgets`
|
|
24
|
+
- `GET /cloud/{p}/cost`
|
|
25
|
+
- `POST /routing/route`
|
|
26
|
+
|
|
27
|
+
## Exemplos
|
|
28
|
+
- 5 agent runs → ledger shows 5 entries with model + token estimate.
|
|
29
|
+
|
|
30
|
+
## Limitações
|
|
31
|
+
- Estimates are declared/config-derived, not metered billing; cloud costs unverified w/o creds.
|
|
32
|
+
|
|
33
|
+
## Evals
|
|
34
|
+
- Each run appends a ledger entry; no creds → cost probe returns unverified.
|
|
35
|
+
|
|
36
|
+
## Referências
|
|
37
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
38
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
39
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-governance
|
|
3
|
+
description: Product governance — approvals, audit trail, policy gates. Use for 'approval', 'audit', 'who changed', 'governance'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Governance
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Keep mutating actions gated and every state change auditable.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Product Forge API in use (audit events accumulate automatically)
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Request approval: `POST /products/{pid}/approvals` {kind, subject_id, reason}.
|
|
19
|
+
2. Decide: `POST /approvals/{aid}/decision` {decision:approve|reject, actor}.
|
|
20
|
+
3. Inspect trail: `GET /api/v1/audit` — actor/action/resource/timestamp for every change.
|
|
21
|
+
|
|
22
|
+
## Ferramentas
|
|
23
|
+
- `POST /approvals`
|
|
24
|
+
- `POST /approvals/{aid}/decision`
|
|
25
|
+
- `GET /audit`
|
|
26
|
+
|
|
27
|
+
## Exemplos
|
|
28
|
+
- Publish-gated agent → approval request → approve → publish proceeds.
|
|
29
|
+
|
|
30
|
+
## Limitações
|
|
31
|
+
- Gates enforce within Product Forge only; external systems need their own controls.
|
|
32
|
+
|
|
33
|
+
## Evals
|
|
34
|
+
- Mutating call emits audit event; rejected decision blocks the gated action.
|
|
35
|
+
|
|
36
|
+
## Referências
|
|
37
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
38
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
39
|
+
- Source: `src/product_forge/`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pf-knowledge
|
|
3
|
+
description: Knowledge management — import docs, FTS search with citations, entity graph, health. Use for 'import document', 'search knowledge', 'knowledge graph', 'context'.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
forge: product-forge
|
|
7
|
+
manifest: forge/Skill/v1
|
|
8
|
+
---
|
|
9
|
+
# Knowledge
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Grow trustworthy product knowledge: chunked docs + citations + entity graph + health score.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
- Product exists
|
|
16
|
+
|
|
17
|
+
## Instruções
|
|
18
|
+
1. Import: `productforge knowledge import <pid> <file>` or `POST /documents/import` {title,text}.
|
|
19
|
+
2. Query: `productforge knowledge query <pid> '<q>'` → cited chunks (FTS5, punctuation-safe).
|
|
20
|
+
3. Extract: `POST /knowledge/extract` → entities + edges into the product graph.
|
|
21
|
+
4. Health: `GET /knowledge-health` → coverage/citation metrics.
|
|
22
|
+
|
|
23
|
+
## Ferramentas
|
|
24
|
+
- `productforge knowledge import|query|extract`
|
|
25
|
+
- `GET /graph`
|
|
26
|
+
- `GET /knowledge-health`
|
|
27
|
+
|
|
28
|
+
## Exemplos
|
|
29
|
+
- Import runbook.md → query 'rollback procedure' → top chunk + document citation.
|
|
30
|
+
|
|
31
|
+
## Limitações
|
|
32
|
+
- No LLM summarization w/o gateway — returns chunks, not prose answers.
|
|
33
|
+
- Heuristic entity extraction — verify high-impact edges manually.
|
|
34
|
+
|
|
35
|
+
## Evals
|
|
36
|
+
- Imported doc retrievable by FTS with citation; health endpoint counts it.
|
|
37
|
+
|
|
38
|
+
## Referências
|
|
39
|
+
- API envelope: `forge/PortalApi/1` — `{correlation_id, data, error}`
|
|
40
|
+
- Docs: `docs/audit/IMPLEMENTATION_GAP_MATRIX.md`, `docs/adr/ADR-001-architecture-and-persistence.md`
|
|
41
|
+
- Source: `src/product_forge/`
|