procesio-cli 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- procesio_cli/__init__.py +18 -0
- procesio_cli/_cli.py +71 -0
- procesio_cli/agents/__init__.py +0 -0
- procesio_cli/agents/_lib/__init__.py +0 -0
- procesio_cli/agents/_lib/actiondef.py +24 -0
- procesio_cli/agents/_lib/errors.py +40 -0
- procesio_cli/agents/_lib/reversibility.py +236 -0
- procesio_cli/agents/_lib/toolrunner.py +141 -0
- procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-PLAYBOOK.md +62 -0
- procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-PROCESIO-INTEROP.md +76 -0
- procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-TROUBLESHOOTING.md +60 -0
- procesio_cli/agents/connector-builder/README.md +51 -0
- procesio_cli/agents/connector-builder/agent.yaml +61 -0
- procesio_cli/agents/connector-builder/context.py +19 -0
- procesio_cli/agents/connector-builder/handlers/__init__.py +1 -0
- procesio_cli/agents/connector-builder/handlers/checklist.py +71 -0
- procesio_cli/agents/connector-builder/handlers/guidance.py +37 -0
- procesio_cli/agents/connector-builder/handlers/nextstep.py +221 -0
- procesio_cli/agents/connector-builder/handlers/status.py +35 -0
- procesio_cli/agents/connector-builder/knowledge.py +47 -0
- procesio_cli/agents/connector-builder/main.py +93 -0
- procesio_cli/agents/connector-builder/tests/conftest.py +95 -0
- procesio_cli/agents/connector-builder/tests/test_cba_agent.py +148 -0
- procesio_cli/agents/orchestrator/__init__.py +0 -0
- procesio_cli/agents/orchestrator/bootstraplib.py +166 -0
- procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/00-INDEX.md +60 -0
- procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/01-PROCESSES.md +230 -0
- procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/02-FORMS.md +287 -0
- procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/03-INTEGRATIONS.md +384 -0
- procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/04-DATABASE.md +293 -0
- procesio_cli/agents/procesio/PROCESIO-API-RELIABILITY-DOCTRINE.md +113 -0
- procesio_cli/agents/procesio/PROCESIO-BEST-PRACTICES.md +316 -0
- procesio_cli/agents/procesio/PROCESIO-BUILD-AND-TEST-PLAYBOOK.md +217 -0
- procesio_cli/agents/procesio/PROCESIO-DATASTORE.md +72 -0
- procesio_cli/agents/procesio/PROCESIO-ENVIRONMENTS.md +62 -0
- procesio_cli/agents/procesio/PROCESIO-SCHEDULING.md +47 -0
- procesio_cli/agents/procesio/PROCESIO-VISUAL-ORGANIZATION.md +175 -0
- procesio_cli/agents/procesio/README.md +97 -0
- procesio_cli/agents/procesio/__init__.py +0 -0
- procesio_cli/agents/procesio/agent.yaml +73 -0
- procesio_cli/agents/procesio/audit.py +226 -0
- procesio_cli/agents/procesio/checklist.py +135 -0
- procesio_cli/agents/procesio/context.py +19 -0
- procesio_cli/agents/procesio/handlers/__init__.py +0 -0
- procesio_cli/agents/procesio/handlers/audit.py +39 -0
- procesio_cli/agents/procesio/handlers/checklist.py +34 -0
- procesio_cli/agents/procesio/handlers/guidance.py +36 -0
- procesio_cli/agents/procesio/handlers/status.py +33 -0
- procesio_cli/agents/procesio/handlers/verify.py +39 -0
- procesio_cli/agents/procesio/knowledge.py +115 -0
- procesio_cli/agents/procesio/main.py +89 -0
- procesio_cli/agents/procesio/tests/__init__.py +0 -0
- procesio_cli/agents/procesio/tests/conftest.py +62 -0
- procesio_cli/agents/procesio/tests/test_audit.py +91 -0
- procesio_cli/agents/procesio/tests/test_checklist.py +28 -0
- procesio_cli/agents/procesio/tests/test_guidance.py +78 -0
- procesio_cli/agents/procesio/tests/test_manifest_sync.py +48 -0
- procesio_cli/agents/procesio/tests/test_verify.py +134 -0
- procesio_cli/agents/procesio/tests/test_workspace_scope.py +97 -0
- procesio_cli/agents/procesio/verifylib.py +222 -0
- procesio_cli/dashboard/README.md +117 -0
- procesio_cli/dashboard/__init__.py +18 -0
- procesio_cli/dashboard/serve.py +98 -0
- procesio_cli/dashboard/server/__init__.py +1 -0
- procesio_cli/dashboard/server/config_schemas.py +92 -0
- procesio_cli/dashboard/server/google.py +103 -0
- procesio_cli/dashboard/server/handler.py +160 -0
- procesio_cli/dashboard/server/inventory.py +213 -0
- procesio_cli/dashboard/server/jobs.py +118 -0
- procesio_cli/dashboard/server/llmtest.py +181 -0
- procesio_cli/dashboard/server/procesio_env.py +94 -0
- procesio_cli/dashboard/server/routes.py +74 -0
- procesio_cli/dashboard/server/runner.py +150 -0
- procesio_cli/dashboard/server/security.py +29 -0
- procesio_cli/dashboard/server/setup.py +211 -0
- procesio_cli/dashboard/server/validate.py +152 -0
- procesio_cli/dashboard/tests/conftest.py +16 -0
- procesio_cli/dashboard/tests/test_dashboard.py +225 -0
- procesio_cli/dashboard/tests/test_procesio_env.py +159 -0
- procesio_cli/dashboard/web/actions.js +274 -0
- procesio_cli/dashboard/web/api.js +79 -0
- procesio_cli/dashboard/web/app.js +385 -0
- procesio_cli/dashboard/web/copilot.js +72 -0
- procesio_cli/dashboard/web/google.js +121 -0
- procesio_cli/dashboard/web/index.html +67 -0
- procesio_cli/dashboard/web/procesio_env.js +187 -0
- procesio_cli/dashboard/web/styles.css +207 -0
- procesio_cli/registry.py +370 -0
- procesio_cli/scripts/build-router.py +249 -0
- procesio_cli/scripts/build-tool-skill.py +202 -0
- procesio_cli/scripts/check-requirements.py +131 -0
- procesio_cli/scripts/check-skill-governance.py +174 -0
- procesio_cli/scripts/evaluate-skill-routing.py +217 -0
- procesio_cli/scripts/evaluate-skills.py +316 -0
- procesio_cli/scripts/get-skill.py +122 -0
- procesio_cli/scripts/list-skills.py +68 -0
- procesio_cli/scripts/list-tools.py +73 -0
- procesio_cli/scripts/run-agent.py +59 -0
- procesio_cli/scripts/run-tool.py +123 -0
- procesio_cli/scripts/secret_scan.py +584 -0
- procesio_cli/scripts/set-credential.py +126 -0
- procesio_cli/scripts/validate-skills.py +530 -0
- procesio_cli/skills/PORTFOLIO.md +134 -0
- procesio_cli/skills/__init__.py +6 -0
- procesio_cli/skills/agent-skill-engineer/SKILL.md +226 -0
- procesio_cli/skills/agent-skill-engineer/evals/evals.json +422 -0
- procesio_cli/skills/agent-skill-engineer/references/authoring-standard.md +178 -0
- procesio_cli/skills/agent-skill-engineer/references/decision-framework.md +107 -0
- procesio_cli/skills/agent-skill-engineer/references/domain-evidence-protocol.md +248 -0
- procesio_cli/skills/agent-skill-engineer/references/evaluation-standard.md +191 -0
- procesio_cli/skills/agent-skill-engineer/references/expert-lenses.md +167 -0
- procesio_cli/skills/agent-skill-engineer/references/field-gate-standard.md +231 -0
- procesio_cli/skills/agent-skill-engineer/references/optimization-protocol.md +233 -0
- procesio_cli/skills/agent-skill-engineer/references/optimizer-contract.md +268 -0
- procesio_cli/skills/agent-skill-engineer/references/portability-standard.md +99 -0
- procesio_cli/skills/agent-skill-engineer/references/research-basis.md +128 -0
- procesio_cli/skills/agent-skill-engineer/references/review-standard.md +143 -0
- procesio_cli/skills/agent-skill-engineer/scripts/audit_skill.py +959 -0
- procesio_cli/skills/agent-skill-engineer/scripts/optimize_skill.py +891 -0
- procesio_cli/skills/agent-skill-engineer/scripts/scaffold_skill.py +397 -0
- procesio_cli/skills/evals/baseline-catalog.json +14 -0
- procesio_cli/skills/evals/baseline-routing-v2.json +38 -0
- procesio_cli/skills/evals/baseline.json +37 -0
- procesio_cli/skills/evals/behavioral.json +367 -0
- procesio_cli/skills/evals/field-boundary-development-v1.json +126 -0
- procesio_cli/skills/evals/field-closeout-correction-development-v1.json +23 -0
- procesio_cli/skills/evals/field-closeout-development-v1.json +89 -0
- procesio_cli/skills/evals/portfolio-pressure-training-v1.json +83 -0
- procesio_cli/skills/evals/routing.json +363 -0
- procesio_cli/skills/evals/validation-baseline.json +4 -0
- procesio_cli/skills/procesio-cli/SKILL.md +134 -0
- procesio_cli/skills/procesio-cli/evals/evals.json +111 -0
- procesio_cli/skills/procesio-cli/evals/workflows.json +16 -0
- procesio_cli/skills/procesio-cli/references/connector-lifecycle.md +47 -0
- procesio_cli/skills/procesio-cli/references/credentials-admin.md +113 -0
- procesio_cli/skills/procesio-cli/references/data-verification.md +71 -0
- procesio_cli/skills/procesio-cli/references/documents-files.md +44 -0
- procesio_cli/skills/procesio-cli/references/form-e2e.md +57 -0
- procesio_cli/skills/procesio-cli/references/operation-contract.md +138 -0
- procesio_cli/skills/procesio-cli/references/process-debugging.md +65 -0
- procesio_cli/skills/procesio-cli/references/process-lifecycle.md +88 -0
- procesio_cli/skills/procesio-cli/references/schedules-webhooks.md +58 -0
- procesio_cli/skills/procesio-cli/references/transport-environments.md +53 -0
- procesio_cli/skills/procesio-cli-maintainer/SKILL.md +84 -0
- procesio_cli/skills/procesio-cli-maintainer/evals/evals.json +116 -0
- procesio_cli/skills/procesio-cli-maintainer/references/change-contract.md +34 -0
- procesio_cli/skills/procesio-cli-maintainer/references/mcp-compatibility.md +13 -0
- procesio_cli/skills/procesio-cli-maintainer/references/skill-authoring.md +51 -0
- procesio_cli/skills/procesio-platform-advisor/SKILL.md +82 -0
- procesio_cli/skills/procesio-platform-advisor/evals/evals.json +116 -0
- procesio_cli/skills/procesio-platform-advisor/references/capability-map.md +22 -0
- procesio_cli/skills/procesio-platform-advisor/references/fit-framework.md +35 -0
- procesio_cli/skills/procesio-platform-advisor/references/freshness-policy.md +25 -0
- procesio_cli/skills/procesio-platform-advisor/references/sizing-method.md +70 -0
- procesio_cli/skills/procesio-platform-advisor/scripts/estimate_capacity.py +99 -0
- procesio_cli/skills/procesio-setup/SKILL.md +180 -0
- procesio_cli/skills/sql-server-optimizer/SKILL.md +86 -0
- procesio_cli/skills/sql-server-optimizer/evals/evals.json +116 -0
- procesio_cli/skills/sql-server-optimizer/references/db-context.md +44 -0
- procesio_cli/skills/sql-server-optimizer/references/generic-mode.md +32 -0
- procesio_cli/skills/sql-server-optimizer/references/procesio-mode.md +40 -0
- procesio_cli/skills/sql-server-optimizer/references/sql-rules.md +43 -0
- procesio_cli/skills/sql-server-optimizer/scripts/export-indexes.sql +178 -0
- procesio_cli/skills/sql-server-optimizer/scripts/export-procs-and-functions.sql +118 -0
- procesio_cli/skills/sql-server-optimizer/scripts/export-tables.sql +367 -0
- procesio_cli/skills/tests/__init__.py +0 -0
- procesio_cli/skills/tests/test_agent_skill_engineer.py +240 -0
- procesio_cli/skills/tests/test_auth_failure_stop.py +25 -0
- procesio_cli/skills/tests/test_capacity_estimator.py +85 -0
- procesio_cli/skills/tests/test_field_boundary_learning.py +100 -0
- procesio_cli/skills/tests/test_field_closeout_learning.py +123 -0
- procesio_cli/skills/tests/test_field_gate_standard.py +76 -0
- procesio_cli/skills/tests/test_operational_playbooks.py +51 -0
- procesio_cli/skills/tests/test_portfolio_pressure_training.py +35 -0
- procesio_cli/skills/tests/test_process_lifecycle_single_run.py +25 -0
- procesio_cli/skills/tests/test_skill_evaluator.py +67 -0
- procesio_cli/skills/tests/test_skill_optimizer.py +473 -0
- procesio_cli/skills/tests/test_skill_portfolio_review.py +70 -0
- procesio_cli/skills/tests/test_skill_release_binding.py +204 -0
- procesio_cli/skills/tests/test_skill_routing.py +74 -0
- procesio_cli/skills/tests/test_skill_scaffold_v2.py +116 -0
- procesio_cli/skills/tests/test_validate_skills.py +115 -0
- procesio_cli/tools/__init__.py +0 -0
- procesio_cli/tools/_lib/README.md +119 -0
- procesio_cli/tools/_lib/__init__.py +0 -0
- procesio_cli/tools/_lib/accounting.py +120 -0
- procesio_cli/tools/_lib/contacts.py +544 -0
- procesio_cli/tools/_lib/creds.py +83 -0
- procesio_cli/tools/_lib/creds_backends.py +578 -0
- procesio_cli/tools/_lib/dbprofiles.py +147 -0
- procesio_cli/tools/_lib/dbquery.py +286 -0
- procesio_cli/tools/_lib/dbschema.py +225 -0
- procesio_cli/tools/_lib/io.py +54 -0
- procesio_cli/tools/_lib/manifest.py +297 -0
- procesio_cli/tools/_lib/skill_release.py +127 -0
- procesio_cli/tools/_lib/skill_resources.py +118 -0
- procesio_cli/tools/_lib/userdata.py +228 -0
- procesio_cli/tools/_lib/webserialize/__init__.py +16 -0
- procesio_cli/tools/_lib/webserialize/admin.py +61 -0
- procesio_cli/tools/_lib/webserialize/client.py +264 -0
- procesio_cli/tools/_lib/webserialize/config.py +96 -0
- procesio_cli/tools/_lib/webserialize/errors.py +27 -0
- procesio_cli/tools/_lib/webserialize/framing.py +45 -0
- procesio_cli/tools/_lib/webserialize/registry.py +47 -0
- procesio_cli/tools/_lib/webserialize/runtime.py +61 -0
- procesio_cli/tools/_lib/webserialize/server.py +510 -0
- procesio_cli/tools/_lib/websession.py +194 -0
- procesio_cli/tools/connector-builder/CONNECTOR-BUILDER-API-NOTES.md +91 -0
- procesio_cli/tools/connector-builder/README.md +101 -0
- procesio_cli/tools/connector-builder/SKILL.md +248 -0
- procesio_cli/tools/connector-builder/__init__.py +7 -0
- procesio_cli/tools/connector-builder/actiondef.py +24 -0
- procesio_cli/tools/connector-builder/client.py +251 -0
- procesio_cli/tools/connector-builder/errors.py +44 -0
- procesio_cli/tools/connector-builder/gen_manifest.py +142 -0
- procesio_cli/tools/connector-builder/handlers/__init__.py +1 -0
- procesio_cli/tools/connector-builder/handlers/admin.py +182 -0
- procesio_cli/tools/connector-builder/handlers/auth.py +74 -0
- procesio_cli/tools/connector-builder/handlers/builds.py +396 -0
- procesio_cli/tools/connector-builder/handlers/common.py +104 -0
- procesio_cli/tools/connector-builder/handlers/files.py +111 -0
- procesio_cli/tools/connector-builder/handlers/raw.py +38 -0
- procesio_cli/tools/connector-builder/handlers/telemetry.py +39 -0
- procesio_cli/tools/connector-builder/main.py +94 -0
- procesio_cli/tools/connector-builder/tests/conftest.py +146 -0
- procesio_cli/tools/connector-builder/tests/test_cb_client.py +86 -0
- procesio_cli/tools/connector-builder/tests/test_cb_dispatch.py +105 -0
- procesio_cli/tools/connector-builder/tests/test_cb_manifest_sync.py +76 -0
- procesio_cli/tools/connector-builder/tests/test_cb_wait.py +123 -0
- procesio_cli/tools/connector-builder/tool.yaml +671 -0
- procesio_cli/tools/framework-map/.gitattributes +2 -0
- procesio_cli/tools/framework-map/README.md +98 -0
- procesio_cli/tools/framework-map/SKILL.md +30 -0
- procesio_cli/tools/framework-map/app.js +188 -0
- procesio_cli/tools/framework-map/fm_builder.py +476 -0
- procesio_cli/tools/framework-map/fm_catalog.py +19 -0
- procesio_cli/tools/framework-map/fm_ro_catalog.py +94 -0
- procesio_cli/tools/framework-map/fm_strings.py +101 -0
- procesio_cli/tools/framework-map/main.py +95 -0
- procesio_cli/tools/framework-map/styles.css +214 -0
- procesio_cli/tools/framework-map/tests/conftest.py +33 -0
- procesio_cli/tools/framework-map/tests/test_fm_build.py +126 -0
- procesio_cli/tools/framework-map/tests/test_fm_manifest_sync.py +63 -0
- procesio_cli/tools/framework-map/tests/test_fm_store_tree.py +75 -0
- procesio_cli/tools/framework-map/tool.yaml +61 -0
- procesio_cli/tools/mysql/MOVED-TO-CENTRAL.md +29 -0
- procesio_cli/tools/mysql/README.md +196 -0
- procesio_cli/tools/mysql/SKILL.md +37 -0
- procesio_cli/tools/mysql/__init__.py +0 -0
- procesio_cli/tools/mysql/connection.py +191 -0
- procesio_cli/tools/mysql/main.py +487 -0
- procesio_cli/tools/mysql/profiles.template.json +1 -0
- procesio_cli/tools/mysql/schema.py +434 -0
- procesio_cli/tools/mysql/tests/__init__.py +0 -0
- procesio_cli/tools/mysql/tests/conftest.py +21 -0
- procesio_cli/tools/mysql/tests/test_manifest_sync.py +68 -0
- procesio_cli/tools/mysql/tests/test_mysql.py +201 -0
- procesio_cli/tools/mysql/tests/test_mysql_schema.py +337 -0
- procesio_cli/tools/mysql/tool.yaml +112 -0
- procesio_cli/tools/procesio/DTO-SUBTOOLS-NOTE.md +360 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/00-INDEX.md +67 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/01-ANATOMY.md +209 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/02-CODE-INJECTION.md +309 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/03-DOM-CONTRACT.md +370 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/04-INTERACTION-RECIPES.md +600 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/05-STEPPER-AND-MOTION.md +426 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/06-PROCESS-INTEGRATION.md +347 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/07-DEPLOY-WORKFLOW.md +294 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/08-PITFALLS.md +569 -0
- procesio_cli/tools/procesio/FORM-DEV-GUIDE/09-NAVIGATION-AND-HOSTING.md +308 -0
- procesio_cli/tools/procesio/PHASE4-E2E-NOTES.md +594 -0
- procesio_cli/tools/procesio/PROCESIO-API-CORRECTIONS.md +295 -0
- procesio_cli/tools/procesio/PROCESIO-API-NOTES.md +6976 -0
- procesio_cli/tools/procesio/PROCESIO-AUTH-NOTES.md +226 -0
- procesio_cli/tools/procesio/PROCESIO-CARD-BUILD-NOTES.md +183 -0
- procesio_cli/tools/procesio/PROCESIO-CONNECTORS-NOTES.md +141 -0
- procesio_cli/tools/procesio/PROCESIO-CUSTOM-ACTION-NOTES.md +179 -0
- procesio_cli/tools/procesio/PROCESIO-DOCS-FIX-REPORT.md +123 -0
- procesio_cli/tools/procesio/PROCESIO-ENVIRONMENTS-NOTES.md +94 -0
- procesio_cli/tools/procesio/PROCESIO-FE-VALIDATION-NOTES.md +107 -0
- procesio_cli/tools/procesio/PROCESIO-FOREACH-NOTES.md +199 -0
- procesio_cli/tools/procesio/PROCESIO-FORM-API-HANG-NOTE.md +101 -0
- procesio_cli/tools/procesio/PROCESIO-FORM-SUBMISSION-NOTES.md +172 -0
- procesio_cli/tools/procesio/PROCESIO-HTML-TO-DOCX-NOTES.md +110 -0
- procesio_cli/tools/procesio/PROCESIO-INSTANCE-HISTORY-NOTES.md +242 -0
- procesio_cli/tools/procesio/PROCESIO-METERING-NOTES.md +201 -0
- procesio_cli/tools/procesio/PROCESIO-NODE-CODE-NOTES.md +279 -0
- procesio_cli/tools/procesio/PROCESIO-NODE-MODULE-WHITELIST.md +113 -0
- procesio_cli/tools/procesio/PROCESIO-PYTHON-ACTION-NOTES.md +165 -0
- procesio_cli/tools/procesio/PROCESIO-QUERY-STORE-NOTES.md +826 -0
- procesio_cli/tools/procesio/PROCESIO-RECONCILIATION-PATTERNS.md +104 -0
- procesio_cli/tools/procesio/PROCESIO-RESOURCE-MODEL-NOTES.md +1100 -0
- procesio_cli/tools/procesio/PROCESIO-SEND-EMAIL-CRED-OPTIONALITY.md +45 -0
- procesio_cli/tools/procesio/PROCESIO-SEND-EMAIL-NOTES.md +252 -0
- procesio_cli/tools/procesio/PROCESIO-SQL-ACTIONS-NOTES.md +284 -0
- procesio_cli/tools/procesio/PROCESIO-USAGE-GUIDE.md +219 -0
- procesio_cli/tools/procesio/README.md +341 -0
- procesio_cli/tools/procesio/SCHEDULE-INPUT-SECURITY-NOTES.md +63 -0
- procesio_cli/tools/procesio/SKILL.md +694 -0
- procesio_cli/tools/procesio/__init__.py +1 -0
- procesio_cli/tools/procesio/actiondef.py +27 -0
- procesio_cli/tools/procesio/assets/html2docx/html2docx.js +2155 -0
- procesio_cli/tools/procesio/auth.py +354 -0
- procesio_cli/tools/procesio/autogen.py +121 -0
- procesio_cli/tools/procesio/client.py +355 -0
- procesio_cli/tools/procesio/config.py +96 -0
- procesio_cli/tools/procesio/data/endpoints.json +2901 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/01-authentication.md +180 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/02-conventions.md +116 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/ANONYMOUS-SURFACE.md +51 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/README.md +104 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/SYMBOL-INDEX.md +444 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/03-auth-users-workspaces.md +731 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/04-processes.md +913 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/05-actions.md +605 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/06-files.md +237 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/07-forms-documents.md +985 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/08-credentials.md +532 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/09-datastore-datatypes.md +830 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/10-custom-urls.md +319 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/11-subscriptions-resources-analytics.md +455 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/12-webhooks-notifications-misc.md +519 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/13-realtime-signalr.md +153 -0
- procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/99-internal-and-other-services.md +52 -0
- procesio_cli/tools/procesio/docs_info/FormBuilder mock.ts +5725 -0
- procesio_cli/tools/procesio/docs_info/Procesio Platform Actions.json +30219 -0
- procesio_cli/tools/procesio/docs_info/form-config-enums.ts +92 -0
- procesio_cli/tools/procesio/docs_info/form-theme.ts +1603 -0
- procesio_cli/tools/procesio/docs_info/process-validation-reference-1.md +2739 -0
- procesio_cli/tools/procesio/dto/__init__.py +13 -0
- procesio_cli/tools/procesio/dto/credential/builder.py +179 -0
- procesio_cli/tools/procesio/dto/credential/config.schema.json +19 -0
- procesio_cli/tools/procesio/dto/credential/description.md +193 -0
- procesio_cli/tools/procesio/dto/credential/fixtures/rest.config.json +11 -0
- procesio_cli/tools/procesio/dto/credential/fixtures/rest.dto.json +28 -0
- procesio_cli/tools/procesio/dto/credential/fixtures/rest.template.json +44 -0
- procesio_cli/tools/procesio/dto/credential/template.dto.json +16 -0
- procesio_cli/tools/procesio/dto/data/_refresh.py +147 -0
- procesio_cli/tools/procesio/dto/data/action_catalog.json +30825 -0
- procesio_cli/tools/procesio/dto/data/action_families.json +55 -0
- procesio_cli/tools/procesio/dto/data/platform_types.json +182 -0
- procesio_cli/tools/procesio/dto/datatype/builder.py +223 -0
- procesio_cli/tools/procesio/dto/datatype/config.schema.json +47 -0
- procesio_cli/tools/procesio/dto/datatype/description.md +85 -0
- procesio_cli/tools/procesio/dto/datatype/fixtures/customer.config.json +41 -0
- procesio_cli/tools/procesio/dto/datatype/fixtures/customer.dto.json +164 -0
- procesio_cli/tools/procesio/dto/datatype/template.dto.json +37 -0
- procesio_cli/tools/procesio/dto/document/builder.py +193 -0
- procesio_cli/tools/procesio/dto/document/config.schema.json +33 -0
- procesio_cli/tools/procesio/dto/document/description.md +124 -0
- procesio_cli/tools/procesio/dto/document/fixtures/invoice.config.json +16 -0
- procesio_cli/tools/procesio/dto/document/fixtures/invoice.dto.json +32 -0
- procesio_cli/tools/procesio/dto/document/template.dto.json +14 -0
- procesio_cli/tools/procesio/dto/form/FORM-STYLING-NOTES.md +142 -0
- procesio_cli/tools/procesio/dto/form/GOLDEN-DRIFT-NOTES.md +72 -0
- procesio_cli/tools/procesio/dto/form/RUN-PROCESS-RESULT-NOTES.md +80 -0
- procesio_cli/tools/procesio/dto/form/addelement.py +277 -0
- procesio_cli/tools/procesio/dto/form/builder.py +1009 -0
- procesio_cli/tools/procesio/dto/form/capture_goldens.py +106 -0
- procesio_cli/tools/procesio/dto/form/code_cipher.py +67 -0
- procesio_cli/tools/procesio/dto/form/config.schema.json +76 -0
- procesio_cli/tools/procesio/dto/form/data_shell.json +1 -0
- procesio_cli/tools/procesio/dto/form/description.md +346 -0
- procesio_cli/tools/procesio/dto/form/elements/approval.json +259 -0
- procesio_cli/tools/procesio/dto/form/elements/assignee.json +137 -0
- procesio_cli/tools/procesio/dto/form/elements/button.json +125 -0
- procesio_cli/tools/procesio/dto/form/elements/chart.json +341 -0
- procesio_cli/tools/procesio/dto/form/elements/chat.json +199 -0
- procesio_cli/tools/procesio/dto/form/elements/checkbox.json +153 -0
- procesio_cli/tools/procesio/dto/form/elements/column.json +77 -0
- procesio_cli/tools/procesio/dto/form/elements/columns.json +78 -0
- procesio_cli/tools/procesio/dto/form/elements/datetime-input.json +304 -0
- procesio_cli/tools/procesio/dto/form/elements/divider.json +54 -0
- procesio_cli/tools/procesio/dto/form/elements/dropdown.json +130 -0
- procesio_cli/tools/procesio/dto/form/elements/dynamic-table-row.json +253 -0
- procesio_cli/tools/procesio/dto/form/elements/file-upload.json +196 -0
- procesio_cli/tools/procesio/dto/form/elements/file-viewer.json +169 -0
- procesio_cli/tools/procesio/dto/form/elements/heading.json +79 -0
- procesio_cli/tools/procesio/dto/form/elements/icon.json +107 -0
- procesio_cli/tools/procesio/dto/form/elements/image.json +174 -0
- procesio_cli/tools/procesio/dto/form/elements/input.json +206 -0
- procesio_cli/tools/procesio/dto/form/elements/list.json +202 -0
- procesio_cli/tools/procesio/dto/form/elements/number-input.json +202 -0
- procesio_cli/tools/procesio/dto/form/elements/paragraph.json +79 -0
- procesio_cli/tools/procesio/dto/form/elements/radiobox.json +174 -0
- procesio_cli/tools/procesio/dto/form/elements/section.json +114 -0
- procesio_cli/tools/procesio/dto/form/elements/select.json +217 -0
- procesio_cli/tools/procesio/dto/form/elements/side-panel.json +146 -0
- procesio_cli/tools/procesio/dto/form/elements/signature-pad.json +141 -0
- procesio_cli/tools/procesio/dto/form/elements/static-table-row.json +84 -0
- procesio_cli/tools/procesio/dto/form/elements/step.json +105 -0
- procesio_cli/tools/procesio/dto/form/elements/stepper.json +126 -0
- procesio_cli/tools/procesio/dto/form/elements/tab.json +77 -0
- procesio_cli/tools/procesio/dto/form/elements/table.json +279 -0
- procesio_cli/tools/procesio/dto/form/elements/tabs.json +114 -0
- procesio_cli/tools/procesio/dto/form/elements/textarea.json +213 -0
- procesio_cli/tools/procesio/dto/form/enum_map.json +68 -0
- procesio_cli/tools/procesio/dto/form/fieldpath.py +284 -0
- procesio_cli/tools/procesio/dto/form/fixtures/reg.config.json +32 -0
- procesio_cli/tools/procesio/dto/form/fixtures/reg.elements.json +638 -0
- procesio_cli/tools/procesio/dto/form/sync_from_mock.py +386 -0
- procesio_cli/tools/procesio/dto/framework.py +125 -0
- procesio_cli/tools/procesio/dto/process/builder.py +1991 -0
- procesio_cli/tools/procesio/dto/process/config.schema.json +159 -0
- procesio_cli/tools/procesio/dto/process/description.md +218 -0
- procesio_cli/tools/procesio/dto/process/fixtures/greet.config.json +32 -0
- procesio_cli/tools/procesio/dto/process/fixtures/greet.dto.json +317 -0
- procesio_cli/tools/procesio/dto/process/naming.py +305 -0
- procesio_cli/tools/procesio/dto/process/normalize.py +74 -0
- procesio_cli/tools/procesio/dto/process/template.dto.json +32 -0
- procesio_cli/tools/procesio/dto/refdata.py +87 -0
- procesio_cli/tools/procesio/dto/registry.py +27 -0
- procesio_cli/tools/procesio/dto/webhook/builder.py +142 -0
- procesio_cli/tools/procesio/dto/webhook/config.schema.json +25 -0
- procesio_cli/tools/procesio/dto/webhook/description.md +92 -0
- procesio_cli/tools/procesio/dto/webhook/fixtures/order.config.json +10 -0
- procesio_cli/tools/procesio/dto/webhook/fixtures/order.dto.json +25 -0
- procesio_cli/tools/procesio/dto/webhook/template.dto.json +14 -0
- procesio_cli/tools/procesio/environments.py +264 -0
- procesio_cli/tools/procesio/errors.py +166 -0
- procesio_cli/tools/procesio/flowmodel/README.md +37 -0
- procesio_cli/tools/procesio/flowmodel/__init__.py +14 -0
- procesio_cli/tools/procesio/flowmodel/digest.py +223 -0
- procesio_cli/tools/procesio/flowmodel/families.py +34 -0
- procesio_cli/tools/procesio/flowmodel/fevalidation.py +1098 -0
- procesio_cli/tools/procesio/flowmodel/formdigest.py +232 -0
- procesio_cli/tools/procesio/flowmodel/inspect.py +78 -0
- procesio_cli/tools/procesio/flowmodel/model.py +82 -0
- procesio_cli/tools/procesio/flowmodel/nodeparam.py +871 -0
- procesio_cli/tools/procesio/flowmodel/reader.py +191 -0
- procesio_cli/tools/procesio/flowmodel/sqlparam.py +410 -0
- procesio_cli/tools/procesio/form_code_keys.py +50 -0
- procesio_cli/tools/procesio/formlint.py +292 -0
- procesio_cli/tools/procesio/gen_manifest.py +118 -0
- procesio_cli/tools/procesio/handlers/__init__.py +1 -0
- procesio_cli/tools/procesio/handlers/auth_actions.py +103 -0
- procesio_cli/tools/procesio/handlers/catalog.py +147 -0
- procesio_cli/tools/procesio/handlers/common.py +90 -0
- procesio_cli/tools/procesio/handlers/customaction_ops.py +146 -0
- procesio_cli/tools/procesio/handlers/datastore_ops.py +482 -0
- procesio_cli/tools/procesio/handlers/datatype_ops.py +275 -0
- procesio_cli/tools/procesio/handlers/dto_actions.py +258 -0
- procesio_cli/tools/procesio/handlers/environment_admin.py +146 -0
- procesio_cli/tools/procesio/handlers/fevalidate.py +236 -0
- procesio_cli/tools/procesio/handlers/files.py +141 -0
- procesio_cli/tools/procesio/handlers/flowgraph.py +229 -0
- procesio_cli/tools/procesio/handlers/flowlint.py +269 -0
- procesio_cli/tools/procesio/handlers/form_chains.py +336 -0
- procesio_cli/tools/procesio/handlers/form_code.py +277 -0
- procesio_cli/tools/procesio/handlers/form_element.py +199 -0
- procesio_cli/tools/procesio/handlers/form_events.py +441 -0
- procesio_cli/tools/procesio/handlers/form_update.py +270 -0
- procesio_cli/tools/procesio/handlers/formprocess.py +211 -0
- procesio_cli/tools/procesio/handlers/generic.py +135 -0
- procesio_cli/tools/procesio/handlers/layout.py +137 -0
- procesio_cli/tools/procesio/handlers/nodeparams.py +1018 -0
- procesio_cli/tools/procesio/handlers/process_layout.py +189 -0
- procesio_cli/tools/procesio/handlers/process_naming.py +213 -0
- procesio_cli/tools/procesio/handlers/processes.py +416 -0
- procesio_cli/tools/procesio/handlers/profile_admin.py +184 -0
- procesio_cli/tools/procesio/handlers/resource_ops.py +447 -0
- procesio_cli/tools/procesio/handlers/schedules.py +320 -0
- procesio_cli/tools/procesio/handlers/sqlactions.py +232 -0
- procesio_cli/tools/procesio/handlers/transport.py +463 -0
- procesio_cli/tools/procesio/handlers/usageguide.py +222 -0
- procesio_cli/tools/procesio/layout/README.md +196 -0
- procesio_cli/tools/procesio/layout/__init__.py +11 -0
- procesio_cli/tools/procesio/layout/adapter.py +736 -0
- procesio_cli/tools/procesio/layout/cycles.py +186 -0
- procesio_cli/tools/procesio/layout/dispatch.py +39 -0
- procesio_cli/tools/procesio/layout/elk/elk_runner.mjs +50 -0
- procesio_cli/tools/procesio/layout/elk/package-lock.json +21 -0
- procesio_cli/tools/procesio/layout/elk/package.json +11 -0
- procesio_cli/tools/procesio/layout/elk_engine.py +568 -0
- procesio_cli/tools/procesio/layout/engine.py +1311 -0
- procesio_cli/tools/procesio/layout/report.py +187 -0
- procesio_cli/tools/procesio/main.py +179 -0
- procesio_cli/tools/procesio/profiles.py +193 -0
- procesio_cli/tools/procesio/reliability.py +193 -0
- procesio_cli/tools/procesio/sqlformat.py +167 -0
- procesio_cli/tools/procesio/swagger.py +51 -0
- procesio_cli/tools/procesio/tests/__init__.py +0 -0
- procesio_cli/tools/procesio/tests/conftest.py +129 -0
- procesio_cli/tools/procesio/tests/test_auth.py +200 -0
- procesio_cli/tools/procesio/tests/test_autogen.py +78 -0
- procesio_cli/tools/procesio/tests/test_builder_attrpath_sqlbind.py +180 -0
- procesio_cli/tools/procesio/tests/test_builder_custom_action_catalog.py +72 -0
- procesio_cli/tools/procesio/tests/test_client.py +114 -0
- procesio_cli/tools/procesio/tests/test_client_reliability.py +139 -0
- procesio_cli/tools/procesio/tests/test_customaction.py +103 -0
- procesio_cli/tools/procesio/tests/test_customaction_test.py +80 -0
- procesio_cli/tools/procesio/tests/test_cycles.py +69 -0
- procesio_cli/tools/procesio/tests/test_datastore.py +378 -0
- procesio_cli/tools/procesio/tests/test_datastore_node.py +94 -0
- procesio_cli/tools/procesio/tests/test_dispatch.py +170 -0
- procesio_cli/tools/procesio/tests/test_document_page_size.py +19 -0
- procesio_cli/tools/procesio/tests/test_dto.py +734 -0
- procesio_cli/tools/procesio/tests/test_edit_dryrun_preview.py +96 -0
- procesio_cli/tools/procesio/tests/test_elk_layout.py +221 -0
- procesio_cli/tools/procesio/tests/test_environments.py +214 -0
- procesio_cli/tools/procesio/tests/test_fevalidate_gate.py +104 -0
- procesio_cli/tools/procesio/tests/test_fevalidation.py +317 -0
- procesio_cli/tools/procesio/tests/test_fieldpath_variables.py +87 -0
- procesio_cli/tools/procesio/tests/test_files.py +72 -0
- procesio_cli/tools/procesio/tests/test_flow_digest.py +202 -0
- procesio_cli/tools/procesio/tests/test_flowlint.py +114 -0
- procesio_cli/tools/procesio/tests/test_flowmodel.py +158 -0
- procesio_cli/tools/procesio/tests/test_form_add_element.py +256 -0
- procesio_cli/tools/procesio/tests/test_form_approval_gaps.py +319 -0
- procesio_cli/tools/procesio/tests/test_form_auto_names.py +60 -0
- procesio_cli/tools/procesio/tests/test_form_chains.py +217 -0
- procesio_cli/tools/procesio/tests/test_form_code_actions.py +188 -0
- procesio_cli/tools/procesio/tests/test_form_code_keys.py +92 -0
- procesio_cli/tools/procesio/tests/test_form_code_style.py +178 -0
- procesio_cli/tools/procesio/tests/test_form_delete_element.py +99 -0
- procesio_cli/tools/procesio/tests/test_form_element_config.py +141 -0
- procesio_cli/tools/procesio/tests/test_form_event_maps.py +135 -0
- procesio_cli/tools/procesio/tests/test_form_event_ops.py +376 -0
- procesio_cli/tools/procesio/tests/test_form_event_replace.py +86 -0
- procesio_cli/tools/procesio/tests/test_form_events.py +92 -0
- procesio_cli/tools/procesio/tests/test_form_parity.py +171 -0
- procesio_cli/tools/procesio/tests/test_form_select_source.py +74 -0
- procesio_cli/tools/procesio/tests/test_form_sync.py +35 -0
- procesio_cli/tools/procesio/tests/test_form_update.py +133 -0
- procesio_cli/tools/procesio/tests/test_formlint.py +155 -0
- procesio_cli/tools/procesio/tests/test_formlint_css_scope.py +38 -0
- procesio_cli/tools/procesio/tests/test_formlint_field_names.py +83 -0
- procesio_cli/tools/procesio/tests/test_guards.py +110 -0
- procesio_cli/tools/procesio/tests/test_hidden_setting_types.py +39 -0
- procesio_cli/tools/procesio/tests/test_html2docx_asset.py +132 -0
- procesio_cli/tools/procesio/tests/test_key_handle_terminology.py +45 -0
- procesio_cli/tools/procesio/tests/test_layout.py +574 -0
- procesio_cli/tools/procesio/tests/test_layout_report.py +88 -0
- procesio_cli/tools/procesio/tests/test_manifest_sync.py +68 -0
- procesio_cli/tools/procesio/tests/test_nodedelete.py +151 -0
- procesio_cli/tools/procesio/tests/test_nodeparam.py +826 -0
- procesio_cli/tools/procesio/tests/test_normalize.py +70 -0
- procesio_cli/tools/procesio/tests/test_payload_docs.py +86 -0
- procesio_cli/tools/procesio/tests/test_process_action_naming.py +170 -0
- procesio_cli/tools/procesio/tests/test_process_call_api_seed.py +46 -0
- procesio_cli/tools/procesio/tests/test_process_ext.py +373 -0
- procesio_cli/tools/procesio/tests/test_process_invariants.py +183 -0
- procesio_cli/tools/procesio/tests/test_process_layout.py +117 -0
- procesio_cli/tools/procesio/tests/test_process_naming.py +188 -0
- procesio_cli/tools/procesio/tests/test_process_query_store.py +172 -0
- procesio_cli/tools/procesio/tests/test_processinfo_variable.py +56 -0
- procesio_cli/tools/procesio/tests/test_profiles.py +127 -0
- procesio_cli/tools/procesio/tests/test_put_projects.py +41 -0
- procesio_cli/tools/procesio/tests/test_reliability.py +107 -0
- procesio_cli/tools/procesio/tests/test_removal_gate.py +95 -0
- procesio_cli/tools/procesio/tests/test_resource_ops.py +173 -0
- procesio_cli/tools/procesio/tests/test_save_validity.py +207 -0
- procesio_cli/tools/procesio/tests/test_schedule_cron_shape.py +111 -0
- procesio_cli/tools/procesio/tests/test_schedules.py +309 -0
- procesio_cli/tools/procesio/tests/test_sqlconvert.py +234 -0
- procesio_cli/tools/procesio/tests/test_sqlformat.py +83 -0
- procesio_cli/tools/procesio/tests/test_sqlparam.py +187 -0
- procesio_cli/tools/procesio/tests/test_superseded_actions.py +54 -0
- procesio_cli/tools/procesio/tests/test_surgical_concurrency.py +156 -0
- procesio_cli/tools/procesio/tests/test_tier4.py +123 -0
- procesio_cli/tools/procesio/tests/test_transport.py +147 -0
- procesio_cli/tools/procesio/tests/test_transport_data_stores.py +168 -0
- procesio_cli/tools/procesio/tests/test_transport_mapper_repair.py +150 -0
- procesio_cli/tools/procesio/tests/test_transport_webhook_strip.py +253 -0
- procesio_cli/tools/procesio/tests/test_usage_guide.py +96 -0
- procesio_cli/tools/procesio/tool.yaml +12486 -0
- procesio_cli/tools/sqlserver/MOVED-TO-CENTRAL.md +29 -0
- procesio_cli/tools/sqlserver/README.md +192 -0
- procesio_cli/tools/sqlserver/SKILL.md +37 -0
- procesio_cli/tools/sqlserver/SQLSERVER-SCHEMA-NOTES.md +284 -0
- procesio_cli/tools/sqlserver/__init__.py +0 -0
- procesio_cli/tools/sqlserver/connection.py +242 -0
- procesio_cli/tools/sqlserver/main.py +521 -0
- procesio_cli/tools/sqlserver/profiles.template.json +1 -0
- procesio_cli/tools/sqlserver/schema.py +600 -0
- procesio_cli/tools/sqlserver/tests/__init__.py +0 -0
- procesio_cli/tools/sqlserver/tests/conftest.py +21 -0
- procesio_cli/tools/sqlserver/tests/test_connection.py +75 -0
- procesio_cli/tools/sqlserver/tests/test_dbprofiles.py +92 -0
- procesio_cli/tools/sqlserver/tests/test_dbquery.py +220 -0
- procesio_cli/tools/sqlserver/tests/test_manifest_sync.py +68 -0
- procesio_cli/tools/sqlserver/tests/test_sqlserver.py +326 -0
- procesio_cli/tools/sqlserver/tests/test_sqlserver_schema.py +488 -0
- procesio_cli/tools/sqlserver/tool.yaml +123 -0
- procesio_cli/tools/web/README.md +381 -0
- procesio_cli/tools/web/SKILL.md +37 -0
- procesio_cli/tools/web/WEB-AUTOMATION-NOTES.md +277 -0
- procesio_cli/tools/web/__init__.py +21 -0
- procesio_cli/tools/web/actiondef.py +24 -0
- procesio_cli/tools/web/api.py +444 -0
- procesio_cli/tools/web/brokered.py +107 -0
- procesio_cli/tools/web/driver.py +839 -0
- procesio_cli/tools/web/drivercontract.py +44 -0
- procesio_cli/tools/web/errors.py +54 -0
- procesio_cli/tools/web/handlers/__init__.py +1 -0
- procesio_cli/tools/web/handlers/archive.py +367 -0
- procesio_cli/tools/web/handlers/browse.py +182 -0
- procesio_cli/tools/web/handlers/contacts.py +74 -0
- procesio_cli/tools/web/handlers/sessmgmt.py +120 -0
- procesio_cli/tools/web/main.py +128 -0
- procesio_cli/tools/web/sessions.py +253 -0
- procesio_cli/tools/web/steps.py +162 -0
- procesio_cli/tools/web/tests/__init__.py +0 -0
- procesio_cli/tools/web/tests/conftest.py +197 -0
- procesio_cli/tools/web/tests/test_api.py +330 -0
- procesio_cli/tools/web/tests/test_archive.py +190 -0
- procesio_cli/tools/web/tests/test_brokered.py +138 -0
- procesio_cli/tools/web/tests/test_dispatch.py +132 -0
- procesio_cli/tools/web/tests/test_errors.py +60 -0
- procesio_cli/tools/web/tests/test_manifest_sync.py +76 -0
- procesio_cli/tools/web/tests/test_page_contacts.py +68 -0
- procesio_cli/tools/web/tests/test_sessions.py +145 -0
- procesio_cli/tools/web/tests/test_steps.py +210 -0
- procesio_cli/tools/web/tool.yaml +184 -0
- procesio_cli/tools/xlsx/README.md +34 -0
- procesio_cli/tools/xlsx/SKILL.md +28 -0
- procesio_cli/tools/xlsx/__init__.py +0 -0
- procesio_cli/tools/xlsx/main.py +129 -0
- procesio_cli/tools/xlsx/reader.py +91 -0
- procesio_cli/tools/xlsx/tests/__init__.py +0 -0
- procesio_cli/tools/xlsx/tests/conftest.py +39 -0
- procesio_cli/tools/xlsx/tests/test_xlsx.py +103 -0
- procesio_cli/tools/xlsx/tool.yaml +30 -0
- procesio_cli/webplatform/aat_mcp/AAT-MCP-NOTES.md +244 -0
- procesio_cli/webplatform/aat_mcp/README.md +78 -0
- procesio_cli/webplatform/aat_mcp/bridge.py +705 -0
- procesio_cli/webplatform/aat_mcp/chat_server.py +194 -0
- procesio_cli/webplatform/aat_mcp/chat_surface.snapshot.json +668 -0
- procesio_cli/webplatform/aat_mcp/chat_surface.yaml +372 -0
- procesio_cli/webplatform/aat_mcp/gate.py +68 -0
- procesio_cli/webplatform/aat_mcp/http_server.py +139 -0
- procesio_cli/webplatform/aat_mcp/protocol.py +175 -0
- procesio_cli/webplatform/aat_mcp/server.py +306 -0
- procesio_cli/webplatform/aat_mcp/tests/conftest.py +8 -0
- procesio_cli/webplatform/aat_mcp/tests/test_aat_mcp.py +255 -0
- procesio_cli/webplatform/aat_mcp/tests/test_chat_surface.py +247 -0
- procesio_cli/webplatform/aat_mcp/tests/test_discovery.py +489 -0
- procesio_cli/webplatform/aat_mcp/tests/test_multiuser.py +86 -0
- procesio_cli/webplatform/aat_mcp/tests/test_progressive_discovery.py +89 -0
- procesio_cli/webplatform/aat_mcp/tests/test_protocol.py +180 -0
- procesio_cli/webplatform/aat_mcp/tests/test_skill_discovery.py +23 -0
- procesio_cli-0.1.1.dist-info/METADATA +467 -0
- procesio_cli-0.1.1.dist-info/RECORD +647 -0
- procesio_cli-0.1.1.dist-info/WHEEL +4 -0
- procesio_cli-0.1.1.dist-info/entry_points.txt +7 -0
- procesio_cli-0.1.1.dist-info/licenses/LICENSE +201 -0
- procesio_cli-0.1.1.dist-info/licenses/NOTICE +5 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"""Live process operations that pair with the offline layout engine: duplicate a
|
|
2
|
+
process, and re-lay-out a LIVE process in place (read → layout → save back).
|
|
3
|
+
|
|
4
|
+
These bridge the offline `layout-flow` (which operates on a `.procesio` bundle) to the
|
|
5
|
+
live Web-API, so you can duplicate a process and apply an auto-layout to the copy without
|
|
6
|
+
leaving the tool.
|
|
7
|
+
|
|
8
|
+
Endpoints (Web-API v1.19, ProcessTemplateController):
|
|
9
|
+
duplicate POST /api/Projects/{id}/duplicate -> {hasWebhook} (no new id returned;
|
|
10
|
+
we diff the project list to find it)
|
|
11
|
+
get GET /api/Projects/{id} -> {flow: FlowResponseDto}
|
|
12
|
+
validate POST /api/Projects/validate (does NOT persist — a safety gate)
|
|
13
|
+
update PUT /api/Projects (FlowRequestDto; id identifies target)
|
|
14
|
+
|
|
15
|
+
The re-layout engine is chosen by the LAYOUT_ENGINE env flag (legacy default, `elk`
|
|
16
|
+
opt-in) via `layout.dispatch` — set `LAYOUT_ENGINE=elk` for this invocation to use ELK
|
|
17
|
+
without changing any config file. The chosen engine is reported in the result.
|
|
18
|
+
|
|
19
|
+
Both actions are workspace-scoped: pass --workspace-id (the GUID after `#` in a
|
|
20
|
+
designer URL, https://procesio.app/admin/process/designer/{id}#{workspaceId}).
|
|
21
|
+
"""
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
import argparse
|
|
25
|
+
|
|
26
|
+
from tools.procesio import config
|
|
27
|
+
from tools.procesio.actiondef import ActionDef
|
|
28
|
+
from tools.procesio.errors import ProcesioAPIError, UsageError
|
|
29
|
+
from tools.procesio.handlers.common import add_profile_arg
|
|
30
|
+
from tools.procesio.handlers.fevalidate import run_fe_validation, save_flow
|
|
31
|
+
from tools.procesio.layout import adapter, dispatch
|
|
32
|
+
|
|
33
|
+
def _designer_url(client, process_id: str, workspace_id: str | None) -> str:
|
|
34
|
+
# The designer host comes from the active environment (folded into the profile);
|
|
35
|
+
# defaults to production. Distinct from the Web API host.
|
|
36
|
+
app_base = config.app_base(client.profile)
|
|
37
|
+
frag = f"#{workspace_id}" if workspace_id else ""
|
|
38
|
+
return f"{app_base}/admin/process/designer/{process_id}{frag}"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _project_ids(client) -> set[str]:
|
|
42
|
+
"""All process (project) ids visible in the client's current workspace scope."""
|
|
43
|
+
res = client.get("/api/Projects", {"pageNumber": 1, "pageItemCount": 500})
|
|
44
|
+
items = res.get("pageItems") if isinstance(res, dict) else res
|
|
45
|
+
ids = set()
|
|
46
|
+
for p in (items or []):
|
|
47
|
+
pid = p.get("id") or p.get("Id")
|
|
48
|
+
if pid:
|
|
49
|
+
ids.add(pid)
|
|
50
|
+
return ids
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _flow_of(client, process_id: str) -> dict:
|
|
54
|
+
res = client.get(f"/api/Projects/{process_id}")
|
|
55
|
+
return res.get("flow") if isinstance(res, dict) and "flow" in res else res
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# -- duplicate-process ------------------------------------------------------
|
|
59
|
+
|
|
60
|
+
def _dup_args(p: argparse.ArgumentParser) -> None:
|
|
61
|
+
add_profile_arg(p)
|
|
62
|
+
p.add_argument("--id", required=True, help="process (project) id to duplicate")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def duplicate_process(client, args) -> dict:
|
|
66
|
+
ws = client.workspace_id
|
|
67
|
+
before = _project_ids(client)
|
|
68
|
+
try:
|
|
69
|
+
dup = client.post(f"/api/Projects/{args.id}/duplicate")
|
|
70
|
+
except ProcesioAPIError as e:
|
|
71
|
+
raise UsageError(f"duplicate failed for {args.id} (workspace {ws}): {e.details}")
|
|
72
|
+
after = _project_ids(client)
|
|
73
|
+
new_ids = sorted(after - before)
|
|
74
|
+
copy_id = new_ids[0] if len(new_ids) == 1 else None
|
|
75
|
+
title = active = status = None
|
|
76
|
+
if copy_id:
|
|
77
|
+
try:
|
|
78
|
+
copy_flow = _flow_of(client, copy_id)
|
|
79
|
+
title = copy_flow.get("title")
|
|
80
|
+
active = copy_flow.get("active")
|
|
81
|
+
status = copy_flow.get("status")
|
|
82
|
+
except ProcesioAPIError:
|
|
83
|
+
pass
|
|
84
|
+
result = {
|
|
85
|
+
"source_id": args.id,
|
|
86
|
+
"workspace_id": ws,
|
|
87
|
+
"copy_id": copy_id,
|
|
88
|
+
"copy_candidates": new_ids if copy_id is None else None,
|
|
89
|
+
"title": title,
|
|
90
|
+
"active": active,
|
|
91
|
+
"status": status,
|
|
92
|
+
"has_webhook": (dup or {}).get("hasWebhook") if isinstance(dup, dict) else None,
|
|
93
|
+
"designer_url": _designer_url(client, copy_id, ws) if copy_id else None,
|
|
94
|
+
}
|
|
95
|
+
# PROCESIO creates the duplicate DEACTIVATED, so it will not run - a form or webhook
|
|
96
|
+
# trigger fires nothing - until it is turned on. Surface that loudly: the source was
|
|
97
|
+
# almost certainly active, and a silent inactive copy is exactly the trap a caller
|
|
98
|
+
# who "duplicated to reuse" walks into.
|
|
99
|
+
if active is False:
|
|
100
|
+
result["note"] = (
|
|
101
|
+
"copy is INACTIVE - PROCESIO duplicates are created deactivated and will not "
|
|
102
|
+
"run until activated. Turn it on with: process-toggle-activation --id "
|
|
103
|
+
f"{copy_id} --state true")
|
|
104
|
+
return {"result": result}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
# -- relayout-process -------------------------------------------------------
|
|
108
|
+
|
|
109
|
+
def _relayout_args(p: argparse.ArgumentParser) -> None:
|
|
110
|
+
add_profile_arg(p)
|
|
111
|
+
p.add_argument("--id", required=True, help="process (project) id to re-lay-out in place")
|
|
112
|
+
p.add_argument("--no-validate", dest="no_validate", action="store_true",
|
|
113
|
+
help="skip the POST /api/Projects/validate safety gate before saving")
|
|
114
|
+
p.add_argument("--dry-run", dest="dry_run", action="store_true",
|
|
115
|
+
help="compute + return the new layout WITHOUT saving (no PUT)")
|
|
116
|
+
p.add_argument("--no-cluster", dest="cluster", action="store_false", default=True,
|
|
117
|
+
help="legacy engine: disable clustering (clustering is ON by default — the "
|
|
118
|
+
"classic engine folds long chains into shelves)")
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def relayout_process(client, args) -> dict:
|
|
122
|
+
ws = client.workspace_id
|
|
123
|
+
engine_name = dispatch.selected_engine() # from LAYOUT_ENGINE env: legacy (default) | elk
|
|
124
|
+
try:
|
|
125
|
+
flow = _flow_of(client, args.id)
|
|
126
|
+
except ProcesioAPIError as e:
|
|
127
|
+
raise UsageError(f"could not read process {args.id} (workspace {ws}): {e.details}")
|
|
128
|
+
|
|
129
|
+
# DEFAULT: classic (legacy) engine + clustering ON (the default preference; ELK stays opt-in).
|
|
130
|
+
res = adapter.layout_flow(flow, cluster=getattr(args, "cluster", True)) # engine from LAYOUT_ENGINE
|
|
131
|
+
new_flow = res["bundle"]
|
|
132
|
+
summary = {
|
|
133
|
+
"process_id": args.id,
|
|
134
|
+
"workspace_id": ws,
|
|
135
|
+
"engine": engine_name,
|
|
136
|
+
"nodes_moved": res["nodes_moved"],
|
|
137
|
+
"areas_resized": res["areas_resized"],
|
|
138
|
+
"bbox": res["bbox"],
|
|
139
|
+
"designer_url": _designer_url(client, args.id, ws),
|
|
140
|
+
}
|
|
141
|
+
if args.dry_run:
|
|
142
|
+
return {"result": {**summary, "saved": False, "dry_run": True}}
|
|
143
|
+
|
|
144
|
+
validated = None
|
|
145
|
+
if not args.no_validate:
|
|
146
|
+
try:
|
|
147
|
+
client.post("/api/Projects/validate", new_flow)
|
|
148
|
+
validated = True
|
|
149
|
+
except ProcesioAPIError as e:
|
|
150
|
+
raise UsageError(
|
|
151
|
+
f"re-laid-out flow failed validation (not saved): {e.details}")
|
|
152
|
+
|
|
153
|
+
# Every save stamps the validity mark, this one included. The platform never
|
|
154
|
+
# computes `isValid` - it stores what the body carries - so a save that passed the
|
|
155
|
+
# fetched value through would leave a repaired process marked broken, and a rename
|
|
156
|
+
# or a re-layout is a save like any other. The verdict needs BOTH validators: the
|
|
157
|
+
# runtime one above answers "valid" for flows the designer refuses.
|
|
158
|
+
fe = run_fe_validation(client, new_flow)
|
|
159
|
+
be_ok = validated is not False
|
|
160
|
+
try:
|
|
161
|
+
saved = save_flow(client, new_flow, flow_id=args.id, valid=bool(fe["clean"] and be_ok), layout=False)
|
|
162
|
+
except ProcesioAPIError as e:
|
|
163
|
+
raise UsageError(f"save (PUT) failed for {args.id}: {e.details}")
|
|
164
|
+
out = {"result": {**summary, "validated": validated, "saved": True}}
|
|
165
|
+
out["result"]["isValid"] = saved["isValid"]
|
|
166
|
+
out["result"]["stamped"] = saved["stamped"]
|
|
167
|
+
if not fe["clean"]:
|
|
168
|
+
out["result"]["fe"] = fe
|
|
169
|
+
return out
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
ACTIONS = {
|
|
173
|
+
"duplicate-process": ActionDef(
|
|
174
|
+
func=duplicate_process, add_args=_dup_args, needs_client=True,
|
|
175
|
+
description=("Duplicate a process (POST /api/Projects/{id}/duplicate) and return "
|
|
176
|
+
"the copy's id + designer URL (found by diffing the workspace's "
|
|
177
|
+
"project list). The copy lands DEACTIVATED (active=false) and will "
|
|
178
|
+
"not run until process-toggle-activation turns it on - the result "
|
|
179
|
+
"carries `active`/`status` and a note when it is off. Workspace-scoped: "
|
|
180
|
+
"pass --workspace-id."),
|
|
181
|
+
),
|
|
182
|
+
"relayout-process": ActionDef(
|
|
183
|
+
func=relayout_process, add_args=_relayout_args, needs_client=True,
|
|
184
|
+
description=("Re-lay-out a LIVE process in place: read the flow, run the "
|
|
185
|
+
"auto-layout engine (LAYOUT_ENGINE env: legacy default / elk), "
|
|
186
|
+
"validate, and save back (PUT /api/Projects). --dry-run to preview "
|
|
187
|
+
"without saving. Workspace-scoped: pass --workspace-id."),
|
|
188
|
+
),
|
|
189
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"""Rename the ACTIONS (canvas nodes) of a LIVE process in place.
|
|
2
|
+
|
|
3
|
+
Fresh flows arrive with every node carrying its template's default label ("Node",
|
|
4
|
+
"Call API", "Decisional"), which makes a canvas of a dozen script nodes unreadable —
|
|
5
|
+
they are distinguishable only by opening each one. This action sets meaningful labels
|
|
6
|
+
in bulk, from an id → name map.
|
|
7
|
+
|
|
8
|
+
Two fields carry the label and BOTH must move together, or the designer and the API
|
|
9
|
+
disagree about what a node is called: the DTO's `ActionName` and `CustomData.name`.
|
|
10
|
+
The designer renders `CustomData.name`; list/inspect surfaces read `ActionName`.
|
|
11
|
+
|
|
12
|
+
Labels are cosmetic — nothing references an action by name. Wiring is by id
|
|
13
|
+
(`Ports.SourceId`/`DestinationId`, a Decisional case's `actionid`), so renaming can
|
|
14
|
+
never break a flow. The validate gate still runs before the save.
|
|
15
|
+
|
|
16
|
+
Endpoints (Web-API v1.19, ProcessTemplateController):
|
|
17
|
+
get GET /api/Projects/{id} -> {flow: FlowResponseDto}
|
|
18
|
+
validate POST /api/Projects/validate (does NOT persist — a safety gate)
|
|
19
|
+
update PUT /api/Projects (FlowRequestDto; id identifies target)
|
|
20
|
+
|
|
21
|
+
Workspace-scoped: pass --workspace-id (the GUID after `#` in a designer URL).
|
|
22
|
+
Case-insensitive for read AND write, so it handles both a PascalCase export and the
|
|
23
|
+
camelCase live DTO.
|
|
24
|
+
"""
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
import argparse
|
|
28
|
+
import copy
|
|
29
|
+
|
|
30
|
+
from tools.procesio import config
|
|
31
|
+
from tools.procesio.actiondef import ActionDef
|
|
32
|
+
from tools.procesio.client import parse_json_arg
|
|
33
|
+
from tools.procesio.errors import ProcesioAPIError, UsageError
|
|
34
|
+
from tools.procesio.handlers.common import add_force_arg, add_profile_arg, guard_unchanged
|
|
35
|
+
from tools.procesio.handlers.fevalidate import run_fe_validation, save_flow
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _key(d: dict, *names: str):
|
|
39
|
+
"""The actual key present in `d` matching any of `names` (case-insensitive)."""
|
|
40
|
+
low = {str(k).lower(): k for k in d}
|
|
41
|
+
for n in names:
|
|
42
|
+
if n.lower() in low:
|
|
43
|
+
return low[n.lower()]
|
|
44
|
+
return None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _get(d, *names, default=None):
|
|
48
|
+
k = _key(d, *names) if isinstance(d, dict) else None
|
|
49
|
+
return d[k] if k else default
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _designer_url(client, process_id: str, workspace_id: str | None) -> str:
|
|
53
|
+
# Designer host from the active environment (folded into the profile); defaults
|
|
54
|
+
# to production.
|
|
55
|
+
app_base = config.app_base(client.profile)
|
|
56
|
+
frag = f"#{workspace_id}" if workspace_id else ""
|
|
57
|
+
return f"{app_base}/admin/process/designer/{process_id}{frag}"
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _load_map(args) -> dict:
|
|
61
|
+
"""The id → new-name map, from --map (JSON) or --map-file (path to JSON)."""
|
|
62
|
+
if bool(args.map) == bool(args.map_file):
|
|
63
|
+
raise UsageError("pass exactly one of --map (JSON object) or --map-file (path)")
|
|
64
|
+
if args.map_file:
|
|
65
|
+
try:
|
|
66
|
+
with open(args.map_file, encoding="utf-8") as fh:
|
|
67
|
+
raw = fh.read()
|
|
68
|
+
except OSError as e:
|
|
69
|
+
raise UsageError(f"could not read --map-file {args.map_file}: {e}")
|
|
70
|
+
mapping = parse_json_arg(raw, "map-file")
|
|
71
|
+
else:
|
|
72
|
+
mapping = parse_json_arg(args.map, "map")
|
|
73
|
+
if not isinstance(mapping, dict) or not mapping:
|
|
74
|
+
raise UsageError('the map must be a non-empty JSON object: {"<action-id>": "New name"}')
|
|
75
|
+
for k, v in mapping.items():
|
|
76
|
+
if not isinstance(v, str) or not v.strip():
|
|
77
|
+
raise UsageError(f"name for action {k!r} must be a non-empty string (got {v!r})")
|
|
78
|
+
return {str(k): v.strip() for k, v in mapping.items()}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _resolve(mapping: dict, action_ids: list[str]) -> tuple[dict, list[str], list[str]]:
|
|
82
|
+
"""Match map keys to real action ids: exact first, then unique id-prefix.
|
|
83
|
+
|
|
84
|
+
Returns (resolved id → name, unknown keys, ambiguous keys). A prefix is accepted
|
|
85
|
+
only when it matches exactly one action, so a truncated id can never rename the
|
|
86
|
+
wrong node.
|
|
87
|
+
"""
|
|
88
|
+
by_id = {a.lower(): a for a in action_ids}
|
|
89
|
+
resolved, unknown, ambiguous = {}, [], []
|
|
90
|
+
for key, name in mapping.items():
|
|
91
|
+
k = key.lower()
|
|
92
|
+
if k in by_id:
|
|
93
|
+
resolved[by_id[k]] = name
|
|
94
|
+
continue
|
|
95
|
+
hits = [full for low, full in by_id.items() if low.startswith(k)]
|
|
96
|
+
if len(hits) == 1:
|
|
97
|
+
resolved[hits[0]] = name
|
|
98
|
+
elif len(hits) > 1:
|
|
99
|
+
ambiguous.append(key)
|
|
100
|
+
else:
|
|
101
|
+
unknown.append(key)
|
|
102
|
+
return resolved, unknown, ambiguous
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def apply_names(flow: dict, mapping: dict) -> tuple[dict, list[dict], list[str], list[str]]:
|
|
106
|
+
"""Return (new flow, changes, unknown keys, ambiguous keys). Never mutates `flow`."""
|
|
107
|
+
new_flow = copy.deepcopy(flow)
|
|
108
|
+
actions = _get(new_flow, "Actions", default=[]) or []
|
|
109
|
+
ids = [str(_get(a, "Id")) for a in actions if _get(a, "Id")]
|
|
110
|
+
resolved, unknown, ambiguous = _resolve(mapping, ids)
|
|
111
|
+
|
|
112
|
+
changes = []
|
|
113
|
+
for action in actions:
|
|
114
|
+
aid = str(_get(action, "Id") or "")
|
|
115
|
+
if aid not in resolved:
|
|
116
|
+
continue
|
|
117
|
+
new_name = resolved[aid]
|
|
118
|
+
name_key = _key(action, "ActionName") or "actionName"
|
|
119
|
+
before = action.get(name_key)
|
|
120
|
+
action[name_key] = new_name
|
|
121
|
+
|
|
122
|
+
cd_key = _key(action, "CustomData")
|
|
123
|
+
if cd_key and isinstance(action[cd_key], dict):
|
|
124
|
+
cd = action[cd_key]
|
|
125
|
+
cd[_key(cd, "name") or "name"] = new_name
|
|
126
|
+
|
|
127
|
+
if before != new_name:
|
|
128
|
+
changes.append({"id": aid, "template": _get(action, "ActionTemplateName"),
|
|
129
|
+
"from": before, "to": new_name})
|
|
130
|
+
return new_flow, changes, unknown, ambiguous
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def _rename_args(p: argparse.ArgumentParser) -> None:
|
|
134
|
+
add_profile_arg(p)
|
|
135
|
+
p.add_argument("--id", required=True, help="process (project) id whose actions to rename")
|
|
136
|
+
p.add_argument("--map", help='id → name map as JSON: {"<action-id>": "New name", ...}. '
|
|
137
|
+
"A unique id PREFIX is accepted in place of a full id.")
|
|
138
|
+
p.add_argument("--map-file", dest="map_file",
|
|
139
|
+
help="path to a JSON file holding the same id → name map")
|
|
140
|
+
p.add_argument("--no-validate", dest="no_validate", action="store_true",
|
|
141
|
+
help="skip the POST /api/Projects/validate safety gate before saving")
|
|
142
|
+
p.add_argument("--dry-run", dest="dry_run", action="store_true",
|
|
143
|
+
help="report the renames WITHOUT saving (no PUT)")
|
|
144
|
+
add_force_arg(p)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def rename_actions(client, args) -> dict:
|
|
148
|
+
ws = client.workspace_id
|
|
149
|
+
mapping = _load_map(args)
|
|
150
|
+
try:
|
|
151
|
+
res = client.get(f"/api/Projects/{args.id}")
|
|
152
|
+
except ProcesioAPIError as e:
|
|
153
|
+
raise UsageError(f"could not read process {args.id} (workspace {ws}): {e.details}")
|
|
154
|
+
flow = res.get("flow") if isinstance(res, dict) and "flow" in res else res
|
|
155
|
+
|
|
156
|
+
new_flow, changes, unknown, ambiguous = apply_names(flow, mapping)
|
|
157
|
+
if ambiguous:
|
|
158
|
+
raise UsageError(f"ambiguous id prefix(es) — they match more than one action: {ambiguous}")
|
|
159
|
+
if unknown:
|
|
160
|
+
raise UsageError(f"no action in process {args.id} matches: {unknown}")
|
|
161
|
+
|
|
162
|
+
summary = {
|
|
163
|
+
"process_id": args.id,
|
|
164
|
+
"workspace_id": ws,
|
|
165
|
+
"renamed_count": len(changes),
|
|
166
|
+
"renamed": changes,
|
|
167
|
+
"designer_url": _designer_url(client, args.id, ws),
|
|
168
|
+
}
|
|
169
|
+
if args.dry_run:
|
|
170
|
+
return {"result": {**summary, "saved": False, "dry_run": True}}
|
|
171
|
+
|
|
172
|
+
def _refetch():
|
|
173
|
+
r = client.get(f"/api/Projects/{args.id}")
|
|
174
|
+
return r.get("flow") if isinstance(r, dict) and "flow" in r else r
|
|
175
|
+
guard = guard_unchanged(_refetch, flow, force=args.force) # abort if it moved since read
|
|
176
|
+
|
|
177
|
+
validated = None
|
|
178
|
+
if not args.no_validate:
|
|
179
|
+
try:
|
|
180
|
+
client.post("/api/Projects/validate", new_flow)
|
|
181
|
+
validated = True
|
|
182
|
+
except ProcesioAPIError as e:
|
|
183
|
+
raise UsageError(f"renamed flow failed validation (not saved): {e.details}")
|
|
184
|
+
|
|
185
|
+
# Every save stamps the validity mark, this one included. The platform never
|
|
186
|
+
# computes `isValid` - it stores what the body carries - so a save that passed the
|
|
187
|
+
# fetched value through would leave a repaired process marked broken, and a rename
|
|
188
|
+
# or a re-layout is a save like any other. The verdict needs BOTH validators: the
|
|
189
|
+
# runtime one above answers "valid" for flows the designer refuses.
|
|
190
|
+
fe = run_fe_validation(client, new_flow)
|
|
191
|
+
be_ok = validated is not False
|
|
192
|
+
try:
|
|
193
|
+
saved = save_flow(client, new_flow, flow_id=args.id, valid=bool(fe["clean"] and be_ok))
|
|
194
|
+
except ProcesioAPIError as e:
|
|
195
|
+
raise UsageError(f"save (PUT) failed for {args.id}: {e.details}")
|
|
196
|
+
out = {"result": {**summary, "validated": validated, "saved": True, "concurrency": guard}}
|
|
197
|
+
out["result"]["isValid"] = saved["isValid"]
|
|
198
|
+
out["result"]["stamped"] = saved["stamped"]
|
|
199
|
+
if not fe["clean"]:
|
|
200
|
+
out["result"]["fe"] = fe
|
|
201
|
+
return out
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
ACTIONS = {
|
|
205
|
+
"rename-actions": ActionDef(
|
|
206
|
+
func=rename_actions, add_args=_rename_args, needs_client=True,
|
|
207
|
+
description=("Rename a LIVE process's canvas actions in bulk from an id → name map "
|
|
208
|
+
"(--map JSON or --map-file), setting BOTH ActionName and "
|
|
209
|
+
"CustomData.name; validates, then saves (PUT /api/Projects). Names are "
|
|
210
|
+
"cosmetic — wiring is by id — so this cannot break a flow. --dry-run to "
|
|
211
|
+
"preview. Workspace-scoped: pass --workspace-id."),
|
|
212
|
+
),
|
|
213
|
+
}
|