guile-agent 0.1.0a4__tar.gz

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 (538) hide show
  1. guile_agent-0.1.0a4/.cursor/rules/guile-project.mdc +45 -0
  2. guile_agent-0.1.0a4/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  3. guile_agent-0.1.0a4/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. guile_agent-0.1.0a4/.github/workflows/build-release.yml +146 -0
  5. guile_agent-0.1.0a4/.github/workflows/docker-sandbox.yml +74 -0
  6. guile_agent-0.1.0a4/.github/workflows/publish.yml +194 -0
  7. guile_agent-0.1.0a4/.gitignore +100 -0
  8. guile_agent-0.1.0a4/.pre-commit-config.yaml +67 -0
  9. guile_agent-0.1.0a4/AGENTS.md +44 -0
  10. guile_agent-0.1.0a4/CONTRIBUTING.md +131 -0
  11. guile_agent-0.1.0a4/LICENSE +201 -0
  12. guile_agent-0.1.0a4/Makefile +95 -0
  13. guile_agent-0.1.0a4/PKG-INFO +52 -0
  14. guile_agent-0.1.0a4/README.md +11 -0
  15. guile_agent-0.1.0a4/benchmarks/README.md +34 -0
  16. guile_agent-0.1.0a4/containers/Dockerfile +312 -0
  17. guile_agent-0.1.0a4/containers/docker-entrypoint.sh +151 -0
  18. guile_agent-0.1.0a4/containers/sandbox-lock.yaml +174 -0
  19. guile_agent-0.1.0a4/containers/tooling/npm/package-lock.json +1887 -0
  20. guile_agent-0.1.0a4/containers/tooling/npm/package.json +15 -0
  21. guile_agent-0.1.0a4/containers/tooling/python/requirements.in +15 -0
  22. guile_agent-0.1.0a4/containers/tooling/python/requirements.lock +2285 -0
  23. guile_agent-0.1.0a4/containers/tooling/semgrep/p-python.yaml +13901 -0
  24. guile_agent-0.1.0a4/docs/DEPLOYMENT.md +274 -0
  25. guile_agent-0.1.0a4/docs/FOUNDER_STATUS.md +102 -0
  26. guile_agent-0.1.0a4/docs/README.md +10 -0
  27. guile_agent-0.1.0a4/docs/advanced/configuration.mdx +186 -0
  28. guile_agent-0.1.0a4/docs/advanced/skills.mdx +144 -0
  29. guile_agent-0.1.0a4/docs/cloud/cli.mdx +103 -0
  30. guile_agent-0.1.0a4/docs/cloud/overview.mdx +59 -0
  31. guile_agent-0.1.0a4/docs/context/ARCHITECTURE.md +136 -0
  32. guile_agent-0.1.0a4/docs/context/BRANDING_AUDIT.md +60 -0
  33. guile_agent-0.1.0a4/docs/context/CURRENT_STATE.md +97 -0
  34. guile_agent-0.1.0a4/docs/context/DECISIONS.md +94 -0
  35. guile_agent-0.1.0a4/docs/context/DEPENDENCIES.md +62 -0
  36. guile_agent-0.1.0a4/docs/context/EXECUTION_FLOW.md +122 -0
  37. guile_agent-0.1.0a4/docs/context/FORK_BASELINE.md +38 -0
  38. guile_agent-0.1.0a4/docs/context/KNOWN_RISKS.md +35 -0
  39. guile_agent-0.1.0a4/docs/context/PROJECT_CONTEXT.md +91 -0
  40. guile_agent-0.1.0a4/docs/context/REPOSITORY_MAP.md +86 -0
  41. guile_agent-0.1.0a4/docs/context/ROADMAP.md +73 -0
  42. guile_agent-0.1.0a4/docs/context/SANDBOX_DEPENDENCY_PINNING.md +106 -0
  43. guile_agent-0.1.0a4/docs/context/SANDBOX_HARDENING_PLAN.md +346 -0
  44. guile_agent-0.1.0a4/docs/context/SANDBOX_SECURITY.md +343 -0
  45. guile_agent-0.1.0a4/docs/context/SECURITY_MODEL.md +97 -0
  46. guile_agent-0.1.0a4/docs/contributing.mdx +113 -0
  47. guile_agent-0.1.0a4/docs/docs.json +133 -0
  48. guile_agent-0.1.0a4/docs/index.mdx +97 -0
  49. guile_agent-0.1.0a4/docs/integrations/ci-cd.mdx +90 -0
  50. guile_agent-0.1.0a4/docs/integrations/coding-agents.mdx +67 -0
  51. guile_agent-0.1.0a4/docs/integrations/github-actions.mdx +66 -0
  52. guile_agent-0.1.0a4/docs/integrations/mcp.mdx +131 -0
  53. guile_agent-0.1.0a4/docs/llm-providers/anthropic.mdx +24 -0
  54. guile_agent-0.1.0a4/docs/llm-providers/azure.mdx +37 -0
  55. guile_agent-0.1.0a4/docs/llm-providers/bedrock.mdx +55 -0
  56. guile_agent-0.1.0a4/docs/llm-providers/local.mdx +108 -0
  57. guile_agent-0.1.0a4/docs/llm-providers/novita.mdx +38 -0
  58. guile_agent-0.1.0a4/docs/llm-providers/openai.mdx +31 -0
  59. guile_agent-0.1.0a4/docs/llm-providers/openrouter.mdx +40 -0
  60. guile_agent-0.1.0a4/docs/llm-providers/overview.mdx +74 -0
  61. guile_agent-0.1.0a4/docs/llm-providers/vertex.mdx +53 -0
  62. guile_agent-0.1.0a4/docs/quickstart.mdx +79 -0
  63. guile_agent-0.1.0a4/docs/tools/browser.mdx +34 -0
  64. guile_agent-0.1.0a4/docs/tools/overview.mdx +33 -0
  65. guile_agent-0.1.0a4/docs/tools/proxy.mdx +135 -0
  66. guile_agent-0.1.0a4/docs/tools/sandbox.mdx +91 -0
  67. guile_agent-0.1.0a4/docs/tools/terminal.mdx +65 -0
  68. guile_agent-0.1.0a4/docs/usage/cli.mdx +164 -0
  69. guile_agent-0.1.0a4/docs/usage/instructions.mdx +113 -0
  70. guile_agent-0.1.0a4/docs/usage/scan-modes.mdx +62 -0
  71. guile_agent-0.1.0a4/docs/usage/viewer.mdx +49 -0
  72. guile_agent-0.1.0a4/guile/__init__.py +0 -0
  73. guile_agent-0.1.0a4/guile/agents/__init__.py +0 -0
  74. guile_agent-0.1.0a4/guile/agents/factory.py +767 -0
  75. guile_agent-0.1.0a4/guile/agents/prompt.py +126 -0
  76. guile_agent-0.1.0a4/guile/agents/prompts/system_prompt.jinja +545 -0
  77. guile_agent-0.1.0a4/guile/config/__init__.py +41 -0
  78. guile_agent-0.1.0a4/guile/config/codex.py +403 -0
  79. guile_agent-0.1.0a4/guile/config/loader.py +168 -0
  80. guile_agent-0.1.0a4/guile/config/models.py +983 -0
  81. guile_agent-0.1.0a4/guile/config/settings.py +177 -0
  82. guile_agent-0.1.0a4/guile/config/tool_call_ids.py +117 -0
  83. guile_agent-0.1.0a4/guile/config/tool_call_limits.py +46 -0
  84. guile_agent-0.1.0a4/guile/core/__init__.py +1 -0
  85. guile_agent-0.1.0a4/guile/core/agents.py +577 -0
  86. guile_agent-0.1.0a4/guile/core/execution.py +1047 -0
  87. guile_agent-0.1.0a4/guile/core/hooks.py +273 -0
  88. guile_agent-0.1.0a4/guile/core/inputs.py +383 -0
  89. guile_agent-0.1.0a4/guile/core/paths.py +40 -0
  90. guile_agent-0.1.0a4/guile/core/runner.py +673 -0
  91. guile_agent-0.1.0a4/guile/core/sessions.py +214 -0
  92. guile_agent-0.1.0a4/guile/interface/__init__.py +4 -0
  93. guile_agent-0.1.0a4/guile/interface/auth_cli.py +420 -0
  94. guile_agent-0.1.0a4/guile/interface/cli.py +240 -0
  95. guile_agent-0.1.0a4/guile/interface/cli_args.py +456 -0
  96. guile_agent-0.1.0a4/guile/interface/cloud/__init__.py +162 -0
  97. guile_agent-0.1.0a4/guile/interface/cloud/arguments.py +18 -0
  98. guile_agent-0.1.0a4/guile/interface/cloud/billing.py +718 -0
  99. guile_agent-0.1.0a4/guile/interface/cloud/http.py +408 -0
  100. guile_agent-0.1.0a4/guile/interface/cloud/payment_proxy.py +286 -0
  101. guile_agent-0.1.0a4/guile/interface/cloud/render.py +1759 -0
  102. guile_agent-0.1.0a4/guile/interface/cloud/runner.py +1132 -0
  103. guile_agent-0.1.0a4/guile/interface/cloud/session.py +167 -0
  104. guile_agent-0.1.0a4/guile/interface/cloud/source_scan.py +403 -0
  105. guile_agent-0.1.0a4/guile/interface/cloud/source_upload.py +734 -0
  106. guile_agent-0.1.0a4/guile/interface/cloud/spec.py +1148 -0
  107. guile_agent-0.1.0a4/guile/interface/cloud/workspaces.py +291 -0
  108. guile_agent-0.1.0a4/guile/interface/completions.py +373 -0
  109. guile_agent-0.1.0a4/guile/interface/environment.py +244 -0
  110. guile_agent-0.1.0a4/guile/interface/interactive.py +38 -0
  111. guile_agent-0.1.0a4/guile/interface/main.py +529 -0
  112. guile_agent-0.1.0a4/guile/interface/platform_cli.py +798 -0
  113. guile_agent-0.1.0a4/guile/interface/platform_identity.py +46 -0
  114. guile_agent-0.1.0a4/guile/interface/scan_setup.py +272 -0
  115. guile_agent-0.1.0a4/guile/interface/terminal_text.py +21 -0
  116. guile_agent-0.1.0a4/guile/interface/tui/__init__.py +6 -0
  117. guile_agent-0.1.0a4/guile/interface/tui/backend/__init__.py +7 -0
  118. guile_agent-0.1.0a4/guile/interface/tui/backend/controller.py +533 -0
  119. guile_agent-0.1.0a4/guile/interface/tui/backend/live_view.py +139 -0
  120. guile_agent-0.1.0a4/guile/interface/tui/backend/messages.py +61 -0
  121. guile_agent-0.1.0a4/guile/interface/tui/backend/projection.py +186 -0
  122. guile_agent-0.1.0a4/guile/interface/tui/backend/protocol.py +40 -0
  123. guile_agent-0.1.0a4/guile/interface/tui/backend/server.py +531 -0
  124. guile_agent-0.1.0a4/guile/interface/tui/cmd/guile-tui/main.go +35 -0
  125. guile_agent-0.1.0a4/guile/interface/tui/go.mod +32 -0
  126. guile_agent-0.1.0a4/guile/interface/tui/go.sum +61 -0
  127. guile_agent-0.1.0a4/guile/interface/tui/history.py +72 -0
  128. guile_agent-0.1.0a4/guile/interface/tui/internal/app/agents.go +253 -0
  129. guile_agent-0.1.0a4/guile/interface/tui/internal/app/client.go +250 -0
  130. guile_agent-0.1.0a4/guile/interface/tui/internal/app/client_test.go +284 -0
  131. guile_agent-0.1.0a4/guile/interface/tui/internal/app/findings_test.go +299 -0
  132. guile_agent-0.1.0a4/guile/interface/tui/internal/app/frame_bench_test.go +98 -0
  133. guile_agent-0.1.0a4/guile/interface/tui/internal/app/input_test.go +216 -0
  134. guile_agent-0.1.0a4/guile/interface/tui/internal/app/mcp_test.go +105 -0
  135. guile_agent-0.1.0a4/guile/interface/tui/internal/app/model.go +415 -0
  136. guile_agent-0.1.0a4/guile/interface/tui/internal/app/model_test.go +1430 -0
  137. guile_agent-0.1.0a4/guile/interface/tui/internal/app/selection.go +284 -0
  138. guile_agent-0.1.0a4/guile/interface/tui/internal/app/selection_test.go +185 -0
  139. guile_agent-0.1.0a4/guile/interface/tui/internal/app/setup.go +519 -0
  140. guile_agent-0.1.0a4/guile/interface/tui/internal/app/setup_log_test.go +117 -0
  141. guile_agent-0.1.0a4/guile/interface/tui/internal/app/setup_prompt_test.go +363 -0
  142. guile_agent-0.1.0a4/guile/interface/tui/internal/app/update.go +712 -0
  143. guile_agent-0.1.0a4/guile/interface/tui/internal/app/view.go +967 -0
  144. guile_agent-0.1.0a4/guile/interface/tui/internal/app/vuln_report.go +178 -0
  145. guile_agent-0.1.0a4/guile/interface/tui/internal/app/vulnerabilities.go +543 -0
  146. guile_agent-0.1.0a4/guile/interface/tui/internal/app/wire.go +473 -0
  147. guile_agent-0.1.0a4/guile/interface/tui/internal/protocol/protocol.go +130 -0
  148. guile_agent-0.1.0a4/guile/interface/tui/internal/protocol/protocol_test.go +22 -0
  149. guile_agent-0.1.0a4/guile/interface/tui/internal/render/agent_message.go +320 -0
  150. guile_agent-0.1.0a4/guile/interface/tui/internal/render/agents_graph.go +86 -0
  151. guile_agent-0.1.0a4/guile/interface/tui/internal/render/chat.go +32 -0
  152. guile_agent-0.1.0a4/guile/interface/tui/internal/render/code.go +70 -0
  153. guile_agent-0.1.0a4/guile/interface/tui/internal/render/coverage.go +194 -0
  154. guile_agent-0.1.0a4/guile/interface/tui/internal/render/coverage_test.go +221 -0
  155. guile_agent-0.1.0a4/guile/interface/tui/internal/render/dependency.go +105 -0
  156. guile_agent-0.1.0a4/guile/interface/tui/internal/render/file_edit.go +143 -0
  157. guile_agent-0.1.0a4/guile/interface/tui/internal/render/helpers.go +112 -0
  158. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image.go +106 -0
  159. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image_detect.go +139 -0
  160. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image_detect_test.go +133 -0
  161. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image_detect_unix.go +37 -0
  162. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image_detect_windows.go +19 -0
  163. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image_kitty.go +202 -0
  164. guile_agent-0.1.0a4/guile/interface/tui/internal/render/image_kitty_test.go +103 -0
  165. guile_agent-0.1.0a4/guile/interface/tui/internal/render/markdown_test.go +116 -0
  166. guile_agent-0.1.0a4/guile/interface/tui/internal/render/mcp.go +95 -0
  167. guile_agent-0.1.0a4/guile/interface/tui/internal/render/notes.go +111 -0
  168. guile_agent-0.1.0a4/guile/interface/tui/internal/render/proxy.go +577 -0
  169. guile_agent-0.1.0a4/guile/interface/tui/internal/render/registry.go +164 -0
  170. guile_agent-0.1.0a4/guile/interface/tui/internal/render/render_test.go +323 -0
  171. guile_agent-0.1.0a4/guile/interface/tui/internal/render/report.go +169 -0
  172. guile_agent-0.1.0a4/guile/interface/tui/internal/render/report_list.go +129 -0
  173. guile_agent-0.1.0a4/guile/interface/tui/internal/render/respond.go +18 -0
  174. guile_agent-0.1.0a4/guile/interface/tui/internal/render/scan.go +31 -0
  175. guile_agent-0.1.0a4/guile/interface/tui/internal/render/simple.go +52 -0
  176. guile_agent-0.1.0a4/guile/interface/tui/internal/render/styles.go +82 -0
  177. guile_agent-0.1.0a4/guile/interface/tui/internal/render/terminal.go +183 -0
  178. guile_agent-0.1.0a4/guile/interface/tui/internal/render/threat_model.go +119 -0
  179. guile_agent-0.1.0a4/guile/interface/tui/internal/render/todo.go +80 -0
  180. guile_agent-0.1.0a4/guile/interface/tui/live_view.py +534 -0
  181. guile_agent-0.1.0a4/guile/interface/tui/runtime.py +468 -0
  182. guile_agent-0.1.0a4/guile/interface/tui/sidecar.py +191 -0
  183. guile_agent-0.1.0a4/guile/interface/update_check.py +437 -0
  184. guile_agent-0.1.0a4/guile/interface/url_safety.py +85 -0
  185. guile_agent-0.1.0a4/guile/interface/utils.py +2111 -0
  186. guile_agent-0.1.0a4/guile/interface/viewer/__init__.py +12 -0
  187. guile_agent-0.1.0a4/guile/interface/viewer/auth.py +262 -0
  188. guile_agent-0.1.0a4/guile/interface/viewer/cli.py +158 -0
  189. guile_agent-0.1.0a4/guile/interface/viewer/frontend/index.html +14 -0
  190. guile_agent-0.1.0a4/guile/interface/viewer/frontend/package-lock.json +4219 -0
  191. guile_agent-0.1.0a4/guile/interface/viewer/frontend/package.json +35 -0
  192. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/App.tsx +853 -0
  193. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/AddRepositoryDialog.tsx +20 -0
  194. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/EmailReportView.tsx +371 -0
  195. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/EmailVerifyInline.tsx +163 -0
  196. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/FeedbackView.tsx +134 -0
  197. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/IssueSeveritySummary.tsx +77 -0
  198. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/PastRunsView.tsx +176 -0
  199. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/ProCta.tsx +89 -0
  200. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/RunDetails.tsx +223 -0
  201. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/Sidebar.tsx +521 -0
  202. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/TrustToast.tsx +51 -0
  203. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/UpgradeModal.tsx +163 -0
  204. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/AgentDetailModal.tsx +167 -0
  205. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/AgentGraph.tsx +254 -0
  206. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/AgentNode.tsx +48 -0
  207. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/AgentTranscript.tsx +311 -0
  208. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/GraphSkeleton.tsx +70 -0
  209. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/ScanPromptComposer.tsx +315 -0
  210. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/AgentCommsRenderer.tsx +92 -0
  211. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ApplyPatchRenderer.tsx +124 -0
  212. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/BrowserRenderer.tsx +110 -0
  213. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ChatBubble.tsx +25 -0
  214. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/CoverageRenderer.tsx +184 -0
  215. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/FallbackRenderer.tsx +36 -0
  216. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/FileEditRenderer.tsx +65 -0
  217. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/FinishRenderer.tsx +32 -0
  218. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/LoadSkillRenderer.tsx +21 -0
  219. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/Markdown.tsx +24 -0
  220. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/McpRenderer.tsx +174 -0
  221. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/NotesRenderer.tsx +93 -0
  222. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ProxyRenderer.tsx +250 -0
  223. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/PythonRenderer.tsx +68 -0
  224. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ReportListRenderer.tsx +121 -0
  225. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/RespondRenderer.tsx +20 -0
  226. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ScanInfoRenderer.tsx +46 -0
  227. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/TerminalRenderer.tsx +131 -0
  228. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ThinkRenderer.tsx +18 -0
  229. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ThreatModelRenderer.tsx +122 -0
  230. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/TodoRenderer.tsx +120 -0
  231. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ToolCard.tsx +100 -0
  232. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/ViewImageRenderer.tsx +53 -0
  233. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/VulnReportRenderer.tsx +114 -0
  234. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/WebSearchRenderer.tsx +24 -0
  235. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/index.ts +210 -0
  236. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/live/tool-renderers/utils.ts +3 -0
  237. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/vulnerability/CodeDiffBlock.tsx +114 -0
  238. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/vulnerability/ContentSection.tsx +27 -0
  239. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/vulnerability/IssueSidebar.tsx +277 -0
  240. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/vulnerability/MdCodeBlock.tsx +132 -0
  241. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/vulnerability/PocBlock.tsx +81 -0
  242. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/components/vulnerability/VulnerabilityDetail.tsx +265 -0
  243. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/data/serverSource.ts +284 -0
  244. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/index.css +326 -0
  245. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/cta.ts +43 -0
  246. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/display-number.ts +12 -0
  247. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/fenced-code.ts +27 -0
  248. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/hljs.ts +32 -0
  249. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/local-run-parser.ts +325 -0
  250. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/target-utils.ts +61 -0
  251. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/utils.ts +124 -0
  252. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/lib/vulnerability-utils.ts +196 -0
  253. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/main.tsx +10 -0
  254. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/stores/auth.ts +16 -0
  255. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/types/events.ts +111 -0
  256. guile_agent-0.1.0a4/guile/interface/viewer/frontend/src/types/issues.ts +197 -0
  257. guile_agent-0.1.0a4/guile/interface/viewer/frontend/tsconfig.json +26 -0
  258. guile_agent-0.1.0a4/guile/interface/viewer/frontend/vite.config.ts +21 -0
  259. guile_agent-0.1.0a4/guile/interface/viewer/report_pdf.py +705 -0
  260. guile_agent-0.1.0a4/guile/interface/viewer/server.py +616 -0
  261. guile_agent-0.1.0a4/guile/interface/viewer/static/assets/index-50oBuhJ6.css +10 -0
  262. guile_agent-0.1.0a4/guile/interface/viewer/static/assets/index-S63ERJSI.js +512 -0
  263. guile_agent-0.1.0a4/guile/interface/viewer/static/index.html +15 -0
  264. guile_agent-0.1.0a4/guile/interface/viewer/transcript.py +104 -0
  265. guile_agent-0.1.0a4/guile/llm/__init__.py +1 -0
  266. guile_agent-0.1.0a4/guile/llm/compaction.py +400 -0
  267. guile_agent-0.1.0a4/guile/llm/compat.py +128 -0
  268. guile_agent-0.1.0a4/guile/llm/context_budget.py +89 -0
  269. guile_agent-0.1.0a4/guile/llm/warmup.py +60 -0
  270. guile_agent-0.1.0a4/guile/report/__init__.py +26 -0
  271. guile_agent-0.1.0a4/guile/report/coverage.py +443 -0
  272. guile_agent-0.1.0a4/guile/report/dedupe.py +416 -0
  273. guile_agent-0.1.0a4/guile/report/pricing.py +54 -0
  274. guile_agent-0.1.0a4/guile/report/sarif.py +1185 -0
  275. guile_agent-0.1.0a4/guile/report/state.py +1013 -0
  276. guile_agent-0.1.0a4/guile/report/usage.py +268 -0
  277. guile_agent-0.1.0a4/guile/report/writer.py +396 -0
  278. guile_agent-0.1.0a4/guile/runtime/__init__.py +1 -0
  279. guile_agent-0.1.0a4/guile/runtime/backends.py +105 -0
  280. guile_agent-0.1.0a4/guile/runtime/caido_bootstrap.py +115 -0
  281. guile_agent-0.1.0a4/guile/runtime/caido_handle.py +60 -0
  282. guile_agent-0.1.0a4/guile/runtime/docker_client.py +292 -0
  283. guile_agent-0.1.0a4/guile/runtime/proxy.py +94 -0
  284. guile_agent-0.1.0a4/guile/runtime/session_manager.py +425 -0
  285. guile_agent-0.1.0a4/guile/runtime/status.py +8 -0
  286. guile_agent-0.1.0a4/guile/skills/README.md +83 -0
  287. guile_agent-0.1.0a4/guile/skills/__init__.py +300 -0
  288. guile_agent-0.1.0a4/guile/skills/analysis/counterevidence.md +185 -0
  289. guile_agent-0.1.0a4/guile/skills/analysis/fix_verification.md +129 -0
  290. guile_agent-0.1.0a4/guile/skills/analysis/severity_calibration.md +130 -0
  291. guile_agent-0.1.0a4/guile/skills/analysis/source_aware_discovery.md +211 -0
  292. guile_agent-0.1.0a4/guile/skills/cloud/.gitkeep +0 -0
  293. guile_agent-0.1.0a4/guile/skills/cloud/aws.md +231 -0
  294. guile_agent-0.1.0a4/guile/skills/cloud/azure.md +262 -0
  295. guile_agent-0.1.0a4/guile/skills/cloud/gcp.md +194 -0
  296. guile_agent-0.1.0a4/guile/skills/cloud/kubernetes.md +223 -0
  297. guile_agent-0.1.0a4/guile/skills/coordination/root_agent.md +105 -0
  298. guile_agent-0.1.0a4/guile/skills/coordination/source_aware_whitebox.md +47 -0
  299. guile_agent-0.1.0a4/guile/skills/custom/.gitkeep +0 -0
  300. guile_agent-0.1.0a4/guile/skills/custom/api_spec_testing.md +61 -0
  301. guile_agent-0.1.0a4/guile/skills/custom/dependency_cve_scanning.md +341 -0
  302. guile_agent-0.1.0a4/guile/skills/custom/npx_confusion.md +233 -0
  303. guile_agent-0.1.0a4/guile/skills/custom/source_aware_sast.md +192 -0
  304. guile_agent-0.1.0a4/guile/skills/frameworks/django.md +214 -0
  305. guile_agent-0.1.0a4/guile/skills/frameworks/fastapi.md +191 -0
  306. guile_agent-0.1.0a4/guile/skills/frameworks/nestjs.md +225 -0
  307. guile_agent-0.1.0a4/guile/skills/frameworks/nextjs.md +228 -0
  308. guile_agent-0.1.0a4/guile/skills/protocols/graphql.md +276 -0
  309. guile_agent-0.1.0a4/guile/skills/protocols/oauth.md +185 -0
  310. guile_agent-0.1.0a4/guile/skills/reconnaissance/.gitkeep +0 -0
  311. guile_agent-0.1.0a4/guile/skills/reconnaissance/asset_discovery.md +150 -0
  312. guile_agent-0.1.0a4/guile/skills/reconnaissance/infrastructure_lifecycle.md +226 -0
  313. guile_agent-0.1.0a4/guile/skills/scan_modes/deep.md +164 -0
  314. guile_agent-0.1.0a4/guile/skills/scan_modes/diff.md +86 -0
  315. guile_agent-0.1.0a4/guile/skills/scan_modes/quick.md +68 -0
  316. guile_agent-0.1.0a4/guile/skills/scan_modes/standard.md +99 -0
  317. guile_agent-0.1.0a4/guile/skills/technologies/active_directory.md +233 -0
  318. guile_agent-0.1.0a4/guile/skills/technologies/auth0.md +188 -0
  319. guile_agent-0.1.0a4/guile/skills/technologies/electron_desktop_apps.md +181 -0
  320. guile_agent-0.1.0a4/guile/skills/technologies/firebase.md +263 -0
  321. guile_agent-0.1.0a4/guile/skills/technologies/grafana_prometheus.md +189 -0
  322. guile_agent-0.1.0a4/guile/skills/technologies/llm_applications.md +257 -0
  323. guile_agent-0.1.0a4/guile/skills/technologies/supabase.md +268 -0
  324. guile_agent-0.1.0a4/guile/skills/tooling/agent_browser.md +551 -0
  325. guile_agent-0.1.0a4/guile/skills/tooling/ffuf.md +72 -0
  326. guile_agent-0.1.0a4/guile/skills/tooling/httpx.md +82 -0
  327. guile_agent-0.1.0a4/guile/skills/tooling/hurl.md +99 -0
  328. guile_agent-0.1.0a4/guile/skills/tooling/hypothesis.md +100 -0
  329. guile_agent-0.1.0a4/guile/skills/tooling/katana.md +102 -0
  330. guile_agent-0.1.0a4/guile/skills/tooling/naabu.md +68 -0
  331. guile_agent-0.1.0a4/guile/skills/tooling/nmap.md +66 -0
  332. guile_agent-0.1.0a4/guile/skills/tooling/nuclei.md +67 -0
  333. guile_agent-0.1.0a4/guile/skills/tooling/python.md +109 -0
  334. guile_agent-0.1.0a4/guile/skills/tooling/semgrep.md +72 -0
  335. guile_agent-0.1.0a4/guile/skills/tooling/sqlmap.md +67 -0
  336. guile_agent-0.1.0a4/guile/skills/tooling/subfinder.md +66 -0
  337. guile_agent-0.1.0a4/guile/skills/vulnerabilities/agentic_system_security.md +207 -0
  338. guile_agent-0.1.0a4/guile/skills/vulnerabilities/argument_injection.md +157 -0
  339. guile_agent-0.1.0a4/guile/skills/vulnerabilities/authentication_jwt.md +166 -0
  340. guile_agent-0.1.0a4/guile/skills/vulnerabilities/broken_function_level_authorization.md +154 -0
  341. guile_agent-0.1.0a4/guile/skills/vulnerabilities/browser_security.md +192 -0
  342. guile_agent-0.1.0a4/guile/skills/vulnerabilities/business_logic.md +178 -0
  343. guile_agent-0.1.0a4/guile/skills/vulnerabilities/csrf.md +198 -0
  344. guile_agent-0.1.0a4/guile/skills/vulnerabilities/header_injection.md +216 -0
  345. guile_agent-0.1.0a4/guile/skills/vulnerabilities/http_request_smuggling.md +255 -0
  346. guile_agent-0.1.0a4/guile/skills/vulnerabilities/idor.md +217 -0
  347. guile_agent-0.1.0a4/guile/skills/vulnerabilities/information_disclosure.md +187 -0
  348. guile_agent-0.1.0a4/guile/skills/vulnerabilities/insecure_deserialization.md +210 -0
  349. guile_agent-0.1.0a4/guile/skills/vulnerabilities/insecure_file_uploads.md +194 -0
  350. guile_agent-0.1.0a4/guile/skills/vulnerabilities/llm_prompt_injection.md +187 -0
  351. guile_agent-0.1.0a4/guile/skills/vulnerabilities/mass_assignment.md +153 -0
  352. guile_agent-0.1.0a4/guile/skills/vulnerabilities/nosql_injection.md +288 -0
  353. guile_agent-0.1.0a4/guile/skills/vulnerabilities/open_redirect.md +165 -0
  354. guile_agent-0.1.0a4/guile/skills/vulnerabilities/path_traversal_lfi_rfi.md +218 -0
  355. guile_agent-0.1.0a4/guile/skills/vulnerabilities/prototype_pollution.md +142 -0
  356. guile_agent-0.1.0a4/guile/skills/vulnerabilities/race_conditions.md +181 -0
  357. guile_agent-0.1.0a4/guile/skills/vulnerabilities/rce.md +250 -0
  358. guile_agent-0.1.0a4/guile/skills/vulnerabilities/semantic_confusion.md +189 -0
  359. guile_agent-0.1.0a4/guile/skills/vulnerabilities/sql_injection.md +190 -0
  360. guile_agent-0.1.0a4/guile/skills/vulnerabilities/ssrf.md +186 -0
  361. guile_agent-0.1.0a4/guile/skills/vulnerabilities/ssti.md +270 -0
  362. guile_agent-0.1.0a4/guile/skills/vulnerabilities/subdomain_takeover.md +167 -0
  363. guile_agent-0.1.0a4/guile/skills/vulnerabilities/weak_password_detection.md +200 -0
  364. guile_agent-0.1.0a4/guile/skills/vulnerabilities/xss.md +206 -0
  365. guile_agent-0.1.0a4/guile/skills/vulnerabilities/xxe.md +223 -0
  366. guile_agent-0.1.0a4/guile/telemetry/README.md +37 -0
  367. guile_agent-0.1.0a4/guile/telemetry/__init__.py +19 -0
  368. guile_agent-0.1.0a4/guile/telemetry/_common.py +94 -0
  369. guile_agent-0.1.0a4/guile/telemetry/logging.py +183 -0
  370. guile_agent-0.1.0a4/guile/telemetry/posthog.py +191 -0
  371. guile_agent-0.1.0a4/guile/telemetry/scarf.py +150 -0
  372. guile_agent-0.1.0a4/guile/tools/__init__.py +11 -0
  373. guile_agent-0.1.0a4/guile/tools/agent_browser/README.md +12 -0
  374. guile_agent-0.1.0a4/guile/tools/agents_graph/__init__.py +0 -0
  375. guile_agent-0.1.0a4/guile/tools/agents_graph/tools.py +859 -0
  376. guile_agent-0.1.0a4/guile/tools/apply_patch/README.md +10 -0
  377. guile_agent-0.1.0a4/guile/tools/coverage/__init__.py +1 -0
  378. guile_agent-0.1.0a4/guile/tools/coverage/tools.py +535 -0
  379. guile_agent-0.1.0a4/guile/tools/finish/__init__.py +0 -0
  380. guile_agent-0.1.0a4/guile/tools/finish/tool.py +356 -0
  381. guile_agent-0.1.0a4/guile/tools/load_skill/__init__.py +0 -0
  382. guile_agent-0.1.0a4/guile/tools/load_skill/tool.py +36 -0
  383. guile_agent-0.1.0a4/guile/tools/mcp/__init__.py +63 -0
  384. guile_agent-0.1.0a4/guile/tools/mcp/agent_tools.py +181 -0
  385. guile_agent-0.1.0a4/guile/tools/mcp/client.py +374 -0
  386. guile_agent-0.1.0a4/guile/tools/mcp/config.py +89 -0
  387. guile_agent-0.1.0a4/guile/tools/mcp/failures.py +150 -0
  388. guile_agent-0.1.0a4/guile/tools/mcp/loader.py +133 -0
  389. guile_agent-0.1.0a4/guile/tools/mcp/naming.py +29 -0
  390. guile_agent-0.1.0a4/guile/tools/mcp/registry.py +287 -0
  391. guile_agent-0.1.0a4/guile/tools/mcp/session.py +810 -0
  392. guile_agent-0.1.0a4/guile/tools/notes/__init__.py +0 -0
  393. guile_agent-0.1.0a4/guile/tools/notes/tools.py +494 -0
  394. guile_agent-0.1.0a4/guile/tools/nullish.py +23 -0
  395. guile_agent-0.1.0a4/guile/tools/output_store.py +166 -0
  396. guile_agent-0.1.0a4/guile/tools/proxy/__init__.py +0 -0
  397. guile_agent-0.1.0a4/guile/tools/proxy/caido_api.py +767 -0
  398. guile_agent-0.1.0a4/guile/tools/proxy/tools.py +653 -0
  399. guile_agent-0.1.0a4/guile/tools/reporting/__init__.py +0 -0
  400. guile_agent-0.1.0a4/guile/tools/reporting/tool.py +2254 -0
  401. guile_agent-0.1.0a4/guile/tools/respond/__init__.py +6 -0
  402. guile_agent-0.1.0a4/guile/tools/respond/tool.py +114 -0
  403. guile_agent-0.1.0a4/guile/tools/shell/README.md +32 -0
  404. guile_agent-0.1.0a4/guile/tools/thinking/__init__.py +0 -0
  405. guile_agent-0.1.0a4/guile/tools/thinking/tool.py +37 -0
  406. guile_agent-0.1.0a4/guile/tools/threat_model/__init__.py +1 -0
  407. guile_agent-0.1.0a4/guile/tools/threat_model/tools.py +638 -0
  408. guile_agent-0.1.0a4/guile/tools/todo/__init__.py +0 -0
  409. guile_agent-0.1.0a4/guile/tools/todo/tools.py +606 -0
  410. guile_agent-0.1.0a4/guile/tools/view_image/README.md +17 -0
  411. guile_agent-0.1.0a4/guile/tools/web_search/__init__.py +0 -0
  412. guile_agent-0.1.0a4/guile/tools/web_search/tool.py +413 -0
  413. guile_agent-0.1.0a4/guile/utils/__init__.py +0 -0
  414. guile_agent-0.1.0a4/guile/utils/api_spec.py +312 -0
  415. guile_agent-0.1.0a4/guile/utils/resource_paths.py +13 -0
  416. guile_agent-0.1.0a4/guile/utils/secret_files.py +48 -0
  417. guile_agent-0.1.0a4/guile/version.py +79 -0
  418. guile_agent-0.1.0a4/guile.spec +281 -0
  419. guile_agent-0.1.0a4/pyproject.toml +426 -0
  420. guile_agent-0.1.0a4/scripts/build.sh +112 -0
  421. guile_agent-0.1.0a4/scripts/docker.sh +16 -0
  422. guile_agent-0.1.0a4/scripts/install.sh +354 -0
  423. guile_agent-0.1.0a4/scripts/tui_sidecar_hook.py +68 -0
  424. guile_agent-0.1.0a4/scripts/validate_release_candidate.py +344 -0
  425. guile_agent-0.1.0a4/scripts/verify-sandbox-lock.py +317 -0
  426. guile_agent-0.1.0a4/scripts/verify_rebrand.py +160 -0
  427. guile_agent-0.1.0a4/scripts/verify_release_contract.py +231 -0
  428. guile_agent-0.1.0a4/skills/api-security-testing/SKILL.md +61 -0
  429. guile_agent-0.1.0a4/skills/application-security-testing/SKILL.md +66 -0
  430. guile_agent-0.1.0a4/skills/ci-security-scanning-with-guile/SKILL.md +149 -0
  431. guile_agent-0.1.0a4/skills/find-security-vulnerabilities-in-code/SKILL.md +62 -0
  432. guile_agent-0.1.0a4/skills/fix-security-vulnerabilities-with-guile/SKILL.md +77 -0
  433. guile_agent-0.1.0a4/skills/managed-pentesting-with-guile/SKILL.md +321 -0
  434. guile_agent-0.1.0a4/skills/owasp-top-10-testing/SKILL.md +64 -0
  435. guile_agent-0.1.0a4/skills/penetration-testing-with-guile/SKILL.md +161 -0
  436. guile_agent-0.1.0a4/skills/web-app-penetration-testing/SKILL.md +54 -0
  437. guile_agent-0.1.0a4/tests/__init__.py +0 -0
  438. guile_agent-0.1.0a4/tests/conftest.py +53 -0
  439. guile_agent-0.1.0a4/tests/test_agent_factory_shell.py +117 -0
  440. guile_agent-0.1.0a4/tests/test_agent_factory_tool_arguments.py +237 -0
  441. guile_agent-0.1.0a4/tests/test_agent_graph_coordination.py +258 -0
  442. guile_agent-0.1.0a4/tests/test_agent_tool_registration.py +130 -0
  443. guile_agent-0.1.0a4/tests/test_api_spec.py +290 -0
  444. guile_agent-0.1.0a4/tests/test_api_spec_targets.py +152 -0
  445. guile_agent-0.1.0a4/tests/test_auth_cli.py +106 -0
  446. guile_agent-0.1.0a4/tests/test_bedrock_model_compat.py +312 -0
  447. guile_agent-0.1.0a4/tests/test_caido_bootstrap.py +81 -0
  448. guile_agent-0.1.0a4/tests/test_caido_handle.py +103 -0
  449. guile_agent-0.1.0a4/tests/test_cli_mcp_config.py +88 -0
  450. guile_agent-0.1.0a4/tests/test_cli_target_list.py +247 -0
  451. guile_agent-0.1.0a4/tests/test_cloud_cli.py +3639 -0
  452. guile_agent-0.1.0a4/tests/test_cloud_cli_runtime.py +1122 -0
  453. guile_agent-0.1.0a4/tests/test_cloud_idempotency.py +205 -0
  454. guile_agent-0.1.0a4/tests/test_cloud_payment_proxy.py +142 -0
  455. guile_agent-0.1.0a4/tests/test_cloud_session.py +166 -0
  456. guile_agent-0.1.0a4/tests/test_cloud_source_upload.py +698 -0
  457. guile_agent-0.1.0a4/tests/test_cloud_wallet.py +118 -0
  458. guile_agent-0.1.0a4/tests/test_codex_auth.py +309 -0
  459. guile_agent-0.1.0a4/tests/test_codex_streaming.py +225 -0
  460. guile_agent-0.1.0a4/tests/test_compaction.py +333 -0
  461. guile_agent-0.1.0a4/tests/test_completions.py +164 -0
  462. guile_agent-0.1.0a4/tests/test_config_loader.py +416 -0
  463. guile_agent-0.1.0a4/tests/test_context_budget.py +65 -0
  464. guile_agent-0.1.0a4/tests/test_cost_tracking.py +259 -0
  465. guile_agent-0.1.0a4/tests/test_coverage_tool.py +284 -0
  466. guile_agent-0.1.0a4/tests/test_dedupe_model.py +150 -0
  467. guile_agent-0.1.0a4/tests/test_disable_streaming.py +330 -0
  468. guile_agent-0.1.0a4/tests/test_docker_client_delete.py +92 -0
  469. guile_agent-0.1.0a4/tests/test_e2e_budget_lifecycle.py +372 -0
  470. guile_agent-0.1.0a4/tests/test_execution.py +1310 -0
  471. guile_agent-0.1.0a4/tests/test_execution_transient_retry.py +174 -0
  472. guile_agent-0.1.0a4/tests/test_fenced_code.py +78 -0
  473. guile_agent-0.1.0a4/tests/test_finish_coverage_gate.py +65 -0
  474. guile_agent-0.1.0a4/tests/test_go_tui_runtime.py +1029 -0
  475. guile_agent-0.1.0a4/tests/test_hooks.py +493 -0
  476. guile_agent-0.1.0a4/tests/test_import_warmup.py +108 -0
  477. guile_agent-0.1.0a4/tests/test_inputs.py +444 -0
  478. guile_agent-0.1.0a4/tests/test_install_script.py +154 -0
  479. guile_agent-0.1.0a4/tests/test_list_reports.py +462 -0
  480. guile_agent-0.1.0a4/tests/test_llm_extra_headers.py +97 -0
  481. guile_agent-0.1.0a4/tests/test_local_sources.py +249 -0
  482. guile_agent-0.1.0a4/tests/test_mcp_client.py +1636 -0
  483. guile_agent-0.1.0a4/tests/test_mcp_resilience.py +521 -0
  484. guile_agent-0.1.0a4/tests/test_model_retry.py +90 -0
  485. guile_agent-0.1.0a4/tests/test_models.py +164 -0
  486. guile_agent-0.1.0a4/tests/test_notes.py +133 -0
  487. guile_agent-0.1.0a4/tests/test_optional_deps.py +27 -0
  488. guile_agent-0.1.0a4/tests/test_output_store.py +156 -0
  489. guile_agent-0.1.0a4/tests/test_packaging.py +88 -0
  490. guile_agent-0.1.0a4/tests/test_pricing.py +123 -0
  491. guile_agent-0.1.0a4/tests/test_provider_hints.py +74 -0
  492. guile_agent-0.1.0a4/tests/test_proxy_bypass.py +78 -0
  493. guile_agent-0.1.0a4/tests/test_proxy_client.py +229 -0
  494. guile_agent-0.1.0a4/tests/test_report_coverage.py +264 -0
  495. guile_agent-0.1.0a4/tests/test_report_pdf.py +244 -0
  496. guile_agent-0.1.0a4/tests/test_report_writer.py +267 -0
  497. guile_agent-0.1.0a4/tests/test_reporting_fields.py +1759 -0
  498. guile_agent-0.1.0a4/tests/test_reporting_tool.py +48 -0
  499. guile_agent-0.1.0a4/tests/test_respond_to_user.py +94 -0
  500. guile_agent-0.1.0a4/tests/test_rsk010_git_env_hardening.py +321 -0
  501. guile_agent-0.1.0a4/tests/test_rsk011_repo_url_redaction.py +418 -0
  502. guile_agent-0.1.0a4/tests/test_runner_interrupt.py +108 -0
  503. guile_agent-0.1.0a4/tests/test_runner_mcp.py +188 -0
  504. guile_agent-0.1.0a4/tests/test_runner_rate_limit.py +94 -0
  505. guile_agent-0.1.0a4/tests/test_runner_root_prompt.py +270 -0
  506. guile_agent-0.1.0a4/tests/test_runner_teardown.py +93 -0
  507. guile_agent-0.1.0a4/tests/test_sarif.py +373 -0
  508. guile_agent-0.1.0a4/tests/test_sarif_stride.py +116 -0
  509. guile_agent-0.1.0a4/tests/test_sec008_git_clone_injection.py +319 -0
  510. guile_agent-0.1.0a4/tests/test_secret_files.py +65 -0
  511. guile_agent-0.1.0a4/tests/test_session_entries.py +377 -0
  512. guile_agent-0.1.0a4/tests/test_session_fd.py +144 -0
  513. guile_agent-0.1.0a4/tests/test_skill_dir_extension.py +273 -0
  514. guile_agent-0.1.0a4/tests/test_state_coverage_artifact.py +66 -0
  515. guile_agent-0.1.0a4/tests/test_state_repo_context.py +94 -0
  516. guile_agent-0.1.0a4/tests/test_stream_idle_timeout.py +173 -0
  517. guile_agent-0.1.0a4/tests/test_telemetry_errors.py +125 -0
  518. guile_agent-0.1.0a4/tests/test_telemetry_resume.py +89 -0
  519. guile_agent-0.1.0a4/tests/test_threat_model_tool.py +367 -0
  520. guile_agent-0.1.0a4/tests/test_todo.py +105 -0
  521. guile_agent-0.1.0a4/tests/test_tool_call_ids.py +249 -0
  522. guile_agent-0.1.0a4/tests/test_tool_call_limits.py +189 -0
  523. guile_agent-0.1.0a4/tests/test_tui_backend_controller.py +573 -0
  524. guile_agent-0.1.0a4/tests/test_tui_backend_server.py +586 -0
  525. guile_agent-0.1.0a4/tests/test_tui_protocol_conformance.py +49 -0
  526. guile_agent-0.1.0a4/tests/test_tui_resume_history.py +360 -0
  527. guile_agent-0.1.0a4/tests/test_unknown_tool_recovery.py +155 -0
  528. guile_agent-0.1.0a4/tests/test_unraisable_filter.py +53 -0
  529. guile_agent-0.1.0a4/tests/test_update_check.py +234 -0
  530. guile_agent-0.1.0a4/tests/test_usage_subscription.py +46 -0
  531. guile_agent-0.1.0a4/tests/test_version_contract.py +392 -0
  532. guile_agent-0.1.0a4/tests/test_viewer.py +753 -0
  533. guile_agent-0.1.0a4/tests/test_viewer_auth.py +167 -0
  534. guile_agent-0.1.0a4/tests/test_viewer_runs_gating.py +89 -0
  535. guile_agent-0.1.0a4/tests/test_wait_dedupe.py +128 -0
  536. guile_agent-0.1.0a4/tests/test_web_search.py +416 -0
  537. guile_agent-0.1.0a4/tests/test_workspace_files.py +115 -0
  538. guile_agent-0.1.0a4/uv.lock +2746 -0
@@ -0,0 +1,45 @@
1
+ ---
2
+ description: Guile Project Rules and Agent Guidelines
3
+ globs: **/*
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Guile — Agent Rules & Guidelines
8
+
9
+ 1. **Project Identity**: This project is **Guile**, an independent commercial hard fork of the Strix autonomous security-testing engine.
10
+
11
+ 2. **Mandatory Context Reading**:
12
+ Before performing meaningful work, agents MUST read:
13
+ - `docs/context/PROJECT_CONTEXT.md`
14
+ - `docs/context/CURRENT_STATE.md`
15
+ - `docs/context/DECISIONS.md`
16
+
17
+ 3. **Architecture & Security Context**:
18
+ For architecture, runtime, or security-related tasks, additionally read:
19
+ - `docs/context/ARCHITECTURE.md`
20
+ - `docs/context/SECURITY_MODEL.md`
21
+ - `docs/context/EXECUTION_FLOW.md`
22
+
23
+ 4. **Execution Path Awareness**:
24
+ Before modifying inherited engine behavior, trace and understand the full execution path across the CLI, runner, agent coordinator, and Docker sandbox.
25
+
26
+ 5. **Preserve Legal Attribution**:
27
+ Never remove the Apache-2.0 `LICENSE`, copyright notices, or third-party attributions merely for rebranding.
28
+
29
+ 6. **No Blind String Replacement**:
30
+ Never perform broad, global `strix -> guile` replacements without deep dependency and AST analysis. Internal technical schemas and tool protocols must remain intact.
31
+
32
+ 7. **Security & Sandbox Discipline**:
33
+ Never weaken sandbox, network, or capability controls without documenting the rationale and logging an architectural decision.
34
+
35
+ 8. **Context Synchronization**:
36
+ Update context documents in `docs/context/` whenever meaningful changes occur:
37
+ - Product/priority changes -> `CURRENT_STATE.md` / `ROADMAP.md`
38
+ - Architecture changes -> `ARCHITECTURE.md` / `DECISIONS.md`
39
+ - Security changes -> `SECURITY_MODEL.md` / `KNOWN_RISKS.md`
40
+ - Dependency changes -> `DEPENDENCIES.md`
41
+ - Branding changes -> `BRANDING_AUDIT.md`
42
+
43
+ 9. **State Integrity**:
44
+ - `CURRENT_STATE.md` represents current operational truth and must not become a chronological history log.
45
+ - `DECISIONS.md` records durable, non-speculative decisions.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: "[BUG]"
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1.
16
+ 2.
17
+ 3.
18
+ 4.
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **System Information:**
27
+ - OS: [e.g. Ubuntu 22.04]
28
+ - Guile Version or Commit: [e.g. 0.1.0]
29
+ - Python Version: [e.g. 3.12]
30
+ - LLM Used: [e.g. GPT-5, Claude Sonnet 4.6]
31
+
32
+ **Additional context**
33
+ Add any other context about the problem here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: "[FEATURE]"
5
+ labels: enhancement
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,146 @@
1
+ name: Build & Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ build:
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - os: macos-latest
19
+ target: macos-arm64
20
+ wheel-platform: macosx_11_0_arm64
21
+ - os: macos-15-intel
22
+ target: macos-x86_64
23
+ wheel-platform: macosx_11_0_x86_64
24
+ - os: ubuntu-22.04
25
+ target: linux-x86_64
26
+ wheel-platform: manylinux_2_17_x86_64
27
+ - os: ubuntu-22.04-arm
28
+ target: linux-arm64
29
+ wheel-platform: manylinux_2_17_aarch64
30
+ - os: windows-latest
31
+ target: windows-x86_64
32
+ wheel-platform: win_amd64
33
+
34
+ runs-on: ${{ matrix.os }}
35
+
36
+ steps:
37
+ - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
38
+ with:
39
+ persist-credentials: false
40
+
41
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
42
+ with:
43
+ python-version: '3.12'
44
+
45
+ - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
46
+
47
+ - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
48
+ with:
49
+ go-version: '1.24.x'
50
+ check-latest: true
51
+ cache-dependency-path: guile/interface/tui/go.sum
52
+
53
+ - name: Verify Release Contract
54
+ run: |
55
+ uv run python scripts/verify_release_contract.py
56
+
57
+ - name: Build
58
+ shell: bash
59
+ env:
60
+ GUILE_WHEEL_PLATFORM_TAG: ${{ matrix.wheel-platform }}
61
+ run: |
62
+ uv sync --frozen
63
+ uv build --wheel
64
+ uv run python -c 'import glob, os, sys, zipfile; wheels = glob.glob("dist/*.whl"); assert len(wheels) == 1, wheels; archive = zipfile.ZipFile(wheels[0]); tui = "guile/bin/guile-tui.exe" if sys.platform == "win32" else "guile/bin/guile-tui"; assert tui in archive.namelist(); metadata = archive.read(next(name for name in archive.namelist() if name.endswith(".dist-info/WHEEL"))).decode(); assert "Root-Is-Purelib: false" in metadata; assert "Tag: py3-none-" + os.environ["GUILE_WHEEL_PLATFORM_TAG"] in metadata'
65
+
66
+ uv run pyinstaller guile.spec --noconfirm
67
+
68
+ if [[ "${{ runner.os }}" == "Windows" ]]; then
69
+ PYI_BINARY="dist/guile.exe"
70
+ TUI_NAME="guile-tui.exe"
71
+ dist/guile.exe --version
72
+ else
73
+ PYI_BINARY="dist/guile"
74
+ TUI_NAME="guile-tui"
75
+ dist/guile --version
76
+ fi
77
+ uv run pyi-archive_viewer -l "$PYI_BINARY" | grep -E "guile[/\\]+bin[/\\]+$TUI_NAME" >/dev/null
78
+
79
+ if [[ "${{ matrix.target }}" == "linux-arm64" ]]; then
80
+ file dist/guile
81
+ file dist/guile | grep -q "ARM aarch64" || {
82
+ echo "::error::linux-arm64 artifact is not an ARM aarch64 binary"
83
+ exit 1
84
+ }
85
+ fi
86
+
87
+ VERSION=$(python3 -c "import tomllib, pathlib; print(tomllib.loads(pathlib.Path('pyproject.toml').read_text(encoding='utf-8'))['project']['version'])")
88
+ mkdir -p dist/release
89
+
90
+ if [[ "${{ runner.os }}" == "Windows" ]]; then
91
+ cp dist/guile.exe "dist/release/guile-${VERSION}-${{ matrix.target }}.exe"
92
+ (cd dist/release && 7z a "guile-${VERSION}-${{ matrix.target }}.zip" "guile-${VERSION}-${{ matrix.target }}.exe")
93
+ else
94
+ cp dist/guile "dist/release/guile-${VERSION}-${{ matrix.target }}"
95
+ chmod +x "dist/release/guile-${VERSION}-${{ matrix.target }}"
96
+ tar -C dist/release -czvf "dist/release/guile-${VERSION}-${{ matrix.target }}.tar.gz" "guile-${VERSION}-${{ matrix.target }}"
97
+ fi
98
+
99
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
100
+ with:
101
+ name: guile-${{ matrix.target }}
102
+ path: |
103
+ dist/release/*.tar.gz
104
+ dist/release/*.zip
105
+ dist/*.whl
106
+ if-no-files-found: error
107
+
108
+ release:
109
+ needs: build
110
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
111
+ runs-on: ubuntu-latest
112
+ permissions:
113
+ contents: write
114
+
115
+ steps:
116
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
117
+ with:
118
+ path: release
119
+ merge-multiple: true
120
+
121
+ - name: Create Release
122
+ uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2.6.2
123
+ with:
124
+ prerelease: true
125
+ generate_release_notes: true
126
+ files: release/**
127
+
128
+ publish-pypi:
129
+ needs: build
130
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
131
+ runs-on: ubuntu-latest
132
+ permissions:
133
+ contents: read
134
+ id-token: write
135
+
136
+ steps:
137
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
138
+ with:
139
+ path: dist
140
+ merge-multiple: true
141
+
142
+ - name: Publish to PyPI
143
+ uses: pypa/gh-action-pypi-publish@release/v1
144
+ with:
145
+ packages-dir: dist/
146
+ print-hash: true
@@ -0,0 +1,74 @@
1
+ name: Docker Sandbox CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - 'security/*'
8
+ pull_request:
9
+ branches:
10
+ - main
11
+ workflow_dispatch:
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ validate-and-build:
18
+ runs-on: ubuntu-latest
19
+ permissions:
20
+ contents: read
21
+ outputs:
22
+ version: ${{ steps.meta.outputs.version }}
23
+ short_sha: ${{ steps.meta.outputs.short_sha }}
24
+ is_release_tag: ${{ steps.meta.outputs.is_release_tag }}
25
+
26
+ steps:
27
+ - name: Checkout Code
28
+ uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
29
+ with:
30
+ persist-credentials: false
31
+
32
+ - name: Setup Python
33
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
34
+ with:
35
+ python-version: '3.12'
36
+
37
+ - name: Setup uv
38
+ uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
39
+
40
+ - name: Validate Sandbox Supply-Chain Lock
41
+ run: |
42
+ uv sync --frozen
43
+ uv run python scripts/verify-sandbox-lock.py
44
+
45
+ - name: Run Focused Release & Version Tests
46
+ run: |
47
+ uv run pytest tests/test_version_contract.py tests/test_proxy_bypass.py
48
+
49
+ - name: Verify Release Tag & Version Contract
50
+ id: meta
51
+ run: |
52
+ uv run python scripts/verify_release_contract.py
53
+
54
+ - name: Set up Docker Buildx
55
+ uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1
56
+
57
+ - name: Build Docker Image (Validation)
58
+ uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
59
+ with:
60
+ context: .
61
+ file: containers/Dockerfile
62
+ push: false
63
+ build-args: |
64
+ BUILD_VERSION=${{ steps.meta.outputs.version }}
65
+ BUILD_REVISION=${{ github.sha }}
66
+ tags: |
67
+ ghcr.io/guile-security/guile-sandbox:${{ steps.meta.outputs.version }}
68
+ ghcr.io/guile-security/guile-sandbox:${{ steps.meta.outputs.short_sha }}
69
+ labels: |
70
+ org.opencontainers.image.title=Guile Sandbox
71
+ org.opencontainers.image.version=${{ steps.meta.outputs.version }}
72
+ org.opencontainers.image.revision=${{ github.sha }}
73
+ org.opencontainers.image.source=https://github.com/guile-security/guile
74
+
@@ -0,0 +1,194 @@
1
+ name: Publish Release (PyPI & GHCR)
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ workflow_dispatch:
8
+ inputs:
9
+ release_tag:
10
+ description: "Existing release tag to publish (e.g. v0.1.0a2)"
11
+ required: true
12
+ type: string
13
+ publish_target:
14
+ description: "Release destination to publish"
15
+ required: true
16
+ type: choice
17
+ default: "pypi"
18
+ options:
19
+ - "pypi"
20
+ - "ghcr"
21
+ - "both"
22
+
23
+ permissions:
24
+ contents: read
25
+
26
+ jobs:
27
+ release-preflight:
28
+ name: Release Preflight & Version Verification
29
+ runs-on: ubuntu-latest
30
+ permissions:
31
+ contents: read
32
+ outputs:
33
+ version: ${{ steps.meta.outputs.version }}
34
+ commit_sha: ${{ steps.meta.outputs.commit_sha }}
35
+ short_sha: ${{ steps.meta.outputs.short_sha }}
36
+ ref: ${{ steps.meta.outputs.ref }}
37
+ is_release_tag: ${{ steps.meta.outputs.is_release_tag }}
38
+ publish_pypi: ${{ steps.meta.outputs.publish_pypi }}
39
+ publish_ghcr: ${{ steps.meta.outputs.publish_ghcr }}
40
+
41
+ steps:
42
+ - name: Checkout Code
43
+ uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
44
+ with:
45
+ fetch-depth: 0
46
+ persist-credentials: false
47
+
48
+ - name: Setup Python
49
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
50
+ with:
51
+ python-version: '3.12'
52
+
53
+ - name: Setup uv
54
+ uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
55
+
56
+ - name: Verify Release Tag & Version Contract
57
+ id: meta
58
+ env:
59
+ INPUT_RELEASE_TAG: ${{ inputs.release_tag }}
60
+ INPUT_PUBLISH_TARGET: ${{ inputs.publish_target }}
61
+ run: |
62
+ uv sync --frozen
63
+ uv run python scripts/verify_release_contract.py
64
+
65
+ - name: Switch to Exact Tag Checkout
66
+ run: |
67
+ git checkout "${{ steps.meta.outputs.ref }}"
68
+ uv sync --frozen
69
+
70
+ - name: Validate Rebrand Integrity
71
+ run: |
72
+ uv run python scripts/verify_rebrand.py
73
+
74
+ - name: Validate Sandbox Supply-Chain Lock
75
+ run: |
76
+ uv run python scripts/verify-sandbox-lock.py
77
+
78
+ - name: Run Focused Release Tests
79
+ run: |
80
+ uv run pytest tests/test_version_contract.py tests/test_bedrock_model_compat.py tests/test_proxy_bypass.py -q
81
+
82
+ build-python-dist:
83
+ name: Build Python Distribution (sdist & wheel)
84
+ needs: release-preflight
85
+ if: needs.release-preflight.outputs.is_release_tag == 'true' && needs.release-preflight.outputs.publish_pypi == 'true'
86
+ runs-on: ubuntu-latest
87
+ permissions:
88
+ contents: read
89
+
90
+ steps:
91
+ - name: Checkout Exact Tag
92
+ uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
93
+ with:
94
+ ref: ${{ needs.release-preflight.outputs.ref }}
95
+ persist-credentials: false
96
+
97
+ - name: Setup Python
98
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
99
+ with:
100
+ python-version: '3.12'
101
+
102
+ - name: Setup uv
103
+ uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
104
+
105
+ - name: Setup Go Toolchain
106
+ uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
107
+ with:
108
+ go-version: '1.24.x'
109
+ check-latest: true
110
+ cache-dependency-path: guile/interface/tui/go.sum
111
+
112
+ - name: Build sdist and wheel
113
+ env:
114
+ GUILE_WHEEL_PLATFORM_TAG: manylinux_2_17_x86_64
115
+ run: |
116
+ uv sync --frozen
117
+ rm -rf dist
118
+ uv build
119
+ uv run python -c 'import glob, zipfile; wheels = glob.glob("dist/*.whl"); assert len(wheels) == 1, wheels; archive = zipfile.ZipFile(wheels[0]); assert "guile/bin/guile-tui" in archive.namelist(); metadata = archive.read(next(name for name in archive.namelist() if name.endswith(".dist-info/WHEEL"))).decode(); assert "Root-Is-Purelib: false" in metadata'
120
+
121
+ - name: Upload Python Distributions
122
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
123
+ with:
124
+ name: python-dist
125
+ path: dist/*
126
+ if-no-files-found: error
127
+
128
+ publish-pypi:
129
+ name: Publish to PyPI (OIDC Trusted Publisher)
130
+ needs: [release-preflight, build-python-dist]
131
+ if: needs.release-preflight.outputs.is_release_tag == 'true' && needs.release-preflight.outputs.publish_pypi == 'true'
132
+ runs-on: ubuntu-latest
133
+ environment:
134
+ name: pypi
135
+ url: https://pypi.org/p/guile-agent
136
+ permissions:
137
+ id-token: write
138
+
139
+ steps:
140
+ - name: Download Python Distributions
141
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
142
+ with:
143
+ name: python-dist
144
+ path: dist/
145
+
146
+ - name: Publish Package to PyPI
147
+ uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
148
+ with:
149
+ packages-dir: dist/
150
+ skip-existing: false
151
+
152
+ publish-ghcr:
153
+ name: Build & Publish Sandbox Image to GHCR
154
+ needs: release-preflight
155
+ if: needs.release-preflight.outputs.is_release_tag == 'true' && needs.release-preflight.outputs.publish_ghcr == 'true'
156
+ runs-on: ubuntu-latest
157
+ permissions:
158
+ contents: read
159
+ packages: write
160
+
161
+ steps:
162
+ - name: Checkout Exact Tag
163
+ uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
164
+ with:
165
+ ref: ${{ needs.release-preflight.outputs.ref }}
166
+ persist-credentials: false
167
+
168
+ - name: Set up Docker Buildx
169
+ uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1
170
+
171
+ - name: Log in to GitHub Container Registry
172
+ uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
173
+ with:
174
+ registry: ghcr.io
175
+ username: ${{ github.actor }}
176
+ password: ${{ secrets.GITHUB_TOKEN }}
177
+
178
+ - name: Build and Push Docker Image
179
+ uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
180
+ with:
181
+ context: .
182
+ file: containers/Dockerfile
183
+ push: true
184
+ build-args: |
185
+ BUILD_VERSION=${{ needs.release-preflight.outputs.version }}
186
+ BUILD_REVISION=${{ needs.release-preflight.outputs.commit_sha }}
187
+ tags: |
188
+ ghcr.io/guile-security/guile-sandbox:${{ needs.release-preflight.outputs.version }}
189
+ ghcr.io/guile-security/guile-sandbox:${{ needs.release-preflight.outputs.short_sha }}
190
+ labels: |
191
+ org.opencontainers.image.title=Guile Sandbox
192
+ org.opencontainers.image.version=${{ needs.release-preflight.outputs.version }}
193
+ org.opencontainers.image.revision=${{ needs.release-preflight.outputs.commit_sha }}
194
+ org.opencontainers.image.source=https://github.com/guile-security/guile
@@ -0,0 +1,100 @@
1
+ # Node / local-viewer SPA source (the built bundle in
2
+ # guile/interface/viewer/static/ is committed and shipped; do not ignore it)
3
+ node_modules/
4
+ guile/interface/viewer/frontend/node_modules/
5
+ guile/interface/viewer/frontend/.vite/
6
+
7
+ # Python
8
+ __pycache__/
9
+ *.py[cod]
10
+ *$py.class
11
+ *.so
12
+ .Python
13
+ # Anchored to the repo root: these are Python build-artifact dir names, but
14
+ # unanchored they also match nested source dirs (e.g. the viewer's src/lib).
15
+ /build/
16
+ develop-eggs/
17
+ dist/
18
+ downloads/
19
+ eggs/
20
+ .eggs/
21
+ /lib/
22
+ /lib64/
23
+ parts/
24
+ sdist/
25
+ var/
26
+ wheels/
27
+ *.egg-info/
28
+ .installed.cfg
29
+ *.egg
30
+
31
+ # Virtual Environment
32
+ venv/
33
+ env/
34
+ ENV/
35
+ .env
36
+ .venv
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # IDE
41
+ .idea/
42
+ .vscode/
43
+ *.swp
44
+ *.swo
45
+ .DS_Store
46
+ .project
47
+ .pydevproject
48
+ .settings/
49
+
50
+ # FastAPI
51
+ .env.local
52
+ .env.development.local
53
+ .env.test.local
54
+ .env.production.local
55
+
56
+ # MongoDB
57
+ /data/
58
+ mongod.log
59
+ *.mongodb
60
+ *.mongorc.js
61
+
62
+ # LLM and ML related
63
+ *.bin
64
+ *.pt
65
+ *.pth
66
+ *.onnx
67
+ *.h5
68
+ *.hdf5
69
+ *.pkl
70
+ *.joblib
71
+ wandb/
72
+ runs/
73
+ checkpoints/
74
+ logs/
75
+ tensorboard/
76
+
77
+ # Agent execution traces
78
+ guile_runs/
79
+ agent_runs/
80
+
81
+ # Misc
82
+ *.log
83
+ *.sqlite
84
+ *.db
85
+ .directory
86
+ *.bak
87
+ *.tmp
88
+ *.temp
89
+ .DS_Store
90
+ Thumbs.db
91
+
92
+ *.schema.graphql
93
+ schema.graphql
94
+
95
+ .opencode/
96
+
97
+ # Root-only local data and reference checkouts
98
+ /.benchmarks/
99
+ /references/
100
+ /guile_runs_main/
@@ -0,0 +1,67 @@
1
+ # Built viewer bundles are generated output, not hand-edited source.
2
+ exclude: ^guile/interface/viewer/static/assets/
3
+
4
+ repos:
5
+ # Ruff for fast linting and formatting
6
+ - repo: https://github.com/astral-sh/ruff-pre-commit
7
+ rev: v0.11.13
8
+ hooks:
9
+ - id: ruff
10
+ args: [--fix, --exit-non-zero-on-fix]
11
+ name: ruff-lint
12
+ - id: ruff-format
13
+ name: ruff-format
14
+
15
+ # MyPy for static type checking. Runs the project's own mypy from the uv
16
+ # environment (`make dev-install`) so it sees the same dependencies and
17
+ # stubs as `make check-all`.
18
+ - repo: local
19
+ hooks:
20
+ - id: mypy
21
+ name: mypy
22
+ entry: uv run mypy
23
+ language: system
24
+ types_or: [python, pyi]
25
+ files: ^(guile|tests)/
26
+ require_serial: true
27
+
28
+ # Built-in hooks for basic file checks
29
+ - repo: https://github.com/pre-commit/pre-commit-hooks
30
+ rev: v5.0.0
31
+ hooks:
32
+ - id: trailing-whitespace
33
+ - id: end-of-file-fixer
34
+ - id: check-toml
35
+ - id: check-merge-conflict
36
+ - id: check-added-large-files
37
+ args: ['--maxkb=1024']
38
+ - id: debug-statements
39
+ - id: check-case-conflict
40
+ - id: check-docstring-first
41
+
42
+ # Security checks with bandit
43
+ - repo: https://github.com/PyCQA/bandit
44
+ rev: 1.8.3
45
+ hooks:
46
+ - id: bandit
47
+ args: [-c, pyproject.toml]
48
+
49
+ # Additional Python code quality checks
50
+ - repo: https://github.com/asottile/pyupgrade
51
+ rev: v3.21.2
52
+ hooks:
53
+ - id: pyupgrade
54
+ args: [--py312-plus]
55
+
56
+ ci:
57
+ autofix_commit_msg: |
58
+ [pre-commit.ci] auto fixes from pre-commit.com hooks
59
+
60
+ for more information, see https://pre-commit.ci
61
+ autofix_prs: true
62
+ autoupdate_branch: ""
63
+ autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate"
64
+ autoupdate_schedule: weekly
65
+ # pre-commit.ci cannot run `language: system` hooks; mypy runs via `make check-all`.
66
+ skip: [mypy]
67
+ submodules: false