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,70 @@
|
|
|
1
|
+
"""normalize_designer_layer: deterministic designer<-runtime mirror, pure-logic tests."""
|
|
2
|
+
from tools.procesio.dto.process.normalize import normalize_designer_layer
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def _node(code_setting_value, param_value, param_variable, stype="code-editor", pid="S1"):
|
|
6
|
+
"""A one-setting action: a designer setting (id=pid) mirrored by a runtime param (tabPropertyId=pid)."""
|
|
7
|
+
return {"actionName": "N", "id": "a1",
|
|
8
|
+
"parameters": [{"tabPropertyId": pid, "value": param_value, "variable": param_variable}],
|
|
9
|
+
"customData": {"configuration": [{"settings": [
|
|
10
|
+
{"id": pid, "type": stype, "label": "Code", "value": code_setting_value}]}]}}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _val(f):
|
|
14
|
+
return f["actions"][0]["customData"]["configuration"][0]["settings"][0]["value"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_placeholder_fixed_to_guid():
|
|
18
|
+
f = {"actions": [_node("var d = <%0%>;", "var d = <%0%>;", [{"id": 0, "variableId": "V1"}])]}
|
|
19
|
+
r = normalize_designer_layer(f)
|
|
20
|
+
assert r["changed"] and _val(f) == "var d = V1;"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_noop_on_guid_form():
|
|
24
|
+
# designer already carries the GUID -> nothing to do
|
|
25
|
+
f = {"actions": [_node("var d = V1;", "var d = <%0%>;", [{"id": 0, "variableId": "V1"}])]}
|
|
26
|
+
assert not normalize_designer_layer(f)["changed"] and _val(f) == "var d = V1;"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_idempotent():
|
|
30
|
+
f = {"actions": [_node("var d = <%0%>;", "var d = <%0%>;", [{"id": 0, "variableId": "V1"}])]}
|
|
31
|
+
normalize_designer_layer(f)
|
|
32
|
+
assert not normalize_designer_layer(f)["changed"]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_attribute_chain_preserved():
|
|
36
|
+
f = {"actions": [_node("x=<%0%>;", "x=<%0%>;",
|
|
37
|
+
[{"id": 0, "variableId": "V1", "attribute": {"attributeId": "A1", "nextAttribute": None}}])]}
|
|
38
|
+
normalize_designer_layer(f)
|
|
39
|
+
assert _val(f) == "x=V1.A1;"
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_multi_var_by_binding_id_not_position():
|
|
43
|
+
# <%N%> binds to variable[].id, not positional order
|
|
44
|
+
f = {"actions": [_node("f(<%1%>,<%0%>);", "f(<%1%>,<%0%>);",
|
|
45
|
+
[{"id": 0, "variableId": "VA"}, {"id": 1, "variableId": "VB"}])]}
|
|
46
|
+
normalize_designer_layer(f)
|
|
47
|
+
assert _val(f) == "f(VB,VA);"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_list_valued_setting_left_untouched():
|
|
51
|
+
# a process-outputs-like LIST value must NOT be regenerated (string-only scope avoids corruption)
|
|
52
|
+
lst = [{"id": 0, "subprocess": "S", "process": "V1.A1"}]
|
|
53
|
+
f = {"actions": [_node(lst, [{"id": 0, "source": {"variable": [{"variableId": "V1"}]},
|
|
54
|
+
"destination": {"variableId": "S"}}], [], stype="process-outputs")]}
|
|
55
|
+
r = normalize_designer_layer(f)
|
|
56
|
+
assert not r["changed"] and _val(f) == lst
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_unbound_placeholder_left_literal():
|
|
60
|
+
# a <%5%> with no matching variable id must be left as-is, never blanked
|
|
61
|
+
f = {"actions": [_node("keep <%5%>", "keep <%5%>", [{"id": 0, "variableId": "V1"}])]}
|
|
62
|
+
assert not normalize_designer_layer(f)["changed"] and _val(f) == "keep <%5%>"
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_warning_param_without_setting():
|
|
66
|
+
f = {"actions": [{"actionName": "N", "id": "a1",
|
|
67
|
+
"parameters": [{"tabPropertyId": "NOPE", "value": "x", "variable": []}],
|
|
68
|
+
"customData": {"configuration": [{"settings": []}]}}]}
|
|
69
|
+
r = normalize_designer_layer(f)
|
|
70
|
+
assert any(w["why"] == "param_without_setting" for w in r["warnings"])
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""A structured argument must publish the contract the tool actually enforces.
|
|
2
|
+
|
|
3
|
+
`--config` carries the whole resource definition, but argparse can only give it a
|
|
4
|
+
one-line `help=`, so the manifest described it as "a JSON object" and a caller holding
|
|
5
|
+
only the manifest had to reverse-engineer the shape from validation errors - one layer
|
|
6
|
+
per attempt, several turns per resource. The fix publishes the component's own schema
|
|
7
|
+
and a working fixture, which means two things can now fall out of step, and these tests
|
|
8
|
+
are what stop them:
|
|
9
|
+
|
|
10
|
+
* the published schema vs the file `validate_config` enforces - a schema edit that
|
|
11
|
+
is not regenerated would advertise a contract the tool no longer applies;
|
|
12
|
+
* the published example vs that schema - an example that does not validate is worse
|
|
13
|
+
than none, because it is the part a caller copies.
|
|
14
|
+
"""
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
|
|
19
|
+
import pytest
|
|
20
|
+
from jsonschema import Draft202012Validator
|
|
21
|
+
|
|
22
|
+
from tools._lib.manifest import load_tool
|
|
23
|
+
from tools.procesio import main
|
|
24
|
+
from tools.procesio.dto import registry as dto_registry
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _manifest():
|
|
29
|
+
return load_tool(Path(main.__file__).resolve().parent / "tool.yaml")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _config_actions():
|
|
33
|
+
"""Every action whose real contract is a structured `--config`."""
|
|
34
|
+
m = _manifest()
|
|
35
|
+
return [a for a in m.actions if any(g.name == "config" for g in a.args)]
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_there_are_config_driven_actions_to_check():
|
|
39
|
+
"""Guards the guard: if the discovery below ever returns nothing, the tests that
|
|
40
|
+
follow would pass vacuously."""
|
|
41
|
+
assert len(_config_actions()) >= 12
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@pytest.mark.parametrize("component", sorted(dto_registry.all_components()))
|
|
45
|
+
def test_each_component_publishes_its_schema_and_an_example(component):
|
|
46
|
+
m = _manifest()
|
|
47
|
+
for verb in ("create", "edit"):
|
|
48
|
+
spec = m.get_action(f"{component}-{verb}")
|
|
49
|
+
assert spec is not None, f"{component}-{verb} missing from the manifest"
|
|
50
|
+
config_arg = next((g for g in spec.args if g.name == "config"), None)
|
|
51
|
+
assert config_arg is not None, f"{component}-{verb} has no --config"
|
|
52
|
+
assert config_arg.json_schema, (
|
|
53
|
+
f"{component}-{verb} --config publishes no schema; regenerate the manifest")
|
|
54
|
+
assert spec.examples, f"{component}-{verb} publishes no example"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@pytest.mark.parametrize("component", sorted(dto_registry.all_components()))
|
|
58
|
+
def test_published_schema_matches_the_file_the_tool_enforces(component):
|
|
59
|
+
"""The manifest is generated and committed; the schema on disk is read at every
|
|
60
|
+
validate. Only this comparison keeps a schema edit from silently publishing a stale
|
|
61
|
+
contract until someone happens to regenerate."""
|
|
62
|
+
comp = dto_registry.all_components()[component]
|
|
63
|
+
if not comp.schema_path.exists():
|
|
64
|
+
pytest.skip(f"{component} ships no config schema")
|
|
65
|
+
on_disk = json.loads(comp.schema_path.read_text(encoding="utf-8"))
|
|
66
|
+
spec = _manifest().get_action(f"{component}-create")
|
|
67
|
+
published = next(g for g in spec.args if g.name == "config").json_schema
|
|
68
|
+
assert published == on_disk, (
|
|
69
|
+
f"{component}: the published schema differs from {comp.schema_path.name} - "
|
|
70
|
+
f"run tools/procesio/gen_manifest.py")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@pytest.mark.parametrize("component", sorted(dto_registry.all_components()))
|
|
74
|
+
def test_published_example_validates_against_published_schema(component):
|
|
75
|
+
"""The example is the part a caller copies, so it has to satisfy the contract it
|
|
76
|
+
ships beside."""
|
|
77
|
+
spec = _manifest().get_action(f"{component}-create")
|
|
78
|
+
schema = next(g for g in spec.args if g.name == "config").json_schema
|
|
79
|
+
if not schema or not spec.examples:
|
|
80
|
+
pytest.skip(f"{component} publishes no schema/example pair")
|
|
81
|
+
errors = sorted(Draft202012Validator(schema).iter_errors(spec.examples[0]),
|
|
82
|
+
key=lambda e: list(e.path))
|
|
83
|
+
assert not errors, (
|
|
84
|
+
f"{component}: the published example fails its own schema - "
|
|
85
|
+
+ "; ".join(f"{'/'.join(str(p) for p in e.path) or '(root)'}: {e.message}"
|
|
86
|
+
for e in errors[:5]))
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"""Build-time auto-naming of process actions + Decisional/AI Decisional branches.
|
|
2
|
+
|
|
3
|
+
Two behaviours are locked here:
|
|
4
|
+
* an un-named action is labelled by what it DOES (derived from literal config),
|
|
5
|
+
never left as the generic template label when we can do better;
|
|
6
|
+
* a non-default Decisional case is labelled by its condition instead of "Case N".
|
|
7
|
+
Both are cosmetic (wiring is by id) and both re-evaluate on every build/edit, so an
|
|
8
|
+
edited process stays legible. An explicit name always wins; a param bound to a
|
|
9
|
+
variable is unknowable at build time and falls back to the template label.
|
|
10
|
+
"""
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import itertools
|
|
14
|
+
|
|
15
|
+
from tools.procesio.dto.process import builder as pb
|
|
16
|
+
from tools.procesio.dto.process import naming
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _ctx():
|
|
20
|
+
counter = itertools.count(1)
|
|
21
|
+
return {"new_id": lambda: f"00000000-0000-0000-0000-{next(counter):012d}"}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _names(dto):
|
|
25
|
+
return [a["ActionName"] for a in dto["Actions"]]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _template(dto, template_name):
|
|
29
|
+
return next(a for a in dto["Actions"] if a["ActionTemplateName"] == template_name)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _cases_config(node, ctype):
|
|
33
|
+
return next(s for tab in node["CustomData"]["configuration"]
|
|
34
|
+
for s in tab["settings"] if s.get("type") == ctype)["value"]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# -- naming module (pure) -----------------------------------------------------
|
|
38
|
+
|
|
39
|
+
def test_derive_action_name_enriches_high_value_templates():
|
|
40
|
+
assert naming.derive_action_name(
|
|
41
|
+
{"params": {"Verb": "get", "Endpoint": "https://api.x.com/v1/users?q=1"}},
|
|
42
|
+
"Call API") == "GET /v1/users"
|
|
43
|
+
assert naming.derive_action_name(
|
|
44
|
+
{"params": {"For Each Item": {"var": "items"}}}, "For Each") == "For each items"
|
|
45
|
+
assert naming.derive_action_name(
|
|
46
|
+
{"params": {"Code": "// resolve the period\nreturn 1;"}}, "Node") == "resolve the period"
|
|
47
|
+
assert naming.derive_action_name(
|
|
48
|
+
{"params": {"Query": "SELECT * FROM clients WHERE id=@id"}},
|
|
49
|
+
"Execute Query") == "SELECT clients"
|
|
50
|
+
assert naming.derive_action_name(
|
|
51
|
+
{"params": {"File Name": "invoice.pdf"}}, "Generate Document") == "Generate invoice.pdf"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_derive_action_name_returns_none_when_it_cannot_beat_the_template():
|
|
55
|
+
# a variable-bound param is unknowable at build time
|
|
56
|
+
assert naming.derive_action_name({"params": {"Endpoint": {"var": "u"}}}, "Call API") is None
|
|
57
|
+
# a Node with no leading comment has nothing to summarise
|
|
58
|
+
assert naming.derive_action_name({"params": {"Code": "return 1;"}}, "Node") is None
|
|
59
|
+
# a template with no enricher
|
|
60
|
+
assert naming.derive_action_name({"params": {}}, "Generate GUID") is None
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_derive_branch_name_rule_based_and_ai():
|
|
64
|
+
assert naming.derive_branch_name(
|
|
65
|
+
{"when": [{"left": {"var": "amount"}, "op": "GREATER_THAN", "right": 1000}]},
|
|
66
|
+
is_ai=False) == "amount > 1000"
|
|
67
|
+
assert naming.derive_branch_name(
|
|
68
|
+
{"when": [{"left": {"var": "cod"}, "op": "IS_NOT_EMPTY"}]}, is_ai=False) == "cod present"
|
|
69
|
+
assert naming.derive_branch_name(
|
|
70
|
+
{"when": [{"left": {"var": "a"}, "op": "EQUALS", "right": 1},
|
|
71
|
+
{"left": {"var": "b"}, "op": "IS_TRUE", "logic": "and"}]},
|
|
72
|
+
is_ai=False) == "a = 1 and b"
|
|
73
|
+
assert naming.derive_branch_name(
|
|
74
|
+
{"condition": "the client is a new customer"}, is_ai=True) == "the client is a new customer"
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_disambiguate_only_suffixes_collisions():
|
|
78
|
+
out = naming.disambiguate([("a", "GET /x", True), ("b", "GET /x", True),
|
|
79
|
+
("c", "Send Mail", False), ("d", "Send Mail", False)])
|
|
80
|
+
assert out == {"a": "GET /x", "b": "GET /x 2", "c": "Send Mail", "d": "Send Mail"}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# -- build integration --------------------------------------------------------
|
|
84
|
+
|
|
85
|
+
def test_unnamed_actions_are_auto_named_and_collisions_disambiguated():
|
|
86
|
+
cfg = {"title": "t", "variables": [{"name": "items", "type": "json", "direction": "input"}],
|
|
87
|
+
"actions": [
|
|
88
|
+
{"id": "c1", "action": "Call API",
|
|
89
|
+
"params": {"Verb": "GET", "Endpoint": "https://api.example.com/v1/users"}},
|
|
90
|
+
{"id": "c2", "action": "Call API",
|
|
91
|
+
"params": {"Verb": "GET", "Endpoint": "https://api.example.com/v1/users"}},
|
|
92
|
+
{"id": "loop", "action": "For Each", "params": {"For Each Item": {"var": "items"}}},
|
|
93
|
+
]}
|
|
94
|
+
names = _names(pb.build(cfg, _ctx()))
|
|
95
|
+
assert "GET /v1/users" in names and "GET /v1/users 2" in names # collision disambiguated
|
|
96
|
+
assert "For each items" in names
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def test_explicit_name_wins_over_derivation():
|
|
100
|
+
cfg = {"title": "t", "actions": [
|
|
101
|
+
{"id": "c", "action": "Call API", "name": "Fetch users",
|
|
102
|
+
"params": {"Verb": "GET", "Endpoint": "https://api.example.com/v1/users"}}]}
|
|
103
|
+
assert "Fetch users" in _names(pb.build(cfg, _ctx()))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def test_template_fallback_names_are_shared_not_disambiguated():
|
|
107
|
+
"""Two un-named Stops (no enricher) both stay 'Stop' — only ENRICHED names are made
|
|
108
|
+
unique, so template-label duplicates keep behaving exactly as before auto-naming."""
|
|
109
|
+
cfg = {"title": "t", "actions": [
|
|
110
|
+
{"id": "g", "action": "Generate GUID"},
|
|
111
|
+
{"id": "s1", "action": "Stop"}, {"id": "s2", "action": "Stop"}],
|
|
112
|
+
"edges": [["start", "g"], ["g", "s1"]]}
|
|
113
|
+
names = _names(pb.build(cfg, _ctx()))
|
|
114
|
+
assert names.count("Stop") == 2 and "Stop 2" not in names
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def test_regular_decisional_branch_named_from_condition_default_untouched():
|
|
118
|
+
cfg = {"title": "t",
|
|
119
|
+
"variables": [{"name": "amount", "type": "integer", "direction": "input"},
|
|
120
|
+
{"name": "cod", "type": "string", "direction": "input"}],
|
|
121
|
+
"actions": [
|
|
122
|
+
{"id": "d", "action": "Decisional", "branches": [
|
|
123
|
+
{"to": "a", "when": [{"left": {"var": "amount"}, "op": "GREATER_THAN", "right": 1000}]},
|
|
124
|
+
{"name": "has code", "to": "b", "when": [{"left": {"var": "cod"}, "op": "IS_NOT_EMPTY"}]},
|
|
125
|
+
{"to": "j", "default": True}]},
|
|
126
|
+
{"id": "a", "action": "Generate GUID"}, {"id": "b", "action": "Generate GUID"},
|
|
127
|
+
{"id": "j", "action": "Join"}],
|
|
128
|
+
"edges": [["start", "d"], ["a", "j"], ["b", "j"], ["j", "stop"]]}
|
|
129
|
+
dto = pb.build(cfg, _ctx())
|
|
130
|
+
dec = _template(dto, "Decisional")
|
|
131
|
+
branch_names = [c["name"] for c in _cases_config(dec, "decisional-case")]
|
|
132
|
+
assert branch_names == ["amount > 1000", "has code"] # derived, then explicit-wins
|
|
133
|
+
# the default is a port, not a case, so it never gets a case label
|
|
134
|
+
assert any(p.get("Data", {}).get("isDefault") == "default" for p in dec["Ports"])
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def test_ai_decisional_branch_named_from_condition():
|
|
138
|
+
cfg = {"title": "t",
|
|
139
|
+
"variables": [{"name": "animal", "type": "string", "direction": "input"}],
|
|
140
|
+
"actions": [
|
|
141
|
+
{"id": "ai", "action": "AI Decisional",
|
|
142
|
+
"params": {"User Prompt": {"template": "which? <%0%>", "vars": ["animal"]}},
|
|
143
|
+
"branches": [
|
|
144
|
+
{"name": "bear", "to": "a", "condition": "Is it a bear?"},
|
|
145
|
+
{"to": "b", "condition": "Is it a fish?"},
|
|
146
|
+
{"to": "d", "default": True}]},
|
|
147
|
+
{"id": "a", "action": "Generate GUID"}, {"id": "b", "action": "Generate GUID"},
|
|
148
|
+
{"id": "d", "action": "Generate GUID"}],
|
|
149
|
+
"edges": [["start", "ai"], ["a", "stop"], ["b", "stop"], ["d", "stop"]]}
|
|
150
|
+
dto = pb.build(cfg, _ctx())
|
|
151
|
+
ai = _template(dto, "AI Decisional")
|
|
152
|
+
names = [c["name"] for c in _cases_config(ai, "ai-decisional-case")]
|
|
153
|
+
assert names == ["bear", "Is it a fish?"] # explicit wins, else condition
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def test_query_store_named_after_its_store_and_verb():
|
|
157
|
+
d = naming.derive_action_name
|
|
158
|
+
assert d({"queryStore": {"sql": "SELECT * FROM {{ds:OMN Units}}"}}, "Query Store") == "Read OMN Units"
|
|
159
|
+
assert d({"queryStore": {"sql": "REPLACE INTO {{ds:Leads}} (a) VALUES (1)"}}, "Query Store") == "Save to Leads"
|
|
160
|
+
assert d({"queryStore": {"sql": "UPDATE {{ds:Settings}} SET v = 1"}}, "Query Store") == "Update Settings"
|
|
161
|
+
assert d({"queryStore": {"sql": "DELETE FROM {{ds:Events}} WHERE 1"}}, "Query Store") == "Delete from Events"
|
|
162
|
+
assert d({"queryStore": {"sql": "SELECT a FROM {{ds:A}} JOIN {{ds:B}} ON 1"}}, "Query Store") == "Read A + 1 more"
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def test_node_named_from_template_comment_or_its_output():
|
|
166
|
+
d = naming.derive_action_name
|
|
167
|
+
tpl = {"Code": {"template": "// score the visitor\nreturn 1;", "vars": ["x"]}}
|
|
168
|
+
assert d({"params": tpl}, "Node") == "score the visitor"
|
|
169
|
+
out = {"Code": {"template": "const a = 1;", "vars": []}, "Single Result": {"var": "catalogueJson"}}
|
|
170
|
+
assert d({"params": out}, "Node") == "Compute catalogueJson"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Process builder: Call API run-time-mandatory properties are seeded (verb guid + empty Request Parameters)."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import itertools
|
|
5
|
+
|
|
6
|
+
from tools.procesio.dto.process import builder as pb
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _ctx():
|
|
10
|
+
counter = itertools.count(1)
|
|
11
|
+
return {"new_id": lambda: f"00000000-0000-0000-0000-{next(counter):012d}"}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _call_api_params(verb="GET", with_req=False):
|
|
15
|
+
params = {"Verb": verb, "Endpoint": "/zen", "Time Out": 30}
|
|
16
|
+
if with_req:
|
|
17
|
+
params["Request Parameters"] = {"body": {"type": "RAW", "value": {"BINARY": "", "FORM_DATA": [],
|
|
18
|
+
"RAW": {"format": "json", "value": "{}"},
|
|
19
|
+
"X_WWW_FORM_URLENCODED": []}},
|
|
20
|
+
"headers": [], "queryParams": []}
|
|
21
|
+
cfg = {"title": "t", "actions": [{"id": "c", "action": "Call API", "name": "c", "params": params}]}
|
|
22
|
+
dto = pb.build(cfg, _ctx())
|
|
23
|
+
node = [a for a in dto["Actions"] if a["ActionName"] == "c"][0]
|
|
24
|
+
return {str(p["TabPropertyId"])[-12:]: p for p in node["Parameters"]}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_verb_word_resolves_to_platform_guid():
|
|
28
|
+
for word, guid in pb._CALL_API_VERB_GUIDS.items():
|
|
29
|
+
assert _call_api_params(word)["8420f7790001"]["Value"] == guid
|
|
30
|
+
assert _call_api_params("post")["8420f7790001"]["Value"] == pb._CALL_API_VERB_GUIDS["POST"]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_verb_guid_passes_through():
|
|
34
|
+
guid = pb._CALL_API_VERB_GUIDS["DELETE"]
|
|
35
|
+
assert _call_api_params(guid)["8420f7790001"]["Value"] == guid
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_missing_request_parameters_is_seeded_empty():
|
|
39
|
+
p = _call_api_params()["8420f7790003"]
|
|
40
|
+
assert p["Variable"] == []
|
|
41
|
+
assert p["Value"]["body"]["type"] == "RAW" and p["Value"]["headers"] == [] and p["Value"]["queryParams"] == []
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_bound_request_parameters_are_kept():
|
|
45
|
+
p = _call_api_params(with_req=True)["8420f7790003"]
|
|
46
|
+
assert p["Value"]["body"]["value"]["RAW"]["value"] == "{}"
|