@intutic/shared-types 2.2.0 → 2.4.0

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 (202) hide show
  1. package/dist/anomaly.d.ts +6 -10
  2. package/dist/anomaly.d.ts.map +1 -1
  3. package/dist/anomaly.js +0 -2
  4. package/dist/anomaly.js.map +1 -1
  5. package/dist/api-contracts.d.ts +1 -1
  6. package/dist/api-contracts.js +1 -1
  7. package/dist/attenuation.d.ts +1 -1
  8. package/dist/attenuation.js +1 -1
  9. package/dist/auth.d.ts +116 -9
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +20 -5
  12. package/dist/auth.js.map +1 -1
  13. package/dist/billing.d.ts +1 -1
  14. package/dist/billing.js +1 -1
  15. package/dist/cloudProbe.d.ts +54 -0
  16. package/dist/cloudProbe.d.ts.map +1 -0
  17. package/dist/cloudProbe.js +254 -0
  18. package/dist/cloudProbe.js.map +1 -0
  19. package/dist/destructiveSql.d.ts +48 -0
  20. package/dist/destructiveSql.d.ts.map +1 -0
  21. package/dist/destructiveSql.js +43 -0
  22. package/dist/destructiveSql.js.map +1 -0
  23. package/dist/devInventory.d.ts +120 -0
  24. package/dist/devInventory.d.ts.map +1 -0
  25. package/dist/devInventory.js +80 -0
  26. package/dist/devInventory.js.map +1 -0
  27. package/dist/enums.d.ts +66 -21
  28. package/dist/enums.d.ts.map +1 -1
  29. package/dist/enums.js +55 -31
  30. package/dist/enums.js.map +1 -1
  31. package/dist/errors.js +3 -3
  32. package/dist/errors.js.map +1 -1
  33. package/dist/finops.d.ts +52 -2
  34. package/dist/finops.d.ts.map +1 -1
  35. package/dist/finops.js +15 -1
  36. package/dist/finops.js.map +1 -1
  37. package/dist/gateDecisions.d.ts +18 -0
  38. package/dist/gateDecisions.d.ts.map +1 -0
  39. package/dist/gateDecisions.js +20 -0
  40. package/dist/gateDecisions.js.map +1 -0
  41. package/dist/gateIdentity.d.ts +23 -0
  42. package/dist/gateIdentity.d.ts.map +1 -0
  43. package/dist/gateIdentity.js +32 -0
  44. package/dist/gateIdentity.js.map +1 -0
  45. package/dist/gateKind.d.ts +172 -0
  46. package/dist/gateKind.d.ts.map +1 -0
  47. package/dist/gateKind.js +160 -0
  48. package/dist/gateKind.js.map +1 -0
  49. package/dist/gateLimits.d.ts +170 -0
  50. package/dist/gateLimits.d.ts.map +1 -0
  51. package/dist/gateLimits.js +96 -0
  52. package/dist/gateLimits.js.map +1 -0
  53. package/dist/gitRemote.d.ts +17 -0
  54. package/dist/gitRemote.d.ts.map +1 -0
  55. package/dist/gitRemote.js +71 -0
  56. package/dist/gitRemote.js.map +1 -0
  57. package/dist/governanceCoverage.d.ts +1 -1
  58. package/dist/governanceCoverage.js +1 -1
  59. package/dist/guardrailIr.d.ts +9 -9
  60. package/dist/guardrailIr.d.ts.map +1 -1
  61. package/dist/guardrailIr.js +3 -3
  62. package/dist/guardrailIr.js.map +1 -1
  63. package/dist/guardrailRender.d.ts +1 -1
  64. package/dist/guardrailRender.js +1 -1
  65. package/dist/harnessRules.d.ts +74 -0
  66. package/dist/harnessRules.d.ts.map +1 -0
  67. package/dist/harnessRules.js +142 -0
  68. package/dist/harnessRules.js.map +1 -0
  69. package/dist/holdMessages.d.ts +25 -0
  70. package/dist/holdMessages.d.ts.map +1 -0
  71. package/dist/holdMessages.js +34 -0
  72. package/dist/holdMessages.js.map +1 -0
  73. package/dist/identity.d.ts +1 -1
  74. package/dist/identity.js +2 -2
  75. package/dist/identity.js.map +1 -1
  76. package/dist/index.d.ts +42 -9
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +161 -10
  79. package/dist/index.js.map +1 -1
  80. package/dist/intelligence.d.ts +1 -1
  81. package/dist/mcpBudgets.d.ts +191 -0
  82. package/dist/mcpBudgets.d.ts.map +1 -0
  83. package/dist/mcpBudgets.js +144 -0
  84. package/dist/mcpBudgets.js.map +1 -0
  85. package/dist/mcpRegistryRecord.d.ts +143 -0
  86. package/dist/mcpRegistryRecord.d.ts.map +1 -0
  87. package/dist/mcpRegistryRecord.js +229 -0
  88. package/dist/mcpRegistryRecord.js.map +1 -0
  89. package/dist/mcpToolRisk.d.ts +82 -0
  90. package/dist/mcpToolRisk.d.ts.map +1 -0
  91. package/dist/mcpToolRisk.js +334 -0
  92. package/dist/mcpToolRisk.js.map +1 -0
  93. package/dist/modelCatalog.d.ts +2 -2
  94. package/dist/modelCatalog.generated.js +1 -1
  95. package/dist/modelCatalog.generated.js.map +1 -1
  96. package/dist/modelCatalog.js +2 -2
  97. package/dist/notifications.d.ts +24 -151
  98. package/dist/notifications.d.ts.map +1 -1
  99. package/dist/notifications.js +266 -1
  100. package/dist/notifications.js.map +1 -1
  101. package/dist/phrases.d.ts +87 -0
  102. package/dist/phrases.d.ts.map +1 -0
  103. package/dist/phrases.js +241 -0
  104. package/dist/phrases.js.map +1 -0
  105. package/dist/piiDetectors.d.ts +97 -0
  106. package/dist/piiDetectors.d.ts.map +1 -0
  107. package/dist/piiDetectors.js +96 -0
  108. package/dist/piiDetectors.js.map +1 -0
  109. package/dist/piiDetectors.json +71 -0
  110. package/dist/policy.d.ts +1 -1
  111. package/dist/policy.js +1 -1
  112. package/dist/policyGuardrails.d.ts +127 -10
  113. package/dist/policyGuardrails.d.ts.map +1 -1
  114. package/dist/policyGuardrails.js +59 -6
  115. package/dist/policyGuardrails.js.map +1 -1
  116. package/dist/posturePresets.js +1 -1
  117. package/dist/posturePresets.js.map +1 -1
  118. package/dist/providerVerification.d.ts +36 -10
  119. package/dist/providerVerification.d.ts.map +1 -1
  120. package/dist/providerVerification.js +80 -20
  121. package/dist/providerVerification.js.map +1 -1
  122. package/dist/providers.d.ts +54 -17
  123. package/dist/providers.d.ts.map +1 -1
  124. package/dist/providers.js +135 -26
  125. package/dist/providers.js.map +1 -1
  126. package/dist/regoBuiltins.d.ts +42 -0
  127. package/dist/regoBuiltins.d.ts.map +1 -0
  128. package/dist/regoBuiltins.js +732 -0
  129. package/dist/regoBuiltins.js.map +1 -0
  130. package/dist/regoRules.d.ts +105 -0
  131. package/dist/regoRules.d.ts.map +1 -0
  132. package/dist/regoRules.js +407 -0
  133. package/dist/regoRules.js.map +1 -0
  134. package/dist/ruleLoadFailures.d.ts +15 -0
  135. package/dist/ruleLoadFailures.d.ts.map +1 -0
  136. package/dist/ruleLoadFailures.js +26 -0
  137. package/dist/ruleLoadFailures.js.map +1 -0
  138. package/dist/scriptScan.d.ts +5 -5
  139. package/dist/scriptScan.js +3 -3
  140. package/dist/sequence.d.ts +52 -0
  141. package/dist/sequence.d.ts.map +1 -0
  142. package/dist/sequence.js +127 -0
  143. package/dist/sequence.js.map +1 -0
  144. package/dist/session.d.ts +1 -1
  145. package/dist/session.js +1 -1
  146. package/dist/skillScan.d.ts +3 -3
  147. package/dist/skillScan.d.ts.map +1 -1
  148. package/dist/skillScan.js +26 -4
  149. package/dist/skillScan.js.map +1 -1
  150. package/dist/sop.d.ts +5 -5
  151. package/dist/sop.js +2 -2
  152. package/dist/sourceProviders.d.ts +1 -8
  153. package/dist/sourceProviders.d.ts.map +1 -1
  154. package/dist/sourceProviders.js +2 -9
  155. package/dist/sourceProviders.js.map +1 -1
  156. package/dist/spendBudgets.d.ts +122 -0
  157. package/dist/spendBudgets.d.ts.map +1 -0
  158. package/dist/spendBudgets.js +92 -0
  159. package/dist/spendBudgets.js.map +1 -0
  160. package/dist/ssoGroupClearance.d.ts +18 -2
  161. package/dist/ssoGroupClearance.d.ts.map +1 -1
  162. package/dist/ssoGroupClearance.js +43 -4
  163. package/dist/ssoGroupClearance.js.map +1 -1
  164. package/dist/sync.d.ts +0 -1
  165. package/dist/sync.d.ts.map +1 -1
  166. package/dist/sync.js +0 -1
  167. package/dist/sync.js.map +1 -1
  168. package/dist/taskManagement.d.ts +0 -2
  169. package/dist/taskManagement.d.ts.map +1 -1
  170. package/dist/taskManagement.js +0 -2
  171. package/dist/taskManagement.js.map +1 -1
  172. package/dist/toolPoison.d.ts +33 -0
  173. package/dist/toolPoison.d.ts.map +1 -0
  174. package/dist/toolPoison.js +85 -0
  175. package/dist/toolPoison.js.map +1 -0
  176. package/dist/upstreamRetry.d.ts +121 -0
  177. package/dist/upstreamRetry.d.ts.map +1 -0
  178. package/dist/upstreamRetry.js +90 -0
  179. package/dist/upstreamRetry.js.map +1 -0
  180. package/dist/usage.d.ts +186 -0
  181. package/dist/usage.d.ts.map +1 -1
  182. package/dist/wasmBinary.d.ts +25 -0
  183. package/dist/wasmBinary.d.ts.map +1 -0
  184. package/dist/wasmBinary.js +111 -0
  185. package/dist/wasmBinary.js.map +1 -0
  186. package/dist/wasmFuel.d.ts +52 -0
  187. package/dist/wasmFuel.d.ts.map +1 -0
  188. package/dist/wasmFuel.js +320 -0
  189. package/dist/wasmFuel.js.map +1 -0
  190. package/dist/wasmMemoryCap.d.ts +21 -0
  191. package/dist/wasmMemoryCap.d.ts.map +1 -0
  192. package/dist/wasmMemoryCap.js +58 -0
  193. package/dist/wasmMemoryCap.js.map +1 -0
  194. package/dist/wasmRuleDescriptor.d.ts +43 -0
  195. package/dist/wasmRuleDescriptor.d.ts.map +1 -0
  196. package/dist/wasmRuleDescriptor.js +65 -0
  197. package/dist/wasmRuleDescriptor.js.map +1 -0
  198. package/dist/workspaceSettings.d.ts +95 -17
  199. package/dist/workspaceSettings.d.ts.map +1 -1
  200. package/dist/workspaceSettings.js +2 -1
  201. package/dist/workspaceSettings.js.map +1 -1
  202. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"finops.d.ts","sourceRoot":"","sources":["../src/finops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finops.d.ts","sourceRoot":"","sources":["../src/finops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AAInB;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAI7C;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IAEf,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;IAEjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAA;IAEjB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IAEjB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAA;IAGxB,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAA;IAEtB,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAA;IAEzB,kCAAkC;IAClC,WAAW,EAAE,WAAW,CAAA;IAExB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAA;IAGvB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IAEtB;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAE7B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IAGpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAA;IAElB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAA;IAErB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAA;IAGlB,oDAAoD;IACpD,YAAY,EAAE,YAAY,CAAA;IAE1B,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAA;IAGzB,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAA;IAEvB,+CAA+C;IAC/C,iBAAiB,EAAE,iBAAiB,CAAA;IAGpC,qCAAqC;IACrC,eAAe,EAAE,WAAW,GAAG,IAAI,CAAA;IAEnC,oDAAoD;IACpD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;IAErC,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAGhD,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAG9C,8CAA8C;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAG1C,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAA;IAEjB,oCAAoC;IACpC,eAAe,EAAE,MAAM,CAAA;IAGvB,uDAAuD;IACvD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAEpD,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACrD;AAID;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAA;IAEf,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAA;IAElB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAA;IAEf,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAA;CACrB;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAEhB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IAEnB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAID,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,iBAAiB,GAAG,MAAM,CAAA;IAC7C,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5C,0GAA0G;IAC1G,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,8GAA8G;IAC9G,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,0FAA0F;AAC1F,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,mGAAmG;IACnG,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,WAAW,GAAG,MAAM,CAAA;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,yFAAyF;IACzF,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,YAAY,EAAE,YAAY,GAAG,MAAM,CAAA;IACnC,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,iBAAiB,GAAG,MAAM,CAAA;IAC7C,eAAe,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5C,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAA;IACpC,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAA;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAA;IAC3C,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,0GAA0G;IAC1G,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAA;IAC7C,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IACnF,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAA;IAClD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB"}
package/dist/finops.js CHANGED
@@ -4,11 +4,25 @@
4
4
  *
5
5
  * These types correspond to the `execution_traces` table and the
6
6
  * `finops_attribution_4d` materialized view defined in
7
- * LLD 01-data-architecture §3.1.
7
+ * the data-architecture schema.
8
8
  *
9
9
  * HLD §3.6 (FinOps Ledger), §3.19 (4D Attribution)
10
10
  *
11
11
  * @module
12
12
  */
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.DEFAULT_MONTHLY_BUDGET_USD = exports.DEFAULT_DAILY_BUDGET_USD = void 0;
15
+ // ─── Workspace spend caps ────────────────────────────────────────────
16
+ /**
17
+ * The daily spend cap, in USD, of a workspace that has never saved one. A
18
+ * hard cap: the proxy refuses a request that would take the day's spend over
19
+ * it (`429 BUDGET_EXCEEDED`). An owner or admin changes it on Settings ›
20
+ * Billing › Budget Limits or with `PUT /api/v1/budget`.
21
+ */
22
+ exports.DEFAULT_DAILY_BUDGET_USD = 100;
23
+ /**
24
+ * The monthly cap, in USD, of a workspace that has never saved one. Alerts
25
+ * only: reaching it raises budget alerts and refuses nothing.
26
+ */
27
+ exports.DEFAULT_MONTHLY_BUDGET_USD = 500;
14
28
  //# sourceMappingURL=finops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"finops.js","sourceRoot":"","sources":["../src/finops.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"finops.js","sourceRoot":"","sources":["../src/finops.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AASH,wEAAwE;AAExE;;;;;GAKG;AACU,QAAA,wBAAwB,GAAG,GAAG,CAAA;AAE3C;;;GAGG;AACU,QAAA,0BAA0B,GAAG,GAAG,CAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The verdicts a gate decision records (the SIEM `gate_decisions` source),
3
+ * and what each means. Every one is a gate's verdict on a tool call except
4
+ * `TAMPER`, the verdict on the gate's own files.
5
+ *
6
+ * @module
7
+ */
8
+ export declare const GATE_DECISION_VERDICTS: {
9
+ readonly ALLOW: "the call ran";
10
+ readonly BLOCK: "the call was refused";
11
+ readonly FLAG: "the call ran, flagged by an advisory rule";
12
+ readonly WOULD_BLOCK: "the call ran; a shadow rule would have refused it";
13
+ readonly HOLD: "the call waits for a reviewer";
14
+ readonly BYPASS_APPROVED: "the call ran on an approved hold";
15
+ readonly TAMPER: "a governance file (a gate, a hook registration, the policy snapshot, a VS Code hook setting) changed outside the sync daemon, which restored it";
16
+ };
17
+ export type GateDecisionVerdict = keyof typeof GATE_DECISION_VERDICTS;
18
+ //# sourceMappingURL=gateDecisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateDecisions.d.ts","sourceRoot":"","sources":["../src/gateDecisions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;CAQzB,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,sBAAsB,CAAA"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * The verdicts a gate decision records (the SIEM `gate_decisions` source),
4
+ * and what each means. Every one is a gate's verdict on a tool call except
5
+ * `TAMPER`, the verdict on the gate's own files.
6
+ *
7
+ * @module
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.GATE_DECISION_VERDICTS = void 0;
11
+ exports.GATE_DECISION_VERDICTS = {
12
+ ALLOW: 'the call ran',
13
+ BLOCK: 'the call was refused',
14
+ FLAG: 'the call ran, flagged by an advisory rule',
15
+ WOULD_BLOCK: 'the call ran; a shadow rule would have refused it',
16
+ HOLD: 'the call waits for a reviewer',
17
+ BYPASS_APPROVED: 'the call ran on an approved hold',
18
+ TAMPER: 'a governance file (a gate, a hook registration, the policy snapshot, a VS Code hook setting) changed outside the sync daemon, which restored it',
19
+ };
20
+ //# sourceMappingURL=gateDecisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateDecisions.js","sourceRoot":"","sources":["../src/gateDecisions.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEU,QAAA,sBAAsB,GAAG;IACpC,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,sBAAsB;IAC7B,IAAI,EAAE,2CAA2C;IACjD,WAAW,EAAE,mDAAmD;IAChE,IAAI,EAAE,+BAA+B;IACrC,eAAe,EAAE,kCAAkC;IACnD,MAAM,EAAE,iJAAiJ;CACjJ,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Which gate an event came from, for the one harness that installs two.
3
+ *
4
+ * A harness is one `HarnessType`: one integration that `intutic connect` sets
5
+ * up, and the unit the harness count counts. Its gate reports under the same
6
+ * id, in hook events (`harnessType`), agent reports, the AI inventory and the
7
+ * SIEM export. `antigravity` is the exception: the integration installs
8
+ * Google Antigravity's `PreToolUse` gate and Gemini CLI's `BeforeTool` gate,
9
+ * for two products a machine may have together or apart. Each reports under
10
+ * its own gate id, `antigravity` and `gemini-cli`, so the silent-gate check
11
+ * expects only the gate of the product that is there, and the inventory and
12
+ * SIEM say which product a call came through. The harness, its rules file and
13
+ * its count stay one.
14
+ *
15
+ * @module
16
+ */
17
+ /** The gate id Gemini CLI's gate reports under. */
18
+ export declare const GEMINI_CLI_GATE_ID = "gemini-cli";
19
+ /** The gate ids a harness's gates report under: its own id, or two for `antigravity`. */
20
+ export declare function gateIdentitiesOf(harness: string): readonly string[];
21
+ /** The harness a gate id belongs to. */
22
+ export declare function harnessOfGate(gateId: string): string;
23
+ //# sourceMappingURL=gateIdentity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateIdentity.d.ts","sourceRoot":"","sources":["../src/gateIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,eAAe,CAAA;AAE9C,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEnE;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Which gate an event came from, for the one harness that installs two.
4
+ *
5
+ * A harness is one `HarnessType`: one integration that `intutic connect` sets
6
+ * up, and the unit the harness count counts. Its gate reports under the same
7
+ * id, in hook events (`harnessType`), agent reports, the AI inventory and the
8
+ * SIEM export. `antigravity` is the exception: the integration installs
9
+ * Google Antigravity's `PreToolUse` gate and Gemini CLI's `BeforeTool` gate,
10
+ * for two products a machine may have together or apart. Each reports under
11
+ * its own gate id, `antigravity` and `gemini-cli`, so the silent-gate check
12
+ * expects only the gate of the product that is there, and the inventory and
13
+ * SIEM say which product a call came through. The harness, its rules file and
14
+ * its count stay one.
15
+ *
16
+ * @module
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.GEMINI_CLI_GATE_ID = void 0;
20
+ exports.gateIdentitiesOf = gateIdentitiesOf;
21
+ exports.harnessOfGate = harnessOfGate;
22
+ /** The gate id Gemini CLI's gate reports under. */
23
+ exports.GEMINI_CLI_GATE_ID = 'gemini-cli';
24
+ /** The gate ids a harness's gates report under: its own id, or two for `antigravity`. */
25
+ function gateIdentitiesOf(harness) {
26
+ return harness === 'antigravity' ? ['antigravity', exports.GEMINI_CLI_GATE_ID] : [harness];
27
+ }
28
+ /** The harness a gate id belongs to. */
29
+ function harnessOfGate(gateId) {
30
+ return gateId === exports.GEMINI_CLI_GATE_ID ? 'antigravity' : gateId;
31
+ }
32
+ //# sourceMappingURL=gateIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateIdentity.js","sourceRoot":"","sources":["../src/gateIdentity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAMH,4CAEC;AAGD,sCAEC;AAXD,mDAAmD;AACtC,QAAA,kBAAkB,GAAG,YAAY,CAAA;AAE9C,yFAAyF;AACzF,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,OAAO,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,0BAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACpF,CAAC;AAED,wCAAwC;AACxC,SAAgB,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,KAAK,0BAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * gateKind.ts — classifies each harness by HOW its tool calls get governed:
3
+ * for the sync daemon's agent report (`agentReporter.ts`'s `guardrails`
4
+ * facet) and AI inventory, and for the control plane's silent-gate check,
5
+ * which expects a gate only from a harness that has one of its own.
6
+ *
7
+ * # Why this exists
8
+ *
9
+ * `collectAgentReport` used to report `hook_gate: true` unconditionally for
10
+ * every harness, with the comment "the daemon writes the hook gate for every
11
+ * harness it supports." That was already false for `langgraph` — which has
12
+ * no on-disk hook, only the SDK-side `intutic_clawde.gate` — and for `aider`,
13
+ * whose only NO_GATE-registered mechanism is a post-edit, /run-blind
14
+ * pre-commit hook (see `aiderConfigMerger.ts`'s NO_GATE row in
15
+ * `__tests__/harness/gateRegistry.ts`). Wave 1 adds eight more SDK-gated
16
+ * harnesses, which would have made the lie eight times larger without this
17
+ * fix.
18
+ *
19
+ * # What this does NOT do
20
+ *
21
+ * This does not verify that a user actually pip-installed `intutic-clawde`
22
+ * and wired `guard_tools`/`IntuticMiddleware`/etc. into their process — the
23
+ * daemon cannot observe another process's imports, the same way it cannot
24
+ * observe whether a written hook file was left executable. It only reports
25
+ * which MECHANISM this harness's governance model uses (a file the daemon
26
+ * itself writes and can verify existence of, vs. an SDK the harness's own
27
+ * process must import), matching the trust level `hook_gate: true` already
28
+ * carried for file-based harnesses before this fix.
29
+ *
30
+ * # Keeping this in sync with the gate registry
31
+ *
32
+ * `services/sync-daemon/__tests__/harness/gateRegistry.ts` (the GATES/NO_GATE
33
+ * completeness registry exercised by `generatedGateBehaviour.test.ts`) is the
34
+ * authoritative decision per harness, but it is a test-only module (it
35
+ * dynamically imports every writer's compiled `.js` from a temp build dir)
36
+ * and must not be imported from daemon runtime code. `services/sync-daemon/__tests__/harness/gateKind.test.ts`
37
+ * cross-checks the two lists so this file cannot silently drift from that
38
+ * registry's own NO_GATE rows: `file: null` harnesses split between 'sdk'
39
+ * (LangGraph + the Python frameworks — the gate ships in intutic-clawde),
40
+ * 'delegated' (xirp — the gate is whichever wrapped harness's own gate is
41
+ * running), and 'bridge' (trueforge-server — the gate runs in a separate
42
+ * Intutic-operated service, not in any process this repo's writers touch),
43
+ * and 'none' (roo-code, claude-desktop — no hook system); the one non-null
44
+ * row (aiderConfigMerger.ts, "no ... exists") is 'none' too.
45
+ *
46
+ * @module
47
+ */
48
+ import { type HarnessType as HarnessTypeT } from './enums.js';
49
+ /**
50
+ * `'hook'` — the daemon writes an on-disk hook/config file this harness
51
+ * reads before running a tool call (the 19-harness majority).
52
+ * `'sdk'` — the blocking gate ships in `intutic-clawde`, imported into
53
+ * the harness's own Python process; no file for the daemon
54
+ * to write or verify (LangGraph + the eight Wave/Wave-2
55
+ * frameworks).
56
+ * `'none'` — no tool-call gate exists for this harness (aider: its only
57
+ * native hook is post-edit and /run-blind; Roo Code and
58
+ * Claude Desktop: no hook system).
59
+ * `'delegated'` — this harness has no gate mechanism of its own because it
60
+ * does not run tools itself: it wraps OTHER harnesses that
61
+ * are already `'hook'`- or `'sdk'`-gated, and a tool call
62
+ * made inside it is governed by whichever wrapped harness's
63
+ * own gate is running (Xirp, Agentic Orchestrator, and — a
64
+ * different shape of the same idea — AgentCore Runtime,
65
+ * which HOSTS a customer's already-gated framework code
66
+ * rather than spawning it as a subprocess; see
67
+ * gateRegistry.ts's NO_GATE rows for the reasoning this
68
+ * precedent sets for future orchestrator/host-shaped
69
+ * harnesses).
70
+ * Every wrapped backend of the two orchestrators has a gate of
71
+ * its own (Agentic Orchestrator's `opencode` backend through
72
+ * `openCodeHooks.ts`), so `'delegated'`
73
+ * claims exactly what happens. Distinct from
74
+ * `'none'`: `'none'` means no enforcement point exists
75
+ * ANYWHERE for this harness's tool calls; `'delegated'`
76
+ * means one exists, just not one this harness's own row
77
+ * owns or can be credited for independently — reporting it
78
+ * as `'none'` would undercount real coverage, and reporting
79
+ * it as `'hook'` would overclaim a file this daemon never
80
+ * writes for the wrapping harness itself.
81
+ * `'bridge'` — the gate runs OUT OF PROCESS, in an Intutic-operated
82
+ * service reacting to the harness's own async
83
+ * approval/event API, rather than a file this daemon writes
84
+ * (`'hook'`), an SDK imported into the harness's own process
85
+ * (`'sdk'`), no enforcement point at all (`'none'`), or
86
+ * governance credited to a wrapped harness's own gate
87
+ * (`'delegated'`) — a fifth, genuinely different shape.
88
+ * TRUEFORGE_SERVER is the first and so far only member: a
89
+ * TrueForge standalone/hosted server is a separate process
90
+ * nobody embeds an Intutic gate into (unlike TRUEFORGE,
91
+ * embedded mode, which IS `'sdk'`-gated — see that row's own
92
+ * doc), so `services/trueforge-bridge` watches its turn/event
93
+ * stream externally and answers pending approvals over HTTP.
94
+ * Distinct from `'delegated'`: a delegated harness's tool
95
+ * calls are governed by ANOTHER HARNESS's own gate running
96
+ * in that other harness's process; a bridge-gated harness's
97
+ * tool calls are governed by a service this repo ships and
98
+ * operates, running in neither the harness's process nor any
99
+ * other harness's. Distinct from `'sdk'`: no code from this
100
+ * repo ever runs inside the governed harness's own process
101
+ * at all — the harness's only obligation is to expose the
102
+ * async approval API the bridge polls/subscribes to.
103
+ */
104
+ export type GateKind = 'hook' | 'sdk' | 'none' | 'delegated' | 'bridge';
105
+ /**
106
+ * Harnesses whose blocking gate ships SDK-side, in the harness's own
107
+ * process — no on-disk hook/config file exists to point a gate at. Mirrors
108
+ * the `file: null` NO_GATE rows in `gateRegistry.ts`.
109
+ *
110
+ * MASTRA, VERCEL_AI_SDK (T2), EVE (A2), and TRUEFORGE (embedded-library mode
111
+ * only — see its own HarnessType doc) are the JS/TS-native members of this
112
+ * family: their blocking gate ships in `@intutic/gate/mastra`/
113
+ * `@intutic/gate/vercel`/`@intutic/gate/eve`/`@intutic/gate/trueforge`
114
+ * (packages/gate-js) rather than `intutic-clawde`, but the shape is
115
+ * identical — no on-disk hook/config file, tools run as plain callables in
116
+ * the harness's own process (for eve, as per-tool/per-connection `approval`
117
+ * policies attached in the agent directory's own TypeScript; for TrueForge,
118
+ * as `intuticApprovalResponder()` answering `tool.approval_required`
119
+ * pauses — see `@intutic/gate/trueforge`'s module doc for why that shape
120
+ * differs from mastra/vercel's single-callback pattern).
121
+ *
122
+ * AI_SDK_HARNESS and AI_SDK_WORKFLOW (A3) are the same `@intutic/gate`
123
+ * family with one nuance worth naming: the VETO still runs SDK-side in the
124
+ * caller's own Node.js process (an approval responder / a `needsApproval`
125
+ * function), which is what `'sdk'` classifies — but for AI_SDK_HARNESS the
126
+ * tool EXECUTION it vetoes happens server-side in a Vercel Sandbox microVM,
127
+ * and its built-in sandbox tools have no veto surface at all beyond
128
+ * `permissionMode` (defaults to 'allow-all'). `'sdk'` describes where the
129
+ * gate mechanism lives, not a claim that every tool the harness can run
130
+ * passes through it — see gateRegistry.ts's NO_GATE rows for the honest
131
+ * scope statement per harness.
132
+ */
133
+ export declare const SDK_GATED_HARNESSES: ReadonlySet<HarnessTypeT>;
134
+ /**
135
+ * Harnesses with no tool-call gate of their own: the proxy and the MCP
136
+ * governance proxy are their enforcement. Mirrors the NO_GATE rows in
137
+ * `gateRegistry.ts`: aider's only native hook (`--git-commit-verify`) is
138
+ * opt-in, post-edit, and blind to `/run`; Roo Code and Claude Desktop have no
139
+ * hook system at all (Claude Desktop's Code tab is Claude Code, gated by the
140
+ * claude-code gate); Continue's CLI loads PreToolUse hooks but never fires
141
+ * them, and its IDE extension has none (see the continueConfigMerger.ts row).
142
+ */
143
+ export declare const NO_GATE_HARNESSES: ReadonlySet<HarnessTypeT>;
144
+ /**
145
+ * Harnesses that wrap OTHER already-gated harnesses instead of running tools
146
+ * themselves — no gate of their own, but not ungoverned either. Mirrors the
147
+ * `file: null` NO_GATE rows for `xirp` and `agentic-orchestrator` in
148
+ * `gateRegistry.ts`. Xirp was the first entry of this shape; Agentic
149
+ * Orchestrator (O3) is the second. O2 (QM) is expected to add a third, same
150
+ * "wraps other harnesses" shape, in a concurrent phase not yet merged as of
151
+ * this one.
152
+ */
153
+ export declare const DELEGATED_GATE_HARNESSES: ReadonlySet<HarnessTypeT>;
154
+ /**
155
+ * Harnesses whose blocking gate runs OUT OF PROCESS, in an Intutic-operated
156
+ * service reacting to the harness's own async approval/event API — not a
157
+ * file this daemon writes, and not an SDK imported into the harness's own
158
+ * process (no process of ours runs inside the harness at all). Mirrors the
159
+ * `file: null` NO_GATE row for `trueforge-server` in `gateRegistry.ts`.
160
+ *
161
+ * TRUEFORGE_SERVER (B3) is the first member: a TrueForge standalone/hosted
162
+ * server has no in-process host to hang an SDK gate off of (contrast
163
+ * TRUEFORGE, embedded mode, in `SDK_GATED_HARNESSES` above) — instead
164
+ * `services/trueforge-bridge` watches its turn/event stream externally and
165
+ * answers pending `tool.approval_required` pauses over HTTP. See the
166
+ * `'bridge'` `GateKind` doc above for the full distinction from `'sdk'` and
167
+ * `'delegated'`.
168
+ */
169
+ export declare const BRIDGE_GATED_HARNESSES: ReadonlySet<HarnessTypeT>;
170
+ /** How this harness's tool calls get gated. Defaults to `'hook'`. */
171
+ export declare function gateKindForHarness(type: HarnessTypeT): GateKind;
172
+ //# sourceMappingURL=gateKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateKind.d.ts","sourceRoot":"","sources":["../src/gateKind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAe,KAAK,WAAW,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,YAAY,CAkBxD,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,YAAY,CAKtD,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,YAAY,CAO7D,CAAA;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,YAAY,CAA2C,CAAA;AAExG,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAM/D"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * gateKind.ts — classifies each harness by HOW its tool calls get governed:
4
+ * for the sync daemon's agent report (`agentReporter.ts`'s `guardrails`
5
+ * facet) and AI inventory, and for the control plane's silent-gate check,
6
+ * which expects a gate only from a harness that has one of its own.
7
+ *
8
+ * # Why this exists
9
+ *
10
+ * `collectAgentReport` used to report `hook_gate: true` unconditionally for
11
+ * every harness, with the comment "the daemon writes the hook gate for every
12
+ * harness it supports." That was already false for `langgraph` — which has
13
+ * no on-disk hook, only the SDK-side `intutic_clawde.gate` — and for `aider`,
14
+ * whose only NO_GATE-registered mechanism is a post-edit, /run-blind
15
+ * pre-commit hook (see `aiderConfigMerger.ts`'s NO_GATE row in
16
+ * `__tests__/harness/gateRegistry.ts`). Wave 1 adds eight more SDK-gated
17
+ * harnesses, which would have made the lie eight times larger without this
18
+ * fix.
19
+ *
20
+ * # What this does NOT do
21
+ *
22
+ * This does not verify that a user actually pip-installed `intutic-clawde`
23
+ * and wired `guard_tools`/`IntuticMiddleware`/etc. into their process — the
24
+ * daemon cannot observe another process's imports, the same way it cannot
25
+ * observe whether a written hook file was left executable. It only reports
26
+ * which MECHANISM this harness's governance model uses (a file the daemon
27
+ * itself writes and can verify existence of, vs. an SDK the harness's own
28
+ * process must import), matching the trust level `hook_gate: true` already
29
+ * carried for file-based harnesses before this fix.
30
+ *
31
+ * # Keeping this in sync with the gate registry
32
+ *
33
+ * `services/sync-daemon/__tests__/harness/gateRegistry.ts` (the GATES/NO_GATE
34
+ * completeness registry exercised by `generatedGateBehaviour.test.ts`) is the
35
+ * authoritative decision per harness, but it is a test-only module (it
36
+ * dynamically imports every writer's compiled `.js` from a temp build dir)
37
+ * and must not be imported from daemon runtime code. `services/sync-daemon/__tests__/harness/gateKind.test.ts`
38
+ * cross-checks the two lists so this file cannot silently drift from that
39
+ * registry's own NO_GATE rows: `file: null` harnesses split between 'sdk'
40
+ * (LangGraph + the Python frameworks — the gate ships in intutic-clawde),
41
+ * 'delegated' (xirp — the gate is whichever wrapped harness's own gate is
42
+ * running), and 'bridge' (trueforge-server — the gate runs in a separate
43
+ * Intutic-operated service, not in any process this repo's writers touch),
44
+ * and 'none' (roo-code, claude-desktop — no hook system); the one non-null
45
+ * row (aiderConfigMerger.ts, "no ... exists") is 'none' too.
46
+ *
47
+ * @module
48
+ */
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.BRIDGE_GATED_HARNESSES = exports.DELEGATED_GATE_HARNESSES = exports.NO_GATE_HARNESSES = exports.SDK_GATED_HARNESSES = void 0;
51
+ exports.gateKindForHarness = gateKindForHarness;
52
+ const enums_js_1 = require("./enums.js");
53
+ /**
54
+ * Harnesses whose blocking gate ships SDK-side, in the harness's own
55
+ * process — no on-disk hook/config file exists to point a gate at. Mirrors
56
+ * the `file: null` NO_GATE rows in `gateRegistry.ts`.
57
+ *
58
+ * MASTRA, VERCEL_AI_SDK (T2), EVE (A2), and TRUEFORGE (embedded-library mode
59
+ * only — see its own HarnessType doc) are the JS/TS-native members of this
60
+ * family: their blocking gate ships in `@intutic/gate/mastra`/
61
+ * `@intutic/gate/vercel`/`@intutic/gate/eve`/`@intutic/gate/trueforge`
62
+ * (packages/gate-js) rather than `intutic-clawde`, but the shape is
63
+ * identical — no on-disk hook/config file, tools run as plain callables in
64
+ * the harness's own process (for eve, as per-tool/per-connection `approval`
65
+ * policies attached in the agent directory's own TypeScript; for TrueForge,
66
+ * as `intuticApprovalResponder()` answering `tool.approval_required`
67
+ * pauses — see `@intutic/gate/trueforge`'s module doc for why that shape
68
+ * differs from mastra/vercel's single-callback pattern).
69
+ *
70
+ * AI_SDK_HARNESS and AI_SDK_WORKFLOW (A3) are the same `@intutic/gate`
71
+ * family with one nuance worth naming: the VETO still runs SDK-side in the
72
+ * caller's own Node.js process (an approval responder / a `needsApproval`
73
+ * function), which is what `'sdk'` classifies — but for AI_SDK_HARNESS the
74
+ * tool EXECUTION it vetoes happens server-side in a Vercel Sandbox microVM,
75
+ * and its built-in sandbox tools have no veto surface at all beyond
76
+ * `permissionMode` (defaults to 'allow-all'). `'sdk'` describes where the
77
+ * gate mechanism lives, not a claim that every tool the harness can run
78
+ * passes through it — see gateRegistry.ts's NO_GATE rows for the honest
79
+ * scope statement per harness.
80
+ */
81
+ exports.SDK_GATED_HARNESSES = new Set([
82
+ enums_js_1.HarnessType.LANGGRAPH,
83
+ enums_js_1.HarnessType.LANGCHAIN,
84
+ enums_js_1.HarnessType.CREWAI,
85
+ enums_js_1.HarnessType.AUTOGEN,
86
+ enums_js_1.HarnessType.AG2,
87
+ enums_js_1.HarnessType.GOOGLE_ADK,
88
+ enums_js_1.HarnessType.OPENAI_AGENTS,
89
+ enums_js_1.HarnessType.PYDANTIC_AI,
90
+ enums_js_1.HarnessType.SMOLAGENTS,
91
+ enums_js_1.HarnessType.STRANDS,
92
+ enums_js_1.HarnessType.AGENT_FRAMEWORK,
93
+ enums_js_1.HarnessType.MASTRA,
94
+ enums_js_1.HarnessType.VERCEL_AI_SDK,
95
+ enums_js_1.HarnessType.EVE,
96
+ enums_js_1.HarnessType.TRUEFORGE,
97
+ enums_js_1.HarnessType.AI_SDK_HARNESS,
98
+ enums_js_1.HarnessType.AI_SDK_WORKFLOW,
99
+ ]);
100
+ /**
101
+ * Harnesses with no tool-call gate of their own: the proxy and the MCP
102
+ * governance proxy are their enforcement. Mirrors the NO_GATE rows in
103
+ * `gateRegistry.ts`: aider's only native hook (`--git-commit-verify`) is
104
+ * opt-in, post-edit, and blind to `/run`; Roo Code and Claude Desktop have no
105
+ * hook system at all (Claude Desktop's Code tab is Claude Code, gated by the
106
+ * claude-code gate); Continue's CLI loads PreToolUse hooks but never fires
107
+ * them, and its IDE extension has none (see the continueConfigMerger.ts row).
108
+ */
109
+ exports.NO_GATE_HARNESSES = new Set([
110
+ enums_js_1.HarnessType.AIDER,
111
+ enums_js_1.HarnessType.ROO_CODE,
112
+ enums_js_1.HarnessType.CLAUDE_DESKTOP,
113
+ enums_js_1.HarnessType.CONTINUE,
114
+ ]);
115
+ /**
116
+ * Harnesses that wrap OTHER already-gated harnesses instead of running tools
117
+ * themselves — no gate of their own, but not ungoverned either. Mirrors the
118
+ * `file: null` NO_GATE rows for `xirp` and `agentic-orchestrator` in
119
+ * `gateRegistry.ts`. Xirp was the first entry of this shape; Agentic
120
+ * Orchestrator (O3) is the second. O2 (QM) is expected to add a third, same
121
+ * "wraps other harnesses" shape, in a concurrent phase not yet merged as of
122
+ * this one.
123
+ */
124
+ exports.DELEGATED_GATE_HARNESSES = new Set([
125
+ enums_js_1.HarnessType.XIRP,
126
+ enums_js_1.HarnessType.AGENTIC_ORCHESTRATOR,
127
+ // B2: AWS Bedrock AgentCore Runtime — hosts a customer's own framework
128
+ // code unchanged; governed by whichever already-supported framework
129
+ // adapter that code uses. See tools/cli/src/harness/agentcore.ts.
130
+ enums_js_1.HarnessType.AGENTCORE_RUNTIME,
131
+ ]);
132
+ /**
133
+ * Harnesses whose blocking gate runs OUT OF PROCESS, in an Intutic-operated
134
+ * service reacting to the harness's own async approval/event API — not a
135
+ * file this daemon writes, and not an SDK imported into the harness's own
136
+ * process (no process of ours runs inside the harness at all). Mirrors the
137
+ * `file: null` NO_GATE row for `trueforge-server` in `gateRegistry.ts`.
138
+ *
139
+ * TRUEFORGE_SERVER (B3) is the first member: a TrueForge standalone/hosted
140
+ * server has no in-process host to hang an SDK gate off of (contrast
141
+ * TRUEFORGE, embedded mode, in `SDK_GATED_HARNESSES` above) — instead
142
+ * `services/trueforge-bridge` watches its turn/event stream externally and
143
+ * answers pending `tool.approval_required` pauses over HTTP. See the
144
+ * `'bridge'` `GateKind` doc above for the full distinction from `'sdk'` and
145
+ * `'delegated'`.
146
+ */
147
+ exports.BRIDGE_GATED_HARNESSES = new Set([enums_js_1.HarnessType.TRUEFORGE_SERVER]);
148
+ /** How this harness's tool calls get gated. Defaults to `'hook'`. */
149
+ function gateKindForHarness(type) {
150
+ if (exports.SDK_GATED_HARNESSES.has(type))
151
+ return 'sdk';
152
+ if (exports.NO_GATE_HARNESSES.has(type))
153
+ return 'none';
154
+ if (exports.DELEGATED_GATE_HARNESSES.has(type))
155
+ return 'delegated';
156
+ if (exports.BRIDGE_GATED_HARNESSES.has(type))
157
+ return 'bridge';
158
+ return 'hook';
159
+ }
160
+ //# sourceMappingURL=gateKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateKind.js","sourceRoot":"","sources":["../src/gateKind.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;;;AAiKH,gDAMC;AArKD,yCAA0E;AA2D1E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACU,QAAA,mBAAmB,GAA8B,IAAI,GAAG,CAAC;IACpE,sBAAW,CAAC,SAAS;IACrB,sBAAW,CAAC,SAAS;IACrB,sBAAW,CAAC,MAAM;IAClB,sBAAW,CAAC,OAAO;IACnB,sBAAW,CAAC,GAAG;IACf,sBAAW,CAAC,UAAU;IACtB,sBAAW,CAAC,aAAa;IACzB,sBAAW,CAAC,WAAW;IACvB,sBAAW,CAAC,UAAU;IACtB,sBAAW,CAAC,OAAO;IACnB,sBAAW,CAAC,eAAe;IAC3B,sBAAW,CAAC,MAAM;IAClB,sBAAW,CAAC,aAAa;IACzB,sBAAW,CAAC,GAAG;IACf,sBAAW,CAAC,SAAS;IACrB,sBAAW,CAAC,cAAc;IAC1B,sBAAW,CAAC,eAAe;CAC5B,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAA8B,IAAI,GAAG,CAAC;IAClE,sBAAW,CAAC,KAAK;IACjB,sBAAW,CAAC,QAAQ;IACpB,sBAAW,CAAC,cAAc;IAC1B,sBAAW,CAAC,QAAQ;CACrB,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAA8B,IAAI,GAAG,CAAC;IACzE,sBAAW,CAAC,IAAI;IAChB,sBAAW,CAAC,oBAAoB;IAChC,uEAAuE;IACvE,oEAAoE;IACpE,kEAAkE;IAClE,sBAAW,CAAC,iBAAiB;CAC9B,CAAC,CAAA;AAEF;;;;;;;;;;;;;;GAcG;AACU,QAAA,sBAAsB,GAA8B,IAAI,GAAG,CAAC,CAAC,sBAAW,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAExG,qEAAqE;AACrE,SAAgB,kBAAkB,CAAC,IAAkB;IACnD,IAAI,2BAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/C,IAAI,yBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAA;IAC9C,IAAI,gCAAwB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAA;IAC1D,IAAI,8BAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IACrD,OAAO,MAAM,CAAA;AACf,CAAC"}