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,226 @@
1
+ """Static analysis of a PROCESIO process (flow) DTO.
2
+
3
+ Two kinds of findings:
4
+ - correctness: the designer-vs-runtime parity bugs that make Validate fail even
5
+ when the process runs (the hard-won PHASE4-E2E lessons). `verify` gates on these.
6
+ - practice: best-practice smells (too many actions, slow actions, no error
7
+ handling, no description, possible inline secret). The `audit` action reports them.
8
+
9
+ DTO case matters: the LIVE Web-API returns camelCase (`actions`, `parameters`,
10
+ `value`), while the offline .procesio EXPORT bundles use PascalCase (`Actions`,
11
+ `Parameters`, `Value`). Every lookup goes through `ci()` (case-insensitive) so the
12
+ agent works on a live process AND on an export golden. Beyond that the auditor is
13
+ defensive: an unknown shape downgrades a check to "skipped" rather than crashing
14
+ or emitting a false finding. It never invents certainty it does not have.
15
+ """
16
+ from __future__ import annotations
17
+
18
+ import json
19
+ import re
20
+
21
+ _STRUCTURAL = {"start", "stop"} # no configuration expected (compared lowercased)
22
+ # A node whose human NAME signals a Data Store / cache operation while its action
23
+ # TYPE is 'Call API' is a masquerade: a Call API does NOT touch the Data Store, it
24
+ # just calls an HTTP endpoint (the FX-usecase bug - a Call API node wearing a cache
25
+ # icon). Intent keywords are matched on the action NAME, the type on the template.
26
+ _DATASTORE_INTENT = ("cache", "data store", "datastore")
27
+ _CALLAPI_TEMPLATE = "call api"
28
+ _SLOW_KEYWORDS = ("call api", "sql", "ftp", "decisional",
29
+ "data store", "mysql", "redis") # network/DB-bound: count toward speed
30
+ _GUID_RE = re.compile(
31
+ r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", re.I)
32
+ _SECRET_KEYWORDS = ("password", "passwd", "apikey", "api_key", "api-key",
33
+ "secret", "client_secret", "bearer ", "authorization")
34
+ _TOKEN_RE = re.compile(r"^[A-Za-z0-9+/_=-]{24,}$")
35
+
36
+
37
+ def ci(d, *names):
38
+ """Case-insensitive dict get: first `names` value whose key matches ignoring
39
+ case. Handles live camelCase and export PascalCase from one call site."""
40
+ if not isinstance(d, dict):
41
+ return None
42
+ lowered = {k.lower(): k for k in d.keys()}
43
+ for n in names:
44
+ k = lowered.get(n.lower())
45
+ if k is not None:
46
+ return d[k]
47
+ return None
48
+
49
+
50
+ def _actions(flow: dict) -> list[dict]:
51
+ a = ci(flow, "actions")
52
+ return [x for x in a if isinstance(x, dict)] if isinstance(a, list) else []
53
+
54
+
55
+ def _template(a: dict) -> str:
56
+ return str(ci(a, "actionTemplateName") or ci(a, "actionName") or "")
57
+
58
+
59
+ def _name(a: dict) -> str:
60
+ return str(ci(a, "actionName") or _template(a) or "?")
61
+
62
+
63
+ def _is_structural(a: dict) -> bool:
64
+ return _template(a).strip().lower() in _STRUCTURAL
65
+
66
+
67
+ def _param_set(p: dict) -> bool:
68
+ val = ci(p, "value")
69
+ return (val not in (None, "")) or bool(ci(p, "variable"))
70
+
71
+
72
+ def _config_settings(a: dict) -> list[dict]:
73
+ conf = ci(ci(a, "customData") or {}, "configuration")
74
+ if not isinstance(conf, list):
75
+ return []
76
+ settings: list[dict] = []
77
+ for tab in conf:
78
+ if isinstance(tab, dict):
79
+ for s in ci(tab, "settings") or []:
80
+ if isinstance(s, dict):
81
+ settings.append(s)
82
+ return settings
83
+
84
+
85
+ def _config_set(s: dict) -> bool:
86
+ return ci(s, "value") not in (None, "", [], {})
87
+
88
+
89
+ def _f(kind, severity, code, message, citation, action=None) -> dict:
90
+ out = {"kind": kind, "severity": severity, "code": code,
91
+ "message": message, "citation": citation}
92
+ if action:
93
+ out["action"] = action
94
+ return out
95
+
96
+
97
+ def _datastore_masquerade(flow: dict) -> list[dict]:
98
+ """A node named like a Data Store/cache op whose TYPE is 'Call API' does not read
99
+ or write the Data Store - it just calls an endpoint. Hard-fail: the cache never
100
+ works, which is invisible because the process still 'runs' green (FX-usecase bug)."""
101
+ out: list[dict] = []
102
+ for a in _actions(flow):
103
+ if _is_structural(a):
104
+ continue
105
+ if any(k in _name(a).lower() for k in _DATASTORE_INTENT) \
106
+ and _CALLAPI_TEMPLATE in _template(a).lower():
107
+ out.append(_f(
108
+ "correctness", "fail", "datastore-as-callapi",
109
+ "action is named like a Data Store / cache operation but its type is "
110
+ "'Call API' - a Call API node does NOT read or write the Data Store. "
111
+ "Use a native Data Store action (Select/Insert/Update/Delete), not a "
112
+ "Call API dressed with a cache icon.",
113
+ "FX-usecase diagnosis; PROCESIO-DATASTORE", _name(a)))
114
+ return out
115
+
116
+
117
+ def correctness_findings(flow: dict) -> list[dict]:
118
+ """Designer-vs-runtime parity checks only (what `verify` gates on)."""
119
+ findings: list[dict] = list(_datastore_masquerade(flow))
120
+ for a in _actions(flow):
121
+ if _is_structural(a):
122
+ continue
123
+ params = ci(a, "parameters")
124
+ if not isinstance(params, list):
125
+ continue
126
+ set_params = [p for p in params if isinstance(p, dict) and _param_set(p)]
127
+ settings = _config_settings(a)
128
+ set_settings = [s for s in settings if _config_set(s)]
129
+ if set_params and settings and not set_settings:
130
+ findings.append(_f(
131
+ "correctness", "warn", "designer-blank",
132
+ "runtime parameters are set but the designer configuration is empty; "
133
+ "the designer will show 'not configured' and Validate will fail "
134
+ "(mirror parameters into customData.configuration)",
135
+ "PHASE4-E2E process-builder fix", _name(a)))
136
+ elif params and not set_params and not set_settings:
137
+ findings.append(_f(
138
+ "correctness", "info", "unconfigured-action",
139
+ "action has parameters but none are set; confirm it is meant to be empty",
140
+ "playbook A", _name(a)))
141
+ return findings
142
+
143
+
144
+ def _practice_findings(flow: dict) -> tuple[list[dict], dict]:
145
+ findings: list[dict] = []
146
+ nonstructural = [a for a in _actions(flow) if not _is_structural(a)]
147
+ n = len(nonstructural)
148
+
149
+ if n > 5:
150
+ findings.append(_f("practice", "warn", "high-action-count",
151
+ f"{n} non-structural actions; >5 is 'really bad' for a "
152
+ "form-called process - reduce/merge or move to one scripting action",
153
+ "best-practices 9-10"))
154
+ elif n >= 4:
155
+ findings.append(_f("practice", "info", "action-count",
156
+ f"{n} non-structural actions; aim for <=3 if a form calls this",
157
+ "best-practices 9-10"))
158
+
159
+ slow = sorted({_template(a) for a in nonstructural
160
+ if any(k in _template(a).lower() for k in _SLOW_KEYWORDS)})
161
+ if slow:
162
+ findings.append(_f("practice", "info" if len(slow) <= 2 else "warn",
163
+ "slow-actions",
164
+ "latency-adding actions present: " + ", ".join(slow) +
165
+ " - use only where needed, minimize for form-called processes",
166
+ "best-practices 10"))
167
+
168
+ has_desc = bool(str(ci(flow, "description") or "").strip())
169
+ if not has_desc:
170
+ findings.append(_f("practice", "info", "missing-description",
171
+ "process has no description; document it and the trigger order (SOP)",
172
+ "best-practices 7"))
173
+
174
+ blob = json.dumps(flow, default=str).lower()
175
+ error_handling = any(t in blob for t in
176
+ ('errorport', '"error"', 'onerror', 'error_port', 'erroraction'))
177
+ if n >= 2 and not error_handling:
178
+ findings.append(_f("practice", "info", "no-error-handling",
179
+ "no error-port / error handling detected (heuristic); add a "
180
+ "global try/catch via Error Port + Decisional",
181
+ "best-practices 5"))
182
+
183
+ findings.extend(_secret_smells(nonstructural))
184
+
185
+ summary = {
186
+ "action_count": len(_actions(flow)),
187
+ "nonstructural_action_count": n,
188
+ "slow_actions": slow,
189
+ "has_description": has_desc,
190
+ "error_handling_detected": error_handling,
191
+ }
192
+ return findings, summary
193
+
194
+
195
+ def _secret_smells(actions: list[dict]) -> list[dict]:
196
+ out: list[dict] = []
197
+ for a in actions:
198
+ params = ci(a, "parameters") or []
199
+ for p in params:
200
+ if not isinstance(p, dict) or ci(p, "variable"):
201
+ continue # bound to a variable -> not an inline literal
202
+ val = ci(p, "value")
203
+ if not isinstance(val, str) or not val or _GUID_RE.match(val):
204
+ continue # GUIDs (e.g. a credential id literal) are expected, not secrets
205
+ low = val.lower()
206
+ if any(k in low for k in _SECRET_KEYWORDS) or (
207
+ len(val) >= 24 and _TOKEN_RE.match(val) and not val.startswith("<%")):
208
+ out.append(_f("practice", "warn", "possible-inline-secret",
209
+ "a parameter holds a literal that looks like a secret; "
210
+ "secrets must live in the Credential Manager, not in the process",
211
+ "best-practices 2", _name(a)))
212
+ break
213
+ return out
214
+
215
+
216
+ def audit_process(flow: dict) -> dict:
217
+ """Full audit: correctness + practice findings + a summary."""
218
+ correctness = correctness_findings(flow)
219
+ practice, summary = _practice_findings(flow)
220
+ findings = correctness + practice
221
+ counts = {"fail": 0, "warn": 0, "info": 0}
222
+ for f in findings:
223
+ counts[f["severity"]] = counts.get(f["severity"], 0) + 1
224
+ summary["findings_by_severity"] = counts
225
+ summary["title"] = ci(flow, "title") or ci(flow, "name")
226
+ return {"findings": findings, "summary": summary}
@@ -0,0 +1,135 @@
1
+ """The build-and-test self-test checklist, as structured data.
2
+
3
+ Single source of truth for what "tested" means (the playbook's checklist in
4
+ machine-readable form). The `checklist` action emits it; `verify` runs the
5
+ automatable steps; the manual steps are surfaced so a human/LLM cannot quietly
6
+ skip them. Keep this in sync with PROCESIO-BUILD-AND-TEST-PLAYBOOK.md.
7
+
8
+ Each step:
9
+ id stable slug
10
+ phase validate | run | forms | webhooks | e2e
11
+ title what to check
12
+ how concrete mechanic
13
+ tool which registered tool/action performs it (or "" for judgment)
14
+ automatable True -> `verify` can run it
15
+ False -> a human/LLM must do it (named in verify's manual_checks)
16
+ citation where it comes from
17
+ """
18
+ from __future__ import annotations
19
+
20
+ STEPS: list[dict] = [
21
+ # A. static validation -----------------------------------------------------
22
+ {"id": "validate-process", "phase": "validate", "automatable": True,
23
+ "title": "Validate the process with PROCESIO's own validator",
24
+ "how": "POST /api/Projects/validate; expect no validation errors",
25
+ "tool": "procesio request", "citation": "playbook A"},
26
+ {"id": "config-parity-audit", "phase": "validate", "automatable": True,
27
+ "title": "Designer-vs-runtime parity: every action configured",
28
+ "how": "runtime Parameters[] must be mirrored into CustomData.configuration "
29
+ "or the designer shows 'not configured' and Validate fails",
30
+ "tool": "procesio agent (audit/verify)", "citation": "playbook A; PHASE4-E2E"},
31
+ {"id": "test-credentials", "phase": "validate", "automatable": True,
32
+ "title": "Test every credential the process uses",
33
+ "how": "POST /api/Credentials/test returns a real upstream body when placement is right",
34
+ "tool": "procesio request", "citation": "playbook A; PHASE4-E2E 3-4"},
35
+ {"id": "test-actions", "phase": "validate", "automatable": True,
36
+ "title": "Test individual actions where supported",
37
+ "how": "POST /api/Actions/test", "tool": "procesio request",
38
+ "citation": "playbook A"},
39
+ {"id": "db-credential-engine", "phase": "validate", "automatable": True,
40
+ "title": "For a DB credential, Test Connection against the chosen engine",
41
+ "how": "a MySQL DB credential (server-type MySQL) or a Redis credential must pass "
42
+ "POST /api/Credentials/test — it opens a real connection",
43
+ "tool": "procesio credential-test", "citation": "datastore/best-practices; PRC-3696"},
44
+ # B. run + instance --------------------------------------------------------
45
+ {"id": "run-instance", "phase": "run", "automatable": True,
46
+ "title": "Run the process and read the real instance status",
47
+ "how": "run-process --synchronous, then status 50 = finished, 40 = ran-with-errors",
48
+ "tool": "procesio run-process / get-instance-status",
49
+ "citation": "playbook B; PHASE4-E2E 6,15"},
50
+ {"id": "read-action-errors", "phase": "run", "automatable": True,
51
+ "title": "Read per-action errorMessage, do not assume success",
52
+ "how": "GET /api/Projects/instances/{id}/status?getActions=true",
53
+ "tool": "procesio get-instance-status --actions", "citation": "playbook B"},
54
+ {"id": "download-artifact", "phase": "run", "automatable": False,
55
+ "title": "Download and open any generated file",
56
+ "how": "GET /api/File/download with uploadFilePath/variableId/instanceId/flowTemplateId",
57
+ "tool": "procesio request", "citation": "playbook B"},
58
+ {"id": "datastore-roundtrip", "phase": "run", "automatable": True,
59
+ "title": "Data Store: a row round-trips (add -> filtered read -> update -> delete)",
60
+ "how": "add-rows then get-rows with a filter returns exactly it; update-row by PK and "
61
+ "delete-rows change affectedRows as expected (rows keyed by display name)",
62
+ "tool": "procesio datastore-*", "citation": "datastore"},
63
+ {"id": "schedule-cron", "phase": "run", "automatable": True,
64
+ "title": "Schedule: preview a cron string, then confirm the stored recurrence",
65
+ "how": "validate-crontab returns the expected next occurrences; create-schedule "
66
+ "--cron then get-schedule shows recurrence type 8 (CRON)",
67
+ "tool": "procesio validate-crontab / create-schedule / get-schedule",
68
+ "citation": "scheduling; PRC-3282"},
69
+ # C. forms -----------------------------------------------------------------
70
+ {"id": "form-render", "phase": "forms", "automatable": False,
71
+ "title": "Confirm the form renders (layout, theme, controls)",
72
+ "how": "open forms.procesio.app/... and screenshot",
73
+ "tool": "web", "citation": "playbook C"},
74
+ {"id": "form-behavior", "phase": "forms", "automatable": False,
75
+ "title": "Verify field value-flow in a REAL browser, not headless",
76
+ "how": "headless fill()/press() do NOT update the Angular form model and "
77
+ "RUN_JAVASCRIPT events do not fire headlessly -> false negatives",
78
+ "tool": "web (persistent session)", "citation": "playbook C; PHASE4-E2E 7-11,21"},
79
+ {"id": "form-triggers", "phase": "forms", "automatable": False,
80
+ "title": "Confirm RUN_PROCESS triggers ran the process and produced the artifact",
81
+ "how": "prefer server-side RUN_PROCESS mapping over form JS reading field values",
82
+ "tool": "web", "citation": "playbook C"},
83
+ {"id": "form-theme-render", "phase": "forms", "automatable": False,
84
+ "title": "Confirm the theme renders: dark mode + element alignment",
85
+ "how": "toggle dark mode and check the 16-var palette applies; container elements "
86
+ "honor their --fd/--jc/--ai alignment vars — verify in a real browser",
87
+ "tool": "web", "citation": "playbook C; form-styling"},
88
+ {"id": "form-datastore-trigger", "phase": "forms", "automatable": False,
89
+ "title": "Confirm a RUN_DATA_STORE_OPERATION trigger runs and the row round-trips",
90
+ "how": "fire the element event; the READ/ADD/UPDATE/DELETE op hits the store and the "
91
+ "result maps back into the form (filters apply to every op except ADD)",
92
+ "tool": "web + procesio datastore-get-rows", "citation": "datastore"},
93
+ # D. webhooks --------------------------------------------------------------
94
+ {"id": "webhook-trigger", "phase": "webhooks", "automatable": True,
95
+ "title": "Trigger the webhook and confirm an async instance runs to status 50",
96
+ "how": "POST the webhook endpoint with a real payload, then poll instances",
97
+ "tool": "procesio request / list-instances", "citation": "playbook D"},
98
+ {"id": "webhook-body-binding", "phase": "webhooks", "automatable": False,
99
+ "title": "Webhook body binds WHOLE to a model-typed variable",
100
+ "how": "bind the body to a primitive and you get raw JSON instead of fields",
101
+ "tool": "procesio agent (design check)", "citation": "playbook D; PHASE4-E2E 1"},
102
+ # E. end-to-end ------------------------------------------------------------
103
+ {"id": "e2e-flow", "phase": "e2e", "automatable": False,
104
+ "title": "Exercise the whole use case as a user; verify the real artifact",
105
+ "how": "form -> process(es) -> document/email/SQL -> system of record",
106
+ "tool": "web + procesio", "citation": "playbook E"},
107
+ {"id": "idempotency", "phase": "e2e", "automatable": False,
108
+ "title": "Trigger twice; confirm no duplicate side effects",
109
+ "how": "external IDs / dedupe keys make a retry or double-trigger safe",
110
+ "tool": "", "citation": "best-practices 2"},
111
+ {"id": "ux-timing", "phase": "e2e", "automatable": False,
112
+ "title": "Check forms UX timing (1s / 3s rules)",
113
+ "how": ">=90% of clicks under 1s, <=10% in 1-3s, none ever over 3s",
114
+ "tool": "web", "citation": "best-practices 9"},
115
+ {"id": "speed", "phase": "e2e", "automatable": True,
116
+ "title": "Check optimize-for-speed (action count, slow actions)",
117
+ "how": "~10ms per action; reduce count; minimize Call API/SQL/FTP/Decisional",
118
+ "tool": "procesio agent (audit)", "citation": "best-practices 10"},
119
+ ]
120
+
121
+ PHASES = ["validate", "run", "forms", "webhooks", "e2e"]
122
+
123
+
124
+ def steps(phase: str | None = None, automatable_only: bool = False) -> list[dict]:
125
+ out = STEPS
126
+ if phase:
127
+ out = [s for s in out if s["phase"] == phase]
128
+ if automatable_only:
129
+ out = [s for s in out if s["automatable"]]
130
+ return [dict(s) for s in out]
131
+
132
+
133
+ def manual_steps() -> list[dict]:
134
+ """Steps `verify` cannot run - a human/LLM must do them by hand."""
135
+ return [dict(s) for s in STEPS if not s["automatable"]]
@@ -0,0 +1,19 @@
1
+ """Runtime context for the PROCESIO agent.
2
+
3
+ Unlike the outreach agent there is no state backend - the PROCESIO agent is
4
+ stateless. The only thing context-actions need is a tool invoker (so they can
5
+ drive the `procesio` tool), which tests replace with a fake. No secret of its
6
+ own; readiness comes from the tools it drives.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ from agents._lib import toolrunner
11
+
12
+
13
+ class ProcesioContext:
14
+ def __init__(self, invoke=None):
15
+ self.invoke = invoke or toolrunner.invoke
16
+
17
+ @classmethod
18
+ def create(cls, invoke=None) -> "ProcesioContext":
19
+ return cls(invoke=invoke)
File without changes
@@ -0,0 +1,39 @@
1
+ """audit action - static best-practice analysis of a process (no run). Surfaces
2
+ the inefficiency / UX / robustness smells so they get addressed: action count,
3
+ slow actions, missing error handling, missing description, possible inline secret,
4
+ plus the designer-vs-runtime parity correctness findings.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import argparse
9
+
10
+ from agents._lib.actiondef import ActionDef
11
+ from agents.procesio import audit as auditlib
12
+ from agents.procesio import verifylib
13
+
14
+
15
+ def _audit(ctx, args) -> dict:
16
+ scope = verifylib.scope_args(args.profile, args.workspace_id)
17
+ flow = verifylib._flow_from(
18
+ ctx.invoke("procesio", "get-process", "--id", args.process_id, *scope))
19
+ report = auditlib.audit_process(flow)
20
+ report["process_id"] = args.process_id
21
+ return report
22
+
23
+
24
+ def _args(p: argparse.ArgumentParser) -> None:
25
+ p.add_argument("--process-id", dest="process_id", required=True,
26
+ help="process (project) id to audit")
27
+ p.add_argument("--profile", help="procesio credential profile to use")
28
+ p.add_argument("--workspace-id", dest="workspace_id",
29
+ help="workspace GUID the process lives in (required whenever it "
30
+ "is not the profile's default workspace)")
31
+
32
+
33
+ ACTIONS = {
34
+ "audit": ActionDef(
35
+ func=_audit, context=True, add_args=_args,
36
+ description="Static best-practice + correctness audit of a process "
37
+ "(action count, slow actions, error handling, inline secrets, "
38
+ "designer-vs-runtime parity)."),
39
+ }
@@ -0,0 +1,34 @@
1
+ """checklist action - emit the self-test checklist as structured steps. The single
2
+ source `verify` runs and any session follows, so a test layer cannot be skipped
3
+ by forgetting it exists.
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import argparse
8
+
9
+ from agents._lib.actiondef import ActionDef
10
+ from agents.procesio import checklist as cl
11
+
12
+
13
+ def _checklist(args) -> dict:
14
+ steps = cl.steps(phase=args.phase, automatable_only=args.automatable_only)
15
+ return {
16
+ "phases": cl.PHASES,
17
+ "count": len(steps),
18
+ "steps": steps,
19
+ "manual_steps": [s["id"] for s in cl.manual_steps()],
20
+ }
21
+
22
+
23
+ def _args(p: argparse.ArgumentParser) -> None:
24
+ p.add_argument("--phase", help="filter to one phase: " + " | ".join(cl.PHASES))
25
+ p.add_argument("--automatable-only", dest="automatable_only",
26
+ action="store_true", help="only steps `verify` can run")
27
+
28
+
29
+ ACTIONS = {
30
+ "checklist": ActionDef(
31
+ func=_checklist, add_args=_args,
32
+ description="Emit the rigorous self-test checklist (structured). "
33
+ "--phase to filter, --automatable-only for verify-runnable steps."),
34
+ }
@@ -0,0 +1,36 @@
1
+ """guidance action - serve the agent's knowledge base (the build-and-test
2
+ playbook, best practices, and the tool-vs-agent boundary) from one
3
+ registry-discoverable place. The methodology is loaded, never re-derived.
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import argparse
8
+
9
+ from agents._lib.actiondef import ActionDef
10
+ from agents._lib.errors import AgentError
11
+ from agents.procesio import knowledge
12
+
13
+
14
+ def _guidance(args) -> dict:
15
+ if args.topic == "all":
16
+ return {"topics": knowledge.topics(), "sections": knowledge.load_all()}
17
+ try:
18
+ return knowledge.load(args.topic)
19
+ except (KeyError, FileNotFoundError) as e:
20
+ raise AgentError("unknown_topic", str(e),
21
+ {"known": knowledge.topics() + ["all"]})
22
+
23
+
24
+ def _args(p: argparse.ArgumentParser) -> None:
25
+ p.add_argument("--topic", default="all",
26
+ help="playbook | best-practices | visual-organization | datastore | "
27
+ "scheduling | environments | boundary | all (default all)")
28
+
29
+
30
+ ACTIONS = {
31
+ "guidance": ActionDef(
32
+ func=_guidance, add_args=_args,
33
+ description="Serve the build-and-test playbook + best practices (the agent's "
34
+ "knowledge base). --topic playbook|best-practices|"
35
+ "visual-organization|boundary|all."),
36
+ }
@@ -0,0 +1,33 @@
1
+ """status action - report the PROCESIO agent's readiness and that of the tools it
2
+ drives. Pure introspection: reads the registry, no network, no secrets needed.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ from agents._lib.actiondef import ActionDef
7
+
8
+
9
+ def _status(_args) -> dict:
10
+ from registry import list_agents
11
+
12
+ me = next((a for a in list_agents() if a.get("name") == "procesio"), None)
13
+ if me is None:
14
+ return {"agent": "procesio", "found": False,
15
+ "note": "agent.yaml not discovered by the registry"}
16
+ tools = me.get("tool_status", {})
17
+ return {
18
+ "agent": "procesio",
19
+ "found": True,
20
+ "version": me.get("version"),
21
+ "ready": me.get("ready", False),
22
+ "missing_secrets": me.get("missing_secrets", []),
23
+ "tools_ready": sorted(n for n, s in tools.items() if s.get("ready")),
24
+ "tools_unready": {n: s for n, s in tools.items() if not s.get("ready")},
25
+ }
26
+
27
+
28
+ ACTIONS = {
29
+ "status": ActionDef(
30
+ func=_status,
31
+ description="Report agent + driven-tool readiness (presence + secrets).",
32
+ ),
33
+ }
@@ -0,0 +1,39 @@
1
+ """verify action - run the automatable self-test steps against a live process and
2
+ return a pass/fail report. The enforcement gate: it validates, audits config
3
+ parity, and (with --run) runs the process and reads the real instance status.
4
+ Manual steps it cannot run are listed so they are not silently skipped.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import argparse
9
+
10
+ from agents._lib.actiondef import ActionDef
11
+ from agents.procesio import verifylib
12
+
13
+
14
+ def _verify(ctx, args) -> dict:
15
+ return verifylib.verify_process(
16
+ ctx.invoke, args.process_id, profile=args.profile,
17
+ workspace_id=args.workspace_id,
18
+ run=args.run, payload=args.payload, timeout=args.timeout)
19
+
20
+
21
+ def _args(p: argparse.ArgumentParser) -> None:
22
+ p.add_argument("--process-id", dest="process_id", required=True,
23
+ help="process (project) id to verify")
24
+ p.add_argument("--run", action="store_true",
25
+ help="actually run the process and read the instance status")
26
+ p.add_argument("--payload", help="input variables as a JSON object (with --run)")
27
+ p.add_argument("--timeout", type=int, help="secondsTimeOut for the synchronous run")
28
+ p.add_argument("--profile", help="procesio credential profile to use")
29
+ p.add_argument("--workspace-id", dest="workspace_id",
30
+ help="workspace GUID the process lives in (required whenever it "
31
+ "is not the profile's default workspace)")
32
+
33
+
34
+ ACTIONS = {
35
+ "verify": ActionDef(
36
+ func=_verify, context=True, add_args=_args,
37
+ description="Run the automatable self-test gate against a process (validate, "
38
+ "config-parity audit, and with --run execute + read instance status)."),
39
+ }