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,242 @@
|
|
|
1
|
+
# PROCESIO instance-history API — notes
|
|
2
|
+
|
|
3
|
+
How run history is read (endpoints + native actions), and the traps. Generalized
|
|
4
|
+
API facts; no client data. Measured live against Internal-PROD, 28/08/2026.
|
|
5
|
+
|
|
6
|
+
## The endpoints (contract + measured shapes)
|
|
7
|
+
|
|
8
|
+
- **`GET /api/Projects/{id}/history`** (`get-projects-by-id-history`) — finished,
|
|
9
|
+
non-archived instances of a process, in a **time window**. Query: `pageNumber`,
|
|
10
|
+
`pageItemCount` (both required), `filter` (`ProcessTimeSpanFilterType`, default
|
|
11
|
+
`Last30Days=5`), `monthFilter` (with `CertainMonth=14`).
|
|
12
|
+
- **`GET /api/Projects/{id}/instances`** (`get-projects-by-id-instances`) — **live**
|
|
13
|
+
runtime instances only. Query: paging + `filterStatus` (repeatable `FlowStatus`).
|
|
14
|
+
No date filter.
|
|
15
|
+
- **`GET /api/Projects/{id}/instances/count`** — returns `{"result": <int>}`.
|
|
16
|
+
- **`GET /api/Projects/{id}/archive`** — archived (Cassandra) instances, same query
|
|
17
|
+
as `/history`. Hidden from Swagger; reachable.
|
|
18
|
+
- **`GET /api/Projects/instances/{id}/status`** (`get-instance-status`) — the
|
|
19
|
+
**primary result reader**. `flowTemplateId` required; `isArchived`/`getActions`/
|
|
20
|
+
`getVariables`/`getInternalVariables`/`addExtras` default true. Returns
|
|
21
|
+
`{"instance": {...}}`.
|
|
22
|
+
Status-poll cost (changed in v3.0.0, 2026-10): `addExtras=true` costs 2-6 extra backend
|
|
23
|
+
look-ups per call (starter name, webhook, schedule, form names, resource usage). A poll
|
|
24
|
+
loop that only reads `status` should send all four flags as `false` and fetch the values
|
|
25
|
+
once at the end (the tool's `run-process` poll does this, then reads `/output`).
|
|
26
|
+
|
|
27
|
+
**List envelope:** `{result:{totalItemCount, pageNumber, pageItemCount, pageItems[]}}`.
|
|
28
|
+
Read `totalItemCount`, not the row count, to know the true size (page cap hides the rest).
|
|
29
|
+
|
|
30
|
+
**Paging past the end (changed in v3.0.0, 2026-10).** A `pageNumber` beyond the last page
|
|
31
|
+
no longer returns an empty page: it returns the LAST page again, and `pageNumber` in the
|
|
32
|
+
envelope echoes the page actually served. A paging loop over `/instances`, `/history` or
|
|
33
|
+
`/archive` must stop at `ceil(totalItemCount / <requested page size>)` (use the size you
|
|
34
|
+
sent, not the echoed `pageItemCount`, which shrinks to the total on page 1); waiting for an
|
|
35
|
+
empty page never terminates while rows exist. With `totalItemCount: 0` and `pageNumber > 1`
|
|
36
|
+
the envelope can report `pageNumber: 0`.
|
|
37
|
+
|
|
38
|
+
## Traps (each cost a real diagnosis)
|
|
39
|
+
|
|
40
|
+
- ⚠ **`filter` values are calendar buckets, not rolling windows.** `LastYear=13` is the
|
|
41
|
+
**previous calendar year**, not "last 12 months"; `ThisYear=8` is the current year.
|
|
42
|
+
A `/history` read with the wrong `filter` returns a well-formed **all-zero envelope
|
|
43
|
+
indistinguishable from "no history exists."** Runs in the current year need `filter=8`;
|
|
44
|
+
the endpoint default is `Last30Days=5`. Probe more than one window before concluding empty.
|
|
45
|
+
- ⚠ **`/instances/count` and `/instances` report different tiers.** The count can equal
|
|
46
|
+
the **history** total while the live `/instances` list is **empty** (finished runs have
|
|
47
|
+
left the live tier). For finished runs read `/history` (right window), not `/instances`.
|
|
48
|
+
- ⚠ **A history/instance list ROW carries no variables.** camelCase, ~26 fields: identity
|
|
49
|
+
= `id` (instance id) + `parentId` (the process id) + `title` + trigger (`formName` /
|
|
50
|
+
`webhookName` / `scheduleName`); timing = `createdOn` / `updatedOn` / `timeConsumed` /
|
|
51
|
+
`totalTimeConsumed` / `actionsConsumed`; `status` = `FlowStatus` (50 `STATUS_FINISH`,
|
|
52
|
+
40 `STATUS_RUNNING_WITH_ERRORS`, 6 `STATUS_STOP_BY_USER`). The **outcome is not in the
|
|
53
|
+
row** — read it per instance from `/status`.
|
|
54
|
+
- ⚠ **`/status` `instance.variables[]` is VariableDto SCHEMA, not runtime values on a
|
|
55
|
+
historical read.** Each element has `id, name, type` (10 INPUT / 20 PROCESS / 30 OUTPUT /
|
|
56
|
+
40 SYSTEM / 50 AUTO),
|
|
57
|
+
`dataType, isList, isError, isRequired, defaultValue` — **no `value` field**.
|
|
58
|
+
Type 50 AUTO (new in v3.0.0, 2026-10) is engine-written and read-only: the engine creates
|
|
59
|
+
it on the INSTANCE from action settings meant for it, named `{ActionName}_{PropertyName}`
|
|
60
|
+
(suffix `_2`, `_3` on a clash, 64-char cap), with the value in `defaultValue`. Today only
|
|
61
|
+
Call Subprocess uses it (e.g. `Call_Subprocess_ChildInstanceId`, plus a child instance id
|
|
62
|
+
list). AUTO and SYSTEM variables are always returned on instance / history / archive reads
|
|
63
|
+
(no `getInternalVariables` needed) and survive data-retention cleanup; PROCESS (20) values
|
|
64
|
+
are still deleted by it. Clients cannot create or retype either. So a past
|
|
65
|
+
run's `/status` gives the run record + the variable *definitions*; the concrete output
|
|
66
|
+
*values* are not on that path (use `isArchived=true` or the `Get Instance Outputs`
|
|
67
|
+
action). `/output` (`GetInstanceOutput`) is deprecated ("Not used by FE+BE"); prefer
|
|
68
|
+
`/status`. Casing: **live reads are camelCase; export bundles are PascalCase** — running
|
|
69
|
+
one shape's keys against the other yields a census of zeros.
|
|
70
|
+
|
|
71
|
+
## Reading history from INSIDE a flow — binding matters
|
|
72
|
+
|
|
73
|
+
- ✅ **Native actions read run history with NO credential and NO store binding**
|
|
74
|
+
(`isProcesioAction=true`, `credential_params=0`):
|
|
75
|
+
- **`Get Recent Instances`** (`cf514e01-bd19-3b48-8e58-db786c0d7fd2`) — recent instances,
|
|
76
|
+
status filter ALL/1/6/30/50/40, optional process-id list.
|
|
77
|
+
- **`Count Recent Instances`** (`d42b8056-4cba-d34d-819c-00295ef66d53`).
|
|
78
|
+
- **`Get Instance Outputs`** (`98ab31ca-1dd2-fb47-bde7-40171612e4b1`) — a specific
|
|
79
|
+
instance's OUTPUT variables by name (needs flow + instance id + output selection).
|
|
80
|
+
- Their process-template-id list is **optional**: *"If this list is null or empty … the
|
|
81
|
+
entire workspace"* (`docs_info/Procesio Platform Actions.json`). So a flow reads its own
|
|
82
|
+
workspace's runs/counts/outputs with no foreign binding — the only ids are the pack's own.
|
|
83
|
+
- ⚠ **Call API to the platform's OWN REST API needs a bound REST credential.** `Call API`
|
|
84
|
+
v1/v2/v3 carry a **required** `credentials` param; only the legacy `Call API`
|
|
85
|
+
(`cd8bd0bc-9c9c-476c-b16e-975acde804de`) makes it optional — and the history endpoints
|
|
86
|
+
require a Bearer JWT, so a credential-less legacy call reaches them unauthenticated and
|
|
87
|
+
fails. A REST credential is a per-workspace, id-bound object that does not travel with an
|
|
88
|
+
exported pack. **To read run history binding-free, use the native actions, not Call API.**
|
|
89
|
+
|
|
90
|
+
## Retention — how long a record lives
|
|
91
|
+
|
|
92
|
+
- **Customer process data: default UNLIMITED**, configurable per Master Workspace and per
|
|
93
|
+
process (security refs `07-data-protection-gdpr.md`, `13-questionnaire-template.md`). The
|
|
94
|
+
2-week / 7-day figures are platform **logs** and **backups**, not run data.
|
|
95
|
+
- Per-process **`DataRetentionPolicyDto`** = `{deleteOnSuccess, deleteOnError,
|
|
96
|
+
deleteOnStopped}`, each `FlowDataRetentionType` (`Never=0`, `AtEndOfRuntime=1`,
|
|
97
|
+
`AtMoveToHistory=2`). `PATCH /api/Projects/{id}/dataRetention` sets it;
|
|
98
|
+
`DELETE /api/Projects/instances/{id}/dataRetention` deletes an instance's data.
|
|
99
|
+
A flow/instance with `DataRetention: null` inherits the workspace default (unlimited).
|
|
100
|
+
- **HIPAA Mode** is opt-in: "Controlled data retention + secure output retrieval"
|
|
101
|
+
(`08-application-security.md`) — can delete/secure outputs when enabled.
|
|
102
|
+
- Tiers: live `/instances` → `/history` (non-archived, windowed) → `/archive` (Cassandra,
|
|
103
|
+
`isArchived=true`). Tier moves are storage progression, **not deletion by default**.
|
|
104
|
+
- **Consequence for a run-history feature:** history is durable by default, so it can back a
|
|
105
|
+
log — but a customer's per-workspace/per-process retention policy or HIPAA Mode can delete
|
|
106
|
+
it, and a silently-aged-out history turns "did we process this?" into a confident wrong "no".
|
|
107
|
+
|
|
108
|
+
### Process-History v3.0.0 fixes (2026-10, shipped without an announcement)
|
|
109
|
+
|
|
110
|
+
- A failed history insert no longer deletes the runtime row. Before, such an instance vanished
|
|
111
|
+
from BOTH `/instances` and `/history`; an instance missing from both on an older run may be
|
|
112
|
+
this defect, not retention.
|
|
113
|
+
- A retry of the move no longer overwrites the archived variables with an empty list.
|
|
114
|
+
- Instances move from `/instances` to `/history` faster, so the window in which a fresh run is
|
|
115
|
+
visible only in `/instances` is shorter. Still read both tiers before calling a run unlisted.
|
|
116
|
+
|
|
117
|
+
## `Get Recent Instances` at RUNTIME — measured, and it corrects the action doc
|
|
118
|
+
|
|
119
|
+
Executed live (E-166); two documented behaviours did **not** reproduce, so verify before you
|
|
120
|
+
rely on them:
|
|
121
|
+
|
|
122
|
+
- **It is a RECENT-WINDOW read.** A process's older *finished* runs read as `griTotal 0`
|
|
123
|
+
until a fresh run appears, then the fresh one shows. A run-history view MUST set the window
|
|
124
|
+
deliberately (default `Last30Days`); trusting the default to reach back far enough returns
|
|
125
|
+
a well-formed zero for runs that really happened (the census-of-zeros, on the native action
|
|
126
|
+
now, not only the `/history` calendar bucket).
|
|
127
|
+
- **A single process id filters correctly** in EITHER `Select Process` or `Process Template
|
|
128
|
+
Id`. The Result rows carry `{Id, Status, UpdatedOn}` **only — no `parentId`/title**, so you
|
|
129
|
+
cannot tell processes apart per-row; the *filter value* is the only scoping.
|
|
130
|
+
- ⚠ **A LIST value in the process filter FAULTS at runtime.** A two-element id list
|
|
131
|
+
(`[pidA, pidB]`) in either param validates and `put-projects` fine, but the run returns
|
|
132
|
+
`griTotal = null` / 0 rows (a fault, not "0 matches") — tested with both processes freshly
|
|
133
|
+
run, so not a window effect. The friendly builder DSL additionally rejects a list literal at
|
|
134
|
+
the config-schema layer and a variable binding at back-end validation.
|
|
135
|
+
- ⚠ **An omitted / null filter returns 0 — NOT the whole workspace.** The action doc's "if
|
|
136
|
+
this list is null or empty … the entire workspace" did not reproduce for an omitted filter.
|
|
137
|
+
- **Therefore: to show N processes' histories, do N single-id reads and union them** — not one
|
|
138
|
+
list value, not the null=whole-workspace shortcut. (Bounded residual: the designer's own
|
|
139
|
+
multi-select picker may store a Value shape the action accepts that a bare id-list does not;
|
|
140
|
+
untested.) Reading a past run's OUTPUT *values* back works — via `/status` `defaultValue`
|
|
141
|
+
and `/output` `result.variable[<name>]`, not gated by `isArchived` (E-164 F-1310).
|
|
142
|
+
|
|
143
|
+
## Capturing a run's output — capture it LIVE, don't count on reading it back
|
|
144
|
+
|
|
145
|
+
- ⚠ **`run-process` (POST /api/Projects/{id}/run) is fire-and-forget: it returns only
|
|
146
|
+
`{instanceId}` and launches asynchronously.** To get the run's output in one call pass
|
|
147
|
+
**`--synchronous`** (`run-process --id … --synchronous --timeout N`) — it polls to a terminal
|
|
148
|
+
status and returns `{instanceId, status, variable{<name>: <value>}, error}`. Without it you get
|
|
149
|
+
the id and nothing else. `run-process-with-file` already publishes → uploads → launches →
|
|
150
|
+
**polls** → returns that same output shape, so it needs no flag.
|
|
151
|
+
- ⚠ **A finished instance's output can be UNREADABLE afterwards, so capture at run time.**
|
|
152
|
+
Measured 01/09/2026 on finished scratch instances (status 50, minutes old): `/status`
|
|
153
|
+
(`get-instance-status`) returned **HTTP 400 / statusCode 450 "Database requested information not
|
|
154
|
+
found"** *even with `flowTemplateId` supplied*, and `/output` (`get-instance-output`) returned
|
|
155
|
+
**HTTP 500 wrapping 403** (it is the deprecated path). This does **not** contradict E-164's
|
|
156
|
+
"past-run values readable via `/status` `defaultValue`" as a rule — that was measured on a
|
|
157
|
+
deployed card, likely inside its retention/live window — but it shows the read-back is **not
|
|
158
|
+
guaranteed** for an arbitrary finished instance (retention policy, elapsed window, or workspace
|
|
159
|
+
tier can take it away). **The reliable pattern: capture the output synchronously as the run
|
|
160
|
+
finishes** (`--synchronous` / `run-process-with-file`); treat a later `/status` read-back as a
|
|
161
|
+
best-effort bonus, not the capture path. The list-instances row (identity + `status` + timing) is
|
|
162
|
+
always there to prove a run landed; the run's *values* are not.
|
|
163
|
+
|
|
164
|
+
## Only FORM-launched instances are LISTED; API-launched ones are only COUNTED
|
|
165
|
+
|
|
166
|
+
> ⚠⚠ **CONTRADICTED 2026-09-16 — re-measure before relying on this section.** Runs launched
|
|
167
|
+
> through `POST /api/Projects/{id}/run` (synchronous and asynchronous) and through an anonymous
|
|
168
|
+
> webhook launch WERE listed: they appeared in `…/instances` first and then in `…/history`
|
|
169
|
+
> within minutes, in three workspaces, with and without recording enabled. The rows move
|
|
170
|
+
> between tiers on a timer, so a list read a few minutes after a run can show nothing in
|
|
171
|
+
> `/instances` while `/history` holds the run. The most likely explanation of the reading
|
|
172
|
+
> below is that tier move, not a route-dependent listing rule; that explanation is inferred,
|
|
173
|
+
> not measured. Always read `/instances` AND `/history` before concluding a run is unlisted.
|
|
174
|
+
|
|
175
|
+
Verified live on one flow, both ways, same day:
|
|
176
|
+
|
|
177
|
+
| launch route | `…/instances/count` | `…/instances` (list) | `Get Recent Instances` |
|
|
178
|
+
|---|---|---|---|
|
|
179
|
+
| process API (`/api/Projects/{id}/run`, publish→launch) | 41 | `totalItemCount: 0`, `pageItems: []` | `[]` |
|
|
180
|
+
| form API (`/api/FormProcess/…` — what a browser does) | +1 | the run, with `formName` populated | the run |
|
|
181
|
+
|
|
182
|
+
The listed row carries `formName`, `actionsConsumed`, `timeConsumed` and the submitter's
|
|
183
|
+
name — fields an API launch has no value for. That is the tell: the history list is a record
|
|
184
|
+
of **form submissions**, not of flow executions.
|
|
185
|
+
|
|
186
|
+
**Consequences.**
|
|
187
|
+
|
|
188
|
+
- A run-history view tested only through the process API reads as permanently empty, and the
|
|
189
|
+
natural conclusion — "the history flow is broken" — is wrong. Nothing is broken; the query
|
|
190
|
+
is correct and the store genuinely holds no listable rows yet.
|
|
191
|
+
- `Get Recent Instances` returning `[]` while `Count Recent Instances` returns a positive
|
|
192
|
+
number is not a contradiction and not a bug. Count and list are answering different
|
|
193
|
+
questions.
|
|
194
|
+
- **Acceptance for any card shipping a run-history view must include one submission through
|
|
195
|
+
`run-form-with-files`.** Without it the view cannot be distinguished from a broken one, and
|
|
196
|
+
a mockup render will fill the gap in review — which is exactly how a fabricated "-LIVE"
|
|
197
|
+
view gets shipped.
|
|
198
|
+
|
|
199
|
+
Generalises: where a platform exposes both a machine route and a UI route to the same
|
|
200
|
+
action, the audit trail may only record the UI route. Test the route the user will take.
|
|
201
|
+
|
|
202
|
+
## The three response shapes, measured field-by-field (10/09/2026)
|
|
203
|
+
|
|
204
|
+
Measured against a scratch workspace on Internal-PROD. Field NAMES only; no values recorded.
|
|
205
|
+
These are the shapes anything that pre-fills a diagnostic bundle from the product has to bind to.
|
|
206
|
+
|
|
207
|
+
**Envelope:** `GET /api/Projects/instances/{id}/status` returns `{"result": {"instance": {…}}}`.
|
|
208
|
+
|
|
209
|
+
**`instance` — 33 fields:** `actions, actionsConsumed, active, canvasData, createdBy, createdById,
|
|
210
|
+
createdOn, currentActionId, customResponse, dataRetention, debugMode, description, firstName, formName,
|
|
211
|
+
id, isNotification, isValid, lastName, parentFlow, parentId, scheduleName, status, timeConsumed,
|
|
212
|
+
timeout, title, updatedBy, updatedById, updatedOn, variables, webhookName, webhooks, workspaceId,
|
|
213
|
+
workspaceName`.
|
|
214
|
+
|
|
215
|
+
**`instance.actions[]` — 19 fields:** `actionName, actionTemplateName, breakPoint, category, customData,
|
|
216
|
+
errorMessage, events, flowId, id, isDisabled, isTestable, parameters, parentId, ports, status,
|
|
217
|
+
templateId, testValues, variableErrorId`.
|
|
218
|
+
→ **The error lives on the ACTION, not on the instance.** Select failed actions as those whose
|
|
219
|
+
`errorMessage` is non-empty; `variableErrorId` names the error-port variable. `currentActionId` on the
|
|
220
|
+
instance points at the action in flight.
|
|
221
|
+
|
|
222
|
+
**`instance.variables[]` — 9 fields:** `contextId, dataType, defaultValue, id, isError, isList,
|
|
223
|
+
isRequired, name, type`. **No `value` field**, confirming that a historical read yields the variable
|
|
224
|
+
SCHEMA and not runtime values. Values need the `Get Instance Outputs` native action or a synchronous run.
|
|
225
|
+
`type` takes 10 INPUT / 20 PROCESS / 30 OUTPUT / 40 SYSTEM / 50 AUTO (50 added in v3.0.0, 2026-10:
|
|
226
|
+
engine-written, value in `defaultValue`, always returned, survives retention cleanup; see the
|
|
227
|
+
Traps section above). **Measured live in prod:** on 2026-10-21 the engine already created these variables with the new readable names (`Call_Subprocess_InstanceId`, `Call_Subprocess_ChildInstanceId` holding the child's id, `Call_Subprocess_ChildInstanceIdList`) but typed them 20 (PROCESS), because the Call Subprocess template still served those settings as `ignore`. From 2026-10-22 the template serves `auto` and new runs type `Call_Subprocess_ChildInstanceId` and `Call_Subprocess_ChildInstanceIdList` as **50 (AUTO)**, holding the child's id; `Call_Subprocess_InstanceId` stays 20 because its setting is still `ignore`. Instances started before the fix keep type 20, so a reader that must cover older history should match by NAME, not by `type == 50`. Survival through data-retention cleanup is not verified yet.
|
|
228
|
+
|
|
229
|
+
**`/history` row — 26 fields:** as listed earlier in this note, plus confirmed presence of
|
|
230
|
+
**`currentActionId` and `workspaceId` on the row itself**, so a sweep can shortlist candidates without a
|
|
231
|
+
per-instance `/status` call. The outcome is still not on the row.
|
|
232
|
+
|
|
233
|
+
### ⚠ There is no version anywhere on either object
|
|
234
|
+
|
|
235
|
+
`instance` has no version-shaped key, and `GET /api/Projects/{id}` returns `{result:{flow:{…}}}` whose 27
|
|
236
|
+
keys contain none either. `updatedOn` / `updatedBy` / `updatedById` record **that** a flow was edited and
|
|
237
|
+
**by whom**, never **what** changed: no endpoint returns a diff, a revision or a change log.
|
|
238
|
+
|
|
239
|
+
Generalises: **a record that carries an "updated" timestamp and an author is not a version history, and
|
|
240
|
+
treating it as one turns "what changed?" into an unanswerable question at exactly the moment it is
|
|
241
|
+
asked.** Any workflow whose next step depends on the previous definition must capture that definition
|
|
242
|
+
itself at the time it runs, because the platform will not reconstruct it afterwards.
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# PROCESIO metering — where run cost actually lives, and where it does not
|
|
2
|
+
|
|
3
|
+
How to read what a process run consumed. Written after an attempt to measure the
|
|
4
|
+
cost of a long-running run found the obvious endpoint empty and a better one
|
|
5
|
+
undocumented. Auth/connection mechanics stay in
|
|
6
|
+
[PROCESIO-AUTH-NOTES.md](PROCESIO-AUTH-NOTES.md).
|
|
7
|
+
|
|
8
|
+
> ## ⚠ CORRECTION, 31/08/2026 — READ THIS BEFORE §2
|
|
9
|
+
>
|
|
10
|
+
> **§2 below was wrong about what the per-instance figures mean, and the error
|
|
11
|
+
> was the expensive kind: it named a live-looking instrument as the fallback for
|
|
12
|
+
> a dead one.** Controlled measurement on an unmetered workspace, with a positive
|
|
13
|
+
> control on every reading:
|
|
14
|
+
>
|
|
15
|
+
> | what was done | what the platform recorded |
|
|
16
|
+
> |---|---|
|
|
17
|
+
> | 100,001 ms of busy loop inside Node actions, 5 runs | **31 ms** total |
|
|
18
|
+
> | a Call API blocked for 30,000 ms by the callee | **14 ms** |
|
|
19
|
+
> | a Call API blocked for 120,000 ms | **8 ms** |
|
|
20
|
+
> | a Call API blocked for 300,000 ms | **15 ms** |
|
|
21
|
+
>
|
|
22
|
+
> `timeConsumed` is **not** wall-clock occupancy and does **not** include time
|
|
23
|
+
> spent waiting on a reply. It is flat in the single-to-low-double-digit
|
|
24
|
+
> milliseconds whatever the action does, and `timeConsumed == totalTimeConsumed`
|
|
25
|
+
> in every reading — including a five-minute wait, where §2 predicts the widest
|
|
26
|
+
> divergence. Treat both fields as **per-action orchestration overhead**, not as
|
|
27
|
+
> a measure of work.
|
|
28
|
+
>
|
|
29
|
+
> **The rule this leaves.** On a workspace with `subscriptionType: null` there is
|
|
30
|
+
> no endpoint that prices a run: the quota counter is dead (§1), the per-instance
|
|
31
|
+
> figures are blind to compute and to waiting, and the per-process endpoints
|
|
32
|
+
> return empty. If a decision needs the cost of a long wait, it cannot be
|
|
33
|
+
> measured on an unmetered account — say so and name it as a blocker, rather than
|
|
34
|
+
> substituting a number from an instrument that has not been shown to track the
|
|
35
|
+
> work. **Prove the instrument moves with the work before believing any figure it
|
|
36
|
+
> reports** — the same rule §1 states for the quota counter applies to its
|
|
37
|
+
> replacement, and skipping that step is exactly how the fallback was adopted.
|
|
38
|
+
>
|
|
39
|
+
> The instance-level fields remain useful for what they DO report reliably:
|
|
40
|
+
> `actionsConsumed` (an action count) and the existence and status of an instance.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 1. `/api/Resources/used` is the QUOTA, and it may carry no consumption at all
|
|
45
|
+
|
|
46
|
+
`GET /api/Resources/used` returns the workspace's time budget:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{"result": {"subscriptionType": null, "price": 0.0,
|
|
50
|
+
"time": {"consumed": 0, "masterConsumed": 0, "canExceedPaidTime": true,
|
|
51
|
+
"limit": {"soft": 36000000, "hard": 36000000},
|
|
52
|
+
"notifyThreshold": 28800000},
|
|
53
|
+
"average": {"platform": {"total": 0, "internal": 0, "external": 0}, "custom": 0},
|
|
54
|
+
"expirationDate": "...", "autoRenewable": true}}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**The budget is published even when nothing is counted against it.** On a workspace
|
|
58
|
+
with **`subscriptionType: null`** every consumption field stays at `0` — before a
|
|
59
|
+
run, after it, and after many runs across an hour. It is not a settling lag and it
|
|
60
|
+
is not a disabled recorder: `GET /api/ResourceTrackingConfig` reports
|
|
61
|
+
**`isRecordingEnabled: true`** on the same workspace.
|
|
62
|
+
|
|
63
|
+
**The trap:** the endpoint answers `200` with a plausible-looking body, so a
|
|
64
|
+
before/after diff reads as "this run cost nothing" rather than "this endpoint does
|
|
65
|
+
not measure". **Never infer cost from a zero delta here.** Prove the counter moves
|
|
66
|
+
at all before interpreting any reading from it; if `subscriptionType` is null,
|
|
67
|
+
expect it not to.
|
|
68
|
+
|
|
69
|
+
Scope note: these endpoints are workspace-scoped. `MasterWorkspace.Read` variants
|
|
70
|
+
(`/api/Resources/used/subworkspaces`, `/api/Subscriptions`, the
|
|
71
|
+
`executionEnvironment/concurrency` analytics) return **403** to a sub-workspace
|
|
72
|
+
credential.
|
|
73
|
+
|
|
74
|
+
## 2. The real per-run meter is per INSTANCE, and it is in two places
|
|
75
|
+
|
|
76
|
+
Both are populated immediately and on any workspace, metered or not.
|
|
77
|
+
|
|
78
|
+
**`GET /api/Projects/{processId}/instances`** — each `pageItems[]` entry carries:
|
|
79
|
+
|
|
80
|
+
| Field | Meaning |
|
|
81
|
+
|---|---|
|
|
82
|
+
| `actionsConsumed` | actions executed in that instance |
|
|
83
|
+
| `timeConsumed` | **wall-clock occupancy**, including time spent waiting on a reply |
|
|
84
|
+
| `totalTimeConsumed` | **compute**, the time actions spent executing |
|
|
85
|
+
| `timeout` | the instance's own timeout setting |
|
|
86
|
+
|
|
87
|
+
**`GET /api/Resources/analytics/instances/{instanceId}/details`** — the same run
|
|
88
|
+
broken down by action type:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{"result": [{"instanceId": "...", "actionName": "Node",
|
|
92
|
+
"totalRuns": 15, "totalTime": 200, "actionExecutionTime": 198}]}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
`totalTime` ↔ `timeConsumed`; `actionExecutionTime` ↔ `totalTimeConsumed`.
|
|
96
|
+
|
|
97
|
+
### The naming is inverted from intuition — check it, do not trust it
|
|
98
|
+
|
|
99
|
+
**`totalTimeConsumed` is the SMALLER figure.** It is compute. `timeConsumed`, which
|
|
100
|
+
sounds like the subset, is the larger occupancy figure. Verify the pairing on a
|
|
101
|
+
known instance before building anything on it: read both endpoints for the same
|
|
102
|
+
instance id and confirm which number is larger.
|
|
103
|
+
|
|
104
|
+
### The two columns diverge exactly where a wait is
|
|
105
|
+
|
|
106
|
+
Occupancy minus compute is the time an action spent blocked. On a flow whose actions
|
|
107
|
+
are all local the two are nearly equal; on a Call API waiting for a reply they
|
|
108
|
+
separate sharply (observed: an action at `totalTime` 747 ms against
|
|
109
|
+
`actionExecutionTime` 5 ms). Across repeated runs **compute is stable and occupancy
|
|
110
|
+
is volatile**, and all the volatility sits in the calls that wait.
|
|
111
|
+
|
|
112
|
+
## 3. The two endpoints can permanently DISAGREE about the same instance
|
|
113
|
+
|
|
114
|
+
Observed on the run with the longest wait in a set: the details endpoint reported
|
|
115
|
+
fewer actions and a lower total than the instance list, and **the two never
|
|
116
|
+
converged** across re-reads minutes and then tens of minutes apart.
|
|
117
|
+
|
|
118
|
+
Worse for anyone testing for lag: **the details endpoint was stable across two reads
|
|
119
|
+
thirty seconds apart while still being incomplete.** Two matching reads are not proof
|
|
120
|
+
of settlement. Reconcile the two endpoints against each other rather than trusting a
|
|
121
|
+
repeat read of one.
|
|
122
|
+
|
|
123
|
+
## 4. Nested processes are metered SEPARATELY, and occupancy double-counts them
|
|
124
|
+
|
|
125
|
+
A process reaching another through **Call API** launches a **separate instance** with
|
|
126
|
+
its own `actionsConsumed` / `timeConsumed` / `totalTimeConsumed`. While the caller's
|
|
127
|
+
Call API waits, the callee is executing and billing its own instance.
|
|
128
|
+
|
|
129
|
+
Consequences:
|
|
130
|
+
|
|
131
|
+
- **Count the whole call tree, not the entry instance.** An entry process's action
|
|
132
|
+
count can be a fraction of the request's true total once its callees are added.
|
|
133
|
+
Comparing an entry instance's count against a whole-tree figure loses the
|
|
134
|
+
difference silently.
|
|
135
|
+
- **On the occupancy column the same stretch of time appears twice** — as the
|
|
136
|
+
caller's wait and as the callee's run. On the compute column it appears once.
|
|
137
|
+
|
|
138
|
+
## 5. What the vendor documents about which time is charged
|
|
139
|
+
|
|
140
|
+
From the PROCESIO docs (processing-time FAQ). **Documented, not verified by
|
|
141
|
+
measurement** — the endpoint that would confirm it is the one in §1:
|
|
142
|
+
|
|
143
|
+
- *"the processing time is consumed while waiting for an external service to reply
|
|
144
|
+
as a running process consumes resources on our infrastructure"* — **a blocking
|
|
145
|
+
external call is charged for the whole wait.**
|
|
146
|
+
- *"Delay action is counted only while during its processing. But for the period set
|
|
147
|
+
to delay... the action is not processing, and therefore this delay time is not
|
|
148
|
+
counted"* — **a parked Delay is exempt.**
|
|
149
|
+
- *"webhooks that trigger a process are not counted against the processing time"*.
|
|
150
|
+
- The stated platform average is **~100 ms per action**.
|
|
151
|
+
|
|
152
|
+
**The measurement trap this creates:** a Delay is the natural way to synthesise a
|
|
153
|
+
long run, and it is the one mechanism documented as exempt. Timing a Delay therefore
|
|
154
|
+
measures the exempt case and says nothing about a blocking call. **To measure what a
|
|
155
|
+
long external wait costs, the long run must be produced by a call that blocks**, not
|
|
156
|
+
by a Delay.
|
|
157
|
+
|
|
158
|
+
## 6. Timeouts
|
|
159
|
+
|
|
160
|
+
| Timeout | Value | Applies to |
|
|
161
|
+
|---|---|---|
|
|
162
|
+
| **Instance / process** | **none.** Per-instance `timeout: 0`; docs state a per-process timeout "is not possible" and the feature does not exist | nothing kills a long run |
|
|
163
|
+
| **Call API action** | min **60 s**, max **3600 s** | one HTTP call |
|
|
164
|
+
| **AI Decisional action** | 1–3600 s, default 60 s | one provider call |
|
|
165
|
+
| **Node action** | integer; throws on expiry | one script |
|
|
166
|
+
| **Synchronous launch** | `?runSynchronous=true&secondsTimeOut=N` (300 in the documented example, **no maximum stated**) | the caller's own wait |
|
|
167
|
+
|
|
168
|
+
A run is not bounded by the platform. It is bounded by whichever action timeout it
|
|
169
|
+
trips first.
|
|
170
|
+
|
|
171
|
+
## 7. Instance history is trimmed aggressively, and the two endpoints differ
|
|
172
|
+
|
|
173
|
+
Only a handful of instances per process survive. **Do not plan to read an
|
|
174
|
+
interesting run later** — capture its figures in the same script that launches
|
|
175
|
+
them.
|
|
176
|
+
|
|
177
|
+
Trimming is faster than "within days": rows have been observed ageing out of
|
|
178
|
+
`GET /api/Projects/{id}/instances` **within about eight minutes**, one by one,
|
|
179
|
+
with no new runs to displace them. The analytics **details endpoint outlived the
|
|
180
|
+
list** for the same instance, so the two have different retention and a missing
|
|
181
|
+
row in one is not proof the run is gone from the other.
|
|
182
|
+
|
|
183
|
+
## 9. Resource recording defaults to OFF on a new workspace
|
|
184
|
+
|
|
185
|
+
`GET /api/ResourceTrackingConfig` reports `isRecordingEnabled` per workspace, and
|
|
186
|
+
a freshly created workspace can arrive with it **false** and a zeroed `gid`. In
|
|
187
|
+
that state the analytics details endpoint returns an **empty array** while the
|
|
188
|
+
instance list still answers — so a zero from the details endpoint is confounded
|
|
189
|
+
between "not recorded" and "not consumed" until the flag is read.
|
|
190
|
+
|
|
191
|
+
Check the flag before interpreting any analytics zero.
|
|
192
|
+
`PUT /api/ResourceTrackingConfig/toggle/{true|false}` sets it (needs
|
|
193
|
+
`Workspace.Admin`) and creates the per-workspace record. Note that enabling it
|
|
194
|
+
does **not** make the figures track the work — see the correction at the top of
|
|
195
|
+
this file; it only makes the details endpoint answer at all.
|
|
196
|
+
|
|
197
|
+
## 8. Wall-clock measured by a polling harness is not the run
|
|
198
|
+
|
|
199
|
+
A harness that polls on an interval quantises to that interval: runs the platform
|
|
200
|
+
records at a few hundred milliseconds read as ~9 s against a 5 s poll. **Use the
|
|
201
|
+
platform's own figures for duration**, never the harness's elapsed time.
|