token-goat 2.9.29 → 2.9.31

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 (197) hide show
  1. package/README.md +53 -42
  2. package/SECURITY.md +37 -11
  3. package/THIRD_PARTY_NOTICES.md +41 -4
  4. package/dist/native/linux-arm64/tg-hook +0 -0
  5. package/dist/native/linux-x64/tg-hook +0 -0
  6. package/dist/native/win32-arm64/tg-hook.exe +0 -0
  7. package/dist/native/win32-x64/tg-hook.exe +0 -0
  8. package/dist/ort-wasm-simd-threaded.mjs +59 -0
  9. package/dist/{token-goat-chunk-SE6E4BKJ.mjs → token-goat-chunk-25TRAWET.mjs} +23 -6
  10. package/dist/token-goat-chunk-2KXO6V2B.mjs +203 -0
  11. package/dist/{token-goat-chunk-UXSXQQIY.mjs → token-goat-chunk-2M7E4PF7.mjs} +43 -14
  12. package/dist/token-goat-chunk-2UPZGKKY.mjs +188 -0
  13. package/dist/token-goat-chunk-2WLPWKHV.mjs +135 -0
  14. package/dist/token-goat-chunk-2XBMMDBD.mjs +126 -0
  15. package/dist/token-goat-chunk-32ZOY4N5.mjs +23 -0
  16. package/dist/token-goat-chunk-3EZRNKTK.mjs +188 -0
  17. package/dist/token-goat-chunk-4ADZHI7J.mjs +63 -0
  18. package/dist/token-goat-chunk-4GBVPH3D.mjs +242 -0
  19. package/dist/{token-goat-chunk-2WOUYWLM.mjs → token-goat-chunk-4GILLLWY.mjs} +34 -7
  20. package/dist/token-goat-chunk-4NAPX7BA.mjs +90 -0
  21. package/dist/{token-goat-chunk-NMBWLRHW.mjs → token-goat-chunk-4SC7UJYV.mjs} +9981 -11563
  22. package/dist/token-goat-chunk-4SMRO4TO.mjs +366 -0
  23. package/dist/{token-goat-chunk-O6I2XU4P.mjs → token-goat-chunk-4ZBFWLXF.mjs} +310 -441
  24. package/dist/token-goat-chunk-57BIAXJL.mjs +286 -0
  25. package/dist/token-goat-chunk-5AC66HNP.mjs +115 -0
  26. package/dist/token-goat-chunk-5IMLKSOP.mjs +145 -0
  27. package/dist/token-goat-chunk-5RG5SBL6.mjs +221 -0
  28. package/dist/{token-goat-chunk-RRNZMM3A.mjs → token-goat-chunk-5Y6ZYL6U.mjs} +21 -2
  29. package/dist/token-goat-chunk-646E6U44.mjs +398 -0
  30. package/dist/token-goat-chunk-65N4RHP4.mjs +33 -0
  31. package/dist/{token-goat-chunk-6AK46ZT7.mjs → token-goat-chunk-6DG6HWP3.mjs} +13 -3
  32. package/dist/token-goat-chunk-6ENQSNRZ.mjs +573 -0
  33. package/dist/token-goat-chunk-6ZY4GNF2.mjs +91 -0
  34. package/dist/{token-goat-chunk-E5TK5DNO.mjs → token-goat-chunk-76FGDLRO.mjs} +574 -340
  35. package/dist/{token-goat-chunk-TGOXNAHW.mjs → token-goat-chunk-7EZTZOMC.mjs} +780 -767
  36. package/dist/token-goat-chunk-7MAOA6X4.mjs +3647 -0
  37. package/dist/token-goat-chunk-7R2ZVVAX.mjs +218 -0
  38. package/dist/{token-goat-chunk-TCQANXYC.mjs → token-goat-chunk-AM5V6GSX.mjs} +18 -2
  39. package/dist/token-goat-chunk-AUNGYYQX.mjs +184 -0
  40. package/dist/token-goat-chunk-AUQYRMMH.mjs +2985 -0
  41. package/dist/token-goat-chunk-B3PEKBYG.mjs +128 -0
  42. package/dist/{token-goat-chunk-KOPIR3KZ.mjs → token-goat-chunk-BA4HI6BW.mjs} +1910 -165
  43. package/dist/{token-goat-chunk-52NSDWYY.mjs → token-goat-chunk-BFCWY73P.mjs} +58 -20
  44. package/dist/token-goat-chunk-BPGCUMR7.mjs +30 -0
  45. package/dist/token-goat-chunk-BWGFUZZE.mjs +25 -0
  46. package/dist/token-goat-chunk-C75NA7PL.mjs +322 -0
  47. package/dist/token-goat-chunk-CBIQ7WTD.mjs +87 -0
  48. package/dist/token-goat-chunk-CETM74KC.mjs +307 -0
  49. package/dist/token-goat-chunk-CIMQ2BB3.mjs +233 -0
  50. package/dist/{token-goat-chunk-DNSPXQXQ.mjs → token-goat-chunk-CJLS3CDL.mjs} +70 -18
  51. package/dist/{token-goat-chunk-MELOKFDJ.mjs → token-goat-chunk-CO3UYX6G.mjs} +7 -1
  52. package/dist/token-goat-chunk-COPNXRJM.mjs +154 -0
  53. package/dist/token-goat-chunk-CSJ5L3NL.mjs +479 -0
  54. package/dist/token-goat-chunk-CVCEVUGK.mjs +315 -0
  55. package/dist/token-goat-chunk-CXHOFN7R.mjs +371 -0
  56. package/dist/token-goat-chunk-D735C4QM.mjs +603 -0
  57. package/dist/{token-goat-chunk-E4ZOJIZK.mjs → token-goat-chunk-DGS2LVNA.mjs} +70 -160
  58. package/dist/{token-goat-chunk-L7H3U27L.mjs → token-goat-chunk-DOWRSMWO.mjs} +1 -1
  59. package/dist/token-goat-chunk-E45INMY3.mjs +71 -0
  60. package/dist/token-goat-chunk-EC5F37F4.mjs +244 -0
  61. package/dist/{token-goat-chunk-XTQAOTSO.mjs → token-goat-chunk-EDBDRVH5.mjs} +4 -1
  62. package/dist/token-goat-chunk-EELTBKDM.mjs +613 -0
  63. package/dist/token-goat-chunk-EVMZJ27Z.mjs +147 -0
  64. package/dist/token-goat-chunk-EXKGNHEG.mjs +2096 -0
  65. package/dist/{token-goat-chunk-YOOVFPTP.mjs → token-goat-chunk-F4HYL64R.mjs} +12 -2
  66. package/dist/token-goat-chunk-F6PAUIEK.mjs +624 -0
  67. package/dist/token-goat-chunk-FDSREWLX.mjs +692 -0
  68. package/dist/{token-goat-chunk-NMTKNYGF.mjs → token-goat-chunk-FNFBKLRD.mjs} +74 -9
  69. package/dist/token-goat-chunk-G5PJ7AGM.mjs +36 -0
  70. package/dist/token-goat-chunk-GGGG7RWB.mjs +236 -0
  71. package/dist/{token-goat-chunk-TDUT2CL6.mjs → token-goat-chunk-GL3ETKSC.mjs} +276 -19
  72. package/dist/{token-goat-chunk-7CPMDFGB.mjs → token-goat-chunk-GVB2MUST.mjs} +265 -1567
  73. package/dist/token-goat-chunk-GWFLAUMQ.mjs +307 -0
  74. package/dist/token-goat-chunk-HAVAOB3S.mjs +87 -0
  75. package/dist/token-goat-chunk-HLPW63A7.mjs +48 -0
  76. package/dist/token-goat-chunk-HU4TORC5.mjs +1377 -0
  77. package/dist/token-goat-chunk-I7VKZZAW.mjs +35 -0
  78. package/dist/token-goat-chunk-IA6XSPE3.mjs +218 -0
  79. package/dist/token-goat-chunk-IAGXMHIK.mjs +863 -0
  80. package/dist/{token-goat-chunk-435UQTKD.mjs → token-goat-chunk-IK2DRMFX.mjs} +129 -74
  81. package/dist/{token-goat-chunk-ZER6EAXZ.mjs → token-goat-chunk-INNPTRUX.mjs} +2954 -2783
  82. package/dist/token-goat-chunk-JJ5BX4F4.mjs +129 -0
  83. package/dist/token-goat-chunk-JVFSHVFJ.mjs +129 -0
  84. package/dist/token-goat-chunk-KGEFFSHD.mjs +50 -0
  85. package/dist/token-goat-chunk-KKUFXAPD.mjs +25 -0
  86. package/dist/token-goat-chunk-KQBLRPBN.mjs +433 -0
  87. package/dist/token-goat-chunk-LCNQ2CNN.mjs +497 -0
  88. package/dist/token-goat-chunk-M3LFJDPU.mjs +58 -0
  89. package/dist/token-goat-chunk-M52KPT3C.mjs +87 -0
  90. package/dist/token-goat-chunk-MBEG42H7.mjs +150 -0
  91. package/dist/{token-goat-chunk-EVC4TOLE.mjs → token-goat-chunk-METECDOH.mjs} +3 -12
  92. package/dist/{token-goat-chunk-2AWQ2R5X.mjs → token-goat-chunk-MHX7XCC3.mjs} +3 -2
  93. package/dist/token-goat-chunk-MNWKPRAL.mjs +13 -0
  94. package/dist/token-goat-chunk-N5LSOVSU.mjs +137 -0
  95. package/dist/{token-goat-chunk-DPNLUJWB.mjs → token-goat-chunk-N5MMR2IW.mjs} +30 -8
  96. package/dist/token-goat-chunk-N7B3JQ2C.mjs +160 -0
  97. package/dist/{token-goat-chunk-VMFWNHGR.mjs → token-goat-chunk-NISNMD7T.mjs} +2545 -2953
  98. package/dist/token-goat-chunk-NMD42SFQ.mjs +434 -0
  99. package/dist/token-goat-chunk-NOSS5VWY.mjs +174 -0
  100. package/dist/token-goat-chunk-NSNSPPBG.mjs +69 -0
  101. package/dist/token-goat-chunk-OBOFIHKN.mjs +38 -0
  102. package/dist/token-goat-chunk-OBRFJ5O5.mjs +76 -0
  103. package/dist/token-goat-chunk-ODBT2USM.mjs +800 -0
  104. package/dist/token-goat-chunk-OS5EM5PP.mjs +107 -0
  105. package/dist/token-goat-chunk-OUKDTVNU.mjs +1178 -0
  106. package/dist/token-goat-chunk-OXFMP75N.mjs +566 -0
  107. package/dist/{token-goat-chunk-ASLWOQ3I.mjs → token-goat-chunk-OYIYKDDT.mjs} +2 -1
  108. package/dist/{token-goat-chunk-67BNIKKO.mjs → token-goat-chunk-P6HQSWQ3.mjs} +55 -47
  109. package/dist/token-goat-chunk-P6VGNTQT.mjs +71 -0
  110. package/dist/token-goat-chunk-PFWIMH2E.mjs +261 -0
  111. package/dist/token-goat-chunk-PJZXIS3G.mjs +39 -0
  112. package/dist/token-goat-chunk-PUO5INXP.mjs +606 -0
  113. package/dist/token-goat-chunk-PX5PQWTY.mjs +462 -0
  114. package/dist/token-goat-chunk-Q5QDBC6O.mjs +111 -0
  115. package/dist/token-goat-chunk-QFNQXSDT.mjs +40 -0
  116. package/dist/token-goat-chunk-QH7YVYOY.mjs +3957 -0
  117. package/dist/token-goat-chunk-QLMUHEPB.mjs +43 -0
  118. package/dist/{token-goat-chunk-PYSUADX4.mjs → token-goat-chunk-QQOJIHL3.mjs} +50 -14
  119. package/dist/token-goat-chunk-QQTWJY2O.mjs +85 -0
  120. package/dist/token-goat-chunk-QYHO5CPH.mjs +93 -0
  121. package/dist/token-goat-chunk-RELAVWAD.mjs +27 -0
  122. package/dist/token-goat-chunk-RSLPOBKQ.mjs +339 -0
  123. package/dist/token-goat-chunk-SAMFDIS2.mjs +712 -0
  124. package/dist/token-goat-chunk-SDELXLDM.mjs +48 -0
  125. package/dist/{token-goat-chunk-PGTH2U4C.mjs → token-goat-chunk-SOAFZNNZ.mjs} +164 -40
  126. package/dist/{token-goat-chunk-G23DWHV4.mjs → token-goat-chunk-SRTHT7KV.mjs} +33 -15
  127. package/dist/token-goat-chunk-T5P5ACNQ.mjs +212 -0
  128. package/dist/token-goat-chunk-T5YGG4V3.mjs +45 -0
  129. package/dist/token-goat-chunk-TAUZ4OFS.mjs +110 -0
  130. package/dist/token-goat-chunk-TM6MC754.mjs +40 -0
  131. package/dist/token-goat-chunk-TWUKBOMP.mjs +72 -0
  132. package/dist/token-goat-chunk-U2KSB4SG.mjs +56 -0
  133. package/dist/token-goat-chunk-U4WHMG6Y.mjs +898 -0
  134. package/dist/token-goat-chunk-UA5V6P3P.mjs +122 -0
  135. package/dist/token-goat-chunk-UGJHGR5A.mjs +52 -0
  136. package/dist/{token-goat-chunk-RQGGMPCR.mjs → token-goat-chunk-UOUDVA5U.mjs} +76 -16
  137. package/dist/{token-goat-chunk-HNFZZHFW.mjs → token-goat-chunk-URRJ33GR.mjs} +22 -4
  138. package/dist/token-goat-chunk-UZOROKIS.mjs +165 -0
  139. package/dist/token-goat-chunk-VIHGGGEI.mjs +4234 -0
  140. package/dist/token-goat-chunk-VTJLAA7P.mjs +21 -0
  141. package/dist/token-goat-chunk-VWDXLT4F.mjs +678 -0
  142. package/dist/token-goat-chunk-VWZA2H4P.mjs +368 -0
  143. package/dist/{token-goat-chunk-QO3LXVVR.mjs → token-goat-chunk-VXEXMJDL.mjs} +2964 -3153
  144. package/dist/token-goat-chunk-WBA5SKT4.mjs +547 -0
  145. package/dist/{token-goat-chunk-ONXH6NZ5.mjs → token-goat-chunk-WDH44VAU.mjs} +19 -22
  146. package/dist/token-goat-chunk-X2SUP3EI.mjs +107 -0
  147. package/dist/token-goat-chunk-X3BELZSJ.mjs +125 -0
  148. package/dist/{token-goat-chunk-RLP6J7WR.mjs → token-goat-chunk-XLRBNZCC.mjs} +40 -21
  149. package/dist/{token-goat-chunk-S4VSXURL.mjs → token-goat-chunk-XRKUX6CM.mjs} +4 -0
  150. package/dist/token-goat-chunk-XX6O25RN.mjs +82 -0
  151. package/dist/token-goat-chunk-XZSUHBVS.mjs +65 -0
  152. package/dist/token-goat-chunk-Y2ZTQOCL.mjs +35 -0
  153. package/dist/{token-goat-chunk-UA5BKWWQ.mjs → token-goat-chunk-YB4VMGK2.mjs} +15 -4
  154. package/dist/token-goat-chunk-YBIIY3HR.mjs +51 -0
  155. package/dist/{token-goat-chunk-PKRWMHVP.mjs → token-goat-chunk-YHVDKQBR.mjs} +389 -221
  156. package/dist/token-goat-chunk-YJB5XLWI.mjs +26 -0
  157. package/dist/{token-goat-chunk-PQ53BSCF.mjs → token-goat-chunk-YKB6AQG3.mjs} +53 -31
  158. package/dist/token-goat-chunk-YMTG2YA5.mjs +35 -0
  159. package/dist/token-goat-chunk-YPBZYQRV.mjs +40 -0
  160. package/dist/{token-goat-chunk-HUYUHODZ.mjs → token-goat-chunk-YY6AVUFL.mjs} +13246 -12247
  161. package/dist/token-goat-chunk-Z7N5OMMP.mjs +98 -0
  162. package/dist/{token-goat-chunk-BGHSSJUA.mjs → token-goat-chunk-ZFOBKUWH.mjs} +1 -1
  163. package/dist/token-goat-chunk-ZMBL6UVV.mjs +110 -0
  164. package/dist/token-goat-chunk-ZNMNUPAZ.mjs +938 -0
  165. package/dist/token-goat-hook-client.cjs +87 -23
  166. package/dist/token-goat-hook-client.mjs +3 -3
  167. package/dist/token-goat-hook.mjs +76 -31
  168. package/dist/token-goat.core.mjs +6 -6
  169. package/docs/C4_RUNTIME_ARCHITECTURE.md +2 -2
  170. package/docs/cli.md +113 -60
  171. package/docs/install.md +63 -20
  172. package/docs/security.md +10 -8
  173. package/package.json +18 -7
  174. package/scripts/verify-native-dist.mjs +386 -0
  175. package/dist/token-goat-chunk-2NNUA2LR.mjs +0 -143
  176. package/dist/token-goat-chunk-44BM7DDQ.mjs +0 -294
  177. package/dist/token-goat-chunk-BGYOZ6DO.mjs +0 -24
  178. package/dist/token-goat-chunk-C5YPNZKQ.mjs +0 -318
  179. package/dist/token-goat-chunk-CIQ2FTY3.mjs +0 -1990
  180. package/dist/token-goat-chunk-D4ETHJD6.mjs +0 -246
  181. package/dist/token-goat-chunk-DNRPXHYH.mjs +0 -1062
  182. package/dist/token-goat-chunk-EUSDXRXU.mjs +0 -1429
  183. package/dist/token-goat-chunk-FTP4U4QA.mjs +0 -64
  184. package/dist/token-goat-chunk-G7IWXCFF.mjs +0 -456
  185. package/dist/token-goat-chunk-GLXRTTLE.mjs +0 -36
  186. package/dist/token-goat-chunk-H5J3C56Q.mjs +0 -1511
  187. package/dist/token-goat-chunk-IVWI2OCK.mjs +0 -368
  188. package/dist/token-goat-chunk-JTKCQMQA.mjs +0 -418
  189. package/dist/token-goat-chunk-LZNBQTDK.mjs +0 -26
  190. package/dist/token-goat-chunk-ORNFMIER.mjs +0 -295
  191. package/dist/token-goat-chunk-RTMVLHWX.mjs +0 -7113
  192. package/dist/token-goat-chunk-VQ6F6T7X.mjs +0 -36
  193. package/dist/token-goat-chunk-VZQEWRVH.mjs +0 -312
  194. package/dist/token-goat-chunk-XYWPOSCN.mjs +0 -807
  195. package/dist/token-goat-chunk-YAGLESS3.mjs +0 -23
  196. package/dist/token-goat-chunk-YKSRAWUU.mjs +0 -33
  197. package/dist/token-goat-chunk-Z6KBMOBI.mjs +0 -53
@@ -0,0 +1,462 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ CliError,
5
+ formatCommandError,
6
+ formatFailedResultText
7
+ } from "./token-goat-chunk-CBIQ7WTD.mjs";
8
+ import {
9
+ getToolName
10
+ } from "./token-goat-chunk-76FGDLRO.mjs";
11
+ import {
12
+ echoedValue,
13
+ fencedCommand,
14
+ quotedArg
15
+ } from "./token-goat-chunk-GGGG7RWB.mjs";
16
+ import {
17
+ displaySafeJson
18
+ } from "./token-goat-chunk-FNFBKLRD.mjs";
19
+ import {
20
+ init_define_import_meta_env
21
+ } from "./token-goat-chunk-A37V4PBF.mjs";
22
+
23
+ // src/session_store_schema.ts
24
+ init_define_import_meta_env();
25
+ import { existsSync } from "node:fs";
26
+ import { resolve } from "node:path";
27
+ var SESSION_STORE_TABLES = [
28
+ {
29
+ name: "sessions",
30
+ kind: "view",
31
+ source: "both",
32
+ description: "Session metadata and discovery across projects and agents",
33
+ keyFields: ["id", "task_id", "cwd", "repository", "branch", "summary", "agent_name", "agent_description", "created_at", "updated_at"],
34
+ columns: [
35
+ { name: "id", type: "TEXT", description: "Session UUID (matches .../sessions/<id>)", primaryKey: true, notNull: true },
36
+ { name: "task_id", type: "TEXT", description: "Task UUID from .../tasks/<id> URL (cloud only)" },
37
+ { name: "cwd", type: "TEXT", description: "Working directory path where session started" },
38
+ { name: "repository", type: "TEXT", description: "Repository name or owner/repo slug" },
39
+ { name: "branch", type: "TEXT", description: "Active git branch name" },
40
+ { name: "summary", type: "TEXT", description: "Concise summary of session conversation" },
41
+ { name: "agent_name", type: "TEXT", description: "Exact agent name, e.g. 'Copilot CLI', 'Copilot Coding Agent' (cloud only)" },
42
+ { name: "agent_description", type: "TEXT", description: "Agent description or specialty (cloud only)" },
43
+ { name: "created_at", type: "TIMESTAMP", description: "Session start timestamp (UTC)" },
44
+ { name: "updated_at", type: "TIMESTAMP", description: "Session last active timestamp (UTC)" },
45
+ { name: "host_type", type: "TEXT", description: "Host environment type (local source only)" }
46
+ ],
47
+ notes: [
48
+ 'In local mode (source: "local"), sessions only contains: id, cwd, repository, host_type, branch, summary, created_at, updated_at (no task_id or agent_*).',
49
+ 'Filter exact agent_name values such as "Copilot Code Review", "Copilot Coding Agent", or "Copilot CLI", not summary text.',
50
+ "Always use LIMIT and filter by repository or time (created_at >= now() - INTERVAL '7 days')."
51
+ ],
52
+ commonMisnomers: {
53
+ title: 'summary (sessions has no "title" column; checkpoints has "title")',
54
+ role: 'agent_name or agent_description (sessions has no "role" column)',
55
+ name: "agent_name (for agent identity) or repository (for project name)",
56
+ user: "user_message in turns table",
57
+ prompt: "user_message in turns table"
58
+ }
59
+ },
60
+ {
61
+ name: "turns",
62
+ kind: "view",
63
+ source: "both",
64
+ description: "Conversation messages grouped into user and assistant turns",
65
+ keyFields: ["session_id", "turn_index", "user_message", "assistant_response", "timestamp"],
66
+ columns: [
67
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
68
+ { name: "turn_index", type: "INTEGER", description: "0-based turn index in conversation", notNull: true },
69
+ { name: "user_message", type: "TEXT", description: "User input / prompt message" },
70
+ { name: "assistant_response", type: "TEXT", description: "Assistant generated response" },
71
+ { name: "timestamp", type: "TIMESTAMP", description: "Turn execution timestamp" }
72
+ ],
73
+ notes: [
74
+ "Never ILIKE-scan turns without narrow time or session_id filters; turns table can exceed 50,000+ rows."
75
+ ],
76
+ commonMisnomers: {
77
+ prompt: "user_message",
78
+ response: "assistant_response",
79
+ content: "user_message or assistant_response",
80
+ text: "user_message or assistant_response"
81
+ }
82
+ },
83
+ {
84
+ name: "checkpoints",
85
+ kind: "view",
86
+ source: "both",
87
+ description: "Handoff and checkpoint summaries created during sessions",
88
+ keyFields: ["session_id", "checkpoint_number", "title", "overview", "created_at"],
89
+ columns: [
90
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
91
+ { name: "checkpoint_number", type: "INTEGER", description: "Sequential checkpoint number (1-based)" },
92
+ { name: "title", type: "TEXT", description: "Checkpoint short title" },
93
+ { name: "overview", type: "TEXT", description: "Checkpoint narrative markdown summary" },
94
+ { name: "created_at", type: "TIMESTAMP", description: "Checkpoint creation timestamp" }
95
+ ],
96
+ commonMisnomers: {
97
+ summary: "overview or title",
98
+ description: "overview",
99
+ notes: "overview"
100
+ }
101
+ },
102
+ {
103
+ name: "session_files",
104
+ kind: "view",
105
+ source: "both",
106
+ description: "Files touched, created, or modified during sessions",
107
+ keyFields: ["session_id", "file_path", "tool_name", "turn_index", "first_seen_at"],
108
+ columns: [
109
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
110
+ { name: "file_path", type: "TEXT", description: "Workspace or absolute file path", notNull: true },
111
+ { name: "tool_name", type: "TEXT", description: "Tool used to touch file (edit, create, apply_patch)" },
112
+ { name: "turn_index", type: "INTEGER", description: "Turn index where file was modified" },
113
+ { name: "first_seen_at", type: "TIMESTAMP", description: "Timestamp file was first modified in session" }
114
+ ],
115
+ commonMisnomers: {
116
+ path: "file_path",
117
+ filename: "file_path",
118
+ name: "file_path"
119
+ }
120
+ },
121
+ {
122
+ name: "session_refs",
123
+ kind: "view",
124
+ source: "both",
125
+ description: "Commit, pull request, and issue references linked to sessions",
126
+ keyFields: ["session_id", "ref_type", "ref_value", "turn_index", "created_at"],
127
+ columns: [
128
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
129
+ { name: "ref_type", type: "TEXT", description: "Reference type ('commit', 'pr', or 'issue')" },
130
+ { name: "ref_value", type: "TEXT", description: "Reference value (e.g. git SHA, PR number, or issue number)" },
131
+ { name: "turn_index", type: "INTEGER", description: "Turn index where reference appeared" },
132
+ { name: "created_at", type: "TIMESTAMP", description: "Reference creation timestamp" }
133
+ ],
134
+ notes: [
135
+ "Prefer session_refs exact matches for PR/issue lookups over text-scanning turns."
136
+ ],
137
+ commonMisnomers: {
138
+ type: "ref_type",
139
+ value: "ref_value",
140
+ ref: "ref_value"
141
+ }
142
+ },
143
+ {
144
+ name: "session_usage",
145
+ kind: "view",
146
+ source: "cloud",
147
+ description: "Model and token usage aggregated per session and model (cloud only)",
148
+ keyFields: ["session_id", "usage_model", "api_call_count", "input_tokens", "output_tokens", "cost", "duration", "first_used_at", "last_used_at"],
149
+ columns: [
150
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
151
+ { name: "usage_model", type: "TEXT", description: "LLM model identifier used" },
152
+ { name: "api_call_count", type: "INTEGER", description: "Total API calls issued to model" },
153
+ { name: "input_tokens", type: "INTEGER", description: "Total prompt/input tokens" },
154
+ { name: "output_tokens", type: "INTEGER", description: "Total generated/output tokens" },
155
+ { name: "cache_read_tokens", type: "INTEGER", description: "Prompt tokens read from cache" },
156
+ { name: "cache_write_tokens", type: "INTEGER", description: "Prompt tokens written to cache" },
157
+ { name: "cost", type: "DOUBLE", description: "Sum of model billing multipliers" },
158
+ { name: "duration", type: "BIGINT", description: "Total duration in milliseconds" },
159
+ { name: "first_used_at", type: "TIMESTAMP", description: "First usage timestamp" },
160
+ { name: "last_used_at", type: "TIMESTAMP", description: "Last usage timestamp" }
161
+ ],
162
+ notes: [
163
+ "Filtering last_used_at selects session/model rows whose latest usage falls in the period; rows remain whole-session aggregates."
164
+ ],
165
+ commonMisnomers: {
166
+ model: "usage_model",
167
+ tokens: "input_tokens or output_tokens"
168
+ }
169
+ },
170
+ {
171
+ name: "tool_executions",
172
+ kind: "view",
173
+ source: "cloud",
174
+ description: "Completed tool calls and outcomes (cloud only)",
175
+ keyFields: ["session_id", "tool_call_id", "tool_name", "started_at", "completed_at", "duration_ms", "success", "error_code"],
176
+ columns: [
177
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
178
+ { name: "tool_call_id", type: "TEXT", description: "Unique tool invocation identifier" },
179
+ { name: "tool_name", type: "TEXT", description: "Tool name executed" },
180
+ { name: "started_at", type: "TIMESTAMP", description: "Tool start timestamp" },
181
+ { name: "completed_at", type: "TIMESTAMP", description: "Tool completion timestamp" },
182
+ { name: "duration_ms", type: "BIGINT", description: "Execution duration in milliseconds" },
183
+ { name: "success", type: "BOOLEAN", description: "True if tool succeeded, false on error" },
184
+ { name: "error_code", type: "TEXT", description: "Error code or category on failure" }
185
+ ],
186
+ notes: [
187
+ "To exclude invalid negative durations, filter completed_at >= started_at."
188
+ ],
189
+ commonMisnomers: {
190
+ name: "tool_name",
191
+ duration: "duration_ms",
192
+ status: "success (boolean)"
193
+ }
194
+ },
195
+ {
196
+ name: "tool_requests",
197
+ kind: "table",
198
+ source: "cloud",
199
+ description: "Raw tool request arguments in JSON format (cloud fallback table)",
200
+ keyFields: ["session_id", "tool_call_id", "name", "arguments_json"],
201
+ columns: [
202
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
203
+ { name: "tool_call_id", type: "TEXT", description: "Tool call identifier" },
204
+ { name: "name", type: "TEXT", description: "Tool name requested" },
205
+ { name: "arguments_json", type: "TEXT", description: "Raw JSON arguments payload" }
206
+ ]
207
+ },
208
+ {
209
+ name: "attachments",
210
+ kind: "table",
211
+ source: "cloud",
212
+ description: "Attachments submitted with user messages (cloud fallback table)",
213
+ keyFields: ["session_id", "display_name", "path", "type"],
214
+ columns: [
215
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
216
+ { name: "display_name", type: "TEXT", description: "Display name or label" },
217
+ { name: "path", type: "TEXT", description: "Path to attachment" },
218
+ { name: "type", type: "TEXT", description: "MIME type or category" }
219
+ ]
220
+ },
221
+ {
222
+ name: "events",
223
+ kind: "table",
224
+ source: "cloud",
225
+ description: "Underlying raw event stream (~90 columns, large table - filter by session_id and timestamp)",
226
+ keyFields: ["session_id", "timestamp", "type", "agent_name", "agent_description", "user_content", "assistant_content"],
227
+ columns: [
228
+ { name: "session_id", type: "TEXT", description: "Foreign key to sessions.id", notNull: true },
229
+ { name: "timestamp", type: "TIMESTAMP", description: "Event timestamp" },
230
+ { name: "type", type: "TEXT", description: "Event type ('user.message', 'assistant.message', 'tool.execution_complete')" },
231
+ { name: "agent_name", type: "TEXT", description: "Agent identifier" },
232
+ { name: "agent_description", type: "TEXT", description: "Agent description" },
233
+ { name: "user_content", type: "TEXT", description: "User message text" },
234
+ { name: "assistant_content", type: "TEXT", description: "Assistant message text" },
235
+ { name: "tool_start_name", type: "TEXT", description: "Tool name at invocation" },
236
+ { name: "tool_complete_call_id", type: "TEXT", description: "Tool call ID on completion" },
237
+ { name: "tool_complete_success", type: "BOOLEAN", description: "Success status flag" },
238
+ { name: "tool_complete_result_content", type: "TEXT", description: "Tool execution result text" },
239
+ { name: "usage_model", type: "TEXT", description: "Model name" },
240
+ { name: "usage_input_tokens", type: "INTEGER", description: "Input token count" },
241
+ { name: "usage_output_tokens", type: "INTEGER", description: "Output token count" }
242
+ ]
243
+ },
244
+ {
245
+ name: "todos",
246
+ kind: "session_db",
247
+ source: "session",
248
+ description: "Active session SQLite workflow todos (managed via sql tool in session database)",
249
+ keyFields: ["id", "title", "description", "status", "created_at", "updated_at"],
250
+ columns: [
251
+ { name: "id", type: "TEXT", description: "Unique kebab-case todo identifier", primaryKey: true, notNull: true },
252
+ { name: "title", type: "TEXT", description: 'Gerund action title (e.g. "Creating auth module")', notNull: true },
253
+ { name: "description", type: "TEXT", description: "Self-contained task description" },
254
+ { name: "status", type: "TEXT", description: "'pending', 'in_progress', 'done', or 'blocked'", notNull: true },
255
+ { name: "created_at", type: "TIMESTAMP", description: "Creation timestamp" },
256
+ { name: "updated_at", type: "TIMESTAMP", description: "Last update timestamp" }
257
+ ],
258
+ commonMisnomers: {
259
+ name: "title or id",
260
+ task: "title or description",
261
+ state: "status"
262
+ }
263
+ },
264
+ {
265
+ name: "todo_deps",
266
+ kind: "session_db",
267
+ source: "session",
268
+ description: "Active session SQLite todo dependencies (managed via sql tool in session database)",
269
+ keyFields: ["todo_id", "depends_on"],
270
+ columns: [
271
+ { name: "todo_id", type: "TEXT", description: "Todo identifier that has a dependency", notNull: true },
272
+ { name: "depends_on", type: "TEXT", description: "Todo identifier that must be done first", notNull: true }
273
+ ],
274
+ commonMisnomers: {
275
+ parent: "depends_on",
276
+ child: "todo_id"
277
+ }
278
+ },
279
+ {
280
+ name: "assistant_usage_events",
281
+ kind: "table",
282
+ source: "local",
283
+ description: 'Local SQLite assistant usage events (source: "local" only)',
284
+ keyFields: ["session_id", "timestamp", "model", "input_tokens", "output_tokens"],
285
+ columns: [
286
+ { name: "session_id", type: "TEXT", description: "Session UUID" },
287
+ { name: "timestamp", type: "TEXT", description: "Timestamp string" },
288
+ { name: "model", type: "TEXT", description: "Model identifier" },
289
+ { name: "input_tokens", type: "INTEGER", description: "Input token count" },
290
+ { name: "output_tokens", type: "INTEGER", description: "Output token count" }
291
+ ]
292
+ },
293
+ {
294
+ name: "search_index",
295
+ kind: "table",
296
+ source: "local",
297
+ description: 'Local SQLite FTS5 search index table for MATCH queries (source: "local" only)',
298
+ keyFields: ["search_index"],
299
+ columns: [
300
+ { name: "search_index", type: "FTS5", description: "Full-text indexed search virtual table" }
301
+ ]
302
+ }
303
+ ];
304
+ function getSessionStoreTable(name) {
305
+ const norm = name.trim().toLowerCase();
306
+ return SESSION_STORE_TABLES.find((t) => t.name.toLowerCase() === norm);
307
+ }
308
+ function formatSessionStoreCatalog(opts) {
309
+ if (opts?.json === true) {
310
+ return displaySafeJson(SESSION_STORE_TABLES);
311
+ }
312
+ const lines = [
313
+ "# Session Store & Workflow Database Schema Catalog",
314
+ "",
315
+ "Available tables and materialized views for `session_store_sql` (DuckDB/SQLite) and `sql` (session SQLite):",
316
+ ""
317
+ ];
318
+ for (const table of SESSION_STORE_TABLES) {
319
+ const kindTag = table.kind === "session_db" ? "[session sql]" : `[${table.source}]`;
320
+ const cols = table.columns.map((c) => c.name).join(", ");
321
+ lines.push(`\u2022 **${table.name}** ${kindTag} \u2014 ${table.description}`);
322
+ lines.push(` Columns: ${cols}`);
323
+ lines.push("");
324
+ }
325
+ lines.push("Run `token-goat session-schema <table>` or `token-goat describe <table>` for detailed column specifications.");
326
+ return lines.join("\n");
327
+ }
328
+ function formatSessionStoreTable(table, opts) {
329
+ if (opts?.json === true) {
330
+ return displaySafeJson(table);
331
+ }
332
+ const lines = [
333
+ `# Schema: ${table.name} (${table.kind}, source: ${table.source})`,
334
+ "",
335
+ table.description,
336
+ "",
337
+ "## Columns",
338
+ "",
339
+ "| Column | Type | Description |",
340
+ "| :--- | :--- | :--- |"
341
+ ];
342
+ for (const col of table.columns) {
343
+ const pk = col.primaryKey === true ? " *(PK)*" : "";
344
+ const req = col.notNull === true ? " *(not null)*" : "";
345
+ lines.push(`| \`${col.name}\`${pk}${req} | \`${col.type}\` | ${col.description} |`);
346
+ }
347
+ if (table.notes && table.notes.length > 0) {
348
+ lines.push("", "## Important Notes", "");
349
+ for (const note of table.notes) {
350
+ lines.push(`- ${note}`);
351
+ }
352
+ }
353
+ if (table.commonMisnomers && Object.keys(table.commonMisnomers).length > 0) {
354
+ lines.push("", "## Common Column Misnomers & Pitfalls", "");
355
+ for (const [bad, good] of Object.entries(table.commonMisnomers)) {
356
+ lines.push(`- Don't use \`${bad}\` \u2192 use \`${good}\``);
357
+ }
358
+ }
359
+ return lines.join("\n");
360
+ }
361
+ async function describeTarget(target, table, opts) {
362
+ if (!target || target === "all" || target === "session_store_sql") {
363
+ return { exitCode: 0, text: formatSessionStoreCatalog(opts) };
364
+ }
365
+ const sessionTable = getSessionStoreTable(target);
366
+ if (sessionTable) {
367
+ return { exitCode: 0, text: formatSessionStoreTable(sessionTable, opts) };
368
+ }
369
+ const absPath = resolve(process.cwd(), target);
370
+ if (existsSync(absPath)) {
371
+ const sqliteResult = await (await import("./token-goat-chunk-OBRFJ5O5.mjs")).describeSqliteFile(target, absPath, table, opts?.json === true);
372
+ if (sqliteResult !== void 0) return sqliteResult;
373
+ }
374
+ const avail = SESSION_STORE_TABLES.map((t) => t.name).join(", ");
375
+ return {
376
+ exitCode: 1,
377
+ text: `Unknown table or SQLite file ${echoedValue(target)}. Available session store tables: ${avail}
378
+ Run \`token-goat session-schema\` to see all tables.`
379
+ };
380
+ }
381
+ function diagnoseSqlFailure(event, errorText) {
382
+ const toolName = (getToolName(event) || "").toLowerCase();
383
+ const isSqlTool = toolName === "session_store_sql" || toolName === "sql" || toolName === "sqlite_query" || toolName === "sqlite-query" || /sql/i.test(toolName);
384
+ const isColumnError = /referenced column\s*["']?([^"'\s]+)["']?\s*not found/i.test(errorText) || /no such column:\s*([^\s,;]+)/i.test(errorText) || /column\s*["']?([^"'\s]+)["']?\s*(?:does not exist|not found)/i.test(errorText) || /has no column named\s*([^\s,;]+)/i.test(errorText);
385
+ const isTableError = /table\s*["']?([^"'\s]+)["']?\s*(?:does not exist|not found)/i.test(errorText) || /no such table:\s*([^\s,;]+)/i.test(errorText);
386
+ if (!isColumnError && !isTableError && !isSqlTool) {
387
+ return null;
388
+ }
389
+ const query = typeof event.toolInput["query"] === "string" ? event.toolInput["query"] : typeof event.toolInput["sql"] === "string" ? event.toolInput["sql"] : "";
390
+ let matchedTable;
391
+ if (query) {
392
+ const fromMatch = query.match(/(?:from|join)\s+([a-zA-Z0-9_]+)/i);
393
+ if (fromMatch && fromMatch[1]) {
394
+ matchedTable = getSessionStoreTable(fromMatch[1]);
395
+ }
396
+ }
397
+ let badCol;
398
+ const colMatch = errorText.match(/referenced column\s*["']?([^"'\s]+)["']?\s*not found/i) ?? errorText.match(/no such column:\s*([^\s,;]+)/i) ?? errorText.match(/column\s*["']?([^"'\s]+)["']?\s*(?:does not exist|not found)/i) ?? errorText.match(/has no column named\s*([^\s,;]+)/i);
399
+ const matchedColName = colMatch?.[1];
400
+ if (matchedColName) {
401
+ const raw = matchedColName.trim();
402
+ if (!raw.startsWith("$") && !raw.includes("{")) {
403
+ badCol = raw.replace(/^[a-zA-Z0-9_]+\./, "").toLowerCase();
404
+ }
405
+ }
406
+ if (matchedTable) {
407
+ const validCols = matchedTable.columns.map((c) => c.name).join(", ");
408
+ let advice = `[token-goat] Table ${echoedValue(matchedTable.name)} has columns: ${validCols}.`;
409
+ if (badCol && matchedTable.commonMisnomers && matchedTable.commonMisnomers[badCol]) {
410
+ advice += ` (For ${echoedValue(badCol)}, use ${matchedTable.commonMisnomers[badCol]}).`;
411
+ } else if (badCol) {
412
+ advice += ` (Column ${echoedValue(badCol)} does not exist on ${echoedValue(matchedTable.name)}).`;
413
+ }
414
+ advice += ` Run ${fencedCommand("token-goat session-schema " + quotedArg(matchedTable.name))} to inspect full table structure.`;
415
+ return advice;
416
+ }
417
+ if (isTableError) {
418
+ const tableMatch = errorText.match(/table\s*["']?([^"'\s]+)["']?\s*(?:does not exist|not found)/i) ?? errorText.match(/no such table:\s*([^\s,;]+)/i);
419
+ const badTable = tableMatch ? tableMatch[1] : void 0;
420
+ if (badTable && (badTable.startsWith("$") || badTable.includes("{"))) {
421
+ return null;
422
+ }
423
+ const knownTables = SESSION_STORE_TABLES.map((t) => t.name).join(", ");
424
+ return `[token-goat] ${badTable ? `Table ${echoedValue(badTable)} does not exist.` : "Table not found."} Available session store tables: ${knownTables}. Run \`token-goat session-schema\` for schema details.`;
425
+ }
426
+ return null;
427
+ }
428
+ function runSessionSchema(opts) {
429
+ if (!opts.table) {
430
+ process.stdout.write(formatSessionStoreCatalog({ json: opts.json }) + "\n");
431
+ return 0;
432
+ }
433
+ const found = getSessionStoreTable(opts.table);
434
+ if (!found) {
435
+ const avail = SESSION_STORE_TABLES.map((t) => t.name).join(", ");
436
+ process.stderr.write(formatCommandError(new CliError([`Unknown session store table ${echoedValue(opts.table)}. Available tables: ${avail}`, "Run `token-goat session-schema` to see all tables."])) + "\n");
437
+ return 1;
438
+ }
439
+ process.stdout.write(formatSessionStoreTable(found, { json: opts.json }) + "\n");
440
+ return 0;
441
+ }
442
+ async function runDescribe(opts) {
443
+ const result = await describeTarget(opts.target, opts.table, { json: opts.json });
444
+ if (result.exitCode !== 0) {
445
+ process.stderr.write(formatFailedResultText(result.text) + "\n");
446
+ } else {
447
+ process.stdout.write(result.text + "\n");
448
+ }
449
+ return result.exitCode;
450
+ }
451
+ function cmdSessionSchema(table, opts) {
452
+ process.exitCode = runSessionSchema({ table, json: opts?.json });
453
+ }
454
+ async function cmdDescribe(target, table, opts) {
455
+ process.exitCode = await runDescribe({ target, table, json: opts?.json });
456
+ }
457
+
458
+ export {
459
+ diagnoseSqlFailure,
460
+ cmdSessionSchema,
461
+ cmdDescribe
462
+ };
@@ -0,0 +1,111 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ init_define_import_meta_env
5
+ } from "./token-goat-chunk-A37V4PBF.mjs";
6
+
7
+ // src/stdin_json.ts
8
+ init_define_import_meta_env();
9
+ var DEFAULT_STDIN_TIMEOUT_MS = 5e3;
10
+ var FIRST_BYTE_GRACE_FACTOR = 4;
11
+ var IDLE_CONFIRM_MS = 50;
12
+ var MAX_STDIN_WALL_MS = 6e4;
13
+ var MAX_STDIN_BYTES = 64 * 1024 * 1024;
14
+ function completeDocument(chunks) {
15
+ const text = Buffer.concat(chunks).toString("utf8").trim();
16
+ if (!text.startsWith("{") && !text.startsWith("[")) return void 0;
17
+ try {
18
+ const value = JSON.parse(text);
19
+ return typeof value === "object" && value !== null ? { value } : void 0;
20
+ } catch {
21
+ return void 0;
22
+ }
23
+ }
24
+ function readStdinJson(timeoutMs = DEFAULT_STDIN_TIMEOUT_MS, maxBytes = MAX_STDIN_BYTES, firstByteGraceFactor = FIRST_BYTE_GRACE_FACTOR) {
25
+ return new Promise((resolve, reject) => {
26
+ const chunks = [];
27
+ let totalBytes = 0;
28
+ let settled = false;
29
+ const finish = (fn) => {
30
+ if (settled) return;
31
+ settled = true;
32
+ clearTimeout(idleTimer);
33
+ clearTimeout(wallTimer);
34
+ process.stdin.removeListener("data", onData);
35
+ process.stdin.removeListener("end", onEnd);
36
+ process.stdin.removeListener("error", onError);
37
+ fn();
38
+ };
39
+ const confirmSilence = (confirmMs) => {
40
+ const seen = totalBytes;
41
+ const armedAt = performance.now();
42
+ idleTimer = setTimeout(() => {
43
+ setImmediate(() => {
44
+ if (totalBytes !== seen) return;
45
+ if (performance.now() - armedAt > confirmMs * 2) {
46
+ confirmSilence(confirmMs);
47
+ return;
48
+ }
49
+ finish(() => {
50
+ const done = completeDocument(chunks);
51
+ if (done !== void 0) resolve(done.value);
52
+ else reject(new Error("readStdinJson: timed out waiting for stdin"));
53
+ });
54
+ });
55
+ }, confirmMs);
56
+ };
57
+ const armIdle = (ms = timeoutMs) => {
58
+ const confirmMs = Math.min(IDLE_CONFIRM_MS, Math.floor(ms / 2));
59
+ return setTimeout(() => confirmSilence(confirmMs), ms - confirmMs);
60
+ };
61
+ let idleTimer = armIdle(timeoutMs * firstByteGraceFactor);
62
+ const wallTimer = setTimeout(() => {
63
+ finish(() => {
64
+ process.stdin.destroy();
65
+ reject(new Error(`readStdinJson: stdin took longer than ${MAX_STDIN_WALL_MS} ms`));
66
+ });
67
+ }, MAX_STDIN_WALL_MS);
68
+ const onData = (chunk) => {
69
+ clearTimeout(idleTimer);
70
+ idleTimer = armIdle();
71
+ totalBytes += chunk.length;
72
+ if (totalBytes > maxBytes) {
73
+ finish(() => {
74
+ process.stdin.destroy();
75
+ reject(new Error(`readStdinJson: stdin exceeded ${maxBytes} bytes`));
76
+ });
77
+ return;
78
+ }
79
+ chunks.push(chunk);
80
+ };
81
+ const onEnd = () => {
82
+ finish(() => {
83
+ const text = Buffer.concat(chunks).toString("utf8").trim();
84
+ if (text === "") {
85
+ reject(new Error("readStdinJson: empty stdin"));
86
+ return;
87
+ }
88
+ try {
89
+ resolve(JSON.parse(text));
90
+ } catch (err) {
91
+ reject(err instanceof Error ? err : new Error(String(err)));
92
+ }
93
+ });
94
+ };
95
+ const onError = (err) => {
96
+ finish(() => reject(err instanceof Error ? err : new Error(String(err))));
97
+ };
98
+ process.stdin.on("data", onData);
99
+ process.stdin.on("end", onEnd);
100
+ process.stdin.on("error", onError);
101
+ });
102
+ }
103
+
104
+ // src/mcp_tool_pattern.ts
105
+ init_define_import_meta_env();
106
+ var MCP_TOOL_PATTERN = "^mcp__";
107
+
108
+ export {
109
+ readStdinJson,
110
+ MCP_TOOL_PATTERN
111
+ };
@@ -0,0 +1,40 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ evaluateVerification,
5
+ exitStatusIsCheckVerdict,
6
+ isVerificationCommand,
7
+ noteFailedVerificationRun,
8
+ noteVerificationRun
9
+ } from "./token-goat-chunk-2WLPWKHV.mjs";
10
+ import "./token-goat-chunk-WBA5SKT4.mjs";
11
+ import "./token-goat-chunk-KQBLRPBN.mjs";
12
+ import "./token-goat-chunk-4ZBFWLXF.mjs";
13
+ import "./token-goat-chunk-GL3ETKSC.mjs";
14
+ import "./token-goat-chunk-IK2DRMFX.mjs";
15
+ import "./token-goat-chunk-U4WHMG6Y.mjs";
16
+ import "./token-goat-chunk-GVB2MUST.mjs";
17
+ import "./token-goat-chunk-XB5KKOCG.mjs";
18
+ import "./token-goat-chunk-OUKDTVNU.mjs";
19
+ import "./token-goat-chunk-4GILLLWY.mjs";
20
+ import "./token-goat-chunk-XX6O25RN.mjs";
21
+ import "./token-goat-chunk-HAVAOB3S.mjs";
22
+ import "./token-goat-chunk-T5P5ACNQ.mjs";
23
+ import "./token-goat-chunk-7EZTZOMC.mjs";
24
+ import "./token-goat-chunk-QYHO5CPH.mjs";
25
+ import "./token-goat-chunk-4GBVPH3D.mjs";
26
+ import "./token-goat-chunk-YZAAZU2S.mjs";
27
+ import "./token-goat-chunk-IVE6U7KV.mjs";
28
+ import "./token-goat-chunk-HU4TORC5.mjs";
29
+ import "./token-goat-chunk-GGGG7RWB.mjs";
30
+ import "./token-goat-chunk-AM5V6GSX.mjs";
31
+ import "./token-goat-chunk-FNFBKLRD.mjs";
32
+ import "./token-goat-chunk-CO3UYX6G.mjs";
33
+ import "./token-goat-chunk-A37V4PBF.mjs";
34
+ export {
35
+ evaluateVerification,
36
+ exitStatusIsCheckVerdict,
37
+ isVerificationCommand,
38
+ noteFailedVerificationRun,
39
+ noteVerificationRun
40
+ };