@gramatr/mcp 0.7.10 → 0.7.14

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 (99) hide show
  1. package/dist/__mocks__/bun-sqlite.d.ts +35 -0
  2. package/dist/__mocks__/bun-sqlite.d.ts.map +1 -0
  3. package/dist/__mocks__/bun-sqlite.js +89 -0
  4. package/dist/__mocks__/bun-sqlite.js.map +1 -0
  5. package/dist/bin/build-mcpb.d.ts +2 -5
  6. package/dist/bin/build-mcpb.d.ts.map +1 -1
  7. package/dist/bin/build-mcpb.js +20 -43
  8. package/dist/bin/build-mcpb.js.map +1 -1
  9. package/dist/bin/gramatr-mcp.d.ts +10 -2
  10. package/dist/bin/gramatr-mcp.d.ts.map +1 -1
  11. package/dist/bin/gramatr-mcp.js +73 -15
  12. package/dist/bin/gramatr-mcp.js.map +1 -1
  13. package/dist/bin/login.d.ts.map +1 -1
  14. package/dist/bin/login.js +5 -0
  15. package/dist/bin/login.js.map +1 -1
  16. package/dist/bin/setup.d.ts +13 -10
  17. package/dist/bin/setup.d.ts.map +1 -1
  18. package/dist/bin/setup.js +88 -42
  19. package/dist/bin/setup.js.map +1 -1
  20. package/dist/cache/lru-cache.js +1 -1
  21. package/dist/config-runtime.d.ts +13 -0
  22. package/dist/config-runtime.d.ts.map +1 -1
  23. package/dist/config-runtime.js +24 -0
  24. package/dist/config-runtime.js.map +1 -1
  25. package/dist/gramatr +0 -0
  26. package/dist/hooks/input-validator.d.ts.map +1 -1
  27. package/dist/hooks/input-validator.js +27 -9
  28. package/dist/hooks/input-validator.js.map +1 -1
  29. package/dist/hooks/lib/client-runtime.d.ts +7 -0
  30. package/dist/hooks/lib/client-runtime.d.ts.map +1 -0
  31. package/dist/hooks/lib/client-runtime.js +22 -0
  32. package/dist/hooks/lib/client-runtime.js.map +1 -0
  33. package/dist/hooks/lib/hook-state.d.ts +7 -2
  34. package/dist/hooks/lib/hook-state.d.ts.map +1 -1
  35. package/dist/hooks/lib/hook-state.js +56 -35
  36. package/dist/hooks/lib/hook-state.js.map +1 -1
  37. package/dist/hooks/lib/intelligence.d.ts.map +1 -1
  38. package/dist/hooks/lib/intelligence.js +281 -427
  39. package/dist/hooks/lib/intelligence.js.map +1 -1
  40. package/dist/hooks/lib/routing.d.ts +6 -1
  41. package/dist/hooks/lib/routing.d.ts.map +1 -1
  42. package/dist/hooks/lib/routing.js +35 -11
  43. package/dist/hooks/lib/routing.js.map +1 -1
  44. package/dist/hooks/lib/session.d.ts.map +1 -1
  45. package/dist/hooks/lib/session.js +3 -4
  46. package/dist/hooks/lib/session.js.map +1 -1
  47. package/dist/hooks/lib/tool-envelope.d.ts +9 -0
  48. package/dist/hooks/lib/tool-envelope.d.ts.map +1 -0
  49. package/dist/hooks/lib/tool-envelope.js +24 -0
  50. package/dist/hooks/lib/tool-envelope.js.map +1 -0
  51. package/dist/hooks/lib/types.d.ts +7 -0
  52. package/dist/hooks/lib/types.d.ts.map +1 -1
  53. package/dist/hooks/lib/version.d.ts.map +1 -1
  54. package/dist/hooks/lib/version.js +3 -0
  55. package/dist/hooks/lib/version.js.map +1 -1
  56. package/dist/hooks/rating-capture.d.ts.map +1 -1
  57. package/dist/hooks/rating-capture.js +7 -2
  58. package/dist/hooks/rating-capture.js.map +1 -1
  59. package/dist/hooks/session-end.d.ts.map +1 -1
  60. package/dist/hooks/session-end.js +8 -6
  61. package/dist/hooks/session-end.js.map +1 -1
  62. package/dist/hooks/session-start.d.ts.map +1 -1
  63. package/dist/hooks/session-start.js +39 -13
  64. package/dist/hooks/session-start.js.map +1 -1
  65. package/dist/hooks/stop.d.ts.map +1 -1
  66. package/dist/hooks/stop.js +18 -6
  67. package/dist/hooks/stop.js.map +1 -1
  68. package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
  69. package/dist/hooks/user-prompt-submit.js +24 -11
  70. package/dist/hooks/user-prompt-submit.js.map +1 -1
  71. package/dist/intelligence/packet2-fetcher.d.ts +2 -2
  72. package/dist/intelligence/packet2-fetcher.d.ts.map +1 -1
  73. package/dist/intelligence/packet2-fetcher.js +24 -5
  74. package/dist/intelligence/packet2-fetcher.js.map +1 -1
  75. package/dist/intelligence/session-manager.d.ts.map +1 -1
  76. package/dist/intelligence/session-manager.js +25 -1
  77. package/dist/intelligence/session-manager.js.map +1 -1
  78. package/dist/proxy/tool-proxy.d.ts.map +1 -1
  79. package/dist/proxy/tool-proxy.js +57 -11
  80. package/dist/proxy/tool-proxy.js.map +1 -1
  81. package/dist/server/server.d.ts.map +1 -1
  82. package/dist/server/server.js +8 -9
  83. package/dist/server/server.js.map +1 -1
  84. package/dist/setup/instructions.d.ts +2 -2
  85. package/dist/setup/instructions.d.ts.map +1 -1
  86. package/dist/setup/instructions.js +35 -11
  87. package/dist/setup/instructions.js.map +1 -1
  88. package/dist/setup/integrations.d.ts +1 -1
  89. package/dist/setup/integrations.d.ts.map +1 -1
  90. package/dist/setup/integrations.js +7 -4
  91. package/dist/setup/integrations.js.map +1 -1
  92. package/dist/setup/targets.d.ts +1 -1
  93. package/dist/setup/targets.d.ts.map +1 -1
  94. package/dist/setup/targets.js +2 -3
  95. package/dist/setup/targets.js.map +1 -1
  96. package/dist/setup/web-connector.d.ts.map +1 -1
  97. package/dist/setup/web-connector.js +3 -1
  98. package/dist/setup/web-connector.js.map +1 -1
  99. package/package.json +10 -7
@@ -56,7 +56,7 @@ const UNCACHEABLE_TOOLS = new Set([
56
56
  'gramatr_summarize_turn',
57
57
  'gramatr_route_skills',
58
58
  'gramatr_invoke_agent',
59
- 'gramatr_get_enrichment',
59
+ 'gramatr_get_packet_two',
60
60
  'gramatr_competitive_position',
61
61
  'aggregate_stats',
62
62
  ]);
@@ -77,4 +77,17 @@ export declare function isGramatrEnrichEnabledFromEnv(): boolean;
77
77
  * 2. `CLAUDE_MODEL`
78
78
  */
79
79
  export declare function getClaudeModelFromEnv(): string | null;
80
+ /**
81
+ * Packet delivery mode for hook enrichment.
82
+ *
83
+ * - `wait` (default): block briefly for Packet 2 and return merged context
84
+ * - `instant`: return Packet 1 immediately and let the model fetch Packet 2
85
+ */
86
+ export declare function getGramatrPacketModeFromEnv(): 'wait' | 'instant';
87
+ /**
88
+ * Max wait time for Packet 2 readiness in milliseconds.
89
+ *
90
+ * Defaults to 20000ms. Invalid values fall back to default.
91
+ */
92
+ export declare function getGramatrPacket2WaitMsFromEnv(defaultMs?: number): number;
80
93
  //# sourceMappingURL=config-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-runtime.d.ts","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAMtD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAMrD"}
1
+ {"version":3,"file":"config-runtime.d.ts","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAMtD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAMrD;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,SAAS,CAIhE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,SAAQ,GAAG,MAAM,CAKxE"}
@@ -115,4 +115,28 @@ export function getClaudeModelFromEnv() {
115
115
  return claude;
116
116
  return null;
117
117
  }
118
+ /**
119
+ * Packet delivery mode for hook enrichment.
120
+ *
121
+ * - `wait` (default): block briefly for Packet 2 and return merged context
122
+ * - `instant`: return Packet 1 immediately and let the model fetch Packet 2
123
+ */
124
+ export function getGramatrPacketModeFromEnv() {
125
+ const raw = process.env.GRAMATR_PACKET_MODE?.trim().toLowerCase();
126
+ if (raw === 'instant')
127
+ return 'instant';
128
+ return 'wait';
129
+ }
130
+ /**
131
+ * Max wait time for Packet 2 readiness in milliseconds.
132
+ *
133
+ * Defaults to 20000ms. Invalid values fall back to default.
134
+ */
135
+ export function getGramatrPacket2WaitMsFromEnv(defaultMs = 20000) {
136
+ const raw = process.env.GRAMATR_PACKET2_WAIT_MS;
137
+ if (!raw || raw.length === 0)
138
+ return defaultMs;
139
+ const parsed = Number.parseInt(raw, 10);
140
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : defaultMs;
141
+ }
118
142
  //# sourceMappingURL=config-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-runtime.js","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IAC9D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACxC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"config-runtime.js","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"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"}
package/dist/gramatr ADDED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"input-validator.d.ts","sourceRoot":"","sources":["../../src/hooks/input-validator.ts"],"names":[],"mappings":"AAiDA,wBAAsB,qBAAqB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBjF"}
1
+ {"version":3,"file":"input-validator.d.ts","sourceRoot":"","sources":["../../src/hooks/input-validator.ts"],"names":[],"mappings":"AA4EA,wBAAsB,qBAAqB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBjF"}
@@ -18,43 +18,61 @@ function validate(toolName, input) {
18
18
  const shortName = extractToolShortName(toolName);
19
19
  const rules = TOOL_INPUT_RULES[shortName];
20
20
  if (!rules || rules.length === 0)
21
- return { decision: 'allow' };
21
+ return { allow: true };
22
22
  for (const rule of rules) {
23
23
  const value = input[rule.field];
24
24
  if (value === undefined || value === null || value === '') {
25
- return { decision: 'block', reason: `Missing required field "${rule.field}" for ${shortName}. Provide a non-empty value.` };
25
+ return { allow: false, reason: `Missing required field "${rule.field}" for ${shortName}. Provide a non-empty value.` };
26
26
  }
27
27
  if (rule.validValues && typeof value === 'string') {
28
28
  const validSet = rule.field === 'entity_type' ? ENTITY_TYPE_SET : new Set(rule.validValues);
29
29
  if (!validSet.has(value)) {
30
- return { decision: 'block', reason: `Invalid ${rule.field}="${value}" for ${shortName}. Valid values: ${rule.validValues.join(', ')}` };
30
+ return { allow: false, reason: `Invalid ${rule.field}="${value}" for ${shortName}. Valid values: ${rule.validValues.join(', ')}` };
31
31
  }
32
32
  }
33
33
  }
34
34
  if ('entity_type' in input && typeof input.entity_type === 'string' && !ENTITY_TYPE_SET.has(input.entity_type)) {
35
35
  return {
36
- decision: 'block',
36
+ allow: false,
37
37
  reason: `Invalid entity_type="${input.entity_type}". Call gramatr_list_entity_types for the full list.`,
38
38
  };
39
39
  }
40
- return { decision: 'allow' };
40
+ return { allow: true };
41
+ }
42
+ function buildPreToolUseOutput(allow, reason) {
43
+ if (allow) {
44
+ return {
45
+ hookSpecificOutput: {
46
+ hookEventName: 'PreToolUse',
47
+ permissionDecision: 'allow',
48
+ },
49
+ };
50
+ }
51
+ return {
52
+ hookSpecificOutput: {
53
+ hookEventName: 'PreToolUse',
54
+ permissionDecision: 'deny',
55
+ permissionDecisionReason: reason || 'Tool call blocked by gramatr input validation.',
56
+ },
57
+ };
41
58
  }
42
59
  export async function runInputValidatorHook(_args = []) {
43
60
  const raw = await readStdin(2000);
44
61
  if (!raw.trim()) {
45
- process.stdout.write(JSON.stringify({ decision: 'allow' }));
62
+ process.stdout.write(JSON.stringify(buildPreToolUseOutput(true)));
46
63
  return 0;
47
64
  }
48
65
  try {
49
66
  const input = JSON.parse(raw);
50
67
  if (!input.tool_name || !input.tool_input) {
51
- process.stdout.write(JSON.stringify({ decision: 'allow' }));
68
+ process.stdout.write(JSON.stringify(buildPreToolUseOutput(true)));
52
69
  return 0;
53
70
  }
54
- process.stdout.write(JSON.stringify(validate(input.tool_name, input.tool_input)));
71
+ const result = validate(input.tool_name, input.tool_input);
72
+ process.stdout.write(JSON.stringify(buildPreToolUseOutput(result.allow, result.reason)));
55
73
  }
56
74
  catch {
57
- process.stdout.write(JSON.stringify({ decision: 'allow' }));
75
+ process.stdout.write(JSON.stringify(buildPreToolUseOutput(true)));
58
76
  }
59
77
  return 0;
60
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"input-validator.js","sourceRoot":"","sources":["../../src/hooks/input-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-validator.js","sourceRoot":"","sources":["../../src/hooks/input-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAepF,SAAS,SAAS,CAAC,SAAiB;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,KAA8B;IAChE,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,IAAI,CAAC,KAAK,SAAS,SAAS,8BAA8B,EAAE,CAAC;QACzH,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,IAAI,CAAC,KAAK,KAAK,KAAK,SAAS,SAAS,mBAAmB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACrI,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,aAAa,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/G,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,wBAAwB,KAAK,CAAC,WAAW,sDAAsD;SACxG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,MAAe;IAC5D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,kBAAkB,EAAE;gBAClB,aAAa,EAAE,YAAY;gBAC3B,kBAAkB,EAAE,OAAO;aAC5B;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,MAAM;YAC1B,wBAAwB,EAAE,MAAM,IAAI,gDAAgD;SACrF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAkB,EAAE;IAC9D,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface HookClientRuntime {
2
+ clientType: 'claude_code' | 'codex' | 'gemini_cli';
3
+ agentName: 'Claude Code' | 'Codex' | 'Gemini CLI';
4
+ modeFlag: '--claude' | '--codex' | '--gemini';
5
+ }
6
+ export declare function resolveHookClientRuntime(args?: string[]): HookClientRuntime;
7
+ //# sourceMappingURL=client-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/client-runtime.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;IACnD,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;IAClD,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CAC/C;AAED,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,iBAAiB,CAoB/E"}
@@ -0,0 +1,22 @@
1
+ export function resolveHookClientRuntime(args = []) {
2
+ if (args.includes('--codex')) {
3
+ return {
4
+ clientType: 'codex',
5
+ agentName: 'Codex',
6
+ modeFlag: '--codex',
7
+ };
8
+ }
9
+ if (args.includes('--gemini')) {
10
+ return {
11
+ clientType: 'gemini_cli',
12
+ agentName: 'Gemini CLI',
13
+ modeFlag: '--gemini',
14
+ };
15
+ }
16
+ return {
17
+ clientType: 'claude_code',
18
+ agentName: 'Claude Code',
19
+ modeFlag: '--claude',
20
+ };
21
+ }
22
+ //# sourceMappingURL=client-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-runtime.js","sourceRoot":"","sources":["../../../src/hooks/lib/client-runtime.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,wBAAwB,CAAC,OAAiB,EAAE;IAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,SAAS;SACpB,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,UAAU;SACrB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,aAAa;QACxB,QAAQ,EAAE,UAAU;KACrB,CAAC;AACJ,CAAC"}
@@ -114,8 +114,13 @@ export declare function isFilesystemAvailable(): boolean;
114
114
  export declare function hydrateSessionContextFromServer(sessionId: string): Promise<void>;
115
115
  /** Write current project/session context so other hooks can read it. */
116
116
  export declare function setSessionContext(ctx: SessionContext): void;
117
- /** Read the most recently written session context. */
118
- export declare function getSessionContext(): SessionContext | null;
117
+ /**
118
+ * Read session context.
119
+ *
120
+ * Prefer an exact session-id match when provided. Fallback to the most-recent
121
+ * row preserves legacy behavior for callers that do not pass a session id.
122
+ */
123
+ export declare function getSessionContext(sessionId?: string): SessionContext | null;
119
124
  /** Append one turn record. Called once per user-prompt-submit invocation. */
120
125
  export declare function appendTurn(turn: TurnRecord): void;
121
126
  /** Return all turns for a session and delete them atomically. Called at session-end. */
@@ -1 +1 @@
1
- {"version":3,"file":"hook-state.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/hook-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-state.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/hook-state.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,20 @@
7
7
  *
8
8
  * Set GRAMATR_STATE_DB=:memory: in tests to avoid touching the filesystem.
9
9
  */
10
- import Database from 'better-sqlite3';
10
+ import { Database } from 'bun:sqlite';
11
11
  import { existsSync, mkdirSync } from 'node:fs';
12
12
  import { dirname, join } from 'node:path';
13
13
  import { getGramatrDirFromEnv, getHomeDir } from '../../config-runtime.js';
14
14
  // ── DB singleton ──
15
15
  let _db = null;
16
+ /**
17
+ * Prefix all keys of a plain object with @ for bun:sqlite named parameter binding.
18
+ * bun:sqlite requires the param prefix (@, $, :) to be present in the object key,
19
+ * e.g. { '@session_id': val } for a query using @session_id.
20
+ */
21
+ function p(obj) {
22
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => [`@${k}`, v]));
23
+ }
16
24
  /** Set to false if the state DB directory cannot be created or the file cannot be opened. */
17
25
  let _filesystemAvailable = true;
18
26
  function getDbPath() {
@@ -42,8 +50,8 @@ function getDb() {
42
50
  _filesystemAvailable = false;
43
51
  _db = new Database(':memory:');
44
52
  }
45
- _db.pragma('journal_mode = WAL');
46
- _db.pragma('synchronous = NORMAL');
53
+ _db.exec('PRAGMA journal_mode = WAL');
54
+ _db.exec('PRAGMA synchronous = NORMAL');
47
55
  _db.exec(`
48
56
  CREATE TABLE IF NOT EXISTS session_context (
49
57
  session_id TEXT PRIMARY KEY,
@@ -239,7 +247,7 @@ export async function hydrateSessionContextFromServer(sessionId) {
239
247
  // ── Session context — cross-hook IPC ──
240
248
  /** Write current project/session context so other hooks can read it. */
241
249
  export function setSessionContext(ctx) {
242
- getDb().prepare(`
250
+ getDb().query(`
243
251
  INSERT OR REPLACE INTO session_context
244
252
  (session_id, project_id, interaction_id, entity_id, project_name, git_root,
245
253
  git_branch, git_remote, working_directory, session_start, updated_at,
@@ -248,55 +256,68 @@ export function setSessionContext(ctx) {
248
256
  (@session_id, @project_id, @interaction_id, @entity_id, @project_name, @git_root,
249
257
  @git_branch, @git_remote, @working_directory, @session_start, @updated_at,
250
258
  @client_type, @agent_name)
251
- `).run(ctx);
259
+ `).run(p(ctx));
252
260
  }
253
- /** Read the most recently written session context. */
254
- export function getSessionContext() {
255
- const row = getDb()
256
- .prepare('SELECT * FROM session_context ORDER BY updated_at DESC LIMIT 1')
261
+ /**
262
+ * Read session context.
263
+ *
264
+ * Prefer an exact session-id match when provided. Fallback to the most-recent
265
+ * row preserves legacy behavior for callers that do not pass a session id.
266
+ */
267
+ export function getSessionContext(sessionId) {
268
+ const db = getDb();
269
+ if (sessionId && sessionId !== 'unknown') {
270
+ const scoped = db
271
+ .query('SELECT * FROM session_context WHERE session_id = ? ORDER BY updated_at DESC LIMIT 1')
272
+ .get(sessionId);
273
+ if (scoped)
274
+ return scoped;
275
+ }
276
+ const row = db
277
+ .query('SELECT * FROM session_context ORDER BY updated_at DESC LIMIT 1')
257
278
  .get();
258
279
  return row ?? null;
259
280
  }
260
281
  // ── Turns — per-prompt metadata accumulated across user-prompt-submit calls ──
261
282
  /** Append one turn record. Called once per user-prompt-submit invocation. */
262
283
  export function appendTurn(turn) {
263
- getDb().prepare(`
284
+ getDb().query(`
264
285
  INSERT INTO turns
265
286
  (session_id, turn_number, timestamp, prompt, effort_level, intent_type, confidence, tokens_saved)
266
287
  VALUES
267
288
  (@session_id, @turn_number, @timestamp, @prompt, @effort_level, @intent_type, @confidence, @tokens_saved)
268
- `).run(turn);
289
+ `).run(p(turn));
269
290
  }
270
291
  /** Return all turns for a session and delete them atomically. Called at session-end. */
271
292
  export function flushTurns(sessionId) {
272
293
  const db = getDb();
273
294
  const rows = db
274
- .prepare('SELECT * FROM turns WHERE session_id = ? ORDER BY id')
295
+ .query('SELECT * FROM turns WHERE session_id = ? ORDER BY id')
275
296
  .all(sessionId);
276
- db.prepare('DELETE FROM turns WHERE session_id = ?').run(sessionId);
297
+ db.query('DELETE FROM turns WHERE session_id = ?').run(sessionId);
277
298
  return rows;
278
299
  }
279
300
  // ── Op history — tool call log accumulated per session ──
280
301
  /** Append one op record. Called once per gramatr tool call. */
281
302
  export function appendOpHistory(op) {
282
- getDb().prepare(`
303
+ getDb().query(`
283
304
  INSERT INTO op_history (session_id, tool, time_ms, tokens_saved, timestamp)
284
305
  VALUES (@session_id, @tool, @time_ms, @tokens_saved, @timestamp)
285
- `).run(op);
306
+ `).run(p(op));
286
307
  }
287
308
  /** Return all op records for a session and delete them atomically. Called at session-end. */
288
309
  export function flushOpHistory(sessionId) {
289
310
  const db = getDb();
290
311
  const rows = db
291
- .prepare('SELECT * FROM op_history WHERE session_id = ? ORDER BY id')
312
+ .query('SELECT * FROM op_history WHERE session_id = ? ORDER BY id')
292
313
  .all(sessionId);
293
- db.prepare('DELETE FROM op_history WHERE session_id = ?').run(sessionId);
314
+ db.query('DELETE FROM op_history WHERE session_id = ?').run(sessionId);
294
315
  return rows;
295
316
  }
296
317
  // ── Latest classification — for statusline display and feedback ──
297
318
  /** Overwrite the latest classification result for a session. */
298
319
  export function setLatestClassification(record) {
299
- getDb().prepare(`
320
+ getDb().query(`
300
321
  INSERT OR REPLACE INTO latest_classification
301
322
  (session_id, classifier_model, classifier_time_ms, tokens_saved, savings_ratio,
302
323
  effort, intent, confidence, memory_delivered, downstream_model,
@@ -309,15 +330,15 @@ export function setLatestClassification(record) {
309
330
  @server_version, @stage_timing, @recorded_at,
310
331
  @original_prompt, @pending_feedback, @feedback_submitted_at,
311
332
  @client_type, @agent_name, @memory_tier, @memory_scope)
312
- `).run({
333
+ `).run(p({
313
334
  ...record,
314
335
  pending_feedback: record.pending_feedback ? 1 : 0,
315
- });
336
+ }));
316
337
  }
317
338
  /** Read the latest classification record for a session. */
318
339
  export function getLatestClassification(sessionId) {
319
340
  const row = getDb()
320
- .prepare('SELECT * FROM latest_classification WHERE session_id = ?')
341
+ .query('SELECT * FROM latest_classification WHERE session_id = ?')
321
342
  .get(sessionId);
322
343
  if (!row)
323
344
  return null;
@@ -326,7 +347,7 @@ export function getLatestClassification(sessionId) {
326
347
  /** Mark pending feedback as submitted for a session. */
327
348
  export function markClassificationFeedbackSubmitted(sessionId, submittedAt) {
328
349
  const ts = submittedAt ?? new Date().toISOString();
329
- getDb().prepare(`
350
+ getDb().query(`
330
351
  UPDATE latest_classification
331
352
  SET pending_feedback = 0, feedback_submitted_at = ?
332
353
  WHERE session_id = ?
@@ -335,14 +356,14 @@ export function markClassificationFeedbackSubmitted(sessionId, submittedAt) {
335
356
  // ── Session log — persistent history across sessions ──
336
357
  /** Append a session-end entry. Replaces session-history.log + last-session-commits.txt. */
337
358
  export function appendSessionLog(entry) {
338
- getDb().prepare(`
359
+ getDb().query(`
339
360
  INSERT INTO session_log
340
361
  (session_id, project_id, ended_at, reason, commit_log,
341
362
  interaction_id, entity_id, client_type, agent_name, synced_at)
342
363
  VALUES
343
364
  (@session_id, @project_id, @ended_at, @reason, @commit_log,
344
365
  @interaction_id, @entity_id, @client_type, @agent_name, @synced_at)
345
- `).run(entry);
366
+ `).run(p(entry));
346
367
  }
347
368
  /**
348
369
  * Return the most recent session log entry for a project.
@@ -350,7 +371,7 @@ export function appendSessionLog(entry) {
350
371
  */
351
372
  export function getLastSessionForProject(projectId) {
352
373
  const row = getDb()
353
- .prepare(`
374
+ .query(`
354
375
  SELECT session_id, interaction_id, entity_id, client_type, agent_name, ended_at
355
376
  FROM session_log
356
377
  WHERE project_id = ?
@@ -363,7 +384,7 @@ export function getLastSessionForProject(projectId) {
363
384
  /** Return the commit log from the most recent session that had commits. */
364
385
  export function getLastSessionCommits() {
365
386
  const row = getDb()
366
- .prepare('SELECT commit_log FROM session_log WHERE commit_log IS NOT NULL ORDER BY id DESC LIMIT 1')
387
+ .query('SELECT commit_log FROM session_log WHERE commit_log IS NOT NULL ORDER BY id DESC LIMIT 1')
367
388
  .get();
368
389
  return row?.commit_log ?? null;
369
390
  }
@@ -376,7 +397,7 @@ export function upsertSessionsFromServer(sessions) {
376
397
  if (sessions.length === 0)
377
398
  return;
378
399
  const syncedAt = new Date().toISOString();
379
- const stmt = getDb().prepare(`
400
+ const stmt = getDb().query(`
380
401
  INSERT OR IGNORE INTO session_log
381
402
  (session_id, project_id, ended_at, reason, commit_log,
382
403
  interaction_id, entity_id, client_type, agent_name, synced_at)
@@ -385,7 +406,7 @@ export function upsertSessionsFromServer(sessions) {
385
406
  @interaction_id, @entity_id, @client_type, @agent_name, @synced_at)
386
407
  `);
387
408
  for (const s of sessions) {
388
- stmt.run({
409
+ stmt.run(p({
389
410
  session_id: s.client_session_id ?? s.id,
390
411
  project_id: null,
391
412
  ended_at: s.ended_at ?? null,
@@ -396,7 +417,7 @@ export function upsertSessionsFromServer(sessions) {
396
417
  client_type: s.client_type ?? null,
397
418
  agent_name: s.agent_name ?? null,
398
419
  synced_at: syncedAt,
399
- });
420
+ }));
400
421
  }
401
422
  }
402
423
  /**
@@ -408,22 +429,22 @@ export function upsertSessionsFromServer(sessions) {
408
429
  export function migrateProjectId(oldProjectId, newProjectId) {
409
430
  if (oldProjectId === newProjectId)
410
431
  return 0;
411
- const result = getDb()
412
- .prepare('UPDATE session_log SET project_id = ? WHERE project_id = ?')
413
- .run(newProjectId, oldProjectId);
414
- return result.changes;
432
+ const db = getDb();
433
+ db.query('UPDATE session_log SET project_id = ? WHERE project_id = ?').run(newProjectId, oldProjectId);
434
+ const row = db.query('SELECT changes() as changes').get();
435
+ return row?.changes ?? 0;
415
436
  }
416
437
  /** Mark a local session as synced to the server after a successful session-end call. */
417
438
  export function markSessionSynced(sessionId, syncedAt) {
418
439
  const ts = syncedAt ?? new Date().toISOString();
419
440
  getDb()
420
- .prepare('UPDATE session_log SET synced_at = ? WHERE session_id = ?')
441
+ .query('UPDATE session_log SET synced_at = ? WHERE session_id = ?')
421
442
  .run(ts, sessionId);
422
443
  }
423
444
  /** Count total sessions for a project (for "Session #N" display). */
424
445
  export function getProjectSessionCount(projectId) {
425
446
  const row = getDb()
426
- .prepare('SELECT COUNT(*) as cnt FROM session_log WHERE project_id = ?')
447
+ .query('SELECT COUNT(*) as cnt FROM session_log WHERE project_id = ?')
427
448
  .get(projectId);
428
449
  return row?.cnt ?? 0;
429
450
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hook-state.js","sourceRoot":"","sources":["../../../src/hooks/lib/hook-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-state.js","sourceRoot":"","sources":["../../../src/hooks/lib/hook-state.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,CAAC;IACxF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CA2CnE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACzC,IAAI,CAmBN;AASD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC1C,MAAM,CA2ZR;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,aAAa,GAAG,IAAI,GAChC,IAAI,CA8BN"}
1
+ {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,CAAC;IACxF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAgHF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAuBnE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACzC,IAAI,CAmBN;AA4ID,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC1C,MAAM,CAmGR;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,aAAa,GAAG,IAAI,GAChC,IAAI,CA8BN"}