proseforge-agent 0.2.0__tar.gz → 0.3.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.
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/PKG-INFO +116 -91
- proseforge_agent-0.2.0/src/proseforge_agent.egg-info/PKG-INFO → proseforge_agent-0.3.0/README.md +111 -105
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/pyproject.toml +5 -1
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/__init__.py +1 -1
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/cli.py +158 -10
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/doctor.py +18 -2
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/reports/render.py +16 -2
- proseforge_agent-0.2.0/README.md → proseforge_agent-0.3.0/src/proseforge_agent.egg-info/PKG-INFO +130 -90
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent.egg-info/SOURCES.txt +2 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent.egg-info/requires.txt +5 -0
- proseforge_agent-0.3.0/tests/test_cli_quickstart.py +75 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_execution_guard_timeout.py +6 -1
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_managed_install_scripts.py +39 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_memory_schema.py +4 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_package.py +1 -1
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_pypi_first_publish_and_version_bump.py +2 -2
- proseforge_agent-0.3.0/tests/test_report_readiness_badge.py +92 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_service_http_server.py +2 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_sub_agent.py +16 -5
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_tool_sandbox.py +4 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/LICENSE +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/setup.cfg +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/__main__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/_bootstrap.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/artifacts.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/attachments.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/audit.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/context_window.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/control.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/degradation.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/eval.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/events.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/execution_guard.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/function_calling.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/intent_router.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/kernel.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/loop.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/middleware.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/modes.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/observability.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/offline.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/permissions.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/planner.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/profiles.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/prompt_templates.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/provider_fallback.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/reflection.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/request_cache.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/safety.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/sandbox.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/structured_output.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/subagent.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/tools.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/agent/types.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/capabilities.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/accept.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/context.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/draft.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/lifecycle.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/review.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chapter/rewrite.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/context.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/handoff.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/memory.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/prompts.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/repl.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/retrieval.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/session.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/slash.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/system_prompts.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/chat/transcript.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/concurrency.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/config.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/cron/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/cron/core.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/daily/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/daily/recommend.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/daily/workbook.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/demo.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/dotenv.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/base.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/checkpoints.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/daytona.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/docker.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/file_sync.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/local.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/modal.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/process_registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/process_runner.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/serverless.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/singularity.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/environments/ssh.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/errors.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/eval/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/eval/trajectories.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/extensions/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/extensions/base.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/extensions/registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/core.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/delivery.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/media.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/base.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/discord.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/email.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/mobile_email.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/signal.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/slack.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/telegram.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/telegram_transport.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/platforms/whatsapp.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/poller.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/relay/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/gateway/relay/auth.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/app_dirs.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/auto_trigger.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/binary_build.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/binary_packaging.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/ci_matrix.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/docker_plan.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/first_run.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/installer_scripts.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/installers.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/linux.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/local_models.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/macos.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/migrations.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/package_checks.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/platform_io.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/provider_setup.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/qa_matrix.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/secrets.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/shell.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/support_bundle.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/uninstall.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/install/windows.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/base.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/capabilities.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/certification.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/docs_refresh.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/fake.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/http.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/openai_compatible.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/policies.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/probes.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/profiles.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/_openai_shape.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/anthropic.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/deepseek.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/doubao.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/gemini.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/glm.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/grok.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/mimo.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/minimax.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/openai.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/anthropic.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/deepseek.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/doubao.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/gemini.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/glm.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/mimo.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/minimax.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/openai.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/qwen.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/profiles/xai.yaml +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/providers/qwen.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/router.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/streaming.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/llm/usage.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/approval.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/client.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/credentials.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/policy.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/mcp/schema.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/compact.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/ingest.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/nudges.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/review.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/schema.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/store.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/memory/user_model.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/notifications/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/notifications/core.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/notifications/desktop.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/notifications/jobs.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/notifications/webhook.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/approval_queue.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/artifacts.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/backup_verification.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/bible.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/character_arcs.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/continuity.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/draft_versioning.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/editorial_pipeline.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/exporter.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/foreshadowing.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/importer.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/literary_regression.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/manifest.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/manuscript_search.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/plot_threads.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/project_health.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/publishing.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/reader_review.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/relationship_graph.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/reorganize.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/rewrite_strategies.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/safety.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/scenes.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/storage.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/style_profile.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/timeline.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/writing_analytics.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/writing_quality.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/novel/writing_rules.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/planning/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/planning/intake.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/planning/phase_plan.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/dependencies.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/discovery.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/harness.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/hooks.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/manager.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/manifest.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/permissions.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/plugins/sandbox.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/proseforge/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/proseforge/adapter.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/proseforge/results.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/release/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/release/complete_agent_gate.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/release/publish.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/release/version_policy.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/reports/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/reports/registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/embeddings.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/evaluation.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/evidence.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/hybrid.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/index.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/ingestion.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/router.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/retrieval/vector_store.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/service/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/service/api.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/service/http_server.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/config_generator.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/first_run.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/modes.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/recovery.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/summary.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/setup/wizard.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/audit.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/creation.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/hub.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/improvement.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/install.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/skills/usage.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/testing/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/testing/fakes.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tools/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tools/managed/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tools/managed/cloud_browser.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tools/managed/media.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tools/managed/url_safety.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tools/managed/web_search.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/ansi.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/app.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/fullscreen.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/keys.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/screen.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/tui/streaming.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/workflow/__init__.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/workflow/recovery.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/workflow/state.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent/workspace.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent.egg-info/dependency_links.txt +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent.egg-info/entry_points.txt +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/src/proseforge_agent.egg-info/top_level.txt +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_agent_events_jobs.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_agent_kernel.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_agent_loop.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_agent_profiles_personas.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_agent_safety_guard.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_agent_tools_permissions.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_app_dirs.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_attachment_ingestion.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_audit_trail_debuggability.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_binary_build.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_binary_packaging.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_capabilities.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chapter_lifecycle.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chapter_review.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chat_cli_repl.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chat_memory_preferences.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chat_prompt_protocol.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chat_retrieval_citations.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chat_session_store.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_chat_workflow_handoff.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_ci_pipeline.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_cli.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_cli_commands.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_cli_config_yaml_example_seed.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_community_and_agent_docs.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_complete_agent_release_gate.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_concurrency_locking.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_config.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_context_window_management.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_control_interrupt.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_conversation_lifecycle.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_cross_session_search.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_daily_recommendations.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_daily_workbook.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_default_chat_repl_on_bare_command.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_default_provider_resolution.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_docker_distribution.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_dotenv_support.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_e2e_demo.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_evidence_pack.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_extensions.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_first_run_auto_trigger.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_first_run_onboarding.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_fs_edit_and_registry_hardening.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_general_tools.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_graceful_degradation.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_injection_guard_cjk_precision.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_installation_doctor.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_intent_router.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_linux_native_support.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_llm_fake_and_routing.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_llm_response_normalization.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_local_agent_service_api.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_loud_placeholders_and_wiring.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_low_severity_review_cleanups.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_macos_native_support.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_mcp_policy_enforced_in_client.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_memory_compaction.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_memory_ingestion.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_memory_store.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_middleware_hooks_trajectory_datasets.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_middleware_wiring.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_native_qa_matrix.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_native_secret_storage.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_observer_hooks_telemetry_export.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_offline_local_model_setup.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_offline_mode.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_openai_compatible_provider.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_os_installers.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_phase_plan_generator.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_platform_io.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_prompt_template_registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_proseforge_adapter.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_anthropic.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_certification.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_deepseek.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_doubao.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_fallback.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_gemini.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_glm.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_grok.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_mimo.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_minimax.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_openai.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_probes.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_profiles.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_qwen.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_registry.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_router.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_setup_wizard.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_provider_usage_metering.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_pypi_publish.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_python_install_flows.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_readme_localization.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_release_checks.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_reports.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_request_cache.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_retrieval_router.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_rewrite_accept.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_self_verification.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_session_branching.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_session_export_import.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_shell_completions_launchers.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_store_concurrency_and_idempotency.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_streaming_responses.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_streaming_tool_output.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_structured_function_calling.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_support_bundle.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_system_prompt_management.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_task_planner.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_tool_result_artifacts_output_limits.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_tool_timeout_rate_limit_circuit_breaker.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_unified_redaction.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_uninstall_data_retention.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_upgrade_migration_backup.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_windows_native_support.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_windows_utf8_bootstrap.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_workflow_recovery.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_workflow_state.py +0 -0
- {proseforge_agent-0.2.0 → proseforge_agent-0.3.0}/tests/test_workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proseforge-agent
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Agentic orchestration layer for long-form novel production on top of the ProseForge engine.
|
|
5
5
|
Author: ProseForge Agent
|
|
6
6
|
License: Apache-2.0
|
|
@@ -11,101 +11,127 @@ Requires-Dist: pyyaml>=6.0
|
|
|
11
11
|
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
12
12
|
Provides-Extra: dev
|
|
13
13
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
14
|
+
Provides-Extra: ci
|
|
15
|
+
Requires-Dist: pytest>=7.0; extra == "ci"
|
|
16
|
+
Requires-Dist: pytest-rerunfailures>=13.0; extra == "ci"
|
|
17
|
+
Requires-Dist: pytest-repeat>=0.9; extra == "ci"
|
|
14
18
|
Dynamic: license-file
|
|
15
19
|
|
|
16
20
|
> 🌐 [English](README.md) · [简体中文](README.zh-CN.md)
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
<p align="center">
|
|
23
|
+
<img src="assets/banner.png" alt="ProseForge Agent novel-writing command center" width="100%">
|
|
24
|
+
</p>
|
|
19
25
|
|
|
20
|
-
|
|
21
|
-
canonical **ProseForge engine** (`$PROSEFORGE_ROOT`) with planning, retrieval,
|
|
22
|
-
drafting, review, revision, deep memory, multi-provider model routing, daily
|
|
23
|
-
workbooks, reports, extensions, an agent runtime, chat, an autonomous
|
|
24
|
-
goal-directed loop, MCP integration, execution environments, skills, hosted
|
|
25
|
-
cron, observability, middleware, and a real publish/binary/installer chain.
|
|
26
|
+
<h1 align="center">ProseForge Agent</h1>
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
<p align="center">
|
|
29
|
+
<strong>An AI command layer for long-form novel production.</strong>
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<a href="README.zh-CN.md">简体中文</a> ·
|
|
34
|
+
<a href="https://pypi.org/project/proseforge-agent/">PyPI</a> ·
|
|
35
|
+
<a href="https://github.com/remacheybn408-boop/ProseForge-Agent/releases/tag/v0.2.0">Release v0.2.0</a> ·
|
|
36
|
+
<a href="https://github.com/remacheybn408-boop/ProseForge-Agent/pkgs/container/proseforge-agent">GHCR</a>
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
<p align="center">
|
|
40
|
+
<a href="https://pypi.org/project/proseforge-agent/"><img src="https://img.shields.io/pypi/v/proseforge-agent?style=for-the-badge&label=PyPI" alt="PyPI version"></a>
|
|
41
|
+
<a href="https://pypi.org/project/proseforge-agent/"><img src="https://img.shields.io/pypi/pyversions/proseforge-agent?style=for-the-badge" alt="Python versions"></a>
|
|
42
|
+
<a href="https://github.com/remacheybn408-boop/ProseForge-Agent/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/remacheybn408-boop/ProseForge-Agent/ci.yml?branch=main&style=for-the-badge&label=CI" alt="CI status"></a>
|
|
43
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache--2.0-green?style=for-the-badge" alt="Apache-2.0 license"></a>
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
ProseForge Agent turns a novel project into a managed creative workflow:
|
|
47
|
+
plan the book, retrieve canon, draft scenes, review prose, rewrite chapters,
|
|
48
|
+
track memory, and run the whole process through your preferred model
|
|
49
|
+
provider. It sits above the canonical **ProseForge engine**
|
|
50
|
+
(`$PROSEFORGE_ROOT`) and handles orchestration rather than replacing the
|
|
51
|
+
writing engine.
|
|
52
|
+
|
|
53
|
+
Use it as a CLI, a full-screen terminal UI, a local HTTP service, a Docker
|
|
54
|
+
image, or a background agent with gateway integrations.
|
|
32
55
|
|
|
33
|
-
|
|
56
|
+
<table>
|
|
57
|
+
<tr><td><b>Plan the whole book</b></td><td>Turn a project goal into phase plans, daily workbooks, chapter tasks, and scene-level workflow.</td></tr>
|
|
58
|
+
<tr><td><b>Draft with memory</b></td><td>Retrieve canon, timeline, character notes, prior scenes, and evidence packs before the model writes.</td></tr>
|
|
59
|
+
<tr><td><b>Review and revise</b></td><td>Run a chapter lifecycle from draft to review, rewrite, and accept, with quality gates and rollback-friendly artifacts.</td></tr>
|
|
60
|
+
<tr><td><b>Use the model you want</b></td><td>Profiles for OpenAI, Anthropic, Gemini, xAI/Grok, DeepSeek, Qwen, GLM, Mimo, MiniMax, Doubao, plus an offline fake provider.</td></tr>
|
|
61
|
+
<tr><td><b>Run it like a real tool</b></td><td>Interactive REPL, full-screen TUI, local API, Docker image, Telegram gateway, MCP stdio, local execution, cron, and telemetry.</td></tr>
|
|
62
|
+
<tr><td><b>Published now</b></td><td><code>v0.2.0</code> is live on PyPI, GHCR, and GitHub Releases. Release gate: <code>1358 tests passing</code> — 35 integration (real subprocess / HTTP / SQLite), the rest offline fakes.</td></tr>
|
|
63
|
+
</table>
|
|
34
64
|
|
|
35
|
-
|
|
36
|
-
3.10/3.11/3.12 across Windows, macOS, and Linux. See `CHANGELOG.md` for
|
|
37
|
-
release notes, and "What is production-ready and what is contract-only"
|
|
38
|
-
below for exactly which surfaces are live.
|
|
65
|
+
---
|
|
39
66
|
|
|
40
|
-
##
|
|
67
|
+
## Quick Install
|
|
41
68
|
|
|
42
|
-
|
|
69
|
+
### Python package
|
|
43
70
|
|
|
44
71
|
```bash
|
|
45
72
|
pip install proseforge-agent
|
|
46
73
|
pf-agent --help
|
|
47
74
|
```
|
|
48
75
|
|
|
49
|
-
|
|
50
|
-
and puts `pf-agent` on your PATH):
|
|
76
|
+
### Linux, macOS, WSL2
|
|
51
77
|
|
|
52
78
|
```bash
|
|
53
79
|
curl -fsSL https://raw.githubusercontent.com/remacheybn408-boop/ProseForge-Agent/main/scripts/install.sh | sh
|
|
54
80
|
```
|
|
55
81
|
|
|
56
|
-
Windows PowerShell
|
|
82
|
+
### Windows PowerShell
|
|
57
83
|
|
|
58
84
|
```powershell
|
|
59
85
|
iex (irm https://raw.githubusercontent.com/remacheybn408-boop/ProseForge-Agent/main/scripts/install.ps1)
|
|
60
86
|
```
|
|
61
87
|
|
|
62
|
-
Docker
|
|
63
|
-
for the non-loopback bind):
|
|
88
|
+
### Docker
|
|
64
89
|
|
|
65
90
|
```bash
|
|
66
91
|
docker pull ghcr.io/remacheybn408-boop/proseforge-agent:latest
|
|
67
92
|
PF_AGENT_SERVICE_TOKEN=<your-token> docker compose up
|
|
68
93
|
```
|
|
69
94
|
|
|
70
|
-
|
|
95
|
+
Install from source, or pass `--git main` to `install.sh`, only when you
|
|
96
|
+
want unreleased changes from `main`.
|
|
71
97
|
|
|
72
|
-
|
|
73
|
-
git clone https://github.com/remacheybn408-boop/ProseForge-Agent.git
|
|
74
|
-
cd ProseForge-Agent
|
|
75
|
-
pip install -e ".[dev]"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
> PyPI and GHCR artifacts are published by the tag-triggered release
|
|
79
|
-
> workflow; if a brand-new version has not been tagged yet, install from
|
|
80
|
-
> source or pass `--git main` to `install.sh`.
|
|
81
|
-
|
|
82
|
-
## Quickstart
|
|
98
|
+
## Getting Started
|
|
83
99
|
|
|
84
100
|
```bash
|
|
85
101
|
pf-agent setup # guided wizard: providers, keys, workspace
|
|
86
|
-
pf-agent #
|
|
102
|
+
pf-agent # interactive chat REPL
|
|
103
|
+
pf-agent tui # full-screen terminal UI
|
|
104
|
+
pf-agent chat --message "draft an opening" --provider fake
|
|
105
|
+
pf-agent run --goal "draft a one-line opening" --max-iterations 5
|
|
106
|
+
pf-agent service serve # local HTTP API on 127.0.0.1:8765
|
|
87
107
|
```
|
|
88
108
|
|
|
89
109
|
The bare `pf-agent` command works like other coding agents' CLIs: the
|
|
90
110
|
first run bootstraps a workspace, and after `pf-agent setup` it talks to
|
|
91
|
-
your configured default model
|
|
92
|
-
|
|
93
|
-
provider so you can tour the CLI with no keys.
|
|
94
|
-
|
|
95
|
-
More entry points:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
pf-agent doctor # verify the installation and wiring
|
|
99
|
-
pf-agent chat --message "draft an opening" # one-shot chat turn
|
|
100
|
-
pf-agent run --goal "draft a one-line opening" --max-iterations 5
|
|
101
|
-
pf-agent service serve # local HTTP API on 127.0.0.1:8765
|
|
102
|
-
```
|
|
111
|
+
your configured default model. Without setup, it runs against the offline
|
|
112
|
+
fake provider so you can tour the CLI with no keys.
|
|
103
113
|
|
|
104
114
|
Set provider API keys in your environment (or `.env`, see
|
|
105
115
|
`.env.example`): `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, and friends.
|
|
106
|
-
|
|
116
|
+
Every command accepts `--provider fake` for a no-key offline tour.
|
|
117
|
+
|
|
118
|
+
## Project Boundary
|
|
119
|
+
|
|
120
|
+
ProseForge Agent does **not** reimplement the writing engine. The engine at
|
|
121
|
+
`$PROSEFORGE_ROOT` remains the source of truth for project slots, pipeline
|
|
122
|
+
actions, guards, reports, and exports. This package owns orchestration:
|
|
123
|
+
model calls, provider routing, schedules, evidence packs, agent memory,
|
|
124
|
+
workflow state, conversational agent loops, and background event handling.
|
|
125
|
+
|
|
126
|
+
## Release Status
|
|
127
|
+
|
|
128
|
+
`v0.2.0` was published on July 3, 2026 through PyPI Trusted Publishing.
|
|
129
|
+
Release links: [PyPI](https://pypi.org/project/proseforge-agent/),
|
|
130
|
+
[GitHub Release](https://github.com/remacheybn408-boop/ProseForge-Agent/releases/tag/v0.2.0),
|
|
131
|
+
[GHCR image](https://github.com/remacheybn408-boop/ProseForge-Agent/pkgs/container/proseforge-agent),
|
|
132
|
+
and [`CHANGELOG.md`](CHANGELOG.md).
|
|
107
133
|
|
|
108
|
-
##
|
|
134
|
+
## Technical Overview
|
|
109
135
|
|
|
110
136
|
The full stack: core orchestration, agent runtime, chat, native install,
|
|
111
137
|
hardening, autonomous runtime, agent tooling, guided setup, novel
|
|
@@ -198,11 +224,11 @@ with deterministic replay.
|
|
|
198
224
|
|
|
199
225
|
### MCP integration
|
|
200
226
|
|
|
201
|
-
MCP client foundation
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
227
|
+
MCP client foundation, server registry, security boundary, tool approval
|
|
228
|
+
gate, tool schema validation, and credentials boundary. The `stdio`
|
|
229
|
+
transport is real (subprocess JSON-RPC:
|
|
230
|
+
`pf-agent mcp inspect/tools/call`); HTTP/SSE transports are pluggable at
|
|
231
|
+
call time, and tests use deterministic in-process transports.
|
|
206
232
|
|
|
207
233
|
### Provider & tool resilience
|
|
208
234
|
|
|
@@ -295,7 +321,9 @@ requests re-checked by downstream policy, plus research-ready
|
|
|
295
321
|
`PyPIPublisher` — real `python -m build` + `twine upload` for TestPyPI /
|
|
296
322
|
PyPI, gated by the Task 47 `PackageChecker` and duplicate-version refusal,
|
|
297
323
|
with injectable runner + `dry_run` for offline tests; tokens never appear
|
|
298
|
-
in the plan, report, or logs.
|
|
324
|
+
in the plan, report, or logs. The public `v0.2.0` release path uses PyPI
|
|
325
|
+
Trusted Publishing / OIDC, so no long-lived PyPI token is stored in the
|
|
326
|
+
repository.
|
|
299
327
|
|
|
300
328
|
`BinaryBuilder` — real PyInstaller invocation derived from the Task 48
|
|
301
329
|
`BinaryManifest`, followed by the `pf-agent --version` smoke command as
|
|
@@ -412,7 +440,7 @@ configs/ agent and provider example configs
|
|
|
412
440
|
docs/ operator, developer, implementation, and
|
|
413
441
|
task-card plans (docs/superpowers/plans/)
|
|
414
442
|
samples/ sample extensions
|
|
415
|
-
tests/ pytest suite (
|
|
443
|
+
tests/ pytest suite (1338 tests) + contract / golden
|
|
416
444
|
tiers + fixtures
|
|
417
445
|
.github/workflows/ci.yml cross-platform CI (Windows, macOS, Linux)
|
|
418
446
|
```
|
|
@@ -542,38 +570,35 @@ GLM, Mimo, MiniMax, Doubao**.
|
|
|
542
570
|
Keep secrets in environment variables or local ignored config files. Do
|
|
543
571
|
not commit API keys into provider YAML.
|
|
544
572
|
|
|
545
|
-
##
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
The 1301-test suite covers both tracks via injectable runners and fake
|
|
575
|
-
transports, so `python -m pytest -q` is fully offline and requires no
|
|
576
|
-
credentials.
|
|
573
|
+
## Readiness table
|
|
574
|
+
|
|
575
|
+
Every command surface reports one of three readiness states, and any
|
|
576
|
+
report that isn't `ready` is stamped with a visible badge in its title
|
|
577
|
+
(`[contract]` or `[planned]`) so you know at a glance when you're
|
|
578
|
+
looking at a real transport vs a scaffold. Pass `--strict` to refuse
|
|
579
|
+
any non-ready command (exits 3).
|
|
580
|
+
|
|
581
|
+
| Surface | Command | Readiness | Notes |
|
|
582
|
+
| --- | --- | --- | --- |
|
|
583
|
+
| LLM providers (10 vendors) | `pf-agent chat --provider <name>` | ✅ ready | real HTTPS via `urllib`, keys from env |
|
|
584
|
+
| Memory / workspace / config | `pf-agent memory ...` / `pf-agent config ...` | ✅ ready | SQLite, portable YAML |
|
|
585
|
+
| Planning / daily / chapter / workflow | `pf-agent plan ...` / `pf-agent chapter ...` | ✅ ready | real |
|
|
586
|
+
| Retrieval + RAG | `pf-agent retrieval ...` | ✅ ready | real |
|
|
587
|
+
| Local HTTP service (port 8765) | `pf-agent service serve` | ✅ ready | bearer auth on non-loopback |
|
|
588
|
+
| MCP over stdio | `pf-agent mcp inspect/tools/call` | ✅ ready | real subprocess JSON-RPC |
|
|
589
|
+
| Local execution env | `pf-agent environments exec` | ✅ ready | real subprocess, permission-gated |
|
|
590
|
+
| Telegram gateway | `pf-agent gateway telegram start` | ✅ ready | real Bot API long-polling |
|
|
591
|
+
| Release chain | tag `v*` push | ✅ ready | PyPI Trusted Publishing + GHCR + GH Release |
|
|
592
|
+
| MCP over HTTP / SSE | `pf-agent mcp add --transport http ...` | ⚠️ contract | placeholder; opt-in via env |
|
|
593
|
+
| Docker / SSH / Singularity / Modal / Daytona backends | `pf-agent environments check <backend>` | ⚠️ contract | dry-run plans only; real runner injectable |
|
|
594
|
+
| Slack / Discord / Signal / Email gateways | `pf-agent gateway <platform> check` | ⚠️ contract | fake transport; wire like Telegram |
|
|
595
|
+
| Skills hub search / install / update | `pf-agent skills search` etc. | ⚠️ contract | fake hub client + dry-run plans |
|
|
596
|
+
| Anything the CLI routes through `_planned_report` | (many groups) | 🟡 planned | scaffold only, no real code path |
|
|
597
|
+
|
|
598
|
+
The tests-passing count in this README's Status section refers to the
|
|
599
|
+
whole offline suite (fakes + real integration paths together); the four
|
|
600
|
+
"ready" rows above are exercised by the small real-integration subset
|
|
601
|
+
(`pytest -m integration`).
|
|
577
602
|
|
|
578
603
|
## ProseForge Engine Boundary
|
|
579
604
|
|
proseforge_agent-0.2.0/src/proseforge_agent.egg-info/PKG-INFO → proseforge_agent-0.3.0/README.md
RENAMED
|
@@ -1,111 +1,118 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: proseforge-agent
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: Agentic orchestration layer for long-form novel production on top of the ProseForge engine.
|
|
5
|
-
Author: ProseForge Agent
|
|
6
|
-
License: Apache-2.0
|
|
7
|
-
Requires-Python: >=3.10
|
|
8
|
-
Description-Content-Type: text/markdown
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Requires-Dist: pyyaml>=6.0
|
|
11
|
-
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
12
|
-
Provides-Extra: dev
|
|
13
|
-
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
14
|
-
Dynamic: license-file
|
|
15
|
-
|
|
16
1
|
> 🌐 [English](README.md) · [简体中文](README.zh-CN.md)
|
|
17
2
|
|
|
18
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="assets/banner.png" alt="ProseForge Agent novel-writing command center" width="100%">
|
|
5
|
+
</p>
|
|
19
6
|
|
|
20
|
-
|
|
21
|
-
canonical **ProseForge engine** (`$PROSEFORGE_ROOT`) with planning, retrieval,
|
|
22
|
-
drafting, review, revision, deep memory, multi-provider model routing, daily
|
|
23
|
-
workbooks, reports, extensions, an agent runtime, chat, an autonomous
|
|
24
|
-
goal-directed loop, MCP integration, execution environments, skills, hosted
|
|
25
|
-
cron, observability, middleware, and a real publish/binary/installer chain.
|
|
7
|
+
<h1 align="center">ProseForge Agent</h1>
|
|
26
8
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
9
|
+
<p align="center">
|
|
10
|
+
<strong>An AI command layer for long-form novel production.</strong>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="README.zh-CN.md">简体中文</a> ·
|
|
15
|
+
<a href="https://pypi.org/project/proseforge-agent/">PyPI</a> ·
|
|
16
|
+
<a href="https://github.com/remacheybn408-boop/ProseForge-Agent/releases/tag/v0.2.0">Release v0.2.0</a> ·
|
|
17
|
+
<a href="https://github.com/remacheybn408-boop/ProseForge-Agent/pkgs/container/proseforge-agent">GHCR</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="https://pypi.org/project/proseforge-agent/"><img src="https://img.shields.io/pypi/v/proseforge-agent?style=for-the-badge&label=PyPI" alt="PyPI version"></a>
|
|
22
|
+
<a href="https://pypi.org/project/proseforge-agent/"><img src="https://img.shields.io/pypi/pyversions/proseforge-agent?style=for-the-badge" alt="Python versions"></a>
|
|
23
|
+
<a href="https://github.com/remacheybn408-boop/ProseForge-Agent/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/remacheybn408-boop/ProseForge-Agent/ci.yml?branch=main&style=for-the-badge&label=CI" alt="CI status"></a>
|
|
24
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache--2.0-green?style=for-the-badge" alt="Apache-2.0 license"></a>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
ProseForge Agent turns a novel project into a managed creative workflow:
|
|
28
|
+
plan the book, retrieve canon, draft scenes, review prose, rewrite chapters,
|
|
29
|
+
track memory, and run the whole process through your preferred model
|
|
30
|
+
provider. It sits above the canonical **ProseForge engine**
|
|
31
|
+
(`$PROSEFORGE_ROOT`) and handles orchestration rather than replacing the
|
|
32
|
+
writing engine.
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
Use it as a CLI, a full-screen terminal UI, a local HTTP service, a Docker
|
|
35
|
+
image, or a background agent with gateway integrations.
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
<table>
|
|
38
|
+
<tr><td><b>Plan the whole book</b></td><td>Turn a project goal into phase plans, daily workbooks, chapter tasks, and scene-level workflow.</td></tr>
|
|
39
|
+
<tr><td><b>Draft with memory</b></td><td>Retrieve canon, timeline, character notes, prior scenes, and evidence packs before the model writes.</td></tr>
|
|
40
|
+
<tr><td><b>Review and revise</b></td><td>Run a chapter lifecycle from draft to review, rewrite, and accept, with quality gates and rollback-friendly artifacts.</td></tr>
|
|
41
|
+
<tr><td><b>Use the model you want</b></td><td>Profiles for OpenAI, Anthropic, Gemini, xAI/Grok, DeepSeek, Qwen, GLM, Mimo, MiniMax, Doubao, plus an offline fake provider.</td></tr>
|
|
42
|
+
<tr><td><b>Run it like a real tool</b></td><td>Interactive REPL, full-screen TUI, local API, Docker image, Telegram gateway, MCP stdio, local execution, cron, and telemetry.</td></tr>
|
|
43
|
+
<tr><td><b>Published now</b></td><td><code>v0.2.0</code> is live on PyPI, GHCR, and GitHub Releases. Release gate: <code>1358 tests passing</code> — 35 integration (real subprocess / HTTP / SQLite), the rest offline fakes.</td></tr>
|
|
44
|
+
</table>
|
|
39
45
|
|
|
40
|
-
|
|
46
|
+
---
|
|
41
47
|
|
|
42
|
-
|
|
48
|
+
## Quick Install
|
|
49
|
+
|
|
50
|
+
### Python package
|
|
43
51
|
|
|
44
52
|
```bash
|
|
45
53
|
pip install proseforge-agent
|
|
46
54
|
pf-agent --help
|
|
47
55
|
```
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
and puts `pf-agent` on your PATH):
|
|
57
|
+
### Linux, macOS, WSL2
|
|
51
58
|
|
|
52
59
|
```bash
|
|
53
60
|
curl -fsSL https://raw.githubusercontent.com/remacheybn408-boop/ProseForge-Agent/main/scripts/install.sh | sh
|
|
54
61
|
```
|
|
55
62
|
|
|
56
|
-
Windows PowerShell
|
|
63
|
+
### Windows PowerShell
|
|
57
64
|
|
|
58
65
|
```powershell
|
|
59
66
|
iex (irm https://raw.githubusercontent.com/remacheybn408-boop/ProseForge-Agent/main/scripts/install.ps1)
|
|
60
67
|
```
|
|
61
68
|
|
|
62
|
-
Docker
|
|
63
|
-
for the non-loopback bind):
|
|
69
|
+
### Docker
|
|
64
70
|
|
|
65
71
|
```bash
|
|
66
72
|
docker pull ghcr.io/remacheybn408-boop/proseforge-agent:latest
|
|
67
73
|
PF_AGENT_SERVICE_TOKEN=<your-token> docker compose up
|
|
68
74
|
```
|
|
69
75
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
git clone https://github.com/remacheybn408-boop/ProseForge-Agent.git
|
|
74
|
-
cd ProseForge-Agent
|
|
75
|
-
pip install -e ".[dev]"
|
|
76
|
-
```
|
|
76
|
+
Install from source, or pass `--git main` to `install.sh`, only when you
|
|
77
|
+
want unreleased changes from `main`.
|
|
77
78
|
|
|
78
|
-
|
|
79
|
-
> workflow; if a brand-new version has not been tagged yet, install from
|
|
80
|
-
> source or pass `--git main` to `install.sh`.
|
|
81
|
-
|
|
82
|
-
## Quickstart
|
|
79
|
+
## Getting Started
|
|
83
80
|
|
|
84
81
|
```bash
|
|
85
82
|
pf-agent setup # guided wizard: providers, keys, workspace
|
|
86
|
-
pf-agent #
|
|
83
|
+
pf-agent # interactive chat REPL
|
|
84
|
+
pf-agent tui # full-screen terminal UI
|
|
85
|
+
pf-agent chat --message "draft an opening" --provider fake
|
|
86
|
+
pf-agent run --goal "draft a one-line opening" --max-iterations 5
|
|
87
|
+
pf-agent service serve # local HTTP API on 127.0.0.1:8765
|
|
87
88
|
```
|
|
88
89
|
|
|
89
90
|
The bare `pf-agent` command works like other coding agents' CLIs: the
|
|
90
91
|
first run bootstraps a workspace, and after `pf-agent setup` it talks to
|
|
91
|
-
your configured default model
|
|
92
|
-
|
|
93
|
-
provider so you can tour the CLI with no keys.
|
|
94
|
-
|
|
95
|
-
More entry points:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
pf-agent doctor # verify the installation and wiring
|
|
99
|
-
pf-agent chat --message "draft an opening" # one-shot chat turn
|
|
100
|
-
pf-agent run --goal "draft a one-line opening" --max-iterations 5
|
|
101
|
-
pf-agent service serve # local HTTP API on 127.0.0.1:8765
|
|
102
|
-
```
|
|
92
|
+
your configured default model. Without setup, it runs against the offline
|
|
93
|
+
fake provider so you can tour the CLI with no keys.
|
|
103
94
|
|
|
104
95
|
Set provider API keys in your environment (or `.env`, see
|
|
105
96
|
`.env.example`): `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, and friends.
|
|
106
|
-
|
|
97
|
+
Every command accepts `--provider fake` for a no-key offline tour.
|
|
98
|
+
|
|
99
|
+
## Project Boundary
|
|
100
|
+
|
|
101
|
+
ProseForge Agent does **not** reimplement the writing engine. The engine at
|
|
102
|
+
`$PROSEFORGE_ROOT` remains the source of truth for project slots, pipeline
|
|
103
|
+
actions, guards, reports, and exports. This package owns orchestration:
|
|
104
|
+
model calls, provider routing, schedules, evidence packs, agent memory,
|
|
105
|
+
workflow state, conversational agent loops, and background event handling.
|
|
106
|
+
|
|
107
|
+
## Release Status
|
|
108
|
+
|
|
109
|
+
`v0.2.0` was published on July 3, 2026 through PyPI Trusted Publishing.
|
|
110
|
+
Release links: [PyPI](https://pypi.org/project/proseforge-agent/),
|
|
111
|
+
[GitHub Release](https://github.com/remacheybn408-boop/ProseForge-Agent/releases/tag/v0.2.0),
|
|
112
|
+
[GHCR image](https://github.com/remacheybn408-boop/ProseForge-Agent/pkgs/container/proseforge-agent),
|
|
113
|
+
and [`CHANGELOG.md`](CHANGELOG.md).
|
|
107
114
|
|
|
108
|
-
##
|
|
115
|
+
## Technical Overview
|
|
109
116
|
|
|
110
117
|
The full stack: core orchestration, agent runtime, chat, native install,
|
|
111
118
|
hardening, autonomous runtime, agent tooling, guided setup, novel
|
|
@@ -198,11 +205,11 @@ with deterministic replay.
|
|
|
198
205
|
|
|
199
206
|
### MCP integration
|
|
200
207
|
|
|
201
|
-
MCP client foundation
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
208
|
+
MCP client foundation, server registry, security boundary, tool approval
|
|
209
|
+
gate, tool schema validation, and credentials boundary. The `stdio`
|
|
210
|
+
transport is real (subprocess JSON-RPC:
|
|
211
|
+
`pf-agent mcp inspect/tools/call`); HTTP/SSE transports are pluggable at
|
|
212
|
+
call time, and tests use deterministic in-process transports.
|
|
206
213
|
|
|
207
214
|
### Provider & tool resilience
|
|
208
215
|
|
|
@@ -295,7 +302,9 @@ requests re-checked by downstream policy, plus research-ready
|
|
|
295
302
|
`PyPIPublisher` — real `python -m build` + `twine upload` for TestPyPI /
|
|
296
303
|
PyPI, gated by the Task 47 `PackageChecker` and duplicate-version refusal,
|
|
297
304
|
with injectable runner + `dry_run` for offline tests; tokens never appear
|
|
298
|
-
in the plan, report, or logs.
|
|
305
|
+
in the plan, report, or logs. The public `v0.2.0` release path uses PyPI
|
|
306
|
+
Trusted Publishing / OIDC, so no long-lived PyPI token is stored in the
|
|
307
|
+
repository.
|
|
299
308
|
|
|
300
309
|
`BinaryBuilder` — real PyInstaller invocation derived from the Task 48
|
|
301
310
|
`BinaryManifest`, followed by the `pf-agent --version` smoke command as
|
|
@@ -412,7 +421,7 @@ configs/ agent and provider example configs
|
|
|
412
421
|
docs/ operator, developer, implementation, and
|
|
413
422
|
task-card plans (docs/superpowers/plans/)
|
|
414
423
|
samples/ sample extensions
|
|
415
|
-
tests/ pytest suite (
|
|
424
|
+
tests/ pytest suite (1338 tests) + contract / golden
|
|
416
425
|
tiers + fixtures
|
|
417
426
|
.github/workflows/ci.yml cross-platform CI (Windows, macOS, Linux)
|
|
418
427
|
```
|
|
@@ -542,38 +551,35 @@ GLM, Mimo, MiniMax, Doubao**.
|
|
|
542
551
|
Keep secrets in environment variables or local ignored config files. Do
|
|
543
552
|
not commit API keys into provider YAML.
|
|
544
553
|
|
|
545
|
-
##
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
The 1301-test suite covers both tracks via injectable runners and fake
|
|
575
|
-
transports, so `python -m pytest -q` is fully offline and requires no
|
|
576
|
-
credentials.
|
|
554
|
+
## Readiness table
|
|
555
|
+
|
|
556
|
+
Every command surface reports one of three readiness states, and any
|
|
557
|
+
report that isn't `ready` is stamped with a visible badge in its title
|
|
558
|
+
(`[contract]` or `[planned]`) so you know at a glance when you're
|
|
559
|
+
looking at a real transport vs a scaffold. Pass `--strict` to refuse
|
|
560
|
+
any non-ready command (exits 3).
|
|
561
|
+
|
|
562
|
+
| Surface | Command | Readiness | Notes |
|
|
563
|
+
| --- | --- | --- | --- |
|
|
564
|
+
| LLM providers (10 vendors) | `pf-agent chat --provider <name>` | ✅ ready | real HTTPS via `urllib`, keys from env |
|
|
565
|
+
| Memory / workspace / config | `pf-agent memory ...` / `pf-agent config ...` | ✅ ready | SQLite, portable YAML |
|
|
566
|
+
| Planning / daily / chapter / workflow | `pf-agent plan ...` / `pf-agent chapter ...` | ✅ ready | real |
|
|
567
|
+
| Retrieval + RAG | `pf-agent retrieval ...` | ✅ ready | real |
|
|
568
|
+
| Local HTTP service (port 8765) | `pf-agent service serve` | ✅ ready | bearer auth on non-loopback |
|
|
569
|
+
| MCP over stdio | `pf-agent mcp inspect/tools/call` | ✅ ready | real subprocess JSON-RPC |
|
|
570
|
+
| Local execution env | `pf-agent environments exec` | ✅ ready | real subprocess, permission-gated |
|
|
571
|
+
| Telegram gateway | `pf-agent gateway telegram start` | ✅ ready | real Bot API long-polling |
|
|
572
|
+
| Release chain | tag `v*` push | ✅ ready | PyPI Trusted Publishing + GHCR + GH Release |
|
|
573
|
+
| MCP over HTTP / SSE | `pf-agent mcp add --transport http ...` | ⚠️ contract | placeholder; opt-in via env |
|
|
574
|
+
| Docker / SSH / Singularity / Modal / Daytona backends | `pf-agent environments check <backend>` | ⚠️ contract | dry-run plans only; real runner injectable |
|
|
575
|
+
| Slack / Discord / Signal / Email gateways | `pf-agent gateway <platform> check` | ⚠️ contract | fake transport; wire like Telegram |
|
|
576
|
+
| Skills hub search / install / update | `pf-agent skills search` etc. | ⚠️ contract | fake hub client + dry-run plans |
|
|
577
|
+
| Anything the CLI routes through `_planned_report` | (many groups) | 🟡 planned | scaffold only, no real code path |
|
|
578
|
+
|
|
579
|
+
The tests-passing count in this README's Status section refers to the
|
|
580
|
+
whole offline suite (fakes + real integration paths together); the four
|
|
581
|
+
"ready" rows above are exercised by the small real-integration subset
|
|
582
|
+
(`pytest -m integration`).
|
|
577
583
|
|
|
578
584
|
## ProseForge Engine Boundary
|
|
579
585
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "proseforge-agent"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
8
8
|
description = "Agentic orchestration layer for long-form novel production on top of the ProseForge engine."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -14,6 +14,7 @@ dependencies = ["pyyaml>=6.0", "tomli>=2.0; python_version < '3.11'"]
|
|
|
14
14
|
|
|
15
15
|
[project.optional-dependencies]
|
|
16
16
|
dev = ["pytest>=7.0"]
|
|
17
|
+
ci = ["pytest>=7.0", "pytest-rerunfailures>=13.0", "pytest-repeat>=0.9"]
|
|
17
18
|
|
|
18
19
|
[project.scripts]
|
|
19
20
|
pf-agent = "proseforge_agent.cli:main"
|
|
@@ -27,3 +28,6 @@ where = ["src"]
|
|
|
27
28
|
[tool.pytest.ini_options]
|
|
28
29
|
pythonpath = ["src"]
|
|
29
30
|
testpaths = ["tests"]
|
|
31
|
+
markers = [
|
|
32
|
+
"integration: touches a real subprocess, real HTTP over urllib, or a real sqlite file (opt-in via `pytest -m integration`)",
|
|
33
|
+
]
|