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,219 @@
|
|
|
1
|
+
# Using PROCESIO: the rules that are not obvious
|
|
2
|
+
|
|
3
|
+
**Generated from the notes in this folder. Do not edit by hand.**
|
|
4
|
+
Regenerate with `python scripts/run-tool.py procesio usage-guide`.
|
|
5
|
+
|
|
6
|
+
Every rule below was learned by losing time to it against the live platform,
|
|
7
|
+
and they share a shape: the call succeeds, the status says finished, nothing
|
|
8
|
+
is logged, and the thing you asked for did not happen. That is what makes
|
|
9
|
+
them expensive. There is no error to search for, so you look in the wrong
|
|
10
|
+
place.
|
|
11
|
+
|
|
12
|
+
None of these is a defect report. Each is the platform doing something
|
|
13
|
+
defensible that reads as a failure until you know the rule.
|
|
14
|
+
|
|
15
|
+
This page carries the rule and a pointer. The reasoning, the measurement and
|
|
16
|
+
the worked example stay in the note it points at, one copy, so a correction
|
|
17
|
+
lands in exactly one place and this page follows on the next build.
|
|
18
|
+
|
|
19
|
+
**138 rules across 7 notes.**
|
|
20
|
+
|
|
21
|
+
## The API, and what its answers actually mean
|
|
22
|
+
|
|
23
|
+
Source: [`PROCESIO-API-NOTES.md`](PROCESIO-API-NOTES.md)
|
|
24
|
+
|
|
25
|
+
- [DTO casing — live API is camelCase, exports are PascalCase (bites parsers)](PROCESIO-API-NOTES.md#dto-casing-live-api-is-camelcase-exports-are-pascalcase-bites-parsers)
|
|
26
|
+
- [Workspaces](PROCESIO-API-NOTES.md#workspaces)
|
|
27
|
+
- [Export / Import — the .procesio bundle (Transport)](PROCESIO-API-NOTES.md#export-import-the-procesio-bundle-transport)
|
|
28
|
+
- [Validation oracles (use before committing a create/edit)](PROCESIO-API-NOTES.md#validation-oracles-use-before-committing-a-createedit)
|
|
29
|
+
- [Auth & client gotchas](PROCESIO-API-NOTES.md#auth-client-gotchas)
|
|
30
|
+
- [Endpoints + methods (tag Schedules; permission in parens)](PROCESIO-API-NOTES.md#endpoints-methods-tag-schedules-permission-in-parens)
|
|
31
|
+
- [Notification EMAIL — what it carries, and what fires OnFail (measured live)](PROCESIO-API-NOTES.md#notification-email-what-it-carries-and-what-fires-onfail-measured-live)
|
|
32
|
+
- [Data Store — what builds today, and the two properties that do not](PROCESIO-API-NOTES.md#data-store-what-builds-today-and-the-two-properties-that-do-not)
|
|
33
|
+
- [A Node's <%i%> INLINES THE VALUE AS RAW TEXT](PROCESIO-API-NOTES.md#a-nodes-i-inlines-the-value-as-raw-text)
|
|
34
|
+
- [A For Each needs its FULL parameter set, and TWO outgoing edges](PROCESIO-API-NOTES.md#a-for-each-needs-its-full-parameter-set-and-two-outgoing-edges)
|
|
35
|
+
- [JS OFFSETS ARE UTF-16 CODE UNITS, SO A PYTHON ORACLE MUST NOT SLICE BY THEM](PROCESIO-API-NOTES.md#js-offsets-are-utf-16-code-units-so-a-python-oracle-must-not-slice-by-them)
|
|
36
|
+
- [THE RULE BOTH RECOVERIES TAUGHT, and it is now twice](PROCESIO-API-NOTES.md#the-rule-both-recoveries-taught-and-it-is-now-twice)
|
|
37
|
+
- [A Data Store action's sub-fields are GATED ON THE OPERATION VALUE](PROCESIO-API-NOTES.md#a-data-store-actions-sub-fields-are-gated-on-the-operation-value)
|
|
38
|
+
- [A CONSTANT column in Set Values needs NO variable binding (F-1381)](PROCESIO-API-NOTES.md#a-constant-column-in-set-values-needs-no-variable-binding-f-1381)
|
|
39
|
+
- [UpdateRows updates IN PLACE, matched by a keyed Where — only the matched row moves (F-1382)](PROCESIO-API-NOTES.md#updaterows-updates-in-place-matched-by-a-keyed-where-only-the-matched-row-moves-f-1382)
|
|
40
|
+
- [AN ANONYMOUS RESUME MAKES THE CORRELATION ID THE ACCESS CONTROL (F-1384)](PROCESIO-API-NOTES.md#an-anonymous-resume-makes-the-correlation-id-the-access-control-f-1384)
|
|
41
|
+
- [INSTRUMENT RULE: A PERMISSIONS FACT COMES FROM THE ASSIGNABLE ROLE MODEL](PROCESIO-API-NOTES.md#instrument-rule-a-permissions-fact-comes-from-the-assignable-role-model)
|
|
42
|
+
- [AN API KEY INHERITS ITS OWNER'S AUTHORISATION. IT CARRIES NO SCOPE OF ITS OWN](PROCESIO-API-NOTES.md#an-api-key-inherits-its-owners-authorisation-it-carries-no-scope-of-its-own)
|
|
43
|
+
- [✅ POST /api/DataStore/{id}/rows IS WHOLE-BATCH ATOMIC](PROCESIO-API-NOTES.md#post-apidatastoreidrows-is-whole-batch-atomic)
|
|
44
|
+
- [InsertRows TAKES ELEMENT 0 OF A LIST. THERE IS NO NATIVE BATCH WRITE](PROCESIO-API-NOTES.md#insertrows-takes-element-0-of-a-list-there-is-no-native-batch-write)
|
|
45
|
+
- [A native Set Values mapper writes a COMPUTED value only from a TYPED variable, and CANNOT write a null DateTime](PROCESIO-API-NOTES.md#a-native-set-values-mapper-writes-a-computed-value-only-from-a-typed-variable-and-cannot-write-a-null-datetime)
|
|
46
|
+
- [REPORT THE AMBIGUITY RATHER THAN PICKING A WINNER](PROCESIO-API-NOTES.md#report-the-ambiguity-rather-than-picking-a-winner)
|
|
47
|
+
- [A GATE THAT CHECKS A CONTAINER HAS NOT CHECKED ITS CONTENTS](PROCESIO-API-NOTES.md#a-gate-that-checks-a-container-has-not-checked-its-contents)
|
|
48
|
+
- [VERIFY A FIXTURE CONTAINS WHAT IT CLAIMS BEFORE MEASURING ON IT](PROCESIO-API-NOTES.md#verify-a-fixture-contains-what-it-claims-before-measuring-on-it)
|
|
49
|
+
- [BUILD THROUGH THE BUILDER. A RAW PUT IS A DEBUGGING INSTRUMENT](PROCESIO-API-NOTES.md#build-through-the-builder-a-raw-put-is-a-debugging-instrument)
|
|
50
|
+
- [A large flow body cannot go through the CLI --body arg (Windows argv ceiling)](PROCESIO-API-NOTES.md#a-large-flow-body-cannot-go-through-the-cli---body-arg-windows-argv-ceiling)
|
|
51
|
+
- [A FAIL-CLOSED COMPONENT REPORTS FAILURE IN ITS OUTPUT, NOT AS AN ERROR](PROCESIO-API-NOTES.md#a-fail-closed-component-reports-failure-in-its-output-not-as-an-error)
|
|
52
|
+
- [A FAIL-CLOSED GATE MUST REACH NESTED SPEC KINDS](PROCESIO-API-NOTES.md#a-fail-closed-gate-must-reach-nested-spec-kinds)
|
|
53
|
+
- [AN API-BUILT ACTION WITH A PARTIAL PARAMETER SET IS UNOPENABLE IN THE DESIGNER](PROCESIO-API-NOTES.md#an-api-built-action-with-a-partial-parameter-set-is-unopenable-in-the-designer)
|
|
54
|
+
- [RESOLVED (2026-08-24). The mapper row format](PROCESIO-API-NOTES.md#resolved-2026-08-24-the-mapper-row-format)
|
|
55
|
+
- [rowkey uniqueness, and why a presence check is not a landing check](PROCESIO-API-NOTES.md#rowkey-uniqueness-and-why-a-presence-check-is-not-a-landing-check)
|
|
56
|
+
- [Cross-workspace triggering: PROCESS ids are workspace-scoped too](PROCESIO-API-NOTES.md#cross-workspace-triggering-process-ids-are-workspace-scoped-too)
|
|
57
|
+
- [A Data Store id is WORKSPACE-SCOPED, not a global handle](PROCESIO-API-NOTES.md#a-data-store-id-is-workspace-scoped-not-a-global-handle)
|
|
58
|
+
- [An imported process carrying a Data Store mapper CANNOT RUN](PROCESIO-API-NOTES.md#an-imported-process-carrying-a-data-store-mapper-cannot-run)
|
|
59
|
+
- [Live-confirmed on a clock build (2026-09-01) — six facts a store-binding card meets](PROCESIO-API-NOTES.md#live-confirmed-on-a-clock-build-2026-09-01-six-facts-a-store-binding-card-meets)
|
|
60
|
+
- [Node action injection RAW-INSERTS the value — never inject free-form text](PROCESIO-API-NOTES.md#node-action-injection-raw-inserts-the-value-never-inject-free-form-text)
|
|
61
|
+
- [Forms: form-create takes an AUTHORING CONFIG, never a stored DTO](PROCESIO-API-NOTES.md#forms-form-create-takes-an-authoring-config-never-a-stored-dto)
|
|
62
|
+
- [DataStore (/api/DataStore) — new module (2026-08)](PROCESIO-API-NOTES.md#datastore-apidatastore-new-module-2026-08)
|
|
63
|
+
- [Schema mutation after creation — add a column with PUT, NEVER via the backing model](PROCESIO-API-NOTES.md#schema-mutation-after-creation-add-a-column-with-put-never-via-the-backing-model)
|
|
64
|
+
- [Writing a flow definition: three ways the write layer misreports itself](PROCESIO-API-NOTES.md#writing-a-flow-definition-three-ways-the-write-layer-misreports-itself)
|
|
65
|
+
- [Data Store is an ACTION, and what it can do](PROCESIO-API-NOTES.md#data-store-is-an-action-and-what-it-can-do)
|
|
66
|
+
- [Exports: what can be named, and what a pack section proves](PROCESIO-API-NOTES.md#exports-what-can-be-named-and-what-a-pack-section-proves)
|
|
67
|
+
- [Flow control: what blocks, what does not, and what is absent](PROCESIO-API-NOTES.md#flow-control-what-blocks-what-does-not-and-what-is-absent)
|
|
68
|
+
- [The Data Store action: what it takes, and four ways it refuses](PROCESIO-API-NOTES.md#the-data-store-action-what-it-takes-and-four-ways-it-refuses)
|
|
69
|
+
- [Data Stores in an export pack: measured, after the tool was fixed](PROCESIO-API-NOTES.md#data-stores-in-an-export-pack-measured-after-the-tool-was-fixed)
|
|
70
|
+
- [DataStore error surface — read the code and target BEFORE bisecting](PROCESIO-API-NOTES.md#datastore-error-surface-read-the-code-and-target-before-bisecting)
|
|
71
|
+
- [The known length cap](PROCESIO-API-NOTES.md#the-known-length-cap)
|
|
72
|
+
- [503 / statusCode 100 / target datastore is a PLATFORM row-store outage, not your request](PROCESIO-API-NOTES.md#503-statuscode-100-target-datastore-is-a-platform-row-store-outage-not-your-request)
|
|
73
|
+
- [PATCH /api/Projects/{id}/toggle-activation without its state header — CORRECTED](PROCESIO-API-NOTES.md#patch-apiprojectsidtoggle-activation-without-its-state-header-corrected)
|
|
74
|
+
- [Node action: <%N%> interpolates a variable RAW into the JavaScript source](PROCESIO-API-NOTES.md#node-action-n-interpolates-a-variable-raw-into-the-javascript-source)
|
|
75
|
+
- [Instance status codes](PROCESIO-API-NOTES.md#instance-status-codes)
|
|
76
|
+
- [The script engine's capabilities, MEASURED on Internal-PROD 25-08-2026](PROCESIO-API-NOTES.md#the-script-engines-capabilities-measured-on-internal-prod-25-08-2026)
|
|
77
|
+
- [What a Data Store SelectRows hands a Node action](PROCESIO-API-NOTES.md#what-a-data-store-selectrows-hands-a-node-action)
|
|
78
|
+
- [A pack is a SKELETON: structure travels, bindings do not](PROCESIO-API-NOTES.md#a-pack-is-a-skeleton-structure-travels-bindings-do-not)
|
|
79
|
+
- [THE ONE BINDING THAT DOES TRAVEL — AND IT CARRIES A BEARER ID](PROCESIO-API-NOTES.md#the-one-binding-that-does-travel-and-it-carries-a-bearer-id)
|
|
80
|
+
- [Binding a webhook to a process: put-projects, never process-edit](PROCESIO-API-NOTES.md#binding-a-webhook-to-a-process-put-projects-never-process-edit)
|
|
81
|
+
- [The req/opt column in this API reference does NOT carry information](PROCESIO-API-NOTES.md#the-reqopt-column-in-this-api-reference-does-not-carry-information)
|
|
82
|
+
- [The gateway's middleware chain answers before the controller does](PROCESIO-API-NOTES.md#the-gateways-middleware-chain-answers-before-the-controller-does)
|
|
83
|
+
- [A working webhook binding, measured from 29 production exports](PROCESIO-API-NOTES.md#a-working-webhook-binding-measured-from-29-production-exports)
|
|
84
|
+
- [Read UPSTREAM LATENCY on a refusal — it separates two classes no status code does](PROCESIO-API-NOTES.md#read-upstream-latency-on-a-refusal-it-separates-two-classes-no-status-code-does)
|
|
85
|
+
- [A form maps fields to process variables BY NAME; a webhook cannot](PROCESIO-API-NOTES.md#a-form-maps-fields-to-process-variables-by-name-a-webhook-cannot)
|
|
86
|
+
- [The anonymous store path's 401 is NOT produced by the application](PROCESIO-API-NOTES.md#the-anonymous-store-paths-401-is-not-produced-by-the-application)
|
|
87
|
+
- [A form INSTANCE does not unlock the anonymous store path](PROCESIO-API-NOTES.md#a-form-instance-does-not-unlock-the-anonymous-store-path)
|
|
88
|
+
- [A form's DATA-STORE binding is an element EVENT, not an element type](PROCESIO-API-NOTES.md#a-forms-data-store-binding-is-an-element-event-not-an-element-type)
|
|
89
|
+
- [The anonymous api/Form/dataStore/{id}/rows path refuses a bound form's own store](PROCESIO-API-NOTES.md#the-anonymous-apiformdatastoreidrows-path-refuses-a-bound-forms-own-store)
|
|
90
|
+
- [Creating a Data Store from JSON — two required things the DTO does not shout](PROCESIO-API-NOTES.md#creating-a-data-store-from-json-two-required-things-the-dto-does-not-shout)
|
|
91
|
+
- [The FormProcess anonymous route resolves the process WITHIN the form's workspace](PROCESIO-API-NOTES.md#the-formprocess-anonymous-route-resolves-the-process-within-the-forms-workspace)
|
|
92
|
+
- [A process built by process-create + put-projects is created INACTIVE](PROCESIO-API-NOTES.md#a-process-built-by-process-create-put-projects-is-created-inactive)
|
|
93
|
+
- [Sub-workspace create/delete on a capped Business plan is lossy — reconcile from the ledger](PROCESIO-API-NOTES.md#sub-workspace-createdelete-on-a-capped-business-plan-is-lossy-reconcile-from-the-ledger)
|
|
94
|
+
- [A form template is fetchable ANONYMOUSLY — measured](PROCESIO-API-NOTES.md#a-form-template-is-fetchable-anonymously-measured)
|
|
95
|
+
- [A native Data Store node is WORKSPACE-SCOPED — cross-workspace store access needs a Call API, not a node](PROCESIO-API-NOTES.md#a-native-data-store-node-is-workspace-scoped-cross-workspace-store-access-needs-a-call-api-not-a-node)
|
|
96
|
+
- [THIS REPO SHIPS A FULL API REFERENCE — READ IT BEFORE PROBING](PROCESIO-API-NOTES.md#this-repo-ships-a-full-api-reference-read-it-before-probing)
|
|
97
|
+
- [FlowStatus, verbatim](PROCESIO-API-NOTES.md#flowstatus-verbatim)
|
|
98
|
+
- [A webhook binding cannot map FIELDS — one variable gets the WHOLE body](PROCESIO-API-NOTES.md#a-webhook-binding-cannot-map-fields-one-variable-gets-the-whole-body)
|
|
99
|
+
- [A webhook launch CREATES an instance that does not necessarily RUN](PROCESIO-API-NOTES.md#a-webhook-launch-creates-an-instance-that-does-not-necessarily-run)
|
|
100
|
+
- [Revoking a webhook: UNBIND FIRST](PROCESIO-API-NOTES.md#revoking-a-webhook-unbind-first)
|
|
101
|
+
- [PROCESIO's outbound calls identify themselves](PROCESIO-API-NOTES.md#procesios-outbound-calls-identify-themselves)
|
|
102
|
+
- [A REST credential's connection test proves only what its Test endpoint requires](PROCESIO-API-NOTES.md#a-rest-credentials-connection-test-proves-only-what-its-test-endpoint-requires)
|
|
103
|
+
- [Create a process with process-create. NEVER provision one by duplicating](PROCESIO-API-NOTES.md#create-a-process-with-process-create-never-provision-one-by-duplicating)
|
|
104
|
+
- [And the launch refusal names the wrong cause](PROCESIO-API-NOTES.md#and-the-launch-refusal-names-the-wrong-cause)
|
|
105
|
+
- [Building a process through process-create — the parameter names](PROCESIO-API-NOTES.md#building-a-process-through-process-create-the-parameter-names)
|
|
106
|
+
- [What to do about it, as a rule](PROCESIO-API-NOTES.md#what-to-do-about-it-as-a-rule)
|
|
107
|
+
- [The Python action returns what the script PRINTS — assignment is silently useless](PROCESIO-API-NOTES.md#the-python-action-returns-what-the-script-prints-assignment-is-silently-useless)
|
|
108
|
+
- [There is NO crypto module in the Node action. Hashing must be implemented in full](PROCESIO-API-NOTES.md#there-is-no-crypto-module-in-the-node-action-hashing-must-be-implemented-in-full)
|
|
109
|
+
- [process-create's config CANNOT express a Data Store mapper. Create, then patch](PROCESIO-API-NOTES.md#process-creates-config-cannot-express-a-data-store-mapper-create-then-patch)
|
|
110
|
+
- [The Data Store side panel, in full (its properties are addressed at TOP level)](PROCESIO-API-NOTES.md#the-data-store-side-panel-in-full-its-properties-are-addressed-at-top-level)
|
|
111
|
+
- [Data Store InsertRows does NOT fan out a list-bound mapper](PROCESIO-API-NOTES.md#data-store-insertrows-does-not-fan-out-a-list-bound-mapper)
|
|
112
|
+
- [For Each — containment is ParentId, and identity is never the name](PROCESIO-API-NOTES.md#for-each-containment-is-parentid-and-identity-is-never-the-name)
|
|
113
|
+
- [The insert-per-element shape that works](PROCESIO-API-NOTES.md#the-insert-per-element-shape-that-works)
|
|
114
|
+
- [The anonymous form/dataStore path is scoped to the WORKSPACE, not the form](PROCESIO-API-NOTES.md#the-anonymous-formdatastore-path-is-scoped-to-the-workspace-not-the-form)
|
|
115
|
+
- [The 401 on /rows is a ROUTING failure, not an auth failure](PROCESIO-API-NOTES.md#the-401-on-rows-is-a-routing-failure-not-an-auth-failure)
|
|
116
|
+
- [A data-model-typed input variable is not delivered by run-process --payload](PROCESIO-API-NOTES.md#a-data-model-typed-input-variable-is-not-delivered-by-run-process---payload)
|
|
117
|
+
- [Extract Text returns ONE page object per page — a no-text page is NOT an empty list (measured)](PROCESIO-API-NOTES.md#extract-text-returns-one-page-object-per-page-a-no-text-page-is-not-an-empty-list-measured)
|
|
118
|
+
- [CSV/XLSX read-actions return THREE different empty-shapes — and per-action status 90 = FAILED (measured)](PROCESIO-API-NOTES.md#csvxlsx-read-actions-return-three-different-empty-shapes-and-per-action-status-90-failed-measured)
|
|
119
|
+
- [A NULL variable injected at <%N%> is a captured SyntaxError that SILENTLY ADMITS — use [<%N%>][0] (measured)](PROCESIO-API-NOTES.md#a-null-variable-injected-at-n-is-a-captured-syntaxerror-that-silently-admits-use-n0-measured)
|
|
120
|
+
- [Reading a finished run's output values: result.variable is keyed BY the variable name (measured)](PROCESIO-API-NOTES.md#reading-a-finished-runs-output-values-resultvariable-is-keyed-by-the-variable-name-measured)
|
|
121
|
+
- [isValid is a field the caller sets, not one the platform computes](PROCESIO-API-NOTES.md#isvalid-is-a-field-the-caller-sets-not-one-the-platform-computes)
|
|
122
|
+
- [POST /api/Projects/validate answers "valid" for flows the designer refuses to save](PROCESIO-API-NOTES.md#post-apiprojectsvalidate-answers-valid-for-flows-the-designer-refuses-to-save)
|
|
123
|
+
- [Every resource read is workspace-scoped, and the designer URL carries the workspace](PROCESIO-API-NOTES.md#every-resource-read-is-workspace-scoped-and-the-designer-url-carries-the-workspace)
|
|
124
|
+
- [toggle-activation takes the target state in a REQUEST HEADER, not a body](PROCESIO-API-NOTES.md#toggle-activation-takes-the-target-state-in-a-request-header-not-a-body)
|
|
125
|
+
- [Processing-time BILLING is readable per-workspace and per-run — and the meter is not what you'd guess](PROCESIO-API-NOTES.md#processing-time-billing-is-readable-per-workspace-and-per-run-and-the-meter-is-not-what-youd-guess)
|
|
126
|
+
- [A Data Store lives in EXACTLY ONE workspace. There is no master → sub inheritance](PROCESIO-API-NOTES.md#a-data-store-lives-in-exactly-one-workspace-there-is-no-master-sub-inheritance)
|
|
127
|
+
- [✅ Read AND write are credential-free. The native action has nowhere to put a credential](PROCESIO-API-NOTES.md#read-and-write-are-credential-free-the-native-action-has-nowhere-to-put-a-credential)
|
|
128
|
+
- [Export carries SCHEMA ONLY. Rows never travel in a pack](PROCESIO-API-NOTES.md#export-carries-schema-only-rows-never-travel-in-a-pack)
|
|
129
|
+
- [Creation, column types, and the duplicate-key contract](PROCESIO-API-NOTES.md#creation-column-types-and-the-duplicate-key-contract)
|
|
130
|
+
- [Limits — measured, and the ones that are NOT what the flow-value figure suggests](PROCESIO-API-NOTES.md#limits-measured-and-the-ones-that-are-not-what-the-flow-value-figure-suggests)
|
|
131
|
+
- [What an API import carries, and what it leaves behind](PROCESIO-API-NOTES.md#what-an-api-import-carries-and-what-it-leaves-behind)
|
|
132
|
+
- [Re-importing an updated pack: what overrideData really does](PROCESIO-API-NOTES.md#re-importing-an-updated-pack-what-overridedata-really-does)
|
|
133
|
+
- [Workspace scoping of ids, instances, credentials and files](PROCESIO-API-NOTES.md#workspace-scoping-of-ids-instances-credentials-and-files)
|
|
134
|
+
- [Capacity and consumption are pooled at the master](PROCESIO-API-NOTES.md#capacity-and-consumption-are-pooled-at-the-master)
|
|
135
|
+
- [Surgical live edits: placeholder quoting, layer counts, decisional retargeting](PROCESIO-API-NOTES.md#surgical-live-edits-placeholder-quoting-layer-counts-decisional-retargeting)
|
|
136
|
+
- [Surgical live edits, part 2: single-inbound decisionals, error ports, failure-path defaults](PROCESIO-API-NOTES.md#surgical-live-edits-part-2-single-inbound-decisionals-error-ports-failure-path-defaults)
|
|
137
|
+
- [Auditing a workspace: three traps on the read path](PROCESIO-API-NOTES.md#auditing-a-workspace-three-traps-on-the-read-path)
|
|
138
|
+
- [Transport import PRESERVES resource ids across workspaces](PROCESIO-API-NOTES.md#transport-import-preserves-resource-ids-across-workspaces)
|
|
139
|
+
- [Data-store access control is per WORKSPACE, never per store](PROCESIO-API-NOTES.md#data-store-access-control-is-per-workspace-never-per-store)
|
|
140
|
+
- [Importing tools.procesio.main as a library RE-EXECUTES the CLI](PROCESIO-API-NOTES.md#importing-toolsprocesiomain-as-a-library-re-executes-the-cli)
|
|
141
|
+
- [A save can be refused by a limit the action's own metadata says is legal](PROCESIO-API-NOTES.md#a-save-can-be-refused-by-a-limit-the-actions-own-metadata-says-is-legal)
|
|
142
|
+
- [changed is the intent, put is the outcome](PROCESIO-API-NOTES.md#changed-is-the-intent-put-is-the-outcome)
|
|
143
|
+
- [Variable substitution into a script is LITERAL, and a json variable IS the escaping mechanism](PROCESIO-API-NOTES.md#variable-substitution-into-a-script-is-literal-and-a-json-variable-is-the-escaping-mechanism)
|
|
144
|
+
- [Consequence: a form field cannot feed a json-typed process input](PROCESIO-API-NOTES.md#consequence-a-form-field-cannot-feed-a-json-typed-process-input)
|
|
145
|
+
- [PROCESIO webhook handshake-response is NOT persistent - cannot reliably serve Meta inbound (2026-10-01, refines the earlier claim)](PROCESIO-API-NOTES.md#procesio-webhook-handshake-response-is-not-persistent---cannot-reliably-serve-meta-inbound-2026-10-01-refines-the-earlier-claim)
|
|
146
|
+
|
|
147
|
+
## Procesio Instance History Notes
|
|
148
|
+
|
|
149
|
+
Source: [`PROCESIO-INSTANCE-HISTORY-NOTES.md`](PROCESIO-INSTANCE-HISTORY-NOTES.md)
|
|
150
|
+
|
|
151
|
+
- [Traps (each cost a real diagnosis)](PROCESIO-INSTANCE-HISTORY-NOTES.md#traps-each-cost-a-real-diagnosis)
|
|
152
|
+
- [Reading history from INSIDE a flow — binding matters](PROCESIO-INSTANCE-HISTORY-NOTES.md#reading-history-from-inside-a-flow-binding-matters)
|
|
153
|
+
- [Get Recent Instances at RUNTIME — measured, and it corrects the action doc](PROCESIO-INSTANCE-HISTORY-NOTES.md#get-recent-instances-at-runtime-measured-and-it-corrects-the-action-doc)
|
|
154
|
+
- [Capturing a run's output — capture it LIVE, don't count on reading it back](PROCESIO-INSTANCE-HISTORY-NOTES.md#capturing-a-runs-output-capture-it-live-dont-count-on-reading-it-back)
|
|
155
|
+
- [Only FORM-launched instances are LISTED; API-launched ones are only COUNTED](PROCESIO-INSTANCE-HISTORY-NOTES.md#only-form-launched-instances-are-listed-api-launched-ones-are-only-counted)
|
|
156
|
+
- [There is no version anywhere on either object](PROCESIO-INSTANCE-HISTORY-NOTES.md#there-is-no-version-anywhere-on-either-object)
|
|
157
|
+
|
|
158
|
+
## Procesio Foreach Notes
|
|
159
|
+
|
|
160
|
+
Source: [`PROCESIO-FOREACH-NOTES.md`](PROCESIO-FOREACH-NOTES.md)
|
|
161
|
+
|
|
162
|
+
- [A programmatically-built For Each is missing two parameters a designer-built one has](PROCESIO-FOREACH-NOTES.md#a-programmatically-built-for-each-is-missing-two-parameters-a-designer-built-one-has)
|
|
163
|
+
- [The failure mode: the loop times out without iterating a populated list](PROCESIO-FOREACH-NOTES.md#the-failure-mode-the-loop-times-out-without-iterating-a-populated-list)
|
|
164
|
+
- [CONFIRMED (causal test done): the two parameters ARE the cause, and the timeout is NOT](PROCESIO-FOREACH-NOTES.md#confirmed-causal-test-done-the-two-parameters-are-the-cause-and-the-timeout-is-not)
|
|
165
|
+
|
|
166
|
+
## Procesio Node Code Notes
|
|
167
|
+
|
|
168
|
+
Source: [`PROCESIO-NODE-CODE-NOTES.md`](PROCESIO-NODE-CODE-NOTES.md)
|
|
169
|
+
|
|
170
|
+
- [1. <%N%> substitution into a Node's Code is TEXT substitution, and only an OBJECT value is safe](PROCESIO-NODE-CODE-NOTES.md#1-n-substitution-into-a-nodes-code-is-text-substitution-and-only-an-object-value-is-safe)
|
|
171
|
+
- [2. A process can read its own workspace's run history in-flow, with NO credential](PROCESIO-NODE-CODE-NOTES.md#2-a-process-can-read-its-own-workspaces-run-history-in-flow-with-no-credential)
|
|
172
|
+
- [3. Editing a live Node's Code in place: fix BOTH copies (runtime param AND designer customData)](PROCESIO-NODE-CODE-NOTES.md#3-editing-a-live-nodes-code-in-place-fix-both-copies-runtime-param-and-designer-customdata)
|
|
173
|
+
|
|
174
|
+
## The Python action
|
|
175
|
+
|
|
176
|
+
Source: [`PROCESIO-PYTHON-ACTION-NOTES.md`](PROCESIO-PYTHON-ACTION-NOTES.md)
|
|
177
|
+
|
|
178
|
+
- [I/O mechanics — two traps](PROCESIO-PYTHON-ACTION-NOTES.md#io-mechanics-two-traps)
|
|
179
|
+
- [spacy is on the list; a spacy MODEL is not](PROCESIO-PYTHON-ACTION-NOTES.md#spacy-is-on-the-list-a-spacy-model-is-not)
|
|
180
|
+
- [Where the compute runs, and why it matters for sizing](PROCESIO-PYTHON-ACTION-NOTES.md#where-the-compute-runs-and-why-it-matters-for-sizing)
|
|
181
|
+
|
|
182
|
+
## Readings that turned out to be wrong
|
|
183
|
+
|
|
184
|
+
Source: [`PROCESIO-API-CORRECTIONS.md`](PROCESIO-API-CORRECTIONS.md)
|
|
185
|
+
|
|
186
|
+
- [5. Transport import refused, and workspace creation lies about failing](PROCESIO-API-CORRECTIONS.md#5-transport-import-refused-and-workspace-creation-lies-about-failing)
|
|
187
|
+
|
|
188
|
+
## Building a card
|
|
189
|
+
|
|
190
|
+
Source: [`PROCESIO-CARD-BUILD-NOTES.md`](PROCESIO-CARD-BUILD-NOTES.md)
|
|
191
|
+
|
|
192
|
+
- [9. Assembling a file-in / file-out card through the builder (the renderer wiring)](PROCESIO-CARD-BUILD-NOTES.md#9-assembling-a-file-in-file-out-card-through-the-builder-the-renderer-wiring)
|
|
193
|
+
|
|
194
|
+
## Notes not yet indexed here
|
|
195
|
+
|
|
196
|
+
These carry rules too. They are absent because the `⚠` convention has not
|
|
197
|
+
been applied to them yet, not because they hold nothing. Marking a rule in
|
|
198
|
+
one of them adds it here on the next build; read them directly meanwhile.
|
|
199
|
+
|
|
200
|
+
- [`DTO-SUBTOOLS-NOTE.md`](DTO-SUBTOOLS-NOTE.md)
|
|
201
|
+
- [`PHASE4-E2E-NOTES.md`](PHASE4-E2E-NOTES.md)
|
|
202
|
+
- [`PROCESIO-AUTH-NOTES.md`](PROCESIO-AUTH-NOTES.md)
|
|
203
|
+
- [`PROCESIO-CONNECTORS-NOTES.md`](PROCESIO-CONNECTORS-NOTES.md)
|
|
204
|
+
- [`PROCESIO-CUSTOM-ACTION-NOTES.md`](PROCESIO-CUSTOM-ACTION-NOTES.md)
|
|
205
|
+
- [`PROCESIO-DOCS-FIX-REPORT.md`](PROCESIO-DOCS-FIX-REPORT.md)
|
|
206
|
+
- [`PROCESIO-ENVIRONMENTS-NOTES.md`](PROCESIO-ENVIRONMENTS-NOTES.md)
|
|
207
|
+
- [`PROCESIO-FE-VALIDATION-NOTES.md`](PROCESIO-FE-VALIDATION-NOTES.md)
|
|
208
|
+
- [`PROCESIO-FORM-API-HANG-NOTE.md`](PROCESIO-FORM-API-HANG-NOTE.md)
|
|
209
|
+
- [`PROCESIO-FORM-SUBMISSION-NOTES.md`](PROCESIO-FORM-SUBMISSION-NOTES.md)
|
|
210
|
+
- [`PROCESIO-HTML-TO-DOCX-NOTES.md`](PROCESIO-HTML-TO-DOCX-NOTES.md)
|
|
211
|
+
- [`PROCESIO-METERING-NOTES.md`](PROCESIO-METERING-NOTES.md)
|
|
212
|
+
- [`PROCESIO-NODE-MODULE-WHITELIST.md`](PROCESIO-NODE-MODULE-WHITELIST.md)
|
|
213
|
+
- [`PROCESIO-QUERY-STORE-NOTES.md`](PROCESIO-QUERY-STORE-NOTES.md)
|
|
214
|
+
- [`PROCESIO-RECONCILIATION-PATTERNS.md`](PROCESIO-RECONCILIATION-PATTERNS.md)
|
|
215
|
+
- [`PROCESIO-RESOURCE-MODEL-NOTES.md`](PROCESIO-RESOURCE-MODEL-NOTES.md)
|
|
216
|
+
- [`PROCESIO-SEND-EMAIL-CRED-OPTIONALITY.md`](PROCESIO-SEND-EMAIL-CRED-OPTIONALITY.md)
|
|
217
|
+
- [`PROCESIO-SEND-EMAIL-NOTES.md`](PROCESIO-SEND-EMAIL-NOTES.md)
|
|
218
|
+
- [`PROCESIO-SQL-ACTIONS-NOTES.md`](PROCESIO-SQL-ACTIONS-NOTES.md)
|
|
219
|
+
- [`SCHEDULE-INPUT-SECURITY-NOTES.md`](SCHEDULE-INPUT-SECURITY-NOTES.md)
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
# procesio
|
|
2
|
+
|
|
3
|
+
Talk to the **PROCESIO** low-code automation platform over its Web API. Run
|
|
4
|
+
processes, read instances / workspaces / data-types / the action catalog, and reach
|
|
5
|
+
**every** documented endpoint through a generic `request` action.
|
|
6
|
+
|
|
7
|
+
The platform itself is **procesio.app** - that is where workspaces live and what this
|
|
8
|
+
tool points at. procesio.com is the product site and docs.procesio.com the
|
|
9
|
+
documentation; neither is an API host.
|
|
10
|
+
|
|
11
|
+
## Capabilities are ACTIONS — list them, don't reimplement
|
|
12
|
+
|
|
13
|
+
> If you want to *do* something to PROCESIO, there is almost certainly already an
|
|
14
|
+
> action for it. **List them first — never reimplement a capability the notes
|
|
15
|
+
> describe as a recipe:** `python scripts/run-tool.py procesio` prints all 442.
|
|
16
|
+
> Curated (ergonomic) actions win; a raw `<method>-<path>` wrapper or `request`
|
|
17
|
+
> is the fallback only when no curated action fits.
|
|
18
|
+
|
|
19
|
+
| Want to… | Action(s) |
|
|
20
|
+
|---|---|
|
|
21
|
+
| **Build** a process / form / document / webhook / credential / data model | `process-create` · `form-create` · `document-create` · `webhook-create` · `credential-create` · `datatype-create` (+ each `*-edit`) |
|
|
22
|
+
| **Get / list / delete** any of those | `<res>-get` · `list-processes`/`form-list`/`document-list`/`list-datatypes` · `<res>-delete` |
|
|
23
|
+
| **Run / validate / activate** a process | `run-process` (`--synchronous`) · `process-validate` · `process-toggle-activation` |
|
|
24
|
+
| **Duplicate / copy** a process or form | `duplicate-process` · `form-duplicate` |
|
|
25
|
+
| **Export / import** a `.procesio` bundle | `export` · `import` |
|
|
26
|
+
| **Test** a credential / a custom action (the oracles) | `credential-test` · `customaction-test` |
|
|
27
|
+
| **Custom actions** (connectors): install / delete / list | `customaction-upload` · `customaction-delete` · `customaction-list` |
|
|
28
|
+
| **Download** a flow-instance file (PDF etc.) | `file-download` (`--from-run`) |
|
|
29
|
+
| **Launch** a webhook-triggered process | `webhook-launch` |
|
|
30
|
+
| **Canvas layout / flow graph** (offline) | `layout-flow` · `verify-layout` · `read-flow-graph` · `inspect-flow` · `layout-resource-map` · `relayout-process` |
|
|
31
|
+
| **Rename canvas actions** in bulk (kill the default `Node` / `Call API` labels) | `rename-actions` (`--map` / `--map-file`, `--dry-run`) |
|
|
32
|
+
| **Data-model lifecycle** | `datatype-add-attribute` · `datatype-change-to-public` · `datatype-clone` · `datatype-get`/`-delete` |
|
|
33
|
+
| **Schedules** | `create-schedule` / `get-schedule` / `update-schedule` / `delete-schedule` / `list-schedules` / `set-schedule-status` |
|
|
34
|
+
| Anything else (raw 1:1) | `<method>-<path>` (e.g. `post-actions-test`) or `request --method --path` |
|
|
35
|
+
|
|
36
|
+
## Authentication — two modes, many credentials
|
|
37
|
+
|
|
38
|
+
PROCESIO supports two auth modes, and this tool keeps **multiple named
|
|
39
|
+
credential profiles** so you can switch accounts/keys with `--profile`:
|
|
40
|
+
|
|
41
|
+
| Mode | How it authenticates | Access |
|
|
42
|
+
|------|----------------------|--------|
|
|
43
|
+
| **apikey** | three request headers `key`, `value`, `workspaceid` | one workspace |
|
|
44
|
+
| **userpass** | form login on `webapi/api/authentication` → `__Host-procesio` **cookie session** (+ `x-requested-by`) | everything the UI has |
|
|
45
|
+
|
|
46
|
+
> **Prefer `userpass` when you have a choice.** It carries the user's full access
|
|
47
|
+
> (owner/admin + cross-workspace), so it reaches endpoints an API key can't — e.g.
|
|
48
|
+
> listing a master workspace's sub-workspaces returns 401 for an API key but 200
|
|
49
|
+
> for userpass. Use an API key only to pin to a single workspace. The stored default profile is `account` (userpass).
|
|
50
|
+
|
|
51
|
+
Secrets live **only** in the OS credential store - Windows Credential Manager,
|
|
52
|
+
the macOS login Keychain, or the Linux desktop keyring - under
|
|
53
|
+
`agents-and-tools:procesio:cred-<name>`, never on disk. The non-secret index
|
|
54
|
+
(`…:procesio:credentials`) lists which profiles exist.
|
|
55
|
+
|
|
56
|
+
### Manage credentials
|
|
57
|
+
|
|
58
|
+
```powershell
|
|
59
|
+
# list profiles (names/types/workspaces only — never secrets)
|
|
60
|
+
python scripts/run-tool.py procesio list-credentials
|
|
61
|
+
|
|
62
|
+
# add an API key (workspace-scoped). workspace-id is the workspace GUID.
|
|
63
|
+
python scripts/run-tool.py procesio add-credential `
|
|
64
|
+
--name personal --type apikey --key <KEY> --value <VALUE> `
|
|
65
|
+
--workspace-id <GUID> --workspace "My workspace"
|
|
66
|
+
|
|
67
|
+
# add a username/password account (full access)
|
|
68
|
+
python scripts/run-tool.py procesio add-credential `
|
|
69
|
+
--name account --type userpass --username me@example.com --password '<PW>'
|
|
70
|
+
|
|
71
|
+
python scripts/run-tool.py procesio set-default --name account
|
|
72
|
+
python scripts/run-tool.py procesio remove-credential --name old
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
> **API-key `workspaceid`.** Most workspace-scoped keys require the `workspaceid`
|
|
76
|
+
> header (the workspace GUID) to authenticate — without it you get `401`. A
|
|
77
|
+
> master/personal key may work without one. Find a workspace's GUID with
|
|
78
|
+
> `list-workspaces` (the `id` field).
|
|
79
|
+
|
|
80
|
+
### Verify
|
|
81
|
+
|
|
82
|
+
```powershell
|
|
83
|
+
python scripts/run-tool.py procesio check-auth --profile personal
|
|
84
|
+
python scripts/run-tool.py procesio login --profile account # caches the Bearer token
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Endpoints — full 1:1 coverage
|
|
88
|
+
|
|
89
|
+
**Every** Web-API endpoint (295 of them) is a dispatchable action, generated from
|
|
90
|
+
the bundled Swagger index. There are three ways in, from most to least
|
|
91
|
+
ergonomic:
|
|
92
|
+
|
|
93
|
+
1. **Curated shortcuts** — hand-written, friendly names + arg mapping
|
|
94
|
+
(`list-processes`, `run-process`, `list-workspaces`, …; see below).
|
|
95
|
+
2. **Generated per-endpoint actions** — one per operation, named
|
|
96
|
+
`<method>-<path-slug>` where `{param}` → `by-param`:
|
|
97
|
+
|
|
98
|
+
| Endpoint | Action |
|
|
99
|
+
|----------|--------|
|
|
100
|
+
| `GET /api/Projects` | `get-projects` |
|
|
101
|
+
| `GET /api/Projects/{id}/payload` | `get-projects-by-id-payload` |
|
|
102
|
+
| `POST /api/Projects/{id}/run` | `post-projects-by-id-run` |
|
|
103
|
+
| `DELETE /api/Webhooks/{webhookId}` | `delete-webhooks-by-webhookid` |
|
|
104
|
+
|
|
105
|
+
Path params are **required** `--<name>` args, query params are optional
|
|
106
|
+
`--<name>` args, request bodies are passed as `--body '<json>'`, and every
|
|
107
|
+
generated action takes **`--dry-run`** to compose-and-return the request
|
|
108
|
+
without sending it.
|
|
109
|
+
3. **`request`** — the raw escape hatch for anything (custom query keys, etc.).
|
|
110
|
+
|
|
111
|
+
```powershell
|
|
112
|
+
# discover
|
|
113
|
+
python scripts/run-tool.py procesio list-endpoints --tags-only
|
|
114
|
+
python scripts/run-tool.py procesio list-endpoints --tag ProcessInstance --filter run
|
|
115
|
+
|
|
116
|
+
# generated action (preview a destructive call first)
|
|
117
|
+
python scripts/run-tool.py procesio post-projects-by-id-run --profile personal `
|
|
118
|
+
--id <pid> --runSynchronous true --body '{"payload":{},"connectionid":null}' --dry-run
|
|
119
|
+
|
|
120
|
+
# raw escape hatch
|
|
121
|
+
python scripts/run-tool.py procesio request --profile personal `
|
|
122
|
+
--method GET --path /api/Projects --query '{"pageNumber":1,"pageItemCount":20}'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
> Complex objects (process / form / data type / credential / webhook / document)
|
|
126
|
+
> have **structured DTO sub-tools** — see below. The raw `post-*`/`put-*`
|
|
127
|
+
> endpoints remain the escape hatch.
|
|
128
|
+
|
|
129
|
+
## DTO sub-tools — `<component>-create` / `<component>-edit`
|
|
130
|
+
|
|
131
|
+
Deterministic builders that turn a small validated `config` into a full PROCESIO
|
|
132
|
+
DTO and create/edit the resource (build → JSON-Schema validate → merge onto a
|
|
133
|
+
golden template → validate@source → create/edit → re-GET). All six components are
|
|
134
|
+
live-verified. See `DTO-SUBTOOLS-NOTE.md` and each `dto/<component>/description.md`.
|
|
135
|
+
|
|
136
|
+
```powershell
|
|
137
|
+
# preview the built DTO (+ validate@source) without sending
|
|
138
|
+
procesio process-create --workspace-id <ws> --dry-run --config '{...}'
|
|
139
|
+
|
|
140
|
+
# data model
|
|
141
|
+
procesio datatype-create --workspace-id <ws> --config '{"name":"Order","attributes":[{"name":"id","type":"guid"},{"name":"total","type":"double"}]}'
|
|
142
|
+
# process (any catalog action; runs to STATUS_FINISH)
|
|
143
|
+
procesio process-create --workspace-id <ws> --config '{"title":"P","variables":[{"name":"r","type":"guid","direction":"output"}],"actions":[{"id":"g","action":"Generate GUID","params":{"Guid":{"var":"r"}}}]}'
|
|
144
|
+
# credential (validated by POST /api/Credentials/test)
|
|
145
|
+
procesio credential-create --workspace-id <ws> --config '{"template":"REST API","name":"GH","properties":{"URL":"https://api.github.com","Authentication method":"No authentication","Method":"GET","Test endpoint":"/zen"}}'
|
|
146
|
+
# document, webhook, form
|
|
147
|
+
procesio document-create --workspace-id <ws> --config '{"name":"Doc","body":"<div>Hello <%name%></div>","variables":[{"name":"name","type":"string"}]}'
|
|
148
|
+
procesio webhook-create --workspace-id <ws> --config '{"name":"Hook","sample":{"orderId":"x"},"type":"manual"}'
|
|
149
|
+
procesio form-create --workspace-id <ws> --config '{"name":"Reg","elements":[{"type":"heading","label":"Sign up"},{"type":"input","label":"Email","required":true},{"type":"button","label":"Submit","submit":true}]}'
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Config shapes (full schemas in `dto/<component>/config.schema.json`):
|
|
153
|
+
- **process** — `variables` (input/process/output, primitive or `model`), `actions`
|
|
154
|
+
(`action` = catalog name; `params` bind by property label: literal / `{var}` /
|
|
155
|
+
`{var,path}` / `{template,vars}`), `edges` (linear by default), `branches`
|
|
156
|
+
(Decisional), `webhooks` (attach a trigger).
|
|
157
|
+
- **form** — `elements[]` of `{type,label,name,required,options,children,...}`;
|
|
158
|
+
renders at `forms.procesio.app/{tinyUrl}` after a CustomUrl is created.
|
|
159
|
+
- After changing any handler/builder, regenerate the manifest:
|
|
160
|
+
`python -m tools.procesio.gen_manifest` (it is too large to hand-edit).
|
|
161
|
+
|
|
162
|
+
## Curated actions
|
|
163
|
+
|
|
164
|
+
```powershell
|
|
165
|
+
procesio list-processes --profile personal [--search inv] [--page 1 --page-size 20]
|
|
166
|
+
procesio get-process --profile personal --id <pid>
|
|
167
|
+
procesio get-process-payload --profile personal --id <pid> # input shape for run
|
|
168
|
+
procesio run-process --profile personal --id <pid> --payload '{"x":1}' [--dry-run]
|
|
169
|
+
procesio list-instances --profile personal --id <pid> [--status <s>]
|
|
170
|
+
procesio get-instance-status --profile personal --id <iid> --flow-template-id <pid> --variables
|
|
171
|
+
procesio get-instance-output --profile personal --id <iid> --flow-template-id <pid>
|
|
172
|
+
procesio stop-instance --profile personal --id <iid> --flow-template-id <pid>
|
|
173
|
+
|
|
174
|
+
procesio list-workspaces --profile personal
|
|
175
|
+
procesio list-subworkspaces --profile account --workspace-id <master> --parent-id <master> # active-only (+ --include-removed)
|
|
176
|
+
procesio list-workspace-users --profile personal
|
|
177
|
+
procesio list-datatypes --profile personal [--search <n>]
|
|
178
|
+
procesio list-actions-catalog --profile personal [--full]
|
|
179
|
+
procesio list-connections --profile personal # stored connection credentials
|
|
180
|
+
procesio list-connection-types --profile personal
|
|
181
|
+
procesio list-api-keys --profile personal
|
|
182
|
+
|
|
183
|
+
procesio list-schedules --profile account [--search <n> --page 1 --page-size 20]
|
|
184
|
+
procesio get-schedule --profile account --id <sid>
|
|
185
|
+
procesio create-schedule --profile account --payload '{...}' # body shape: PROCESIO-API-NOTES.md
|
|
186
|
+
procesio update-schedule --profile account --payload '{"id":"<sid>",...}'
|
|
187
|
+
procesio delete-schedule --profile account --id <sid>
|
|
188
|
+
procesio set-schedule-status --profile account --id <sid> --active true|false # maps to ?enable=
|
|
189
|
+
procesio get-schedule-notifications --profile account --id <sid>
|
|
190
|
+
procesio set-schedule-notifications --profile account --payload '{...}'
|
|
191
|
+
procesio list-project-schedules --profile account --id <pid> # the target process's flow detail
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`run-process` builds the documented body `{"payload": {...}, "connectionid": null}`
|
|
195
|
+
and posts to `/api/Projects/{id}/run`. Use `--dry-run` to preview the request
|
|
196
|
+
without executing the process.
|
|
197
|
+
|
|
198
|
+
### Rewriting event chains on a live form — `form-set-element-chains`
|
|
199
|
+
|
|
200
|
+
When a change moves, adds or conditions `MAP_FORM_DATA` blocks inside a button's
|
|
201
|
+
chain (or spreads one behaviour over several elements), restate the chains in a
|
|
202
|
+
plan and save them in ONE surgical write:
|
|
203
|
+
|
|
204
|
+
```powershell
|
|
205
|
+
procesio form-set-element-chains --id <form> --plan-file plan.json --dry-run # names, not guids
|
|
206
|
+
procesio form-set-element-chains --id <form> --plan-file plan.json
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
```json
|
|
210
|
+
{"chains": [
|
|
211
|
+
{"element": "validate-step-2", "on": "click", "events": [
|
|
212
|
+
{"keep": "<existing event id>"},
|
|
213
|
+
{"js_file": "request.js"}]},
|
|
214
|
+
{"element": "step-flow-trigger", "on": "input", "events": [
|
|
215
|
+
{"map": {"when": [{"field": "flag-step-2", "op": "EQUALS", "value": "1"},
|
|
216
|
+
{"field": "step-flow-branch", "op": "EQUALS", "value": "company"}],
|
|
217
|
+
"set": {"Input2.disabled": true, "step-3.visible": true, "@isDone": true}}},
|
|
218
|
+
{"js_file": "advance.js"}]}]}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
- `keep` re-uses an existing event of that element and trigger verbatim, id included.
|
|
222
|
+
Large validator scripts are never re-sent.
|
|
223
|
+
- A `set` key is `<element>.<configKey>`, or `@<formVariable>`. A condition operand is
|
|
224
|
+
`field` (`<element>` = its value, `<element>.<key>` = any config) or `variable`.
|
|
225
|
+
`match` is `all` (AND) or `any` (OR).
|
|
226
|
+
- Every name, config key, variable, operator and kept id is resolved before the write.
|
|
227
|
+
Events a chain does not list are dropped and reported.
|
|
228
|
+
- `warnings` flags an `IS_TRUE`/`IS_FALSE` on a Boolean variable whose default is the text
|
|
229
|
+
`"false"`. A condition reads that text as TRUE (measured live, see FORM-DEV-GUIDE/08).
|
|
230
|
+
- Get the ids to keep from `form-get-element-events`. After a code change, call it with
|
|
231
|
+
`AAT_RUNNER=0` (the worker pool serves stale modules).
|
|
232
|
+
|
|
233
|
+
The pattern this was built for (one-click validate + lock + advance on a stepper) is
|
|
234
|
+
[FORM-DEV-GUIDE/04](FORM-DEV-GUIDE/04-INTERACTION-RECIPES.md) §16.
|
|
235
|
+
|
|
236
|
+
## Export — `.procesio` bundle (Transport)
|
|
237
|
+
|
|
238
|
+
```powershell
|
|
239
|
+
# names, ids, or "all" per type; credentials excluded by default; --dry-run to preview
|
|
240
|
+
python scripts/run-tool.py procesio export --profile account --workspace-id <ws> `
|
|
241
|
+
--data-models lazarusDM `
|
|
242
|
+
--processes "Lazarus Data process,Import excel products to pdf" `
|
|
243
|
+
--documents all `
|
|
244
|
+
--output C:\path\export.procesio
|
|
245
|
+
```
|
|
246
|
+
Requires `Workspace.Admin` (use the userpass `account` profile). Resolves
|
|
247
|
+
names→IDs against the scoped workspace, builds the selection, calls
|
|
248
|
+
`POST /api/Transport/export-entities`, and saves the raw `.procesio` file.
|
|
249
|
+
`--export-sensitive-data` includes credential secrets (off by default).
|
|
250
|
+
|
|
251
|
+
## `--workspace-id` (active workspace)
|
|
252
|
+
|
|
253
|
+
Every client-backed action takes `--workspace-id <guid>` — it sets the
|
|
254
|
+
`workspaceid` header, which **scopes a userpass session to a workspace** and
|
|
255
|
+
**overrides an api-key profile's** own workspace. This is how the userpass
|
|
256
|
+
`account` profile reaches owner/cross-workspace endpoints.
|
|
257
|
+
|
|
258
|
+
## Configuration
|
|
259
|
+
|
|
260
|
+
Base URLs are overridable per-profile (`--web-base` on `add-credential`) or via
|
|
261
|
+
environment:
|
|
262
|
+
|
|
263
|
+
| Setting | Default | Env override |
|
|
264
|
+
|---------|---------|--------------|
|
|
265
|
+
| Web API (also userpass login) | `https://webapi.procesio.app` | `PROCESIO_WEB_BASE` |
|
|
266
|
+
| Proxy/Auth API (legacy, unused for login) | `https://auth.procesio.app` | `PROCESIO_AUTH_BASE` |
|
|
267
|
+
|
|
268
|
+
**userpass login** is a form POST to `{web_base}/api/authentication` with header
|
|
269
|
+
`x-requested-by: playground-v1` and `client_id=procesio-ui` (both overridable per
|
|
270
|
+
profile via `--client-id` / a `requested_by` field). It returns the
|
|
271
|
+
`__Host-procesio.access` / `.refresh` cookies, which the tool caches and replays.
|
|
272
|
+
The legacy `auth.procesio.app` host is no longer used for login.
|
|
273
|
+
|
|
274
|
+
## I/O contract
|
|
275
|
+
|
|
276
|
+
JSON in / JSON out. Success → one JSON object on stdout, exit 0. Failure →
|
|
277
|
+
`{"error":{"code","message","details"}}` on stdout, non-zero exit. Stable error
|
|
278
|
+
codes: `auth_required`, `invalid_argument`, `permission_denied`, `not_found`,
|
|
279
|
+
`proxy_auth_failed`, `rate_limited`, `server_error`.
|
|
280
|
+
|
|
281
|
+
See [PROCESIO-AUTH-NOTES.md](PROCESIO-AUTH-NOTES.md) for the live-validated auth
|
|
282
|
+
findings (which keys work, the `workspaceid` requirement, the userpass host
|
|
283
|
+
caveat) and the full endpoint inventory.
|
|
284
|
+
|
|
285
|
+
## Start here: the rules that are not obvious
|
|
286
|
+
|
|
287
|
+
[**PROCESIO-USAGE-GUIDE.md**](PROCESIO-USAGE-GUIDE.md) indexes every rule the notes in
|
|
288
|
+
this folder mark as one: the places the platform does something defensible that reads
|
|
289
|
+
as a failure until you know it. A call succeeds, the status says finished, nothing is
|
|
290
|
+
logged, and the thing you asked for did not happen.
|
|
291
|
+
|
|
292
|
+
It is GENERATED from the notes, so it cannot drift from them and it holds no second
|
|
293
|
+
copy of any fact: it carries the rule and a link, and the reasoning stays in the note.
|
|
294
|
+
Regenerate it after changing a note:
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
python scripts/run-tool.py procesio usage-guide # write
|
|
298
|
+
python scripts/run-tool.py procesio usage-guide --check # is it stale?
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
To add a rule to it, mark the section in its note with a `⚠`. That marker is the
|
|
302
|
+
convention the guide reads, and it is applied to three of the twenty notes so far; the
|
|
303
|
+
guide lists the rest by name rather than pretending they hold nothing.
|
|
304
|
+
|
|
305
|
+
## Tool notes vs agent guidance
|
|
306
|
+
|
|
307
|
+
The notes in this folder document **how the tool works and why** (API behaviors,
|
|
308
|
+
DTO shapes, builder internals, platform gotchas) - for whoever maintains the tool:
|
|
309
|
+
[PHASE4-E2E-NOTES.md](PHASE4-E2E-NOTES.md), [PROCESIO-API-NOTES.md](PROCESIO-API-NOTES.md),
|
|
310
|
+
[PROCESIO-AUTH-NOTES.md](PROCESIO-AUTH-NOTES.md), [DTO-SUBTOOLS-NOTE.md](DTO-SUBTOOLS-NOTE.md),
|
|
311
|
+
[PROCESIO-SEND-EMAIL-NOTES.md](PROCESIO-SEND-EMAIL-NOTES.md),
|
|
312
|
+
[PROCESIO-METERING-NOTES.md](PROCESIO-METERING-NOTES.md) (what a run costs, and why
|
|
313
|
+
`/api/Resources/used` is the wrong place to read it).
|
|
314
|
+
|
|
315
|
+
**How to build well in PROCESIO** (the build-and-test operating procedure, best
|
|
316
|
+
practices, which skills to use) is agent-level and lives separately in
|
|
317
|
+
`agents/procesio/` - the staged knowledge base for the PROCESIO agent. Keep that
|
|
318
|
+
boundary: tool mechanics here, methodology there.
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
## Front-end (designer-layer) validation + the save gate
|
|
322
|
+
|
|
323
|
+
`POST /api/Projects/validate` only checks the **runtime** layer and returns empty even
|
|
324
|
+
when the designer would REFUSE to save. The designer's client-side "Process Errors" panel
|
|
325
|
+
is a separate check of the **designer layer** (`customData`) with no server endpoint.
|
|
326
|
+
|
|
327
|
+
- **`process-fe-validate --id <id>`** replicates that check offline: unconnected actions,
|
|
328
|
+
missing Start/Stop, empty node names, required-empty fields, leftover placeholders, bad
|
|
329
|
+
number/integer values, out-of-range limits, duplicate/primitive-named variables, and
|
|
330
|
+
unmapped required subprocess inputs. `clean=true` when there are no blocking errors.
|
|
331
|
+
Data-type mismatches come back as (non-blocking) `warnings`. Add `--include-be` to also
|
|
332
|
+
run the API validator, `--no-types` to skip the advisory type layer.
|
|
333
|
+
|
|
334
|
+
- **Auto-gate (no conscious decision needed):** every `process-create` and `process-edit`
|
|
335
|
+
now runs **FE validation first, then BE validation, then saves** — and *blocks* the save
|
|
336
|
+
(JSON error `validation_failed`, exit 2, with the full report) if either finds errors.
|
|
337
|
+
Pass `--force` to override the gate; `--dry-run` shows the validation report without
|
|
338
|
+
saving. Other components (form/document/…) are unaffected.
|
|
339
|
+
|
|
340
|
+
Rules live in `flowmodel/fevalidation.py` (pure) + `handlers/fevalidate.py` (live).
|
|
341
|
+
Full design + DTO↔FE-model quirks: `PROCESIO-FE-VALIDATION-NOTES.md`.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Schedule process-input security
|
|
2
|
+
|
|
3
|
+
This note records a live-observed security property of the PROCESIO schedule API.
|
|
4
|
+
It belongs beside the curated schedule handler because it describes the wire and
|
|
5
|
+
storage behavior of `/api/Schedules`, not one project's workflow.
|
|
6
|
+
|
|
7
|
+
## Observed contract
|
|
8
|
+
|
|
9
|
+
Observed in a bounded deployment trace on 2026-09-05; deployment identifiers and
|
|
10
|
+
private receipts are intentionally not published. These observations are not a
|
|
11
|
+
platform-wide retention guarantee or fresh runtime verification:
|
|
12
|
+
|
|
13
|
+
- values supplied in a schedule's `processInputs` are persisted as part of the
|
|
14
|
+
schedule definition;
|
|
15
|
+
- `GET /api/Schedules/{scheduleId}` returns those values without masking them;
|
|
16
|
+
- saving a schedule GET response, debug dump, transcript, screenshot, or report can
|
|
17
|
+
therefore disclose any token, password, API key, or other secret placed there;
|
|
18
|
+
- redacting a local artifact after the read does not undo disclosure to an already
|
|
19
|
+
captured transcript or external log;
|
|
20
|
+
- a claim that the clear value exists “only in a local protected file” is false while
|
|
21
|
+
the same value remains in a readable schedule definition.
|
|
22
|
+
|
|
23
|
+
The curated `get-schedule` action preserves the raw API DTO by default for backward-
|
|
24
|
+
compatible round-tripping. Use `get-schedule --redact-process-inputs` for ordinary
|
|
25
|
+
inspection and evidence; it copies the DTO while replacing each non-null returned
|
|
26
|
+
`processInputs[].value` with `[REDACTED]` and preserving null. This projection only
|
|
27
|
+
covers those fields, not arbitrary secrets elsewhere in the response. Generic
|
|
28
|
+
requests and raw get mode retain clear values; classify those reads before use.
|
|
29
|
+
|
|
30
|
+
## Required handling
|
|
31
|
+
|
|
32
|
+
1. Prefer a target process that resolves authentication through a named credential,
|
|
33
|
+
secret store, or other runtime reference instead of receiving a long-lived secret
|
|
34
|
+
as a literal schedule input.
|
|
35
|
+
2. When a literal secret is temporarily unavoidable, use a dedicated least-privilege,
|
|
36
|
+
rotatable value. Do not reuse a personal or broad administrative credential.
|
|
37
|
+
3. Pass a secret-bearing create/update payload through a protected `@file`, not inline
|
|
38
|
+
JSON that may enter shell history, process listings, or logs. Delete the temporary
|
|
39
|
+
file only after the write outcome is reconciled.
|
|
40
|
+
4. Restrict `Schedule.Read` and artifact access to principals that may read the secret.
|
|
41
|
+
5. Use `get-schedule --redact-process-inputs` for diagnostics and ordinary evidence.
|
|
42
|
+
Record permitted structural metadata, not literal values. Non-null values become
|
|
43
|
+
a marker, so their original types are not preserved by this projection.
|
|
44
|
+
6. After any accidental transcript, log, screenshot, or artifact exposure, treat the
|
|
45
|
+
value as disclosed and rotate it. Update every dependent hash, schedule input, and
|
|
46
|
+
protected local source as one reconciled change.
|
|
47
|
+
7. Under separate approval, verify that the old value is rejected and the new value
|
|
48
|
+
succeeds. A redacted structural read cannot prove which value was saved: use an
|
|
49
|
+
approved protected comparison for that claim without emitting either clear value.
|
|
50
|
+
Review retained evidence separately for possible exposure.
|
|
51
|
+
|
|
52
|
+
## Evidence boundary
|
|
53
|
+
|
|
54
|
+
A safe schedule-security claim needs all relevant storage boundaries:
|
|
55
|
+
|
|
56
|
+
- protected local source and its permissions;
|
|
57
|
+
- process definition or credential reference;
|
|
58
|
+
- schedule `processInputs` as a redacted structural summary;
|
|
59
|
+
- transcripts, logs, screenshots, exports, deployment manifests, and saved API reads;
|
|
60
|
+
- rotation or revocation proof after exposure.
|
|
61
|
+
|
|
62
|
+
A clean local-file sweep alone does not prove that the platform-side schedule copy or
|
|
63
|
+
an external transcript is clean.
|