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,76 @@
1
+ # Connector Builder ⇄ PROCESIO interop
2
+
3
+ How this agent hands off between the `connector-builder` and `procesio` tools/agents. The whole point of building a connector is to run it in PROCESIO, so this hand-off is the spine of the loop.
4
+
5
+ ## The bridge artifact: the `.nupkg`
6
+
7
+ The AI Connector Builder produces a compiled **PROCESIO Custom Action package** (`.nupkg`, built with the Custom Actions SDK). That single file is the contract between the two systems:
8
+
9
+ ```
10
+ connector-builder download-artifact --build-id <ID> --out connector.nupkg
11
+ │ (a real PROCESIO Custom Action package)
12
+ ▼
13
+ procesio customaction-upload --file connector.nupkg # POST /api/actions, multipart "package" → {id}
14
+ ```
15
+
16
+ `customaction-upload` returns the new **actionId**. Keep it — you need it to uninstall before re-uploading an improved build.
17
+
18
+ ## Install → verify → cleanup (the procesio side)
19
+
20
+ ```bash
21
+ # 1. Install
22
+ python scripts/run-tool.py procesio customaction-upload --file connector.nupkg # → {"id": "<actionId>"}
23
+
24
+ # 2. Confirm it registered
25
+ python scripts/run-tool.py procesio customaction-list # the workspace's custom actions
26
+
27
+ # 3. Test it for real — hand off to the procesio AGENT (owns the test methodology)
28
+ python scripts/run-agent.py procesio verify --process-id <ID>
29
+ # (build/import a process that uses the action; run it; check inputs/outputs/errors)
30
+
31
+ # 4. Before re-uploading a NEW build of the same connector, uninstall the old one
32
+ python scripts/run-tool.py procesio customaction-delete --id <actionId>
33
+ ```
34
+
35
+ `customaction-upload` is `CustomActions.Write`; `customaction-delete` is `CustomActions.Delete`. Re-uploading without deleting can leave duplicate/stale actions in the workspace — always `customaction-delete` the prior actionId first.
36
+
37
+ ## Division of labour
38
+
39
+ | Concern | Owner |
40
+ |---|---|
41
+ | Generate/compile the connector | `connector-builder` tool |
42
+ | Sequence the build pipeline, recommend next step | `connector-builder` **agent** (this one) |
43
+ | Install/uninstall/list the `.nupkg` | `procesio` tool (`customaction-*`) |
44
+ | Test the action inside PROCESIO (processes, forms, webhooks, E2E) | `procesio` **agent** (build-and-test playbook) |
45
+
46
+ This agent does **not** re-implement PROCESIO testing — it calls the procesio agent's `verify` and reads the procesio agent's playbook (`run-agent.py procesio guidance --topic playbook`). Conversely the procesio agent does not know how to build a connector — it receives a finished `.nupkg`.
47
+
48
+ ## Turning PROCESIO feedback into a better connector
49
+
50
+ What PROCESIO tells you maps back to a specific connector-builder action:
51
+
52
+ | PROCESIO observation | Feed back via |
53
+ |---|---|
54
+ | Action's input/output ports are wrong or missing | `connector-builder revise-plan --feedback "..."` → re-approve → re-generate |
55
+ | The action throws / returns wrong data at runtime | `connector-builder regenerate-file --filename <impl>.cs --instructions "<the PROCESIO error>"` |
56
+ | Action metadata/decorators wrong (won't load, bad category) | `regenerate-file` on the decorated class; if recurring, fix the `spec_module` knowledge |
57
+ | The model keeps making the same SDK mistake across connectors | `connector-builder knowledge-update --module-type spec_module|example|prompt ...` then `reload-config` |
58
+
59
+ Rule of thumb: **per-connector** problems → `revise-plan` / `regenerate*`; **systemic** problems (every connector hits them) → edit the builder's `knowledge`. The procesio-custom-actions skill is the authority on what *correct* SDK usage looks like — cite it when writing knowledge corrections.
60
+
61
+ ## One full pass (concrete)
62
+
63
+ ```bash
64
+ B=<build-id>
65
+ python scripts/run-agent.py connector-builder next-step --build-id $B # follow until status=completed
66
+ python scripts/run-tool.py connector-builder download-artifact --build-id $B --out c.nupkg
67
+ ID=$(python scripts/run-tool.py procesio customaction-upload --file c.nupkg | python -c "import sys,json;print(json.load(sys.stdin)['id'])")
68
+ python scripts/run-agent.py procesio verify --process-id <proc-using-the-action>
69
+ # if it failed:
70
+ python scripts/run-tool.py connector-builder regenerate-file --build-id $B --filename Impl.cs --instructions "<error>"
71
+ python scripts/run-tool.py connector-builder approve-generate --build-id $B
72
+ python scripts/run-tool.py connector-builder download-artifact --build-id $B --out c.nupkg
73
+ python scripts/run-tool.py procesio customaction-delete --id $ID
74
+ python scripts/run-tool.py procesio customaction-upload --file c.nupkg
75
+ # re-verify … repeat until green
76
+ ```
@@ -0,0 +1,60 @@
1
+ # Connector Builder — operations & troubleshooting
2
+
3
+ Everything a session needs to actually RUN the build → test-in-PROCESIO → find-gaps → reiterate loop, including the realities learned from live runs. Read this together with the playbook (the method) and the interop doc (the PROCESIO hand-off). Load all three: `run-agent.py connector-builder guidance --topic all`.
4
+
5
+ ## Tool & skill inventory — what to use for each part of the loop
6
+
7
+ | Job | Use | How |
8
+ |---|---|---|
9
+ | Build the connector (whole pipeline) | **`connector-builder` tool** | `run-tool.py connector-builder <action>` — create-build, gather, answer, approve-plan/revise-plan, approve-generate/regenerate-file, validate-*, retry, override-stage, download-artifact, logs, get-issue, knowledge-* |
10
+ | Know what to run next | **this agent** | `run-agent.py connector-builder next-step --build-id <ID>` (reads live state, incl. compile-failure triage) |
11
+ | Review generated C# for SDK correctness | **`procesio-custom-actions` skill** | it is the authority on decorators/IAction/credentials/limits — read it before judging generated code or writing knowledge corrections |
12
+ | Install the `.nupkg` into PROCESIO | **`procesio` tool** | `run-tool.py procesio customaction-upload --file <nupkg>` → actionId; `customaction-list`; `customaction-delete --id <actionId>` |
13
+ | Test the action inside PROCESIO | **`procesio` agent** | `run-agent.py procesio verify --process-id <ID>` and its build-and-test playbook (`run-agent.py procesio guidance`) — it owns the PROCESIO-side testing method |
14
+ | Tune the builder itself (systemic) | **`connector-builder` tool** knowledge-* | edit `prompt` / `spec_module` / `example` / `validation_rule` / `clarification`, then `reload-config` |
15
+
16
+ The agent never re-implements PROCESIO testing — it hands off to the procesio agent. The procesio agent never builds a connector — it receives a finished `.nupkg`.
17
+
18
+ ## Operating reality (from live runs — do not be surprised by these)
19
+
20
+ - **Synchronous LLM stages 504 at the proxy but keep running server-side.** `gather`, `answer` (PLAN), and `revise-plan` routinely exceed the gateway timeout → without `--wait` the tool returns a clean `api_error` with `status_code: 504`. **This is NOT a failure** — the stage completes server-side. **Preferred:** pass `--wait` to these three (`gather --wait`, `answer --wait`, `revise-plan --wait`) — the tool swallows the 504 and polls `get-build` to the settled state, returning the full build detail (`waited: true`, `settled: true`). Tune with `--wait-timeout` (default 600s) / `--poll-interval` (default 8s). Without `--wait`, poll manually via `get-build` (or `next-step --build-id`) until `status`/`step_status` advance. `approve-plan` / `approve-generate` / `retry` / `start-build` return fast (background tasks) but then run through compile — use **`wait-build --build-id <ID>`** (optionally `--until terminal`) to block until they finish. NOTE: when the *agent* drives a `--wait`/`wait-build` call via toolrunner, pass a subprocess timeout longer than `--wait-timeout` (toolrunner defaults to 120s).
21
+ - **`clarification_questions` is `{"questions": [ {id, question, default, options, context, category, required}, … ]}`** — a dict with a `questions` list, not a bare list. Each question has a sensible PROCESIO-aware `default`. Answering `{id: default}` for all is a solid baseline; override only where the connector needs something specific. Keys in `--answers` are the question **ids** (`q1`, `q2`, …).
22
+ - **Review before every approve.** The plan (step 3) is the cheapest place to fix structure — prefer `revise-plan` over fixing generated code later. At generate (step 5), read the files (`get-build` → `generated_files`, or `list-file-versions`) and `regenerate-file` anything wrong before `approve-generate`.
23
+ - **Windows/Git-Bash gotcha:** the `api --path /admin/...` escape hatch has its leading-slash path rewritten by MSYS (`C:/Program Files/Git/admin/...` → 404). Run those with `MSYS_NO_PATHCONV=1` or from PowerShell. First-class actions are unaffected.
24
+
25
+ ## Failure triage (compile is where it usually bites)
26
+
27
+ `next-step --build-id <ID>` attaches a `diagnosis` when a build failed at compile. The logic:
28
+
29
+ - **NU1301 / "failed to retrieve information about '<pkg>'" / can't reach the source index** → **PLATFORM problem, not your code.** The compiler can't pull the PROCESIO SDK (`Ringhel.Procesio.Action.Core`) from GitHub Packages. Regenerating is useless. Check `get-config --which compilation` (nuget_sources) and `POST /admin/platform-settings/test-nuget` — but note test-nuget only validates the ORG index, and `build-selftest` passes without the SDK, so neither proves the SDK package is restorable. Fix is server-side (grant the GitHub Packages PAT read access to the SDK package, or mirror it to a reachable feed), then `retry --from-step 6`. *No code change needed — the generated code stays parked at step 6 and completes once restore works.* (This is exactly what happened on the first real build.)
30
+ - **(NU1301 above was resolved by 2026-10: SDK restore from GitHub Packages works; Action-Core 2.1.0 restores fine.)**
31
+ - **NU1605 "detected package downgrade: Newtonsoft.Json" → CODE problem.** Action-Core 2.1.0 depends on Newtonsoft.Json 13.0.4; a `.csproj` pinning 13.0.3 cannot restore. Pin 13.0.4.
32
+ - **NU1102 / "unable to find package … version" → CODE problem.** The `.csproj` pinned a non-existent version. Read it (`get-file-version --filename *.csproj`), fix the version (`update-file`), then `retry --from-step 6`.
33
+ - **Real C# errors → CODE problem.** Let the FIX loop try (`retry --from-step 6`); if it can't, `override-stage` back to generate and `regenerate-file` the offending file with the compiler error as instructions.
34
+
35
+ Distinguish **transient vs deterministic**: retry once; if the same restore error repeats, it's deterministic → platform, escalate rather than loop. Every failure also writes a `stage_logs` row (`logs --stage compile --success false`) and often an issue case (`list-issues --build-id` / `get-issue`) with a before/after code snapshot.
36
+
37
+ ## Turning PROCESIO feedback into a better connector (reiterate)
38
+
39
+ After `customaction-upload` + a `procesio verify` run, map what you see back to an action:
40
+
41
+ | PROCESIO observation | Feed back via |
42
+ |---|---|
43
+ | Wrong/missing input or output ports | `revise-plan` → re-approve → regenerate |
44
+ | Action throws / returns wrong data at runtime | `regenerate-file --filename <impl>.cs --instructions "<the PROCESIO error>"` |
45
+ | Won't load / bad metadata / wrong category | `regenerate-file` on the decorated class; if recurring, fix the `spec_module` knowledge |
46
+ | Upload rejected 261 "Expects value type does not match the property type" | `regenerate-file` the action class: a nullable `int?` cannot carry `Expects`; use non-nullable `int` (or a string) |
47
+ | Action runs but its HTTP call times out, while the API answers from your machine | Probe the host from PROCESIO (`procesio credential-create --dry-run` with a no-auth REST API credential); an unreachable host is an egress problem, not code |
48
+ | Generation looks like it ignores a knowledge edit | `knowledge-list` for a `"source": "database"` override of that module; rewrite it with `knowledge-update --content-file` (never delete it: delete tombstones the base too) |
49
+ | Every connector repeats the same SDK mistake | `knowledge-update --module-type spec_module|example|prompt …` then `reload-config` (improves ALL future builds) |
50
+
51
+ Per-connector problems → `revise-plan` / `regenerate*`. Systemic problems → edit `knowledge`. Cite the `procesio-custom-actions` skill for what *correct* SDK usage is when writing a knowledge correction. Before re-uploading a fixed build, `procesio customaction-delete --id <old actionId>` so you don't leave stale duplicates.
52
+
53
+ ## Definition of done — "as expected"
54
+
55
+ A connector is done ONLY when all of these hold:
56
+ 1. It **compiled** (`status: completed`, a `.nupkg` downloads).
57
+ 2. It **installed** into PROCESIO (`customaction-list` shows it, `isCustom: true`).
58
+ 3. It **ran correctly inside a real PROCESIO process** — expected inputs produce expected outputs, and the designed error path behaves (e.g. an API that returns HTTP 200 with `ok:false` sets the error output and does not throw), verified per the procesio agent's build-and-test playbook.
59
+
60
+ Compiling and installing are necessary, not sufficient. Keep iterating (test → diagnose → improve → recompile → re-upload) until step 3 passes. If step 3 needs a live credential (e.g. a Slack bot token) and none is available, the runtime test is the one open item — say so explicitly rather than declaring done.
@@ -0,0 +1,51 @@
1
+ # connector-builder agent
2
+
3
+ Orchestrates the **AI Connector Builder** ([connector-builder.procesio.app](https://connector-builder.procesio.app)) and **PROCESIO** to run one loop end to end:
4
+
5
+ ```
6
+ API docs → [connector-builder] build a Custom Action → download .nupkg
7
+ → [procesio] install + test it live → capture failures
8
+ → [connector-builder] improve (revise plan / regenerate / tune knowledge)
9
+ → recompile → re-upload → repeat until it passes
10
+ ```
11
+
12
+ It is the **executable doctrine** for that loop. Tool mechanics live in `tools/connector-builder/` and `tools/procesio/`; this agent decides *what to run next* and *how the two tools hand off*.
13
+
14
+ ## Tool-vs-agent boundary
15
+
16
+ - **`connector-builder` tool** — the REST client. One subprocess call per API action (create-build, gather, answer, approve-*, download-artifact, knowledge-*, …). No methodology, just the wire.
17
+ - **`procesio` tool** — installs/uninstalls the produced `.nupkg` (`customaction-upload` / `customaction-delete` / `customaction-list`) and runs processes.
18
+ - **this agent** — sequences those calls. It never imports a tool's internals; it drives them through the registry via `agents/_lib/toolrunner`.
19
+ - **`procesio` agent** — owns the PROCESIO-side *testing* methodology (the build-and-test playbook: validate/run/forms/webhooks/E2E). This agent hands off to it at the "test" step.
20
+
21
+ ## Actions
22
+
23
+ ```bash
24
+ # Readiness (this agent + connector-builder + procesio tools)
25
+ python scripts/run-agent.py connector-builder status
26
+
27
+ # The whole loop as a checklist (optionally for a goal)
28
+ python scripts/run-agent.py connector-builder checklist --goal "Stripe refunds connector"
29
+
30
+ # What do I run next? — live, from the build's real state
31
+ python scripts/run-agent.py connector-builder next-step --build-id <ID>
32
+ # …or classify a known state pair without a live call
33
+ python scripts/run-agent.py connector-builder next-step --status generating --step-status waiting_user
34
+
35
+ # Load the methodology
36
+ python scripts/run-agent.py connector-builder guidance --topic playbook
37
+ python scripts/run-agent.py connector-builder guidance --topic interop
38
+ ```
39
+
40
+ `next-step` turns the 8-stage pipeline state machine into a single "what now?" answer, including the PROCESIO hand-off once the connector compiles. `checklist` is the same loop as an ordered, executable list.
41
+
42
+ ## Knowledge base (served by `guidance`)
43
+
44
+ - **CONNECTOR-BUILDER-PLAYBOOK.md** — the operating procedure for the build→test→improve loop.
45
+ - **CONNECTOR-BUILDER-PROCESIO-INTEROP.md** — the precise hand-off between the connector-builder and procesio tools/agent (the `.nupkg` bridge, upload/test/cleanup, where each improvement type goes).
46
+ - **README.md** — this file (overview + boundary).
47
+
48
+ ## Design notes
49
+
50
+ - The agent dir name is hyphenated, so its modules are imported by BARE name with the agent root on sys.path (like the hyphenated tools); shared agent libs come from `agents._lib`.
51
+ - Stateless: no state backend, no own secret. Readiness comes from the tools it drives.
@@ -0,0 +1,61 @@
1
+ name: connector-builder
2
+ description: >-
3
+ Connector-building orchestration agent for PROCESIO. Drives the
4
+ `connector-builder` tool (the AI Connector Builder REST client at
5
+ connector-builder.procesio.app) and the `procesio` tool to run the full loop:
6
+ generate a Custom Action connector from API docs → download the compiled .nupkg
7
+ → upload it to PROCESIO → test it live → feed failures back to improve the
8
+ connector (and, for systemic issues, the builder's own knowledge base). It is
9
+ the executable side of the build→test→improve playbook in this folder and the
10
+ bridge to the procesio agent's build-and-test playbook. Tool mechanics stay in
11
+ tools/connector-builder/; methodology lives here.
12
+ version: 0.1.0
13
+ runtime: python
14
+ entrypoint: main.py
15
+
16
+ # Tools this agent DRIVES (registry-resolved, never hardcoded at call sites).
17
+ # Readiness is derived from this list: connector-builder for the build pipeline,
18
+ # procesio to install + test the produced .nupkg in a real workspace.
19
+ tools:
20
+ - connector-builder
21
+ - procesio
22
+
23
+ routing:
24
+ triggers:
25
+ - build a PROCESIO custom action / connector from API docs and test it
26
+ - drive the AI Connector Builder end to end (gather → plan → generate → compile)
27
+ - what's the next step for this connector build
28
+ - upload a generated connector to PROCESIO and improve it from the feedback
29
+ - how do I run the connector build → test → improve loop
30
+ primary_action: next-step
31
+ example: >-
32
+ connector-builder next-step --build-id <ID> (checklist: connector-builder
33
+ checklist; guidance: connector-builder guidance --topic playbook; status:
34
+ connector-builder status)
35
+
36
+ actions:
37
+ - name: status
38
+ description: Report agent + driven-tool readiness (connector-builder, procesio).
39
+ - name: guidance
40
+ description: >-
41
+ Serve the build→test→improve playbook + PROCESIO interop doctrine from one
42
+ registry-discoverable place.
43
+ args:
44
+ - {name: topic, type: string, default: all, description: "playbook | interop | troubleshooting | boundary | all"}
45
+ - name: next-step
46
+ description: >-
47
+ Recommend the next pipeline action for a build's state. Reads status live
48
+ with --build-id (drives connector-builder get-build), or classify a given
49
+ --status / --step-status pair. Includes the hand-off to PROCESIO at deliver.
50
+ args:
51
+ - {name: build-id, type: string, description: "Read live status from the connector-builder tool"}
52
+ - {name: status, type: string, description: "Build overall status (if not using --build-id)"}
53
+ - {name: step-status, type: string, description: "running | waiting_user (refines the recommendation)"}
54
+ - name: checklist
55
+ description: Emit the end-to-end build→upload→test→improve checklist as structured steps.
56
+ args:
57
+ - {name: goal, type: string, description: "Optional one-line connector goal to stamp in"}
58
+
59
+ # No own secret: readiness comes from the tools it drives. The connector-builder
60
+ # API credentials and the PROCESIO credentials belong to those tools.
61
+ secrets: []
@@ -0,0 +1,19 @@
1
+ """Runtime context for the connector-builder agent.
2
+
3
+ Stateless: the only thing context-actions need is a tool invoker so they can
4
+ drive the `connector-builder` and `procesio` tools (tests replace it with a
5
+ fake). The agent has no secret of its own — readiness comes from the tools it
6
+ drives.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ from agents._lib import toolrunner
11
+
12
+
13
+ class ConnectorBuilderContext:
14
+ def __init__(self, invoke=None):
15
+ self.invoke = invoke or toolrunner.invoke
16
+
17
+ @classmethod
18
+ def create(cls, invoke=None) -> "ConnectorBuilderContext":
19
+ return cls(invoke=invoke)
@@ -0,0 +1 @@
1
+ """connector-builder agent action handlers (imported by BARE name from main.py)."""
@@ -0,0 +1,71 @@
1
+ """checklist action — emit the end-to-end build → upload → test → improve
2
+ checklist as structured steps, so a session can execute the loop deterministically.
3
+
4
+ Pure (no live calls); optionally stamps a --goal into the first step's note.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import argparse
9
+
10
+ from agents._lib.actiondef import ActionDef
11
+
12
+ _STEPS = [
13
+ {"phase": "scope", "tool": "connector-builder", "action": "create-build",
14
+ "do": "Create the build from the API docs URL(s) or pasted text + clear user-requirements.",
15
+ "command": "create-build --api-url <docs> --user-requirements '...'"},
16
+ {"phase": "gather", "tool": "connector-builder", "action": "gather",
17
+ "do": "Run GATHER+CLARIFY; read the api_profile and clarification_questions.",
18
+ "command": "gather --build-id <ID>"},
19
+ {"phase": "clarify", "tool": "connector-builder", "action": "answer",
20
+ "do": "Answer every clarification question (keys = question ids). Triggers PLAN.",
21
+ "command": "answer --build-id <ID> --answers '{...}'"},
22
+ {"phase": "plan", "tool": "connector-builder", "action": "approve-plan / revise-plan",
23
+ "do": "Review the implementation plan. revise-plan until right, then approve-plan.",
24
+ "command": "revise-plan --feedback '...' | approve-plan --build-id <ID>"},
25
+ {"phase": "generate", "tool": "connector-builder", "action": "approve-generate / regenerate-file",
26
+ "do": "Review generated files; regenerate any wrong file; then approve-generate.",
27
+ "command": "regenerate-file --filename X.cs --instructions '...' | approve-generate"},
28
+ {"phase": "validate+compile", "tool": "connector-builder", "action": "validate-* / retry",
29
+ "do": "Clear validation findings; let it compile. On compile failure, retry --from-step 6.",
30
+ "command": "validate-continue | retry --from-step 6"},
31
+ {"phase": "deliver", "tool": "connector-builder", "action": "download-artifact",
32
+ "do": "Download the compiled .nupkg.",
33
+ "command": "download-artifact --build-id <ID> --out connector.nupkg"},
34
+ {"phase": "install", "tool": "procesio", "action": "customaction-upload",
35
+ "do": "Install the connector into the PROCESIO workspace.",
36
+ "command": "procesio customaction-upload --file connector.nupkg"},
37
+ {"phase": "test", "tool": "procesio (agent)", "action": "verify",
38
+ "do": "Exercise the action in a real process (inputs/outputs, errors) per the procesio build-and-test playbook.",
39
+ "command": "run-agent.py procesio verify --process-id <ID>"},
40
+ {"phase": "improve", "tool": "connector-builder", "action": "revise-plan / regenerate-file / knowledge-update",
41
+ "do": "Feed PROCESIO failures back: fix the plan/code for this connector; for systemic generation issues edit the builder's knowledge (prompt/spec_module/example) then reload-config. Re-compile and re-upload.",
42
+ "command": "regenerate-file ... | knowledge-update --module-type spec_module ...; reload-config"},
43
+ {"phase": "cleanup", "tool": "procesio", "action": "customaction-delete",
44
+ "do": "Before re-uploading a new build of the same connector, uninstall the old one.",
45
+ "command": "procesio customaction-delete --id <actionId>"},
46
+ ]
47
+
48
+
49
+ def _checklist(args) -> dict:
50
+ steps = [dict(s, n=i + 1) for i, s in enumerate(_STEPS)]
51
+ out = {
52
+ "title": "Connector build → PROCESIO test → improve loop",
53
+ "loop": "Steps 8-11 repeat until the action passes its PROCESIO tests.",
54
+ "steps": steps,
55
+ }
56
+ if args.goal:
57
+ out["goal"] = args.goal
58
+ steps[0]["note"] = f"Goal: {args.goal}"
59
+ return out
60
+
61
+
62
+ def _checklist_args(p: argparse.ArgumentParser) -> None:
63
+ p.add_argument("--goal", help="Optional one-line connector goal to stamp in")
64
+
65
+
66
+ ACTIONS = {
67
+ "checklist": ActionDef(
68
+ func=_checklist, add_args=_checklist_args,
69
+ description="Emit the end-to-end build→upload→test→improve checklist.",
70
+ ),
71
+ }
@@ -0,0 +1,37 @@
1
+ """guidance action — serve the agent's operating doctrine from one place.
2
+
3
+ Loads the playbook / interop / boundary markdown so a session reads the
4
+ methodology instead of re-deriving it. Pure file read; no live calls.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import argparse
9
+
10
+ from agents._lib.actiondef import ActionDef
11
+ from agents._lib.errors import AgentError
12
+
13
+ import knowledge
14
+
15
+
16
+ def _guidance(args) -> dict:
17
+ topic = (args.topic or "all").strip().lower()
18
+ if topic == "all":
19
+ return {"topics": knowledge.topics(), "documents": knowledge.load_all()}
20
+ try:
21
+ return knowledge.load(topic)
22
+ except KeyError as e:
23
+ raise AgentError("unknown_topic", str(e),
24
+ {"known": knowledge.topics()}) from e
25
+
26
+
27
+ def _guidance_args(p: argparse.ArgumentParser) -> None:
28
+ p.add_argument("--topic", default="all",
29
+ help="playbook | interop | boundary | all")
30
+
31
+
32
+ ACTIONS = {
33
+ "guidance": ActionDef(
34
+ func=_guidance, add_args=_guidance_args,
35
+ description="Serve the build→test→improve playbook + PROCESIO interop doctrine.",
36
+ ),
37
+ }
@@ -0,0 +1,221 @@
1
+ """next-step action — the executable pipeline doctrine.
2
+
3
+ Given a build's (status, step_status) — passed in, or read LIVE from the
4
+ `connector-builder` tool via --build-id — recommend the next tool call(s). This
5
+ turns the 8-stage state machine (documentation/04-PIPELINE-ENGINE.md) into a
6
+ single "what do I run now?" answer, including the hand-off to PROCESIO once the
7
+ connector is built.
8
+
9
+ Pure heuristic over the state pair; the only live call is the optional get-build
10
+ lookup. No secrets of its own.
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import argparse
15
+
16
+ from agents._lib.actiondef import ActionDef
17
+ from agents._lib.errors import AgentError
18
+
19
+ _T = "connector-builder" # the tool name, for the suggested commands
20
+
21
+
22
+ def _cmd(action: str, extra: str = "") -> str:
23
+ base = f"python scripts/run-tool.py {_T} {action} --build-id <ID>"
24
+ return f"{base} {extra}".strip()
25
+
26
+
27
+ # Recommendations keyed by overall status. Where step_status matters
28
+ # (waiting_user vs running) the value is a dict of step_status -> plan.
29
+ _RUNNING = {
30
+ "phase": "running",
31
+ "poll": True,
32
+ "recommended": [{"action": "get-build", "why": "stage is executing; poll until it pauses or finishes",
33
+ "command": _cmd("get-build")}],
34
+ }
35
+
36
+
37
+ def _compile_failure_diagnosis(error_message: str | None) -> dict | None:
38
+ """Triage a COMPILE failure from its error text (the live-run learning).
39
+
40
+ NuGet RESTORE failures (NU1301 / can't reach the source/package index) are a
41
+ PLATFORM config problem — the compiler can't pull the PROCESIO SDK from GitHub
42
+ Packages — NOT a code problem, so regenerating is useless. A MISSING VERSION
43
+ (NU1102) IS a code problem: the .csproj pinned a version that doesn't exist,
44
+ fixable with update-file. Real C# errors are code problems the FIX loop or a
45
+ regenerate handles.
46
+ """
47
+ e = (error_message or "").lower()
48
+ if not e:
49
+ return None
50
+ if "nu1301" in e or ("restore" in e and "nuget" in e) or "retrieve information about" in e:
51
+ return {
52
+ "kind": "platform_nuget_restore",
53
+ "not_your_code": True,
54
+ "why": ("NU1301 = the compiler could not reach the package source/index "
55
+ "(the PROCESIO SDK on GitHub Packages). This is a server-side NuGet "
56
+ "config issue, NOT the generated code — regenerating will not help."),
57
+ "fix": [
58
+ "python scripts/run-tool.py connector-builder get-config --which compilation # inspect nuget_sources",
59
+ "MSYS_NO_PATHCONV=1 python scripts/run-tool.py connector-builder api --method POST --path /admin/platform-settings/test-nuget # validate PAT",
60
+ "Fix platform-side: grant the GitHub Packages PAT read access to Ringhel.Procesio.Action.Core (or mirror the SDK to a reachable feed).",
61
+ _cmd("retry", "--from-step 6") + " # once the source is reachable",
62
+ ],
63
+ }
64
+ if "nu1102" in e or "unable to find package" in e:
65
+ return {
66
+ "kind": "bad_package_version",
67
+ "not_your_code": False,
68
+ "why": "NU1102 = the .csproj pinned a package version that does not exist.",
69
+ "fix": [
70
+ _cmd("get-file-version", "--filename <name>.csproj --version 1") + " # read the pin",
71
+ _cmd("update-file", "--filename <name>.csproj --content-file fixed.csproj") + " # fix the version",
72
+ _cmd("retry", "--from-step 6"),
73
+ ],
74
+ }
75
+ return {
76
+ "kind": "code_error",
77
+ "not_your_code": False,
78
+ "why": "Looks like a C#/compile error in the generated code.",
79
+ "fix": [
80
+ _cmd("logs", "--stage compile --success false") + " # read the exact errors",
81
+ _cmd("retry", "--from-step 6") + " # let the FIX loop attempt a correction",
82
+ "OR override-stage back to generate and regenerate-file the offending file.",
83
+ ],
84
+ }
85
+
86
+
87
+ def _recommend(status: str, step_status: str | None,
88
+ error_message: str | None = None, last_failed_step=None) -> dict:
89
+ s = (status or "").strip().lower()
90
+ ss = (step_status or "").strip().lower() or None
91
+
92
+ if s in ("", "pending"):
93
+ return {"phase": "pending", "poll": False, "recommended": [
94
+ {"action": "start-build", "why": "run the entire pipeline as one background task",
95
+ "command": _cmd("start-build")},
96
+ {"action": "gather", "why": "OR drive it manually, one stage at a time (synchronous GATHER+CLARIFY)",
97
+ "command": _cmd("gather")},
98
+ ]}
99
+
100
+ if s in ("gathering", "compiling", "fixing", "delivering"):
101
+ return dict(_RUNNING, phase=s)
102
+
103
+ if s == "clarifying":
104
+ return {"phase": "clarify", "poll": False, "recommended": [
105
+ {"action": "answer", "why": "submit answers to the clarification questions (keys are the question ids); triggers PLAN",
106
+ "command": _cmd("answer", "--answers '{\"q1\":\"...\"}'")},
107
+ ], "also": [{"action": "get-build", "why": "re-read clarification_questions if you don't have them",
108
+ "command": _cmd("get-build")}]}
109
+
110
+ if s == "planning":
111
+ if ss == "running":
112
+ return dict(_RUNNING, phase="planning")
113
+ return {"phase": "plan-review", "poll": False, "recommended": [
114
+ {"action": "approve-plan", "why": "plan looks right → generate code (pauses after)",
115
+ "command": _cmd("approve-plan")},
116
+ {"action": "revise-plan", "why": "OR change the plan first",
117
+ "command": _cmd("revise-plan", "--feedback '...'")},
118
+ ], "also": [{"action": "set-version", "why": "optionally set Major.Minor.Patch (only valid here)",
119
+ "command": _cmd("set-version", "--major 1 --minor 0 --patch 0")}]}
120
+
121
+ if s == "generating":
122
+ if ss == "running":
123
+ return dict(_RUNNING, phase="generating")
124
+ return {"phase": "generate-review", "poll": False, "recommended": [
125
+ {"action": "approve-generate", "why": "files look right → VALIDATE→COMPILE→FIX→DELIVER",
126
+ "command": _cmd("approve-generate")},
127
+ {"action": "regenerate-file", "why": "OR fix one file",
128
+ "command": _cmd("regenerate-file", "--filename X.cs --instructions '...'")},
129
+ {"action": "regenerate", "why": "OR regenerate with general/per-file instructions",
130
+ "command": _cmd("regenerate", "--step-instructions '...'")},
131
+ ], "also": [{"action": "list-file-versions", "why": "inspect what was generated first",
132
+ "command": _cmd("list-file-versions")}]}
133
+
134
+ if s == "validating":
135
+ if ss == "running":
136
+ return dict(_RUNNING, phase="validating")
137
+ return {"phase": "validate-review", "poll": False, "recommended": [
138
+ {"action": "validate-continue", "why": "accept findings and proceed to COMPILE",
139
+ "command": _cmd("validate-continue")},
140
+ {"action": "validate-autofix", "why": "OR let the LLM auto-fix the findings",
141
+ "command": _cmd("validate-autofix")},
142
+ {"action": "validate-return-to-generate", "why": "OR go back to GENERATE",
143
+ "command": _cmd("validate-return-to-generate")},
144
+ ]}
145
+
146
+ if s in ("completed", "delivered", "succeeded"):
147
+ return {"phase": "deliver", "poll": False, "recommended": [
148
+ {"action": "download-artifact", "why": "download the compiled .nupkg",
149
+ "command": _cmd("download-artifact", "--out connector.nupkg")},
150
+ ], "handoff": [
151
+ {"tool": "procesio", "action": "customaction-upload",
152
+ "why": "install the connector in PROCESIO to test it live",
153
+ "command": "python scripts/run-tool.py procesio customaction-upload --file connector.nupkg"},
154
+ {"tool": "procesio (agent)", "action": "verify",
155
+ "why": "exercise the action in a real process per the build-and-test playbook",
156
+ "command": "python scripts/run-agent.py procesio verify --process-id <ID>"},
157
+ ]}
158
+
159
+ if s == "failed":
160
+ out = {"phase": "failed", "poll": False, "recommended": [
161
+ {"action": "logs", "why": "read the failing stage logs first (filter --success false)",
162
+ "command": _cmd("logs", "--success false")},
163
+ {"action": "retry", "why": "retry from the last failed step (or --from-step N: ≥6 = compile→deliver)",
164
+ "command": _cmd("retry")},
165
+ {"action": "reset", "why": "OR wipe pipeline state back to pending (only from failed/clarifying/planning)",
166
+ "command": _cmd("reset")},
167
+ ], "also": [{"action": "get-issue", "why": "if an issue case was recorded, read its snapshot",
168
+ "command": f"python scripts/run-tool.py {_T} list-issues --build-id <ID>"}]}
169
+ # Step 6 = compile: triage restore-vs-code so you don't regenerate a
170
+ # platform NuGet problem (the live-run learning).
171
+ if last_failed_step in (6, "6") or "compil" in (error_message or "").lower() \
172
+ or "nuget" in (error_message or "").lower() or "nu13" in (error_message or "").lower():
173
+ diag = _compile_failure_diagnosis(error_message)
174
+ if diag:
175
+ out["diagnosis"] = diag
176
+ return out
177
+
178
+ raise AgentError("unknown_status", f"unrecognised build status: {status!r}",
179
+ {"known_statuses": ["pending", "gathering", "clarifying", "planning",
180
+ "generating", "validating", "compiling", "fixing",
181
+ "completed", "failed"]})
182
+
183
+
184
+ def _next_step(ctx, args) -> dict:
185
+ status = args.status
186
+ step_status = args.step_status
187
+ build = None
188
+ error_message = None
189
+ last_failed_step = None
190
+ if args.build_id:
191
+ build = ctx.invoke(_T, "get-build", "--build-id", args.build_id)
192
+ status = build.get("status", status)
193
+ step_status = build.get("step_status", step_status)
194
+ error_message = build.get("error_message")
195
+ last_failed_step = build.get("last_failed_step")
196
+ if not status:
197
+ raise AgentError("missing_input",
198
+ "provide --status (and optional --step-status) or --build-id",
199
+ {})
200
+ plan = _recommend(status, step_status, error_message, last_failed_step)
201
+ plan["build_status"] = status
202
+ plan["step_status"] = step_status
203
+ if args.build_id:
204
+ plan["build_id"] = args.build_id
205
+ return plan
206
+
207
+
208
+ def _next_step_args(p: argparse.ArgumentParser) -> None:
209
+ p.add_argument("--build-id", dest="build_id",
210
+ help="Read live status from the connector-builder tool")
211
+ p.add_argument("--status", help="Build overall status (if not using --build-id)")
212
+ p.add_argument("--step-status", dest="step_status",
213
+ help="running | waiting_user (refines the recommendation)")
214
+
215
+
216
+ ACTIONS = {
217
+ "next-step": ActionDef(
218
+ func=_next_step, add_args=_next_step_args, context=True,
219
+ description="Recommend the next pipeline action for a build's state (live via --build-id).",
220
+ ),
221
+ }
@@ -0,0 +1,35 @@
1
+ """status action — report the connector-builder agent's readiness and that of the
2
+ tools it drives (`connector-builder`, `procesio`). Pure registry introspection:
3
+ no network, no secrets. A tool not yet registered/ready surfaces as unready, never
4
+ an error.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from agents._lib.actiondef import ActionDef
9
+
10
+
11
+ def _status(_args) -> dict:
12
+ from registry import list_agents
13
+
14
+ me = next((a for a in list_agents() if a.get("name") == "connector-builder"), None)
15
+ if me is None:
16
+ return {"agent": "connector-builder", "found": False,
17
+ "note": "agent.yaml not discovered by the registry"}
18
+ tools = me.get("tool_status", {})
19
+ return {
20
+ "agent": "connector-builder",
21
+ "found": True,
22
+ "version": me.get("version"),
23
+ "ready": me.get("ready", False),
24
+ "missing_secrets": me.get("missing_secrets", []),
25
+ "tools_ready": sorted(n for n, s in tools.items() if s.get("ready")),
26
+ "tools_unready": {n: s for n, s in tools.items() if not s.get("ready")},
27
+ }
28
+
29
+
30
+ ACTIONS = {
31
+ "status": ActionDef(
32
+ func=_status,
33
+ description="Report agent + driven-tool readiness (connector-builder, procesio).",
34
+ ),
35
+ }