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,194 @@
|
|
|
1
|
+
"""Web-session lifecycle abstraction: hydrate / dehydrate / lease (spec P0.0-09).
|
|
2
|
+
|
|
3
|
+
The PROCESIO web-tool service hosts per-(workspace, user) browser profiles: hydrate a
|
|
4
|
+
profile from object storage -> run -> dehydrate it back, with a per-session lease so one
|
|
5
|
+
profile is driven by one browser at a time (the single-owner ``SingletonLock`` reality
|
|
6
|
+
of a persistent Chrome profile - memory ``web-profile-no-parallel``; the local
|
|
7
|
+
serialize-web-profile broker). See
|
|
8
|
+
``todo/on-hold/procesio-aat-module/09-web-tool-service.md``.
|
|
9
|
+
|
|
10
|
+
This module factors that lifecycle into a reusable abstraction with a **local
|
|
11
|
+
filesystem** implementation, so the platform swaps the storage + lease backends
|
|
12
|
+
(object storage + a distributed lease) without changing any caller. P0.0 delivers the
|
|
13
|
+
shape + the local impl + the object-store swap point - NOT a hosted browser fleet.
|
|
14
|
+
|
|
15
|
+
Metadata mirrors the CSK session pointer: {name, site, kind, created, rotated, health}.
|
|
16
|
+
"""
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import json
|
|
20
|
+
import os
|
|
21
|
+
import sys
|
|
22
|
+
import time
|
|
23
|
+
from abc import ABC, abstractmethod
|
|
24
|
+
from contextlib import contextmanager
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
_REPO = Path(__file__).resolve().parents[2]
|
|
28
|
+
if str(_REPO) not in sys.path:
|
|
29
|
+
sys.path.insert(0, str(_REPO))
|
|
30
|
+
|
|
31
|
+
from tools._lib import userdata # noqa: E402
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class LeaseTimeout(RuntimeError):
|
|
35
|
+
"""Raised when a per-session lease cannot be acquired within the timeout - the
|
|
36
|
+
session is in use by another browser (serialized single-owner access)."""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class WebSessionStore(ABC):
|
|
40
|
+
"""Persistence + lease contract for web-login profiles. Backends are dumb: the
|
|
41
|
+
caller decides when to hydrate/dehydrate; the store moves bytes and guards leases."""
|
|
42
|
+
|
|
43
|
+
@abstractmethod
|
|
44
|
+
def hydrate(self, ws: str | None, user: str | None, name: str) -> Path:
|
|
45
|
+
"""Materialize the session's profile locally and return its directory."""
|
|
46
|
+
|
|
47
|
+
@abstractmethod
|
|
48
|
+
def dehydrate(self, ws: str | None, user: str | None, name: str, profile_dir: Path) -> None:
|
|
49
|
+
"""Persist profile changes back to durable storage."""
|
|
50
|
+
|
|
51
|
+
@abstractmethod
|
|
52
|
+
def list_sessions(self, ws: str | None, user: str | None) -> list[dict]:
|
|
53
|
+
...
|
|
54
|
+
|
|
55
|
+
@abstractmethod
|
|
56
|
+
def pointer(self, ws: str | None, user: str | None, name: str) -> dict | None:
|
|
57
|
+
...
|
|
58
|
+
|
|
59
|
+
@abstractmethod
|
|
60
|
+
def _lock_path(self, ws: str | None, user: str | None, name: str) -> Path:
|
|
61
|
+
...
|
|
62
|
+
|
|
63
|
+
@contextmanager
|
|
64
|
+
def lease(self, ws: str | None, user: str | None, name: str, *,
|
|
65
|
+
timeout: float = 30.0, poll: float = 0.1):
|
|
66
|
+
"""Acquire exclusive use of one session, hydrate it, yield the profile dir, then
|
|
67
|
+
dehydrate + release. Serializes same-session access (a second acquirer waits up
|
|
68
|
+
to ``timeout`` then raises ``LeaseTimeout``); different sessions run in parallel.
|
|
69
|
+
The platform swaps this for a distributed lease with identical semantics."""
|
|
70
|
+
lock = self._lock_path(ws, user, name)
|
|
71
|
+
lock.parent.mkdir(parents=True, exist_ok=True)
|
|
72
|
+
fd = _acquire_lock(lock, timeout=timeout, poll=poll)
|
|
73
|
+
try:
|
|
74
|
+
profile_dir = self.hydrate(ws, user, name)
|
|
75
|
+
try:
|
|
76
|
+
yield profile_dir
|
|
77
|
+
finally:
|
|
78
|
+
self.dehydrate(ws, user, name, profile_dir)
|
|
79
|
+
finally:
|
|
80
|
+
_release_lock(fd, lock)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class LocalWebSessionStore(WebSessionStore):
|
|
84
|
+
"""Filesystem implementation. Profiles live under ``userdata.sessions_dir()`` which
|
|
85
|
+
is already per-(workspace, user) once ``AAT_WORKSPACE_ID`` / ``AAT_USER_ID`` are set
|
|
86
|
+
(item P0.0-01), so tenant isolation is automatic. Hydrate/dehydrate are in-place
|
|
87
|
+
(the durable copy IS the local dir); the object-store impl overrides them to move
|
|
88
|
+
bytes to/from S3/MinIO."""
|
|
89
|
+
|
|
90
|
+
def _root(self, ws: str | None, user: str | None) -> Path:
|
|
91
|
+
# sessions_dir() derives from userdata.base(), which already folds in (ws,user).
|
|
92
|
+
return userdata.sessions_dir()
|
|
93
|
+
|
|
94
|
+
def _session_dir(self, ws, user, name: str) -> Path:
|
|
95
|
+
return self._root(ws, user) / userdata._safe_component(name)
|
|
96
|
+
|
|
97
|
+
def _index_path(self, ws, user) -> Path:
|
|
98
|
+
return self._root(ws, user) / "sessions_index.json"
|
|
99
|
+
|
|
100
|
+
def _lock_path(self, ws, user, name: str) -> Path:
|
|
101
|
+
return self._session_dir(ws, user, name).with_suffix(".lock")
|
|
102
|
+
|
|
103
|
+
def hydrate(self, ws, user, name: str) -> Path:
|
|
104
|
+
d = self._session_dir(ws, user, name)
|
|
105
|
+
(d / "profile").mkdir(parents=True, exist_ok=True)
|
|
106
|
+
return d / "profile"
|
|
107
|
+
|
|
108
|
+
def dehydrate(self, ws, user, name: str, profile_dir: Path) -> None:
|
|
109
|
+
# Local: the profile dir IS durable; just touch the pointer's rotated time.
|
|
110
|
+
self._touch_pointer(ws, user, name)
|
|
111
|
+
|
|
112
|
+
def _load_index(self, ws, user) -> dict:
|
|
113
|
+
p = self._index_path(ws, user)
|
|
114
|
+
if p.exists():
|
|
115
|
+
try:
|
|
116
|
+
return json.loads(p.read_text(encoding="utf-8"))
|
|
117
|
+
except (ValueError, OSError):
|
|
118
|
+
return {}
|
|
119
|
+
return {}
|
|
120
|
+
|
|
121
|
+
def _save_index(self, ws, user, idx: dict) -> None:
|
|
122
|
+
p = self._index_path(ws, user)
|
|
123
|
+
p.parent.mkdir(parents=True, exist_ok=True)
|
|
124
|
+
p.write_text(json.dumps(idx, ensure_ascii=False, indent=2), encoding="utf-8")
|
|
125
|
+
|
|
126
|
+
def put_pointer(self, ws, user, name: str, *, site: str = "",
|
|
127
|
+
kind: str = "profile", health: str = "unknown") -> dict:
|
|
128
|
+
idx = self._load_index(ws, user)
|
|
129
|
+
now = _now_iso()
|
|
130
|
+
meta = idx.get(name) or {"name": name, "created": now}
|
|
131
|
+
meta.update({"name": name, "site": site or meta.get("site", ""),
|
|
132
|
+
"kind": kind, "health": health, "rotated": now})
|
|
133
|
+
meta.setdefault("created", now)
|
|
134
|
+
idx[name] = meta
|
|
135
|
+
self._save_index(ws, user, idx)
|
|
136
|
+
return meta
|
|
137
|
+
|
|
138
|
+
def _touch_pointer(self, ws, user, name: str) -> None:
|
|
139
|
+
idx = self._load_index(ws, user)
|
|
140
|
+
if name in idx:
|
|
141
|
+
idx[name]["rotated"] = _now_iso()
|
|
142
|
+
self._save_index(ws, user, idx)
|
|
143
|
+
|
|
144
|
+
def pointer(self, ws, user, name: str) -> dict | None:
|
|
145
|
+
return self._load_index(ws, user).get(name)
|
|
146
|
+
|
|
147
|
+
def list_sessions(self, ws, user) -> list[dict]:
|
|
148
|
+
return list(self._load_index(ws, user).values())
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class ObjectStoreWebSessionStore(WebSessionStore):
|
|
152
|
+
"""Swap point for the platform: hydrate/dehydrate move the profile between an
|
|
153
|
+
ephemeral local dir and object storage (S3/MinIO) per (workspace, user); the lease
|
|
154
|
+
is a distributed lock. Not implemented in P0.0 - the hosted browser fleet + object
|
|
155
|
+
storage + streamed login-capture are platform-phase, highest-risk (SPIKE 3)."""
|
|
156
|
+
|
|
157
|
+
def __init__(self, *_a, **_k) -> None:
|
|
158
|
+
raise NotImplementedError(
|
|
159
|
+
"ObjectStoreWebSessionStore is the platform-phase swap point (spec P0.0-09 / "
|
|
160
|
+
"procesio-aat-module/09); use LocalWebSessionStore locally.")
|
|
161
|
+
|
|
162
|
+
def hydrate(self, ws, user, name): ...
|
|
163
|
+
def dehydrate(self, ws, user, name, profile_dir): ...
|
|
164
|
+
def list_sessions(self, ws, user): ...
|
|
165
|
+
def pointer(self, ws, user, name): ...
|
|
166
|
+
def _lock_path(self, ws, user, name): ...
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# -- lease primitives (local lockfile; the platform swaps a distributed lease) --------
|
|
170
|
+
|
|
171
|
+
def _acquire_lock(lock: Path, *, timeout: float, poll: float) -> int:
|
|
172
|
+
deadline = time.monotonic() + timeout
|
|
173
|
+
while True:
|
|
174
|
+
try:
|
|
175
|
+
return os.open(str(lock), os.O_CREAT | os.O_EXCL | os.O_WRONLY)
|
|
176
|
+
except FileExistsError:
|
|
177
|
+
if time.monotonic() >= deadline:
|
|
178
|
+
raise LeaseTimeout(f"session lock held: {lock.name}")
|
|
179
|
+
time.sleep(poll)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _release_lock(fd: int, lock: Path) -> None:
|
|
183
|
+
try:
|
|
184
|
+
os.close(fd)
|
|
185
|
+
finally:
|
|
186
|
+
try:
|
|
187
|
+
lock.unlink()
|
|
188
|
+
except OSError:
|
|
189
|
+
pass
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def _now_iso() -> str:
|
|
193
|
+
from datetime import datetime, timezone
|
|
194
|
+
return datetime.now(timezone.utc).isoformat(timespec="seconds")
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Connector Builder — API notes (durable)
|
|
2
|
+
|
|
3
|
+
Hard-won facts about the AI Connector Builder backend so future sessions don't re-derive them. Source repo (the app itself): the AI Connector Builder checkout — see its `documentation/03-API-REFERENCE.md`, `04-PIPELINE-ENGINE.md`, and `deploy/Caddyfile.example`.
|
|
4
|
+
|
|
5
|
+
## What the platform is
|
|
6
|
+
|
|
7
|
+
A FastAPI + Postgres app that generates **.NET/C# PROCESIO Custom Action connectors** from API docs via an 8-stage LLM pipeline (LiteLLM, vendor-agnostic). A standalone compiler service runs `dotnet restore/build/pack` and returns a `.nupkg`. Frontend is Next.js. Admin-configurable: prompts, spec modules, examples, validation rules all editable through the API (the "knowledge" endpoints).
|
|
8
|
+
|
|
9
|
+
## Base URL & routing (verified live 2026-06-30)
|
|
10
|
+
|
|
11
|
+
- Production host: `https://connector-builder.procesio.app`. Caddy reverse-proxies **`/api/*` → backend** (the `/api` prefix is stripped before reaching FastAPI). So the REST surface documented without a prefix in `03-API-REFERENCE.md` lives under **`/api`** in production.
|
|
12
|
+
- `GET https://connector-builder.procesio.app/api/auth/me` → works.
|
|
13
|
+
- The bare host root serves the Next.js frontend (so `GET /health` at the root returns the SPA 404, not the backend health — health is a backend route under `/api` semantics in prod).
|
|
14
|
+
- Dev: backend at `:8000`, frontend at `:3001`. Swagger at `/docs`, OpenAPI at `/openapi.json`.
|
|
15
|
+
- Tool default base = `https://connector-builder.procesio.app/api`; override with env `CONNECTOR_BUILDER_BASE_URL`.
|
|
16
|
+
|
|
17
|
+
## Auth — BOTH modes are just a bearer token
|
|
18
|
+
|
|
19
|
+
`backend/app/core/permissions.py::get_current_user` requires `Authorization: Bearer <token>`. If the token **starts with `acb_`** it's looked up as an API key (sha256 hash match in the `api_keys` table); otherwise it's verified as a JWT access token.
|
|
20
|
+
|
|
21
|
+
So:
|
|
22
|
+
1. **API key**: `Authorization: Bearer acb_...` — verbatim, no login call. Simplest. The key belongs to a specific user (and inherits that user's role).
|
|
23
|
+
2. **Username/password**: `POST /api/auth/login {"email","password"}` → `{"access_token","refresh_token","token_type":"bearer"}`; use the `access_token` as the bearer. (The login field is **`email`**, not `username`.)
|
|
24
|
+
|
|
25
|
+
The provided account (a platform login email) and the provided API key `acb_...091` both resolve to the **same admin user** (`role: admin`), so the tool can reach every `/admin/*` endpoint. There is no functional difference between the two modes for this account beyond JWT expiry vs. a long-lived key.
|
|
26
|
+
|
|
27
|
+
Roles: `viewer` / `builder` / `admin`. Most build endpoints need `builder` or `admin`; knowledge/config/users/issues need `admin`.
|
|
28
|
+
|
|
29
|
+
## Pipeline state machine (drives the agent's `next-step`)
|
|
30
|
+
|
|
31
|
+
`status` (overall) × `step_status` decide what to call next:
|
|
32
|
+
|
|
33
|
+
- `pending` → `start-build` (full auto) OR `gather` (manual, synchronous GATHER+CLARIFY).
|
|
34
|
+
- `clarifying` (after gather) → `answer --answers '{...}'` (keys are the question ids) → moves to `planning`.
|
|
35
|
+
- `planning` (plan present) → `approve-plan` (→ generate) or `revise-plan --feedback`.
|
|
36
|
+
- `generating` + `step_status=waiting_user` → review files, then `approve-generate` (→ validate/compile/fix/deliver) or `regenerate` / `regenerate-file`.
|
|
37
|
+
- `validating` + `waiting_user` → `validate-autofix` | `validate-continue` | `validate-return-to-generate`.
|
|
38
|
+
- `failed` → `retry [--from-step N]` (1-3 single stage; 4-5 generate→deliver; ≥6 compile→deliver) or `reset` (only from failed/clarifying/planning).
|
|
39
|
+
- `completed` → `download-artifact`.
|
|
40
|
+
- Jump anywhere with `override-stage --target-step N --target-status running|waiting_user`. **Semantics matter**: `running` clears the target step's own data and re-runs it; `waiting_user` PRESERVES the target step's data and just re-opens its review screen (use this to revisit a plan without wiping it — otherwise `revise-plan` returns "no plan to revise").
|
|
41
|
+
|
|
42
|
+
## Endpoints worth knowing
|
|
43
|
+
|
|
44
|
+
- `GET /builds` paginates (`per_page` max 500) with `status` / `archive_status` / `created_by` filters. Each build carries `version_prefix`/`version_build`/`package_version`.
|
|
45
|
+
- `PATCH /builds/{id}/version` only works at **step 3 (Plan) + waiting_user**, and only allows non-decreasing semver.
|
|
46
|
+
- Binary endpoints (stream, not JSON): `GET /builds/{id}/artifact` (the `.nupkg`), `…/files/{file}/download`, `…/files/download-all` (zip). The tool's `download` helper streams these to `--out` and reads the real filename from `Content-Disposition`.
|
|
47
|
+
- `POST /admin/build-selftest` compiles a trivial 2-file C# project end-to-end — a fast health check of the compiler service without burning LLM tokens.
|
|
48
|
+
- **Knowledge** = how the builder itself is tuned. `GET/POST/PUT/DELETE /admin/knowledge/{module_type}/{name}` where `module_type ∈ {prompt, spec_module, example, validation_rule, clarification}`. After editing, `POST /admin/config/reload` to refresh the in-memory cache. Editing `spec_module`/`example`/`prompt` changes generation quality for **all future builds** — this is the deepest improvement loop.
|
|
49
|
+
|
|
50
|
+
## Errors
|
|
51
|
+
|
|
52
|
+
Backend returns `{"detail": "..."}` on error (FastAPI default). The compiler internal API returns `{"detail","error_code"}`. The tool maps non-2xx → `ApiError` (`auth_failed` for 401/403, else `api_error`) and surfaces the server `detail` in the message.
|
|
53
|
+
|
|
54
|
+
## PROCESIO interop (the whole point)
|
|
55
|
+
|
|
56
|
+
The connector this platform builds is a PROCESIO Custom Action package. The `procesio` tool already installs one:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
procesio customaction-upload --file <connector.nupkg> # POST /api/actions multipart field "package" → {id}
|
|
60
|
+
procesio customaction-list # confirm it installed
|
|
61
|
+
procesio customaction-delete --id <actionId> # uninstall before re-upload
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
End-to-end loop: `connector-builder download-artifact` → `procesio customaction-upload` → exercise it in a PROCESIO process (run-process / forms / webhooks) → capture failures → feed them back via `connector-builder revise-plan` / `regenerate-file` / (for systemic issues) `knowledge-update` → recompile → re-upload. The **connector-builder agent** encodes this loop; the procesio agent's build-and-test playbook governs the PROCESIO-side testing.
|
|
65
|
+
|
|
66
|
+
## Tool internals
|
|
67
|
+
|
|
68
|
+
- Dir name is hyphenated → modules imported by BARE name (`import client`, `from handlers import builds`) with the tool root on sys.path (see `main.py`); tests use an importlib-alias conftest (`cb_*`), NO `tests/__init__.py`, unique `test_cb_*` basenames.
|
|
69
|
+
- `tool.yaml` is GENERATED by `gen_manifest.py` from the live `ACTIONS` dict; never hand-edit actions/args.
|
|
70
|
+
|
|
71
|
+
## Live-run learnings (first real E2E build, 2026-06-30)
|
|
72
|
+
|
|
73
|
+
Built a "Send Slack Message" custom action (Slack `chat.postMessage`) end-to-end to exercise the tool+agent. The pipeline ran correctly through create → gather → clarify (10 PROCESIO-aware questions) → plan → generate (6 files, idiomatic SDK code) → compile. Operational facts learned:
|
|
74
|
+
|
|
75
|
+
- **Synchronous LLM endpoints return 504 at the proxy but COMPLETE server-side.** `gather`, `answers` (PLAN), and `revise-plan` each took longer than Caddy's upstream timeout → without `--wait` the tool got a clean `api_error` 504. The backend kept working. **Handled since v0.2:** pass `--wait` to `gather` / `answer` / `revise-plan` and the tool swallows a 502/503/504 (or client-side timeout) and polls `get-build` to the settled state (`--wait-timeout` default 600s, `--poll-interval` 8s), returning the full build detail with `waited`/`settled` markers. A standalone `wait-build --build-id [--until settled|terminal]` blocks after the fast background stages (`approve-generate`/`retry`/`start-build`) until compile finishes. Robustness detail: the wait guards on `updated_at` advancing past a pre-trigger baseline so a fast poll can't return the stale pre-stage `waiting_user` state. `approve-plan` / `approve-generate` / `retry` return fast (background tasks), so no 504 there.
|
|
76
|
+
- **clarification_questions shape:** `{"questions": [ {id, question, default, options, context, category, required}, ... ]}` — a dict with a `questions` list, NOT a bare list. Each question carries a sensible `default`; answering `{id: default}` for all is a good baseline. The CLARIFY stage is PROCESIO-aware (asks about Credentials_Rest vs secret text, tab structure, FeComponentType, HTTP-200-but-ok=false handling, namespace/class naming).
|
|
77
|
+
- **Generated code quality is high:** correct `Ringhel.Procesio.Action.Core` decorators (`ClassDecorator`, `FETabDecorator`, `FEDecorator` Type=`Credentials_Rest`, `BEDecorator`, `Validator`), `IAction`, `APICredentialsManager`. Matches the procesio-custom-actions skill conventions.
|
|
78
|
+
- **COMPILE blocker — NU1301 restoring the PROCESIO SDK from GitHub Packages.** `compile attempt_1` fails: "Failed to retrieve information about 'Ringhel.Procesio.Action.Core' from remote source 'https://nuget.pkg.github.com/PROCESIO/download/ringhel.procesio.action.core/index.json'." This is **NU1301 (source/package-index access)**, not NU1102 (missing version) — so the pinned version (`1.41.0`) is NOT the cause. `GET /admin/platform-settings` shows `github_packages_pat_set: true` and `POST /admin/platform-settings/test-nuget` returns "PAT is valid" — but test-nuget only checks the ORG index (`/PROCESIO/index.json`), not the package-level download index, so it passing does not prove the SDK package is restorable. `POST /admin/build-selftest` returns "pass" because its trivial 2-file project does NOT reference the SDK, so it never exercises the GitHub Packages restore. **Net: the connector-builder compiler cannot download the PROCESIO SDK package** — a server-side PAT package-scope / egress issue. Fix is platform-side (grant the GitHub Packages PAT read access to the `Ringhel.Procesio.Action.Core` package, or mirror the SDK to a reachable feed), then `retry --from-step 6`. The generated code is already correct and waiting; once restore works, compile→deliver→`download-artifact`→`procesio customaction-upload` completes unchanged.
|
|
79
|
+
- **MSYS path-conversion gotcha (Git Bash on Windows):** the `api --path /admin/...` escape hatch gets its leading-slash path rewritten to `C:/Program Files/Git/admin/...` by MSYS, causing a 404. Run those calls with `MSYS_NO_PATHCONV=1` (or from PowerShell). First-class actions are unaffected (they build the path internally).
|
|
80
|
+
|
|
81
|
+
## .NET 10 runtime and the knowledge overrides (2026-10-21)
|
|
82
|
+
|
|
83
|
+
PROCESIO prod runs custom actions on Action-Execution v3 (`net10.0`, `Ringhel.Procesio.Action.Core` 2.1.0) since 2026-10-21, and the builder now generates for it: plan `target_framework: net10.0`, Action-Core 2.1.0 with Newtonsoft.Json 13.0.4 (2.1.0 depends on it, so 13.0.3 is a NU1605 downgrade), compiler image on the .NET 10 SDK. A finished package carries only `lib/net10.0/` and declares one `net10.0` dependency group. Verified end to end on prod: build, compile, upload to PROCESIO, run inside a process, exact outputs. A net8.0 package built earlier still loads on the v3 runtime.
|
|
84
|
+
|
|
85
|
+
- **Only three libraries are host copies on the v3 runtime:** Action-Core 2.1.0, Newtonsoft.Json 13.0.4 and DocumentFormat.OpenXml 3.5.1. CsvHelper, HtmlAgilityPack, MsgReader, PdfPig and SimMetrics are no longer on the host, so the copy bundled in the package is the one that loads. A host copy still wins over a bundled one of the same name, so code compiled against a different version of those three can throw `MissingMethodException` at run time.
|
|
86
|
+
- **SDK restore from GitHub Packages works** (Action-Core 2.1.0 restores fine); the NU1301 blocker recorded in June is resolved.
|
|
87
|
+
- **Knowledge overrides beat the baked files.** Each knowledge module resolves as: tombstone, else an admin DB override, else the base file baked into the image. An override does not follow later edits of the base, so after changing a base file always check `knowledge-list --module-type <type>` for `"source": "database"` rows of the same name and rewrite them with `knowledge-update --content-file <the committed file>`. Never `knowledge-delete` an override to "fall back" to the base: delete writes a tombstone that hides the base file as well. Read the result back with `knowledge-get` and compare it byte for byte; an earlier override had been stored with every em-dash as mojibake (`—`).
|
|
88
|
+
- **Pipeline config also lives in the DB** (seeded once from `config/pipeline.yaml`). A YAML change only affects a fresh seed; change prod with `update-config --which pipeline --data '{"stages": {...}}'` (merged per stage and validated before saving) and check `get-config --which pipeline` → `budget_warnings`. clarify/plan `max_spec_tokens` below `spec_tokens_total` means those stages silently drop spec modules.
|
|
89
|
+
- **Upload error 261 on a nullable output:** `int?` with `Expects = ExpectedType.Number` compiles but PROCESIO rejects the upload ("ValidatorAttribute.Expects value type does not match the property type"). Use a non-nullable `int` (document what 0 means) or a string. Encoded in the builder's `decorators.md`.
|
|
90
|
+
- **Some API hosts are unreachable from PROCESIO.** A connector can run fine and still time out on its HTTP call because PROCESIO's egress cannot reach that host (seen with `api.agify.io` and the other APIs on its server). Probe a host first from PROCESIO itself: `procesio credential-create --dry-run` with a no-auth `REST API` credential runs a live connection test from PROCESIO's servers.
|
|
91
|
+
- **A credential-free connector pauses at validate** on the warning "No new HttpClient" (the rule expects `Credentials.Client`). It is non-blocking: `validate-continue` proceeds, and a raw `HttpClient` call works on the PROCESIO runtime.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# connector-builder
|
|
2
|
+
|
|
3
|
+
Drive the **AI Connector Builder** ([connector-builder.procesio.app](https://connector-builder.procesio.app)) — the platform that turns API documentation into a compiled **PROCESIO Custom Action `.nupkg`** connector through an 8-stage LLM pipeline:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
gather → clarify → plan → generate → validate → compile → fix → deliver
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
This tool is the **REST client** for that platform. It covers the whole build lifecycle, file read/write, artifact/zip download, logs & telemetry, and the admin knowledge base (the prompts/specs/examples that control how every build generates code).
|
|
10
|
+
|
|
11
|
+
> The compiled `.nupkg` is the bridge to PROCESIO: download it with `download-artifact`, then install it with `procesio customaction-upload --file <nupkg>` to test the connector live. See the **connector-builder agent** for the full build → upload → test → improve loop.
|
|
12
|
+
|
|
13
|
+
## Auth — two modes, one header
|
|
14
|
+
|
|
15
|
+
Both modes resolve to an `Authorization: Bearer <token>` header (verified against the backend's `permissions.py` — an API key is just a bearer token starting with `acb_`):
|
|
16
|
+
|
|
17
|
+
1. **API key** (default): the `acb_...` key, used verbatim.
|
|
18
|
+
2. **Username / password**: `POST /auth/login` → JWT access token. This is the "web-tool" login, done over the REST API (no browser needed — the app exposes the same backend under `/api/*`).
|
|
19
|
+
|
|
20
|
+
Selection: API key if stored, else username+password. Force with `CONNECTOR_BUILDER_AUTH=apikey|userpass`. Base URL overridable with `CONNECTOR_BUILDER_BASE_URL` (default `https://connector-builder.procesio.app/api`).
|
|
21
|
+
|
|
22
|
+
### Store credentials
|
|
23
|
+
|
|
24
|
+
```powershell
|
|
25
|
+
python scripts/set-credential.py connector-builder api-key # acb_...
|
|
26
|
+
# and/or
|
|
27
|
+
python scripts/set-credential.py connector-builder username # the platform login email
|
|
28
|
+
python scripts/set-credential.py connector-builder password
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
(Use `--from-file` on this terminal — interactive paste corrupts secrets.)
|
|
32
|
+
|
|
33
|
+
## Quick start
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Sanity / auth probe
|
|
37
|
+
python scripts/run-tool.py connector-builder check
|
|
38
|
+
|
|
39
|
+
# 1. Create a build from API docs
|
|
40
|
+
python scripts/run-tool.py connector-builder create-build \
|
|
41
|
+
--api-url "https://api.example.com/docs" \
|
|
42
|
+
--user-requirements "A connector that lists and creates orders."
|
|
43
|
+
|
|
44
|
+
# 2. Gather + clarify → returns clarification questions.
|
|
45
|
+
# The sync LLM stages (gather/answer/revise-plan) 504 at the proxy but finish
|
|
46
|
+
# server-side — pass --wait to swallow the 504 and poll to the settled state.
|
|
47
|
+
python scripts/run-tool.py connector-builder gather --build-id <ID> --wait
|
|
48
|
+
|
|
49
|
+
# 3. Answer the questions → triggers PLAN
|
|
50
|
+
python scripts/run-tool.py connector-builder answer --build-id <ID> \
|
|
51
|
+
--answers '{"q1":"OAuth2 client credentials","q2":"JSON"}'
|
|
52
|
+
|
|
53
|
+
# 4. Approve the plan → GENERATE (pauses for review)
|
|
54
|
+
python scripts/run-tool.py connector-builder approve-plan --build-id <ID>
|
|
55
|
+
|
|
56
|
+
# 5. Accept generated files → VALIDATE → COMPILE → FIX → DELIVER
|
|
57
|
+
python scripts/run-tool.py connector-builder approve-generate --build-id <ID>
|
|
58
|
+
|
|
59
|
+
# 6. Download the compiled connector
|
|
60
|
+
python scripts/run-tool.py connector-builder download-artifact --build-id <ID> --out connector.nupkg
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Prefer the **fully automatic** path? `start-build --build-id <ID>` runs every stage as one background task (no per-stage pauses); poll `get-build` for status.
|
|
64
|
+
|
|
65
|
+
## Actions
|
|
66
|
+
|
|
67
|
+
Run `python scripts/run-tool.py connector-builder --help` for the full list. Grouped:
|
|
68
|
+
|
|
69
|
+
**Auth / identity** — `check`, `whoami`, `list-api-keys`, `create-api-key`, `revoke-api-key`, `set-llm-key`, `delete-llm-key`
|
|
70
|
+
|
|
71
|
+
**Build lifecycle** — `list-builds`, `get-build`, `create-build`, `start-build`, `gather`, `answer`, `approve-plan`, `revise-plan`, `approve-generate`, `regenerate`, `regenerate-file`, `validate-autofix`, `validate-continue`, `validate-return-to-generate`, `retry`, `override-stage`, `stage-override-options`, `reset`, `set-version`, `archive`, `unarchive`, `wait-build`
|
|
72
|
+
|
|
73
|
+
> **Surviving the proxy 504:** the synchronous LLM stages (`gather`, `answer`, `revise-plan`) can exceed the gateway timeout and return a 504 while completing server-side. Pass `--wait` (with optional `--wait-timeout` / `--poll-interval`) to swallow that and poll to the settled state. After the background stages (`approve-generate`, `retry`, `start-build`), use `wait-build --build-id <ID>` (optionally `--until terminal`) to block until compile finishes.
|
|
74
|
+
|
|
75
|
+
**Diagnostics** — `logs`, `events`, `list-messages`, `post-message`, `telemetry`, `list-issues`, `get-issue`, `build-selftest`
|
|
76
|
+
|
|
77
|
+
**Files & artifact** — `list-file-versions`, `get-file-version`, `update-file`, `set-file-instructions`, `download-file`, `download-all`, `download-artifact`
|
|
78
|
+
|
|
79
|
+
**Admin / improve-the-builder** — `get-config`, `update-config`, `reload-config`, `knowledge-list`, `knowledge-get`, `knowledge-create`, `knowledge-update`, `knowledge-delete`, `list-users`
|
|
80
|
+
|
|
81
|
+
**Escape hatch** — `api --method --path --query --body [--out]` for any endpoint not first-classed.
|
|
82
|
+
|
|
83
|
+
## Feedback loops (how you improve a connector)
|
|
84
|
+
|
|
85
|
+
| Where it fails | Action |
|
|
86
|
+
|---|---|
|
|
87
|
+
| Plan is wrong | `revise-plan --feedback "..."` |
|
|
88
|
+
| Generated code is wrong | `regenerate-file --filename X --instructions "..."` or `regenerate` |
|
|
89
|
+
| Validation findings | `validate-autofix` / `validate-continue` / `validate-return-to-generate` |
|
|
90
|
+
| Compile failed | `retry --from-step 6` (skips straight to compile→fix→deliver) |
|
|
91
|
+
| Need to jump stages | `override-stage --target-step N --target-status running|waiting_user` |
|
|
92
|
+
| **Builder generates badly across all builds** | edit `knowledge-*` (prompts / spec_module / example / validation_rule / clarification) then `reload-config` |
|
|
93
|
+
|
|
94
|
+
## Contract
|
|
95
|
+
|
|
96
|
+
JSON in / JSON out. Success → one JSON object on stdout, exit 0. Failure → `{"error": {"code","message","details"}}`, non-zero exit. Error codes: `invalid_argument` (2), `auth_required`, `auth_failed`, `api_error`, `error`.
|
|
97
|
+
|
|
98
|
+
## Notes & internals
|
|
99
|
+
|
|
100
|
+
- `tool.yaml` is **generated** from the handlers by `gen_manifest.py` — edit handlers + the header consts, then rerun `.venv/Scripts/python tools/connector-builder/gen_manifest.py`. A manifest-sync test enforces this.
|
|
101
|
+
- Wire details, gotchas, and the PROCESIO interop are in **CONNECTOR-BUILDER-API-NOTES.md**.
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: connector-builder
|
|
3
|
+
description: 'AI Connector Builder (connector-builder.procesio.app): turn API documentation into a compiled PROCESIO Custom Action .nupkg connector via an 8-stage LLM pipeline (gather -> clarify -> plan -> generate -> validate -> compile -> fix -> deliver). Drive the whole build lifecycle, read/write generated files, download the .nupkg artifact (to upload to PROCESIO for live testing), inspect logs/telemetry,…'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# connector-builder
|
|
7
|
+
|
|
8
|
+
AI Connector Builder (connector-builder.procesio.app): turn API documentation into a compiled PROCESIO Custom Action .nupkg connector via an 8-stage LLM pipeline (gather -> clarify -> plan -> generate -> validate -> compile -> fix -> deliver). Drive the whole build lifecycle, read/write generated files, download the .nupkg artifact (to upload to PROCESIO for live testing), inspect logs/telemetry, and edit the builder's own knowledge base (prompts, spec modules, examples, validation rules). Two auth modes, both -> Bearer token: an acb_ API key, or username/password via /auth/login.
|
|
9
|
+
|
|
10
|
+
## How to call it
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
python scripts/run-tool.py connector-builder <action> [--args]
|
|
14
|
+
# e.g. connector-builder create-build --api-url <docs-url> --user-requirements '...' (then gather / answer / approve-plan / approve-generate / download-artifact)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
One JSON object on stdout for success; `{"error": {"code", "message", "details"}}` and a non-zero exit on failure. Progress and logs go to stderr only.
|
|
18
|
+
|
|
19
|
+
**Start with `create-build`.**
|
|
20
|
+
|
|
21
|
+
## Credentials
|
|
22
|
+
|
|
23
|
+
Stored in the OS credential store, never in files. Missing ones are reported by `python scripts/list-tools.py`.
|
|
24
|
+
|
|
25
|
+
- `agents-and-tools:connector-builder:api-key` — Connector Builder API key (acb_...). Used verbatim as the bearer token.
|
|
26
|
+
- `agents-and-tools:connector-builder:username` — Login email for username/password auth mode (e.g. user@example.com).
|
|
27
|
+
- `agents-and-tools:connector-builder:password` — Login password for username/password auth mode (-> POST /auth/login -> JWT).
|
|
28
|
+
|
|
29
|
+
## Actions
|
|
30
|
+
|
|
31
|
+
### answer
|
|
32
|
+
|
|
33
|
+
| action | required args | what it does |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `answer` | `--build-id`, `--answers` | Submit clarification answers; triggers PLAN. |
|
|
36
|
+
|
|
37
|
+
### api
|
|
38
|
+
|
|
39
|
+
| action | required args | what it does |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| `api` | `--path` | Call any endpoint (method/path/query/body); --out streams binary. |
|
|
42
|
+
|
|
43
|
+
### approve
|
|
44
|
+
|
|
45
|
+
| action | required args | what it does |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `approve-generate` | `--build-id` | Accept generated files; runs VALIDATE->COMPILE->FIX->DELIVER. |
|
|
48
|
+
| `approve-plan` | `--build-id` | Approve plan; triggers GENERATE (then pauses). |
|
|
49
|
+
|
|
50
|
+
### archive
|
|
51
|
+
|
|
52
|
+
| action | required args | what it does |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `archive` | `--build-id` | Archive a build (admin). |
|
|
55
|
+
|
|
56
|
+
### build
|
|
57
|
+
|
|
58
|
+
| action | required args | what it does |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `build-selftest` | — | Compiler health self-test (trivial C#). |
|
|
61
|
+
|
|
62
|
+
### check
|
|
63
|
+
|
|
64
|
+
| action | required args | what it does |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| `check` | — | Connectivity + auth probe (GET /auth/me). |
|
|
67
|
+
|
|
68
|
+
### create
|
|
69
|
+
|
|
70
|
+
| action | required args | what it does |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| `create-api-key` | `--name` | Create an API key (full_key shown only once). |
|
|
73
|
+
| `create-build` | — | Create a build from URL(s) / pasted docs. |
|
|
74
|
+
|
|
75
|
+
### delete
|
|
76
|
+
|
|
77
|
+
| action | required args | what it does |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| `delete-llm-key` | — | Remove the stored LLM provider key. |
|
|
80
|
+
|
|
81
|
+
### download
|
|
82
|
+
|
|
83
|
+
| action | required args | what it does |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| `download-all` | `--build-id`, `--out` | Download all generated files as a zip to --out. |
|
|
86
|
+
| `download-artifact` | `--build-id`, `--out` | Download the compiled .nupkg to --out (upload to PROCESIO). |
|
|
87
|
+
| `download-file` | `--build-id`, `--filename`, `--out` | Download one generated file to --out. |
|
|
88
|
+
|
|
89
|
+
### events
|
|
90
|
+
|
|
91
|
+
| action | required args | what it does |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| `events` | `--build-id` | Per-build pipeline events. |
|
|
94
|
+
|
|
95
|
+
### gather
|
|
96
|
+
|
|
97
|
+
| action | required args | what it does |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| `gather` | `--build-id` | Run GATHER+CLARIFY (profile+questions); --wait survives the 504. |
|
|
100
|
+
|
|
101
|
+
### get
|
|
102
|
+
|
|
103
|
+
| action | required args | what it does |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| `get-build` | `--build-id` | Full build detail (all JSONB fields). |
|
|
106
|
+
| `get-config` | `--which` | Read a config block (pipeline/providers/...). |
|
|
107
|
+
| `get-file-version` | `--build-id`, `--filename`, `--version` | Full content of one file at a specific version. |
|
|
108
|
+
| `get-issue` | `--id` | Full issue-case detail incl. snapshots. |
|
|
109
|
+
|
|
110
|
+
### knowledge
|
|
111
|
+
|
|
112
|
+
| action | required args | what it does |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| `knowledge-create` | `--module-type`, `--name` | Create a new knowledge module. |
|
|
115
|
+
| `knowledge-delete` | `--module-type`, `--name` | Delete a knowledge module. |
|
|
116
|
+
| `knowledge-get` | `--module-type`, `--name` | Get one knowledge module's content. |
|
|
117
|
+
| `knowledge-list` | `--module-type` | List knowledge modules of a type. |
|
|
118
|
+
| `knowledge-update` | `--module-type`, `--name` | Update an existing knowledge module. |
|
|
119
|
+
|
|
120
|
+
### list
|
|
121
|
+
|
|
122
|
+
| action | required args | what it does |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| `list-api-keys` | — | List your API keys. |
|
|
125
|
+
| `list-builds` | — | List builds (paginated, filterable). |
|
|
126
|
+
| `list-file-versions` | `--build-id` | Version metadata for every file in a build (no content). |
|
|
127
|
+
| `list-issues` | — | List issue cases (failures), filterable. |
|
|
128
|
+
| `list-messages` | `--build-id` | Chat/system messages for a build. |
|
|
129
|
+
| `list-users` | — | List all users (admin). |
|
|
130
|
+
|
|
131
|
+
### logs
|
|
132
|
+
|
|
133
|
+
| action | required args | what it does |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| `logs` | `--build-id` | Per-build stage logs (model/cost/token breakdown). |
|
|
136
|
+
|
|
137
|
+
### override
|
|
138
|
+
|
|
139
|
+
| action | required args | what it does |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| `override-stage` | `--build-id`, `--target-step`, `--target-status` | Jump the build to a target step/status. |
|
|
142
|
+
|
|
143
|
+
### post
|
|
144
|
+
|
|
145
|
+
| action | required args | what it does |
|
|
146
|
+
|---|---|---|
|
|
147
|
+
| `post-message` | `--build-id`, `--step`, `--content` | Post a chat message to a build/step. |
|
|
148
|
+
|
|
149
|
+
### regenerate
|
|
150
|
+
|
|
151
|
+
| action | required args | what it does |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| `regenerate` | `--build-id` | Regenerate files with per-file/general instructions. |
|
|
154
|
+
| `regenerate-file` | `--build-id`, `--filename`, `--instructions` | Regenerate a single file with instructions. |
|
|
155
|
+
|
|
156
|
+
### reload
|
|
157
|
+
|
|
158
|
+
| action | required args | what it does |
|
|
159
|
+
|---|---|---|
|
|
160
|
+
| `reload-config` | — | Reload all YAML config + knowledge cache. |
|
|
161
|
+
|
|
162
|
+
### reset
|
|
163
|
+
|
|
164
|
+
| action | required args | what it does |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
| `reset` | `--build-id` | Reset a failed/clarifying/planning build to pending. |
|
|
167
|
+
|
|
168
|
+
### retry
|
|
169
|
+
|
|
170
|
+
| action | required args | what it does |
|
|
171
|
+
|---|---|---|
|
|
172
|
+
| `retry` | `--build-id` | Retry the pipeline from a step (or last failed). |
|
|
173
|
+
|
|
174
|
+
### revise
|
|
175
|
+
|
|
176
|
+
| action | required args | what it does |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| `revise` | `--build-id` | Re-open a COMPLETED build to the generate pause for a small fix (then regenerate-file + approve-generate); bumps the version. |
|
|
179
|
+
| `revise-plan` | `--build-id`, `--feedback` | Revise the plan with free-text feedback. |
|
|
180
|
+
|
|
181
|
+
### revoke
|
|
182
|
+
|
|
183
|
+
| action | required args | what it does |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| `revoke-api-key` | `--id` | Revoke an API key by id. |
|
|
186
|
+
|
|
187
|
+
### set
|
|
188
|
+
|
|
189
|
+
| action | required args | what it does |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| `set-file-instructions` | `--build-id`, `--filename`, `--instructions` | Save per-file regeneration instructions. |
|
|
192
|
+
| `set-llm-key` | `--api-key`, `--provider` | Set the LLM provider key that powers builds. |
|
|
193
|
+
| `set-version` | `--build-id`, `--major`, `--minor`, `--patch` | Set Major.Minor.Patch (at Plan/waiting_user). |
|
|
194
|
+
|
|
195
|
+
### stage
|
|
196
|
+
|
|
197
|
+
| action | required args | what it does |
|
|
198
|
+
|---|---|---|
|
|
199
|
+
| `stage-override-options` | — | Valid stage-override targets for override-stage. |
|
|
200
|
+
|
|
201
|
+
### start
|
|
202
|
+
|
|
203
|
+
| action | required args | what it does |
|
|
204
|
+
|---|---|---|
|
|
205
|
+
| `start-build` | `--build-id` | Run the FULL pipeline as a background task. |
|
|
206
|
+
|
|
207
|
+
### telemetry
|
|
208
|
+
|
|
209
|
+
| action | required args | what it does |
|
|
210
|
+
|---|---|---|
|
|
211
|
+
| `telemetry` | — | Cross-build LLM telemetry (cost/tokens/latency), filterable. |
|
|
212
|
+
|
|
213
|
+
### unarchive
|
|
214
|
+
|
|
215
|
+
| action | required args | what it does |
|
|
216
|
+
|---|---|---|
|
|
217
|
+
| `unarchive` | `--build-id` | Unarchive a build (admin). |
|
|
218
|
+
|
|
219
|
+
### update
|
|
220
|
+
|
|
221
|
+
| action | required args | what it does |
|
|
222
|
+
|---|---|---|
|
|
223
|
+
| `update-config` | `--which` | Update a config block from JSON. |
|
|
224
|
+
| `update-file` | `--build-id`, `--filename` | Overwrite a file's content (inline or from --content-file). |
|
|
225
|
+
|
|
226
|
+
### validate
|
|
227
|
+
|
|
228
|
+
| action | required args | what it does |
|
|
229
|
+
|---|---|---|
|
|
230
|
+
| `validate-autofix` | `--build-id` | Auto-fix validation findings. |
|
|
231
|
+
| `validate-continue` | `--build-id` | Continue past validation to COMPILE. |
|
|
232
|
+
| `validate-return-to-generate` | `--build-id` | Return from VALIDATE back to GENERATE. |
|
|
233
|
+
|
|
234
|
+
### wait
|
|
235
|
+
|
|
236
|
+
| action | required args | what it does |
|
|
237
|
+
|---|---|---|
|
|
238
|
+
| `wait-build` | `--build-id` | Poll get-build until settled/terminal (use after approve-generate/retry). |
|
|
239
|
+
|
|
240
|
+
### whoami
|
|
241
|
+
|
|
242
|
+
| action | required args | what it does |
|
|
243
|
+
|---|---|---|
|
|
244
|
+
| `whoami` | — | Full current-user record (GET /auth/me). |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
Generated from `tools/connector-builder/tool.yaml` by `scripts/build-tool-skill.py`. Do not edit by hand — change the manifest and regenerate.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""connector-builder tool package marker.
|
|
2
|
+
|
|
3
|
+
The dir name has a hyphen, so this tool's own modules are imported by BARE name
|
|
4
|
+
(``import client``, ``from handlers import builds``) with the tool root on
|
|
5
|
+
sys.path at runtime — see main.py. This file just makes the folder importable
|
|
6
|
+
as ``tools.connector_builder`` is NOT possible (hyphen); kept for parity.
|
|
7
|
+
"""
|