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,426 @@
|
|
|
1
|
+
# 05 — Custom stepper, step transitions, and the loader veil
|
|
2
|
+
|
|
3
|
+
The moving parts of a form that feels finished: a step indicator you control, a
|
|
4
|
+
transition that gives the step change a direction, a loader that hides the
|
|
5
|
+
renderer's rebuild, and entrance animation for the arriving controls.
|
|
6
|
+
|
|
7
|
+
All of it rests on one fact from [03](03-DOM-CONTRACT.md): **the renderer destroys
|
|
8
|
+
and rebuilds a step's controls (`v-if`) rather than hiding them.** You cannot
|
|
9
|
+
animate anything out. You can only animate the *container*.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Why replace the platform's stepper at all
|
|
14
|
+
|
|
15
|
+
The platform's `.form-builder--stepper--nav` renders only once the stepper's `steps`
|
|
16
|
+
config names the real step elements — while it holds placeholder names the page has
|
|
17
|
+
**no indicator at all**. And even when present, it offers no hook for progress
|
|
18
|
+
states, sonar pulses, or check marks.
|
|
19
|
+
|
|
20
|
+
Two valid strategies:
|
|
21
|
+
|
|
22
|
+
| Strategy | When |
|
|
23
|
+
|---|---|
|
|
24
|
+
| **Style the platform's nav** (`.form-builder--stepper--nav--item`, `.pds-c-step--header--circle`) | you only want colour/scale changes and want zero maintenance |
|
|
25
|
+
| **Draw your own rail and hide theirs** | you want full control over structure, states, labels, animation |
|
|
26
|
+
|
|
27
|
+
If you draw your own, hide theirs — do not leave both:
|
|
28
|
+
|
|
29
|
+
```css
|
|
30
|
+
.form-builder--stepper--nav { display: none !important; }
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
A common symptom of forgetting: "why is there a second, native stepper next to
|
|
34
|
+
mine?" — it appeared the moment the `steps` config was saved with real step names.
|
|
35
|
+
|
|
36
|
+
## 2. Build the rail — and steal its labels from the platform
|
|
37
|
+
|
|
38
|
+
```js
|
|
39
|
+
function ensureRail() {
|
|
40
|
+
var body = q('.form-builder--form-body');
|
|
41
|
+
if (!body) { return null; }
|
|
42
|
+
var rail = q('.ux-rail', body);
|
|
43
|
+
if (rail) { return rail; } // idempotent: build once
|
|
44
|
+
|
|
45
|
+
/* The native nav is hidden in CSS, but its LABELS are the form's own and stay
|
|
46
|
+
correct as steps are renamed — copy them onto the rail before replacing it,
|
|
47
|
+
rather than maintaining a second list that can drift. */
|
|
48
|
+
var nav = q('.form-builder--stepper--nav');
|
|
49
|
+
if (nav) {
|
|
50
|
+
var labels = all('.form-builder--stepper--nav--item', nav)
|
|
51
|
+
.map(function (it) { return String(it.textContent || '').trim(); })
|
|
52
|
+
.filter(Boolean);
|
|
53
|
+
if (labels.length === STEPS.length) {
|
|
54
|
+
labels.forEach(function (t, i) { STEPS[i].label = t; });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
rail = D.createElement('div');
|
|
59
|
+
rail.className = 'ux-rail';
|
|
60
|
+
rail.innerHTML =
|
|
61
|
+
'<div class="ux-rail__steps">' +
|
|
62
|
+
STEPS.map(function (s, i) {
|
|
63
|
+
return '<div class="ux-rail__step" data-i="' + i + '">' +
|
|
64
|
+
'<span class="ux-rail__dot">' + (i + 1) + '</span>' +
|
|
65
|
+
'<span class="ux-rail__label">' + s.label + '</span>' +
|
|
66
|
+
'</div>';
|
|
67
|
+
}).join('') +
|
|
68
|
+
'</div>';
|
|
69
|
+
|
|
70
|
+
body.insertBefore(rail, body.firstChild);
|
|
71
|
+
return rail;
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The label-copying is the load-bearing idea: your rail's labels come from **the
|
|
76
|
+
form's own configuration**, so renaming a step in the designer updates the rail
|
|
77
|
+
with no code change. The `length === STEPS.length` guard means a mismatch falls
|
|
78
|
+
back to your hard-coded labels instead of producing a shifted list.
|
|
79
|
+
|
|
80
|
+
## 3. Paint it
|
|
81
|
+
|
|
82
|
+
```js
|
|
83
|
+
function paintRail(active) {
|
|
84
|
+
var rail = ensureRail();
|
|
85
|
+
if (!rail) { return; }
|
|
86
|
+
// Unknown step: leave the rail exactly as it was rather than showing a wrong
|
|
87
|
+
// position. Wrong information is worse than a stale frame.
|
|
88
|
+
if (active < 0) { return; }
|
|
89
|
+
all('.ux-rail__step', rail).forEach(function (st, i) {
|
|
90
|
+
st.classList.toggle('is-done', i < active);
|
|
91
|
+
st.classList.toggle('is-current', i === active);
|
|
92
|
+
var dot = q('.ux-rail__dot', st);
|
|
93
|
+
if (dot) { dot.textContent = i < active ? '✓' : String(i + 1); }
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
CSS for the three states — circles and connectors only, no surrounding card:
|
|
99
|
+
|
|
100
|
+
```css
|
|
101
|
+
.ux-rail__steps { display: flex; align-items: flex-start; gap: 0; }
|
|
102
|
+
|
|
103
|
+
.ux-rail__step {
|
|
104
|
+
display: flex; flex-direction: column; align-items: center; gap: 8px;
|
|
105
|
+
flex: 1 1 0; min-width: 92px; position: relative; text-align: center;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* connector, drawn from this dot back to the previous one */
|
|
109
|
+
.ux-rail__step::before {
|
|
110
|
+
content: ""; position: absolute; top: 15px;
|
|
111
|
+
left: calc(-50% + 17px); width: calc(100% - 34px); height: 2px;
|
|
112
|
+
border-radius: 2px; background: var(--ux-line);
|
|
113
|
+
transition: background-color var(--ux-slow) var(--ux-ease);
|
|
114
|
+
}
|
|
115
|
+
.ux-rail__step:first-child::before { display: none; }
|
|
116
|
+
.ux-rail__step.is-done::before,
|
|
117
|
+
.ux-rail__step.is-current::before { background: var(--ux-accent); }
|
|
118
|
+
|
|
119
|
+
.ux-rail__dot {
|
|
120
|
+
position: relative; width: 32px; height: 32px; flex: 0 0 32px;
|
|
121
|
+
border-radius: 50%; display: flex; align-items: center; justify-content: center;
|
|
122
|
+
font-size: 13px; font-weight: 700;
|
|
123
|
+
color: var(--c-neutral--500); background: #fff; border: 2px solid var(--ux-line);
|
|
124
|
+
transition: background-color var(--ux-mid) var(--ux-ease),
|
|
125
|
+
border-color var(--ux-mid) var(--ux-ease),
|
|
126
|
+
color var(--ux-mid) var(--ux-ease),
|
|
127
|
+
box-shadow var(--ux-mid) var(--ux-ease);
|
|
128
|
+
z-index: 1; /* above the connector */
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.ux-rail__step.is-done .ux-rail__dot {
|
|
132
|
+
background: var(--ux-accent); border-color: var(--ux-accent); color: #fff; font-size: 15px;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.ux-rail__step.is-current .ux-rail__dot {
|
|
136
|
+
background: var(--ux-accent); border-color: var(--ux-accent); color: #fff;
|
|
137
|
+
box-shadow: 0 0 0 5px var(--ux-ring);
|
|
138
|
+
animation: ux-sonar 2.6s var(--ux-ease) infinite;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@keyframes ux-sonar {
|
|
142
|
+
0%, 100% { box-shadow: 0 0 0 5px var(--ux-ring); }
|
|
143
|
+
50% { box-shadow: 0 0 0 10px rgba(37, 120, 233, .06); }
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The connector is a `::before` on each step reaching *backwards* — that way the
|
|
148
|
+
first step simply suppresses it and no extra wrapper markup is needed. `z-index: 1`
|
|
149
|
+
on the dot keeps the line behind the circle.
|
|
150
|
+
|
|
151
|
+
## 4. The step transition: **leave → empty → arrive**
|
|
152
|
+
|
|
153
|
+
The renderer swaps the step's controls instantly, which reads as a jump. Fade the
|
|
154
|
+
container out before the swap, and let the arriving controls rise in.
|
|
155
|
+
|
|
156
|
+
```js
|
|
157
|
+
D.addEventListener('click', function (e) {
|
|
158
|
+
var btn = e.target && e.target.closest && e.target.closest('.pds-c-button');
|
|
159
|
+
if (!btn) { return; }
|
|
160
|
+
if (!btn.closest('.form-builder--stepper--buttons')) { return; }
|
|
161
|
+
|
|
162
|
+
/* The class is lifted on a TIMER, never on an observed mutation. Tying it to a
|
|
163
|
+
mutation left the container at opacity 0 for good whenever that mutation did
|
|
164
|
+
not arrive — an entire step rendered blank. A visual state must never depend
|
|
165
|
+
on an event that may not come. */
|
|
166
|
+
var box = q('.form-builder--stepper--container');
|
|
167
|
+
if (!box) { return; }
|
|
168
|
+
box.classList.add('ux-leaving');
|
|
169
|
+
clearTimeout(leaveTimer);
|
|
170
|
+
leaveTimer = setTimeout(endLeaving, 260);
|
|
171
|
+
}, false);
|
|
172
|
+
|
|
173
|
+
function endLeaving() {
|
|
174
|
+
clearTimeout(leaveTimer);
|
|
175
|
+
// Clear it wherever it sits: the renderer may have replaced the container.
|
|
176
|
+
all('.ux-leaving').forEach(function (el) { el.classList.remove('ux-leaving'); });
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```css
|
|
181
|
+
.form-builder--stepper--container {
|
|
182
|
+
transition: opacity 220ms var(--ux-ease), transform 220ms var(--ux-ease);
|
|
183
|
+
}
|
|
184
|
+
.form-builder--stepper--container.ux-leaving { opacity: 0; transform: translateY(8px); }
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Read that comment twice.** This is the single most expensive bug in this whole
|
|
188
|
+
guide: an entire step rendered blank, permanently, because the class that hid it
|
|
189
|
+
was removed only in response to a DOM mutation that sometimes never arrived. Any
|
|
190
|
+
class that makes something invisible needs an unconditional escape — a timer, a
|
|
191
|
+
ceiling, a sweep.
|
|
192
|
+
|
|
193
|
+
`endLeaving` clears the class **from every node that carries it** rather than from
|
|
194
|
+
the node it was added to, because the renderer may have swapped the container in
|
|
195
|
+
between. Holding a reference to a node across a rebuild is how state gets stranded.
|
|
196
|
+
|
|
197
|
+
### The arrival: a staggered rise
|
|
198
|
+
|
|
199
|
+
```css
|
|
200
|
+
.form-builder--stepper--container > .form-builder--element {
|
|
201
|
+
animation: ux-rise var(--ux-mid) var(--ux-ease-out) both;
|
|
202
|
+
}
|
|
203
|
+
.form-builder--stepper--container > .form-builder--element:nth-child(1) { animation-delay: 30ms; }
|
|
204
|
+
.form-builder--stepper--container > .form-builder--element:nth-child(2) { animation-delay: 80ms; }
|
|
205
|
+
.form-builder--stepper--container > .form-builder--element:nth-child(3) { animation-delay: 130ms; }
|
|
206
|
+
.form-builder--stepper--container > .form-builder--element:nth-child(n+4) { animation-delay: 180ms; }
|
|
207
|
+
|
|
208
|
+
@keyframes ux-rise {
|
|
209
|
+
from { opacity: 0; transform: translateY(10px); }
|
|
210
|
+
to { opacity: 1; transform: none; }
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
This needs **no JavaScript at all**. Because controls are recreated on every step
|
|
215
|
+
change, the animation re-fires by itself. Cap the stagger with `nth-child(n+4)` —
|
|
216
|
+
an uncapped `nth-child` ramp makes a twelve-field step take two seconds to appear.
|
|
217
|
+
|
|
218
|
+
## 5. The loader veil
|
|
219
|
+
|
|
220
|
+
Covers the card while the renderer destroys and rebuilds controls, so half-built
|
|
221
|
+
states (a label with no input) are never visible.
|
|
222
|
+
|
|
223
|
+
```js
|
|
224
|
+
function ensureVeil() {
|
|
225
|
+
var card = q('.form-builder--form');
|
|
226
|
+
if (!card) { return null; }
|
|
227
|
+
var v = q('.ux-veil', card);
|
|
228
|
+
if (v) { return v; }
|
|
229
|
+
v = D.createElement('div');
|
|
230
|
+
v.className = 'ux-veil';
|
|
231
|
+
v.innerHTML = '<div class="ux-veil__inner">' +
|
|
232
|
+
'<div class="ux-veil__drop"><span></span><span></span><span></span></div>' +
|
|
233
|
+
'<div class="ux-veil__text">Preparing the next step…</div>' +
|
|
234
|
+
'</div>';
|
|
235
|
+
card.appendChild(v);
|
|
236
|
+
return v;
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Two dismissal modes, and why both exist
|
|
241
|
+
|
|
242
|
+
```js
|
|
243
|
+
function showVeil(message, hold) {
|
|
244
|
+
var v = ensureVeil();
|
|
245
|
+
if (!v) { return; }
|
|
246
|
+
var t = q('.ux-veil__text', v);
|
|
247
|
+
if (t && message) { t.textContent = message; }
|
|
248
|
+
v.classList.add('is-on');
|
|
249
|
+
|
|
250
|
+
clearTimeout(veilTimer);
|
|
251
|
+
veilTimer = setTimeout(function () {
|
|
252
|
+
hideVeil();
|
|
253
|
+
if (hold && window.UXToast) {
|
|
254
|
+
window.UXToast('This is taking longer than usual. You can fill the fields in manually.', 'err');
|
|
255
|
+
}
|
|
256
|
+
}, hold ? 75000 : 2600); // HARD CEILING — always, in both modes
|
|
257
|
+
|
|
258
|
+
if (!hold) { settleThenHide(); }
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Lift the veil once the DOM has stopped changing for a beat — that is the actual
|
|
262
|
+
end of the rebuild, which no event reports. */
|
|
263
|
+
function settleThenHide() {
|
|
264
|
+
clearTimeout(veilQuiet);
|
|
265
|
+
veilQuiet = setTimeout(function () { hideVeil(); endLeaving(); }, 620);
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
- **Quiet-timer mode** (`hold` falsy) — for a step change. There is no event that
|
|
270
|
+
says "the rebuild finished", so the signal is *the DOM going quiet*. Every
|
|
271
|
+
mutation while the veil is up restarts the timer:
|
|
272
|
+
|
|
273
|
+
```js
|
|
274
|
+
var mo = new MutationObserver(function () {
|
|
275
|
+
schedule();
|
|
276
|
+
if (q('.ux-veil.is-on') || q('.ux-leaving')) { settleThenHide(); }
|
|
277
|
+
});
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
- **Held mode** (`hold` truthy) — for work whose end the DOM cannot announce, such
|
|
281
|
+
as a network call that takes seconds of silence. The quiet heuristic would lift
|
|
282
|
+
the veil almost immediately. A held veil is dismissed **explicitly by whoever
|
|
283
|
+
raised it**.
|
|
284
|
+
|
|
285
|
+
**Both modes have a hard ceiling.** A failed call must never strand the form behind
|
|
286
|
+
an opaque overlay; when the ceiling fires, the veil lifts *and the user is told
|
|
287
|
+
what to do instead*. Same principle as the leave-class timer: never let visibility
|
|
288
|
+
depend on something that might not happen.
|
|
289
|
+
|
|
290
|
+
```css
|
|
291
|
+
.ux-veil {
|
|
292
|
+
position: absolute; inset: 0; z-index: 20;
|
|
293
|
+
display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
|
|
294
|
+
border-radius: 20px;
|
|
295
|
+
background: rgba(247, 250, 254, .82);
|
|
296
|
+
backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
|
|
297
|
+
opacity: 0; pointer-events: none;
|
|
298
|
+
transition: opacity var(--ux-fast) linear;
|
|
299
|
+
}
|
|
300
|
+
.ux-veil.is-on { opacity: 1; pointer-events: all; }
|
|
301
|
+
|
|
302
|
+
/* The card is often taller than the viewport, so centring the indicator inside it
|
|
303
|
+
can park it below the fold. Sticky keeps it on screen wherever the reader is. */
|
|
304
|
+
.ux-veil__inner { position: sticky; top: 40vh; display: flex; flex-direction: column;
|
|
305
|
+
align-items: center; gap: 18px; }
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
The veil is `position: absolute` inside the card — which requires
|
|
309
|
+
`.form-builder--form { position: relative }` and **must not** use `overflow: hidden`
|
|
310
|
+
to clip its corners (that kills page scrolling — [03](03-DOM-CONTRACT.md) §5). Give
|
|
311
|
+
it the same `border-radius` as the card instead.
|
|
312
|
+
|
|
313
|
+
### The indicator itself — concentric ripples
|
|
314
|
+
|
|
315
|
+
```css
|
|
316
|
+
.ux-veil__drop { position: relative; width: 46px; height: 46px; }
|
|
317
|
+
|
|
318
|
+
.ux-veil__drop span {
|
|
319
|
+
position: absolute; inset: 0; border-radius: 50%;
|
|
320
|
+
border: 2px solid var(--ux-accent); opacity: 0;
|
|
321
|
+
animation: ux-ripple-out 1.6s var(--ux-ease-out) infinite;
|
|
322
|
+
}
|
|
323
|
+
.ux-veil__drop span:nth-child(2) { animation-delay: .4s; }
|
|
324
|
+
.ux-veil__drop span:nth-child(3) { animation-delay: .8s; }
|
|
325
|
+
|
|
326
|
+
@keyframes ux-ripple-out {
|
|
327
|
+
0% { transform: scale(.25); opacity: .9; }
|
|
328
|
+
100% { transform: scale(1); opacity: 0; }
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Three identical spans with staggered delays produce a continuous ripple from one
|
|
333
|
+
`@keyframes`. `transform` + `opacity` only, so it composites on the GPU.
|
|
334
|
+
|
|
335
|
+
### A determinate loader: measure, do not animate (verified 2026-10-22)
|
|
336
|
+
|
|
337
|
+
A looping sweep tells the reader nothing. A process-backed view can show real progress,
|
|
338
|
+
because every step of a form's RUN_PROCESS is a request the page makes:
|
|
339
|
+
|
|
340
|
+
| request (relative to the webapi host) | meaning |
|
|
341
|
+
|---|---|
|
|
342
|
+
| `POST /api/formProcess/{form}/{process}/publish` | the chain started |
|
|
343
|
+
| `POST /api/formProcess/{form}/{instance}/upload` | a file field is going up (XHR upload progress has real bytes) |
|
|
344
|
+
| `POST /api/formProcess/{form}/{instance}/launch?runSynchronous=…` | the process is running |
|
|
345
|
+
| `GET /api/formProcess/{form}/{process}/{instance}/variables` | the result is in |
|
|
346
|
+
|
|
347
|
+
How to build it:
|
|
348
|
+
|
|
349
|
+
1. In the parent-page runtime, wrap `XMLHttpRequest.prototype.open/send` and `fetch` once
|
|
350
|
+
(guard on a window flag). Record start, end and bytes (`progress` / `upload.progress`
|
|
351
|
+
events; for fetch, count a `res.clone().body` reader against `content-length`). Never let
|
|
352
|
+
the wrapper throw into the platform's request.
|
|
353
|
+
2. Backfill from `performance.getEntriesByType('resource')` (initiator `xmlhttprequest` /
|
|
354
|
+
`fetch`): the runtime installs about a second after render and can miss the first calls.
|
|
355
|
+
3. Split the bar into stages that end on real events: publish/launch → result → document
|
|
356
|
+
bytes downloaded and pages rendered (canvases in the viewer) → DOM quiet for ~450 ms. Only
|
|
357
|
+
the server-side wait has no signal; ease it on `1 - exp(-t/τ)` capped below the stage end,
|
|
358
|
+
so it never passes the next real milestone. Keep the displayed value monotonic.
|
|
359
|
+
4. Let later evidence close earlier stages (a rendered section means the chain finished,
|
|
360
|
+
whatever the network buffer caught), and keep the hard ceiling from above.
|
|
361
|
+
|
|
362
|
+
The same number can drive a thin bar in a custom header and the tab itself: a percentage
|
|
363
|
+
prefix in `document.title` and a canvas-drawn progress ring as the favicon
|
|
364
|
+
(`link[rel~="icon"]`). Both are outside Vue and safe to write.
|
|
365
|
+
|
|
366
|
+
## 6. State-change motion on controls
|
|
367
|
+
|
|
368
|
+
Every animation should be tied to a state change; nothing decorative should move on
|
|
369
|
+
its own except at most one slow ambient effect.
|
|
370
|
+
|
|
371
|
+
```css
|
|
372
|
+
/* Error: one short shake, then a steady state. */
|
|
373
|
+
.pds-c-input-group--wrapper--is-error {
|
|
374
|
+
background: #FFF7F7;
|
|
375
|
+
animation: ux-shake 400ms var(--ux-ease) both;
|
|
376
|
+
}
|
|
377
|
+
@keyframes ux-shake {
|
|
378
|
+
0%, 100% { transform: translateX(0); }
|
|
379
|
+
20% { transform: translateX(-4px); }
|
|
380
|
+
45% { transform: translateX(3px); }
|
|
381
|
+
70% { transform: translateX(-2px); }
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/* A message arriving */
|
|
385
|
+
@keyframes ux-msg-in { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
|
|
386
|
+
|
|
387
|
+
/* A checkbox/radio committing */
|
|
388
|
+
@keyframes ux-check { 0% { transform: scale(.7); } 60% { transform: scale(1.2); } 100% { transform: scale(1); } }
|
|
389
|
+
|
|
390
|
+
/* A sweep across the primary action on hover */
|
|
391
|
+
.pds-c-button--solid-primary::after {
|
|
392
|
+
content: ""; position: absolute; top: 0; left: -140%; width: 55%; height: 100%;
|
|
393
|
+
background: linear-gradient(100deg, transparent, rgba(255,255,255,.3), transparent);
|
|
394
|
+
transform: skewX(-18deg); pointer-events: none;
|
|
395
|
+
}
|
|
396
|
+
.pds-c-button--solid-primary:hover::after { animation: ux-sweep 720ms var(--ux-ease-out); }
|
|
397
|
+
@keyframes ux-sweep { to { left: 140%; } }
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
Keep three duration tokens and two easings and use nothing else — that consistency
|
|
401
|
+
is most of what makes a form read as designed rather than decorated:
|
|
402
|
+
|
|
403
|
+
```css
|
|
404
|
+
--ux-fast: 160ms; /* hover, focus, colour */
|
|
405
|
+
--ux-mid: 300ms; /* state changes, entrances */
|
|
406
|
+
--ux-slow: 520ms; /* the card, long connectors */
|
|
407
|
+
--ux-ease: cubic-bezier(0.22, 1, 0.36, 1);
|
|
408
|
+
--ux-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
## Stepper JS navigation + accessibility (PRC-5141, 2026-09)
|
|
412
|
+
|
|
413
|
+
The stepper element exposes two callable **function configs** (`ElementConfigType.FUNCTION`)
|
|
414
|
+
so a script can drive it: `goToNextStep` and `goToPreviousStep`, called as
|
|
415
|
+
`ProcesioForm.data.fields.<name>.goToNextStep()` (changed in the 2026-10 front-end release, ui-builder 0.179.0: they were named
|
|
416
|
+
`next` / `previous`, which clashed with the button-text configs of the same names). PRC-5141 added a generic element-function
|
|
417
|
+
registry (`ui-builder src/js/model/element/function/registry.ts`) plus accessibility work;
|
|
418
|
+
the runtime wiring lives on `main`. Call them like any exposed element function to advance
|
|
419
|
+
or rewind the stepper programmatically instead of relying on the built-in buttons.
|
|
420
|
+
|
|
421
|
+
Saved config is unchanged by this: a stepper still carries `steps` (step-list),
|
|
422
|
+
`next`/`previous` (button text), `visible`, `activeStepIndex` (default 0), and three
|
|
423
|
+
`field-events` bundles `onStepChangeEvents` / `onNextStepEvents` / `onPreviousStepEvents`.
|
|
424
|
+
The event `type` values stored in those bundles are `STEPPER_STEP_CHANGE`,
|
|
425
|
+
`STEPPER_NEXT_STEP`, `STEPPER_PREVIOUS_STEP`; `$event` on a step-change is the active step
|
|
426
|
+
index. Because the saved shape did not change, no form-golden update is needed for this.
|