@canonry/canonry 4.169.0 → 4.170.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.
- package/assets/assets/{AuditHistoryPanel-B3APGWB4.js → AuditHistoryPanel-BpIn6E7p.js} +1 -1
- package/assets/assets/{BacklinksPage-C-7KAx5g.js → BacklinksPage-BvOWgx1l.js} +1 -1
- package/assets/assets/{HistoryPage-Cf-dJuPA.js → HistoryPage-BXaQyur8.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-C1W-BG81.js → MeasurementPropertyPage-Buj708lc.js} +1 -1
- package/assets/assets/{ProjectPage-CnZC8AA7.js → ProjectPage-BwC29w2_.js} +1 -1
- package/assets/assets/{RunRow-DJQ4Up9f.js → RunRow-C9hp5yEp.js} +1 -1
- package/assets/assets/{RunsPage-BbtbYLgP.js → RunsPage-DmkRH1iu.js} +1 -1
- package/assets/assets/{SettingsPage-DG-6IuO1.js → SettingsPage-BIyuj-gL.js} +1 -1
- package/assets/assets/{SiteHealthSection-rCrAk98W.js → SiteHealthSection-ZlYR3JtG.js} +3 -3
- package/assets/assets/{TrafficPage-CpS4K8eT.js → TrafficPage-PxIetTWH.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-D_zPmdUz.js → TrafficSourceDetailPage-BhF_leby.js} +1 -1
- package/assets/assets/{extract-error-message-40mUXcbq.js → extract-error-message-Dd2su-BK.js} +1 -1
- package/assets/assets/{index-Nk2MzD2d.js → index-DyjfMyum.js} +21 -21
- package/assets/assets/{react-sigma_core.esm.min-BOZ1RPZp.js → react-sigma_core.esm.min-CsNemdas.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-HVBAGSQC.js → chunk-BMW3AURU.js} +567 -5
- package/dist/{chunk-U2X42SKN.js → chunk-CCZNCH7Y.js} +3641 -1154
- package/dist/{chunk-K7XXDKYY.js → chunk-HJ7W2LXI.js} +165 -1
- package/dist/{chunk-ANA3GJSC.js → chunk-HTUI6BSK.js} +2 -2
- package/dist/{chunk-T2UJAYTX.js → chunk-NMCLLN5X.js} +3376 -137
- package/dist/cli.js +5 -5
- package/dist/index.d.ts +132 -2
- package/dist/index.js +10 -4
- package/dist/{intelligence-service-6ZYTEFXX.js → intelligence-service-64IPZ4NU.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +10 -10
package/assets/assets/{react-sigma_core.esm.min-BOZ1RPZp.js → react-sigma_core.esm.min-CsNemdas.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Bt,t as S,r as C}from"./vendor-tanstack-Dock0eH1.js";import{e as Ht,G as Wt}from"./SiteHealthSection-
|
|
1
|
+
import{g as Bt,t as S,r as C}from"./vendor-tanstack-Dock0eH1.js";import{e as Ht,G as Wt}from"./SiteHealthSection-ZlYR3JtG.js";import"./index-DyjfMyum.js";import"./vendor-radix-4UOaVWza.js";import"./vendor-recharts-D8rt5lKn.js";import"./vendor-lucide-nYKv-BB7.js";import"./vendor-markdown-Bn7fRwrx.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-BoYe2M-i.js";function Vt(r,n){if(typeof r!="object"||!r)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var e=i.call(r,n);if(typeof e!="object")return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}function ae(r){var n=Vt(r,"string");return typeof n=="symbol"?n:n+""}function A(r,n){if(!(r instanceof n))throw new TypeError("Cannot call a class as a function")}function He(r,n){for(var i=0;i<n.length;i++){var e=n[i];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(r,ae(e.key),e)}}function L(r,n,i){return n&&He(r.prototype,n),i&&He(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r}function Q(r){return Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Q(r)}function yt(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(yt=function(){return!!r})()}function jt(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function Zt(r,n){if(n&&(typeof n=="object"||typeof n=="function"))return n;if(n!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return jt(r)}function I(r,n,i){return n=Q(n),Zt(r,yt()?Reflect.construct(n,i||[],Q(r).constructor):n.apply(r,i))}function xe(r,n){return xe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,e){return i.__proto__=e,i},xe(r,n)}function G(r,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(n&&n.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),n&&xe(r,n)}function qt(r){if(Array.isArray(r))return r}function Yt(r,n){var i=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(i!=null){var e,t,a,o,s=[],l=!0,h=!1;try{if(a=(i=i.call(r)).next,n===0){if(Object(i)!==i)return;l=!1}else for(;!(l=(e=a.call(i)).done)&&(s.push(e.value),s.length!==n);l=!0);}catch(u){h=!0,t=u}finally{try{if(!l&&i.return!=null&&(o=i.return(),Object(o)!==o))return}finally{if(h)throw t}}return s}}function Se(r,n){(n==null||n>r.length)&&(n=r.length);for(var i=0,e=Array(n);i<n;i++)e[i]=r[i];return e}function Tt(r,n){if(r){if(typeof r=="string")return Se(r,n);var i={}.toString.call(r).slice(8,-1);return i==="Object"&&r.constructor&&(i=r.constructor.name),i==="Map"||i==="Set"?Array.from(r):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Se(r,n):void 0}}function Xt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
2
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(r,n){return qt(r)||Yt(r,n)||Tt(r,n)||Xt()}var pe={black:"#000000",silver:"#C0C0C0",gray:"#808080",grey:"#808080",white:"#FFFFFF",maroon:"#800000",red:"#FF0000",purple:"#800080",fuchsia:"#FF00FF",green:"#008000",lime:"#00FF00",olive:"#808000",yellow:"#FFFF00",navy:"#000080",blue:"#0000FF",teal:"#008080",aqua:"#00FFFF",darkblue:"#00008B",mediumblue:"#0000CD",darkgreen:"#006400",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",rebeccapurple:"#663399",mediumaquamarine:"#66CDAA",dimgray:"#696969",dimgrey:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",slategrey:"#708090",lightslategray:"#778899",lightslategrey:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370DB",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",palevioletred:"#DB7093",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",lightyellow:"#FFFFE0",ivory:"#FFFFF0"},Ct=new Int8Array(4),be=new Int32Array(Ct.buffer,0,1),$t=new Float32Array(Ct.buffer,0,1),Kt=/^\s*rgba?\s*\(/,Jt=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)(?:\s*,\s*(.*)?)?\)\s*$/;function Qt(r){var n=0,i=0,e=0,t=1;if(r[0]==="#")r.length===4?(n=parseInt(r.charAt(1)+r.charAt(1),16),i=parseInt(r.charAt(2)+r.charAt(2),16),e=parseInt(r.charAt(3)+r.charAt(3),16)):(n=parseInt(r.charAt(1)+r.charAt(2),16),i=parseInt(r.charAt(3)+r.charAt(4),16),e=parseInt(r.charAt(5)+r.charAt(6),16)),r.length===9&&(t=parseInt(r.charAt(7)+r.charAt(8),16)/255);else if(Kt.test(r)){var a=r.match(Jt);a&&(n=+a[1],i=+a[2],e=+a[3],a[4]&&(t=+a[4]))}return{r:n,g:i,b:e,a:t}}var J={};for(var le in pe)J[le]=oe(pe[le]),J[pe[le]]=J[le];function Rt(r,n,i,e,t){return be[0]=e<<24|i<<16|n<<8|r,be[0]=be[0]&4278190079,$t[0]}function oe(r){if(r=r.toLowerCase(),typeof J[r]<"u")return J[r];var n=Qt(r),i=n.r,e=n.g,t=n.b,a=n.a;a=a*255|0;var o=Rt(i,e,t,a);return J[r]=o,o}var Ee={};function _t(r){if(typeof Ee[r]<"u")return Ee[r];var n=(r&16711680)>>>16,i=(r&65280)>>>8,e=r&255,t=255,a=Rt(n,i,e,t);return Ee[r]=a,a}function We(r,n,i,e){return i+(n<<8)+(r<<16)}function Ve(r,n,i,e,t,a){var o=Math.floor(i/a*t),s=Math.floor(r.drawingBufferHeight/a-e/a*t),l=new Uint8Array(4);r.bindFramebuffer(r.FRAMEBUFFER,n),r.readPixels(o,s,1,1,r.RGBA,r.UNSIGNED_BYTE,l);var h=ee(l,4),u=h[0],d=h[1],f=h[2],g=h[3];return[u,d,f,g]}function c(r,n,i){return(n=ae(n))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,r}function je(r,n){var i=Object.keys(r);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(r);n&&(e=e.filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable})),i.push.apply(i,e)}return i}function b(r){for(var n=1;n<arguments.length;n++){var i=arguments[n]!=null?arguments[n]:{};n%2?je(Object(i),!0).forEach(function(e){c(r,e,i[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):je(Object(i)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))})}return r}function ei(r,n){for(;!{}.hasOwnProperty.call(r,n)&&(r=Q(r))!==null;);return r}function Ae(){return Ae=typeof Reflect<"u"&&Reflect.get?Reflect.get.bind():function(r,n,i){var e=ei(r,n);if(e){var t=Object.getOwnPropertyDescriptor(e,n);return t.get?t.get.call(arguments.length<3?r:i):t.value}},Ae.apply(null,arguments)}function wt(r,n,i,e){var t=Ae(Q(r.prototype),n,i);return typeof t=="function"?function(a){return t.apply(i,a)}:t}function ti(r){return r.normalized?1:r.size}function ye(r){var n=0;return r.forEach(function(i){return n+=ti(i)}),n}function xt(r,n,i){var e=r==="VERTEX"?n.VERTEX_SHADER:n.FRAGMENT_SHADER,t=n.createShader(e);if(t===null)throw new Error("loadShader: error while creating the shader");n.shaderSource(t,i),n.compileShader(t);var a=n.getShaderParameter(t,n.COMPILE_STATUS);if(!a){var o=n.getShaderInfoLog(t);throw n.deleteShader(t),new Error(`loadShader: error while compiling the shader:
|
|
3
3
|
`.concat(o,`
|
|
4
4
|
`).concat(i))}return t}function ii(r,n){return xt("VERTEX",r,n)}function ri(r,n){return xt("FRAGMENT",r,n)}function ni(r,n){var i=r.createProgram();if(i===null)throw new Error("loadProgram: error while creating the program.");var e,t;for(e=0,t=n.length;e<t;e++)r.attachShader(i,n[e]);r.linkProgram(i);var a=r.getProgramParameter(i,r.LINK_STATUS);if(!a){var o=r.getProgramInfoLog(i);throw r.deleteProgram(i),new Error("loadProgram: error while linking the program: ".concat(o))}return i}function Ze(r){var n=r.gl,i=r.buffer,e=r.program,t=r.vertexShader,a=r.fragmentShader;n.deleteShader(t),n.deleteShader(a),n.deleteProgram(e),n.deleteBuffer(i)}var qe=`#define PICKING_MODE
|
package/assets/index.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
|
|
13
13
|
<link rel="apple-touch-icon" href="./apple-touch-icon.png" />
|
|
14
14
|
<title>Canonry</title>
|
|
15
|
-
<script type="module" crossorigin src="./assets/index-
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-DyjfMyum.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-Dock0eH1.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-4UOaVWza.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-D8rt5lKn.js">
|
|
@@ -88,12 +88,13 @@ import {
|
|
|
88
88
|
trafficConnectWordpressRequestSchema,
|
|
89
89
|
trafficEventKindSchema,
|
|
90
90
|
trafficSeriesGranularitySchema
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-HJ7W2LXI.js";
|
|
92
92
|
|
|
93
93
|
// src/config.ts
|
|
94
94
|
import fs from "fs";
|
|
95
95
|
import path from "path";
|
|
96
96
|
import os from "os";
|
|
97
|
+
import crypto from "crypto";
|
|
97
98
|
import { parse, stringify } from "yaml";
|
|
98
99
|
function normalizeGoogleConfig(config) {
|
|
99
100
|
if (!config.google) return;
|
|
@@ -105,6 +106,24 @@ function normalizeGoogleConfig(config) {
|
|
|
105
106
|
scopes: connection.scopes ?? []
|
|
106
107
|
}));
|
|
107
108
|
}
|
|
109
|
+
function normalizeGoogleMarketingConfig(config) {
|
|
110
|
+
if (config.googleAds) {
|
|
111
|
+
config.googleAds.connections = (config.googleAds.connections ?? []).map((connection) => ({
|
|
112
|
+
...connection,
|
|
113
|
+
refreshToken: connection.refreshToken ?? null,
|
|
114
|
+
tokenExpiresAt: connection.tokenExpiresAt ?? null,
|
|
115
|
+
scopes: connection.scopes ?? []
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
if (config.gtm) {
|
|
119
|
+
config.gtm.connections = (config.gtm.connections ?? []).map((connection) => ({
|
|
120
|
+
...connection,
|
|
121
|
+
refreshToken: connection.refreshToken ?? null,
|
|
122
|
+
tokenExpiresAt: connection.tokenExpiresAt ?? null,
|
|
123
|
+
scopes: connection.scopes ?? []
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
108
127
|
function normalizeWordpressConfig(config) {
|
|
109
128
|
if (!config.wordpress) return;
|
|
110
129
|
config.wordpress.connections = (config.wordpress.connections ?? []).map((connection) => ({
|
|
@@ -166,6 +185,7 @@ Do not write config.yaml by hand; use "canonry init", "canonry settings", or "ca
|
|
|
166
185
|
};
|
|
167
186
|
}
|
|
168
187
|
normalizeGoogleConfig(parsed);
|
|
188
|
+
normalizeGoogleMarketingConfig(parsed);
|
|
169
189
|
normalizeWordpressConfig(parsed);
|
|
170
190
|
normalizeCloudflareTrafficConfig(parsed);
|
|
171
191
|
const portOverride = process.env.CANONRY_PORT?.trim();
|
|
@@ -228,6 +248,35 @@ function loadConfigRaw() {
|
|
|
228
248
|
return null;
|
|
229
249
|
}
|
|
230
250
|
}
|
|
251
|
+
function writeConfigAtomically(configPath, contents) {
|
|
252
|
+
const directory = path.dirname(configPath);
|
|
253
|
+
const temporaryPath = path.join(
|
|
254
|
+
directory,
|
|
255
|
+
`.${path.basename(configPath)}.${process.pid}.${crypto.randomUUID()}.tmp`
|
|
256
|
+
);
|
|
257
|
+
let descriptor;
|
|
258
|
+
try {
|
|
259
|
+
descriptor = fs.openSync(temporaryPath, "wx", 384);
|
|
260
|
+
fs.fchmodSync(descriptor, 384);
|
|
261
|
+
fs.writeFileSync(descriptor, contents, { encoding: "utf-8" });
|
|
262
|
+
fs.fsyncSync(descriptor);
|
|
263
|
+
fs.closeSync(descriptor);
|
|
264
|
+
descriptor = void 0;
|
|
265
|
+
fs.renameSync(temporaryPath, configPath);
|
|
266
|
+
} catch (error) {
|
|
267
|
+
if (descriptor !== void 0) {
|
|
268
|
+
try {
|
|
269
|
+
fs.closeSync(descriptor);
|
|
270
|
+
} catch {
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
fs.unlinkSync(temporaryPath);
|
|
275
|
+
} catch {
|
|
276
|
+
}
|
|
277
|
+
throw error;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
231
280
|
function saveConfig(config) {
|
|
232
281
|
const configDir = getConfigDir();
|
|
233
282
|
if (!fs.existsSync(configDir)) {
|
|
@@ -254,7 +303,7 @@ function saveConfig(config) {
|
|
|
254
303
|
}
|
|
255
304
|
}
|
|
256
305
|
const yaml = stringify(merged);
|
|
257
|
-
|
|
306
|
+
writeConfigAtomically(configPath, yaml);
|
|
258
307
|
}
|
|
259
308
|
function saveConfigPatch(patch) {
|
|
260
309
|
const configDir = getConfigDir();
|
|
@@ -284,7 +333,7 @@ function saveConfigPatch(patch) {
|
|
|
284
333
|
}
|
|
285
334
|
}
|
|
286
335
|
const yaml = stringify(merged);
|
|
287
|
-
|
|
336
|
+
writeConfigAtomically(configPath, yaml);
|
|
288
337
|
}
|
|
289
338
|
function configExists() {
|
|
290
339
|
return fs.existsSync(getConfigPath());
|
|
@@ -2839,6 +2888,318 @@ var getApiV1ProjectsByNameRunsByRunIdBrowserDiff = (options) => {
|
|
|
2839
2888
|
...options
|
|
2840
2889
|
});
|
|
2841
2890
|
};
|
|
2891
|
+
var getApiV1ProjectsByNameGoogleAdsStatus = (options) => {
|
|
2892
|
+
return (options.client ?? client).get({
|
|
2893
|
+
security: [
|
|
2894
|
+
{
|
|
2895
|
+
scheme: "bearer",
|
|
2896
|
+
type: "http"
|
|
2897
|
+
}
|
|
2898
|
+
],
|
|
2899
|
+
url: "/api/v1/projects/{name}/google-ads/status",
|
|
2900
|
+
...options
|
|
2901
|
+
});
|
|
2902
|
+
};
|
|
2903
|
+
var postApiV1ProjectsByNameGoogleAdsOauthConnect = (options) => {
|
|
2904
|
+
return (options.client ?? client).post({
|
|
2905
|
+
security: [
|
|
2906
|
+
{
|
|
2907
|
+
scheme: "bearer",
|
|
2908
|
+
type: "http"
|
|
2909
|
+
}
|
|
2910
|
+
],
|
|
2911
|
+
url: "/api/v1/projects/{name}/google-ads/oauth/connect",
|
|
2912
|
+
...options,
|
|
2913
|
+
headers: {
|
|
2914
|
+
"Content-Type": "application/json",
|
|
2915
|
+
...options.headers
|
|
2916
|
+
}
|
|
2917
|
+
});
|
|
2918
|
+
};
|
|
2919
|
+
var getApiV1ProjectsByNameGoogleAdsCustomers = (options) => {
|
|
2920
|
+
return (options.client ?? client).get({
|
|
2921
|
+
security: [
|
|
2922
|
+
{
|
|
2923
|
+
scheme: "bearer",
|
|
2924
|
+
type: "http"
|
|
2925
|
+
}
|
|
2926
|
+
],
|
|
2927
|
+
url: "/api/v1/projects/{name}/google-ads/customers",
|
|
2928
|
+
...options
|
|
2929
|
+
});
|
|
2930
|
+
};
|
|
2931
|
+
var putApiV1ProjectsByNameGoogleAdsSelection = (options) => {
|
|
2932
|
+
return (options.client ?? client).put({
|
|
2933
|
+
security: [
|
|
2934
|
+
{
|
|
2935
|
+
scheme: "bearer",
|
|
2936
|
+
type: "http"
|
|
2937
|
+
}
|
|
2938
|
+
],
|
|
2939
|
+
url: "/api/v1/projects/{name}/google-ads/selection",
|
|
2940
|
+
...options,
|
|
2941
|
+
headers: {
|
|
2942
|
+
"Content-Type": "application/json",
|
|
2943
|
+
...options.headers
|
|
2944
|
+
}
|
|
2945
|
+
});
|
|
2946
|
+
};
|
|
2947
|
+
var postApiV1ProjectsByNameGoogleAdsSync = (options) => {
|
|
2948
|
+
return (options.client ?? client).post({
|
|
2949
|
+
security: [
|
|
2950
|
+
{
|
|
2951
|
+
scheme: "bearer",
|
|
2952
|
+
type: "http"
|
|
2953
|
+
}
|
|
2954
|
+
],
|
|
2955
|
+
url: "/api/v1/projects/{name}/google-ads/sync",
|
|
2956
|
+
...options
|
|
2957
|
+
});
|
|
2958
|
+
};
|
|
2959
|
+
var getApiV1ProjectsByNameGoogleAdsSnapshots = (options) => {
|
|
2960
|
+
return (options.client ?? client).get({
|
|
2961
|
+
security: [
|
|
2962
|
+
{
|
|
2963
|
+
scheme: "bearer",
|
|
2964
|
+
type: "http"
|
|
2965
|
+
}
|
|
2966
|
+
],
|
|
2967
|
+
url: "/api/v1/projects/{name}/google-ads/snapshots",
|
|
2968
|
+
...options
|
|
2969
|
+
});
|
|
2970
|
+
};
|
|
2971
|
+
var getApiV1ProjectsByNameGoogleAdsSnapshotsBySnapshotId = (options) => {
|
|
2972
|
+
return (options.client ?? client).get({
|
|
2973
|
+
security: [
|
|
2974
|
+
{
|
|
2975
|
+
scheme: "bearer",
|
|
2976
|
+
type: "http"
|
|
2977
|
+
}
|
|
2978
|
+
],
|
|
2979
|
+
url: "/api/v1/projects/{name}/google-ads/snapshots/{snapshotId}",
|
|
2980
|
+
...options
|
|
2981
|
+
});
|
|
2982
|
+
};
|
|
2983
|
+
var deleteApiV1ProjectsByNameGoogleAdsConnection = (options) => {
|
|
2984
|
+
return (options.client ?? client).delete({
|
|
2985
|
+
security: [
|
|
2986
|
+
{
|
|
2987
|
+
scheme: "bearer",
|
|
2988
|
+
type: "http"
|
|
2989
|
+
}
|
|
2990
|
+
],
|
|
2991
|
+
url: "/api/v1/projects/{name}/google-ads/connection",
|
|
2992
|
+
...options
|
|
2993
|
+
});
|
|
2994
|
+
};
|
|
2995
|
+
var getApiV1ProjectsByNameGtmStatus = (options) => {
|
|
2996
|
+
return (options.client ?? client).get({
|
|
2997
|
+
security: [
|
|
2998
|
+
{
|
|
2999
|
+
scheme: "bearer",
|
|
3000
|
+
type: "http"
|
|
3001
|
+
}
|
|
3002
|
+
],
|
|
3003
|
+
url: "/api/v1/projects/{name}/gtm/status",
|
|
3004
|
+
...options
|
|
3005
|
+
});
|
|
3006
|
+
};
|
|
3007
|
+
var postApiV1ProjectsByNameGtmOauthConnect = (options) => {
|
|
3008
|
+
return (options.client ?? client).post({
|
|
3009
|
+
security: [
|
|
3010
|
+
{
|
|
3011
|
+
scheme: "bearer",
|
|
3012
|
+
type: "http"
|
|
3013
|
+
}
|
|
3014
|
+
],
|
|
3015
|
+
url: "/api/v1/projects/{name}/gtm/oauth/connect",
|
|
3016
|
+
...options,
|
|
3017
|
+
headers: {
|
|
3018
|
+
"Content-Type": "application/json",
|
|
3019
|
+
...options.headers
|
|
3020
|
+
}
|
|
3021
|
+
});
|
|
3022
|
+
};
|
|
3023
|
+
var getApiV1ProjectsByNameGtmAccounts = (options) => {
|
|
3024
|
+
return (options.client ?? client).get({
|
|
3025
|
+
security: [
|
|
3026
|
+
{
|
|
3027
|
+
scheme: "bearer",
|
|
3028
|
+
type: "http"
|
|
3029
|
+
}
|
|
3030
|
+
],
|
|
3031
|
+
url: "/api/v1/projects/{name}/gtm/accounts",
|
|
3032
|
+
...options
|
|
3033
|
+
});
|
|
3034
|
+
};
|
|
3035
|
+
var getApiV1ProjectsByNameGtmAccountsByAccountIdContainers = (options) => {
|
|
3036
|
+
return (options.client ?? client).get({
|
|
3037
|
+
security: [
|
|
3038
|
+
{
|
|
3039
|
+
scheme: "bearer",
|
|
3040
|
+
type: "http"
|
|
3041
|
+
}
|
|
3042
|
+
],
|
|
3043
|
+
url: "/api/v1/projects/{name}/gtm/accounts/{accountId}/containers",
|
|
3044
|
+
...options
|
|
3045
|
+
});
|
|
3046
|
+
};
|
|
3047
|
+
var getApiV1ProjectsByNameGtmAccountsByAccountIdContainersByContainerIdWorkspaces = (options) => {
|
|
3048
|
+
return (options.client ?? client).get({
|
|
3049
|
+
security: [
|
|
3050
|
+
{
|
|
3051
|
+
scheme: "bearer",
|
|
3052
|
+
type: "http"
|
|
3053
|
+
}
|
|
3054
|
+
],
|
|
3055
|
+
url: "/api/v1/projects/{name}/gtm/accounts/{accountId}/containers/{containerId}/workspaces",
|
|
3056
|
+
...options
|
|
3057
|
+
});
|
|
3058
|
+
};
|
|
3059
|
+
var putApiV1ProjectsByNameGtmSelection = (options) => {
|
|
3060
|
+
return (options.client ?? client).put({
|
|
3061
|
+
security: [
|
|
3062
|
+
{
|
|
3063
|
+
scheme: "bearer",
|
|
3064
|
+
type: "http"
|
|
3065
|
+
}
|
|
3066
|
+
],
|
|
3067
|
+
url: "/api/v1/projects/{name}/gtm/selection",
|
|
3068
|
+
...options,
|
|
3069
|
+
headers: {
|
|
3070
|
+
"Content-Type": "application/json",
|
|
3071
|
+
...options.headers
|
|
3072
|
+
}
|
|
3073
|
+
});
|
|
3074
|
+
};
|
|
3075
|
+
var postApiV1ProjectsByNameGtmSync = (options) => {
|
|
3076
|
+
return (options.client ?? client).post({
|
|
3077
|
+
security: [
|
|
3078
|
+
{
|
|
3079
|
+
scheme: "bearer",
|
|
3080
|
+
type: "http"
|
|
3081
|
+
}
|
|
3082
|
+
],
|
|
3083
|
+
url: "/api/v1/projects/{name}/gtm/sync",
|
|
3084
|
+
...options
|
|
3085
|
+
});
|
|
3086
|
+
};
|
|
3087
|
+
var getApiV1ProjectsByNameGtmSnapshots = (options) => {
|
|
3088
|
+
return (options.client ?? client).get({
|
|
3089
|
+
security: [
|
|
3090
|
+
{
|
|
3091
|
+
scheme: "bearer",
|
|
3092
|
+
type: "http"
|
|
3093
|
+
}
|
|
3094
|
+
],
|
|
3095
|
+
url: "/api/v1/projects/{name}/gtm/snapshots",
|
|
3096
|
+
...options
|
|
3097
|
+
});
|
|
3098
|
+
};
|
|
3099
|
+
var getApiV1ProjectsByNameGtmSnapshotsBySnapshotId = (options) => {
|
|
3100
|
+
return (options.client ?? client).get({
|
|
3101
|
+
security: [
|
|
3102
|
+
{
|
|
3103
|
+
scheme: "bearer",
|
|
3104
|
+
type: "http"
|
|
3105
|
+
}
|
|
3106
|
+
],
|
|
3107
|
+
url: "/api/v1/projects/{name}/gtm/snapshots/{snapshotId}",
|
|
3108
|
+
...options
|
|
3109
|
+
});
|
|
3110
|
+
};
|
|
3111
|
+
var deleteApiV1ProjectsByNameGtmConnection = (options) => {
|
|
3112
|
+
return (options.client ?? client).delete({
|
|
3113
|
+
security: [
|
|
3114
|
+
{
|
|
3115
|
+
scheme: "bearer",
|
|
3116
|
+
type: "http"
|
|
3117
|
+
}
|
|
3118
|
+
],
|
|
3119
|
+
url: "/api/v1/projects/{name}/gtm/connection",
|
|
3120
|
+
...options
|
|
3121
|
+
});
|
|
3122
|
+
};
|
|
3123
|
+
var getApiV1ProjectsByNameConversionTrackingContracts = (options) => {
|
|
3124
|
+
return (options.client ?? client).get({
|
|
3125
|
+
security: [
|
|
3126
|
+
{
|
|
3127
|
+
scheme: "bearer",
|
|
3128
|
+
type: "http"
|
|
3129
|
+
}
|
|
3130
|
+
],
|
|
3131
|
+
url: "/api/v1/projects/{name}/conversion-tracking/contracts",
|
|
3132
|
+
...options
|
|
3133
|
+
});
|
|
3134
|
+
};
|
|
3135
|
+
var postApiV1ProjectsByNameConversionTrackingContracts = (options) => {
|
|
3136
|
+
return (options.client ?? client).post({
|
|
3137
|
+
security: [
|
|
3138
|
+
{
|
|
3139
|
+
scheme: "bearer",
|
|
3140
|
+
type: "http"
|
|
3141
|
+
}
|
|
3142
|
+
],
|
|
3143
|
+
url: "/api/v1/projects/{name}/conversion-tracking/contracts",
|
|
3144
|
+
...options,
|
|
3145
|
+
headers: {
|
|
3146
|
+
"Content-Type": "application/json",
|
|
3147
|
+
...options.headers
|
|
3148
|
+
}
|
|
3149
|
+
});
|
|
3150
|
+
};
|
|
3151
|
+
var deleteApiV1ProjectsByNameConversionTrackingContractsByContractId = (options) => {
|
|
3152
|
+
return (options.client ?? client).delete({
|
|
3153
|
+
security: [
|
|
3154
|
+
{
|
|
3155
|
+
scheme: "bearer",
|
|
3156
|
+
type: "http"
|
|
3157
|
+
}
|
|
3158
|
+
],
|
|
3159
|
+
url: "/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}",
|
|
3160
|
+
...options
|
|
3161
|
+
});
|
|
3162
|
+
};
|
|
3163
|
+
var getApiV1ProjectsByNameConversionTrackingContractsByContractId = (options) => {
|
|
3164
|
+
return (options.client ?? client).get({
|
|
3165
|
+
security: [
|
|
3166
|
+
{
|
|
3167
|
+
scheme: "bearer",
|
|
3168
|
+
type: "http"
|
|
3169
|
+
}
|
|
3170
|
+
],
|
|
3171
|
+
url: "/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}",
|
|
3172
|
+
...options
|
|
3173
|
+
});
|
|
3174
|
+
};
|
|
3175
|
+
var putApiV1ProjectsByNameConversionTrackingContractsByContractId = (options) => {
|
|
3176
|
+
return (options.client ?? client).put({
|
|
3177
|
+
security: [
|
|
3178
|
+
{
|
|
3179
|
+
scheme: "bearer",
|
|
3180
|
+
type: "http"
|
|
3181
|
+
}
|
|
3182
|
+
],
|
|
3183
|
+
url: "/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}",
|
|
3184
|
+
...options,
|
|
3185
|
+
headers: {
|
|
3186
|
+
"Content-Type": "application/json",
|
|
3187
|
+
...options.headers
|
|
3188
|
+
}
|
|
3189
|
+
});
|
|
3190
|
+
};
|
|
3191
|
+
var getApiV1ProjectsByNameConversionTrackingContractsByContractIdIntegrity = (options) => {
|
|
3192
|
+
return (options.client ?? client).get({
|
|
3193
|
+
security: [
|
|
3194
|
+
{
|
|
3195
|
+
scheme: "bearer",
|
|
3196
|
+
type: "http"
|
|
3197
|
+
}
|
|
3198
|
+
],
|
|
3199
|
+
url: "/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}/integrity",
|
|
3200
|
+
...options
|
|
3201
|
+
});
|
|
3202
|
+
};
|
|
2842
3203
|
var getApiV1ProjectsByNameGoogleConnections = (options) => {
|
|
2843
3204
|
return (options.client ?? client).get({
|
|
2844
3205
|
security: [
|
|
@@ -6381,6 +6742,207 @@ var ApiClient = class {
|
|
|
6381
6742
|
})
|
|
6382
6743
|
);
|
|
6383
6744
|
}
|
|
6745
|
+
// ── Google Marketing: Google Ads + Google Tag Manager ──────────────────
|
|
6746
|
+
async connectGoogleAds(project, request) {
|
|
6747
|
+
return this.invoke(
|
|
6748
|
+
() => postApiV1ProjectsByNameGoogleAdsOauthConnect({
|
|
6749
|
+
client: this.heyClient,
|
|
6750
|
+
path: { name: project },
|
|
6751
|
+
body: request
|
|
6752
|
+
})
|
|
6753
|
+
);
|
|
6754
|
+
}
|
|
6755
|
+
async connectGtm(project, request) {
|
|
6756
|
+
return this.invoke(
|
|
6757
|
+
() => postApiV1ProjectsByNameGtmOauthConnect({
|
|
6758
|
+
client: this.heyClient,
|
|
6759
|
+
path: { name: project },
|
|
6760
|
+
body: request
|
|
6761
|
+
})
|
|
6762
|
+
);
|
|
6763
|
+
}
|
|
6764
|
+
async disconnectGoogleAds(project) {
|
|
6765
|
+
return this.invoke(
|
|
6766
|
+
() => deleteApiV1ProjectsByNameGoogleAdsConnection({
|
|
6767
|
+
client: this.heyClient,
|
|
6768
|
+
path: { name: project }
|
|
6769
|
+
})
|
|
6770
|
+
);
|
|
6771
|
+
}
|
|
6772
|
+
async disconnectGtm(project) {
|
|
6773
|
+
return this.invoke(
|
|
6774
|
+
() => deleteApiV1ProjectsByNameGtmConnection({
|
|
6775
|
+
client: this.heyClient,
|
|
6776
|
+
path: { name: project }
|
|
6777
|
+
})
|
|
6778
|
+
);
|
|
6779
|
+
}
|
|
6780
|
+
async getGoogleAdsStatus(project) {
|
|
6781
|
+
return this.invoke(
|
|
6782
|
+
() => getApiV1ProjectsByNameGoogleAdsStatus({
|
|
6783
|
+
client: this.heyClient,
|
|
6784
|
+
path: { name: project }
|
|
6785
|
+
})
|
|
6786
|
+
);
|
|
6787
|
+
}
|
|
6788
|
+
async listGoogleAdsCustomers(project) {
|
|
6789
|
+
return this.invoke(
|
|
6790
|
+
() => getApiV1ProjectsByNameGoogleAdsCustomers({
|
|
6791
|
+
client: this.heyClient,
|
|
6792
|
+
path: { name: project }
|
|
6793
|
+
})
|
|
6794
|
+
);
|
|
6795
|
+
}
|
|
6796
|
+
async setGoogleAdsSelection(project, request) {
|
|
6797
|
+
return this.invoke(
|
|
6798
|
+
() => putApiV1ProjectsByNameGoogleAdsSelection({
|
|
6799
|
+
client: this.heyClient,
|
|
6800
|
+
path: { name: project },
|
|
6801
|
+
body: request
|
|
6802
|
+
})
|
|
6803
|
+
);
|
|
6804
|
+
}
|
|
6805
|
+
async triggerGoogleAdsSync(project) {
|
|
6806
|
+
return this.invoke(
|
|
6807
|
+
() => postApiV1ProjectsByNameGoogleAdsSync({
|
|
6808
|
+
client: this.heyClient,
|
|
6809
|
+
path: { name: project }
|
|
6810
|
+
})
|
|
6811
|
+
);
|
|
6812
|
+
}
|
|
6813
|
+
async listGoogleAdsSnapshots(project, query) {
|
|
6814
|
+
return this.invoke(
|
|
6815
|
+
() => getApiV1ProjectsByNameGoogleAdsSnapshots({
|
|
6816
|
+
client: this.heyClient,
|
|
6817
|
+
path: { name: project },
|
|
6818
|
+
query
|
|
6819
|
+
})
|
|
6820
|
+
);
|
|
6821
|
+
}
|
|
6822
|
+
async getGoogleAdsSnapshot(project, snapshotId) {
|
|
6823
|
+
return this.invoke(
|
|
6824
|
+
() => getApiV1ProjectsByNameGoogleAdsSnapshotsBySnapshotId({
|
|
6825
|
+
client: this.heyClient,
|
|
6826
|
+
path: { name: project, snapshotId }
|
|
6827
|
+
})
|
|
6828
|
+
);
|
|
6829
|
+
}
|
|
6830
|
+
async getGtmStatus(project) {
|
|
6831
|
+
return this.invoke(
|
|
6832
|
+
() => getApiV1ProjectsByNameGtmStatus({
|
|
6833
|
+
client: this.heyClient,
|
|
6834
|
+
path: { name: project }
|
|
6835
|
+
})
|
|
6836
|
+
);
|
|
6837
|
+
}
|
|
6838
|
+
async listGtmAccounts(project) {
|
|
6839
|
+
return this.invoke(
|
|
6840
|
+
() => getApiV1ProjectsByNameGtmAccounts({
|
|
6841
|
+
client: this.heyClient,
|
|
6842
|
+
path: { name: project }
|
|
6843
|
+
})
|
|
6844
|
+
);
|
|
6845
|
+
}
|
|
6846
|
+
async listGtmContainers(project, accountId) {
|
|
6847
|
+
return this.invoke(
|
|
6848
|
+
() => getApiV1ProjectsByNameGtmAccountsByAccountIdContainers({
|
|
6849
|
+
client: this.heyClient,
|
|
6850
|
+
path: { name: project, accountId }
|
|
6851
|
+
})
|
|
6852
|
+
);
|
|
6853
|
+
}
|
|
6854
|
+
async listGtmWorkspaces(project, accountId, containerId) {
|
|
6855
|
+
return this.invoke(
|
|
6856
|
+
() => getApiV1ProjectsByNameGtmAccountsByAccountIdContainersByContainerIdWorkspaces({
|
|
6857
|
+
client: this.heyClient,
|
|
6858
|
+
path: { name: project, accountId, containerId }
|
|
6859
|
+
})
|
|
6860
|
+
);
|
|
6861
|
+
}
|
|
6862
|
+
async setGtmSelection(project, request) {
|
|
6863
|
+
return this.invoke(
|
|
6864
|
+
() => putApiV1ProjectsByNameGtmSelection({
|
|
6865
|
+
client: this.heyClient,
|
|
6866
|
+
path: { name: project },
|
|
6867
|
+
body: request
|
|
6868
|
+
})
|
|
6869
|
+
);
|
|
6870
|
+
}
|
|
6871
|
+
async triggerGtmSync(project) {
|
|
6872
|
+
return this.invoke(
|
|
6873
|
+
() => postApiV1ProjectsByNameGtmSync({
|
|
6874
|
+
client: this.heyClient,
|
|
6875
|
+
path: { name: project }
|
|
6876
|
+
})
|
|
6877
|
+
);
|
|
6878
|
+
}
|
|
6879
|
+
async listGtmSnapshots(project, query) {
|
|
6880
|
+
return this.invoke(
|
|
6881
|
+
() => getApiV1ProjectsByNameGtmSnapshots({
|
|
6882
|
+
client: this.heyClient,
|
|
6883
|
+
path: { name: project },
|
|
6884
|
+
query
|
|
6885
|
+
})
|
|
6886
|
+
);
|
|
6887
|
+
}
|
|
6888
|
+
async getGtmSnapshot(project, snapshotId) {
|
|
6889
|
+
return this.invoke(
|
|
6890
|
+
() => getApiV1ProjectsByNameGtmSnapshotsBySnapshotId({
|
|
6891
|
+
client: this.heyClient,
|
|
6892
|
+
path: { name: project, snapshotId }
|
|
6893
|
+
})
|
|
6894
|
+
);
|
|
6895
|
+
}
|
|
6896
|
+
async listConversionTrackingContracts(project) {
|
|
6897
|
+
return this.invoke(
|
|
6898
|
+
() => getApiV1ProjectsByNameConversionTrackingContracts({
|
|
6899
|
+
client: this.heyClient,
|
|
6900
|
+
path: { name: project }
|
|
6901
|
+
})
|
|
6902
|
+
);
|
|
6903
|
+
}
|
|
6904
|
+
async getConversionTrackingContract(project, contractId) {
|
|
6905
|
+
return this.invoke(
|
|
6906
|
+
() => getApiV1ProjectsByNameConversionTrackingContractsByContractId({
|
|
6907
|
+
client: this.heyClient,
|
|
6908
|
+
path: { name: project, contractId }
|
|
6909
|
+
})
|
|
6910
|
+
);
|
|
6911
|
+
}
|
|
6912
|
+
async createConversionTrackingContract(project, request) {
|
|
6913
|
+
return this.invoke(
|
|
6914
|
+
() => postApiV1ProjectsByNameConversionTrackingContracts({
|
|
6915
|
+
client: this.heyClient,
|
|
6916
|
+
path: { name: project },
|
|
6917
|
+
body: request
|
|
6918
|
+
})
|
|
6919
|
+
);
|
|
6920
|
+
}
|
|
6921
|
+
async updateConversionTrackingContract(project, contractId, request) {
|
|
6922
|
+
return this.invoke(
|
|
6923
|
+
() => putApiV1ProjectsByNameConversionTrackingContractsByContractId({
|
|
6924
|
+
client: this.heyClient,
|
|
6925
|
+
path: { name: project, contractId },
|
|
6926
|
+
body: request
|
|
6927
|
+
})
|
|
6928
|
+
);
|
|
6929
|
+
}
|
|
6930
|
+
async deleteConversionTrackingContract(project, contractId) {
|
|
6931
|
+
await this.invoke(
|
|
6932
|
+
() => deleteApiV1ProjectsByNameConversionTrackingContractsByContractId({
|
|
6933
|
+
client: this.heyClient,
|
|
6934
|
+
path: { name: project, contractId }
|
|
6935
|
+
})
|
|
6936
|
+
);
|
|
6937
|
+
}
|
|
6938
|
+
async getConversionTrackingIntegrity(project, contractId) {
|
|
6939
|
+
return this.invoke(
|
|
6940
|
+
() => getApiV1ProjectsByNameConversionTrackingContractsByContractIdIntegrity({
|
|
6941
|
+
client: this.heyClient,
|
|
6942
|
+
path: { name: project, contractId }
|
|
6943
|
+
})
|
|
6944
|
+
);
|
|
6945
|
+
}
|
|
6384
6946
|
// Google Business Profile (Phase 1: auth + discovery)
|
|
6385
6947
|
async listGbpAccounts(project) {
|
|
6386
6948
|
return this.invoke(
|
|
@@ -7816,7 +8378,7 @@ var _require = createRequire(import.meta.url);
|
|
|
7816
8378
|
var PACKAGE_VERSION = _require("../package.json").version;
|
|
7817
8379
|
|
|
7818
8380
|
// src/commands/skills.ts
|
|
7819
|
-
import
|
|
8381
|
+
import crypto2 from "crypto";
|
|
7820
8382
|
import fs2 from "fs";
|
|
7821
8383
|
import os2 from "os";
|
|
7822
8384
|
import path2 from "path";
|
|
@@ -7871,7 +8433,7 @@ function walkRelative(dir, prefix = "") {
|
|
|
7871
8433
|
return out.sort();
|
|
7872
8434
|
}
|
|
7873
8435
|
function sha256File(filePath) {
|
|
7874
|
-
return
|
|
8436
|
+
return crypto2.createHash("sha256").update(fs2.readFileSync(filePath)).digest("hex");
|
|
7875
8437
|
}
|
|
7876
8438
|
function readSkillManifest(skillDir) {
|
|
7877
8439
|
try {
|