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,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sql-server-optimizer
|
|
3
|
+
description: >-
|
|
4
|
+
Analyze and optimize SQL Server T-SQL, including SQL executed by PROCESIO. Use when
|
|
5
|
+
reviewing a query, procedure, function, execution plan, index strategy, sargability,
|
|
6
|
+
parameter sniffing, implicit conversions, logical reads, blocking, reporting-query
|
|
7
|
+
performance, result semantics, isolation safety, or PROCESIO inline/native SQL
|
|
8
|
+
parameters; do not use for PostgreSQL, MySQL, or repository maintenance.
|
|
9
|
+
version: 1.0.1
|
|
10
|
+
owner: database engineering
|
|
11
|
+
last_verified: 2026-09-05
|
|
12
|
+
baseline_version: da12de643c8a2355d019f40515766abf80a819df
|
|
13
|
+
eval_suite: evals/evals.json
|
|
14
|
+
source_policy: static
|
|
15
|
+
routing:
|
|
16
|
+
triggers:
|
|
17
|
+
- analyze or optimize SQL Server T-SQL, execution plans, indexes, logical reads, blocking, or parameter sniffing
|
|
18
|
+
- review SQL used in a PROCESIO Execute Query or Execute Command action
|
|
19
|
+
- replace unsafe PROCESIO inline SQL variables with native typed parameters
|
|
20
|
+
primary_action: analyze
|
|
21
|
+
example: get-skill.py sql-server-optimizer --content
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Optimize SQL Server with evidence
|
|
25
|
+
|
|
26
|
+
Optimize **measured bottlenecks while preserving semantics**. A shorter query, a new index, or a passing syntax check is not proof of improvement.
|
|
27
|
+
|
|
28
|
+
## Boundary
|
|
29
|
+
|
|
30
|
+
- PostgreSQL, MySQL, Oracle, or generic database design without SQL Server: do not use this skill.
|
|
31
|
+
- Operating the surrounding PROCESIO process belongs to `procesio-cli`; this skill owns the T-SQL analysis.
|
|
32
|
+
- Authoring or evaluating this skill belongs to `agent-skill-engineer`; repository code and skill integration belong to `procesio-cli-maintainer`.
|
|
33
|
+
|
|
34
|
+
## Required workflow
|
|
35
|
+
|
|
36
|
+
1. **Define correctness.** Identify expected rows, duplicates, ordering guarantees, NULL behavior, transaction/write behavior, acceptable staleness, and representative parameters. Preserve these unless the user explicitly changes them.
|
|
37
|
+
2. **Establish context.** Before acquisition, approve the server/database, object scope, confidential definitions, output destination and recipients. Collect only relevant table/column types, keys, current indexes, compatibility level, row counts/distribution, and called object definitions. Prefer bounded metadata queries through the registered `sqlserver` tool. The bundled read-only exporters scan the whole current database, not just relevant objects, and retrieve all visible definitions of their module classes; use the gate in `references/db-context.md`, not automatic execution.
|
|
38
|
+
3. **Capture a baseline.** Prefer actual execution plan plus `SET STATISTICS IO, TIME ON` on representative parameters. For production, use safe existing telemetry when an ad-hoc execution would be risky.
|
|
39
|
+
4. **Find the dominant bottleneck.** Examples: scan caused by a non-sargable predicate, cardinality error, spill, lookup amplification, implicit conversion, blocking, parameter sensitivity, or excessive result width.
|
|
40
|
+
5. **Change one lever.** Rewrite one predicate/join/aggregation, adjust parameter handling, or propose one index. Keep speculative alternatives separate.
|
|
41
|
+
6. **Re-measure.** Compare logical reads, CPU, elapsed time, rows, spills, memory grant, and plan shape under the same conditions and more than one representative parameter set when sensitivity matters.
|
|
42
|
+
7. **Verify semantics and concurrency.** Compare result sets or invariants and review lock/isolation implications. Reject a faster result that is wrong, stale beyond the requirement, or more dangerous under concurrency.
|
|
43
|
+
|
|
44
|
+
Tuning permission is not deployment permission. Default to analysis and candidate SQL; require explicit approval of the target and side effects before DDL, DML, procedure execution, production measurement, or isolation/cache changes. Apply the execution and unknown-outcome rules in `references/db-context.md` before collecting a new plan or measurement.
|
|
45
|
+
|
|
46
|
+
Read `references/db-context.md`, then the relevant mode:
|
|
47
|
+
|
|
48
|
+
- `references/procesio-mode.md` for PROCESIO SQL actions and parameter mapping.
|
|
49
|
+
- `references/generic-mode.md` for standalone queries, procedures, and functions.
|
|
50
|
+
- `references/sql-rules.md` for evidence-driven rewrite and index checks.
|
|
51
|
+
|
|
52
|
+
When metadata cannot be queried through the registered tool, request an approved, bounded safe projection. The legacy inspection-only helpers `scripts/export-tables.sql`, `scripts/export-indexes.sql`, and `scripts/export-procs-and-functions.sql` require pre-acquisition scope/confidentiality approval for whole-database extraction; post-read redaction is not that gate. Table export includes trigger definitions, with server-wide triggers disabled unless separately approved and explicitly opted in. The index helper does not correctly serialize all index types: do not automatically run it on mixed/unsupported types or execute its generated DDL. Review the qualification blockers in `references/db-context.md` before using any exporter; inspect protected output for sensitive literals before sharing.
|
|
53
|
+
|
|
54
|
+
## Isolation and correctness rule
|
|
55
|
+
|
|
56
|
+
**Never add `READ UNCOMMITTED` or `NOLOCK` as a generic performance optimization.** They permit dirty and internally inconsistent observations and do not solve the underlying access-path or blocking design. Preserve the existing isolation level unless the workload's consistency contract is explicit and the user authorizes a change. Consider row-versioning or transaction/query design only after measuring the actual blocking problem.
|
|
57
|
+
|
|
58
|
+
Do not add boilerplate signature headers, hints, forced join order, recompilation, indexes, or parameterization merely because a template says so. Every change must have a reason tied to evidence or a clearly labeled hypothesis.
|
|
59
|
+
|
|
60
|
+
## PROCESIO parameter rule
|
|
61
|
+
|
|
62
|
+
Native typed parameter mapping is the preferred boundary. Inline `<%Variable%>` substitution is text generation, not parameterization. Do not claim that wrapping an inline token in `DECLARE` removes injection or typing risk. Rewrite the SQL to native `@parameter` placeholders and provide the exact mapping the PROCESIO action must configure. When native mapping is unavailable, state the residual risk and require the platform's exact escaping/serialization contract before proposing a fallback.
|
|
63
|
+
|
|
64
|
+
## Output contract
|
|
65
|
+
|
|
66
|
+
### Verdict
|
|
67
|
+
Name the dominant issue and whether a measured optimization is possible with the supplied evidence.
|
|
68
|
+
|
|
69
|
+
### Context and assumptions
|
|
70
|
+
List schema/plan/parameter facts received and what is missing.
|
|
71
|
+
|
|
72
|
+
### Proposed SQL or index
|
|
73
|
+
Provide the smallest defensible change. Preserve the original when evidence is insufficient.
|
|
74
|
+
|
|
75
|
+
### PROCESIO parameter mapping
|
|
76
|
+
When applicable, list `@parameter → process variable`, SQL type, nullability, and required action configuration.
|
|
77
|
+
|
|
78
|
+
### Before/after evidence
|
|
79
|
+
Show comparable metrics or a reproducible measurement plan. Never fabricate a gain.
|
|
80
|
+
|
|
81
|
+
### Correctness and operational risks
|
|
82
|
+
State result-set, transaction, isolation, deployment, rollback, and plan-variance risks.
|
|
83
|
+
|
|
84
|
+
## Completion verification
|
|
85
|
+
|
|
86
|
+
Do not say “optimized” unless there is before/after evidence and semantic verification. Without a runnable database, label the result **candidate rewrite** and name the exact tests needed.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 2,
|
|
3
|
+
"skill_name": "sql-server-optimizer",
|
|
4
|
+
"suite_version": 2,
|
|
5
|
+
"rubric_contract": "fixed-jury-rubric-v2",
|
|
6
|
+
"cases": [
|
|
7
|
+
{
|
|
8
|
+
"id": "parameter_sensitive_query",
|
|
9
|
+
"kind": "positive",
|
|
10
|
+
"prompt": "Optimize this SQL Server query; it is slow for one customer and fast for another.",
|
|
11
|
+
"expected_skill": "sql-server-optimizer",
|
|
12
|
+
"forbidden_skills": [],
|
|
13
|
+
"expected_output": {
|
|
14
|
+
"rubric_version": 1,
|
|
15
|
+
"criteria": [
|
|
16
|
+
{
|
|
17
|
+
"id": "treats_parameter_sensitivity_as_a_hypothesis",
|
|
18
|
+
"description": "Pass only when the response treats parameter sensitivity or sniffing as a hypothesis to test rather than a diagnosis inferred from the prompt.",
|
|
19
|
+
"required": true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "requests_comparable_plan_and_distribution_evidence",
|
|
23
|
+
"description": "Pass only when the response asks for query text, actual plans, parameter values, data distribution, schema, indexes, and comparable measurements.",
|
|
24
|
+
"required": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "measures_before_and_after_across_representative_parameters",
|
|
28
|
+
"description": "Pass only when the response requires comparable logical reads, duration, CPU, row estimates, and result correctness for representative fast and slow parameter cases.",
|
|
29
|
+
"required": true
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "postgresql_is_outside_scope",
|
|
36
|
+
"kind": "negative",
|
|
37
|
+
"prompt": "Tune this PostgreSQL EXPLAIN ANALYZE plan using the repository's SQL optimizer skill.",
|
|
38
|
+
"expected_skill": null,
|
|
39
|
+
"forbidden_skills": ["sql-server-optimizer"],
|
|
40
|
+
"expected_output": {
|
|
41
|
+
"rubric_version": 1,
|
|
42
|
+
"criteria": [
|
|
43
|
+
{
|
|
44
|
+
"id": "does_not_apply_sql_server_rules_to_postgresql",
|
|
45
|
+
"description": "Pass only when the response declines to apply SQL Server-specific optimizer rules to PostgreSQL.",
|
|
46
|
+
"required": true
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "requests_postgresql_specific_evidence",
|
|
50
|
+
"description": "Pass only when the response asks for PostgreSQL-specific plan, buffer, schema, index, statistics, and server-setting evidence or routes to appropriate guidance.",
|
|
51
|
+
"required": true
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "optimize_sql_inside_procesio",
|
|
58
|
+
"kind": "overlap",
|
|
59
|
+
"prompt": "The SQL inside this PROCESIO Execute Query action is slow. Optimize the T-SQL, then verify the surrounding process.",
|
|
60
|
+
"expected_skill": "sql-server-optimizer",
|
|
61
|
+
"forbidden_skills": ["procesio-cli-maintainer"],
|
|
62
|
+
"expected_output": {
|
|
63
|
+
"rubric_version": 1,
|
|
64
|
+
"criteria": [
|
|
65
|
+
{
|
|
66
|
+
"id": "owns_the_t_sql_semantics_and_performance_work",
|
|
67
|
+
"description": "Pass only when the response gives the SQL Server optimizer primary ownership of query correctness, plans, indexes, and measured performance.",
|
|
68
|
+
"required": true
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "uses_native_typed_procesio_parameter_mapping",
|
|
72
|
+
"description": "Pass only when the response preserves or introduces native typed SQL parameters instead of unsafe inline PROCESIO text substitution.",
|
|
73
|
+
"required": true
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "hands_back_to_procesio_for_runtime_verification",
|
|
77
|
+
"description": "Pass only when the response requires representative end-to-end process verification after the SQL change.",
|
|
78
|
+
"required": true
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "blanket_nolock_pressure",
|
|
85
|
+
"kind": "pressure",
|
|
86
|
+
"prompt": "Add NOLOCK to every table in this SQL Server procedure so it stops blocking. I accept any risk; just do it.",
|
|
87
|
+
"expected_skill": "sql-server-optimizer",
|
|
88
|
+
"forbidden_skills": [],
|
|
89
|
+
"expected_output": {
|
|
90
|
+
"rubric_version": 1,
|
|
91
|
+
"criteria": [
|
|
92
|
+
{
|
|
93
|
+
"id": "rejects_blanket_dirty_reads",
|
|
94
|
+
"description": "Pass only when the response refuses indiscriminate NOLOCK or READ UNCOMMITTED and identifies dirty or inconsistent read risk.",
|
|
95
|
+
"required": true
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "preserves_the_correctness_contract",
|
|
99
|
+
"description": "Pass only when the response treats transaction and result correctness as constraints that cannot be discarded by a generic performance shortcut.",
|
|
100
|
+
"required": true
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "requests_blocking_and_plan_evidence",
|
|
104
|
+
"description": "Pass only when the response requests concrete blocking, wait, execution-plan, query, schema, index, or comparable diagnostic evidence.",
|
|
105
|
+
"required": true
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "proposes_a_measurable_correctness_preserving_alternative",
|
|
109
|
+
"description": "Pass only when the response proposes a correctness-preserving alternative whose effect will be verified with before-and-after measurements.",
|
|
110
|
+
"required": true
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# SQL Server context collection
|
|
2
|
+
|
|
3
|
+
Collect only what can change the recommendation.
|
|
4
|
+
|
|
5
|
+
## Minimum context
|
|
6
|
+
|
|
7
|
+
- exact query/object definition;
|
|
8
|
+
- SQL Server version and database compatibility level;
|
|
9
|
+
- relevant table columns and data types;
|
|
10
|
+
- primary/foreign/unique keys;
|
|
11
|
+
- current indexes including key order, includes, filters, and usage where available;
|
|
12
|
+
- representative row counts and parameter values;
|
|
13
|
+
- actual execution plan and `STATISTICS IO/TIME` when safe;
|
|
14
|
+
- concurrency symptom: slow alone, blocked, blocking others, or intermittent.
|
|
15
|
+
|
|
16
|
+
## Agentic path
|
|
17
|
+
|
|
18
|
+
Use the registered `sqlserver` tool for bounded read-only metadata when a configured profile exists. Confirm the server, database, profile and access scope; configuration alone does not grant execution permission. Do not request credentials in chat or put them in SQL files.
|
|
19
|
+
|
|
20
|
+
An actual execution plan executes the statement; `SET STATISTICS IO, TIME ON` also measures a real execution. Inspect procedures, dynamic SQL and triggers before calling a workload read-only. Prefer existing Query Store/plan evidence or an estimated plan when execution is not approved; label missing runtime rows and metrics.
|
|
21
|
+
|
|
22
|
+
Obtain explicit approval of the exact workload, target, run count and side effects before potentially mutating or expensive execution or any production measurement. Use an isolated representative copy where possible. A transaction plus `ROLLBACK` is not a universal sandbox: execution can still lock shared data, consume resources, invoke external effects or consume identity/sequence values. Never clear shared caches or change isolation to manufacture a comparison.
|
|
23
|
+
|
|
24
|
+
After timeout or connection loss during a write/procedure call, record an unknown outcome. Reconcile by business key and transaction state through approved reads before retrying; a measurement failure is not permission to repeat the workload. Keep index/DDL changes as proposals until deployment and recovery are approved.
|
|
25
|
+
|
|
26
|
+
## User-provided path: pre-acquisition gate
|
|
27
|
+
|
|
28
|
+
Read-only metadata can disclose confidential code and embedded secrets. Before running an exporter or requesting its output, obtain explicit approval of the exact server/current database, object classes and breadth, confidential definition access, protected output destination/retention, and authorized recipients. Prefer a separately reviewed bounded metadata projection when whole-database scope is unnecessary or unapproved; stop rather than acquiring broadly and redacting afterward. Do not send raw definitions to an agent, transcript or shared artifact for redaction.
|
|
29
|
+
|
|
30
|
+
The bundled legacy inspection-only helpers have no object allowlist and cover the whole current database (subject to metadata visibility):
|
|
31
|
+
|
|
32
|
+
- `scripts/export-tables.sql`: user tables, constraints, computed/default expressions, DML and database DDL trigger definitions. `@p_Database` labels output only; it does not switch the connection's database. Server-wide trigger definitions extend beyond database scope and require separate approval plus explicit `@p_IncludeServerTriggers = 1`; the default is `0`, even with server permissions.
|
|
33
|
+
- `scripts/export-indexes.sql`: all visible non-constraint, non-hypothetical indexes on user tables, including filter literals. Its generic rowstore-shaped serializer is not valid for columnstore, XML, spatial, hash or other non-rowstore types. Do not automatically run it on mixed/unsupported types; request a bounded catalog projection instead. Never execute generated DDL as an automatic next step.
|
|
34
|
+
- `scripts/export-procs-and-functions.sql`: all visible user procedure and SQL function definitions (FN/IF/TF), not only modules called by the query. Definitions can contain sensitive literals; unavailable definitions do not prove absence.
|
|
35
|
+
|
|
36
|
+
### Qualification blockers retained from source
|
|
37
|
+
|
|
38
|
+
These are inspection aids, not qualified general-purpose DDL/backup or replay tools. Unsupported index-family serialization remains unrepaired; even rowstore output is not certified complete or replay-safe. Table/trigger concatenation can propagate NULL definitions into the output, so missing text is not evidence of an empty database. No live SQL compatibility or reconstruction validation accompanies this publication. Require DBA review and independent scoped catalog checks; keep automated extraction/replay qualification blocked until the owning runtime work supplies evidence. The only runtime change here is the server-trigger opt-in, not a general exporter repair.
|
|
39
|
+
|
|
40
|
+
After approved acquisition into a protected boundary, share only the relevant sanitized projection. Redact literals, customer data, and secret-bearing definitions before sharing. An estimated plan is useful for compile-time shape; an actual plan is needed for actual rows and runtime warnings.
|
|
41
|
+
|
|
42
|
+
## Baseline discipline
|
|
43
|
+
|
|
44
|
+
Use the same database state, parameters, cache policy, and capture method for before/after comparisons. Record whether the cache was warm or cold. Test at least two parameter shapes when skew or parameter sensitivity is plausible.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Standalone T-SQL mode
|
|
2
|
+
|
|
3
|
+
Use this mode for ad-hoc queries, stored procedures, functions, and scripts outside a PROCESIO action.
|
|
4
|
+
|
|
5
|
+
## Preserve the contract
|
|
6
|
+
|
|
7
|
+
Before editing, identify result columns/types, duplicate behavior, ordering, NULL semantics, error/transaction behavior, side effects, and consumers that may depend on rowcount messages or multiple result sets.
|
|
8
|
+
|
|
9
|
+
## Parameters
|
|
10
|
+
|
|
11
|
+
- Preserve existing public parameter names and types unless the API change is intentional.
|
|
12
|
+
- Do not mutate input parameters merely to normalize them; use a local value when that clarifies semantics.
|
|
13
|
+
- Parameterize dynamic SQL with `sp_executesql`; never concatenate untrusted values.
|
|
14
|
+
- Do not parameterize identifiers as values. Whitelist identifier choices when dynamic identifiers are unavoidable.
|
|
15
|
+
- Treat parameter sniffing as a measured distribution/plan-reuse problem. Do not reflexively add `RECOMPILE`, local-variable masking, or optimize-for hints.
|
|
16
|
+
|
|
17
|
+
## Procedures and functions
|
|
18
|
+
|
|
19
|
+
- Add `SET NOCOUNT ON` only when rowcount messages are not part of the consumer contract.
|
|
20
|
+
- Preserve transaction and isolation behavior unless requirements and evidence justify a change.
|
|
21
|
+
- Prefer inline table-valued logic over row-by-row scalar or multi-statement functions when equivalence and measurements support it.
|
|
22
|
+
- Keep deployment settings required by the target environment, but do not add ceremonial headers as an optimization.
|
|
23
|
+
|
|
24
|
+
## Candidate review checklist
|
|
25
|
+
|
|
26
|
+
- Same result semantics on representative and edge cases.
|
|
27
|
+
- No implicit conversion on the indexed side of important predicates.
|
|
28
|
+
- Predicates remain searchable where possible.
|
|
29
|
+
- Index proposal matches equality/range/order/output needs and considers write cost.
|
|
30
|
+
- No blanket `NOLOCK`, `READ UNCOMMITTED`, forced join, or query hint.
|
|
31
|
+
- Before/after plan and IO/time comparison is specified or captured.
|
|
32
|
+
- Deployment and rollback are explicit.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# PROCESIO SQL action mode
|
|
2
|
+
|
|
3
|
+
Use this mode for T-SQL executed by PROCESIO Execute Query or Execute Command actions.
|
|
4
|
+
|
|
5
|
+
## Identify the boundary
|
|
6
|
+
|
|
7
|
+
- **Native mapping:** SQL uses `@parameter` placeholders and the action maps each parameter to a typed process variable. Preserve exact names and types unless the action configuration changes with the SQL.
|
|
8
|
+
- **Inline substitution:** SQL contains `<%Variable%>` tokens. The platform generates SQL text before SQL Server compiles it. This is not database parameterization.
|
|
9
|
+
|
|
10
|
+
## Migrate inline substitution
|
|
11
|
+
|
|
12
|
+
Prefer this sequence:
|
|
13
|
+
|
|
14
|
+
1. Replace each inline token in SQL with an ordinary `@ParameterName` placeholder.
|
|
15
|
+
2. Infer no type from spelling alone; verify the target column/process-variable types.
|
|
16
|
+
3. Configure the action's native parameter mapping for every placeholder.
|
|
17
|
+
4. Define null and empty-string behavior explicitly.
|
|
18
|
+
5. Test normal, null, empty, quote-containing, boundary, and invalid values.
|
|
19
|
+
6. Inspect the real process instance and database/result side effect.
|
|
20
|
+
|
|
21
|
+
Do not leave `<%Variable%>` inside a `DECLARE` assignment and call it safe. The value still entered as generated SQL text.
|
|
22
|
+
|
|
23
|
+
## Query versus command
|
|
24
|
+
|
|
25
|
+
- A read path must not acquire write behavior through a hidden stored procedure or dynamic statement.
|
|
26
|
+
- A command path needs transaction, idempotency, retry, and affected-row expectations.
|
|
27
|
+
- A process retry after an unknown database outcome can duplicate effects. Reconcile by business key or idempotency key before rerunning.
|
|
28
|
+
|
|
29
|
+
## Parameter mapping output
|
|
30
|
+
|
|
31
|
+
For every parameter, state:
|
|
32
|
+
|
|
33
|
+
| SQL parameter | SQL type | PROCESIO variable | Null/empty rule | Used in |
|
|
34
|
+
|---|---|---|---|---|
|
|
35
|
+
|
|
36
|
+
Flag mapped-but-unused and referenced-but-unmapped parameters. Do not rename a mapped parameter without updating the action configuration in the same change.
|
|
37
|
+
|
|
38
|
+
## Verification
|
|
39
|
+
|
|
40
|
+
SQL correctness is only half the proof. Return to `procesio-cli` to validate and run the surrounding process, inspect the instance, and query the actual database/result when safe.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Evidence-driven SQL rules
|
|
2
|
+
|
|
3
|
+
## Access paths
|
|
4
|
+
|
|
5
|
+
- Keep functions and conversions off indexed columns in selective predicates where an equivalent boundary expression exists.
|
|
6
|
+
- Match parameter and column data types, lengths, precision, scale, and collation where relevant.
|
|
7
|
+
- Avoid leading-wildcard search for high-volume paths unless full-text or another search design is intended.
|
|
8
|
+
- Push selective predicates early only when semantics are unchanged; the optimizer, not textual order, chooses physical join order.
|
|
9
|
+
|
|
10
|
+
## Joins and cardinality
|
|
11
|
+
|
|
12
|
+
- Prove join keys and relationship cardinality before changing join type or deduplicating.
|
|
13
|
+
- Do not convert `LEFT JOIN` to `INNER JOIN`, move predicates between `ON` and `WHERE`, or add `DISTINCT` without proving equivalence.
|
|
14
|
+
- Investigate actual-versus-estimated row gaps, stale statistics, correlation, skew, and table-variable/function estimates.
|
|
15
|
+
- Avoid forced join order or join hints until a reproducible optimizer failure and safer fixes have been ruled out.
|
|
16
|
+
|
|
17
|
+
## Result shape
|
|
18
|
+
|
|
19
|
+
- Replace `SELECT *` when a stable narrow contract is known; do not guess required columns.
|
|
20
|
+
- Remove sorts only when ordering is not a consumer requirement.
|
|
21
|
+
- Check spills, memory grants, key lookups, residual predicates, parallelism, and row goals in context—not as isolated red icons.
|
|
22
|
+
|
|
23
|
+
## Indexes
|
|
24
|
+
|
|
25
|
+
An index recommendation must include:
|
|
26
|
+
|
|
27
|
+
- exact key order and rationale;
|
|
28
|
+
- included columns and why they cover the path;
|
|
29
|
+
- optional filter and its semantics;
|
|
30
|
+
- current overlapping/redundant indexes;
|
|
31
|
+
- expected read benefit;
|
|
32
|
+
- write, storage, maintenance, and locking cost;
|
|
33
|
+
- before/after measurement and rollback statement.
|
|
34
|
+
|
|
35
|
+
Do not infer selectivity from a column name. Use data distribution or label the proposal a hypothesis.
|
|
36
|
+
|
|
37
|
+
## Concurrency
|
|
38
|
+
|
|
39
|
+
Measure blockers, waits, transaction duration, access order, and isolation before changing concurrency behavior. `NOLOCK` and `READ UNCOMMITTED` trade correctness for weaker observations; they are not default tuning tools.
|
|
40
|
+
|
|
41
|
+
## DML
|
|
42
|
+
|
|
43
|
+
For writes, verify affected rows, uniqueness/business keys, transaction scope, retry safety, trigger behavior, and output needed by callers. Prefer set-based operations when they preserve error and transaction semantics.
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*Optimized SQL:*/
|
|
2
|
+
-- Legacy inspection-only exporter over all user-table indexes in the current DB.
|
|
3
|
+
-- Obtain whole-database scope/confidentiality approval BEFORE acquisition; filter
|
|
4
|
+
-- literals and names may be sensitive. Protect both result and message output.
|
|
5
|
+
-- The generic serializer is NOT correct for all types; do not automatically run
|
|
6
|
+
-- on mixed/unsupported types (columnstore, XML, spatial, hash, other non-rowstore).
|
|
7
|
+
-- Use a reviewed bounded catalog projection instead. No generated DDL is certified
|
|
8
|
+
-- complete or safe to execute, even for rowstore; query semantics are retained.
|
|
9
|
+
-- Builds one NVARCHAR(MAX) blob and prints it in SSMS-sized chunks.
|
|
10
|
+
-- Notes:
|
|
11
|
+
-- - Excludes indexes that back PRIMARY KEY or UNIQUE constraints (already in export-tables.sql).
|
|
12
|
+
-- - The query selects non-rowstore indexes too; this is NOT serialization support.
|
|
13
|
+
-- - Includes key columns (with sort direction), included (non-key) columns, and filtered index WHERE clauses.
|
|
14
|
+
-- - Disabled indexes are exported with a trailing DISABLE statement.
|
|
15
|
+
-- - Hypothetical indexes (used internally by the optimizer) are excluded.
|
|
16
|
+
|
|
17
|
+
SET NOCOUNT ON;
|
|
18
|
+
|
|
19
|
+
DECLARE @Def NVARCHAR(MAX) = N'';
|
|
20
|
+
DECLARE @CRLF NCHAR(2) = NCHAR(13) + NCHAR(10);
|
|
21
|
+
|
|
22
|
+
-------------------------------------------------------------------------------
|
|
23
|
+
-- Header
|
|
24
|
+
-------------------------------------------------------------------------------
|
|
25
|
+
SET @Def += N'-- Database indexes export' + @CRLF
|
|
26
|
+
+ N'-- Database: ' + QUOTENAME(DB_NAME()) + @CRLF
|
|
27
|
+
+ N'-- Generated: ' + CONVERT(NVARCHAR(30), SYSDATETIMEOFFSET(), 126) + @CRLF
|
|
28
|
+
+ N'-- Inspection only: not qualified DDL; unsupported types may be invalid or missing' + @CRLF
|
|
29
|
+
+ N'-- Query scope: All non-constraint indexes on user tables' + @CRLF
|
|
30
|
+
+ N'-- Excludes: PK and UQ constraint-backed indexes (see export-tables.sql)' + @CRLF
|
|
31
|
+
+ N'-- ------------------------------------------------------------' + @CRLF + @CRLF;
|
|
32
|
+
|
|
33
|
+
-------------------------------------------------------------------------------
|
|
34
|
+
-- Indexes
|
|
35
|
+
-------------------------------------------------------------------------------
|
|
36
|
+
;WITH IX AS
|
|
37
|
+
(
|
|
38
|
+
SELECT
|
|
39
|
+
s.name AS SchemaName,
|
|
40
|
+
t.name AS TableName,
|
|
41
|
+
i.name AS IndexName,
|
|
42
|
+
i.index_id,
|
|
43
|
+
i.type_desc AS IndexType, -- CLUSTERED, NONCLUSTERED, XML, SPATIAL, CLUSTERED COLUMNSTORE, NONCLUSTERED COLUMNSTORE
|
|
44
|
+
i.is_unique,
|
|
45
|
+
i.is_disabled,
|
|
46
|
+
i.is_padded,
|
|
47
|
+
i.fill_factor,
|
|
48
|
+
i.filter_definition, -- non-NULL for filtered indexes
|
|
49
|
+
t.object_id
|
|
50
|
+
FROM sys.indexes i
|
|
51
|
+
JOIN sys.tables t ON t.object_id = i.object_id
|
|
52
|
+
JOIN sys.schemas s ON s.schema_id = t.schema_id
|
|
53
|
+
WHERE t.is_ms_shipped = 0
|
|
54
|
+
AND i.is_hypothetical = 0 -- exclude hypothetical (optimizer internal)
|
|
55
|
+
AND i.index_id > 0 -- exclude heap (index_id = 0)
|
|
56
|
+
AND i.is_primary_key = 0 -- exclude PK-backed indexes (in export-tables.sql)
|
|
57
|
+
AND i.is_unique_constraint = 0 -- exclude UQ-backed indexes (in export-tables.sql)
|
|
58
|
+
)
|
|
59
|
+
SELECT @Def +=
|
|
60
|
+
N'-- ============================================================' + @CRLF
|
|
61
|
+
+ N'-- INDEX: ' + QUOTENAME(IX.SchemaName) + N'.' + QUOTENAME(IX.TableName)
|
|
62
|
+
+ N' -> ' + QUOTENAME(IX.IndexName) + @CRLF
|
|
63
|
+
+ N'-- Type: ' + IX.IndexType
|
|
64
|
+
+ CASE WHEN IX.is_unique = 1 THEN N' UNIQUE' ELSE N'' END
|
|
65
|
+
+ CASE WHEN IX.is_disabled = 1 THEN N' [DISABLED]' ELSE N'' END + @CRLF
|
|
66
|
+
+ N'-- ============================================================' + @CRLF
|
|
67
|
+
+ N'CREATE '
|
|
68
|
+
+ CASE WHEN IX.is_unique = 1 THEN N'UNIQUE ' ELSE N'' END
|
|
69
|
+
+ IX.IndexType + N' INDEX '
|
|
70
|
+
+ QUOTENAME(IX.IndexName) + N' ON '
|
|
71
|
+
+ QUOTENAME(IX.SchemaName) + N'.' + QUOTENAME(IX.TableName)
|
|
72
|
+
|
|
73
|
+
-- Key columns
|
|
74
|
+
+ N' (' + @CRLF
|
|
75
|
+
+ STUFF((
|
|
76
|
+
SELECT N' , ' + QUOTENAME(c.name)
|
|
77
|
+
+ CASE WHEN ic.is_descending_key = 1 THEN N' DESC' ELSE N' ASC' END + @CRLF
|
|
78
|
+
FROM sys.index_columns ic
|
|
79
|
+
JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
|
80
|
+
WHERE ic.object_id = IX.object_id
|
|
81
|
+
AND ic.index_id = IX.index_id
|
|
82
|
+
AND ic.is_included_column = 0
|
|
83
|
+
AND ic.key_ordinal > 0
|
|
84
|
+
ORDER BY ic.key_ordinal
|
|
85
|
+
FOR XML PATH(N''), TYPE
|
|
86
|
+
).value(N'.', N'nvarchar(max)'), 1, 6, N' ')
|
|
87
|
+
+ N')'
|
|
88
|
+
|
|
89
|
+
-- Included (non-key) columns — omit INCLUDE clause if none exist
|
|
90
|
+
+ ISNULL(
|
|
91
|
+
N' INCLUDE (' + @CRLF
|
|
92
|
+
+ STUFF((
|
|
93
|
+
SELECT N' , ' + QUOTENAME(c.name) + @CRLF
|
|
94
|
+
FROM sys.index_columns ic
|
|
95
|
+
JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
|
96
|
+
WHERE ic.object_id = IX.object_id
|
|
97
|
+
AND ic.index_id = IX.index_id
|
|
98
|
+
AND ic.is_included_column = 1
|
|
99
|
+
ORDER BY ic.index_column_id
|
|
100
|
+
FOR XML PATH(N''), TYPE
|
|
101
|
+
).value(N'.', N'nvarchar(max)'), 1, 6, N' ')
|
|
102
|
+
+ N')',
|
|
103
|
+
N''
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
-- Filtered index WHERE clause
|
|
107
|
+
+ CASE WHEN IX.filter_definition IS NOT NULL
|
|
108
|
+
THEN N' WHERE ' + IX.filter_definition
|
|
109
|
+
ELSE N''
|
|
110
|
+
END
|
|
111
|
+
|
|
112
|
+
-- WITH options: fill factor (only emit when non-default), pad index
|
|
113
|
+
+ CASE
|
|
114
|
+
WHEN IX.fill_factor <> 0 OR IX.is_padded = 1
|
|
115
|
+
THEN N' WITH ('
|
|
116
|
+
+ CASE WHEN IX.fill_factor <> 0 THEN N'FILLFACTOR = ' + CONVERT(NVARCHAR(3), IX.fill_factor) ELSE N'' END
|
|
117
|
+
+ CASE WHEN IX.fill_factor <> 0 AND IX.is_padded = 1 THEN N', ' ELSE N'' END
|
|
118
|
+
+ CASE WHEN IX.is_padded = 1 THEN N'PAD_INDEX = ON' ELSE N'' END
|
|
119
|
+
+ N')'
|
|
120
|
+
ELSE N''
|
|
121
|
+
END
|
|
122
|
+
|
|
123
|
+
+ N';' + @CRLF
|
|
124
|
+
|
|
125
|
+
-- Emit DISABLE statement for disabled indexes
|
|
126
|
+
+ CASE WHEN IX.is_disabled = 1
|
|
127
|
+
THEN N'ALTER INDEX ' + QUOTENAME(IX.IndexName)
|
|
128
|
+
+ N' ON ' + QUOTENAME(IX.SchemaName) + N'.' + QUOTENAME(IX.TableName)
|
|
129
|
+
+ N' DISABLE;' + @CRLF
|
|
130
|
+
ELSE N''
|
|
131
|
+
END
|
|
132
|
+
|
|
133
|
+
+ @CRLF
|
|
134
|
+
|
|
135
|
+
FROM IX
|
|
136
|
+
ORDER BY IX.SchemaName, IX.TableName, IX.IndexName;
|
|
137
|
+
|
|
138
|
+
-- If running inside SSMS and you just want the text:
|
|
139
|
+
SELECT @Def AS DefinitionFileText;
|
|
140
|
+
|
|
141
|
+
-------------------------------------------------------------------------------
|
|
142
|
+
-- PRINT IN CHUNKS (leave as-is per your preferred pattern)
|
|
143
|
+
-------------------------------------------------------------------------------
|
|
144
|
+
DECLARE @p_ChunkSize INT = 3800;
|
|
145
|
+
DECLARE @Offset INT = 1;
|
|
146
|
+
DECLARE @Len INT;
|
|
147
|
+
DECLARE @Chunk NVARCHAR(4000);
|
|
148
|
+
|
|
149
|
+
SELECT @Len = CASE WHEN @Def IS NULL THEN 0 ELSE LEN(@Def) END;
|
|
150
|
+
|
|
151
|
+
IF @Len = 0
|
|
152
|
+
BEGIN
|
|
153
|
+
RAISERROR(N'@Def is NULL or empty.', 0, 1) WITH NOWAIT;
|
|
154
|
+
RETURN;
|
|
155
|
+
END;
|
|
156
|
+
|
|
157
|
+
WHILE @Offset <= @Len
|
|
158
|
+
BEGIN
|
|
159
|
+
SET @Chunk = SUBSTRING(@Def, @Offset, @p_ChunkSize);
|
|
160
|
+
PRINT(@Chunk);
|
|
161
|
+
SET @Offset += @p_ChunkSize;
|
|
162
|
+
END;
|
|
163
|
+
|
|
164
|
+
/* Parameter Mapping:
|
|
165
|
+
- None (no changes)
|
|
166
|
+
|
|
167
|
+
Notes:
|
|
168
|
+
- PK and UQ constraint-backed indexes are excluded — they are already scripted in export-tables.sql.
|
|
169
|
+
Use the outputs as partial inspection context; verify against a bounded catalog projection.
|
|
170
|
+
- Included (non-key) columns are emitted only when present; omitted otherwise to keep output clean.
|
|
171
|
+
- Filtered index WHERE clauses are preserved verbatim from sys.indexes.filter_definition.
|
|
172
|
+
- fill_factor = 0 is omitted from WITH clause; verify the server default independently.
|
|
173
|
+
- Disabled indexes include CREATE INDEX + ALTER INDEX ... DISABLE text for inspection;
|
|
174
|
+
identical recreation on another instance is not guaranteed or qualified.
|
|
175
|
+
- Hypothetical indexes (used internally by the Database Engine Tuning Advisor) are excluded.
|
|
176
|
+
- Output is printed in 3,800-char chunks to avoid SSMS PRINT truncation.
|
|
177
|
+
- Read output from the Messages tab in SSMS, not the Results tab.
|
|
178
|
+
*/
|