thinkstack-core 4.0.0__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 (205) hide show
  1. thinkstack_core/__init__.py +158 -0
  2. thinkstack_core/aggphi_textual.py +275 -0
  3. thinkstack_core/alerts/__init__.py +23 -0
  4. thinkstack_core/alerts/base.py +46 -0
  5. thinkstack_core/alerts/config.py +60 -0
  6. thinkstack_core/alerts/dispatcher.py +110 -0
  7. thinkstack_core/alerts/jira.py +96 -0
  8. thinkstack_core/alerts/linear.py +72 -0
  9. thinkstack_core/alerts/pagerduty.py +66 -0
  10. thinkstack_core/alerts/slack.py +81 -0
  11. thinkstack_core/alerts/teams.py +70 -0
  12. thinkstack_core/audit/__init__.py +43 -0
  13. thinkstack_core/audit/exporter.py +297 -0
  14. thinkstack_core/audit/privacy.py +101 -0
  15. thinkstack_core/audit/scrubber.py +149 -0
  16. thinkstack_core/audit/service.py +67 -0
  17. thinkstack_core/audit/signing.py +127 -0
  18. thinkstack_core/broadcast/__init__.py +4 -0
  19. thinkstack_core/broadcast/broadcaster.py +100 -0
  20. thinkstack_core/broadcast/watcher.py +71 -0
  21. thinkstack_core/capability.py +639 -0
  22. thinkstack_core/cloud/__init__.py +1 -0
  23. thinkstack_core/cloud/client_config.py +472 -0
  24. thinkstack_core/cloud/client_configs/.claude-opencode-fallback.json +8 -0
  25. thinkstack_core/cloud/client_configs/.claude-stdio.json +13 -0
  26. thinkstack_core/cloud/client_configs/.cursor-mcp.json +13 -0
  27. thinkstack_core/cloud/client_configs/.opencode-bridge.json +13 -0
  28. thinkstack_core/cloud/client_configs/.opencode.json +15 -0
  29. thinkstack_core/cloud/client_configs/.vscode-mcp.json +13 -0
  30. thinkstack_core/cloud/mcp_client.py +229 -0
  31. thinkstack_core/cloud/setup.py +144 -0
  32. thinkstack_core/cloud/sync.py +143 -0
  33. thinkstack_core/cloud/sync_bundle.py +639 -0
  34. thinkstack_core/cloud/sync_conflicts.py +183 -0
  35. thinkstack_core/cloud/sync_state.py +159 -0
  36. thinkstack_core/cloud/team_sync.py +337 -0
  37. thinkstack_core/cloud/thinkstack-mcp-bridge.js +357 -0
  38. thinkstack_core/codex/__init__.py +9 -0
  39. thinkstack_core/codex/__main__.py +97 -0
  40. thinkstack_core/codex/capture.py +208 -0
  41. thinkstack_core/codex/proxy.py +412 -0
  42. thinkstack_core/compat.py +103 -0
  43. thinkstack_core/concept_catalog.py +209 -0
  44. thinkstack_core/consolidation/__init__.py +3 -0
  45. thinkstack_core/consolidation/synthesizer.py +87 -0
  46. thinkstack_core/consolidation/workflow.py +175 -0
  47. thinkstack_core/daemon/__init__.py +27 -0
  48. thinkstack_core/daemon/supervisor.py +293 -0
  49. thinkstack_core/daemon/watcher.py +244 -0
  50. thinkstack_core/dashboard_api.py +2012 -0
  51. thinkstack_core/deltaf.py +97 -0
  52. thinkstack_core/disclosure.py +50 -0
  53. thinkstack_core/divergence/__init__.py +3 -0
  54. thinkstack_core/divergence/detector.py +166 -0
  55. thinkstack_core/gateway/__init__.py +32 -0
  56. thinkstack_core/gateway/key_manager.py +124 -0
  57. thinkstack_core/gateway/metrics_webhook.py +252 -0
  58. thinkstack_core/gateway/policy.py +262 -0
  59. thinkstack_core/gateway/server.py +727 -0
  60. thinkstack_core/gateway/sso.py +233 -0
  61. thinkstack_core/gcc.py +1246 -0
  62. thinkstack_core/github/__init__.py +35 -0
  63. thinkstack_core/github/app.py +240 -0
  64. thinkstack_core/github/comment_builder.py +113 -0
  65. thinkstack_core/github/pat.py +76 -0
  66. thinkstack_core/github/pr_parser.py +82 -0
  67. thinkstack_core/github/pr_reporter.py +555 -0
  68. thinkstack_core/gitlab/__init__.py +177 -0
  69. thinkstack_core/hitl/__init__.py +4 -0
  70. thinkstack_core/hitl/channels.py +129 -0
  71. thinkstack_core/hitl/orchestrator.py +95 -0
  72. thinkstack_core/hooks/__init__.py +17 -0
  73. thinkstack_core/hooks/claude_code.py +228 -0
  74. thinkstack_core/hooks/git_capture.py +341 -0
  75. thinkstack_core/hooks/git_commit.py +182 -0
  76. thinkstack_core/hooks/installer.py +850 -0
  77. thinkstack_core/hooks/pre_commit.py +157 -0
  78. thinkstack_core/hooks/runner.py +386 -0
  79. thinkstack_core/identity/__init__.py +4 -0
  80. thinkstack_core/identity/agent.py +86 -0
  81. thinkstack_core/identity/providers.py +85 -0
  82. thinkstack_core/invariants.py +182 -0
  83. thinkstack_core/mcp/__init__.py +10 -0
  84. thinkstack_core/mcp/auth.py +177 -0
  85. thinkstack_core/mcp/server.py +1215 -0
  86. thinkstack_core/metrics/__init__.py +35 -0
  87. thinkstack_core/metrics/aggregate.py +215 -0
  88. thinkstack_core/metrics/calibrate.py +198 -0
  89. thinkstack_core/metrics/calibration.py +125 -0
  90. thinkstack_core/metrics/credibility.py +288 -0
  91. thinkstack_core/metrics/delivery_time.py +70 -0
  92. thinkstack_core/metrics/dhs.py +126 -0
  93. thinkstack_core/metrics/mcs.py +96 -0
  94. thinkstack_core/metrics/roi.py +88 -0
  95. thinkstack_core/metrics/session_writer.py +81 -0
  96. thinkstack_core/metrics/shadow_ai.py +117 -0
  97. thinkstack_core/metrics/sprint_writer.py +243 -0
  98. thinkstack_core/observability/__init__.py +78 -0
  99. thinkstack_core/observability/datadog.py +157 -0
  100. thinkstack_core/observability/formatter.py +119 -0
  101. thinkstack_core/observability/report.py +264 -0
  102. thinkstack_core/observability/servicenow.py +147 -0
  103. thinkstack_core/observability/splunk.py +218 -0
  104. thinkstack_core/observability/webhook.py +227 -0
  105. thinkstack_core/parser/__init__.py +30 -0
  106. thinkstack_core/parser/blocks.py +216 -0
  107. thinkstack_core/parser/inference.py +159 -0
  108. thinkstack_core/parser/thinking.py +112 -0
  109. thinkstack_core/projects.py +169 -0
  110. thinkstack_core/prompt_artifact.py +76 -0
  111. thinkstack_core/proxy/__init__.py +9 -0
  112. thinkstack_core/proxy/routes/__init__.py +1 -0
  113. thinkstack_core/proxy/routes/anthropic.py +264 -0
  114. thinkstack_core/proxy/routes/azure_openai.py +336 -0
  115. thinkstack_core/proxy/routes/gemini.py +331 -0
  116. thinkstack_core/proxy/routes/groq.py +284 -0
  117. thinkstack_core/proxy/routes/ollama.py +279 -0
  118. thinkstack_core/proxy/routes/openai.py +287 -0
  119. thinkstack_core/proxy/server.py +356 -0
  120. thinkstack_core/query/__init__.py +15 -0
  121. thinkstack_core/query/grep.py +181 -0
  122. thinkstack_core/query/hybrid.py +86 -0
  123. thinkstack_core/query/semantic.py +157 -0
  124. thinkstack_core/rdp.py +105 -0
  125. thinkstack_core/reasoning/__init__.py +4 -0
  126. thinkstack_core/reasoning/entry.py +31 -0
  127. thinkstack_core/reasoning/store.py +122 -0
  128. thinkstack_core/reasoning_plus/__init__.py +70 -0
  129. thinkstack_core/reasoning_plus/augmenter.py +337 -0
  130. thinkstack_core/reasoning_plus/capture.py +51 -0
  131. thinkstack_core/reasoning_plus/config.py +313 -0
  132. thinkstack_core/reasoning_plus/context.py +262 -0
  133. thinkstack_core/reasoning_plus/learning/__init__.py +125 -0
  134. thinkstack_core/reasoning_plus/learning/analytics.py +141 -0
  135. thinkstack_core/reasoning_plus/learning/api.py +784 -0
  136. thinkstack_core/reasoning_plus/learning/chain.py +285 -0
  137. thinkstack_core/reasoning_plus/learning/composer.py +141 -0
  138. thinkstack_core/reasoning_plus/learning/conflicts.py +184 -0
  139. thinkstack_core/reasoning_plus/learning/context_collector.py +194 -0
  140. thinkstack_core/reasoning_plus/learning/cross_project.py +234 -0
  141. thinkstack_core/reasoning_plus/learning/deny_list.py +108 -0
  142. thinkstack_core/reasoning_plus/learning/embeddings.py +209 -0
  143. thinkstack_core/reasoning_plus/learning/evolution.py +119 -0
  144. thinkstack_core/reasoning_plus/learning/extractor.py +271 -0
  145. thinkstack_core/reasoning_plus/learning/filter_five_layer.py +95 -0
  146. thinkstack_core/reasoning_plus/learning/models.py +149 -0
  147. thinkstack_core/reasoning_plus/learning/org_store.py +156 -0
  148. thinkstack_core/reasoning_plus/learning/pii.py +142 -0
  149. thinkstack_core/reasoning_plus/learning/promotion.py +58 -0
  150. thinkstack_core/reasoning_plus/learning/provenance.py +126 -0
  151. thinkstack_core/reasoning_plus/learning/recorder.py +81 -0
  152. thinkstack_core/reasoning_plus/learning/relevance.py +122 -0
  153. thinkstack_core/reasoning_plus/learning/state.py +86 -0
  154. thinkstack_core/reasoning_plus/learning/store.py +178 -0
  155. thinkstack_core/reasoning_plus/learning/theta_learning_bridge.py +94 -0
  156. thinkstack_core/reasoning_plus/prompt.py +90 -0
  157. thinkstack_core/rep.py +134 -0
  158. thinkstack_core/rep_network/__init__.py +25 -0
  159. thinkstack_core/rep_network/merge.py +70 -0
  160. thinkstack_core/rep_network/node.py +137 -0
  161. thinkstack_core/rep_network/server.py +140 -0
  162. thinkstack_core/rep_network/sync.py +207 -0
  163. thinkstack_core/sensitivity.py +182 -0
  164. thinkstack_core/serve.py +258 -0
  165. thinkstack_core/session/__init__.py +39 -0
  166. thinkstack_core/session/disagreement.py +188 -0
  167. thinkstack_core/session/models.py +114 -0
  168. thinkstack_core/session/orchestrator.py +182 -0
  169. thinkstack_core/session/planner.py +169 -0
  170. thinkstack_core/session/simulator.py +132 -0
  171. thinkstack_core/signing.py +290 -0
  172. thinkstack_core/sis.py +197 -0
  173. thinkstack_core/skills/pr-reviewer/SKILL.md +204 -0
  174. thinkstack_core/skills/thinkstack-auto-sync/SKILL.md +175 -0
  175. thinkstack_core/skills/thinkstack-session-start/SKILL.md +136 -0
  176. thinkstack_core/storage.py +308 -0
  177. thinkstack_core/templates/__init__.py +6 -0
  178. thinkstack_core/templates/engine.py +122 -0
  179. thinkstack_core/templates/go.py +18 -0
  180. thinkstack_core/templates/infra.py +19 -0
  181. thinkstack_core/templates/library/__init__.py +18 -0
  182. thinkstack_core/templates/library/api_design.md +27 -0
  183. thinkstack_core/templates/library/bug_fix.md +27 -0
  184. thinkstack_core/templates/library/decision_record.md +27 -0
  185. thinkstack_core/templates/library/engine.py +228 -0
  186. thinkstack_core/templates/library/security_review.md +30 -0
  187. thinkstack_core/templates/python.py +19 -0
  188. thinkstack_core/templates/react.py +18 -0
  189. thinkstack_core/templates/typescript.py +18 -0
  190. thinkstack_core/theta.py +221 -0
  191. thinkstack_core/theta_synthesis.py +268 -0
  192. thinkstack_core/topics.py +320 -0
  193. thinkstack_core/variance.py +219 -0
  194. thinkstack_core/wrapper/__init__.py +52 -0
  195. thinkstack_core/wrapper/anthropic.py +487 -0
  196. thinkstack_core/wrapper/base.py +562 -0
  197. thinkstack_core/wrapper/bedrock.py +342 -0
  198. thinkstack_core/wrapper/gemini.py +422 -0
  199. thinkstack_core/wrapper/ollama.py +527 -0
  200. thinkstack_core/wrapper/openai.py +461 -0
  201. thinkstack_core-4.0.0.dist-info/METADATA +868 -0
  202. thinkstack_core-4.0.0.dist-info/RECORD +205 -0
  203. thinkstack_core-4.0.0.dist-info/WHEEL +5 -0
  204. thinkstack_core-4.0.0.dist-info/entry_points.txt +2 -0
  205. thinkstack_core-4.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,205 @@
1
+ thinkstack_core/__init__.py,sha256=RrAy2BCPFzaF85CmTUAZqHLrgV2WgGObgMvP6_DuQ_M,3883
2
+ thinkstack_core/aggphi_textual.py,sha256=2E1ygil6bOswWltnEwGGNflIyMYRK_tS9V93DIDOmF8,9925
3
+ thinkstack_core/capability.py,sha256=yERNHibZlKthRNtMv_cTwNLy-nAOZUYkjVPNf_v2nf0,23226
4
+ thinkstack_core/compat.py,sha256=2MJkJbU5miI_dPYOOGRbCuYxZFdNmD_vrTJUaf5g2so,4043
5
+ thinkstack_core/concept_catalog.py,sha256=tM_Rl-rP3TWbM8w5nYPCVT78i5NXF4UwOeCOEx8KKOo,7507
6
+ thinkstack_core/dashboard_api.py,sha256=HKM9k7B7j1l1ZzWEKx6EFWFr6dinYYbttbHLEIYLBEg,70392
7
+ thinkstack_core/deltaf.py,sha256=ggdnES0AoF3YslzmUkVEe9XwaZCiTV_dtLVAlHCNArg,3412
8
+ thinkstack_core/disclosure.py,sha256=khLlFw1W-x1zwz8RSi_KcjB6xCmU82KjG44-ovwC0qk,1988
9
+ thinkstack_core/gcc.py,sha256=wEH3K0NlASgxE8Jd5e_umC0le30AS0qyxamd9MFO980,49856
10
+ thinkstack_core/invariants.py,sha256=KZHGAHT3boqvPGcXlKG4fp7dmfKH_RuIAqanm58pHI0,6579
11
+ thinkstack_core/projects.py,sha256=3te_-gcRdwc2Z0dGEXIZMoZxr-FSDNNV-VyhdZX2dOg,5530
12
+ thinkstack_core/prompt_artifact.py,sha256=iw_GCNvx7G6Qy6G-0pRBSMFMFsRtNlq9apEe6qwBV8k,2917
13
+ thinkstack_core/rdp.py,sha256=NoHoHCwTRkDS82W-DuxzW6APUdEEuFHvjpVd9CvevtM,3693
14
+ thinkstack_core/rep.py,sha256=5AmS0rCTZR3R9MBD0Il5Vt-2TImXbX853awr6LtZy7o,4786
15
+ thinkstack_core/sensitivity.py,sha256=dzISDM3iCdQzDxHmzVKO1udYfq6zQFy9ypbrEWdY4aY,6418
16
+ thinkstack_core/serve.py,sha256=yGGAa5zkxxecAaa8tGLkCKBT_YhTdUmV0KQX-uX8HgU,8095
17
+ thinkstack_core/signing.py,sha256=bajMJHXrqnlQJXCgUWBIGXXYeRs2E5ysWwMm0SxeUTA,9424
18
+ thinkstack_core/sis.py,sha256=53JSJTXhvpUlqJv1Mxu3zukXPDECYLFP5hfbrNG8o1o,6647
19
+ thinkstack_core/storage.py,sha256=U9eO-XaXn5m9EIY32PFpmotHOekgIvCA-gizK4FZBXY,12320
20
+ thinkstack_core/theta.py,sha256=3He7ba-oA5SXS1nR445HM1X1tXwVL5WzP99YJk6Z3Yc,8064
21
+ thinkstack_core/theta_synthesis.py,sha256=UCWy9_kyCMDVQyG_Kfq0nwr4Jtez_tPcBdEHY38AidQ,8630
22
+ thinkstack_core/topics.py,sha256=NDtmeQs2kl1yC6vItOxrs1iMqrsCtYduE_yhiP5ic0c,12194
23
+ thinkstack_core/variance.py,sha256=fiGcXiolt-lxdjGTUngUJvg9IBdjzuNM_MZ2d7wrib0,7142
24
+ thinkstack_core/alerts/__init__.py,sha256=XGbsqcrHzJ6ugnPqkUq7dh9l0OlKi4jA7HnzS1ZJBqM,624
25
+ thinkstack_core/alerts/base.py,sha256=PC7eoVFYMCtEJEfCx4S9LHow53Yh5y0BQE7rBPLz82A,1175
26
+ thinkstack_core/alerts/config.py,sha256=n5eF1mAQ5ETaOpDA49zB0b8NzZpG6cpa12u2sfZCOXk,2691
27
+ thinkstack_core/alerts/dispatcher.py,sha256=mFXDNc0nrtuvweceHzehhvtp6iy18Ny71DJfXSPAPC0,3618
28
+ thinkstack_core/alerts/jira.py,sha256=djVXR1a7FswVexrhttX3IZjpvQ441ZyKtyePbfJSU70,3295
29
+ thinkstack_core/alerts/linear.py,sha256=OYvKmpgERE6iFjAgcv5CTjEMj9jXu8hN_ie5xcW2s-M,2530
30
+ thinkstack_core/alerts/pagerduty.py,sha256=TloIlVzLL0p8Eh4C5iN7We-gncarkVo2pllwFiygMhQ,2270
31
+ thinkstack_core/alerts/slack.py,sha256=VFAIseuzjJu20X2n7lee_68Pe7OnvjyTHG09YoFk0aM,2660
32
+ thinkstack_core/alerts/teams.py,sha256=k0GU4KvViWFMYMYwauhq3160VIfbqt-VJLIYEMvfXws,2552
33
+ thinkstack_core/audit/__init__.py,sha256=CoxLLMttSNOrb8XgPuWqpKBpzNj6Ra7ATr64mCqShoI,1506
34
+ thinkstack_core/audit/exporter.py,sha256=fNn2pNenoECFv1x3MXSyw-pIHBHIrngnzCvQAjnlsMQ,10838
35
+ thinkstack_core/audit/privacy.py,sha256=H_Kln8wjd5X_1XSh_gr4kihmV0rrqwkzVSVb3aZxhzo,3576
36
+ thinkstack_core/audit/scrubber.py,sha256=ZOX7-_zj20MLj_m-aI6aV8DZDRSD_l_FjWprwAApisU,4470
37
+ thinkstack_core/audit/service.py,sha256=KZqVr23njcy1us_nGX7ad-mY19-euEBe4whHccxXt24,2491
38
+ thinkstack_core/audit/signing.py,sha256=ZSJ1eADZN8yOZh975DbK6bSFOeopUQqTwCDLCKmNHwA,5053
39
+ thinkstack_core/broadcast/__init__.py,sha256=SD8vUJ3HvzR1VCIOsFN4F7gNvRIcwIjH9SC8u2FaHI0,166
40
+ thinkstack_core/broadcast/broadcaster.py,sha256=2NYFjif7QoIrc5ykIwUqB2xVwlc7XOo3gKD-hgPby7M,3241
41
+ thinkstack_core/broadcast/watcher.py,sha256=91MDpSNzT_vj4QuVDOaUB4i6FJwROLl0DgM1O7G1pUc,2322
42
+ thinkstack_core/cloud/__init__.py,sha256=InjzkltxHX80JfuH1l7JbHsvqGXQWk2gjIrNhjjJNdY,60
43
+ thinkstack_core/cloud/client_config.py,sha256=lnfz82MLyBkB6s0nZHkgFVAhcJ7a-4tdTQC0-0iNBXg,16546
44
+ thinkstack_core/cloud/mcp_client.py,sha256=38OpuNg8fhzwegjOiuFCCpw2I566brNspuebEeqdNaU,8217
45
+ thinkstack_core/cloud/setup.py,sha256=uk0V9EP8qxx9JJAbGMHnzV4MzluLIGZoEiNgpjb2CgQ,5246
46
+ thinkstack_core/cloud/sync.py,sha256=YnKjqrJ4YVGsfxckrCsasJNoU5uQyxJiAbNLi_L7CTU,5075
47
+ thinkstack_core/cloud/sync_bundle.py,sha256=kYVhHSXxz2UzO4CDoBpTlNBO8MYcdKbmhnPsiRlKZVM,24820
48
+ thinkstack_core/cloud/sync_conflicts.py,sha256=YKR28FSQ2EVigybuG0fBuKeNzdwhzFjaE0zAD4tchLk,6677
49
+ thinkstack_core/cloud/sync_state.py,sha256=0y3adZmwjrhzqe-lh0ORHT3rndumLhmpwi6WFlwYoOk,6342
50
+ thinkstack_core/cloud/team_sync.py,sha256=FEIerwIr1ZjXQzEBjnaYIexy4vhnsa_1VHb1a9_o9Cw,11293
51
+ thinkstack_core/cloud/thinkstack-mcp-bridge.js,sha256=HovM6-aqR7AZp6vf_-b4Q5-hDUPrQCkWd4Xeov4LIvo,9925
52
+ thinkstack_core/cloud/client_configs/.claude-opencode-fallback.json,sha256=2TFKhf_uXyFu6vjrBJmw3JYUNlaGOmNldDiwphry360,149
53
+ thinkstack_core/cloud/client_configs/.claude-stdio.json,sha256=IYK247JQ4nqwx83dJw00BusQ0QIlUStnaZjDIXkASGA,378
54
+ thinkstack_core/cloud/client_configs/.cursor-mcp.json,sha256=ji7sPpW6l0hkqMGCcUM24bGMvA6UJGTb6SCO2I5uqxU,274
55
+ thinkstack_core/cloud/client_configs/.opencode-bridge.json,sha256=IYK247JQ4nqwx83dJw00BusQ0QIlUStnaZjDIXkASGA,378
56
+ thinkstack_core/cloud/client_configs/.opencode.json,sha256=TLfLIMPoLU_8P23WCURabW19kLg7lremauefZ9JJioc,459
57
+ thinkstack_core/cloud/client_configs/.vscode-mcp.json,sha256=IYK247JQ4nqwx83dJw00BusQ0QIlUStnaZjDIXkASGA,378
58
+ thinkstack_core/codex/__init__.py,sha256=j_a9CiJ3xTXlxvlhg0OC1Q9sJVk_xs9nkKJphraUqCo,271
59
+ thinkstack_core/codex/__main__.py,sha256=ZjXcPgHzi08TmrfzYvsz9sLW_GsI6ALoKlxqo7DfbII,2553
60
+ thinkstack_core/codex/capture.py,sha256=ieYnXIKZoAqPYRxa6jnTX_TnCgRjvyzD6_7ks_y7WvU,6856
61
+ thinkstack_core/codex/proxy.py,sha256=iRPjhfAbPmmihkoPqRK78DdnmXTTU8O13gw99_s_Yvk,13792
62
+ thinkstack_core/consolidation/__init__.py,sha256=DaFqZ__5GnVmUFR1-Fwi5AJRvRQla150PpkUgyuYvPE,125
63
+ thinkstack_core/consolidation/synthesizer.py,sha256=kIG_dfo1FRVyZcpraPK5XTT90q5lBylcCaK7uixlttg,3369
64
+ thinkstack_core/consolidation/workflow.py,sha256=gwAS1SYOQdrUhhw0yY7rfhX-qm6cJkUChv5ZhG1YSoM,6356
65
+ thinkstack_core/daemon/__init__.py,sha256=x6iYLWZGmx9EJ7xv1Qi2MZ2jqZ6a4RiDLkbzbqZWzik,585
66
+ thinkstack_core/daemon/supervisor.py,sha256=BAjtvawMFf8a7-OdbsK8VgMHqoYEaqRg3By0FCJbF2o,9088
67
+ thinkstack_core/daemon/watcher.py,sha256=4PDLQuHMgnjyLRP0PLKu9EubQx2RrCYmciM6ju3bBs8,8043
68
+ thinkstack_core/divergence/__init__.py,sha256=REDlDIGz68Ar7a8sTJgbydby_72pm0RNNVlyAV3qvgM,113
69
+ thinkstack_core/divergence/detector.py,sha256=sn9kynb-_lIVV8_-ykcR8767QIt_vFlXkgSxfWLNqWM,6685
70
+ thinkstack_core/gateway/__init__.py,sha256=RcZEPzuXyZtHoRFp4DXpKA_dT8HcO4rPhUuZmRW0uNU,1012
71
+ thinkstack_core/gateway/key_manager.py,sha256=pylNi5mwLs9QIilPWf00kajDd9uhUpjviULO768Uglo,4195
72
+ thinkstack_core/gateway/metrics_webhook.py,sha256=X7JTS69HvYl6N1804ECo-hYK8qtOgEmkMX_59y9V6UA,8100
73
+ thinkstack_core/gateway/policy.py,sha256=nvKJPI6gd5bwM06__u8AmRCXRY36E_FrybtTivJ0QnY,9804
74
+ thinkstack_core/gateway/server.py,sha256=ULm7HppY-OBg852l_sjyeIY-wbp7rogj5JOV19q2W2o,26766
75
+ thinkstack_core/gateway/sso.py,sha256=apxKiFHYPHpAjAkG8RnYLHvswMxoH-DBr7roM1sioqs,7977
76
+ thinkstack_core/github/__init__.py,sha256=OvXh3adgq3vaH_qOFZn8mEJkqHycmdlj53EHBjCSvQ4,999
77
+ thinkstack_core/github/app.py,sha256=lJirkZWzugIWhumOpwvYrGBDqSl6SGH-sQ_rjVqNejc,8859
78
+ thinkstack_core/github/comment_builder.py,sha256=dvcDoTrKj3z4I5of70X1A_KD8cgzImJvdvz14RH-_1Y,4873
79
+ thinkstack_core/github/pat.py,sha256=ki4gdq6dvpB7EUd2ewigXfCNxNeLhVd-arWJe3W7os8,2598
80
+ thinkstack_core/github/pr_parser.py,sha256=FJjRVfnHVK0LW37n9moxIhEiJcOjAmALY7xjb2vfI3o,2495
81
+ thinkstack_core/github/pr_reporter.py,sha256=Um7C8x8kMkWpetlXo0CMEyUIbj7hfcHBoHjioOXBFfA,19239
82
+ thinkstack_core/gitlab/__init__.py,sha256=Wu3ZjHDWf7YwgeWawiuQ81xIFvdZjV8lE77YPbSPbnY,6575
83
+ thinkstack_core/hitl/__init__.py,sha256=XW-c8koXNj2BIhM_TDb3_k73aEsuPY8HaFSg9TeTZuY,224
84
+ thinkstack_core/hitl/channels.py,sha256=JPr2wVZMsXp9a9l6AC9OqCBS0vW9A9VMIn0NcSLrAqs,4322
85
+ thinkstack_core/hitl/orchestrator.py,sha256=6k-n-RPIBg1Ptr3rO09UHwb-mDSsfHXHtKK7tfK_2II,3651
86
+ thinkstack_core/hooks/__init__.py,sha256=xjYZBavCYUAPZGS3toh6HblErpiVwKqDxTSkw9L5kQE,464
87
+ thinkstack_core/hooks/claude_code.py,sha256=gwes0_FS9JR7O6sIUaLS2Zr6LL6pKX_z6OcfB4bV9p0,7066
88
+ thinkstack_core/hooks/git_capture.py,sha256=p1KatqZm7lIlqDmjyTrIvRW3moM1ZTam6BTWpll3yLo,10966
89
+ thinkstack_core/hooks/git_commit.py,sha256=cUiP-VjTWFIQQHZzYVewpBm9kandu4JTDI97uqIek4s,5904
90
+ thinkstack_core/hooks/installer.py,sha256=vfOqbdbIF3d0vHQMyZNouq3NxmqW68kQre-KPAdwA6I,29804
91
+ thinkstack_core/hooks/pre_commit.py,sha256=SrohJHG4VJk0RH7HQgssTU3Ojmgzg6c0n0hQjOhVr4Q,4553
92
+ thinkstack_core/hooks/runner.py,sha256=0glPz7n71SsokKL0Sd2HFBS2TZVkGGyaY9O1OZGk3hg,13055
93
+ thinkstack_core/identity/__init__.py,sha256=3pkXjqy7LZ5_ZDpItjZD1QVj9D-PT02BkUW-kAcQygI,166
94
+ thinkstack_core/identity/agent.py,sha256=_q1uxNPzMaNAINwVpcK_xw0g8glBWS2YBrzojbHFZ9Q,2735
95
+ thinkstack_core/identity/providers.py,sha256=5aq00ASYQrc4rKCq_k5d8R3l9pHo6NGoei9XJ8CYN4E,2694
96
+ thinkstack_core/mcp/__init__.py,sha256=uGbjqsgk5Mnz6gAfsby82X1iB4m3WxYeoZVjjcv0e3o,216
97
+ thinkstack_core/mcp/auth.py,sha256=JFuZYLLALuv-XPp0suYQE8zIYl9Ug99rqmOyFGsAurA,6886
98
+ thinkstack_core/mcp/server.py,sha256=zjLnrwDMtPF6BjDBR0iOv2HlSJ8KZE-8kcLEvO6xwbE,47374
99
+ thinkstack_core/metrics/__init__.py,sha256=WNFwQjxh6_JLdlIUuZeETXnIihCurIM1GUQ1Lj4fwCc,1139
100
+ thinkstack_core/metrics/aggregate.py,sha256=RDWDrS_U8KQYBUD6FLa69tlrxy_XGArmj2ZktsMKkKc,7139
101
+ thinkstack_core/metrics/calibrate.py,sha256=S283jtfJ9nnVLx3IWaKULbJ2z5XSfzdpE_Ih6MUAOIE,7980
102
+ thinkstack_core/metrics/calibration.py,sha256=TLJhqilSGwS_xkJ4Pg_3oHMgOI4nfv9mF9ZmMZkLk2Q,4284
103
+ thinkstack_core/metrics/credibility.py,sha256=Sj8tbJp3dKsPpb79U7qJ7mWQD_1hERNaWEiXaXyC-Cs,11473
104
+ thinkstack_core/metrics/delivery_time.py,sha256=iLe2K08Osjh112iTciyxGgvFxBIrgwz9pfLgVesdjBw,2576
105
+ thinkstack_core/metrics/dhs.py,sha256=YuBAMV7R5jJttwF_hXPVDXzAW70RyXtKOlSm5LCz8VU,4030
106
+ thinkstack_core/metrics/mcs.py,sha256=OE_rsXxgvSa1ERbwgyWapHx0EYLkEgEx_FvWwQZ3Hmg,2777
107
+ thinkstack_core/metrics/roi.py,sha256=iQ1OD0iDMx-ScQhKbqlI2UkJb-0HoH2-gpdCGRL21LU,2731
108
+ thinkstack_core/metrics/session_writer.py,sha256=liQia9HU3KD7sqWRYyvdthgSlRUt312eWz0c6zop5GM,2753
109
+ thinkstack_core/metrics/shadow_ai.py,sha256=1IKwI_15pUYxIWqb2uD5ApkyuxiMTTiRXNPDFVKnBo8,3812
110
+ thinkstack_core/metrics/sprint_writer.py,sha256=sXJNGtZAxVL6W26uk8_ae3HVXAez1MdeN4kKwwaC0yI,8803
111
+ thinkstack_core/observability/__init__.py,sha256=XJANyou9F2PhlZgBXD7s7UZHJGHYlbgYNK-jNPjRKMk,1722
112
+ thinkstack_core/observability/datadog.py,sha256=lmqzI0vJi6hQe2a5UtP0_XPR0Z8PINuQk7hgMK3KvkI,6043
113
+ thinkstack_core/observability/formatter.py,sha256=PNRvJiPzo3C-OGJwfl6Gn_xUHcFPuErpUzU_h0TR8DA,4068
114
+ thinkstack_core/observability/report.py,sha256=PFJC9bzI-YajEbg3zvNn7_9YrwEhbGz4P2DWstjWqXA,9862
115
+ thinkstack_core/observability/servicenow.py,sha256=mOCb_32OUZzNsmRu6ASmlnhD6lsD_qhTeY793btmsqo,5314
116
+ thinkstack_core/observability/splunk.py,sha256=mTiHfYxEyePxohTpKSYG2E0DoSAvumosN-RUKSlfqss,7132
117
+ thinkstack_core/observability/webhook.py,sha256=2RSePzaog3ayr7UC-sTiQoFwQGUYkwBrhfm4gceIluc,7644
118
+ thinkstack_core/parser/__init__.py,sha256=ZGfk7c2VbI-_y79ssV2t4KoL757XMRxDsj4zZ-_MpB8,979
119
+ thinkstack_core/parser/blocks.py,sha256=unZbRgncZPPsRwPQ-rGpQJw3cOwNjDaxkVWFZvMlFhQ,7833
120
+ thinkstack_core/parser/inference.py,sha256=tAl9PmfZKwmwnqssXau0A4qCN7mzvHty9WoXOC0xCU8,5872
121
+ thinkstack_core/parser/thinking.py,sha256=HH8xV4QNnlCY77NmBkwJD2YUbKNl6KmcONAd2_D8PBg,3672
122
+ thinkstack_core/proxy/__init__.py,sha256=C1xY53vwYnOQe4D2v6yRMo6womoup8spsC1isz-s7UM,200
123
+ thinkstack_core/proxy/server.py,sha256=9Oa6g6Z2_2wpGZ9VtoQF9iKxPneM7Y7AqZF0myZcvGk,11738
124
+ thinkstack_core/proxy/routes/__init__.py,sha256=U8ZiLlJEAiBAnLTqqDP8UOKKkHyTQsxQXPB5LYDStvU,31
125
+ thinkstack_core/proxy/routes/anthropic.py,sha256=rdwNSiFkW94h-abxEzGwTuZpk7NeyXVfbsE9F95azIA,10356
126
+ thinkstack_core/proxy/routes/azure_openai.py,sha256=M2oNwg8Y0WKgDyB_gerjzaLoxnvqDNtluukXls3dmgA,12870
127
+ thinkstack_core/proxy/routes/gemini.py,sha256=xbIwxKsUZz0qnIxXOSi0nYqMowahdY6vYJXisH4KO6A,12503
128
+ thinkstack_core/proxy/routes/groq.py,sha256=SMwPUvwdByFd2xOohrK7PuoYp80amWCY2dJrTZn5XOg,10938
129
+ thinkstack_core/proxy/routes/ollama.py,sha256=tU8n_6DRrTQ7Mm4D73ZI-23O6j-YLDFfPEbTVXCay2U,10726
130
+ thinkstack_core/proxy/routes/openai.py,sha256=ZbqvXcznsi5cEiOk1FdkbSwoBoa39gXcUl5Q6xeAbjc,11184
131
+ thinkstack_core/query/__init__.py,sha256=q0eqOt-_hWNuI30G29VpAhCSJwco9inTZHh8Op9DpHU,375
132
+ thinkstack_core/query/grep.py,sha256=0wFmmR88WnxsY4YuSHlelykekKuwYym6KpROSzjkVuQ,5882
133
+ thinkstack_core/query/hybrid.py,sha256=khX7BSp2rMmWn9JE9iY9rPtvOmu2sVnM3uwoKbl-rzg,2539
134
+ thinkstack_core/query/semantic.py,sha256=4ngM83W7LXgZJuogJ0g0zvZYKnzyALAMo-Z9k4cd1Vc,5065
135
+ thinkstack_core/reasoning/__init__.py,sha256=ALJHL-WPTuu8QvdCVHt9fSDSEMnlACQ-JRmdgDKJISY,116
136
+ thinkstack_core/reasoning/entry.py,sha256=PKb3r0vW6k75XDfXltEYu-c1Ig2ylXWWhjfQGjclj6w,911
137
+ thinkstack_core/reasoning/store.py,sha256=6HKmRMDsQ__6vGnZwxclfgmRCqLohdV2bcGTXp3tbk0,4354
138
+ thinkstack_core/reasoning_plus/__init__.py,sha256=Vz4VjVWxu4k-mESbJRI56rHVlGi86R8bAdB1b3gaFuM,1993
139
+ thinkstack_core/reasoning_plus/augmenter.py,sha256=3XQRLwRox2gC-DGdc8oznr9Ag21POyAqrpjeV16eOsc,11700
140
+ thinkstack_core/reasoning_plus/capture.py,sha256=P-QB1SL5sAQgfsKpQpKQU7wTs_oHrHqEhL8YTST3qi0,1655
141
+ thinkstack_core/reasoning_plus/config.py,sha256=Fb14z-vGmLWKU3QNIjloNMUuMfXx9oWfOOwF2eijy5s,13051
142
+ thinkstack_core/reasoning_plus/context.py,sha256=E5p3tvk0qgEXY9ThJJL57TlEZLo4cRB37E6ABveu7EU,8642
143
+ thinkstack_core/reasoning_plus/prompt.py,sha256=wnOjBk7UvGwP8VtmHkZ4HWCLwqAYLfE5ZdEjru9zE70,3077
144
+ thinkstack_core/reasoning_plus/learning/__init__.py,sha256=yThAm0HQHnzizWuYmjcaKcAD7vK9jjxaL1qQwg7btFg,4048
145
+ thinkstack_core/reasoning_plus/learning/analytics.py,sha256=YGbtrKv-kHqKF-v9eIoV8lsdj7pJK3drOM3rjUtRtR0,5439
146
+ thinkstack_core/reasoning_plus/learning/api.py,sha256=TzCp3Y1zNVahQUm8_PzbHqtx0amaoZseD1nWOKv_Ebs,31306
147
+ thinkstack_core/reasoning_plus/learning/chain.py,sha256=iYvVZEIXi5ymFk-hjp6jXeuxZPUKZdqKcujAfSB_2kg,10557
148
+ thinkstack_core/reasoning_plus/learning/composer.py,sha256=UGWxq5jxv_0-Wsew0GzMSR-jInNlFbMshhUNXuSVPpI,4903
149
+ thinkstack_core/reasoning_plus/learning/conflicts.py,sha256=7AdYfr1ftlDnjzoQ6E_7YToPfOD9oWGjSqpyf8hEv9s,6885
150
+ thinkstack_core/reasoning_plus/learning/context_collector.py,sha256=oSBj0mt8O1uWKQdREqjVPlOf5L-1JWympTDywPCbbYo,6599
151
+ thinkstack_core/reasoning_plus/learning/cross_project.py,sha256=YlSyCIKKa0bIrlaa1nHgDX5oT2fuWkmvBELIqbBPJV4,8197
152
+ thinkstack_core/reasoning_plus/learning/deny_list.py,sha256=KZbXz8ebEUDdGnl3hQ2MTZItlJiZpPmu1NHGgRvXDdc,3880
153
+ thinkstack_core/reasoning_plus/learning/embeddings.py,sha256=cTQdejjAbSNQOxSZ0C3GvekNWMyy7a7jqYwfEaYReb0,7120
154
+ thinkstack_core/reasoning_plus/learning/evolution.py,sha256=WiJyJqzUhD5UAIWwHw3YYq13FsUZtmqX_TkYiLtUUBk,4300
155
+ thinkstack_core/reasoning_plus/learning/extractor.py,sha256=mIbcuVdb8-H0bU8Wb_8nyiOMAPuRvdby34XOI3hsbvw,10388
156
+ thinkstack_core/reasoning_plus/learning/filter_five_layer.py,sha256=pjdxOirNgTEdxSEXUDsDpbqTa1F7HxN-7dluftVCL7M,3488
157
+ thinkstack_core/reasoning_plus/learning/models.py,sha256=MP-7DhJwDTsYFhV6gl_8cSY6J2biKbwH4KOgYiY9_mY,5280
158
+ thinkstack_core/reasoning_plus/learning/org_store.py,sha256=kiSDM1yNb6GSKpa8hTRSfYCN1TPVcjZiNF6ch99Tabc,5648
159
+ thinkstack_core/reasoning_plus/learning/pii.py,sha256=_kvi-xEmpF9siGLWAAk8jGeyUl2Pl_8MyWmMg069dq8,5153
160
+ thinkstack_core/reasoning_plus/learning/promotion.py,sha256=D3UkO4xKTjIszskL490IpGVoHooqfbVLjxA0Jm80tVc,1906
161
+ thinkstack_core/reasoning_plus/learning/provenance.py,sha256=V8jM32CsSOmBSTOl3rteU7MpAJeZaUevJSCM2fa6ZeY,4412
162
+ thinkstack_core/reasoning_plus/learning/recorder.py,sha256=D0iu8kFizD-Yxhdju0-L1wzu7at5hn0jbbthyS7z51M,2926
163
+ thinkstack_core/reasoning_plus/learning/relevance.py,sha256=bBgh7SzxQNSri4VUqOfnA3ak524f1Z6yQpXt_oUsmLU,4541
164
+ thinkstack_core/reasoning_plus/learning/state.py,sha256=n5F9yWSqjZHUeq0zI48QnfbfBFI_Hb45QeGWD3QUcRg,2690
165
+ thinkstack_core/reasoning_plus/learning/store.py,sha256=m8RO2JQnfRRTh8JFAPRMrGQPC6GVNSKtxMs36NYezsk,7235
166
+ thinkstack_core/reasoning_plus/learning/theta_learning_bridge.py,sha256=1teLbpe4sMkaTmqmKKtLBgr1ZNbLoWqEOK75OxAXh38,3094
167
+ thinkstack_core/rep_network/__init__.py,sha256=Ik7YqgFoiYJsrE0U_57Zkqjn5dj9BuFN9ScSwJuJRMQ,563
168
+ thinkstack_core/rep_network/merge.py,sha256=lXy1ijj0W6rtHWKVwjaxIgpdz9zydq_Bq7mH_0_fy4Q,2316
169
+ thinkstack_core/rep_network/node.py,sha256=cLzqgEgROl-FkFBF3vURRgMdvsaJhOK0JC8p5Hj2VLU,4509
170
+ thinkstack_core/rep_network/server.py,sha256=T5yuqKIrlAFbeCYrRTlLeJY9CbwS9IFHdXWmdUf3_c4,4344
171
+ thinkstack_core/rep_network/sync.py,sha256=SCRGwUD0karsV0fmwiCdsR3EpFAPGUWXk0s0ANhTtpM,6770
172
+ thinkstack_core/session/__init__.py,sha256=yLG7QM6NgrDnZATvuKV0PV3EQI0FtRh_lWGhQwYZ6dY,848
173
+ thinkstack_core/session/disagreement.py,sha256=9ilM58bY-tSNvWvT8Q9NR-PEh8S8CA-SLbqAxJs2NRE,6700
174
+ thinkstack_core/session/models.py,sha256=Bp56_IW8_fpZh2XHM-aCTHZoI2UCKMVzojf630UQG5w,3509
175
+ thinkstack_core/session/orchestrator.py,sha256=rAxCiHu7un9WUElB-UhX58zOoK8wLvNrua-hOoEv2eQ,6842
176
+ thinkstack_core/session/planner.py,sha256=FCfGxO6bOrRnRsJZ-0wSxUUuSBpeJXfBd7Bx5W12BuA,6239
177
+ thinkstack_core/session/simulator.py,sha256=yrnIcXK_FDlPS9tMV8dXuz5cjxWNCbtbSCRudH1Zx_8,4462
178
+ thinkstack_core/skills/pr-reviewer/SKILL.md,sha256=thjV8Dr8xf5jNSJC6DW43FaFYpYKr6OuRTCNMMkSLr4,8131
179
+ thinkstack_core/skills/thinkstack-auto-sync/SKILL.md,sha256=Kfto732EvVcTRplo1HTbJgwGDaqZbTGazIDsT7ZvTF8,4991
180
+ thinkstack_core/skills/thinkstack-session-start/SKILL.md,sha256=_OmID4Mk6nwL0UsMq93rnWyxUyhNKOYbTPx5ZBHQqIU,4144
181
+ thinkstack_core/templates/__init__.py,sha256=ElEUcZ8Xt9s709OTuIGkRB7kJw0JkDwYUByR0DpRVvM,258
182
+ thinkstack_core/templates/engine.py,sha256=9taVuBvSZVIngBO3WUWvq8Q-Z27bc8OCvlI_hPoZsWM,3544
183
+ thinkstack_core/templates/go.py,sha256=XhXHcRJS8oajZ68PmPlkZPRCIboTWryeebSTcql4sbs,771
184
+ thinkstack_core/templates/infra.py,sha256=yBTSUHn40BuI0lQBvF9Oo50DIdxpucmqmxGVV3L3JwM,894
185
+ thinkstack_core/templates/python.py,sha256=dk0HLD4rSFh14nGyTlV39QvXoXgGDy3qjNp2dIeMyrA,809
186
+ thinkstack_core/templates/react.py,sha256=ggBsMkuu4K2c4liWO5SrlyfMOYJA-gTnBXE5WEFaFqo,773
187
+ thinkstack_core/templates/typescript.py,sha256=RXfBTZIDFkR1qnMDqCxEmDMflMX9AH7i3zVKzFOu0Es,773
188
+ thinkstack_core/templates/library/__init__.py,sha256=zn9IdGmTuZOsaFDMnyjoNaZBguBgcac5iALhXzp42PQ,414
189
+ thinkstack_core/templates/library/api_design.md,sha256=v7b8KdcIWgxZ0lVhqc7EHha3t-ZgDiJvxGjEHGfXV1E,361
190
+ thinkstack_core/templates/library/bug_fix.md,sha256=EbtYf4WspjaWNJmJ7DiuoQFTfc-ZE5vWIf2LzyOnQz0,376
191
+ thinkstack_core/templates/library/decision_record.md,sha256=e0L8oYfV2OQsK80yFC18x5GfhXH8ETHc-QW2esX1518,404
192
+ thinkstack_core/templates/library/engine.py,sha256=QMcUbV6XzQxbmPOOQwokYKExneavMPs7T43wIisqtSI,7444
193
+ thinkstack_core/templates/library/security_review.md,sha256=ATS4nCelF5-0lqXoJJqpn-IfCQNhUXfa7jNOAmSxxGc,430
194
+ thinkstack_core/wrapper/__init__.py,sha256=txxP8tUdSJoaFhV9aaRVZfePaHopv0uRgUfSqIFyUmw,1533
195
+ thinkstack_core/wrapper/anthropic.py,sha256=nAW_cHvKoGaesptCIIyz4UfyW04HhCXgfWomY33fUUQ,17855
196
+ thinkstack_core/wrapper/base.py,sha256=mxrGxawtHPUxNoc3mHBwM2a-p9HWMU0UQkP9EM8GEjc,21173
197
+ thinkstack_core/wrapper/bedrock.py,sha256=e73LQXJHz8-tYHbuY0qlWqL7rrpnnQLsc0ydMe3YNJE,12040
198
+ thinkstack_core/wrapper/gemini.py,sha256=CcjCpaNWqZzITD4bBzYgXl7Asl0pG5cbx6BIG5TdcAs,14646
199
+ thinkstack_core/wrapper/ollama.py,sha256=l73waqSKjIZ1PD-V_tvtuwJr0zGz6RFB51fdkTImIH4,18471
200
+ thinkstack_core/wrapper/openai.py,sha256=oLkqfD8W8-Xgl-sxz-oBo4UxPV0xKAxsQN4mt4N_nwQ,16819
201
+ thinkstack_core-4.0.0.dist-info/METADATA,sha256=MGBJWfb0wnS9rLRPpG6dmHgfLCuV_rpuN0jZBqA2kPY,32234
202
+ thinkstack_core-4.0.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
203
+ thinkstack_core-4.0.0.dist-info/entry_points.txt,sha256=xZg-zCkuiFplpVirO0b7Kakn_p9BgIFblHpJoPedBxo,69
204
+ thinkstack_core-4.0.0.dist-info/top_level.txt,sha256=AULCZpdxtI62sTLUlelBGY5ldJTwKJeKb_U9L3oSH7E,16
205
+ thinkstack_core-4.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ thinkstack-hook = thinkstack_core.hooks.runner:cli
@@ -0,0 +1 @@
1
+ thinkstack_core