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.
Files changed (647) hide show
  1. procesio_cli/__init__.py +18 -0
  2. procesio_cli/_cli.py +71 -0
  3. procesio_cli/agents/__init__.py +0 -0
  4. procesio_cli/agents/_lib/__init__.py +0 -0
  5. procesio_cli/agents/_lib/actiondef.py +24 -0
  6. procesio_cli/agents/_lib/errors.py +40 -0
  7. procesio_cli/agents/_lib/reversibility.py +236 -0
  8. procesio_cli/agents/_lib/toolrunner.py +141 -0
  9. procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-PLAYBOOK.md +62 -0
  10. procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-PROCESIO-INTEROP.md +76 -0
  11. procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-TROUBLESHOOTING.md +60 -0
  12. procesio_cli/agents/connector-builder/README.md +51 -0
  13. procesio_cli/agents/connector-builder/agent.yaml +61 -0
  14. procesio_cli/agents/connector-builder/context.py +19 -0
  15. procesio_cli/agents/connector-builder/handlers/__init__.py +1 -0
  16. procesio_cli/agents/connector-builder/handlers/checklist.py +71 -0
  17. procesio_cli/agents/connector-builder/handlers/guidance.py +37 -0
  18. procesio_cli/agents/connector-builder/handlers/nextstep.py +221 -0
  19. procesio_cli/agents/connector-builder/handlers/status.py +35 -0
  20. procesio_cli/agents/connector-builder/knowledge.py +47 -0
  21. procesio_cli/agents/connector-builder/main.py +93 -0
  22. procesio_cli/agents/connector-builder/tests/conftest.py +95 -0
  23. procesio_cli/agents/connector-builder/tests/test_cba_agent.py +148 -0
  24. procesio_cli/agents/orchestrator/__init__.py +0 -0
  25. procesio_cli/agents/orchestrator/bootstraplib.py +166 -0
  26. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/00-INDEX.md +60 -0
  27. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/01-PROCESSES.md +230 -0
  28. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/02-FORMS.md +287 -0
  29. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/03-INTEGRATIONS.md +384 -0
  30. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/04-DATABASE.md +293 -0
  31. procesio_cli/agents/procesio/PROCESIO-API-RELIABILITY-DOCTRINE.md +113 -0
  32. procesio_cli/agents/procesio/PROCESIO-BEST-PRACTICES.md +316 -0
  33. procesio_cli/agents/procesio/PROCESIO-BUILD-AND-TEST-PLAYBOOK.md +217 -0
  34. procesio_cli/agents/procesio/PROCESIO-DATASTORE.md +72 -0
  35. procesio_cli/agents/procesio/PROCESIO-ENVIRONMENTS.md +62 -0
  36. procesio_cli/agents/procesio/PROCESIO-SCHEDULING.md +47 -0
  37. procesio_cli/agents/procesio/PROCESIO-VISUAL-ORGANIZATION.md +175 -0
  38. procesio_cli/agents/procesio/README.md +97 -0
  39. procesio_cli/agents/procesio/__init__.py +0 -0
  40. procesio_cli/agents/procesio/agent.yaml +73 -0
  41. procesio_cli/agents/procesio/audit.py +226 -0
  42. procesio_cli/agents/procesio/checklist.py +135 -0
  43. procesio_cli/agents/procesio/context.py +19 -0
  44. procesio_cli/agents/procesio/handlers/__init__.py +0 -0
  45. procesio_cli/agents/procesio/handlers/audit.py +39 -0
  46. procesio_cli/agents/procesio/handlers/checklist.py +34 -0
  47. procesio_cli/agents/procesio/handlers/guidance.py +36 -0
  48. procesio_cli/agents/procesio/handlers/status.py +33 -0
  49. procesio_cli/agents/procesio/handlers/verify.py +39 -0
  50. procesio_cli/agents/procesio/knowledge.py +115 -0
  51. procesio_cli/agents/procesio/main.py +89 -0
  52. procesio_cli/agents/procesio/tests/__init__.py +0 -0
  53. procesio_cli/agents/procesio/tests/conftest.py +62 -0
  54. procesio_cli/agents/procesio/tests/test_audit.py +91 -0
  55. procesio_cli/agents/procesio/tests/test_checklist.py +28 -0
  56. procesio_cli/agents/procesio/tests/test_guidance.py +78 -0
  57. procesio_cli/agents/procesio/tests/test_manifest_sync.py +48 -0
  58. procesio_cli/agents/procesio/tests/test_verify.py +134 -0
  59. procesio_cli/agents/procesio/tests/test_workspace_scope.py +97 -0
  60. procesio_cli/agents/procesio/verifylib.py +222 -0
  61. procesio_cli/dashboard/README.md +117 -0
  62. procesio_cli/dashboard/__init__.py +18 -0
  63. procesio_cli/dashboard/serve.py +98 -0
  64. procesio_cli/dashboard/server/__init__.py +1 -0
  65. procesio_cli/dashboard/server/config_schemas.py +92 -0
  66. procesio_cli/dashboard/server/google.py +103 -0
  67. procesio_cli/dashboard/server/handler.py +160 -0
  68. procesio_cli/dashboard/server/inventory.py +213 -0
  69. procesio_cli/dashboard/server/jobs.py +118 -0
  70. procesio_cli/dashboard/server/llmtest.py +181 -0
  71. procesio_cli/dashboard/server/procesio_env.py +94 -0
  72. procesio_cli/dashboard/server/routes.py +74 -0
  73. procesio_cli/dashboard/server/runner.py +150 -0
  74. procesio_cli/dashboard/server/security.py +29 -0
  75. procesio_cli/dashboard/server/setup.py +211 -0
  76. procesio_cli/dashboard/server/validate.py +152 -0
  77. procesio_cli/dashboard/tests/conftest.py +16 -0
  78. procesio_cli/dashboard/tests/test_dashboard.py +225 -0
  79. procesio_cli/dashboard/tests/test_procesio_env.py +159 -0
  80. procesio_cli/dashboard/web/actions.js +274 -0
  81. procesio_cli/dashboard/web/api.js +79 -0
  82. procesio_cli/dashboard/web/app.js +385 -0
  83. procesio_cli/dashboard/web/copilot.js +72 -0
  84. procesio_cli/dashboard/web/google.js +121 -0
  85. procesio_cli/dashboard/web/index.html +67 -0
  86. procesio_cli/dashboard/web/procesio_env.js +187 -0
  87. procesio_cli/dashboard/web/styles.css +207 -0
  88. procesio_cli/registry.py +370 -0
  89. procesio_cli/scripts/build-router.py +249 -0
  90. procesio_cli/scripts/build-tool-skill.py +202 -0
  91. procesio_cli/scripts/check-requirements.py +131 -0
  92. procesio_cli/scripts/check-skill-governance.py +174 -0
  93. procesio_cli/scripts/evaluate-skill-routing.py +217 -0
  94. procesio_cli/scripts/evaluate-skills.py +316 -0
  95. procesio_cli/scripts/get-skill.py +122 -0
  96. procesio_cli/scripts/list-skills.py +68 -0
  97. procesio_cli/scripts/list-tools.py +73 -0
  98. procesio_cli/scripts/run-agent.py +59 -0
  99. procesio_cli/scripts/run-tool.py +123 -0
  100. procesio_cli/scripts/secret_scan.py +584 -0
  101. procesio_cli/scripts/set-credential.py +126 -0
  102. procesio_cli/scripts/validate-skills.py +530 -0
  103. procesio_cli/skills/PORTFOLIO.md +134 -0
  104. procesio_cli/skills/__init__.py +6 -0
  105. procesio_cli/skills/agent-skill-engineer/SKILL.md +226 -0
  106. procesio_cli/skills/agent-skill-engineer/evals/evals.json +422 -0
  107. procesio_cli/skills/agent-skill-engineer/references/authoring-standard.md +178 -0
  108. procesio_cli/skills/agent-skill-engineer/references/decision-framework.md +107 -0
  109. procesio_cli/skills/agent-skill-engineer/references/domain-evidence-protocol.md +248 -0
  110. procesio_cli/skills/agent-skill-engineer/references/evaluation-standard.md +191 -0
  111. procesio_cli/skills/agent-skill-engineer/references/expert-lenses.md +167 -0
  112. procesio_cli/skills/agent-skill-engineer/references/field-gate-standard.md +231 -0
  113. procesio_cli/skills/agent-skill-engineer/references/optimization-protocol.md +233 -0
  114. procesio_cli/skills/agent-skill-engineer/references/optimizer-contract.md +268 -0
  115. procesio_cli/skills/agent-skill-engineer/references/portability-standard.md +99 -0
  116. procesio_cli/skills/agent-skill-engineer/references/research-basis.md +128 -0
  117. procesio_cli/skills/agent-skill-engineer/references/review-standard.md +143 -0
  118. procesio_cli/skills/agent-skill-engineer/scripts/audit_skill.py +959 -0
  119. procesio_cli/skills/agent-skill-engineer/scripts/optimize_skill.py +891 -0
  120. procesio_cli/skills/agent-skill-engineer/scripts/scaffold_skill.py +397 -0
  121. procesio_cli/skills/evals/baseline-catalog.json +14 -0
  122. procesio_cli/skills/evals/baseline-routing-v2.json +38 -0
  123. procesio_cli/skills/evals/baseline.json +37 -0
  124. procesio_cli/skills/evals/behavioral.json +367 -0
  125. procesio_cli/skills/evals/field-boundary-development-v1.json +126 -0
  126. procesio_cli/skills/evals/field-closeout-correction-development-v1.json +23 -0
  127. procesio_cli/skills/evals/field-closeout-development-v1.json +89 -0
  128. procesio_cli/skills/evals/portfolio-pressure-training-v1.json +83 -0
  129. procesio_cli/skills/evals/routing.json +363 -0
  130. procesio_cli/skills/evals/validation-baseline.json +4 -0
  131. procesio_cli/skills/procesio-cli/SKILL.md +134 -0
  132. procesio_cli/skills/procesio-cli/evals/evals.json +111 -0
  133. procesio_cli/skills/procesio-cli/evals/workflows.json +16 -0
  134. procesio_cli/skills/procesio-cli/references/connector-lifecycle.md +47 -0
  135. procesio_cli/skills/procesio-cli/references/credentials-admin.md +113 -0
  136. procesio_cli/skills/procesio-cli/references/data-verification.md +71 -0
  137. procesio_cli/skills/procesio-cli/references/documents-files.md +44 -0
  138. procesio_cli/skills/procesio-cli/references/form-e2e.md +57 -0
  139. procesio_cli/skills/procesio-cli/references/operation-contract.md +138 -0
  140. procesio_cli/skills/procesio-cli/references/process-debugging.md +65 -0
  141. procesio_cli/skills/procesio-cli/references/process-lifecycle.md +88 -0
  142. procesio_cli/skills/procesio-cli/references/schedules-webhooks.md +58 -0
  143. procesio_cli/skills/procesio-cli/references/transport-environments.md +53 -0
  144. procesio_cli/skills/procesio-cli-maintainer/SKILL.md +84 -0
  145. procesio_cli/skills/procesio-cli-maintainer/evals/evals.json +116 -0
  146. procesio_cli/skills/procesio-cli-maintainer/references/change-contract.md +34 -0
  147. procesio_cli/skills/procesio-cli-maintainer/references/mcp-compatibility.md +13 -0
  148. procesio_cli/skills/procesio-cli-maintainer/references/skill-authoring.md +51 -0
  149. procesio_cli/skills/procesio-platform-advisor/SKILL.md +82 -0
  150. procesio_cli/skills/procesio-platform-advisor/evals/evals.json +116 -0
  151. procesio_cli/skills/procesio-platform-advisor/references/capability-map.md +22 -0
  152. procesio_cli/skills/procesio-platform-advisor/references/fit-framework.md +35 -0
  153. procesio_cli/skills/procesio-platform-advisor/references/freshness-policy.md +25 -0
  154. procesio_cli/skills/procesio-platform-advisor/references/sizing-method.md +70 -0
  155. procesio_cli/skills/procesio-platform-advisor/scripts/estimate_capacity.py +99 -0
  156. procesio_cli/skills/procesio-setup/SKILL.md +180 -0
  157. procesio_cli/skills/sql-server-optimizer/SKILL.md +86 -0
  158. procesio_cli/skills/sql-server-optimizer/evals/evals.json +116 -0
  159. procesio_cli/skills/sql-server-optimizer/references/db-context.md +44 -0
  160. procesio_cli/skills/sql-server-optimizer/references/generic-mode.md +32 -0
  161. procesio_cli/skills/sql-server-optimizer/references/procesio-mode.md +40 -0
  162. procesio_cli/skills/sql-server-optimizer/references/sql-rules.md +43 -0
  163. procesio_cli/skills/sql-server-optimizer/scripts/export-indexes.sql +178 -0
  164. procesio_cli/skills/sql-server-optimizer/scripts/export-procs-and-functions.sql +118 -0
  165. procesio_cli/skills/sql-server-optimizer/scripts/export-tables.sql +367 -0
  166. procesio_cli/skills/tests/__init__.py +0 -0
  167. procesio_cli/skills/tests/test_agent_skill_engineer.py +240 -0
  168. procesio_cli/skills/tests/test_auth_failure_stop.py +25 -0
  169. procesio_cli/skills/tests/test_capacity_estimator.py +85 -0
  170. procesio_cli/skills/tests/test_field_boundary_learning.py +100 -0
  171. procesio_cli/skills/tests/test_field_closeout_learning.py +123 -0
  172. procesio_cli/skills/tests/test_field_gate_standard.py +76 -0
  173. procesio_cli/skills/tests/test_operational_playbooks.py +51 -0
  174. procesio_cli/skills/tests/test_portfolio_pressure_training.py +35 -0
  175. procesio_cli/skills/tests/test_process_lifecycle_single_run.py +25 -0
  176. procesio_cli/skills/tests/test_skill_evaluator.py +67 -0
  177. procesio_cli/skills/tests/test_skill_optimizer.py +473 -0
  178. procesio_cli/skills/tests/test_skill_portfolio_review.py +70 -0
  179. procesio_cli/skills/tests/test_skill_release_binding.py +204 -0
  180. procesio_cli/skills/tests/test_skill_routing.py +74 -0
  181. procesio_cli/skills/tests/test_skill_scaffold_v2.py +116 -0
  182. procesio_cli/skills/tests/test_validate_skills.py +115 -0
  183. procesio_cli/tools/__init__.py +0 -0
  184. procesio_cli/tools/_lib/README.md +119 -0
  185. procesio_cli/tools/_lib/__init__.py +0 -0
  186. procesio_cli/tools/_lib/accounting.py +120 -0
  187. procesio_cli/tools/_lib/contacts.py +544 -0
  188. procesio_cli/tools/_lib/creds.py +83 -0
  189. procesio_cli/tools/_lib/creds_backends.py +578 -0
  190. procesio_cli/tools/_lib/dbprofiles.py +147 -0
  191. procesio_cli/tools/_lib/dbquery.py +286 -0
  192. procesio_cli/tools/_lib/dbschema.py +225 -0
  193. procesio_cli/tools/_lib/io.py +54 -0
  194. procesio_cli/tools/_lib/manifest.py +297 -0
  195. procesio_cli/tools/_lib/skill_release.py +127 -0
  196. procesio_cli/tools/_lib/skill_resources.py +118 -0
  197. procesio_cli/tools/_lib/userdata.py +228 -0
  198. procesio_cli/tools/_lib/webserialize/__init__.py +16 -0
  199. procesio_cli/tools/_lib/webserialize/admin.py +61 -0
  200. procesio_cli/tools/_lib/webserialize/client.py +264 -0
  201. procesio_cli/tools/_lib/webserialize/config.py +96 -0
  202. procesio_cli/tools/_lib/webserialize/errors.py +27 -0
  203. procesio_cli/tools/_lib/webserialize/framing.py +45 -0
  204. procesio_cli/tools/_lib/webserialize/registry.py +47 -0
  205. procesio_cli/tools/_lib/webserialize/runtime.py +61 -0
  206. procesio_cli/tools/_lib/webserialize/server.py +510 -0
  207. procesio_cli/tools/_lib/websession.py +194 -0
  208. procesio_cli/tools/connector-builder/CONNECTOR-BUILDER-API-NOTES.md +91 -0
  209. procesio_cli/tools/connector-builder/README.md +101 -0
  210. procesio_cli/tools/connector-builder/SKILL.md +248 -0
  211. procesio_cli/tools/connector-builder/__init__.py +7 -0
  212. procesio_cli/tools/connector-builder/actiondef.py +24 -0
  213. procesio_cli/tools/connector-builder/client.py +251 -0
  214. procesio_cli/tools/connector-builder/errors.py +44 -0
  215. procesio_cli/tools/connector-builder/gen_manifest.py +142 -0
  216. procesio_cli/tools/connector-builder/handlers/__init__.py +1 -0
  217. procesio_cli/tools/connector-builder/handlers/admin.py +182 -0
  218. procesio_cli/tools/connector-builder/handlers/auth.py +74 -0
  219. procesio_cli/tools/connector-builder/handlers/builds.py +396 -0
  220. procesio_cli/tools/connector-builder/handlers/common.py +104 -0
  221. procesio_cli/tools/connector-builder/handlers/files.py +111 -0
  222. procesio_cli/tools/connector-builder/handlers/raw.py +38 -0
  223. procesio_cli/tools/connector-builder/handlers/telemetry.py +39 -0
  224. procesio_cli/tools/connector-builder/main.py +94 -0
  225. procesio_cli/tools/connector-builder/tests/conftest.py +146 -0
  226. procesio_cli/tools/connector-builder/tests/test_cb_client.py +86 -0
  227. procesio_cli/tools/connector-builder/tests/test_cb_dispatch.py +105 -0
  228. procesio_cli/tools/connector-builder/tests/test_cb_manifest_sync.py +76 -0
  229. procesio_cli/tools/connector-builder/tests/test_cb_wait.py +123 -0
  230. procesio_cli/tools/connector-builder/tool.yaml +671 -0
  231. procesio_cli/tools/framework-map/.gitattributes +2 -0
  232. procesio_cli/tools/framework-map/README.md +98 -0
  233. procesio_cli/tools/framework-map/SKILL.md +30 -0
  234. procesio_cli/tools/framework-map/app.js +188 -0
  235. procesio_cli/tools/framework-map/fm_builder.py +476 -0
  236. procesio_cli/tools/framework-map/fm_catalog.py +19 -0
  237. procesio_cli/tools/framework-map/fm_ro_catalog.py +94 -0
  238. procesio_cli/tools/framework-map/fm_strings.py +101 -0
  239. procesio_cli/tools/framework-map/main.py +95 -0
  240. procesio_cli/tools/framework-map/styles.css +214 -0
  241. procesio_cli/tools/framework-map/tests/conftest.py +33 -0
  242. procesio_cli/tools/framework-map/tests/test_fm_build.py +126 -0
  243. procesio_cli/tools/framework-map/tests/test_fm_manifest_sync.py +63 -0
  244. procesio_cli/tools/framework-map/tests/test_fm_store_tree.py +75 -0
  245. procesio_cli/tools/framework-map/tool.yaml +61 -0
  246. procesio_cli/tools/mysql/MOVED-TO-CENTRAL.md +29 -0
  247. procesio_cli/tools/mysql/README.md +196 -0
  248. procesio_cli/tools/mysql/SKILL.md +37 -0
  249. procesio_cli/tools/mysql/__init__.py +0 -0
  250. procesio_cli/tools/mysql/connection.py +191 -0
  251. procesio_cli/tools/mysql/main.py +487 -0
  252. procesio_cli/tools/mysql/profiles.template.json +1 -0
  253. procesio_cli/tools/mysql/schema.py +434 -0
  254. procesio_cli/tools/mysql/tests/__init__.py +0 -0
  255. procesio_cli/tools/mysql/tests/conftest.py +21 -0
  256. procesio_cli/tools/mysql/tests/test_manifest_sync.py +68 -0
  257. procesio_cli/tools/mysql/tests/test_mysql.py +201 -0
  258. procesio_cli/tools/mysql/tests/test_mysql_schema.py +337 -0
  259. procesio_cli/tools/mysql/tool.yaml +112 -0
  260. procesio_cli/tools/procesio/DTO-SUBTOOLS-NOTE.md +360 -0
  261. procesio_cli/tools/procesio/FORM-DEV-GUIDE/00-INDEX.md +67 -0
  262. procesio_cli/tools/procesio/FORM-DEV-GUIDE/01-ANATOMY.md +209 -0
  263. procesio_cli/tools/procesio/FORM-DEV-GUIDE/02-CODE-INJECTION.md +309 -0
  264. procesio_cli/tools/procesio/FORM-DEV-GUIDE/03-DOM-CONTRACT.md +370 -0
  265. procesio_cli/tools/procesio/FORM-DEV-GUIDE/04-INTERACTION-RECIPES.md +600 -0
  266. procesio_cli/tools/procesio/FORM-DEV-GUIDE/05-STEPPER-AND-MOTION.md +426 -0
  267. procesio_cli/tools/procesio/FORM-DEV-GUIDE/06-PROCESS-INTEGRATION.md +347 -0
  268. procesio_cli/tools/procesio/FORM-DEV-GUIDE/07-DEPLOY-WORKFLOW.md +294 -0
  269. procesio_cli/tools/procesio/FORM-DEV-GUIDE/08-PITFALLS.md +569 -0
  270. procesio_cli/tools/procesio/FORM-DEV-GUIDE/09-NAVIGATION-AND-HOSTING.md +308 -0
  271. procesio_cli/tools/procesio/PHASE4-E2E-NOTES.md +594 -0
  272. procesio_cli/tools/procesio/PROCESIO-API-CORRECTIONS.md +295 -0
  273. procesio_cli/tools/procesio/PROCESIO-API-NOTES.md +6976 -0
  274. procesio_cli/tools/procesio/PROCESIO-AUTH-NOTES.md +226 -0
  275. procesio_cli/tools/procesio/PROCESIO-CARD-BUILD-NOTES.md +183 -0
  276. procesio_cli/tools/procesio/PROCESIO-CONNECTORS-NOTES.md +141 -0
  277. procesio_cli/tools/procesio/PROCESIO-CUSTOM-ACTION-NOTES.md +179 -0
  278. procesio_cli/tools/procesio/PROCESIO-DOCS-FIX-REPORT.md +123 -0
  279. procesio_cli/tools/procesio/PROCESIO-ENVIRONMENTS-NOTES.md +94 -0
  280. procesio_cli/tools/procesio/PROCESIO-FE-VALIDATION-NOTES.md +107 -0
  281. procesio_cli/tools/procesio/PROCESIO-FOREACH-NOTES.md +199 -0
  282. procesio_cli/tools/procesio/PROCESIO-FORM-API-HANG-NOTE.md +101 -0
  283. procesio_cli/tools/procesio/PROCESIO-FORM-SUBMISSION-NOTES.md +172 -0
  284. procesio_cli/tools/procesio/PROCESIO-HTML-TO-DOCX-NOTES.md +110 -0
  285. procesio_cli/tools/procesio/PROCESIO-INSTANCE-HISTORY-NOTES.md +242 -0
  286. procesio_cli/tools/procesio/PROCESIO-METERING-NOTES.md +201 -0
  287. procesio_cli/tools/procesio/PROCESIO-NODE-CODE-NOTES.md +279 -0
  288. procesio_cli/tools/procesio/PROCESIO-NODE-MODULE-WHITELIST.md +113 -0
  289. procesio_cli/tools/procesio/PROCESIO-PYTHON-ACTION-NOTES.md +165 -0
  290. procesio_cli/tools/procesio/PROCESIO-QUERY-STORE-NOTES.md +826 -0
  291. procesio_cli/tools/procesio/PROCESIO-RECONCILIATION-PATTERNS.md +104 -0
  292. procesio_cli/tools/procesio/PROCESIO-RESOURCE-MODEL-NOTES.md +1100 -0
  293. procesio_cli/tools/procesio/PROCESIO-SEND-EMAIL-CRED-OPTIONALITY.md +45 -0
  294. procesio_cli/tools/procesio/PROCESIO-SEND-EMAIL-NOTES.md +252 -0
  295. procesio_cli/tools/procesio/PROCESIO-SQL-ACTIONS-NOTES.md +284 -0
  296. procesio_cli/tools/procesio/PROCESIO-USAGE-GUIDE.md +219 -0
  297. procesio_cli/tools/procesio/README.md +341 -0
  298. procesio_cli/tools/procesio/SCHEDULE-INPUT-SECURITY-NOTES.md +63 -0
  299. procesio_cli/tools/procesio/SKILL.md +694 -0
  300. procesio_cli/tools/procesio/__init__.py +1 -0
  301. procesio_cli/tools/procesio/actiondef.py +27 -0
  302. procesio_cli/tools/procesio/assets/html2docx/html2docx.js +2155 -0
  303. procesio_cli/tools/procesio/auth.py +354 -0
  304. procesio_cli/tools/procesio/autogen.py +121 -0
  305. procesio_cli/tools/procesio/client.py +355 -0
  306. procesio_cli/tools/procesio/config.py +96 -0
  307. procesio_cli/tools/procesio/data/endpoints.json +2901 -0
  308. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/01-authentication.md +180 -0
  309. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/02-conventions.md +116 -0
  310. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/ANONYMOUS-SURFACE.md +51 -0
  311. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/README.md +104 -0
  312. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/SYMBOL-INDEX.md +444 -0
  313. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/03-auth-users-workspaces.md +731 -0
  314. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/04-processes.md +913 -0
  315. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/05-actions.md +605 -0
  316. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/06-files.md +237 -0
  317. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/07-forms-documents.md +985 -0
  318. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/08-credentials.md +532 -0
  319. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/09-datastore-datatypes.md +830 -0
  320. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/10-custom-urls.md +319 -0
  321. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/11-subscriptions-resources-analytics.md +455 -0
  322. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/12-webhooks-notifications-misc.md +519 -0
  323. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/13-realtime-signalr.md +153 -0
  324. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/99-internal-and-other-services.md +52 -0
  325. procesio_cli/tools/procesio/docs_info/FormBuilder mock.ts +5725 -0
  326. procesio_cli/tools/procesio/docs_info/Procesio Platform Actions.json +30219 -0
  327. procesio_cli/tools/procesio/docs_info/form-config-enums.ts +92 -0
  328. procesio_cli/tools/procesio/docs_info/form-theme.ts +1603 -0
  329. procesio_cli/tools/procesio/docs_info/process-validation-reference-1.md +2739 -0
  330. procesio_cli/tools/procesio/dto/__init__.py +13 -0
  331. procesio_cli/tools/procesio/dto/credential/builder.py +179 -0
  332. procesio_cli/tools/procesio/dto/credential/config.schema.json +19 -0
  333. procesio_cli/tools/procesio/dto/credential/description.md +193 -0
  334. procesio_cli/tools/procesio/dto/credential/fixtures/rest.config.json +11 -0
  335. procesio_cli/tools/procesio/dto/credential/fixtures/rest.dto.json +28 -0
  336. procesio_cli/tools/procesio/dto/credential/fixtures/rest.template.json +44 -0
  337. procesio_cli/tools/procesio/dto/credential/template.dto.json +16 -0
  338. procesio_cli/tools/procesio/dto/data/_refresh.py +147 -0
  339. procesio_cli/tools/procesio/dto/data/action_catalog.json +30825 -0
  340. procesio_cli/tools/procesio/dto/data/action_families.json +55 -0
  341. procesio_cli/tools/procesio/dto/data/platform_types.json +182 -0
  342. procesio_cli/tools/procesio/dto/datatype/builder.py +223 -0
  343. procesio_cli/tools/procesio/dto/datatype/config.schema.json +47 -0
  344. procesio_cli/tools/procesio/dto/datatype/description.md +85 -0
  345. procesio_cli/tools/procesio/dto/datatype/fixtures/customer.config.json +41 -0
  346. procesio_cli/tools/procesio/dto/datatype/fixtures/customer.dto.json +164 -0
  347. procesio_cli/tools/procesio/dto/datatype/template.dto.json +37 -0
  348. procesio_cli/tools/procesio/dto/document/builder.py +193 -0
  349. procesio_cli/tools/procesio/dto/document/config.schema.json +33 -0
  350. procesio_cli/tools/procesio/dto/document/description.md +124 -0
  351. procesio_cli/tools/procesio/dto/document/fixtures/invoice.config.json +16 -0
  352. procesio_cli/tools/procesio/dto/document/fixtures/invoice.dto.json +32 -0
  353. procesio_cli/tools/procesio/dto/document/template.dto.json +14 -0
  354. procesio_cli/tools/procesio/dto/form/FORM-STYLING-NOTES.md +142 -0
  355. procesio_cli/tools/procesio/dto/form/GOLDEN-DRIFT-NOTES.md +72 -0
  356. procesio_cli/tools/procesio/dto/form/RUN-PROCESS-RESULT-NOTES.md +80 -0
  357. procesio_cli/tools/procesio/dto/form/addelement.py +277 -0
  358. procesio_cli/tools/procesio/dto/form/builder.py +1009 -0
  359. procesio_cli/tools/procesio/dto/form/capture_goldens.py +106 -0
  360. procesio_cli/tools/procesio/dto/form/code_cipher.py +67 -0
  361. procesio_cli/tools/procesio/dto/form/config.schema.json +76 -0
  362. procesio_cli/tools/procesio/dto/form/data_shell.json +1 -0
  363. procesio_cli/tools/procesio/dto/form/description.md +346 -0
  364. procesio_cli/tools/procesio/dto/form/elements/approval.json +259 -0
  365. procesio_cli/tools/procesio/dto/form/elements/assignee.json +137 -0
  366. procesio_cli/tools/procesio/dto/form/elements/button.json +125 -0
  367. procesio_cli/tools/procesio/dto/form/elements/chart.json +341 -0
  368. procesio_cli/tools/procesio/dto/form/elements/chat.json +199 -0
  369. procesio_cli/tools/procesio/dto/form/elements/checkbox.json +153 -0
  370. procesio_cli/tools/procesio/dto/form/elements/column.json +77 -0
  371. procesio_cli/tools/procesio/dto/form/elements/columns.json +78 -0
  372. procesio_cli/tools/procesio/dto/form/elements/datetime-input.json +304 -0
  373. procesio_cli/tools/procesio/dto/form/elements/divider.json +54 -0
  374. procesio_cli/tools/procesio/dto/form/elements/dropdown.json +130 -0
  375. procesio_cli/tools/procesio/dto/form/elements/dynamic-table-row.json +253 -0
  376. procesio_cli/tools/procesio/dto/form/elements/file-upload.json +196 -0
  377. procesio_cli/tools/procesio/dto/form/elements/file-viewer.json +169 -0
  378. procesio_cli/tools/procesio/dto/form/elements/heading.json +79 -0
  379. procesio_cli/tools/procesio/dto/form/elements/icon.json +107 -0
  380. procesio_cli/tools/procesio/dto/form/elements/image.json +174 -0
  381. procesio_cli/tools/procesio/dto/form/elements/input.json +206 -0
  382. procesio_cli/tools/procesio/dto/form/elements/list.json +202 -0
  383. procesio_cli/tools/procesio/dto/form/elements/number-input.json +202 -0
  384. procesio_cli/tools/procesio/dto/form/elements/paragraph.json +79 -0
  385. procesio_cli/tools/procesio/dto/form/elements/radiobox.json +174 -0
  386. procesio_cli/tools/procesio/dto/form/elements/section.json +114 -0
  387. procesio_cli/tools/procesio/dto/form/elements/select.json +217 -0
  388. procesio_cli/tools/procesio/dto/form/elements/side-panel.json +146 -0
  389. procesio_cli/tools/procesio/dto/form/elements/signature-pad.json +141 -0
  390. procesio_cli/tools/procesio/dto/form/elements/static-table-row.json +84 -0
  391. procesio_cli/tools/procesio/dto/form/elements/step.json +105 -0
  392. procesio_cli/tools/procesio/dto/form/elements/stepper.json +126 -0
  393. procesio_cli/tools/procesio/dto/form/elements/tab.json +77 -0
  394. procesio_cli/tools/procesio/dto/form/elements/table.json +279 -0
  395. procesio_cli/tools/procesio/dto/form/elements/tabs.json +114 -0
  396. procesio_cli/tools/procesio/dto/form/elements/textarea.json +213 -0
  397. procesio_cli/tools/procesio/dto/form/enum_map.json +68 -0
  398. procesio_cli/tools/procesio/dto/form/fieldpath.py +284 -0
  399. procesio_cli/tools/procesio/dto/form/fixtures/reg.config.json +32 -0
  400. procesio_cli/tools/procesio/dto/form/fixtures/reg.elements.json +638 -0
  401. procesio_cli/tools/procesio/dto/form/sync_from_mock.py +386 -0
  402. procesio_cli/tools/procesio/dto/framework.py +125 -0
  403. procesio_cli/tools/procesio/dto/process/builder.py +1991 -0
  404. procesio_cli/tools/procesio/dto/process/config.schema.json +159 -0
  405. procesio_cli/tools/procesio/dto/process/description.md +218 -0
  406. procesio_cli/tools/procesio/dto/process/fixtures/greet.config.json +32 -0
  407. procesio_cli/tools/procesio/dto/process/fixtures/greet.dto.json +317 -0
  408. procesio_cli/tools/procesio/dto/process/naming.py +305 -0
  409. procesio_cli/tools/procesio/dto/process/normalize.py +74 -0
  410. procesio_cli/tools/procesio/dto/process/template.dto.json +32 -0
  411. procesio_cli/tools/procesio/dto/refdata.py +87 -0
  412. procesio_cli/tools/procesio/dto/registry.py +27 -0
  413. procesio_cli/tools/procesio/dto/webhook/builder.py +142 -0
  414. procesio_cli/tools/procesio/dto/webhook/config.schema.json +25 -0
  415. procesio_cli/tools/procesio/dto/webhook/description.md +92 -0
  416. procesio_cli/tools/procesio/dto/webhook/fixtures/order.config.json +10 -0
  417. procesio_cli/tools/procesio/dto/webhook/fixtures/order.dto.json +25 -0
  418. procesio_cli/tools/procesio/dto/webhook/template.dto.json +14 -0
  419. procesio_cli/tools/procesio/environments.py +264 -0
  420. procesio_cli/tools/procesio/errors.py +166 -0
  421. procesio_cli/tools/procesio/flowmodel/README.md +37 -0
  422. procesio_cli/tools/procesio/flowmodel/__init__.py +14 -0
  423. procesio_cli/tools/procesio/flowmodel/digest.py +223 -0
  424. procesio_cli/tools/procesio/flowmodel/families.py +34 -0
  425. procesio_cli/tools/procesio/flowmodel/fevalidation.py +1098 -0
  426. procesio_cli/tools/procesio/flowmodel/formdigest.py +232 -0
  427. procesio_cli/tools/procesio/flowmodel/inspect.py +78 -0
  428. procesio_cli/tools/procesio/flowmodel/model.py +82 -0
  429. procesio_cli/tools/procesio/flowmodel/nodeparam.py +871 -0
  430. procesio_cli/tools/procesio/flowmodel/reader.py +191 -0
  431. procesio_cli/tools/procesio/flowmodel/sqlparam.py +410 -0
  432. procesio_cli/tools/procesio/form_code_keys.py +50 -0
  433. procesio_cli/tools/procesio/formlint.py +292 -0
  434. procesio_cli/tools/procesio/gen_manifest.py +118 -0
  435. procesio_cli/tools/procesio/handlers/__init__.py +1 -0
  436. procesio_cli/tools/procesio/handlers/auth_actions.py +103 -0
  437. procesio_cli/tools/procesio/handlers/catalog.py +147 -0
  438. procesio_cli/tools/procesio/handlers/common.py +90 -0
  439. procesio_cli/tools/procesio/handlers/customaction_ops.py +146 -0
  440. procesio_cli/tools/procesio/handlers/datastore_ops.py +482 -0
  441. procesio_cli/tools/procesio/handlers/datatype_ops.py +275 -0
  442. procesio_cli/tools/procesio/handlers/dto_actions.py +258 -0
  443. procesio_cli/tools/procesio/handlers/environment_admin.py +146 -0
  444. procesio_cli/tools/procesio/handlers/fevalidate.py +236 -0
  445. procesio_cli/tools/procesio/handlers/files.py +141 -0
  446. procesio_cli/tools/procesio/handlers/flowgraph.py +229 -0
  447. procesio_cli/tools/procesio/handlers/flowlint.py +269 -0
  448. procesio_cli/tools/procesio/handlers/form_chains.py +336 -0
  449. procesio_cli/tools/procesio/handlers/form_code.py +277 -0
  450. procesio_cli/tools/procesio/handlers/form_element.py +199 -0
  451. procesio_cli/tools/procesio/handlers/form_events.py +441 -0
  452. procesio_cli/tools/procesio/handlers/form_update.py +270 -0
  453. procesio_cli/tools/procesio/handlers/formprocess.py +211 -0
  454. procesio_cli/tools/procesio/handlers/generic.py +135 -0
  455. procesio_cli/tools/procesio/handlers/layout.py +137 -0
  456. procesio_cli/tools/procesio/handlers/nodeparams.py +1018 -0
  457. procesio_cli/tools/procesio/handlers/process_layout.py +189 -0
  458. procesio_cli/tools/procesio/handlers/process_naming.py +213 -0
  459. procesio_cli/tools/procesio/handlers/processes.py +416 -0
  460. procesio_cli/tools/procesio/handlers/profile_admin.py +184 -0
  461. procesio_cli/tools/procesio/handlers/resource_ops.py +447 -0
  462. procesio_cli/tools/procesio/handlers/schedules.py +320 -0
  463. procesio_cli/tools/procesio/handlers/sqlactions.py +232 -0
  464. procesio_cli/tools/procesio/handlers/transport.py +463 -0
  465. procesio_cli/tools/procesio/handlers/usageguide.py +222 -0
  466. procesio_cli/tools/procesio/layout/README.md +196 -0
  467. procesio_cli/tools/procesio/layout/__init__.py +11 -0
  468. procesio_cli/tools/procesio/layout/adapter.py +736 -0
  469. procesio_cli/tools/procesio/layout/cycles.py +186 -0
  470. procesio_cli/tools/procesio/layout/dispatch.py +39 -0
  471. procesio_cli/tools/procesio/layout/elk/elk_runner.mjs +50 -0
  472. procesio_cli/tools/procesio/layout/elk/package-lock.json +21 -0
  473. procesio_cli/tools/procesio/layout/elk/package.json +11 -0
  474. procesio_cli/tools/procesio/layout/elk_engine.py +568 -0
  475. procesio_cli/tools/procesio/layout/engine.py +1311 -0
  476. procesio_cli/tools/procesio/layout/report.py +187 -0
  477. procesio_cli/tools/procesio/main.py +179 -0
  478. procesio_cli/tools/procesio/profiles.py +193 -0
  479. procesio_cli/tools/procesio/reliability.py +193 -0
  480. procesio_cli/tools/procesio/sqlformat.py +167 -0
  481. procesio_cli/tools/procesio/swagger.py +51 -0
  482. procesio_cli/tools/procesio/tests/__init__.py +0 -0
  483. procesio_cli/tools/procesio/tests/conftest.py +129 -0
  484. procesio_cli/tools/procesio/tests/test_auth.py +200 -0
  485. procesio_cli/tools/procesio/tests/test_autogen.py +78 -0
  486. procesio_cli/tools/procesio/tests/test_builder_attrpath_sqlbind.py +180 -0
  487. procesio_cli/tools/procesio/tests/test_builder_custom_action_catalog.py +72 -0
  488. procesio_cli/tools/procesio/tests/test_client.py +114 -0
  489. procesio_cli/tools/procesio/tests/test_client_reliability.py +139 -0
  490. procesio_cli/tools/procesio/tests/test_customaction.py +103 -0
  491. procesio_cli/tools/procesio/tests/test_customaction_test.py +80 -0
  492. procesio_cli/tools/procesio/tests/test_cycles.py +69 -0
  493. procesio_cli/tools/procesio/tests/test_datastore.py +378 -0
  494. procesio_cli/tools/procesio/tests/test_datastore_node.py +94 -0
  495. procesio_cli/tools/procesio/tests/test_dispatch.py +170 -0
  496. procesio_cli/tools/procesio/tests/test_document_page_size.py +19 -0
  497. procesio_cli/tools/procesio/tests/test_dto.py +734 -0
  498. procesio_cli/tools/procesio/tests/test_edit_dryrun_preview.py +96 -0
  499. procesio_cli/tools/procesio/tests/test_elk_layout.py +221 -0
  500. procesio_cli/tools/procesio/tests/test_environments.py +214 -0
  501. procesio_cli/tools/procesio/tests/test_fevalidate_gate.py +104 -0
  502. procesio_cli/tools/procesio/tests/test_fevalidation.py +317 -0
  503. procesio_cli/tools/procesio/tests/test_fieldpath_variables.py +87 -0
  504. procesio_cli/tools/procesio/tests/test_files.py +72 -0
  505. procesio_cli/tools/procesio/tests/test_flow_digest.py +202 -0
  506. procesio_cli/tools/procesio/tests/test_flowlint.py +114 -0
  507. procesio_cli/tools/procesio/tests/test_flowmodel.py +158 -0
  508. procesio_cli/tools/procesio/tests/test_form_add_element.py +256 -0
  509. procesio_cli/tools/procesio/tests/test_form_approval_gaps.py +319 -0
  510. procesio_cli/tools/procesio/tests/test_form_auto_names.py +60 -0
  511. procesio_cli/tools/procesio/tests/test_form_chains.py +217 -0
  512. procesio_cli/tools/procesio/tests/test_form_code_actions.py +188 -0
  513. procesio_cli/tools/procesio/tests/test_form_code_keys.py +92 -0
  514. procesio_cli/tools/procesio/tests/test_form_code_style.py +178 -0
  515. procesio_cli/tools/procesio/tests/test_form_delete_element.py +99 -0
  516. procesio_cli/tools/procesio/tests/test_form_element_config.py +141 -0
  517. procesio_cli/tools/procesio/tests/test_form_event_maps.py +135 -0
  518. procesio_cli/tools/procesio/tests/test_form_event_ops.py +376 -0
  519. procesio_cli/tools/procesio/tests/test_form_event_replace.py +86 -0
  520. procesio_cli/tools/procesio/tests/test_form_events.py +92 -0
  521. procesio_cli/tools/procesio/tests/test_form_parity.py +171 -0
  522. procesio_cli/tools/procesio/tests/test_form_select_source.py +74 -0
  523. procesio_cli/tools/procesio/tests/test_form_sync.py +35 -0
  524. procesio_cli/tools/procesio/tests/test_form_update.py +133 -0
  525. procesio_cli/tools/procesio/tests/test_formlint.py +155 -0
  526. procesio_cli/tools/procesio/tests/test_formlint_css_scope.py +38 -0
  527. procesio_cli/tools/procesio/tests/test_formlint_field_names.py +83 -0
  528. procesio_cli/tools/procesio/tests/test_guards.py +110 -0
  529. procesio_cli/tools/procesio/tests/test_hidden_setting_types.py +39 -0
  530. procesio_cli/tools/procesio/tests/test_html2docx_asset.py +132 -0
  531. procesio_cli/tools/procesio/tests/test_key_handle_terminology.py +45 -0
  532. procesio_cli/tools/procesio/tests/test_layout.py +574 -0
  533. procesio_cli/tools/procesio/tests/test_layout_report.py +88 -0
  534. procesio_cli/tools/procesio/tests/test_manifest_sync.py +68 -0
  535. procesio_cli/tools/procesio/tests/test_nodedelete.py +151 -0
  536. procesio_cli/tools/procesio/tests/test_nodeparam.py +826 -0
  537. procesio_cli/tools/procesio/tests/test_normalize.py +70 -0
  538. procesio_cli/tools/procesio/tests/test_payload_docs.py +86 -0
  539. procesio_cli/tools/procesio/tests/test_process_action_naming.py +170 -0
  540. procesio_cli/tools/procesio/tests/test_process_call_api_seed.py +46 -0
  541. procesio_cli/tools/procesio/tests/test_process_ext.py +373 -0
  542. procesio_cli/tools/procesio/tests/test_process_invariants.py +183 -0
  543. procesio_cli/tools/procesio/tests/test_process_layout.py +117 -0
  544. procesio_cli/tools/procesio/tests/test_process_naming.py +188 -0
  545. procesio_cli/tools/procesio/tests/test_process_query_store.py +172 -0
  546. procesio_cli/tools/procesio/tests/test_processinfo_variable.py +56 -0
  547. procesio_cli/tools/procesio/tests/test_profiles.py +127 -0
  548. procesio_cli/tools/procesio/tests/test_put_projects.py +41 -0
  549. procesio_cli/tools/procesio/tests/test_reliability.py +107 -0
  550. procesio_cli/tools/procesio/tests/test_removal_gate.py +95 -0
  551. procesio_cli/tools/procesio/tests/test_resource_ops.py +173 -0
  552. procesio_cli/tools/procesio/tests/test_save_validity.py +207 -0
  553. procesio_cli/tools/procesio/tests/test_schedule_cron_shape.py +111 -0
  554. procesio_cli/tools/procesio/tests/test_schedules.py +309 -0
  555. procesio_cli/tools/procesio/tests/test_sqlconvert.py +234 -0
  556. procesio_cli/tools/procesio/tests/test_sqlformat.py +83 -0
  557. procesio_cli/tools/procesio/tests/test_sqlparam.py +187 -0
  558. procesio_cli/tools/procesio/tests/test_superseded_actions.py +54 -0
  559. procesio_cli/tools/procesio/tests/test_surgical_concurrency.py +156 -0
  560. procesio_cli/tools/procesio/tests/test_tier4.py +123 -0
  561. procesio_cli/tools/procesio/tests/test_transport.py +147 -0
  562. procesio_cli/tools/procesio/tests/test_transport_data_stores.py +168 -0
  563. procesio_cli/tools/procesio/tests/test_transport_mapper_repair.py +150 -0
  564. procesio_cli/tools/procesio/tests/test_transport_webhook_strip.py +253 -0
  565. procesio_cli/tools/procesio/tests/test_usage_guide.py +96 -0
  566. procesio_cli/tools/procesio/tool.yaml +12486 -0
  567. procesio_cli/tools/sqlserver/MOVED-TO-CENTRAL.md +29 -0
  568. procesio_cli/tools/sqlserver/README.md +192 -0
  569. procesio_cli/tools/sqlserver/SKILL.md +37 -0
  570. procesio_cli/tools/sqlserver/SQLSERVER-SCHEMA-NOTES.md +284 -0
  571. procesio_cli/tools/sqlserver/__init__.py +0 -0
  572. procesio_cli/tools/sqlserver/connection.py +242 -0
  573. procesio_cli/tools/sqlserver/main.py +521 -0
  574. procesio_cli/tools/sqlserver/profiles.template.json +1 -0
  575. procesio_cli/tools/sqlserver/schema.py +600 -0
  576. procesio_cli/tools/sqlserver/tests/__init__.py +0 -0
  577. procesio_cli/tools/sqlserver/tests/conftest.py +21 -0
  578. procesio_cli/tools/sqlserver/tests/test_connection.py +75 -0
  579. procesio_cli/tools/sqlserver/tests/test_dbprofiles.py +92 -0
  580. procesio_cli/tools/sqlserver/tests/test_dbquery.py +220 -0
  581. procesio_cli/tools/sqlserver/tests/test_manifest_sync.py +68 -0
  582. procesio_cli/tools/sqlserver/tests/test_sqlserver.py +326 -0
  583. procesio_cli/tools/sqlserver/tests/test_sqlserver_schema.py +488 -0
  584. procesio_cli/tools/sqlserver/tool.yaml +123 -0
  585. procesio_cli/tools/web/README.md +381 -0
  586. procesio_cli/tools/web/SKILL.md +37 -0
  587. procesio_cli/tools/web/WEB-AUTOMATION-NOTES.md +277 -0
  588. procesio_cli/tools/web/__init__.py +21 -0
  589. procesio_cli/tools/web/actiondef.py +24 -0
  590. procesio_cli/tools/web/api.py +444 -0
  591. procesio_cli/tools/web/brokered.py +107 -0
  592. procesio_cli/tools/web/driver.py +839 -0
  593. procesio_cli/tools/web/drivercontract.py +44 -0
  594. procesio_cli/tools/web/errors.py +54 -0
  595. procesio_cli/tools/web/handlers/__init__.py +1 -0
  596. procesio_cli/tools/web/handlers/archive.py +367 -0
  597. procesio_cli/tools/web/handlers/browse.py +182 -0
  598. procesio_cli/tools/web/handlers/contacts.py +74 -0
  599. procesio_cli/tools/web/handlers/sessmgmt.py +120 -0
  600. procesio_cli/tools/web/main.py +128 -0
  601. procesio_cli/tools/web/sessions.py +253 -0
  602. procesio_cli/tools/web/steps.py +162 -0
  603. procesio_cli/tools/web/tests/__init__.py +0 -0
  604. procesio_cli/tools/web/tests/conftest.py +197 -0
  605. procesio_cli/tools/web/tests/test_api.py +330 -0
  606. procesio_cli/tools/web/tests/test_archive.py +190 -0
  607. procesio_cli/tools/web/tests/test_brokered.py +138 -0
  608. procesio_cli/tools/web/tests/test_dispatch.py +132 -0
  609. procesio_cli/tools/web/tests/test_errors.py +60 -0
  610. procesio_cli/tools/web/tests/test_manifest_sync.py +76 -0
  611. procesio_cli/tools/web/tests/test_page_contacts.py +68 -0
  612. procesio_cli/tools/web/tests/test_sessions.py +145 -0
  613. procesio_cli/tools/web/tests/test_steps.py +210 -0
  614. procesio_cli/tools/web/tool.yaml +184 -0
  615. procesio_cli/tools/xlsx/README.md +34 -0
  616. procesio_cli/tools/xlsx/SKILL.md +28 -0
  617. procesio_cli/tools/xlsx/__init__.py +0 -0
  618. procesio_cli/tools/xlsx/main.py +129 -0
  619. procesio_cli/tools/xlsx/reader.py +91 -0
  620. procesio_cli/tools/xlsx/tests/__init__.py +0 -0
  621. procesio_cli/tools/xlsx/tests/conftest.py +39 -0
  622. procesio_cli/tools/xlsx/tests/test_xlsx.py +103 -0
  623. procesio_cli/tools/xlsx/tool.yaml +30 -0
  624. procesio_cli/webplatform/aat_mcp/AAT-MCP-NOTES.md +244 -0
  625. procesio_cli/webplatform/aat_mcp/README.md +78 -0
  626. procesio_cli/webplatform/aat_mcp/bridge.py +705 -0
  627. procesio_cli/webplatform/aat_mcp/chat_server.py +194 -0
  628. procesio_cli/webplatform/aat_mcp/chat_surface.snapshot.json +668 -0
  629. procesio_cli/webplatform/aat_mcp/chat_surface.yaml +372 -0
  630. procesio_cli/webplatform/aat_mcp/gate.py +68 -0
  631. procesio_cli/webplatform/aat_mcp/http_server.py +139 -0
  632. procesio_cli/webplatform/aat_mcp/protocol.py +175 -0
  633. procesio_cli/webplatform/aat_mcp/server.py +306 -0
  634. procesio_cli/webplatform/aat_mcp/tests/conftest.py +8 -0
  635. procesio_cli/webplatform/aat_mcp/tests/test_aat_mcp.py +255 -0
  636. procesio_cli/webplatform/aat_mcp/tests/test_chat_surface.py +247 -0
  637. procesio_cli/webplatform/aat_mcp/tests/test_discovery.py +489 -0
  638. procesio_cli/webplatform/aat_mcp/tests/test_multiuser.py +86 -0
  639. procesio_cli/webplatform/aat_mcp/tests/test_progressive_discovery.py +89 -0
  640. procesio_cli/webplatform/aat_mcp/tests/test_protocol.py +180 -0
  641. procesio_cli/webplatform/aat_mcp/tests/test_skill_discovery.py +23 -0
  642. procesio_cli-0.1.1.dist-info/METADATA +467 -0
  643. procesio_cli-0.1.1.dist-info/RECORD +647 -0
  644. procesio_cli-0.1.1.dist-info/WHEEL +4 -0
  645. procesio_cli-0.1.1.dist-info/entry_points.txt +7 -0
  646. procesio_cli-0.1.1.dist-info/licenses/LICENSE +201 -0
  647. procesio_cli-0.1.1.dist-info/licenses/NOTICE +5 -0
@@ -0,0 +1,74 @@
1
+ """Deterministic DESIGNER-layer normalizer.
2
+
3
+ Regenerates an action's `customData.configuration[].settings[].value` (the DESIGNER layer the Process
4
+ Designer reads) from that action's RUNTIME `parameters[]` (the source of truth = what executes), for
5
+ the ONE class where the two layers are a clean, reversible mirror: a STRING setting value that may hold
6
+ a `<%N%>` placeholder. It substitutes each `<%N%>` for its bound variable GUID (with the attribute chain,
7
+ `varId.attrId...`), which is exactly what the designer expects and what the runtime placeholder maps to.
8
+ This permanently kills the "customData holds `<%N%>` instead of the variable GUID -> designer paints it
9
+ red" class of bug: hand-place an action however, then normalize, and a string designer value can no
10
+ longer drift from its runtime parameter.
11
+
12
+ SCOPE - deliberately STRING-ONLY. LIST/dict-shaped settings (process-inputs/outputs, map-parameters,
13
+ map-process-data, document-mapper, decisional-case, ai-decisional-case) are LEFT UNTOUCHED, because their
14
+ runtime<->designer relationship is NOT a clean mirror: the builder's build-from-spec transforms drop the
15
+ attribute chain on subprocess maps and emit the runtime shape for map-parameters, i.e. regenerating them
16
+ from live runtime CORRUPTS them (verified live: process-outputs `varId.attrId` -> `varId`). Those settings
17
+ also never carry the `<%N%>`-in-a-string bug (they store GUID-form refs), so skipping them loses nothing.
18
+ The flowlint CUSTOMDATA_PLACEHOLDER guard remains the backstop for any residual case.
19
+
20
+ REUSES `builder._config_value_from_param` (never re-implements it). Contract: mutate `flow` IN PLACE
21
+ (matches flowpatch's _load->mutate->_save model); return a diff report. Idempotent and a NO-OP on
22
+ already-compliant flows (a value with no `<%N%>` passes through byte-identical).
23
+ """
24
+ from __future__ import annotations
25
+
26
+ from tools.procesio.dto.process import builder as _b
27
+
28
+
29
+ def _index_settings(cfg_tree: list) -> dict:
30
+ """{setting.id: setting}, recursing into list-valued settings (side-pannel nesting) - mirrors
31
+ the builder's _apply_values_to_config index()."""
32
+ byid: dict = {}
33
+
34
+ def walk(settings):
35
+ for s in settings or []:
36
+ if isinstance(s, dict):
37
+ if s.get("id"):
38
+ byid[s["id"]] = s
39
+ if isinstance(s.get("value"), list):
40
+ walk(s["value"])
41
+ for tab in cfg_tree or []:
42
+ walk(tab.get("settings") or [])
43
+ return byid
44
+
45
+
46
+ def normalize_designer_layer(flow: dict) -> dict:
47
+ """Regenerate STRING designer setting values from their runtime parameters, in place. Returns a
48
+ report {changed: bool, actions: [{id,name,settings:[{id,type,label}]}], warnings: [...]}."""
49
+ report: dict = {"changed": False, "actions": [], "warnings": []}
50
+ for a in flow.get("actions") or []:
51
+ cfg_tree = (a.get("customData") or {}).get("configuration") or []
52
+ byid = _index_settings(cfg_tree)
53
+ changed_settings: list = []
54
+ for p in a.get("parameters") or []:
55
+ s = byid.get(p.get("tabPropertyId"))
56
+ if s is None:
57
+ # a runtime param with no designer setting to mirror into - a malformed/hand-built
58
+ # node smell. Never clobber; surface it so a human looks.
59
+ if p.get("value") not in (None, "", [], {}):
60
+ report["warnings"].append({"action": a.get("actionName"),
61
+ "param": p.get("tabPropertyId"), "why": "param_without_setting"})
62
+ continue
63
+ # STRING-ONLY: only a string designer value can hold the <%N%> bug and is a clean mirror of
64
+ # its runtime param. Anything list/dict-shaped is left exactly as-is (see module doc).
65
+ if not isinstance(s.get("value"), str):
66
+ continue
67
+ new = _b._config_value_from_param(p.get("value"), p.get("variable"))
68
+ if new != s.get("value"):
69
+ s["value"] = new
70
+ changed_settings.append({"id": s.get("id"), "type": s.get("type"), "label": s.get("label")})
71
+ if changed_settings:
72
+ report["changed"] = True
73
+ report["actions"].append({"id": a.get("id"), "name": a.get("actionName"), "settings": changed_settings})
74
+ return report
@@ -0,0 +1,32 @@
1
+ {
2
+ "_note": "Golden FlowRequestDto shape (POST /api/Projects body), PascalCase. The client supplies Id (the gateway persists it and returns empty on success). Variables -> VariableDto; Actions -> ActionDto with CustomData (designer/position) + Parameters (TabPropertyId binding); Ports are edges held on the SOURCE action (plus a null->Start entry edge). Verified live 2026-06-24: validates, persists, runs to STATUS_FINISH. Most fields below are filled by builder.py.",
3
+ "Id": "<uuid: flow>",
4
+ "ParentId": null,
5
+ "Status": 1,
6
+ "Title": "<title>",
7
+ "Description": "",
8
+ "IsValid": true,
9
+ "Active": true,
10
+ "Timeout": 0,
11
+ "CurrentActionId": null,
12
+ "DebugMode": false,
13
+ "IsNotification": false,
14
+ "Variables": [
15
+ {"Id": "<uuid: var>", "ContextId": null, "DataType": "0317bfee-b2f5-4bde-bfe8-121212121222", "Type": 30, "Name": "result", "DefaultValue": null, "IsList": false, "IsError": false, "IsRequired": false}
16
+ ],
17
+ "Actions": [
18
+ {
19
+ "Id": "<uuid: action>", "FlowId": "<uuid: flow>", "TemplateId": "<actionId>",
20
+ "ParentId": null, "VariableErrorId": null, "Status": 1, "Category": "",
21
+ "ActionName": "Generate GUID", "ActionTemplateName": "Generate GUID",
22
+ "Ports": [{"Id": "<uuid: port>", "FlowId": "<uuid: flow>", "SourceId": "<src action>", "DestinationId": "<dst action>", "Type": 0, "State": 1, "Data": {}, "Errors": {}, "Config": {}}],
23
+ "Parameters": [{"TabPropertyId": "<template property id>", "Variable": [{"id": 0, "variableId": "<uuid: var>", "attribute": null}], "Value": "<%0%>"}],
24
+ "CustomData": {"type": "square", "name": "Generate GUID", "icon": "vpn_key", "position": {"x": 400, "y": 300}, "configuration": [], "inputPorts": 1, "outputPorts": 1, "wasDropped": true, "areaSize": {"width": 48, "height": 48, "x": 0, "y": 0}},
25
+ "IsTestable": true, "IsDisabled": false, "BreakPoint": null, "TestValues": null, "ErrorMessage": "", "Events": null
26
+ }
27
+ ],
28
+ "Webhooks": [],
29
+ "CustomResponse": null,
30
+ "DataRetention": null,
31
+ "CanvasData": null
32
+ }
@@ -0,0 +1,87 @@
1
+ """Bundled platform reference data + lookups for the DTO builders.
2
+
3
+ The builders are PURE (config -> DTO, no network). Anything they need from the
4
+ platform that is *stable* (primitive data-type ids, procesio built-in models)
5
+ ships bundled in data/platform_types.json so a build needs no live calls. Live,
6
+ workspace-specific ids (a credential template, an existing data model referenced
7
+ by a webhook, an action template's properties) are resolved by the handler and
8
+ passed into the builder as `ctx`, keeping the builder side-effect free.
9
+ """
10
+ from __future__ import annotations
11
+
12
+ import json
13
+ from functools import lru_cache
14
+ from pathlib import Path
15
+
16
+ _DATA = Path(__file__).resolve().parent / "data" / "platform_types.json"
17
+
18
+ # PrimaryDataType enum (Domain/Enums) — the value carried as CsharpCorrespondent.
19
+ CSHARP = {
20
+ "boolean": 10, "integer": 20, "float": 30, "double": 40, "string": 50,
21
+ "date": 60, "relationship": 70, "time": 80, "datetime": 90, "guid": 100,
22
+ "uri": 110, "json": 120, "credentials": 130, "object": 140,
23
+ }
24
+
25
+
26
+ @lru_cache(maxsize=1)
27
+ def platform_types() -> dict:
28
+ return json.loads(_DATA.read_text(encoding="utf-8"))
29
+
30
+
31
+ @lru_cache(maxsize=1)
32
+ def _primitive_by_name() -> dict[str, dict]:
33
+ out: dict[str, dict] = {}
34
+ for d in platform_types().get("primary", []):
35
+ if d.get("name"):
36
+ out[d["name"].strip().lower()] = d
37
+ return out
38
+
39
+
40
+ @lru_cache(maxsize=1)
41
+ def _procesio_by_name() -> dict[str, dict]:
42
+ out: dict[str, dict] = {}
43
+ for d in platform_types().get("procesio", []):
44
+ if d.get("name"):
45
+ out[d["name"].strip().lower()] = d
46
+ return out
47
+
48
+
49
+ # Friendly aliases -> the platform's primitive type name.
50
+ _ALIAS = {
51
+ "bool": "boolean", "int": "integer", "long": "integer", "number": "double",
52
+ "text": "string", "str": "string", "datetime": "datetime", "date-time": "datetime",
53
+ "uuid": "guid",
54
+ }
55
+
56
+
57
+ def primitive_type_id(name: str) -> str:
58
+ """Map a primitive type name (case-insensitive, with aliases) to its stable
59
+ platform DataType id. Raises KeyError for an unknown type."""
60
+ key = (name or "").strip().lower()
61
+ key = _ALIAS.get(key, key)
62
+ prim = _primitive_by_name()
63
+ if key in prim:
64
+ return prim[key]["id"]
65
+ raise KeyError(
66
+ f"unknown primitive type {name!r}; known: {sorted(prim)} (aliases: {sorted(_ALIAS)})"
67
+ )
68
+
69
+
70
+ def primitive_names() -> list[str]:
71
+ """The accepted primitive type names (for schema enums)."""
72
+ return sorted(set(_primitive_by_name()) | set(_ALIAS))
73
+
74
+
75
+ def csharp_correspondent(name: str) -> int:
76
+ key = (name or "").strip().lower()
77
+ key = _ALIAS.get(key, key)
78
+ return CSHARP.get(key, 0)
79
+
80
+
81
+ def procesio_model_id(name: str) -> str:
82
+ """Id of a procesio built-in data model (e.g. 'FileDataModel')."""
83
+ by = _procesio_by_name()
84
+ key = (name or "").strip().lower()
85
+ if key in by:
86
+ return by[key]["id"]
87
+ raise KeyError(f"unknown procesio model {name!r}; known: {sorted(by)}")
@@ -0,0 +1,27 @@
1
+ """Registry of DTO components. Explicit (no import magic) for reliability —
2
+ add a component's COMPONENT here and it gets <name>-create / <name>-edit actions.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ from functools import lru_cache
7
+
8
+ from tools.procesio.dto.framework import Component
9
+
10
+
11
+ @lru_cache(maxsize=1)
12
+ def all_components() -> dict[str, Component]:
13
+ from tools.procesio.dto.credential import builder as credential
14
+ from tools.procesio.dto.datatype import builder as datatype
15
+ from tools.procesio.dto.document import builder as document
16
+ from tools.procesio.dto.form import builder as form
17
+ from tools.procesio.dto.process import builder as process
18
+ from tools.procesio.dto.webhook import builder as webhook
19
+ comps = [
20
+ datatype.COMPONENT,
21
+ process.COMPONENT,
22
+ credential.COMPONENT,
23
+ document.COMPONENT,
24
+ webhook.COMPONENT,
25
+ form.COMPONENT,
26
+ ]
27
+ return {c.name: c for c in comps}
@@ -0,0 +1,142 @@
1
+ """Webhook builder — PURE config -> WebhookDto.
2
+
3
+ A webhook ties an inbound HTTP request to a process flow. Its payload shape is a
4
+ *webhook-type* data model (DataModelTypeParam.Webhook = 2) generated from a sample
5
+ payload via POST /api/Webhooks/generate-data (done in prepare_ctx).
6
+
7
+ Working create recipe (cracked live 2026-06-24): POST /api/Webhooks with the
8
+ generated DataModel embedded + DataModelId + the sample Definition + IsEdited=true
9
+ (PascalCase). Without the generated webhook-type DataModel the gateway returns a
10
+ generic 502 "resource is not able to be created or modified".
11
+
12
+ API:
13
+ - generate model: POST /api/Webhooks/generate-data {Definition: "<json>"} -> {dataModel, payloadIsList}
14
+ - Create: POST /api/Webhooks (WebhookDto) -> created webhook
15
+ - Get: GET /api/Webhooks/{id}
16
+ - Edit: PUT /api/Webhooks
17
+ - Trigger (anonymous): GET|POST /api/Webhooks/launch/{id}
18
+ """
19
+ from __future__ import annotations
20
+
21
+ import json
22
+ import uuid
23
+ from pathlib import Path
24
+
25
+ from tools.procesio import config
26
+ from tools.procesio.dto.framework import Component
27
+ from tools.procesio.errors import UsageError
28
+
29
+ DIR = Path(__file__).resolve().parent
30
+
31
+ _TYPE = {"auto": 0, "manual": 1}
32
+ _RESP_TYPE = {"staticjson": 1, "static": 1, "javascript": 2, "js": 2, "jsonpath": 3}
33
+
34
+
35
+ def _new_id(ctx) -> str:
36
+ return (ctx.get("new_id") or (lambda: str(uuid.uuid4())))()
37
+
38
+
39
+ def _custom_response(cfg):
40
+ if not cfg:
41
+ return None
42
+ ct = cfg.get("type", "staticjson")
43
+ return {"ConfigType": _RESP_TYPE.get(str(ct).strip().lower(), ct),
44
+ "Config": cfg.get("config", "")}
45
+
46
+
47
+ def build(config: dict, ctx: dict) -> dict:
48
+ dm = ctx.get("data_model")
49
+ if dm is None:
50
+ raise UsageError("webhook build needs a generated data model in ctx "
51
+ "(prepare_ctx calls /api/Webhooks/generate-data on the sample)")
52
+ sample = config.get("sample", {})
53
+ definition = config.get("definition") or json.dumps(sample)
54
+ wtype = config.get("type", "manual")
55
+ return {
56
+ "Id": ctx.get("webhook_id") or _new_id(ctx),
57
+ "Name": config["name"],
58
+ "PayloadIsList": bool(config.get("payloadIsList", ctx.get("payload_is_list", False))),
59
+ "HasHeader": bool(config.get("hasHeader", False)),
60
+ "HasQuery": bool(config.get("hasQuery", False)),
61
+ "DataModelId": dm.get("id"),
62
+ "Type": _TYPE.get(str(wtype).strip().lower(), wtype),
63
+ "Definition": definition,
64
+ "IsEdited": True,
65
+ "DataModel": dm,
66
+ "CustomResponseConfig": _custom_response(config.get("customResponse")),
67
+ }
68
+
69
+
70
+ def prepare_ctx(client, config: dict) -> dict:
71
+ """Generate the webhook-type data model from the sample payload."""
72
+ sample = config.get("sample")
73
+ definition = config.get("definition") or (json.dumps(sample) if sample is not None else None)
74
+ if not definition:
75
+ raise UsageError("provide config.sample (a representative payload object) "
76
+ "so the webhook data model can be generated")
77
+ gen = client.post("/api/Webhooks/generate-data", {"Definition": definition})
78
+ return {"data_model": gen.get("dataModel"), "payload_is_list": gen.get("payloadIsList", False)}
79
+
80
+
81
+ def _extract_id(resp, dto):
82
+ if isinstance(resp, dict):
83
+ return resp.get("id") or resp.get("Id") or dto.get("Id")
84
+ return dto.get("Id") if isinstance(dto, dict) else None
85
+
86
+
87
+ def _edit(client, resource_id, config, ctx):
88
+ ctx = dict(ctx)
89
+ ctx["webhook_id"] = resource_id
90
+ dto = build(config, ctx)
91
+ client.put("/api/Webhooks", dto)
92
+ return client.get(f"/api/Webhooks/{resource_id}")
93
+
94
+
95
+ def _create(client, dto, ctx):
96
+ """Create the webhook. For an AUTO webhook (Type=0) run the listen+capture flow
97
+ the designer uses: create -> get URL -> start listening -> send a request to the
98
+ URL -> capture the data -> stop. (The gateway won't persist Type=0 via REST, so
99
+ the stored webhook is Type=1; AUTO is the capture *method*.) The capture log is
100
+ returned under `_capture`."""
101
+ auto = dto.get("Type") == 0
102
+ body = dict(dto)
103
+ if auto:
104
+ body["Type"] = 1
105
+ resp = client.post("/api/Webhooks", body)
106
+ rid = resp.get("id") if isinstance(resp, dict) and resp.get("id") else dto.get("Id")
107
+ if not auto:
108
+ return resp
109
+ capture = {"method": "AUTO listen+capture", "webhookId": rid,
110
+ "url": f"{config.web_base(client.profile)}/api/Webhooks/launch/{rid}"}
111
+ conn = str(uuid.uuid4())
112
+ listen = {"ConnectionId": conn, "Listen": True, "ListenType": 1, "WebhookId": rid,
113
+ "WebhookName": dto.get("Name"), "HasQuery": dto.get("HasQuery", False),
114
+ "HasHeader": dto.get("HasHeader", False), "HandshakeConfig": None}
115
+ try:
116
+ client.post("/api/Webhooks/listen", listen) # start listening
117
+ capture["listening"] = True
118
+ sample = dto.get("Definition") # send a request to the URL
119
+ client.post(f"/api/Webhooks/launch/{rid}", json.loads(sample) if sample else {})
120
+ capture["sent_sample"] = True
121
+ client.post("/api/Webhooks/listen", {**listen, "Listen": False}) # stop
122
+ capture["captured"] = True
123
+ except Exception as e: # noqa: BLE001 - the webhook exists either way
124
+ capture["error"] = str(e)[:200]
125
+ out = client.get(f"/api/Webhooks/{rid}")
126
+ if isinstance(out, dict):
127
+ out["_capture"] = capture
128
+ return out
129
+
130
+
131
+ COMPONENT = Component(
132
+ name="webhook",
133
+ description="PROCESIO webhook: an inbound HTTP trigger whose payload is a generated data model.",
134
+ dir=DIR,
135
+ build=build,
136
+ create_endpoint=("POST", "/api/Webhooks"),
137
+ get_path="/api/Webhooks/{id}",
138
+ extract_id=_extract_id,
139
+ prepare_ctx=prepare_ctx,
140
+ create=_create,
141
+ edit=_edit,
142
+ )
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "PROCESIO Webhook config",
4
+ "description": "Create/edit a webhook. The payload data model is generated from 'sample' (a representative payload). Attach the webhook to a process to trigger it.",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["name", "sample"],
8
+ "properties": {
9
+ "name": {"type": "string", "minLength": 1},
10
+ "sample": {"description": "a representative inbound payload object/array; its shape becomes the webhook data model"},
11
+ "definition": {"type": "string", "description": "raw JSON definition (alternative to sample)"},
12
+ "type": {"type": "string", "enum": ["auto", "manual"], "default": "manual"},
13
+ "hasHeader": {"type": "boolean", "default": false},
14
+ "hasQuery": {"type": "boolean", "default": false},
15
+ "payloadIsList": {"type": "boolean"},
16
+ "customResponse": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "type": {"type": "string", "enum": ["staticjson", "static", "javascript", "js", "jsonpath"]},
21
+ "config": {"type": "string"}
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,92 @@
1
+ # Webhook sub-tool
2
+
3
+ Create/edit a PROCESIO **webhook** — an inbound HTTP trigger. Its payload shape is
4
+ a webhook-type data model generated from a sample; attach the webhook to a process
5
+ to fire the flow when the URL is called.
6
+
7
+ ## Config
8
+
9
+ ```json
10
+ {
11
+ "name": "Order webhook",
12
+ "sample": {"orderId": "abc", "amount": 12.5, "items": ["a", "b"]},
13
+ "type": "manual",
14
+ "hasHeader": false,
15
+ "hasQuery": false,
16
+ "customResponse": {"type": "staticjson", "config": "{\"ok\":true}"}
17
+ }
18
+ ```
19
+
20
+ - **sample** — a representative payload; the builder calls `generate-data` to infer
21
+ the webhook data model from it (or pass a raw `definition` string).
22
+ - **type** — `manual` (1, fires on call — verified) or `auto` (0).
23
+ - **customResponse** — optional synchronous response: `staticjson` / `javascript` / `jsonpath`.
24
+
25
+ ## API contract (verified live 2026-06-24)
26
+
27
+ - **Generate model:** `POST /api/Webhooks/generate-data {Definition}` → `{dataModel, payloadIsList}`
28
+ (the `dataModel` is a webhook-type model, `type:2`).
29
+ - **Create:** `POST /api/Webhooks` (`WebhookDto`) — must embed the generated
30
+ `DataModel` + `DataModelId` + `Definition` + `IsEdited:true`, else a generic 502.
31
+ - **Get:** `GET /api/Webhooks/{id}`. **Edit:** `PUT /api/Webhooks`. **Delete:** `DELETE /api/Webhooks/{id}`.
32
+ - **Trigger (anonymous):** `GET|POST|PUT|PATCH|DELETE /api/Webhooks/launch/{id}`
33
+ (body = payload; `?respondOk=true` for a bare 200). Verified: returns 200.
34
+
35
+ ## Triggering a process
36
+
37
+ Attach the webhook to a flow via the flow's `Webhooks[]` (`WebhookInstanceDto`) and
38
+ bind the generated webhook payload as **one model object** to a compatible model-typed
39
+ process input. The current `WebhookVariableDto` attachment carries the process
40
+ `variableId` and `variableType`; it does not provide a field-by-field mapping table
41
+ that fans the body into several primitive inputs.
42
+
43
+ For a retained process whose public contract is primitive inputs, use a bounded adapter
44
+ process:
45
+
46
+ 1. accept one input typed to the generated webhook model;
47
+ 2. extract its attributes deterministically into plain process variables;
48
+ 3. synchronously call the retained process through those plain variables;
49
+ 4. bind all scripting/action errors;
50
+ 5. detach/delete a temporary adapter together with the webhook when the drill ends.
51
+
52
+ A webhook attached directly to several primitive inputs can create a never-started
53
+ instance even though the webhook DTO and process validation look correct. Prove one
54
+ real launch by reconciling the target/child instance tree and the final business-key
55
+ side effect; do not infer mapping success from attachment alone.
56
+
57
+ ## AUTO vs MANUAL (verified live 2026-06-24)
58
+
59
+ Per the docs, **AUTO is the listen/capture method**, MANUAL is paste-the-payload:
60
+ - **`type:"manual"`** — you supply `sample`; the builder generates the model from it.
61
+ - **`type:"auto"`** — the builder runs the designer's flow: create the webhook →
62
+ get its URL → **start listening** → **send the sample to the URL** → capture →
63
+ stop. The `capture` log (`listening/sent_sample/captured`) is returned. The
64
+ webhook is functional (triggers processes) either way.
65
+ - The gateway does **not persist `Type:0`** via REST (`POST` → 502), so the
66
+ stored webhook is `Type:1`; AUTO is the capture *method*, not a stored type.
67
+ The capture step is real (listen + a live request to the URL).
68
+
69
+ ## Custom webhook responses
70
+
71
+ The custom response is configured **on the process** (per the docs: "Custom
72
+ Response: configured within a process; settings persist"): set the flow's
73
+ `customResponse` (in `process-create`) to a process variable —
74
+ `"customResponse": {"var": "responseVar"}`. **A synchronous run returns this value
75
+ directly** (verified: `POST /api/Projects/{id}/run?runSynchronous=true` returns
76
+ the `customResponse` value, not the status object), and so does a form's
77
+ RUN_PROCESS trigger with `syncRun:true`. It's also stored on the instance
78
+ (`GET …/instances/{iid}/customResponse`).
79
+ - The webhook **definition**'s `CustomResponseConfig` (static/JS/JSON-path) is
80
+ designer-only (not persisted by REST). The anonymous webhook **launch** fires the
81
+ flow asynchronously, so it doesn't block on the response — that webhook-side
82
+ "respond synchronously" toggle isn't exposed over REST. The custom-response
83
+ *value* mechanism itself is fully working via synchronous run / form trigger.
84
+
85
+ ## Gotchas
86
+
87
+ - `HasHeader`/`HasQuery` only persist if the data model includes header/query
88
+ sub-models — a body-only sample resets them to false.
89
+ - One webhook launch can create an adapter instance, a retained child-process instance,
90
+ and further nested instances. Count the complete causal tree in execution budgets.
91
+ - After an ambiguous launch response, reconcile by webhook ID, stable business key,
92
+ and launch window; never resend blindly.
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "OrderHook",
3
+ "sample": {
4
+ "orderId": "abc",
5
+ "amount": 12.5
6
+ },
7
+ "type": "manual",
8
+ "hasHeader": false,
9
+ "hasQuery": false
10
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "Id": "00000000-0000-0000-0000-000000000001",
3
+ "Name": "OrderHook",
4
+ "PayloadIsList": false,
5
+ "HasHeader": false,
6
+ "HasQuery": false,
7
+ "DataModelId": "dm-1",
8
+ "Type": 1,
9
+ "Definition": "{\"orderId\": \"abc\", \"amount\": 12.5}",
10
+ "IsEdited": true,
11
+ "DataModel": {
12
+ "id": "dm-1",
13
+ "name": "InternalWebhookDto",
14
+ "isDataModel": true,
15
+ "type": 2,
16
+ "attributes": [
17
+ {
18
+ "id": "a1",
19
+ "name": "orderId",
20
+ "dataTypeId": "0317bfee-b2f5-4bde-bfe8-121212121214"
21
+ }
22
+ ]
23
+ },
24
+ "CustomResponseConfig": null
25
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "_note": "Golden WebhookDto (POST /api/Webhooks body), PascalCase. The DataModel MUST be a webhook-type model (DataModelTypeParam.Webhook=2) from POST /api/Webhooks/generate-data; IsEdited:true and Definition (the sample JSON) are required, else the gateway returns a generic 502. Type: AUTO=0, MANUAL=1 (MANUAL verified live 2026-06-24; AUTO needs different handling). HasHeader/HasQuery only stick if the data model includes header/query sub-models. The server persists a fresh DataModelId on save.",
3
+ "Id": "<uuid: webhook>",
4
+ "Name": "<name>",
5
+ "PayloadIsList": false,
6
+ "HasHeader": false,
7
+ "HasQuery": false,
8
+ "DataModelId": "<generated data model id>",
9
+ "Type": 1,
10
+ "Definition": "<sample payload as JSON string>",
11
+ "IsEdited": true,
12
+ "DataModel": {"_": "the full webhook-type DataModelDto from generate-data"},
13
+ "CustomResponseConfig": null
14
+ }